From f8e9d9423355cd4b938fe491f842022c61399769 Mon Sep 17 00:00:00 2001 From: luzhexuan <635426116@qq.com> Date: Tue, 1 Apr 2025 14:22:31 +0800 Subject: [PATCH 1/2] [Huawei] add hwloc src code --- .gitignore | 1184 ++- 3rd-party/hwloc-2.7.1.tar.gz | Bin 7206844 -> 0 bytes 3rd-party/hwloc-2.7.1/COPYING | 39 + 3rd-party/hwloc-2.7.1/Makefile.am | 103 + 3rd-party/hwloc-2.7.1/NEWS | 1978 +++++ 3rd-party/hwloc-2.7.1/README | 85 + 3rd-party/hwloc-2.7.1/VERSION | 47 + 3rd-party/hwloc-2.7.1/config/distscript.sh | 130 + 3rd-party/hwloc-2.7.1/config/hwloc.m4 | 2004 +++++ .../config/hwloc_check_attributes.m4 | 555 ++ .../hwloc-2.7.1/config/hwloc_check_vendor.m4 | 262 + .../config/hwloc_check_visibility.m4 | 131 + .../hwloc-2.7.1/config/hwloc_components.m4 | 64 + .../hwloc-2.7.1/config/hwloc_get_version.sh | 114 + .../hwloc-2.7.1/config/hwloc_internal.m4 | 603 ++ 3rd-party/hwloc-2.7.1/config/hwloc_pkg.m4 | 207 + .../config/libtool-big-sur-fixup.patch | 32 + 3rd-party/hwloc-2.7.1/config/netloc.m4 | 102 + 3rd-party/hwloc-2.7.1/config/test-driver | 153 + 3rd-party/hwloc-2.7.1/configure.ac | 357 + .../contrib/completion/Makefile.am | 8 + .../hwloc-2.7.1/contrib/completion/bash/hwloc | 557 ++ .../contrib/hwloc-ps.www/Makefile.am | 13 + .../hwloc-2.7.1/contrib/hwloc-ps.www/README | 61 + .../contrib/hwloc-ps.www/assets/index.html | 65 + .../contrib/hwloc-ps.www/assets/main.css | 115 + .../contrib/hwloc-ps.www/assets/script.js | 489 ++ .../contrib/hwloc-ps.www/assets/style.css | 142 + .../contrib/hwloc-ps.www/client.js | 188 + .../contrib/hwloc-ps.www/package.json | 17 + .../hwloc-2.7.1/contrib/hwloc-valgrind.supp | 161 + .../hwloc-2.7.1/contrib/misc/Makefile.am | 17 + .../contrib/misc/dynamic_SVG_example.html | 163 + .../contrib/misc/hwloc-export-sysfs | 95 + .../contrib/misc/hwloc-tweak-osindex.c | 196 + .../hwloc-2.7.1/contrib/systemd/Makefile.am | 22 + .../systemd/hwloc-dump-hwdata.service.in | 21 + .../contrib/windows-cmake/CMakeLists.txt | 241 + .../hwloc-2.7.1/contrib/windows-cmake/README | 25 + .../contrib/windows-cmake/check-versions.sh | 75 + .../contrib/windows-cmake/private_config.h.in | 674 ++ .../windows-cmake/static-components.h.in | 32 + .../hwloc-2.7.1/contrib/windows/Makefile.am | 35 + 3rd-party/hwloc-2.7.1/contrib/windows/README | 19 + .../hwloc-2.7.1/contrib/windows/app.manifest | 15 + .../contrib/windows/check-versions.sh | 127 + .../contrib/windows/hwloc-annotate.vcxproj | 102 + .../windows/hwloc-annotate.vcxproj.filters | 66 + .../contrib/windows/hwloc-bind.vcxproj | 103 + .../windows/hwloc-bind.vcxproj.filters | 69 + .../contrib/windows/hwloc-calc.vcxproj | 103 + .../windows/hwloc-calc.vcxproj.filters | 69 + .../contrib/windows/hwloc-diff.vcxproj | 101 + .../windows/hwloc-diff.vcxproj.filters | 63 + .../contrib/windows/hwloc-distrib.vcxproj | 102 + .../windows/hwloc-distrib.vcxproj.filters | 66 + .../windows/hwloc-gather-cpuid.vcxproj | 91 + .../hwloc-gather-cpuid.vcxproj.filters | 33 + .../contrib/windows/hwloc-info.vcxproj | 103 + .../windows/hwloc-info.vcxproj.filters | 69 + .../contrib/windows/hwloc-patch.vcxproj | 101 + .../windows/hwloc-patch.vcxproj.filters | 63 + .../hwloc-2.7.1/contrib/windows/hwloc.sln | 82 + .../contrib/windows/hwloc_config.h | 59 + .../contrib/windows/libhwloc.vcxproj | 258 + .../contrib/windows/libhwloc.vcxproj.filters | 144 + .../windows/lstopo-no-graphics.vcxproj | 113 + .../lstopo-no-graphics.vcxproj.filters | 99 + .../contrib/windows/lstopo-win.vcxproj | 115 + .../windows/lstopo-win.vcxproj.filters | 102 + .../contrib/windows/lstopo.vcxproj | 114 + .../contrib/windows/lstopo.vcxproj.filters | 102 + .../contrib/windows/private_config.h | 672 ++ 3rd-party/hwloc-2.7.1/doc/Makefile.am | 946 +++ 3rd-party/hwloc-2.7.1/doc/README.sed | 4 + .../hwloc-2.7.1/doc/doxygen-config.cfg.in | 42 + .../doc/doxygen-doc/html/a00125_source.html | 938 +++ .../doc/doxygen-doc/html/a00128_source.html | 809 ++ .../doc/doxygen-doc/html/a00131_source.html | 287 + .../doc/doxygen-doc/html/a00134_source.html | 133 + .../doc/doxygen-doc/html/a00137_source.html | 243 + .../doc/doxygen-doc/html/a00140_source.html | 231 + .../doc/doxygen-doc/html/a00143_source.html | 110 + .../doc/doxygen-doc/html/a00146_source.html | 98 + .../doc/doxygen-doc/html/a00149_source.html | 245 + .../doc/doxygen-doc/html/a00152_source.html | 86 + .../doc/doxygen-doc/html/a00155_source.html | 155 + .../doc/doxygen-doc/html/a00158_source.html | 263 + .../doc/doxygen-doc/html/a00161_source.html | 225 + .../doc/doxygen-doc/html/a00164_source.html | 186 + .../doc/doxygen-doc/html/a00167_source.html | 203 + .../doc/doxygen-doc/html/a00170_source.html | 219 + .../doc/doxygen-doc/html/a00173_source.html | 183 + .../doc/doxygen-doc/html/a00176_source.html | 142 + .../doc/doxygen-doc/html/a00179_source.html | 155 + .../doc/doxygen-doc/html/a00182_source.html | 213 + .../doc/doxygen-doc/html/a00185_source.html | 96 + .../doc/doxygen-doc/html/a00188_source.html | 391 + .../doc/doxygen-doc/html/a00191_source.html | 114 + .../doc/doxygen-doc/html/a00194.html | 127 + .../doc/doxygen-doc/html/a00195.html | 139 + .../doc/doxygen-doc/html/a00196.html | 387 + .../doc/doxygen-doc/html/a00197.html | 88 + .../doc/doxygen-doc/html/a00198.html | 272 + .../doc/doxygen-doc/html/a00199.html | 603 ++ .../doc/doxygen-doc/html/a00200.html | 291 + .../doc/doxygen-doc/html/a00201.html | 146 + .../doc/doxygen-doc/html/a00202.html | 488 ++ .../doc/doxygen-doc/html/a00203.html | 760 ++ .../doc/doxygen-doc/html/a00204.html | 294 + .../doc/doxygen-doc/html/a00205.html | 571 ++ .../doc/doxygen-doc/html/a00206.html | 406 + .../doc/doxygen-doc/html/a00207.html | 519 ++ .../doc/doxygen-doc/html/a00208.html | 258 + .../doc/doxygen-doc/html/a00209.html | 297 + .../doc/doxygen-doc/html/a00210.html | 206 + .../doc/doxygen-doc/html/a00211.html | 194 + .../doc/doxygen-doc/html/a00212.html | 418 + .../doc/doxygen-doc/html/a00213.html | 166 + .../doc/doxygen-doc/html/a00214.html | 220 + .../doc/doxygen-doc/html/a00215.html | 158 + .../doc/doxygen-doc/html/a00216.html | 367 + .../doc/doxygen-doc/html/a00217.html | 1799 +++++ .../doc/doxygen-doc/html/a00218.html | 423 + .../doc/doxygen-doc/html/a00219.html | 155 + .../doc/doxygen-doc/html/a00220.html | 494 ++ .../doc/doxygen-doc/html/a00221.html | 161 + .../doc/doxygen-doc/html/a00222.html | 288 + .../doc/doxygen-doc/html/a00223.html | 191 + .../doc/doxygen-doc/html/a00224.html | 472 ++ .../doc/doxygen-doc/html/a00225.html | 414 + .../doc/doxygen-doc/html/a00226.html | 293 + .../doc/doxygen-doc/html/a00227.html | 216 + .../doc/doxygen-doc/html/a00228.html | 280 + .../doc/doxygen-doc/html/a00229.html | 244 + .../doc/doxygen-doc/html/a00230.html | 146 + .../doc/doxygen-doc/html/a00231.html | 170 + .../doc/doxygen-doc/html/a00232.html | 270 + .../doc/doxygen-doc/html/a00233.html | 308 + .../doc/doxygen-doc/html/a00234.html | 261 + .../doc/doxygen-doc/html/a00235.html | 201 + .../doc/doxygen-doc/html/a00236.html | 201 + .../doc/doxygen-doc/html/a00237.html | 156 + .../doc/doxygen-doc/html/a00238.html | 213 + .../doc/doxygen-doc/html/a00239.html | 202 + .../doc/doxygen-doc/html/a00240.html | 513 ++ .../doc/doxygen-doc/html/a00241.html | 241 + .../doc/doxygen-doc/html/a00242.html | 62 + .../doc/doxygen-doc/html/a00243.html | 221 + .../doc/doxygen-doc/html/a00244.html | 116 + .../doc/doxygen-doc/html/a00245.html | 329 + .../doc/doxygen-doc/html/a00246.html | 206 + .../doc/doxygen-doc/html/a00247.html | 296 + .../doc/doxygen-doc/html/a00248.html | 329 + .../doc/doxygen-doc/html/a00249.html | 113 + .../doc/doxygen-doc/html/a00253.html | 687 ++ .../doc/doxygen-doc/html/a00257.html | 178 + .../doc/doxygen-doc/html/a00261.html | 128 + .../doc/doxygen-doc/html/a00265.html | 107 + .../doc/doxygen-doc/html/a00269.html | 160 + .../doc/doxygen-doc/html/a00273.html | 142 + .../doc/doxygen-doc/html/a00277.html | 246 + .../doc/doxygen-doc/html/a00281.html | 233 + .../doc/doxygen-doc/html/a00297.html | 86 + .../doc/doxygen-doc/html/a00301.html | 103 + .../doc/doxygen-doc/html/a00305.html | 174 + .../doc/doxygen-doc/html/a00309.html | 254 + .../doc/doxygen-doc/html/a00313.html | 322 + .../doc/doxygen-doc/html/a00317.html | 83 + .../doc/doxygen-doc/html/a00321.html | 131 + .../doc/doxygen-doc/html/a00325.html | 142 + .../doc/doxygen-doc/html/a00329.html | 106 + .../doc/doxygen-doc/html/a00333.html | 106 + .../doc/doxygen-doc/html/a00337.html | 196 + .../doc/doxygen-doc/html/a00349.html | 124 + .../doc/doxygen-doc/html/a00353.html | 84 + .../doc/doxygen-doc/html/a00357.html | 134 + .../doc/doxygen-doc/html/a00361.html | 134 + .../doc/doxygen-doc/html/a00365.html | 124 + .../doc/doxygen-doc/html/a00369.html | 100 + .../doc/doxygen-doc/html/a00373.html | 148 + .../doc/doxygen-doc/html/a00377.html | 132 + .../doc/doxygen-doc/html/a00381.html | 178 + .../doc/doxygen-doc/html/a00385.html | 121 + .../doc/doxygen-doc/html/a00389.html | 195 + .../doc/doxygen-doc/html/a00393.html | 183 + .../doc/doxygen-doc/html/a00394.html | 567 ++ .../doc/doxygen-doc/html/a00395.html | 166 + .../doc/doxygen-doc/html/a00396.html | 139 + .../doc/doxygen-doc/html/a00397.html | 201 + .../doc/doxygen-doc/html/a00398.html | 70 + .../doc/doxygen-doc/html/a00399.html | 205 + .../doc/doxygen-doc/html/a00400.html | 78 + .../doc/doxygen-doc/html/a00401.html | 255 + .../doc/doxygen-doc/html/a00402.html | 116 + .../doc/doxygen-doc/html/a00403.html | 85 + .../doc/doxygen-doc/html/a00404.html | 116 + .../doc/doxygen-doc/html/a00405.html | 110 + .../doc/doxygen-doc/html/a00406.html | 91 + .../doc/doxygen-doc/html/a00407.html | 133 + .../doc/doxygen-doc/html/a00408.html | 117 + .../doc/doxygen-doc/html/a00409.html | 404 + .../doc/doxygen-doc/html/a00410.html | 349 + .../doc/doxygen-doc/html/a00411.html | 187 + .../doc/doxygen-doc/html/a00412.html | 88 + .../doc/doxygen-doc/html/annotated.html | 87 + .../hwloc-2.7.1/doc/doxygen-doc/html/bc_s.png | Bin 0 -> 676 bytes .../hwloc-2.7.1/doc/doxygen-doc/html/bdwn.png | Bin 0 -> 147 bytes .../doc/doxygen-doc/html/classes.html | 58 + .../doc/doxygen-doc/html/closed.png | Bin 0 -> 132 bytes .../doc/doxygen-doc/html/devel09-pci.png | Bin 0 -> 23431 bytes .../doc/doxygen-doc/html/diagram.png | Bin 0 -> 34247 bytes .../dir_5cb306d949c7931a3b6c77517393dd34.html | 102 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 69 + .../hwloc-2.7.1/doc/doxygen-doc/html/doc.png | Bin 0 -> 746 bytes .../doc/doxygen-doc/html/doxygen.css | 146 + .../doc/doxygen-doc/html/doxygen.svg | 26 + .../doc/doxygen-doc/html/dudley.png | Bin 0 -> 14824 bytes .../doc/doxygen-doc/html/dynsections.js | 121 + .../doc/doxygen-doc/html/emmett.png | Bin 0 -> 12537 bytes .../doc/doxygen-doc/html/folderclosed.png | Bin 0 -> 616 bytes .../doc/doxygen-doc/html/folderopen.png | Bin 0 -> 597 bytes .../doc/doxygen-doc/html/functions.html | 587 ++ .../doc/doxygen-doc/html/functions_vars.html | 587 ++ .../doc/doxygen-doc/html/hagrid.png | Bin 0 -> 13780 bytes .../doc/doxygen-doc/html/index.html | 104 + .../doc/doxygen-doc/html/jquery.js | 35 + .../hwloc-2.7.1/doc/doxygen-doc/html/menu.js | 51 + .../doc/doxygen-doc/html/menudata.js | 71 + .../doc/doxygen-doc/html/modules.html | 112 + .../doc/doxygen-doc/html/nav_f.png | Bin 0 -> 153 bytes .../doc/doxygen-doc/html/nav_g.png | Bin 0 -> 95 bytes .../doc/doxygen-doc/html/nav_h.png | Bin 0 -> 98 bytes .../doc/doxygen-doc/html/netloc_design.png | Bin 0 -> 67547 bytes .../doc/doxygen-doc/html/netloc_draw.png | Bin 0 -> 174669 bytes .../hwloc-2.7.1/doc/doxygen-doc/html/open.png | Bin 0 -> 123 bytes .../doc/doxygen-doc/html/pages.html | 75 + .../doxygen-doc/html/ppc64-full-with-smt.png | Bin 0 -> 18107 bytes .../doc/doxygen-doc/html/ppc64-with-smt.png | Bin 0 -> 8362 bytes .../doxygen-doc/html/ppc64-without-smt.png | Bin 0 -> 7045 bytes .../doc/doxygen-doc/html/splitbar.png | Bin 0 -> 314 bytes .../doc/doxygen-doc/html/sync_off.png | Bin 0 -> 853 bytes .../doc/doxygen-doc/html/sync_on.png | Bin 0 -> 845 bytes .../doc/doxygen-doc/html/tab_a.png | Bin 0 -> 142 bytes .../doc/doxygen-doc/html/tab_b.png | Bin 0 -> 169 bytes .../doc/doxygen-doc/html/tab_h.png | Bin 0 -> 177 bytes .../doc/doxygen-doc/html/tab_s.png | Bin 0 -> 184 bytes .../hwloc-2.7.1/doc/doxygen-doc/html/tabs.css | 1 + .../hwloc-2.7.1/doc/doxygen-doc/hwloc-a4.pdf | Bin 0 -> 1321515 bytes .../doc/doxygen-doc/hwloc-letter.pdf | Bin 0 -> 1330213 bytes .../hwloc-2.7.1/doc/doxygen-doc/hwloc.tag | 5150 ++++++++++++ .../man/man3/HWLOC_ALLOW_FLAG_ALL.3 | 1 + .../man/man3/HWLOC_ALLOW_FLAG_CUSTOM.3 | 1 + .../HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS.3 | 1 + .../doxygen-doc/man/man3/HWLOC_API_VERSION.3 | 1 + .../man/man3/HWLOC_COMPONENT_ABI.3 | 1 + .../man/man3/HWLOC_COMPONENT_TYPE_DISC.3 | 1 + .../man/man3/HWLOC_COMPONENT_TYPE_XML.3 | 1 + .../man/man3/HWLOC_CPUBIND_NOMEMBIND.3 | 1 + .../man/man3/HWLOC_CPUBIND_PROCESS.3 | 1 + .../man/man3/HWLOC_CPUBIND_STRICT.3 | 1 + .../man/man3/HWLOC_CPUBIND_THREAD.3 | 1 + .../man/man3/HWLOC_DISC_PHASE_ANNOTATE.3 | 1 + .../man/man3/HWLOC_DISC_PHASE_CPU.3 | 1 + .../man/man3/HWLOC_DISC_PHASE_GLOBAL.3 | 1 + .../man/man3/HWLOC_DISC_PHASE_IO.3 | 1 + .../man/man3/HWLOC_DISC_PHASE_MEMORY.3 | 1 + .../man/man3/HWLOC_DISC_PHASE_MISC.3 | 1 + .../man/man3/HWLOC_DISC_PHASE_PCI.3 | 1 + .../man/man3/HWLOC_DISC_PHASE_TWEAK.3 | 1 + ...C_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES.3 | 1 + .../man/man3/HWLOC_DISTANCES_ADD_FLAG_GROUP.3 | 1 + ...WLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE.3 | 1 + .../man/man3/HWLOC_DISTANCES_KIND_FROM_OS.3 | 1 + .../man/man3/HWLOC_DISTANCES_KIND_FROM_USER.3 | 1 + ...HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES.3 | 1 + .../HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH.3 | 1 + .../man3/HWLOC_DISTANCES_KIND_MEANS_LATENCY.3 | 1 + .../man3/HWLOC_DISTANCES_TRANSFORM_LINKS.3 | 1 + ...C_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS.3 | 1 + .../HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL.3 | 1 + ...C_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE.3 | 1 + .../man/man3/HWLOC_DISTRIB_FLAG_REVERSE.3 | 1 + .../man/man3/HWLOC_LOCAL_NUMANODE_FLAG_ALL.3 | 1 + ...WLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY.3 | 1 + ...LOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY.3 | 1 + .../man/man3/HWLOC_LOCATION_TYPE_CPUSET.3 | 1 + .../man/man3/HWLOC_LOCATION_TYPE_OBJECT.3 | 1 + .../man3/HWLOC_MEMATTR_FLAG_HIGHER_FIRST.3 | 1 + .../man/man3/HWLOC_MEMATTR_FLAG_LOWER_FIRST.3 | 1 + .../man3/HWLOC_MEMATTR_FLAG_NEED_INITIATOR.3 | 1 + .../man/man3/HWLOC_MEMATTR_ID_BANDWIDTH.3 | 1 + .../man/man3/HWLOC_MEMATTR_ID_CAPACITY.3 | 1 + .../man/man3/HWLOC_MEMATTR_ID_LATENCY.3 | 1 + .../man/man3/HWLOC_MEMATTR_ID_LOCALITY.3 | 1 + .../doxygen-doc/man/man3/HWLOC_MEMBIND_BIND.3 | 1 + .../man/man3/HWLOC_MEMBIND_BYNODESET.3 | 1 + .../man/man3/HWLOC_MEMBIND_DEFAULT.3 | 1 + .../man/man3/HWLOC_MEMBIND_FIRSTTOUCH.3 | 1 + .../man/man3/HWLOC_MEMBIND_INTERLEAVE.3 | 1 + .../man/man3/HWLOC_MEMBIND_MIGRATE.3 | 1 + .../man/man3/HWLOC_MEMBIND_MIXED.3 | 1 + .../man/man3/HWLOC_MEMBIND_NEXTTOUCH.3 | 1 + .../man/man3/HWLOC_MEMBIND_NOCPUBIND.3 | 1 + .../man/man3/HWLOC_MEMBIND_PROCESS.3 | 1 + .../man/man3/HWLOC_MEMBIND_STRICT.3 | 1 + .../man/man3/HWLOC_MEMBIND_THREAD.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_BRIDGE.3 | 1 + .../man/man3/HWLOC_OBJ_BRIDGE_HOST.3 | 1 + .../man/man3/HWLOC_OBJ_BRIDGE_PCI.3 | 1 + .../man/man3/HWLOC_OBJ_CACHE_DATA.3 | 1 + .../man/man3/HWLOC_OBJ_CACHE_INSTRUCTION.3 | 1 + .../man/man3/HWLOC_OBJ_CACHE_UNIFIED.3 | 1 + .../doc/doxygen-doc/man/man3/HWLOC_OBJ_CORE.3 | 1 + .../doc/doxygen-doc/man/man3/HWLOC_OBJ_DIE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_GROUP.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_L1CACHE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_L1ICACHE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_L2CACHE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_L2ICACHE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_L3CACHE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_L3ICACHE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_L4CACHE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_L5CACHE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_MACHINE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_MEMCACHE.3 | 1 + .../doc/doxygen-doc/man/man3/HWLOC_OBJ_MISC.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_NUMANODE.3 | 1 + .../man/man3/HWLOC_OBJ_OSDEV_BLOCK.3 | 1 + .../man/man3/HWLOC_OBJ_OSDEV_COPROC.3 | 1 + .../man/man3/HWLOC_OBJ_OSDEV_DMA.3 | 1 + .../man/man3/HWLOC_OBJ_OSDEV_GPU.3 | 1 + .../man/man3/HWLOC_OBJ_OSDEV_NETWORK.3 | 1 + .../man/man3/HWLOC_OBJ_OSDEV_OPENFABRICS.3 | 1 + .../man/man3/HWLOC_OBJ_OS_DEVICE.3 | 1 + .../doxygen-doc/man/man3/HWLOC_OBJ_PACKAGE.3 | 1 + .../man/man3/HWLOC_OBJ_PCI_DEVICE.3 | 1 + .../doc/doxygen-doc/man/man3/HWLOC_OBJ_PU.3 | 1 + .../man/man3/HWLOC_RESTRICT_FLAG_ADAPT_IO.3 | 1 + .../man/man3/HWLOC_RESTRICT_FLAG_ADAPT_MISC.3 | 1 + .../man/man3/HWLOC_RESTRICT_FLAG_BYNODESET.3 | 1 + .../man3/HWLOC_RESTRICT_FLAG_REMOVE_CPULESS.3 | 1 + .../man3/HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS.3 | 1 + ...HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST.3 | 1 + .../man3/HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE.3 | 1 + .../man/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR.3 | 1 + .../man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO.3 | 1 + .../man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME.3 | 1 + .../man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE.3 | 1 + .../man3/HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX.3 | 1 + ...LOGY_EXPORT_SYNTHETIC_FLAG_IGNORE_MEMORY.3 | 1 + ..._TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS.3 | 1 + ..._EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES.3 | 1 + .../HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1.3 | 1 + .../man3/HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1.3 | 1 + .../HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING.3 | 1 + .../man3/HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT.3 | 1 + .../HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED.3 | 1 + .../man3/HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM.3 | 1 + ...LOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING.3 | 1 + ...LOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING.3 | 1 + ...POLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES.3 | 1 + .../man/man3/HWLOC_TYPE_DEPTH_BRIDGE.3 | 1 + .../man/man3/HWLOC_TYPE_DEPTH_MEMCACHE.3 | 1 + .../man/man3/HWLOC_TYPE_DEPTH_MISC.3 | 1 + .../man/man3/HWLOC_TYPE_DEPTH_MULTIPLE.3 | 1 + .../man/man3/HWLOC_TYPE_DEPTH_NUMANODE.3 | 1 + .../man/man3/HWLOC_TYPE_DEPTH_OS_DEVICE.3 | 1 + .../man/man3/HWLOC_TYPE_DEPTH_PCI_DEVICE.3 | 1 + .../man/man3/HWLOC_TYPE_DEPTH_UNKNOWN.3 | 1 + .../man/man3/HWLOC_TYPE_FILTER_KEEP_ALL.3 | 1 + .../man3/HWLOC_TYPE_FILTER_KEEP_IMPORTANT.3 | 1 + .../man/man3/HWLOC_TYPE_FILTER_KEEP_NONE.3 | 1 + .../man3/HWLOC_TYPE_FILTER_KEEP_STRUCTURE.3 | 1 + .../man/man3/HWLOC_TYPE_UNORDERED.3 | 1 + .../man/man3/hwloc__insert_object_by_cpuset.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_alloc.3 | 1 + .../man/man3/hwloc_alloc_membind.3 | 1 + .../man/man3/hwloc_alloc_membind_policy.3 | 1 + .../man/man3/hwloc_alloc_setup_object.3 | 1 + .../man/man3/hwloc_allow_flags_e.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_backend.3 | 78 + .../man/man3/hwloc_backend_alloc.3 | 1 + .../man3/hwloc_backend_distances_add_commit.3 | 1 + .../man3/hwloc_backend_distances_add_create.3 | 1 + .../hwloc_backend_distances_add_handle_t.3 | 1 + .../man3/hwloc_backend_distances_add_values.3 | 1 + .../man/man3/hwloc_backend_enable.3 | 1 + .../man/man3/hwloc_bitmap_allbut.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_alloc.3 | 1 + .../man/man3/hwloc_bitmap_alloc_full.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_and.3 | 1 + .../man/man3/hwloc_bitmap_andnot.3 | 1 + .../man/man3/hwloc_bitmap_asprintf.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_clr.3 | 1 + .../man/man3/hwloc_bitmap_clr_range.3 | 1 + .../man/man3/hwloc_bitmap_compare.3 | 1 + .../man/man3/hwloc_bitmap_compare_first.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_copy.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_dup.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_fill.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_first.3 | 1 + .../man/man3/hwloc_bitmap_first_unset.3 | 1 + .../man/man3/hwloc_bitmap_foreach_begin.3 | 1 + .../man/man3/hwloc_bitmap_foreach_end.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_free.3 | 1 + .../man/man3/hwloc_bitmap_from_ith_ulong.3 | 1 + .../man/man3/hwloc_bitmap_from_ulong.3 | 1 + .../man/man3/hwloc_bitmap_from_ulongs.3 | 1 + .../man/man3/hwloc_bitmap_intersects.3 | 1 + .../man/man3/hwloc_bitmap_isequal.3 | 1 + .../man/man3/hwloc_bitmap_isfull.3 | 1 + .../man/man3/hwloc_bitmap_isincluded.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_isset.3 | 1 + .../man/man3/hwloc_bitmap_iszero.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_last.3 | 1 + .../man/man3/hwloc_bitmap_last_unset.3 | 1 + .../man/man3/hwloc_bitmap_list_asprintf.3 | 1 + .../man/man3/hwloc_bitmap_list_snprintf.3 | 1 + .../man/man3/hwloc_bitmap_list_sscanf.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_next.3 | 1 + .../man/man3/hwloc_bitmap_next_unset.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_not.3 | 1 + .../man/man3/hwloc_bitmap_nr_ulongs.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_only.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_or.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_set.3 | 1 + .../man/man3/hwloc_bitmap_set_ith_ulong.3 | 1 + .../man/man3/hwloc_bitmap_set_range.3 | 1 + .../man/man3/hwloc_bitmap_singlify.3 | 1 + .../man/man3/hwloc_bitmap_singlify_per_core.3 | 1 + .../man/man3/hwloc_bitmap_snprintf.3 | 1 + .../man/man3/hwloc_bitmap_sscanf.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_bitmap_t.3 | 1 + .../man/man3/hwloc_bitmap_taskset_asprintf.3 | 1 + .../man/man3/hwloc_bitmap_taskset_snprintf.3 | 1 + .../man/man3/hwloc_bitmap_taskset_sscanf.3 | 1 + .../man/man3/hwloc_bitmap_to_ith_ulong.3 | 1 + .../man/man3/hwloc_bitmap_to_ulong.3 | 1 + .../man/man3/hwloc_bitmap_to_ulongs.3 | 1 + .../man/man3/hwloc_bitmap_weight.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_xor.3 | 1 + .../doxygen-doc/man/man3/hwloc_bitmap_zero.3 | 1 + .../man/man3/hwloc_bridge_covers_pcibus.3 | 1 + .../man/man3/hwloc_cl_device_topology_amd.3 | 69 + .../man/man3/hwloc_compare_types.3 | 1 + .../doxygen-doc/man/man3/hwloc_component.3 | 92 + .../man/man3/hwloc_component_type_e.3 | 1 + .../man/man3/hwloc_component_type_t.3 | 1 + .../man/man3/hwloc_const_bitmap_t.3 | 1 + .../man/man3/hwloc_const_cpuset_t.3 | 1 + .../man/man3/hwloc_const_nodeset_t.3 | 1 + .../man/man3/hwloc_cpubind_flags_t.3 | 1 + .../man/man3/hwloc_cpukinds_get_by_cpuset.3 | 1 + .../man/man3/hwloc_cpukinds_get_info.3 | 1 + .../man/man3/hwloc_cpukinds_get_nr.3 | 1 + .../man/man3/hwloc_cpukinds_register.3 | 1 + .../hwloc_cpuset_from_glibc_sched_affinity.3 | 1 + .../hwloc_cpuset_from_linux_libnuma_bitmask.3 | 1 + .../hwloc_cpuset_from_linux_libnuma_ulongs.3 | 1 + .../man/man3/hwloc_cpuset_from_nodeset.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_cpuset_t.3 | 1 + .../hwloc_cpuset_to_glibc_sched_affinity.3 | 1 + .../hwloc_cpuset_to_linux_libnuma_bitmask.3 | 1 + .../hwloc_cpuset_to_linux_libnuma_ulongs.3 | 1 + .../man/man3/hwloc_cpuset_to_nodeset.3 | 1 + .../man/man3/hwloc_cuda_get_device_cpuset.3 | 1 + .../man/man3/hwloc_cuda_get_device_osdev.3 | 1 + .../hwloc_cuda_get_device_osdev_by_index.3 | 1 + .../man/man3/hwloc_cuda_get_device_pci_ids.3 | 1 + .../man/man3/hwloc_cuda_get_device_pcidev.3 | 1 + .../man/man3/hwloc_cudart_get_device_cpuset.3 | 1 + .../hwloc_cudart_get_device_osdev_by_index.3 | 1 + .../man3/hwloc_cudart_get_device_pci_ids.3 | 1 + .../man/man3/hwloc_cudart_get_device_pcidev.3 | 1 + .../man/man3/hwloc_disc_component.3 | 69 + .../doxygen-doc/man/man3/hwloc_disc_phase_e.3 | 1 + .../doxygen-doc/man/man3/hwloc_disc_phase_t.3 | 1 + .../doxygen-doc/man/man3/hwloc_disc_status.3 | 46 + .../man/man3/hwloc_disc_status_flag_e.3 | 1 + .../man/man3/hwloc_distances_add_commit.3 | 1 + .../man/man3/hwloc_distances_add_create.3 | 1 + .../man/man3/hwloc_distances_add_flag_e.3 | 1 + .../man/man3/hwloc_distances_add_handle_t.3 | 1 + .../man/man3/hwloc_distances_add_values.3 | 1 + .../man/man3/hwloc_distances_get.3 | 1 + .../man/man3/hwloc_distances_get_by_depth.3 | 1 + .../man/man3/hwloc_distances_get_by_name.3 | 1 + .../man/man3/hwloc_distances_get_by_type.3 | 1 + .../man/man3/hwloc_distances_get_name.3 | 1 + .../man/man3/hwloc_distances_kind_e.3 | 1 + .../man/man3/hwloc_distances_obj_index.3 | 1 + .../man3/hwloc_distances_obj_pair_values.3 | 1 + .../man/man3/hwloc_distances_release.3 | 1 + .../man/man3/hwloc_distances_release_remove.3 | 1 + .../man/man3/hwloc_distances_remove.3 | 1 + .../man3/hwloc_distances_remove_by_depth.3 | 1 + .../man/man3/hwloc_distances_remove_by_type.3 | 1 + .../doxygen-doc/man/man3/hwloc_distances_s.3 | 57 + .../man/man3/hwloc_distances_transform.3 | 1 + .../man/man3/hwloc_distances_transform_e.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_distrib.3 | 1 + .../man/man3/hwloc_distrib_flags_e.3 | 1 + .../man/man3/hwloc_export_obj_userdata.3 | 1 + .../man3/hwloc_export_obj_userdata_base64.3 | 1 + .../man/man3/hwloc_filter_check_keep_object.3 | 1 + .../hwloc_filter_check_keep_object_type.3 | 1 + ...loc_filter_check_osdev_subtype_important.3 | 1 + ...oc_filter_check_pcidev_subtype_important.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_free.3 | 1 + .../man/man3/hwloc_free_xmlbuffer.3 | 1 + .../man3/hwloc_get_ancestor_obj_by_depth.3 | 1 + .../man/man3/hwloc_get_ancestor_obj_by_type.3 | 1 + .../man/man3/hwloc_get_api_version.3 | 1 + .../man/man3/hwloc_get_area_membind.3 | 1 + .../man/man3/hwloc_get_area_memlocation.3 | 1 + .../man3/hwloc_get_cache_covering_cpuset.3 | 1 + .../man/man3/hwloc_get_cache_type_depth.3 | 1 + .../man3/hwloc_get_child_covering_cpuset.3 | 1 + .../man/man3/hwloc_get_closest_objs.3 | 1 + .../man/man3/hwloc_get_common_ancestor_obj.3 | 1 + .../doxygen-doc/man/man3/hwloc_get_cpubind.3 | 1 + .../man/man3/hwloc_get_depth_type.3 | 1 + ...wloc_get_first_largest_obj_inside_cpuset.3 | 1 + .../hwloc_get_largest_objs_inside_cpuset.3 | 1 + .../man/man3/hwloc_get_last_cpu_location.3 | 1 + .../man/man3/hwloc_get_local_numanode_objs.3 | 1 + .../doxygen-doc/man/man3/hwloc_get_membind.3 | 1 + .../man/man3/hwloc_get_memory_parents_depth.3 | 1 + .../man/man3/hwloc_get_nbobjs_by_depth.3 | 1 + .../man/man3/hwloc_get_nbobjs_by_type.3 | 1 + .../hwloc_get_nbobjs_inside_cpuset_by_depth.3 | 1 + .../hwloc_get_nbobjs_inside_cpuset_by_type.3 | 1 + .../man/man3/hwloc_get_next_bridge.3 | 1 + .../man/man3/hwloc_get_next_child.3 | 1 + .../man/man3/hwloc_get_next_obj_by_depth.3 | 1 + .../man/man3/hwloc_get_next_obj_by_type.3 | 1 + ...oc_get_next_obj_covering_cpuset_by_depth.3 | 1 + ...loc_get_next_obj_covering_cpuset_by_type.3 | 1 + ...wloc_get_next_obj_inside_cpuset_by_depth.3 | 1 + ...hwloc_get_next_obj_inside_cpuset_by_type.3 | 1 + .../man/man3/hwloc_get_next_osdev.3 | 1 + .../man/man3/hwloc_get_next_pcidev.3 | 1 + .../man/man3/hwloc_get_non_io_ancestor_obj.3 | 1 + .../man3/hwloc_get_numanode_obj_by_os_index.3 | 1 + .../man3/hwloc_get_obj_below_array_by_type.3 | 1 + .../man/man3/hwloc_get_obj_below_by_type.3 | 1 + .../man/man3/hwloc_get_obj_by_depth.3 | 1 + .../man/man3/hwloc_get_obj_by_type.3 | 1 + .../man/man3/hwloc_get_obj_covering_cpuset.3 | 1 + .../man3/hwloc_get_obj_index_inside_cpuset.3 | 1 + .../hwloc_get_obj_inside_cpuset_by_depth.3 | 1 + .../hwloc_get_obj_inside_cpuset_by_type.3 | 1 + .../man3/hwloc_get_obj_with_same_locality.3 | 1 + .../man/man3/hwloc_get_pcidev_by_busid.3 | 1 + .../man3/hwloc_get_pcidev_by_busidstring.3 | 1 + .../man/man3/hwloc_get_proc_cpubind.3 | 1 + .../man3/hwloc_get_proc_last_cpu_location.3 | 1 + .../man/man3/hwloc_get_proc_membind.3 | 1 + .../man/man3/hwloc_get_pu_obj_by_os_index.3 | 1 + .../doxygen-doc/man/man3/hwloc_get_root_obj.3 | 1 + .../hwloc_get_shared_cache_covering_obj.3 | 1 + .../man/man3/hwloc_get_thread_cpubind.3 | 1 + .../man/man3/hwloc_get_type_depth.3 | 1 + .../man/man3/hwloc_get_type_depth_e.3 | 1 + .../man/man3/hwloc_get_type_or_above_depth.3 | 1 + .../man/man3/hwloc_get_type_or_below_depth.3 | 1 + .../man/man3/hwloc_gl_get_display_by_osdev.3 | 1 + .../man3/hwloc_gl_get_display_osdev_by_name.3 | 1 + ...wloc_gl_get_display_osdev_by_port_device.3 | 1 + .../doxygen-doc/man/man3/hwloc_hide_errors.3 | 1 + .../man/man3/hwloc_ibv_get_device_cpuset.3 | 1 + .../man/man3/hwloc_ibv_get_device_osdev.3 | 1 + .../man3/hwloc_ibv_get_device_osdev_by_name.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_info_s.3 | 46 + .../man/man3/hwloc_insert_object_by_parent.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_intro.3 | 534 ++ .../man3/hwloc_levelzero_get_device_cpuset.3 | 1 + .../man3/hwloc_levelzero_get_device_osdev.3 | 1 + .../man/man3/hwloc_linux_get_tid_cpubind.3 | 1 + .../hwloc_linux_get_tid_last_cpu_location.3 | 1 + .../man3/hwloc_linux_read_path_as_cpumask.3 | 1 + .../man/man3/hwloc_linux_set_tid_cpubind.3 | 1 + .../man/man3/hwloc_local_numanode_flag_e.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_location.3 | 42 + .../man3/hwloc_location_hwloc_location_u.3 | 37 + .../man/man3/hwloc_location_type_e.3 | 1 + .../man/man3/hwloc_memattr_flag_e.3 | 1 + .../man3/hwloc_memattr_get_best_initiator.3 | 1 + .../man/man3/hwloc_memattr_get_best_target.3 | 1 + .../man/man3/hwloc_memattr_get_by_name.3 | 1 + .../man/man3/hwloc_memattr_get_flags.3 | 1 + .../man/man3/hwloc_memattr_get_initiators.3 | 1 + .../man/man3/hwloc_memattr_get_name.3 | 1 + .../man/man3/hwloc_memattr_get_targets.3 | 1 + .../man/man3/hwloc_memattr_get_value.3 | 1 + .../doxygen-doc/man/man3/hwloc_memattr_id_e.3 | 1 + .../doxygen-doc/man/man3/hwloc_memattr_id_t.3 | 1 + .../man/man3/hwloc_memattr_register.3 | 1 + .../man/man3/hwloc_memattr_set_value.3 | 1 + .../man/man3/hwloc_membind_flags_t.3 | 1 + .../man/man3/hwloc_membind_policy_t.3 | 1 + ...hwloc_nodeset_from_linux_libnuma_bitmask.3 | 1 + .../hwloc_nodeset_from_linux_libnuma_ulongs.3 | 1 + .../doxygen-doc/man/man3/hwloc_nodeset_t.3 | 1 + .../hwloc_nodeset_to_linux_libnuma_bitmask.3 | 1 + .../hwloc_nodeset_to_linux_libnuma_ulongs.3 | 1 + .../man/man3/hwloc_nvml_get_device_cpuset.3 | 1 + .../man/man3/hwloc_nvml_get_device_osdev.3 | 1 + .../hwloc_nvml_get_device_osdev_by_index.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_obj.3 | 334 + .../man/man3/hwloc_obj_add_children_sets.3 | 1 + .../doxygen-doc/man/man3/hwloc_obj_add_info.3 | 1 + .../man/man3/hwloc_obj_add_other_obj_sets.3 | 1 + .../man/man3/hwloc_obj_attr_snprintf.3 | 1 + .../doxygen-doc/man/man3/hwloc_obj_attr_u.3 | 75 + .../hwloc_obj_attr_u_hwloc_bridge_attr_s.3 | 82 + .../hwloc_obj_attr_u_hwloc_cache_attr_s.3 | 58 + .../hwloc_obj_attr_u_hwloc_group_attr_s.3 | 51 + .../hwloc_obj_attr_u_hwloc_numanode_attr_s.3 | 49 + ...numanode_attr_s_hwloc_memory_page_type_s.3 | 39 + .../hwloc_obj_attr_u_hwloc_osdev_attr_s.3 | 28 + .../hwloc_obj_attr_u_hwloc_pcidev_attr_s.3 | 78 + .../man/man3/hwloc_obj_bridge_type_e.3 | 1 + .../man/man3/hwloc_obj_bridge_type_t.3 | 1 + .../man/man3/hwloc_obj_cache_type_e.3 | 1 + .../man/man3/hwloc_obj_cache_type_t.3 | 1 + .../man/man3/hwloc_obj_get_info_by_name.3 | 1 + .../man/man3/hwloc_obj_is_in_subtree.3 | 1 + .../man/man3/hwloc_obj_osdev_type_e.3 | 1 + .../man/man3/hwloc_obj_osdev_type_t.3 | 1 + .../doc/doxygen-doc/man/man3/hwloc_obj_t.3 | 1 + .../man/man3/hwloc_obj_type_is_cache.3 | 1 + .../man/man3/hwloc_obj_type_is_dcache.3 | 1 + .../man/man3/hwloc_obj_type_is_icache.3 | 1 + .../man/man3/hwloc_obj_type_is_io.3 | 1 + .../man/man3/hwloc_obj_type_is_memory.3 | 1 + .../man/man3/hwloc_obj_type_is_normal.3 | 1 + .../man/man3/hwloc_obj_type_snprintf.3 | 1 + .../man/man3/hwloc_obj_type_string.3 | 1 + .../doxygen-doc/man/man3/hwloc_obj_type_t.3 | 1 + .../man/man3/hwloc_opencl_get_device_cpuset.3 | 1 + .../man/man3/hwloc_opencl_get_device_osdev.3 | 1 + .../hwloc_opencl_get_device_osdev_by_index.3 | 1 + .../man3/hwloc_opencl_get_device_pci_busid.3 | 1 + .../man/man3/hwloc_pci_find_by_busid.3 | 1 + .../man/man3/hwloc_pci_find_parent_by_busid.3 | 1 + .../man3/hwloc_pcidisc_check_bridge_type.3 | 1 + .../man3/hwloc_pcidisc_find_bridge_buses.3 | 1 + .../man/man3/hwloc_pcidisc_find_cap.3 | 1 + .../man/man3/hwloc_pcidisc_find_linkspeed.3 | 1 + .../man/man3/hwloc_pcidisc_tree_attach.3 | 1 + .../man3/hwloc_pcidisc_tree_insert_by_busid.3 | 1 + .../man/man3/hwloc_plugin_check_namespace.3 | 1 + .../man/man3/hwloc_restrict_flags_e.3 | 1 + .../man/man3/hwloc_rsmi_get_device_cpuset.3 | 1 + .../man/man3/hwloc_rsmi_get_device_osdev.3 | 1 + .../hwloc_rsmi_get_device_osdev_by_index.3 | 1 + .../man/man3/hwloc_set_area_membind.3 | 1 + .../doxygen-doc/man/man3/hwloc_set_cpubind.3 | 1 + .../doxygen-doc/man/man3/hwloc_set_membind.3 | 1 + .../man/man3/hwloc_set_proc_cpubind.3 | 1 + .../man/man3/hwloc_set_proc_membind.3 | 1 + .../man/man3/hwloc_set_thread_cpubind.3 | 1 + .../man/man3/hwloc_shmem_topology_adopt.3 | 1 + .../man3/hwloc_shmem_topology_get_length.3 | 1 + .../man/man3/hwloc_shmem_topology_write.3 | 1 + .../man/man3/hwloc_topology_abi_check.3 | 1 + .../man3/hwloc_topology_alloc_group_object.3 | 1 + .../man/man3/hwloc_topology_allow.3 | 1 + .../man/man3/hwloc_topology_check.3 | 1 + .../man3/hwloc_topology_components_flag_e.3 | 1 + .../man/man3/hwloc_topology_cpubind_support.3 | 80 + .../man/man3/hwloc_topology_destroy.3 | 1 + .../man/man3/hwloc_topology_diff_apply.3 | 1 + .../man3/hwloc_topology_diff_apply_flags_e.3 | 1 + .../man/man3/hwloc_topology_diff_build.3 | 1 + .../man/man3/hwloc_topology_diff_destroy.3 | 1 + .../man/man3/hwloc_topology_diff_export_xml.3 | 1 + .../hwloc_topology_diff_export_xmlbuffer.3 | 1 + .../man/man3/hwloc_topology_diff_load_xml.3 | 1 + .../man3/hwloc_topology_diff_load_xmlbuffer.3 | 1 + .../hwloc_topology_diff_obj_attr_type_e.3 | 1 + .../hwloc_topology_diff_obj_attr_type_t.3 | 1 + .../man/man3/hwloc_topology_diff_obj_attr_u.3 | 51 + ...u_hwloc_topology_diff_obj_attr_generic_s.3 | 25 + ..._u_hwloc_topology_diff_obj_attr_string_s.3 | 43 + ..._u_hwloc_topology_diff_obj_attr_uint64_s.3 | 43 + .../man/man3/hwloc_topology_diff_t.3 | 1 + .../man/man3/hwloc_topology_diff_type_e.3 | 1 + .../man/man3/hwloc_topology_diff_type_t.3 | 1 + .../man/man3/hwloc_topology_diff_u.3 | 51 + ...ogy_diff_u_hwloc_topology_diff_generic_s.3 | 30 + ...gy_diff_u_hwloc_topology_diff_obj_attr_s.3 | 45 + ...diff_u_hwloc_topology_diff_too_complex_s.3 | 40 + .../man3/hwloc_topology_discovery_support.3 | 65 + .../doxygen-doc/man/man3/hwloc_topology_dup.3 | 1 + .../man3/hwloc_topology_export_synthetic.3 | 1 + .../hwloc_topology_export_synthetic_flags_e.3 | 1 + .../man/man3/hwloc_topology_export_xml.3 | 1 + .../man3/hwloc_topology_export_xml_flags_e.3 | 1 + .../man3/hwloc_topology_export_xmlbuffer.3 | 1 + .../man/man3/hwloc_topology_flags_e.3 | 1 + .../man3/hwloc_topology_get_allowed_cpuset.3 | 1 + .../man3/hwloc_topology_get_allowed_nodeset.3 | 1 + .../man3/hwloc_topology_get_complete_cpuset.3 | 1 + .../hwloc_topology_get_complete_nodeset.3 | 1 + .../man/man3/hwloc_topology_get_depth.3 | 1 + .../man/man3/hwloc_topology_get_flags.3 | 1 + .../man/man3/hwloc_topology_get_support.3 | 1 + .../man3/hwloc_topology_get_topology_cpuset.3 | 1 + .../hwloc_topology_get_topology_nodeset.3 | 1 + .../man/man3/hwloc_topology_get_type_filter.3 | 1 + .../man/man3/hwloc_topology_get_userdata.3 | 1 + .../man/man3/hwloc_topology_init.3 | 1 + .../man3/hwloc_topology_insert_group_object.3 | 1 + .../man3/hwloc_topology_insert_misc_object.3 | 1 + .../man/man3/hwloc_topology_is_thissystem.3 | 1 + .../man/man3/hwloc_topology_load.3 | 1 + .../man/man3/hwloc_topology_membind_support.3 | 100 + .../man/man3/hwloc_topology_misc_support.3 | 28 + .../man/man3/hwloc_topology_reconnect.3 | 1 + .../man/man3/hwloc_topology_refresh.3 | 1 + .../man/man3/hwloc_topology_restrict.3 | 1 + .../hwloc_topology_set_all_types_filter.3 | 1 + .../hwloc_topology_set_cache_types_filter.3 | 1 + .../man/man3/hwloc_topology_set_components.3 | 1 + .../man/man3/hwloc_topology_set_flags.3 | 1 + .../hwloc_topology_set_icache_types_filter.3 | 1 + .../man3/hwloc_topology_set_io_types_filter.3 | 1 + .../man/man3/hwloc_topology_set_pid.3 | 1 + .../man/man3/hwloc_topology_set_synthetic.3 | 1 + .../man/man3/hwloc_topology_set_type_filter.3 | 1 + .../man/man3/hwloc_topology_set_userdata.3 | 1 + ...oc_topology_set_userdata_export_callback.3 | 1 + ...oc_topology_set_userdata_import_callback.3 | 1 + .../man/man3/hwloc_topology_set_xml.3 | 1 + .../man/man3/hwloc_topology_set_xmlbuffer.3 | 1 + .../man/man3/hwloc_topology_support.3 | 45 + .../doxygen-doc/man/man3/hwloc_topology_t.3 | 1 + .../man/man3/hwloc_type_filter_e.3 | 1 + .../doxygen-doc/man/man3/hwloc_type_sscanf.3 | 1 + .../man/man3/hwloc_type_sscanf_as_depth.3 | 1 + .../hwloc_windows_get_nr_processor_groups.3 | 1 + ...hwloc_windows_get_processor_group_cpuset.3 | 1 + .../man/man3/hwlocality_advanced_io.3 | 95 + .../man/man3/hwlocality_api_version.3 | 56 + .../doxygen-doc/man/man3/hwlocality_bitmap.3 | 672 ++ .../man3/hwlocality_components_core_funcs.3 | 129 + .../man3/hwlocality_components_filtering.3 | 83 + .../man/man3/hwlocality_components_pcidisc.3 | 71 + .../man/man3/hwlocality_components_pcifind.3 | 79 + .../man/man3/hwlocality_configuration.3 | 266 + .../man/man3/hwlocality_cpubinding.3 | 233 + .../man/man3/hwlocality_cpukinds.3 | 135 + .../man/man3/hwlocality_creation.3 | 159 + .../doxygen-doc/man/man3/hwlocality_cuda.3 | 106 + .../doxygen-doc/man/man3/hwlocality_cudart.3 | 81 + .../doxygen-doc/man/man3/hwlocality_diff.3 | 228 + .../man/man3/hwlocality_disc_backends.3 | 117 + .../man/man3/hwlocality_disc_components.3 | 28 + .../man/man3/hwlocality_distances_add.3 | 139 + .../man/man3/hwlocality_distances_consult.3 | 48 + .../man/man3/hwlocality_distances_get.3 | 175 + .../man/man3/hwlocality_distances_remove.3 | 50 + .../man/man3/hwlocality_generic_components.3 | 63 + .../doc/doxygen-doc/man/man3/hwlocality_gl.3 | 82 + .../man/man3/hwlocality_glibc_sched.3 | 45 + .../man/man3/hwlocality_helper_ancestors.3 | 80 + .../man/man3/hwlocality_helper_distribute.3 | 63 + .../man/man3/hwlocality_helper_find_cache.3 | 65 + .../man3/hwlocality_helper_find_covering.3 | 83 + .../man/man3/hwlocality_helper_find_inside.3 | 160 + .../man/man3/hwlocality_helper_find_misc.3 | 137 + .../man3/hwlocality_helper_nodeset_convert.3 | 42 + .../man3/hwlocality_helper_topology_sets.3 | 150 + .../man/man3/hwlocality_helper_types.3 | 106 + .../man/man3/hwlocality_info_attr.3 | 57 + .../doxygen-doc/man/man3/hwlocality_levels.3 | 197 + .../man/man3/hwlocality_levelzero.3 | 56 + .../doxygen-doc/man/man3/hwlocality_linux.3 | 78 + .../man3/hwlocality_linux_libnuma_bitmask.3 | 75 + .../man3/hwlocality_linux_libnuma_ulongs.3 | 65 + .../man/man3/hwlocality_memattrs.3 | 208 + .../man/man3/hwlocality_memattrs_manage.3 | 130 + .../man/man3/hwlocality_membinding.3 | 328 + .../doxygen-doc/man/man3/hwlocality_nvml.3 | 79 + .../man/man3/hwlocality_object_sets.3 | 56 + .../man/man3/hwlocality_object_strings.3 | 118 + .../man/man3/hwlocality_object_types.3 | 242 + .../doxygen-doc/man/man3/hwlocality_objects.3 | 40 + .../doxygen-doc/man/man3/hwlocality_opencl.3 | 92 + .../man/man3/hwlocality_openfabrics.3 | 81 + .../doxygen-doc/man/man3/hwlocality_rsmi.3 | 79 + .../man/man3/hwlocality_setsource.3 | 144 + .../doxygen-doc/man/man3/hwlocality_shmem.3 | 104 + .../man/man3/hwlocality_syntheticexport.3 | 75 + .../doxygen-doc/man/man3/hwlocality_tinker.3 | 203 + .../doxygen-doc/man/man3/hwlocality_windows.3 | 54 + .../man/man3/hwlocality_xmlexport.3 | 176 + 3rd-party/hwloc-2.7.1/doc/doxygen.cfg | 2385 ++++++ 3rd-party/hwloc-2.7.1/doc/doxygen.css | 146 + .../hwloc-2.7.1/doc/examples/Makefile.am | 33 + .../doc/examples/cpuset+bitmap+cpubind.c | 151 + .../hwloc-2.7.1/doc/examples/get-knl-modes.c | 37 + 3rd-party/hwloc-2.7.1/doc/examples/gpu.c | 111 + .../doc/examples/hwloc-hello-cpp.cpp | 176 + .../hwloc-2.7.1/doc/examples/hwloc-hello.c | 176 + .../doc/examples/nodeset+membind+policy.c | 152 + .../hwloc-2.7.1/doc/examples/sharedcaches.c | 102 + 3rd-party/hwloc-2.7.1/doc/hwloc.doxy | 4890 +++++++++++ .../hwloc-2.7.1/doc/images/devel09-pci.png | Bin 0 -> 23431 bytes 3rd-party/hwloc-2.7.1/doc/images/diagram.eps | 1189 +++ 3rd-party/hwloc-2.7.1/doc/images/diagram.fig | 470 ++ 3rd-party/hwloc-2.7.1/doc/images/diagram.png | Bin 0 -> 34247 bytes 3rd-party/hwloc-2.7.1/doc/images/dudley.png | Bin 0 -> 14824 bytes 3rd-party/hwloc-2.7.1/doc/images/emmett.png | Bin 0 -> 12537 bytes 3rd-party/hwloc-2.7.1/doc/images/hagrid.png | Bin 0 -> 13780 bytes .../hwloc-2.7.1/doc/images/netloc_design.png | Bin 0 -> 67547 bytes .../hwloc-2.7.1/doc/images/netloc_draw.png | Bin 0 -> 174669 bytes .../doc/images/ppc64-full-with-smt.png | Bin 0 -> 18107 bytes .../hwloc-2.7.1/doc/images/ppc64-with-smt.png | Bin 0 -> 8362 bytes .../doc/images/ppc64-without-smt.png | Bin 0 -> 7045 bytes 3rd-party/hwloc-2.7.1/doc/main.doxy | 123 + 3rd-party/hwloc-2.7.1/doc/netloc.doxy | 342 + .../hwloc-2.7.1/doc/www.open-mpi.org-css.inc | 2 + .../doc/www.open-mpi.org-footer.inc | 2 + .../doc/www.open-mpi.org-header.inc | 14 + .../hwloc-2.7.1/doc/www.open-mpi.org.cfg | 20 + 3rd-party/hwloc-2.7.1/hwloc.pc.in | 12 + 3rd-party/hwloc-2.7.1/hwloc/Makefile.am | 247 + 3rd-party/hwloc-2.7.1/hwloc/base64.c | 309 + 3rd-party/hwloc-2.7.1/hwloc/bind.c | 926 +++ 3rd-party/hwloc-2.7.1/hwloc/bitmap.c | 1717 ++++ 3rd-party/hwloc-2.7.1/hwloc/components.c | 1091 +++ 3rd-party/hwloc-2.7.1/hwloc/cpukinds.c | 661 ++ 3rd-party/hwloc-2.7.1/hwloc/diff.c | 540 ++ 3rd-party/hwloc-2.7.1/hwloc/distances.c | 1509 ++++ 3rd-party/hwloc-2.7.1/hwloc/hwloc.dtd | 73 + 3rd-party/hwloc-2.7.1/hwloc/hwloc2-diff.dtd | 21 + 3rd-party/hwloc-2.7.1/hwloc/hwloc2.dtd | 90 + 3rd-party/hwloc-2.7.1/hwloc/memattrs.c | 1199 +++ 3rd-party/hwloc-2.7.1/hwloc/misc.c | 153 + 3rd-party/hwloc-2.7.1/hwloc/pci-common.c | 1052 +++ 3rd-party/hwloc-2.7.1/hwloc/shmem.c | 300 + 3rd-party/hwloc-2.7.1/hwloc/topology-aix.c | 904 +++ 3rd-party/hwloc-2.7.1/hwloc/topology-bgq.c | 320 + 3rd-party/hwloc-2.7.1/hwloc/topology-cuda.c | 186 + 3rd-party/hwloc-2.7.1/hwloc/topology-darwin.c | 684 ++ 3rd-party/hwloc-2.7.1/hwloc/topology-fake.c | 100 + .../hwloc-2.7.1/hwloc/topology-freebsd.c | 621 ++ 3rd-party/hwloc-2.7.1/hwloc/topology-gl.c | 194 + .../hwloc-2.7.1/hwloc/topology-hardwired.c | 225 + 3rd-party/hwloc-2.7.1/hwloc/topology-hpux.c | 333 + .../hwloc-2.7.1/hwloc/topology-levelzero.c | 541 ++ 3rd-party/hwloc-2.7.1/hwloc/topology-linux.c | 7116 +++++++++++++++++ 3rd-party/hwloc-2.7.1/hwloc/topology-netbsd.c | 218 + 3rd-party/hwloc-2.7.1/hwloc/topology-noos.c | 80 + 3rd-party/hwloc-2.7.1/hwloc/topology-nvml.c | 440 + 3rd-party/hwloc-2.7.1/hwloc/topology-opencl.c | 236 + 3rd-party/hwloc-2.7.1/hwloc/topology-pci.c | 446 ++ 3rd-party/hwloc-2.7.1/hwloc/topology-rsmi.c | 466 ++ .../hwloc/topology-solaris-chiptype.c | 512 ++ .../hwloc-2.7.1/hwloc/topology-solaris.c | 1099 +++ .../hwloc-2.7.1/hwloc/topology-synthetic.c | 1564 ++++ .../hwloc-2.7.1/hwloc/topology-windows.c | 1427 ++++ 3rd-party/hwloc-2.7.1/hwloc/topology-x86.c | 1861 +++++ .../hwloc-2.7.1/hwloc/topology-xml-libxml.c | 633 ++ .../hwloc-2.7.1/hwloc/topology-xml-nolibxml.c | 907 +++ 3rd-party/hwloc-2.7.1/hwloc/topology-xml.c | 3705 +++++++++ 3rd-party/hwloc-2.7.1/hwloc/topology.c | 5170 ++++++++++++ 3rd-party/hwloc-2.7.1/hwloc/traversal.c | 837 ++ 3rd-party/hwloc-2.7.1/include/Makefile.am | 75 + 3rd-party/hwloc-2.7.1/include/hwloc.h | 2578 ++++++ .../include/hwloc/autogen/config.h.in | 241 + 3rd-party/hwloc-2.7.1/include/hwloc/bitmap.h | 494 ++ .../hwloc-2.7.1/include/hwloc/cpukinds.h | 193 + 3rd-party/hwloc-2.7.1/include/hwloc/cuda.h | 220 + 3rd-party/hwloc-2.7.1/include/hwloc/cudart.h | 177 + .../hwloc-2.7.1/include/hwloc/deprecated.h | 217 + 3rd-party/hwloc-2.7.1/include/hwloc/diff.h | 289 + .../hwloc-2.7.1/include/hwloc/distances.h | 471 ++ 3rd-party/hwloc-2.7.1/include/hwloc/export.h | 278 + 3rd-party/hwloc-2.7.1/include/hwloc/gl.h | 136 + .../hwloc-2.7.1/include/hwloc/glibc-sched.h | 126 + 3rd-party/hwloc-2.7.1/include/hwloc/helper.h | 1231 +++ 3rd-party/hwloc-2.7.1/include/hwloc/inlines.h | 146 + .../hwloc-2.7.1/include/hwloc/levelzero.h | 157 + .../hwloc-2.7.1/include/hwloc/linux-libnuma.h | 274 + 3rd-party/hwloc-2.7.1/include/hwloc/linux.h | 87 + .../hwloc-2.7.1/include/hwloc/memattrs.h | 455 ++ 3rd-party/hwloc-2.7.1/include/hwloc/nvml.h | 181 + 3rd-party/hwloc-2.7.1/include/hwloc/opencl.h | 252 + .../include/hwloc/openfabrics-verbs.h | 152 + 3rd-party/hwloc-2.7.1/include/hwloc/plugins.h | 689 ++ 3rd-party/hwloc-2.7.1/include/hwloc/rename.h | 901 +++ 3rd-party/hwloc-2.7.1/include/hwloc/rsmi.h | 203 + 3rd-party/hwloc-2.7.1/include/hwloc/shmem.h | 137 + 3rd-party/hwloc-2.7.1/include/hwloc/windows.h | 76 + 3rd-party/hwloc-2.7.1/include/netloc.h | 56 + .../hwloc-2.7.1/include/netloc/utarray.h | 237 + 3rd-party/hwloc-2.7.1/include/netloc/uthash.h | 966 +++ 3rd-party/hwloc-2.7.1/include/netlocscotch.h | 122 + .../include/private/autogen/config.h.in | 915 +++ .../hwloc-2.7.1/include/private/components.h | 45 + .../hwloc-2.7.1/include/private/cpuid-x86.h | 86 + 3rd-party/hwloc-2.7.1/include/private/debug.h | 95 + .../include/private/internal-components.h | 42 + 3rd-party/hwloc-2.7.1/include/private/misc.h | 576 ++ .../hwloc-2.7.1/include/private/netloc.h | 578 ++ .../hwloc-2.7.1/include/private/private.h | 535 ++ .../include/private/solaris-chiptype.h | 43 + .../hwloc-2.7.1/include/private/windows.h | 21 + 3rd-party/hwloc-2.7.1/include/private/xml.h | 107 + 3rd-party/hwloc-2.7.1/netloc.pc.in | 11 + 3rd-party/hwloc-2.7.1/netloc/Makefile.am | 87 + 3rd-party/hwloc-2.7.1/netloc/architecture.c | 853 ++ 3rd-party/hwloc-2.7.1/netloc/edge.c | 87 + 3rd-party/hwloc-2.7.1/netloc/hwloc.c | 288 + 3rd-party/hwloc-2.7.1/netloc/mpicomm.c | 101 + 3rd-party/hwloc-2.7.1/netloc/node.c | 129 + 3rd-party/hwloc-2.7.1/netloc/path.c | 31 + 3rd-party/hwloc-2.7.1/netloc/physical_link.c | 88 + 3rd-party/hwloc-2.7.1/netloc/scotch.c | 469 ++ 3rd-party/hwloc-2.7.1/netloc/support.c | 61 + 3rd-party/hwloc-2.7.1/netloc/topology.c | 598 ++ 3rd-party/hwloc-2.7.1/netlocscotch.pc.in | 11 + 3rd-party/hwloc-2.7.1/tests/Makefile.am | 9 + .../hwloc-2.7.1/tests/hwloc/CMakeLists.txt | 68 + 3rd-party/hwloc-2.7.1/tests/hwloc/Makefile.am | 171 + 3rd-party/hwloc-2.7.1/tests/hwloc/cpukinds.c | 375 + .../hwloc-2.7.1/tests/hwloc/cpuset_nodeset.c | 133 + 3rd-party/hwloc-2.7.1/tests/hwloc/cuda.c | 97 + 3rd-party/hwloc-2.7.1/tests/hwloc/cudart.c | 82 + .../tests/hwloc/embedded/Makefile.am | 21 + .../tests/hwloc/embedded/README.txt | 36 + .../tests/hwloc/embedded/autogen.sh | 2 + .../tests/hwloc/embedded/config/README.txt | 1 + .../tests/hwloc/embedded/configure.ac | 41 + .../tests/hwloc/embedded/do_test.c | 34 + .../hwloc-2.7.1/tests/hwloc/embedded/main.c | 22 + .../hwloc/embedded/run-embedded-tests.sh | 137 + 3rd-party/hwloc-2.7.1/tests/hwloc/gl.c | 109 + .../hwloc-2.7.1/tests/hwloc/glibc-sched.c | 89 + .../tests/hwloc/hwloc_api_version.c | 16 + .../hwloc-2.7.1/tests/hwloc/hwloc_backends.c | 258 + .../hwloc-2.7.1/tests/hwloc/hwloc_bind.c | 225 + .../hwloc-2.7.1/tests/hwloc/hwloc_bitmap.c | 540 ++ .../hwloc/hwloc_bitmap_compare_inclusion.c | 98 + .../hwloc/hwloc_bitmap_first_last_weight.c | 118 + .../tests/hwloc/hwloc_bitmap_singlify.c | 52 + .../tests/hwloc/hwloc_bitmap_string.c | 204 + .../hwloc-2.7.1/tests/hwloc/hwloc_distances.c | 417 + .../tests/hwloc/hwloc_get_area_memlocation.c | 141 + .../hwloc/hwloc_get_cache_covering_cpuset.c | 87 + .../tests/hwloc/hwloc_get_closest_objs.c | 81 + .../hwloc_get_largest_objs_inside_cpuset.c | 114 + .../tests/hwloc/hwloc_get_last_cpu_location.c | 118 + .../hwloc_get_next_obj_covering_cpuset.c | 86 + .../hwloc/hwloc_get_obj_below_array_by_type.c | 81 + .../hwloc/hwloc_get_obj_covering_cpuset.c | 68 + .../tests/hwloc/hwloc_get_obj_inside_cpuset.c | 98 + .../hwloc/hwloc_get_obj_with_same_locality.c | 145 + .../hwloc_get_shared_cache_covering_obj.c | 78 + .../hwloc-2.7.1/tests/hwloc/hwloc_groups.c | 521 ++ .../tests/hwloc/hwloc_insert_misc.c | 168 + .../hwloc-2.7.1/tests/hwloc/hwloc_iodevs.c | 72 + .../tests/hwloc/hwloc_is_thissystem.c | 74 + .../tests/hwloc/hwloc_list_components.c | 20 + .../hwloc-2.7.1/tests/hwloc/hwloc_obj_infos.c | 43 + .../tests/hwloc/hwloc_object_userdata.c | 183 + .../tests/hwloc/hwloc_pci_backend.c | 85 + .../hwloc-2.7.1/tests/hwloc/hwloc_synthetic.c | 181 + .../tests/hwloc/hwloc_topology_abi.c | 177 + .../tests/hwloc/hwloc_topology_allow.c | 181 + .../tests/hwloc/hwloc_topology_diff.c | 189 + .../tests/hwloc/hwloc_topology_dup.c | 94 + .../tests/hwloc/hwloc_topology_restrict.c | 292 + .../tests/hwloc/hwloc_type_depth.c | 95 + .../tests/hwloc/hwloc_type_sscanf.c | 169 + 3rd-party/hwloc-2.7.1/tests/hwloc/levelzero.c | 120 + .../hwloc-2.7.1/tests/hwloc/linux-libnuma.c | 237 + .../linux/128arm-2pa2n8cluster4co.output | 702 ++ .../linux/128arm-2pa2n8cluster4co.tar.bz2 | Bin 0 -> 64157 bytes .../tests/hwloc/linux/128ia64-17n4s2c.output | 383 + .../tests/hwloc/linux/128ia64-17n4s2c.tar.bz2 | Bin 0 -> 25090 bytes ...16amd64-4n4c-cgroup-distance-merge.options | 1 + .../16amd64-4n4c-cgroup-distance-merge.output | 22 + ...16amd64-4n4c-cgroup-distance-merge.tar.bz2 | Bin 0 -> 11467 bytes .../hwloc/linux/16amd64-8n2c-cpusets.output | 78 + .../hwloc/linux/16amd64-8n2c-cpusets.tar.bz2 | Bin 0 -> 7068 bytes .../linux/16amd64-8n2c-cpusets.xml.options | 1 + .../linux/16amd64-8n2c-cpusets.xml.output | 120 + .../linux/16amd64-8n2c-cpusets.xml.source | 1 + .../16amd64-8n2c-cpusets_noadmin.options | 1 + .../linux/16amd64-8n2c-cpusets_noadmin.output | 113 + .../linux/16amd64-8n2c-cpusets_noadmin.source | 1 + .../tests/hwloc/linux/16amd64-8n2c.output | 116 + .../tests/hwloc/linux/16amd64-8n2c.tar.bz2 | Bin 0 -> 6818 bytes .../linux/16em64t-4s2c2t-offlines.output | 53 + .../linux/16em64t-4s2c2t-offlines.tar.bz2 | Bin 0 -> 4979 bytes .../linux/16em64t-4s2c2t-offlines.xml.options | 1 + .../linux/16em64t-4s2c2t-offlines.xml.output | 84 + .../linux/16em64t-4s2c2t-offlines.xml.source | 1 + .../tests/hwloc/linux/16em64t-4s2c2t.output | 59 + .../tests/hwloc/linux/16em64t-4s2c2t.tar.bz2 | Bin 0 -> 5303 bytes .../hwloc/linux/16em64t-4s2c2t.xml.options | 1 + .../hwloc/linux/16em64t-4s2c2t.xml.output | 94 + .../hwloc/linux/16em64t-4s2c2t.xml.source | 1 + .../hwloc/linux/16em64t-4s2c2t_merge.options | 1 + .../hwloc/linux/16em64t-4s2c2t_merge.output | 36 + .../hwloc/linux/16em64t-4s2c2t_merge.source | 1 + .../linux/16em64t-4s2c2t_ncaches.options | 1 + .../hwloc/linux/16em64t-4s2c2t_ncaches.output | 36 + .../hwloc/linux/16em64t-4s2c2t_ncaches.source | 1 + ...6em64t-4s2ca2c-cpusetreorder-merge.options | 1 + ...16em64t-4s2ca2c-cpusetreorder-merge.output | 32 + ...16em64t-4s2ca2c-cpusetreorder-merge.source | 1 + .../16em64t-4s2ca2c-cpusetreorder.output | 61 + .../16em64t-4s2ca2c-cpusetreorder.tar.bz2 | Bin 0 -> 5707 bytes .../tests/hwloc/linux/16ia64-8n2s.output | 153 + .../tests/hwloc/linux/16ia64-8n2s.tar.bz2 | Bin 0 -> 6206 bytes .../tests/hwloc/linux/1alpha.output | 7 + .../tests/hwloc/linux/1alpha.tar.bz2 | Bin 0 -> 1177 bytes .../tests/hwloc/linux/20s390-2g6s4c.output | 64 + .../tests/hwloc/linux/20s390-2g6s4c.tar.bz2 | Bin 0 -> 4860 bytes .../tests/hwloc/linux/256ia64-64n2s2c.output | 864 ++ .../tests/hwloc/linux/256ia64-64n2s2c.tar.bz2 | Bin 0 -> 17026 bytes .../tests/hwloc/linux/256ppc-8n8s4t.output | 683 ++ .../tests/hwloc/linux/256ppc-8n8s4t.tar.bz2 | Bin 0 -> 83319 bytes .../tests/hwloc/linux/2amd64-2n.output | 28 + .../tests/hwloc/linux/2amd64-2n.tar.bz2 | Bin 0 -> 1749 bytes .../tests/hwloc/linux/2arm-2c.output | 15 + .../tests/hwloc/linux/2arm-2c.tar.bz2 | Bin 0 -> 3260 bytes .../hwloc/linux/2i386-2c-nohugepage.tar.bz2 | Bin 0 -> 3156 bytes .../linux/2i386-2c-nohugepage.xml.options | 1 + .../linux/2i386-2c-nohugepage.xml.output | 39 + .../linux/2i386-2c-nohugepage.xml.source | 1 + .../linux/2i386-2t-hugepagesizecount.tar.bz2 | Bin 0 -> 4186 bytes .../2i386-2t-hugepagesizecount.xml.options | 1 + .../2i386-2t-hugepagesizecount.xml.output | 37 + .../2i386-2t-hugepagesizecount.xml.source | 1 + .../linux/2pa-pcidomain32bits-disabled.output | 33 + .../linux/2pa-pcidomain32bits-disabled.source | 1 + .../hwloc/linux/2pa-pcidomain32bits.output | 35 + .../hwloc/linux/2pa-pcidomain32bits.tar.bz2 | Bin 0 -> 29645 bytes .../tests/hwloc/linux/2ps3-2t.output | 10 + .../tests/hwloc/linux/2ps3-2t.tar.bz2 | Bin 0 -> 815 bytes .../tests/hwloc/linux/2s390-2c.output | 10 + .../tests/hwloc/linux/2s390-2c.tar.bz2 | Bin 0 -> 1513 bytes .../hwloc/linux/32amd64-4s2n4c-cgroup2.output | 67 + .../linux/32amd64-4s2n4c-cgroup2.tar.bz2 | Bin 0 -> 20391 bytes .../linux/32amd64-4s2n4c-cgroup2.xml.options | 1 + .../linux/32amd64-4s2n4c-cgroup2.xml.output | 113 + .../linux/32amd64-4s2n4c-cgroup2.xml.source | 1 + .../hwloc/linux/32em64t-2n8c+1mic.options | 1 + .../hwloc/linux/32em64t-2n8c+1mic.output | 504 ++ .../hwloc/linux/32em64t-2n8c+1mic.tar.bz2 | Bin 0 -> 80526 bytes .../hwloc/linux/32intel64-2p8co2t+8ve.output | 161 + .../hwloc/linux/32intel64-2p8co2t+8ve.tar.bz2 | Bin 0 -> 49875 bytes .../hwloc/linux/40intel64-2g2n4c+pci.env | 2 + .../hwloc/linux/40intel64-2g2n4c+pci.options | 1 + .../hwloc/linux/40intel64-2g2n4c+pci.output | 514 ++ .../hwloc/linux/40intel64-2g2n4c+pci.tar.bz2 | Bin 0 -> 90074 bytes .../linux/40intel64-4n10c+pci-conflicts.env | 2 + .../40intel64-4n10c+pci-conflicts.output | 234 + .../40intel64-4n10c+pci-conflicts.tar.bz2 | Bin 0 -> 59131 bytes .../hwloc/linux/48amd64-4d2n6c-sparse.output | 283 + .../hwloc/linux/48amd64-4d2n6c-sparse.tar.bz2 | Bin 0 -> 21102 bytes .../linux/4em64t-2c2t-ignore-reorder.options | 1 + .../linux/4em64t-2c2t-ignore-reorder.output | 6 + .../linux/4em64t-2c2t-ignore-reorder.tar.bz2 | Bin 0 -> 7605 bytes .../tests/hwloc/linux/4fake-4gr1nu1pu.output | 16 + .../tests/hwloc/linux/4fake-4gr1nu1pu.tar.bz2 | Bin 0 -> 877 bytes .../tests/hwloc/linux/4ia64-4s.output | 40 + .../tests/hwloc/linux/4ia64-4s.tar.bz2 | Bin 0 -> 1990 bytes .../hwloc/linux/64amd64-4s2n4ca2co.output | 297 + .../hwloc/linux/64amd64-4s2n4ca2co.tar.bz2 | Bin 0 -> 21323 bytes .../hwloc/linux/64fake-4n2s2ca2c2t.output | 212 + .../hwloc/linux/64fake-4n2s2ca2c2t.tar.bz2 | Bin 0 -> 11131 bytes .../linux/64intel64-fakeKNL-A2A-cache.output | 134 + .../linux/64intel64-fakeKNL-A2A-cache.tar.bz2 | Bin 0 -> 12003 bytes .../64intel64-fakeKNL-SNC4-hybrid-msc.env | 2 + .../64intel64-fakeKNL-SNC4-hybrid-msc.output | 158 + .../64intel64-fakeKNL-SNC4-hybrid-msc.source | 1 + .../64intel64-fakeKNL-SNC4-hybrid.output | 153 + .../64intel64-fakeKNL-SNC4-hybrid.tar.bz2 | Bin 0 -> 12982 bytes .../tests/hwloc/linux/8amd64-4n2c.output | 64 + .../tests/hwloc/linux/8amd64-4n2c.tar.bz2 | Bin 0 -> 3471 bytes .../linux/8em64t-2s2ca2c-buggynuma.output | 49 + .../linux/8em64t-2s2ca2c-buggynuma.tar.bz2 | Bin 0 -> 10547 bytes .../tests/hwloc/linux/8em64t-2s2ca2c.output | 49 + .../tests/hwloc/linux/8em64t-2s2ca2c.tar.bz2 | Bin 0 -> 5107 bytes .../linux/8em64t-2s4c-heterogeneous.output | 42 + .../linux/8em64t-2s4c-heterogeneous.tar.bz2 | Bin 0 -> 4891 bytes .../tests/hwloc/linux/8em64t-4c2t.output | 40 + .../tests/hwloc/linux/8em64t-4c2t.tar.bz2 | Bin 0 -> 18476 bytes .../tests/hwloc/linux/8ia64-2n2s2c.output | 81 + .../tests/hwloc/linux/8ia64-2n2s2c.tar.bz2 | Bin 0 -> 3099 bytes .../tests/hwloc/linux/8ia64-2s2c2t.output | 49 + .../tests/hwloc/linux/8ia64-2s2c2t.tar.bz2 | Bin 0 -> 5029 bytes .../tests/hwloc/linux/8ia64-4s2c.output | 73 + .../tests/hwloc/linux/8ia64-4s2c.tar.bz2 | Bin 0 -> 3019 bytes .../hwloc/linux/96em64t-4n4d3ca2co.output | 490 ++ .../hwloc/linux/96em64t-4n4d3ca2co.tar.bz2 | Bin 0 -> 17295 bytes .../hwloc-2.7.1/tests/hwloc/linux/Makefile.am | 183 + .../hwloc-2.7.1/tests/hwloc/linux/README | 35 + .../tests/hwloc/linux/allowed/Makefile.am | 30 + .../hwloc/linux/allowed/test-topology.sh.in | 156 + .../hwloc/linux/allowed/test1.fsroot.tar.bz2 | Bin 0 -> 359 bytes .../tests/hwloc/linux/allowed/test1.options | 1 + .../tests/hwloc/linux/allowed/test1.output | 47 + .../tests/hwloc/linux/allowed/test1.synthetic | 1 + .../fakecpuid1f-64intel64-2p4d2n2c2t.output | 339 + .../fakecpuid1f-64intel64-2p4d2n2c2t.tar.bz2 | Bin 0 -> 52970 bytes .../tests/hwloc/linux/fakeheterocpunuma.env | 4 + .../hwloc/linux/fakeheterocpunuma.options | 1 + .../hwloc/linux/fakeheterocpunuma.output | 109 + .../hwloc/linux/fakeheterocpunuma.tar.bz2 | Bin 0 -> 2191 bytes .../fakememinitiators-1np2c+1npp+gi.output | 58 + .../fakememinitiators-1np2c+1npp+gi.tar.bz2 | Bin 0 -> 19314 bytes .../tests/hwloc/linux/gather/Makefile.am | 11 + .../linux/gather/test-gather-topology.sh.in | 96 + .../hwloc/linux/nvidiagpunumanodes.kept.env | 2 + .../linux/nvidiagpunumanodes.kept.output | 110 + .../linux/nvidiagpunumanodes.kept.source | 1 + .../hwloc/linux/nvidiagpunumanodes.output | 98 + .../hwloc/linux/nvidiagpunumanodes.tar.bz2 | Bin 0 -> 24566 bytes .../hwloc/linux/offline-cpu0-node0.output | 102 + .../hwloc/linux/offline-cpu0-node0.tar.bz2 | Bin 0 -> 14390 bytes .../tests/hwloc/linux/test-topology.sh.in | 163 + 3rd-party/hwloc-2.7.1/tests/hwloc/memattrs.c | 513 ++ 3rd-party/hwloc-2.7.1/tests/hwloc/nvml.c | 93 + 3rd-party/hwloc-2.7.1/tests/hwloc/opencl.c | 128 + .../tests/hwloc/openfabrics-verbs.c | 73 + .../hwloc-2.7.1/tests/hwloc/ports/Makefile.am | 195 + .../tests/hwloc/ports/include/aix/procinfo.h | 25 + .../hwloc/ports/include/aix/sys/processor.h | 18 + .../tests/hwloc/ports/include/aix/sys/rset.h | 95 + .../hwloc/ports/include/aix/sys/systemcfg.h | 34 + .../hwloc/ports/include/aix/sys/thread.h | 20 + .../include/bgq/spi/include/kernel/location.h | 20 + .../include/bgq/spi/include/kernel/process.h | 13 + .../tests/hwloc/ports/include/cuda/cuda.h | 11 + .../ports/include/cuda/cuda_runtime_api.h | 36 + .../darwin/CoreFoundation/CoreFoundation.h | 38 + .../ports/include/darwin/IOKit/IOKitLib.h | 30 + .../hwloc/ports/include/darwin/sys/sysctl.h | 22 + .../hwloc/ports/include/freebsd/pthread.h | 9 + .../hwloc/ports/include/freebsd/pthread_np.h | 14 + .../hwloc/ports/include/freebsd/sys/cpuset.h | 38 + .../ports/include/freebsd/sys/domainset.h | 25 + .../hwloc/ports/include/freebsd/sys/param.h | 4 + .../hwloc/ports/include/freebsd/sys/sysctl.h | 35 + .../hwloc/ports/include/freebsd/sys/thr.h | 6 + .../hwloc/ports/include/freebsd/sys/user.h | 13 + .../hwloc/ports/include/gl/NVCtrl/NVCtrl.h | 18 + .../hwloc/ports/include/gl/NVCtrl/NVCtrlLib.h | 14 + .../tests/hwloc/ports/include/gl/X11/Xlib.h | 16 + .../hwloc/ports/include/hpux/sys/mpctl.h | 71 + .../include/levelzero/level_zero/ze_api.h | 58 + .../include/levelzero/level_zero/zes_api.h | 73 + .../hwloc/ports/include/netbsd/pthread.h | 16 + .../tests/hwloc/ports/include/netbsd/sched.h | 22 + .../hwloc/ports/include/netbsd/sys/sysctl.h | 14 + .../tests/hwloc/ports/include/nvml/nvml.h | 48 + .../tests/hwloc/ports/include/opencl/CL/cl.h | 44 + .../ports/include/rsmi/rocm_smi/rocm_smi.h | 88 + .../tests/hwloc/ports/include/solaris/kstat.h | 53 + .../tests/hwloc/ports/include/solaris/picl.h | 48 + .../ports/include/solaris/sys/lgrp_user.h | 66 + .../ports/include/solaris/sys/processor.h | 24 + .../hwloc/ports/include/solaris/sys/procset.h | 23 + .../ports/include/solaris/sys/systeminfo.h | 15 + .../hwloc/ports/include/windows/windows.h | 295 + .../hwloc/ports/include/windows/windowsx.h | 10 + .../tests/hwloc/rename/Makefile.am | 88 + .../hwloc-2.7.1/tests/hwloc/rename/main.c | 60 + 3rd-party/hwloc-2.7.1/tests/hwloc/rsmi.c | 90 + 3rd-party/hwloc-2.7.1/tests/hwloc/shmem.c | 333 + .../tests/hwloc/windows_processor_groups.c | 57 + .../hwloc-2.7.1/tests/hwloc/wrapper.sh.in | 32 + .../x86+linux/5intel64-hybrid-lakefield.env | 2 + .../5intel64-hybrid-lakefield.options | 1 + .../5intel64-hybrid-lakefield.output | 42 + .../5intel64-hybrid-lakefield.tar.bz2 | Bin 0 -> 34749 bytes .../hwloc/x86+linux/64amd64-4p2n4ca2co.output | 700 ++ .../x86+linux/64amd64-4p2n4ca2co.tar.bz2 | Bin 0 -> 89059 bytes .../64amd64-4p2n4ca2co.topoextnuma.env | 2 + .../64amd64-4p2n4ca2co.topoextnuma.output | 700 ++ .../64amd64-4p2n4ca2co.topoextnuma.source | 1 + .../tests/hwloc/x86+linux/Makefile.am | 41 + .../tests/hwloc/x86+linux/test-topology.sh.in | 147 + .../AMD-15h-Bulldozer-4xOpteron-6272.output | 643 ++ .../AMD-15h-Bulldozer-4xOpteron-6272.tar.bz2 | Bin 0 -> 1860 bytes .../AMD-15h-Piledriver-4xOpteron-6348.output | 499 ++ .../AMD-15h-Piledriver-4xOpteron-6348.tar.bz2 | Bin 0 -> 1719 bytes .../hwloc/x86/AMD-17h-Zen-2xEpyc-7451.output | 717 ++ .../hwloc/x86/AMD-17h-Zen-2xEpyc-7451.tar.bz2 | Bin 0 -> 2253 bytes .../AMD-K10-Istanbul-8xOpteron-8439SE.output | 664 ++ .../AMD-K10-Istanbul-8xOpteron-8439SE.tar.bz2 | Bin 0 -> 1302 bytes ...AMD-K10-MagnyCours-2xOpteron-6164HE.output | 322 + ...MD-K10-MagnyCours-2xOpteron-6164HE.tar.bz2 | Bin 0 -> 1096 bytes .../AMD-K8-SantaRosa-2xOpteron-2218.output | 70 + .../AMD-K8-SantaRosa-2xOpteron-2218.tar.bz2 | Bin 0 -> 661 bytes .../AMD-K8-SledgeHammer-2xOpteron-250.output | 46 + .../AMD-K8-SledgeHammer-2xOpteron-250.tar.bz2 | Bin 0 -> 549 bytes .../hwloc/x86/Hygon-Dhyana-32cores.output | 466 ++ .../hwloc/x86/Hygon-Dhyana-32cores.tar.bz2 | Bin 0 -> 1709 bytes .../Intel-Broadwell-2xXeon-E5-2650Lv4.output | 392 + .../Intel-Broadwell-2xXeon-E5-2650Lv4.tar.bz2 | Bin 0 -> 1996 bytes .../hwloc/x86/Intel-CPUID.1A-1p2co2t.env | 2 + .../hwloc/x86/Intel-CPUID.1A-1p2co2t.output | 50 + .../hwloc/x86/Intel-CPUID.1A-1p2co2t.tar.bz2 | Bin 0 -> 982 bytes .../x86/Intel-CPUID.1F-Qemu-2p3d3c2t.output | 394 + .../x86/Intel-CPUID.1F-Qemu-2p3d3c2t.tar.bz2 | Bin 0 -> 3740 bytes .../x86/Intel-CascadeLake-2xXeon6230.output | 548 ++ .../x86/Intel-CascadeLake-2xXeon6230.tar.bz2 | Bin 0 -> 2461 bytes .../hwloc/x86/Intel-Core-2xXeon-E5345.output | 106 + .../hwloc/x86/Intel-Core-2xXeon-E5345.tar.bz2 | Bin 0 -> 799 bytes .../x86/Intel-Haswell-2xXeon-E5-2680v3.output | 322 + .../Intel-Haswell-2xXeon-E5-2680v3.tar.bz2 | Bin 0 -> 3768 bytes .../Intel-IvyBridge-12xXeon-E5-4620v2.output | 1376 ++++ .../Intel-IvyBridge-12xXeon-E5-4620v2.tar.bz2 | Bin 0 -> 3365 bytes .../Intel-KnightsCorner-XeonPhi-SE10P.output | 929 +++ .../Intel-KnightsCorner-XeonPhi-SE10P.tar.bz2 | Bin 0 -> 2554 bytes .../Intel-KnightsLanding-XeonPhi-7210.output | 879 ++ .../Intel-KnightsLanding-XeonPhi-7210.tar.bz2 | Bin 0 -> 4021 bytes .../x86/Intel-Nehalem-2xXeon-X5550.output | 132 + .../x86/Intel-Nehalem-2xXeon-X5550.tar.bz2 | Bin 0 -> 1125 bytes .../x86/Intel-Penryn-4xXeon-X7460.output | 300 + .../x86/Intel-Penryn-4xXeon-X7460.tar.bz2 | Bin 0 -> 1326 bytes .../Intel-SandyBridge-2xXeon-E5-2650.output | 236 + .../Intel-SandyBridge-2xXeon-E5-2650.tar.bz2 | Bin 0 -> 1434 bytes .../hwloc/x86/Intel-Skylake-2xXeon6140.output | 496 ++ .../x86/Intel-Skylake-2xXeon6140.tar.bz2 | Bin 0 -> 2328 bytes .../x86/Intel-Westmere-2xXeon-X5650.output | 184 + .../x86/Intel-Westmere-2xXeon-X5650.tar.bz2 | Bin 0 -> 1359 bytes .../hwloc-2.7.1/tests/hwloc/x86/Makefile.am | 83 + .../x86/Zhaoxin-CentaurHauls-ZXD-4600.output | 93 + .../x86/Zhaoxin-CentaurHauls-ZXD-4600.tar.bz2 | Bin 0 -> 934 bytes ...aoxin-Shanghai-KaiSheng-ZXC+-FC1081.output | 90 + ...oxin-Shanghai-KaiSheng-ZXC+-FC1081.tar.bz2 | Bin 0 -> 959 bytes .../tests/hwloc/x86/test-topology.sh.in | 139 + .../xml/16-2gr2gr2n2c+misc.console.options | 1 + .../xml/16-2gr2gr2n2c+misc.console.output | 66 + .../xml/16-2gr2gr2n2c+misc.console.source | 1 + .../tests/hwloc/xml/16-2gr2gr2n2c+misc.xml | 143 + .../hwloc/xml/16amd64-4distances.console.env | 5 + .../xml/16amd64-4distances.console.options | 1 + .../xml/16amd64-4distances.console.output | 145 + .../xml/16amd64-4distances.console.source | 1 + .../tests/hwloc/xml/16amd64-4distances.v1.xml | 690 ++ .../xml/16amd64-4distances.v1tov2.source | 1 + .../hwloc/xml/16amd64-4distances.v1tov2.xml | 247 + .../xml/16amd64-4distances.v2tov1.options | 1 + .../xml/16amd64-4distances.v2tov1.source | 1 + .../hwloc/xml/16amd64-4distances.v2tov1.xml | 366 + .../tests/hwloc/xml/16amd64-4distances.xml | 262 + .../tests/hwloc/xml/16amd64-8n2c-cpusets.xml | 138 + .../hwloc/xml/16em64t-4s2c2t-offlines.xml | 67 + .../hwloc/xml/16em64t-4s2c2t.console.options | 1 + .../hwloc/xml/16em64t-4s2c2t.console.output | 30 + .../hwloc/xml/16em64t-4s2c2t.console.source | 1 + .../tests/hwloc/xml/16em64t-4s2c2t.xml | 94 + ...intel64-manyVFs.console.nocollapse.options | 1 + ...6intel64-manyVFs.console.nocollapse.output | 142 + ...6intel64-manyVFs.console.nocollapse.source | 1 + .../xml/16intel64-manyVFs.console.options | 1 + .../xml/16intel64-manyVFs.console.output | 135 + .../xml/16intel64-manyVFs.console.source | 1 + .../tests/hwloc/xml/16intel64-manyVFs.xml | 343 + .../tests/hwloc/xml/192em64t-12gr2n8c2t.xml | 2418 ++++++ .../tests/hwloc/xml/192em64t-24n8c2t.xml | 2368 ++++++ .../tests/hwloc/xml/24em64t-2n6c2t-pci.xml | 217 + ...intel64-2p2g7c-CoD.nogroups.v1tov2.options | 1 + ...8intel64-2p2g7c-CoD.nogroups.v1tov2.source | 1 + .../28intel64-2p2g7c-CoD.nogroups.v1tov2.xml | 186 + .../xml/28intel64-2p2g7c-CoDgroups.v1.xml | 202 + .../28intel64-2p2g7c-CoDgroups.v1tov2.source | 1 + .../xml/28intel64-2p2g7c-CoDgroups.v1tov2.xml | 194 + .../hwloc/xml/2intel64-1n2c-numaroot.v1.xml | 47 + .../xml/2intel64-1n2c-numaroot.v1tov2.source | 1 + .../xml/2intel64-1n2c-numaroot.v1tov2.xml | 52 + .../hwloc/xml/32em64t-2n8c2t-pci-noio.options | 1 + .../hwloc/xml/32em64t-2n8c2t-pci-noio.source | 1 + .../hwloc/xml/32em64t-2n8c2t-pci-noio.xml | 179 + .../xml/32em64t-2n8c2t-pci-normalio.source | 1 + .../hwloc/xml/32em64t-2n8c2t-pci-normalio.xml | 288 + .../xml/32em64t-2n8c2t-pci-wholeio.options | 1 + .../hwloc/xml/32em64t-2n8c2t-pci-wholeio.xml | 294 + ...64-3g2n+2n-irregulargroups+pci.console.env | 5 + ...g2n+2n-irregulargroups+pci.console.options | 1 + ...3g2n+2n-irregulargroups+pci.console.output | 398 + ...3g2n+2n-irregulargroups+pci.console.source | 1 + ...ntel64-3g2n+2n-irregulargroups+pci.options | 1 + .../64intel64-3g2n+2n-irregulargroups+pci.xml | 811 ++ ...4intel64-fakeKNL-SNC4-hybrid.v1tov2.source | 1 + .../64intel64-fakeKNL-SNC4-hybrid.v1tov2.xml | 220 + ...intel64-fakeKNL-SNC4-hybrid.v2tov1.options | 1 + ...4intel64-fakeKNL-SNC4-hybrid.v2tov1.source | 1 + .../64intel64-fakeKNL-SNC4-hybrid.v2tov1.xml | 243 + .../xml/64intel64-fakeKNL-SNC4-hybrid.xml | 230 + .../xml/8em64t-2p2ca2co-nonodesets.v1.xml | 153 + .../8em64t-2p2ca2co-nonodesets.v1tov2.source | 1 + .../xml/8em64t-2p2ca2co-nonodesets.v1tov2.xml | 156 + .../tests/hwloc/xml/8ia64-2n2s2c+1n.v1.xml | 74 + .../hwloc/xml/8ia64-2n2s2c+1n.v1tov2.source | 1 + .../hwloc/xml/8ia64-2n2s2c+1n.v1tov2.xml | 72 + .../hwloc/xml/8intel64-4n2t-memattrs.xml | 63 + ...A2A-hybrid.rootattachednumas.v1tov2.source | 1 + ...NL-A2A-hybrid.rootattachednumas.v1tov2.xml | 82 + ...2A-hybrid.rootattachednumas.v2tov1.options | 1 + ...A2A-hybrid.rootattachednumas.v2tov1.source | 1 + ...NL-A2A-hybrid.rootattachednumas.v2tov1.xml | 82 + ...4-fakeKNL-A2A-hybrid.rootattachednumas.xml | 84 + .../hwloc/xml/96em64t-4n4d3ca2co-pci.xml | 839 ++ .../hwloc-2.7.1/tests/hwloc/xml/Makefile.am | 109 + .../tests/hwloc/xml/fakecpukinds.xml | 33 + .../tests/hwloc/xml/fakeheterodistances.xml | 127 + .../tests/hwloc/xml/power8gpudistances.xml | 252 + .../tests/hwloc/xml/test-topology.sh.in | 149 + 3rd-party/hwloc-2.7.1/tests/hwloc/xmlbuffer.c | 119 + .../hwloc-2.7.1/tests/netloc/Makefile.am | 40 + .../hwloc-2.7.1/tests/netloc/data/avakas.txz | Bin 0 -> 256372 bytes .../hwloc-2.7.1/tests/netloc/data/plafrim.txz | Bin 0 -> 76852 bytes .../tests/netloc/data/plafrim2.txz | Bin 0 -> 58880 bytes .../hwloc-2.7.1/tests/netloc/data/scotch.txz | Bin 0 -> 1324 bytes .../tests/netloc/data/tests_draw.txt | 8 + .../tests/netloc/data/tests_extract.txt | 7 + .../tests/netloc/data/tests_mpiscotch.txt | 6 + .../tests/netloc/data/tests_scotch.txt | 7 + .../hwloc-2.7.1/tests/netloc/tests.sh.in | 221 + 3rd-party/hwloc-2.7.1/utils/Makefile.am | 14 + 3rd-party/hwloc-2.7.1/utils/hwloc/Makefile.am | 172 + 3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.c | 394 + 3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.h | 52 + .../utils/hwloc/hwloc-annotate.1in | 291 + .../hwloc-2.7.1/utils/hwloc/hwloc-annotate.c | 835 ++ .../hwloc-2.7.1/utils/hwloc/hwloc-bind.1in | 388 + .../hwloc-2.7.1/utils/hwloc/hwloc-bind.c | 626 ++ .../hwloc-2.7.1/utils/hwloc/hwloc-calc.1in | 443 + .../hwloc-2.7.1/utils/hwloc/hwloc-calc.c | 735 ++ .../hwloc-2.7.1/utils/hwloc/hwloc-calc.h | 795 ++ .../utils/hwloc/hwloc-compress-dir.1in | 91 + .../utils/hwloc/hwloc-compress-dir.in | 171 + .../hwloc-2.7.1/utils/hwloc/hwloc-diff.1in | 129 + .../hwloc-2.7.1/utils/hwloc/hwloc-diff.c | 176 + .../hwloc-2.7.1/utils/hwloc/hwloc-distrib.1in | 196 + .../hwloc-2.7.1/utils/hwloc/hwloc-distrib.c | 302 + .../utils/hwloc/hwloc-dump-hwdata-knl.c | 533 ++ .../utils/hwloc/hwloc-dump-hwdata.1in | 75 + .../utils/hwloc/hwloc-dump-hwdata.c | 96 + .../utils/hwloc/hwloc-gather-cpuid.1in | 110 + .../utils/hwloc/hwloc-gather-cpuid.c | 613 ++ .../utils/hwloc/hwloc-gather-topology.1in | 159 + .../utils/hwloc/hwloc-gather-topology.in | 350 + .../hwloc-2.7.1/utils/hwloc/hwloc-info.1in | 275 + .../hwloc-2.7.1/utils/hwloc/hwloc-info.c | 888 ++ .../hwloc-2.7.1/utils/hwloc/hwloc-patch.1in | 123 + .../hwloc-2.7.1/utils/hwloc/hwloc-patch.c | 183 + .../hwloc-2.7.1/utils/hwloc/hwloc-ps.1in | 216 + 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.c | 526 ++ 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc.7in | 359 + 3rd-party/hwloc-2.7.1/utils/hwloc/misc.h | 912 +++ .../hwloc/test-build-custom-topology.output | 76 + .../hwloc/test-build-custom-topology.sh.in | 81 + .../utils/hwloc/test-fake-plugin.sh.in | 53 + .../utils/hwloc/test-hwloc-annotate.input | 106 + .../utils/hwloc/test-hwloc-annotate.output | 181 + .../utils/hwloc/test-hwloc-annotate.output2 | 252 + .../utils/hwloc/test-hwloc-annotate.sh.in | 92 + .../utils/hwloc/test-hwloc-calc.output | 203 + .../utils/hwloc/test-hwloc-calc.sh.in | 262 + .../test-hwloc-compress-dir.input.tar.gz | Bin 0 -> 38216 bytes .../test-hwloc-compress-dir.output.tar.gz | Bin 0 -> 21394 bytes .../utils/hwloc/test-hwloc-compress-dir.sh.in | 58 + .../utils/hwloc/test-hwloc-diffpatch.input1 | 166 + .../utils/hwloc/test-hwloc-diffpatch.input2 | 166 + .../utils/hwloc/test-hwloc-diffpatch.sh.in | 62 + .../utils/hwloc/test-hwloc-distrib.output | 143 + .../utils/hwloc/test-hwloc-distrib.sh.in | 91 + .../hwloc/test-hwloc-dump-hwdata/Makefile.am | 17 + .../knl-snc4h50.tar.bz2 | Bin 0 -> 664 bytes .../test-hwloc-dump-hwdata.sh.in | 38 + .../utils/hwloc/test-hwloc-info.output | 522 ++ .../utils/hwloc/test-hwloc-info.sh.in | 120 + .../utils/hwloc/test-parsing-flags.sh.in | 24 + .../hwloc-2.7.1/utils/lstopo/Makefile.am | 118 + .../hwloc-2.7.1/utils/lstopo/lstopo-android.c | 104 + .../hwloc-2.7.1/utils/lstopo/lstopo-ascii.c | 575 ++ .../hwloc-2.7.1/utils/lstopo/lstopo-cairo.c | 932 +++ .../hwloc-2.7.1/utils/lstopo/lstopo-draw.c | 1910 +++++ .../hwloc-2.7.1/utils/lstopo/lstopo-fig.c | 175 + .../utils/lstopo/lstopo-no-graphics.1in | 857 ++ .../hwloc-2.7.1/utils/lstopo/lstopo-shmem.c | 185 + .../hwloc-2.7.1/utils/lstopo/lstopo-svg.c | 158 + .../hwloc-2.7.1/utils/lstopo/lstopo-text.c | 605 ++ .../hwloc-2.7.1/utils/lstopo/lstopo-tikz.c | 194 + .../hwloc-2.7.1/utils/lstopo/lstopo-windows.c | 575 ++ .../hwloc-2.7.1/utils/lstopo/lstopo-xml.c | 37 + 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo.c | 1754 ++++ .../hwloc-2.7.1/utils/lstopo/lstopo.desktop | 11 + 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo.h | 373 + .../utils/lstopo/test-lstopo-shmem.sh.in | 60 + .../utils/lstopo/test-lstopo.output | 227 + .../utils/lstopo/test-lstopo.sh.in | 132 + .../hwloc-2.7.1/utils/netloc/draw/Makefile.am | 29 + .../utils/netloc/draw/netloc_draw.html | 72 + .../utils/netloc/draw/netloc_draw.js | 1049 +++ .../utils/netloc/draw/netloc_draw_to_json.c | 628 ++ .../utils/netloc/draw/visdist/vis.min.css | 1 + .../utils/netloc/draw/visdist/vis.min.js | 47 + .../utils/netloc/infiniband/Makefile.am | 30 + .../utils/netloc/infiniband/README | 10 + .../infiniband/netloc_ib_extract_dats.c | 1120 +++ .../netloc/infiniband/netloc_ib_gather_raw.in | 477 ++ .../hwloc-2.7.1/utils/netloc/mpi/Makefile.am | 38 + .../utils/netloc/mpi/netloc_mpi_find_hosts.c | 224 + .../utils/netloc/mpi/netloc_mpi_rank_file.c | 60 + .../utils/netloc/mpi/netloc_rank_order.c | 61 + .../utils/netloc/scotch/Makefile.am | 24 + .../netloc/scotch/netlocscotch_get_arch.c | 62 + autogen.pl | 8 +- config/opal_config_hwloc.m4 | 1 - 1425 files changed, 205650 insertions(+), 598 deletions(-) delete mode 100644 3rd-party/hwloc-2.7.1.tar.gz create mode 100644 3rd-party/hwloc-2.7.1/COPYING create mode 100644 3rd-party/hwloc-2.7.1/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/NEWS create mode 100644 3rd-party/hwloc-2.7.1/README create mode 100644 3rd-party/hwloc-2.7.1/VERSION create mode 100644 3rd-party/hwloc-2.7.1/config/distscript.sh create mode 100644 3rd-party/hwloc-2.7.1/config/hwloc.m4 create mode 100644 3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4 create mode 100644 3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4 create mode 100644 3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4 create mode 100644 3rd-party/hwloc-2.7.1/config/hwloc_components.m4 create mode 100644 3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh create mode 100644 3rd-party/hwloc-2.7.1/config/hwloc_internal.m4 create mode 100644 3rd-party/hwloc-2.7.1/config/hwloc_pkg.m4 create mode 100644 3rd-party/hwloc-2.7.1/config/libtool-big-sur-fixup.patch create mode 100644 3rd-party/hwloc-2.7.1/config/netloc.m4 create mode 100644 3rd-party/hwloc-2.7.1/config/test-driver create mode 100644 3rd-party/hwloc-2.7.1/configure.ac create mode 100644 3rd-party/hwloc-2.7.1/contrib/completion/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/contrib/completion/bash/hwloc create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/README create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/index.html create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/main.css create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/script.js create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/style.css create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/client.js create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/package.json create mode 100644 3rd-party/hwloc-2.7.1/contrib/hwloc-valgrind.supp create mode 100644 3rd-party/hwloc-2.7.1/contrib/misc/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/contrib/misc/dynamic_SVG_example.html create mode 100644 3rd-party/hwloc-2.7.1/contrib/misc/hwloc-export-sysfs create mode 100644 3rd-party/hwloc-2.7.1/contrib/misc/hwloc-tweak-osindex.c create mode 100644 3rd-party/hwloc-2.7.1/contrib/systemd/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/contrib/systemd/hwloc-dump-hwdata.service.in create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows-cmake/CMakeLists.txt create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows-cmake/README create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows-cmake/check-versions.sh create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows-cmake/private_config.h.in create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows-cmake/static-components.h.in create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/README create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/app.manifest create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/check-versions.sh create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-annotate.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-annotate.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-bind.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-bind.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-calc.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-calc.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-diff.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-diff.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-distrib.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-distrib.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-gather-cpuid.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-gather-cpuid.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-info.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-info.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-patch.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc-patch.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc.sln create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/hwloc_config.h create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/libhwloc.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/libhwloc.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/lstopo-no-graphics.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/lstopo-no-graphics.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/lstopo-win.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/lstopo-win.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/lstopo.vcxproj create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/lstopo.vcxproj.filters create mode 100644 3rd-party/hwloc-2.7.1/contrib/windows/private_config.h create mode 100644 3rd-party/hwloc-2.7.1/doc/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/doc/README.sed create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-config.cfg.in create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00125_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00128_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00131_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00134_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00137_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00140_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00143_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00146_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00149_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00152_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00155_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00158_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00161_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00164_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00167_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00170_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00173_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00176_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00179_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00182_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00185_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00188_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00191_source.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00194.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00195.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00196.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00197.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00198.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00199.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00200.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00201.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00202.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00203.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00204.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00205.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00206.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00207.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00208.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00209.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00210.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00211.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00212.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00213.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00214.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00215.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00216.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00217.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00218.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00219.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00220.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00221.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00222.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00223.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00224.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00225.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00226.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00227.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00228.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00229.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00230.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00231.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00232.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00233.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00234.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00235.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00236.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00237.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00238.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00239.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00240.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00241.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00242.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00243.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00244.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00245.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00246.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00247.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00248.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00249.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00253.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00257.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00261.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00265.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00269.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00273.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00277.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00281.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00297.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00301.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00305.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00309.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00313.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00317.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00321.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00325.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00329.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00333.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00337.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00349.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00353.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00357.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00361.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00365.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00369.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00373.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00377.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00381.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00385.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00389.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00393.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00394.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00395.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00396.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00397.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00398.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00399.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00400.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00401.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00402.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00403.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00404.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00405.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00406.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00407.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00408.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00409.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00410.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00411.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00412.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/annotated.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/bc_s.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/bdwn.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/classes.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/closed.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/devel09-pci.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/diagram.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dir_5cb306d949c7931a3b6c77517393dd34.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doc.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doxygen.css create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doxygen.svg create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dudley.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dynsections.js create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/emmett.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/folderclosed.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/folderopen.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/functions.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/functions_vars.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/hagrid.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/index.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/jquery.js create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/menu.js create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/menudata.js create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/modules.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/nav_f.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/nav_g.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/nav_h.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/netloc_design.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/netloc_draw.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/open.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/pages.html create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-full-with-smt.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-with-smt.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-without-smt.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/splitbar.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/sync_off.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/sync_on.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tab_a.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tab_b.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tab_h.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tab_s.png create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tabs.css create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/hwloc-a4.pdf create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/hwloc-letter.pdf create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/hwloc.tag create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_ALLOW_FLAG_ALL.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_ALLOW_FLAG_CUSTOM.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_API_VERSION.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_COMPONENT_ABI.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_COMPONENT_TYPE_DISC.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_COMPONENT_TYPE_XML.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_CPUBIND_NOMEMBIND.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_CPUBIND_PROCESS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_CPUBIND_STRICT.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_CPUBIND_THREAD.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_PHASE_ANNOTATE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_PHASE_CPU.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_PHASE_GLOBAL.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_PHASE_IO.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_PHASE_MEMORY.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_PHASE_MISC.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_PHASE_PCI.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_PHASE_TWEAK.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_ADD_FLAG_GROUP.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_KIND_FROM_OS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_KIND_FROM_USER.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_KIND_MEANS_LATENCY.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_TRANSFORM_LINKS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_DISTRIB_FLAG_REVERSE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_LOCAL_NUMANODE_FLAG_ALL.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_LOCATION_TYPE_CPUSET.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_LOCATION_TYPE_OBJECT.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMATTR_FLAG_HIGHER_FIRST.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMATTR_FLAG_LOWER_FIRST.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMATTR_FLAG_NEED_INITIATOR.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMATTR_ID_BANDWIDTH.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMATTR_ID_CAPACITY.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMATTR_ID_LATENCY.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMATTR_ID_LOCALITY.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_BIND.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_BYNODESET.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_DEFAULT.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_FIRSTTOUCH.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_INTERLEAVE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_MIGRATE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_MIXED.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_NEXTTOUCH.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_NOCPUBIND.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_PROCESS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_STRICT.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_MEMBIND_THREAD.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_BRIDGE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_BRIDGE_HOST.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_BRIDGE_PCI.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_CACHE_DATA.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_CACHE_INSTRUCTION.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_CACHE_UNIFIED.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_CORE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_DIE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_GROUP.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_L1CACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_L1ICACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_L2CACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_L2ICACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_L3CACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_L3ICACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_L4CACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_L5CACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_MACHINE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_MEMCACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_MISC.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_NUMANODE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_OSDEV_BLOCK.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_OSDEV_COPROC.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_OSDEV_DMA.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_OSDEV_GPU.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_OSDEV_NETWORK.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_OSDEV_OPENFABRICS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_OS_DEVICE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_PACKAGE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_PCI_DEVICE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_OBJ_PU.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_RESTRICT_FLAG_ADAPT_IO.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_RESTRICT_FLAG_ADAPT_MISC.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_RESTRICT_FLAG_BYNODESET.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_RESTRICT_FLAG_REMOVE_CPULESS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_IGNORE_MEMORY.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_DEPTH_BRIDGE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_DEPTH_MEMCACHE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_DEPTH_MISC.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_DEPTH_MULTIPLE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_DEPTH_NUMANODE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_DEPTH_OS_DEVICE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_DEPTH_PCI_DEVICE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_DEPTH_UNKNOWN.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_FILTER_KEEP_ALL.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_FILTER_KEEP_IMPORTANT.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_FILTER_KEEP_NONE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_FILTER_KEEP_STRUCTURE.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/HWLOC_TYPE_UNORDERED.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc__insert_object_by_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_alloc.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_alloc_membind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_alloc_membind_policy.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_alloc_setup_object.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_allow_flags_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_backend.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_backend_alloc.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_backend_distances_add_commit.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_backend_distances_add_create.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_backend_distances_add_handle_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_backend_distances_add_values.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_backend_enable.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_allbut.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_alloc.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_alloc_full.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_and.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_andnot.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_asprintf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_clr.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_clr_range.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_compare.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_compare_first.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_copy.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_dup.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_fill.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_first.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_first_unset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_foreach_begin.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_foreach_end.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_free.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_from_ith_ulong.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_from_ulong.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_from_ulongs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_intersects.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_isequal.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_isfull.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_isincluded.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_isset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_iszero.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_last.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_last_unset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_list_asprintf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_list_snprintf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_list_sscanf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_next.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_next_unset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_not.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_nr_ulongs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_only.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_or.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_set.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_set_ith_ulong.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_set_range.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_singlify.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_singlify_per_core.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_snprintf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_sscanf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_taskset_asprintf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_taskset_snprintf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_taskset_sscanf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_to_ith_ulong.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_to_ulong.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_to_ulongs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_weight.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_xor.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bitmap_zero.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_bridge_covers_pcibus.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cl_device_topology_amd.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_compare_types.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_component.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_component_type_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_component_type_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_const_bitmap_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_const_cpuset_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_const_nodeset_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpubind_flags_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpukinds_get_by_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpukinds_get_info.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpukinds_get_nr.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpukinds_register.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_from_glibc_sched_affinity.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_from_linux_libnuma_bitmask.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_from_linux_libnuma_ulongs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_from_nodeset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_to_glibc_sched_affinity.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_to_linux_libnuma_bitmask.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_to_linux_libnuma_ulongs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cpuset_to_nodeset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cuda_get_device_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cuda_get_device_osdev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cuda_get_device_osdev_by_index.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cuda_get_device_pci_ids.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cuda_get_device_pcidev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cudart_get_device_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cudart_get_device_osdev_by_index.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cudart_get_device_pci_ids.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_cudart_get_device_pcidev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_disc_component.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_disc_phase_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_disc_phase_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_disc_status.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_disc_status_flag_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_add_commit.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_add_create.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_add_flag_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_add_handle_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_add_values.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_get.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_get_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_get_by_name.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_get_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_get_name.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_kind_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_obj_index.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_obj_pair_values.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_release.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_release_remove.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_remove.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_remove_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_remove_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_transform.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distances_transform_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distrib.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_distrib_flags_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_export_obj_userdata.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_export_obj_userdata_base64.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_filter_check_keep_object.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_filter_check_keep_object_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_filter_check_osdev_subtype_important.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_filter_check_pcidev_subtype_important.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_free.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_free_xmlbuffer.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_ancestor_obj_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_ancestor_obj_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_api_version.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_area_membind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_area_memlocation.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_cache_covering_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_cache_type_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_child_covering_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_closest_objs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_common_ancestor_obj.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_cpubind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_depth_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_first_largest_obj_inside_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_largest_objs_inside_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_last_cpu_location.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_local_numanode_objs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_membind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_memory_parents_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_nbobjs_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_nbobjs_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_nbobjs_inside_cpuset_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_nbobjs_inside_cpuset_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_bridge.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_child.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_obj_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_obj_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_obj_covering_cpuset_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_obj_covering_cpuset_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_obj_inside_cpuset_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_obj_inside_cpuset_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_osdev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_next_pcidev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_non_io_ancestor_obj.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_numanode_obj_by_os_index.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_below_array_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_below_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_covering_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_index_inside_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_inside_cpuset_by_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_inside_cpuset_by_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_obj_with_same_locality.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_pcidev_by_busid.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_pcidev_by_busidstring.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_proc_cpubind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_proc_last_cpu_location.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_proc_membind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_pu_obj_by_os_index.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_root_obj.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_shared_cache_covering_obj.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_thread_cpubind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_type_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_type_depth_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_type_or_above_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_get_type_or_below_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_gl_get_display_by_osdev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_gl_get_display_osdev_by_name.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_gl_get_display_osdev_by_port_device.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_hide_errors.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_ibv_get_device_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_ibv_get_device_osdev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_ibv_get_device_osdev_by_name.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_info_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_insert_object_by_parent.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_intro.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_levelzero_get_device_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_levelzero_get_device_osdev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_linux_get_tid_cpubind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_linux_get_tid_last_cpu_location.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_linux_read_path_as_cpumask.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_linux_set_tid_cpubind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_local_numanode_flag_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_location.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_location_hwloc_location_u.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_location_type_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_flag_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_get_best_initiator.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_get_best_target.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_get_by_name.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_get_flags.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_get_initiators.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_get_name.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_get_targets.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_get_value.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_id_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_id_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_register.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_memattr_set_value.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_membind_flags_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_membind_policy_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_nodeset_from_linux_libnuma_bitmask.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_nodeset_from_linux_libnuma_ulongs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_nodeset_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_nodeset_to_linux_libnuma_bitmask.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_nodeset_to_linux_libnuma_ulongs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_nvml_get_device_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_nvml_get_device_osdev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_nvml_get_device_osdev_by_index.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_add_children_sets.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_add_info.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_add_other_obj_sets.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_snprintf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_u.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_u_hwloc_bridge_attr_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_u_hwloc_cache_attr_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_u_hwloc_group_attr_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_u_hwloc_numanode_attr_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_u_hwloc_numanode_attr_s_hwloc_memory_page_type_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_u_hwloc_osdev_attr_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_attr_u_hwloc_pcidev_attr_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_bridge_type_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_bridge_type_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_cache_type_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_cache_type_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_get_info_by_name.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_is_in_subtree.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_osdev_type_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_osdev_type_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_is_cache.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_is_dcache.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_is_icache.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_is_io.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_is_memory.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_is_normal.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_snprintf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_string.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_obj_type_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_opencl_get_device_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_opencl_get_device_osdev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_opencl_get_device_osdev_by_index.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_opencl_get_device_pci_busid.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_pci_find_by_busid.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_pci_find_parent_by_busid.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_pcidisc_check_bridge_type.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_pcidisc_find_bridge_buses.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_pcidisc_find_cap.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_pcidisc_find_linkspeed.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_pcidisc_tree_attach.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_pcidisc_tree_insert_by_busid.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_plugin_check_namespace.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_restrict_flags_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_rsmi_get_device_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_rsmi_get_device_osdev.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_rsmi_get_device_osdev_by_index.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_set_area_membind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_set_cpubind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_set_membind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_set_proc_cpubind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_set_proc_membind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_set_thread_cpubind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_shmem_topology_adopt.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_shmem_topology_get_length.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_shmem_topology_write.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_abi_check.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_alloc_group_object.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_allow.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_check.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_components_flag_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_cpubind_support.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_destroy.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_apply.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_apply_flags_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_build.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_destroy.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_export_xml.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_export_xmlbuffer.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_load_xml.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_load_xmlbuffer.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_obj_attr_type_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_obj_attr_type_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_obj_attr_u.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_obj_attr_u_hwloc_topology_diff_obj_attr_generic_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_obj_attr_u_hwloc_topology_diff_obj_attr_string_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_obj_attr_u_hwloc_topology_diff_obj_attr_uint64_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_type_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_type_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_u.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_u_hwloc_topology_diff_generic_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_u_hwloc_topology_diff_obj_attr_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_diff_u_hwloc_topology_diff_too_complex_s.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_discovery_support.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_dup.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_export_synthetic.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_export_synthetic_flags_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_export_xml.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_export_xml_flags_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_export_xmlbuffer.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_flags_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_allowed_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_allowed_nodeset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_complete_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_complete_nodeset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_flags.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_support.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_topology_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_topology_nodeset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_type_filter.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_get_userdata.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_init.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_insert_group_object.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_insert_misc_object.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_is_thissystem.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_load.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_membind_support.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_misc_support.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_reconnect.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_refresh.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_restrict.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_all_types_filter.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_cache_types_filter.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_components.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_flags.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_icache_types_filter.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_io_types_filter.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_pid.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_synthetic.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_type_filter.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_userdata.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_userdata_export_callback.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_userdata_import_callback.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_xml.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_set_xmlbuffer.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_support.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_topology_t.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_type_filter_e.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_type_sscanf.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_type_sscanf_as_depth.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_windows_get_nr_processor_groups.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwloc_windows_get_processor_group_cpuset.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_advanced_io.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_api_version.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_bitmap.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_components_core_funcs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_components_filtering.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_components_pcidisc.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_components_pcifind.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_configuration.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_cpubinding.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_cpukinds.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_creation.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_cuda.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_cudart.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_diff.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_disc_backends.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_disc_components.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_distances_add.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_distances_consult.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_distances_get.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_distances_remove.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_generic_components.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_gl.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_glibc_sched.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_ancestors.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_distribute.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_find_cache.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_find_covering.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_find_inside.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_find_misc.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_nodeset_convert.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_topology_sets.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_helper_types.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_info_attr.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_levels.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_levelzero.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_linux.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_linux_libnuma_bitmask.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_linux_libnuma_ulongs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_memattrs.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_memattrs_manage.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_membinding.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_nvml.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_object_sets.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_object_strings.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_object_types.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_objects.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_opencl.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_openfabrics.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_rsmi.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_setsource.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_shmem.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_syntheticexport.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_tinker.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_windows.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen-doc/man/man3/hwlocality_xmlexport.3 create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen.cfg create mode 100644 3rd-party/hwloc-2.7.1/doc/doxygen.css create mode 100644 3rd-party/hwloc-2.7.1/doc/examples/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/doc/examples/cpuset+bitmap+cpubind.c create mode 100644 3rd-party/hwloc-2.7.1/doc/examples/get-knl-modes.c create mode 100644 3rd-party/hwloc-2.7.1/doc/examples/gpu.c create mode 100644 3rd-party/hwloc-2.7.1/doc/examples/hwloc-hello-cpp.cpp create mode 100644 3rd-party/hwloc-2.7.1/doc/examples/hwloc-hello.c create mode 100644 3rd-party/hwloc-2.7.1/doc/examples/nodeset+membind+policy.c create mode 100644 3rd-party/hwloc-2.7.1/doc/examples/sharedcaches.c create mode 100644 3rd-party/hwloc-2.7.1/doc/hwloc.doxy create mode 100644 3rd-party/hwloc-2.7.1/doc/images/devel09-pci.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/diagram.eps create mode 100644 3rd-party/hwloc-2.7.1/doc/images/diagram.fig create mode 100644 3rd-party/hwloc-2.7.1/doc/images/diagram.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/dudley.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/emmett.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/hagrid.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/netloc_design.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/netloc_draw.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/ppc64-full-with-smt.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/ppc64-with-smt.png create mode 100644 3rd-party/hwloc-2.7.1/doc/images/ppc64-without-smt.png create mode 100644 3rd-party/hwloc-2.7.1/doc/main.doxy create mode 100644 3rd-party/hwloc-2.7.1/doc/netloc.doxy create mode 100644 3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-css.inc create mode 100644 3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-footer.inc create mode 100644 3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-header.inc create mode 100644 3rd-party/hwloc-2.7.1/doc/www.open-mpi.org.cfg create mode 100644 3rd-party/hwloc-2.7.1/hwloc.pc.in create mode 100644 3rd-party/hwloc-2.7.1/hwloc/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/hwloc/base64.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/bind.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/bitmap.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/components.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/cpukinds.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/diff.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/distances.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/hwloc.dtd create mode 100644 3rd-party/hwloc-2.7.1/hwloc/hwloc2-diff.dtd create mode 100644 3rd-party/hwloc-2.7.1/hwloc/hwloc2.dtd create mode 100644 3rd-party/hwloc-2.7.1/hwloc/memattrs.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/misc.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/pci-common.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/shmem.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-aix.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-bgq.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-cuda.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-darwin.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-fake.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-freebsd.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-gl.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-hardwired.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-hpux.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-levelzero.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-linux.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-netbsd.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-noos.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-nvml.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-opencl.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-pci.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-rsmi.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-solaris-chiptype.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-solaris.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-synthetic.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-windows.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-x86.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-xml-libxml.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-xml-nolibxml.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology-xml.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/topology.c create mode 100644 3rd-party/hwloc-2.7.1/hwloc/traversal.c create mode 100644 3rd-party/hwloc-2.7.1/include/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/autogen/config.h.in create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/bitmap.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/cpukinds.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/cuda.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/cudart.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/deprecated.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/diff.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/distances.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/export.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/gl.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/glibc-sched.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/helper.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/inlines.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/levelzero.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/linux-libnuma.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/linux.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/memattrs.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/nvml.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/opencl.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/openfabrics-verbs.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/plugins.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/rename.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/rsmi.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/shmem.h create mode 100644 3rd-party/hwloc-2.7.1/include/hwloc/windows.h create mode 100644 3rd-party/hwloc-2.7.1/include/netloc.h create mode 100644 3rd-party/hwloc-2.7.1/include/netloc/utarray.h create mode 100644 3rd-party/hwloc-2.7.1/include/netloc/uthash.h create mode 100644 3rd-party/hwloc-2.7.1/include/netlocscotch.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/autogen/config.h.in create mode 100644 3rd-party/hwloc-2.7.1/include/private/components.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/cpuid-x86.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/debug.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/internal-components.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/misc.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/netloc.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/private.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/solaris-chiptype.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/windows.h create mode 100644 3rd-party/hwloc-2.7.1/include/private/xml.h create mode 100644 3rd-party/hwloc-2.7.1/netloc.pc.in create mode 100644 3rd-party/hwloc-2.7.1/netloc/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/netloc/architecture.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/edge.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/hwloc.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/mpicomm.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/node.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/path.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/physical_link.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/scotch.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/support.c create mode 100644 3rd-party/hwloc-2.7.1/netloc/topology.c create mode 100644 3rd-party/hwloc-2.7.1/netlocscotch.pc.in create mode 100644 3rd-party/hwloc-2.7.1/tests/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/CMakeLists.txt create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/cpukinds.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/cpuset_nodeset.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/cuda.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/cudart.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/embedded/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/embedded/README.txt create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/embedded/autogen.sh create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/embedded/config/README.txt create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/embedded/configure.ac create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/embedded/do_test.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/embedded/main.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/embedded/run-embedded-tests.sh create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/gl.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/glibc-sched.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_api_version.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_backends.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bind.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_compare_inclusion.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_first_last_weight.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_singlify.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_string.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_distances.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_area_memlocation.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_cache_covering_cpuset.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_closest_objs.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_largest_objs_inside_cpuset.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_last_cpu_location.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_next_obj_covering_cpuset.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_below_array_by_type.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_covering_cpuset.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_inside_cpuset.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_with_same_locality.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_shared_cache_covering_obj.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_groups.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_insert_misc.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_iodevs.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_is_thissystem.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_list_components.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_obj_infos.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_object_userdata.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_pci_backend.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_synthetic.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_abi.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_allow.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_diff.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_dup.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_restrict.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_type_depth.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_type_sscanf.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/levelzero.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux-libnuma.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/128arm-2pa2n8cluster4co.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/128arm-2pa2n8cluster4co.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/128ia64-17n4s2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/128ia64-17n4s2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16ia64-8n2s.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/16ia64-8n2s.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/1alpha.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/1alpha.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/20s390-2g6s4c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/20s390-2g6s4c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ia64-64n2s2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ia64-64n2s2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ppc-8n8s4t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ppc-8n8s4t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2amd64-2n.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2amd64-2n.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2arm-2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2arm-2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.xml.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.xml.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.xml.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.xml.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.xml.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.xml.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits-disabled.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits-disabled.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2ps3-2t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2ps3-2t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2s390-2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/2s390-2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32intel64-2p8co2t+8ve.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/32intel64-2p8co2t+8ve.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/48amd64-4d2n6c-sparse.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/48amd64-4d2n6c-sparse.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/4fake-4gr1nu1pu.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/4fake-4gr1nu1pu.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/4ia64-4s.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/4ia64-4s.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64amd64-4s2n4ca2co.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64amd64-4s2n4ca2co.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64fake-4n2s2ca2c2t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64fake-4n2s2ca2c2t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-A2A-cache.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-A2A-cache.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8amd64-4n2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8amd64-4n2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c-buggynuma.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s4c-heterogeneous.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s4c-heterogeneous.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-4c2t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-4c2t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8ia64-2n2s2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8ia64-2n2s2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8ia64-2s2c2t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8ia64-2s2c2t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8ia64-4s2c.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/8ia64-4s2c.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/96em64t-4n4d3ca2co.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/96em64t-4n4d3ca2co.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/README create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test-topology.sh.in create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.fsroot.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.synthetic create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakecpuid1f-64intel64-2p4d2n2c2t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakecpuid1f-64intel64-2p4d2n2c2t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakeheterocpunuma.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakeheterocpunuma.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakeheterocpunuma.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakeheterocpunuma.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakememinitiators-1np2c+1npp+gi.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakememinitiators-1np2c+1npp+gi.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/gather/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/gather/test-gather-topology.sh.in create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/offline-cpu0-node0.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/offline-cpu0-node0.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/linux/test-topology.sh.in create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/memattrs.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/nvml.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/opencl.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/openfabrics-verbs.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/procinfo.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/processor.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/rset.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/systemcfg.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/thread.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/bgq/spi/include/kernel/location.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/bgq/spi/include/kernel/process.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/cuda/cuda.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/cuda/cuda_runtime_api.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/CoreFoundation/CoreFoundation.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/IOKit/IOKitLib.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/sys/sysctl.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/pthread.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/pthread_np.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/cpuset.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/domainset.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/param.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/sysctl.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/thr.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/user.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/NVCtrl/NVCtrl.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/NVCtrl/NVCtrlLib.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/X11/Xlib.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/hpux/sys/mpctl.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/levelzero/level_zero/ze_api.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/levelzero/level_zero/zes_api.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/pthread.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/sched.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/sys/sysctl.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/nvml/nvml.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/opencl/CL/cl.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/rsmi/rocm_smi/rocm_smi.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/kstat.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/picl.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/lgrp_user.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/processor.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/procset.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/systeminfo.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/windows/windows.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/windows/windowsx.h create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/rename/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/rename/main.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/rsmi.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/shmem.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/windows_processor_groups.c create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/wrapper.sh.in create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/test-topology.sh.in create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Bulldozer-4xOpteron-6272.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Bulldozer-4xOpteron-6272.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Piledriver-4xOpteron-6348.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Piledriver-4xOpteron-6348.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-17h-Zen-2xEpyc-7451.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-17h-Zen-2xEpyc-7451.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K10-Istanbul-8xOpteron-8439SE.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K10-Istanbul-8xOpteron-8439SE.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K10-MagnyCours-2xOpteron-6164HE.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K10-MagnyCours-2xOpteron-6164HE.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SantaRosa-2xOpteron-2218.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SantaRosa-2xOpteron-2218.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SledgeHammer-2xOpteron-250.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SledgeHammer-2xOpteron-250.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Hygon-Dhyana-32cores.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Hygon-Dhyana-32cores.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Broadwell-2xXeon-E5-2650Lv4.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Broadwell-2xXeon-E5-2650Lv4.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1A-1p2co2t.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1A-1p2co2t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1A-1p2co2t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1F-Qemu-2p3d3c2t.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1F-Qemu-2p3d3c2t.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CascadeLake-2xXeon6230.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CascadeLake-2xXeon6230.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Core-2xXeon-E5345.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Core-2xXeon-E5345.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Haswell-2xXeon-E5-2680v3.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Haswell-2xXeon-E5-2680v3.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-IvyBridge-12xXeon-E5-4620v2.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-IvyBridge-12xXeon-E5-4620v2.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsCorner-XeonPhi-SE10P.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsCorner-XeonPhi-SE10P.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsLanding-XeonPhi-7210.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsLanding-XeonPhi-7210.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Nehalem-2xXeon-X5550.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Nehalem-2xXeon-X5550.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Penryn-4xXeon-X7460.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Penryn-4xXeon-X7460.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-SandyBridge-2xXeon-E5-2650.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-SandyBridge-2xXeon-E5-2650.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Skylake-2xXeon6140.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Skylake-2xXeon6140.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Westmere-2xXeon-X5650.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Westmere-2xXeon-X5650.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-CentaurHauls-ZXD-4600.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-CentaurHauls-ZXD-4600.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/x86/test-topology.sh.in create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1tov2.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1tov2.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-8n2c-cpusets.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t-offlines.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/192em64t-12gr2n8c2t.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/192em64t-24n8c2t.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/24em64t-2n6c2t-pci.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1tov2.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1tov2.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1tov2.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1tov2.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-wholeio.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-wholeio.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.env create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.output create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v1tov2.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v1tov2.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1tov2.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1tov2.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1tov2.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1tov2.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-4n2t-memattrs.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.options create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.source create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/96em64t-4n4d3ca2co-pci.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/fakecpukinds.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/fakeheterodistances.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/power8gpudistances.xml create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xml/test-topology.sh.in create mode 100644 3rd-party/hwloc-2.7.1/tests/hwloc/xmlbuffer.c create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/data/avakas.txz create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/data/plafrim.txz create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/data/plafrim2.txz create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/data/scotch.txz create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/data/tests_draw.txt create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/data/tests_extract.txt create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/data/tests_mpiscotch.txt create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/data/tests_scotch.txt create mode 100644 3rd-party/hwloc-2.7.1/tests/netloc/tests.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.h create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-annotate.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-annotate.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-bind.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-bind.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.h create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-compress-dir.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-compress-dir.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-diff.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-diff.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-distrib.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-distrib.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata-knl.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-cpuid.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-cpuid.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-topology.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-topology.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-info.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-info.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-patch.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-patch.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.c create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/hwloc.7in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/misc.h create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-build-custom-topology.output create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-build-custom-topology.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-fake-plugin.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.input create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.output create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.output2 create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-calc.output create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-calc.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.input.tar.gz create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.output.tar.gz create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.input1 create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.input2 create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-distrib.output create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-distrib.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/knl-snc4h50.tar.bz2 create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/test-hwloc-dump-hwdata.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-info.output create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-info.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/hwloc/test-parsing-flags.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-android.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-ascii.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-cairo.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-draw.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-fig.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-no-graphics.1in create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-shmem.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-svg.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-text.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-tikz.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-windows.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-xml.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo.c create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo.desktop create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/lstopo.h create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo-shmem.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo.output create mode 100644 3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo.sh.in create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/draw/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw.html create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw.js create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw_to_json.c create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/draw/visdist/vis.min.css create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/draw/visdist/vis.min.js create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/infiniband/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/infiniband/README create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/infiniband/netloc_ib_extract_dats.c create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/infiniband/netloc_ib_gather_raw.in create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/mpi/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_mpi_find_hosts.c create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_mpi_rank_file.c create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_rank_order.c create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/scotch/Makefile.am create mode 100644 3rd-party/hwloc-2.7.1/utils/netloc/scotch/netlocscotch_get_arch.c diff --git a/.gitignore b/.gitignore index 24b4333af5..dbf40a5ae6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,593 +1,591 @@ -.libs -.deps -.libs -.dirstamp -.DS_Store -.cdt* -.project -.gdb* -.idea - -*.la -*.lo -*.o -*.so -*.a -*.dwarf -*.dSYM -*.S -*.loT -*.orig -*.rej -*.bak -*.class -*.xcscheme -*.out -*.plist -*.orig -*.obj -*.mod -*.i90 -*.ii -*.ti -*.exe -*.log -*.trs -*.sapp -*~ -*\\# - -Makefile -Makefile.in - -# hwloc and pmix have been de-modularized, but still uses parts of the -# MCA system due to the amount of glue code that ended up in the -# framework base. Until that is cleaned up, do not ignore the -# hard-coded static-components.h file. -static-components.h -!opal/mca/hwloc/base/static-components.h -!opal/mca/pmix/base/static-components.h - -*\\# -config.cache -aclocal.m4 -autom4te.cache -config.log -config.status -configure -libtool -doxygen -bin -lib -cscope.* -etags -GRTAGS -GSYMS -GTAGS -GPATH -vc70.pdb -.hgrc -.hgignore -.hg -.hgignore_local -stamp-h? -AUTHORS - -ar-lib -ylwrap -config.lt -config.guess -config.sub -depcomp -compile -install-sh -ltmain.sh -missing -mkinstalldirs -libtool.m4 -lt~obsolete.m4 -ltdl.m4 -argz.m4 -ltargz.m4 -ltsugar.m4 -ltversion.m4 -ltoptions.m4 - -# Libevent and hwloc are included as a tarball. Ignore any expanded -# tarballs, since they are not included in git. Do not ignore the -# tarballs themselves, and those are artifacts we will store in git. -3rd-party/libevent-* -!3rd-party/libevent-*.tar.* -3rd-party/hwloc-* -!3rd-party/hwloc-*.tar.* -3rd-party/treematch/config.h - -3rd-party/romio341/adio/include/romioconf.h -3rd-party/romio341/adio/include/romioconf.h.in -3rd-party/romio341/include/mpio.h -3rd-party/romio341/localdefs -3rd-party/romio341/mpl/confdb/test-driver -3rd-party/romio341/mpl/include/config.h -3rd-party/romio341/mpl/include/config.h.in -3rd-party/romio341/mpl/include/mplconfig.h -3rd-party/romio341/mpl/include/mpl_timer.h -3rd-party/romio341/mpl/localdefs -3rd-party/romio341/test/runtests -3rd-party/romio341/test/fcoll_test.f -3rd-party/romio341/test/fmisc.f -3rd-party/romio341/test/fperf.f -3rd-party/romio341/test/large_file.c -3rd-party/romio341/test/misc.c -3rd-party/romio341/test/pfcoll_test.f -3rd-party/romio341/util/romioinstall - -config/project_list.m4 -config/autogen_found_items.m4 -config/opal_get_version.sh -config/test-driver -config/mca_no_configure_components.m4 -config/mca_m4_config_include.m4 -config/ext_no_configure_components.m4 -config/ext_m4_config_include.m4 -config/auto-extracted-pmix-configure-args.m4 -config/auto-extracted-prrte-configure-args.m4 -config/auto-generated-ompi-exclude.ini - -contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h -contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h.in -contrib/build-mca-comps-outside-of-tree/config -contrib/build-mca-comps-outside-of-tree/aclocal.m4 -contrib/dist/linux/compile_debian_mlnx_example -contrib/dist/mofed/compile_debian_mlnx_example -contrib/dist/mofed/debian/changelog -contrib/dist/mofed/debian/control -contrib/dist/mofed/debian/copyright -contrib/dist/mofed/debian/rules -contrib/platform/intel/bend/*orcm* -contrib/scaling/orte_no_op -contrib/scaling/mpi_no_op -contrib/scaling/mpi_barrier -contrib/scaling/mpi_memprobe - -examples/hello_c -examples/hello_cxx -examples/hello_mpifh -examples/hello_usempi -examples/hello_usempif08 -examples/ring_c -examples/ring_cxx -examples/ring_mpifh -examples/ring_usempi -examples/ring_usempif08 -examples/connectivity_c -examples/ring_oshmem -examples/hello_oshmem -examples/ring_oshmemfh -examples/hello_oshmemfh -examples/hello_oshmemcxx -examples/oshmem_circular_shift -examples/oshmem_max_reduction -examples/oshmem_shmalloc -examples/oshmem_strided_puts -examples/oshmem_symmetric_data -examples/spc_example - -ompi/debuggers/*.in -ompi/debuggers/dlopen_test -ompi/debuggers/predefined_gap_test -ompi/debuggers/predefined_pad_test - -ompi/include/mpi.h -ompi/include/mpif-config.h -ompi/include/mpif.h -ompi/include/mpif-c-constants-decl.h -ompi/include/mpif-c-constants.h -ompi/include/mpif-common.h -ompi/include/mpi-ext.h -ompi/include/mpif-ext.h -ompi/include/mpif-f08-types.h -ompi/include/mpif-handles.h -ompi/include/mpif-io-constants.h -ompi/include/mpif-constants.h -ompi/include/mpif-io-handles.h -ompi/include/mpif-sizeof.h -ompi/include/mpi_portable_platform.h -ompi/include/ompi/version.h -ompi/include/ompi/frameworks.h - -ompi/mca/coll/basic/coll-basic-version.h* -ompi/mca/coll/demo/config -ompi/mca/coll/demo/coll_demo_config.h* -ompi/mca/coll/demo/coll-demo-version.h* -ompi/mca/coll/ml/coll_ml_lex.c -ompi/mca/coll/self/coll-self-version.h* -ompi/mca/coll/sm/coll-sm-version.h* - -ompi/mca/osc/monitoring/osc_monitoring_template_gen.h - -ompi/mca/pml/v/autogen.vprotocols -ompi/mca/pml/v/mca_vprotocol_config_output - -ompi/mca/sharedfp/addproc/mca_sharedfp_addproc_control - -ompi/mca/topo/treematch/config.h - -ompi/mpi/c/profile/p*.c - -ompi/mpi/fortran/configure-fortran-output.h -ompi/mpi/fortran/mpiext/mpi-ext-module.F90 -ompi/mpi/fortran/mpiext/mpi-f08-ext-module.F90 -ompi/mpi/fortran/mpiext-use-mpi/mpi-ext-module.F90 -ompi/mpi/fortran/mpiext-use-mpi-f08/mpi-f08-ext-module.F90 - -ompi/mpi/fortran/mpif-h/sizeof_f.f90 -ompi/mpi/fortran/mpif-h/profile/p*.c -ompi/mpi/fortran/mpif-h/profile/psizeof_f.f90 - -ompi/mpi/fortran/use-mpi/mpi-types.F90 - -ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-constants.h -ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.h -ompi/mpi/fortran/use-mpi-f08/sizeof_f08.f90 -ompi/mpi/fortran/use-mpi-f08/sizeof_f08.h -ompi/mpi/fortran/use-mpi-f08/profile/psizeof_f08.f90 -ompi/mpi/fortran/use-mpi-f08/profile/*.F90 - -ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h -ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h -ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.f90 -ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.h -ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h - -ompi/mpi/fortran/use-mpi-tkr/fortran_kinds.sh -ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h -ompi/mpi/fortran/use-mpi-tkr/mpi_kinds.ompi_module -ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.f90 -ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.h - -ompi/mpi/java/java/mpi -ompi/mpi/java/java/*.jar -ompi/mpi/java/java/*.h -ompi/mpi/java/java/doc - -ompi/mpi/tool/profile/*.c - -ompi/mpiext/affinity/c/example - -ompi/mpiext/ftmpi/c/profile/pcomm_agree.c -ompi/mpiext/ftmpi/c/profile/pcomm_failure_ack.c -ompi/mpiext/ftmpi/c/profile/pcomm_failure_get_acked.c -ompi/mpiext/ftmpi/c/profile/pcomm_iagree.c -ompi/mpiext/ftmpi/c/profile/pcomm_is_revoked.c -ompi/mpiext/ftmpi/c/profile/pcomm_revoke.c -ompi/mpiext/ftmpi/c/profile/pcomm_shrink.c -ompi/mpiext/ftmpi/c/profile/pcomm_ack_failed.c -ompi/mpiext/ftmpi/c/profile/pcomm_get_failed.c -ompi/mpiext/ftmpi/c/profile/pcomm_ishrink.c - -ompi/mpiext/example/tests/progress_c -ompi/mpiext/example/tests/progress_mpifh -ompi/mpiext/example/tests/progress_usempi -ompi/mpiext/example/tests/progress_usempif08 - -ompi/mpiext/cuda/c/mpiext_cuda_c.h -ompi/mpiext/cuda/c/cuda_c.h -ompi/mpiext/rocm/c/mpiext_rocm_c.h - -ompi/mpiext/pcollreq/c/MPIX_*.3 -ompi/mpiext/pcollreq/c/profile/pallgather_init.c -ompi/mpiext/pcollreq/c/profile/pallgatherv_init.c -ompi/mpiext/pcollreq/c/profile/pallreduce_init.c -ompi/mpiext/pcollreq/c/profile/palltoall_init.c -ompi/mpiext/pcollreq/c/profile/palltoallv_init.c -ompi/mpiext/pcollreq/c/profile/palltoallw_init.c -ompi/mpiext/pcollreq/c/profile/pbarrier_init.c -ompi/mpiext/pcollreq/c/profile/pbcast_init.c -ompi/mpiext/pcollreq/c/profile/pexscan_init.c -ompi/mpiext/pcollreq/c/profile/pgather_init.c -ompi/mpiext/pcollreq/c/profile/pgatherv_init.c -ompi/mpiext/pcollreq/c/profile/pmpiext_pcollreq_c.h -ompi/mpiext/pcollreq/c/profile/pneighbor_allgather_init.c -ompi/mpiext/pcollreq/c/profile/pneighbor_allgatherv_init.c -ompi/mpiext/pcollreq/c/profile/pneighbor_alltoall_init.c -ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallv_init.c -ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallw_init.c -ompi/mpiext/pcollreq/c/profile/preduce_init.c -ompi/mpiext/pcollreq/c/profile/preduce_scatter_block_init.c -ompi/mpiext/pcollreq/c/profile/preduce_scatter_init.c -ompi/mpiext/pcollreq/c/profile/pscan_init.c -ompi/mpiext/pcollreq/c/profile/pscatter_init.c -ompi/mpiext/pcollreq/c/profile/pscatterv_init.c -ompi/mpiext/pcollreq/c/profile/ppcollreq_c.h - -ompi/mpiext/pcollreq/mpif-h/profile/pallgather_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pallgatherv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pallreduce_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/palltoall_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/palltoallv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/palltoallw_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pbarrier_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pbcast_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pexscan_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pgather_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pgatherv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgather_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgatherv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoall_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallw_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/preduce_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_block_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pscan_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pscatter_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pscatterv_init_f.c - -ompi/mpiext/shortfloat/c/mpiext_shortfloat_c.h -ompi/mpiext/shortfloat/mpif-h/mpiext_shortfloat_mpifh.h -ompi/mpiext/shortfloat/use-mpi-f08/mpiext_shortfloat_usempif08.h - -ompi/tools/mpisync/mpisync -ompi/tools/mpisync/mpirun_prof -ompi/tools/mpisync/ompi_timing_post -ompi/tools/mpirun/mpirun - -ompi/tools/ompi_info/ompi_info - -ompi/tools/wrappers/mpic++-wrapper-data.txt -ompi/tools/wrappers/mpicc-wrapper-data.txt -ompi/tools/wrappers/mpifort-wrapper-data.txt -ompi/tools/wrappers/ompi_wrapper_script -ompi/tools/wrappers/ompi.pc -ompi/tools/wrappers/ompi-c.pc -ompi/tools/wrappers/ompi-cxx.pc -ompi/tools/wrappers/ompi-fort.pc -ompi/tools/wrappers/mpijavac.pl -ompi/tools/wrappers/mpicxx-wrapper-data.txt -ompi/tools/wrappers/mpif77-wrapper-data.txt -ompi/tools/wrappers/mpif90-wrapper-data.txt - -opal/asm/atomic-asm.S -opal/asm/atomic-test -opal/asm/generated/atomic-*.s - -opal/include/opal_config.h -opal/include/opal_config.h.in -opal/include/opal/install_dirs.h -opal/include/opal/version.h -opal/include/opal/frameworks.h -opal/include/opal/sys/powerpc/atomic-32.s -opal/include/opal/sys/powerpc/atomic-64.s -opal/include/opal/sys/powerpc/atomic-32-64.s - -opal/mca/base/mca_base_parse_paramfile_lex.c - -opal/mca/btl/usnic/usnic_btl_run_tests - -opal/mca/event/libevent*/libevent/config.h.in -opal/mca/event/libevent*/libevent/config.h -opal/mca/event/libevent*/libevent/libevent.pc -opal/mca/event/libevent*/libevent/libevent_openssl.pc -opal/mca/event/libevent*/libevent/libevent_pthreads.pc -opal/mca/event/libevent*/libevent/include/event2/event-config.h - -opal/mca/installdirs/config/install_dirs.h - -opal/tools/wrappers/opalcc-wrapper-data.txt -opal/tools/wrappers/opalc++-wrapper-data.txt -opal/tools/wrappers/opalCC-wrapper-data.txt -opal/tools/wrappers/opal_wrapper -opal/tools/wrappers/opal.pc - -opal/util/show_help_lex.c -opal/util/keyval/keyval_lex.c - -test/simple/abort -test/simple/accept -test/simple/attach -test/simple/bad_exit -test/simple/bcast_loop -test/simple/binding -test/simple/concurrent_spawn -test/simple/connect -test/simple/crisscross -test/simple/delayed_abort -test/simple/hello_barrier -test/simple/hello_nodename -test/simple/hello_output -test/simple/hello_show_help -test/simple/hello -test/simple/hello++ -test/simple/intercomm1 -test/simple/interlib -test/simple/loop_child -test/simple/loop_spawn -test/simple/mpi_barrier -test/simple/mpi_no_op -test/simple/mpi_spin -test/simple/multi_abort -test/simple/parallel_r8 -test/simple/parallel_r64 -test/simple/parallel_w8 -test/simple/parallel_w64 -test/simple/pinterlib -test/simple/pmix -test/simple/pubsub -test/simple/read_write -test/simple/reduce-hang -test/simple/ring -test/simple/segv -test/simple/simple_spawn -test/simple/slave -test/simple/spawn_multiple -test/simple/xlib -test/simple/ziaprobe -test/simple/ziatest -test/simple/*.dwarf -test/simple/junk* -test/simple/sio -test/simple/sendrecv_blaster -test/simple/early_abort -test/simple/spawn_problem/ch_rec -test/simple/spawn_problem/output -test/simple/spawn_problem/start -test/simple/debugger -test/simple/server_port_name.txt -test/simple/singleton_client_server -test/simple/intercomm_create -test/simple/spawn_tree -test/simple/init-exit77 -test/simple/mpi_info -test/simple/info_spawn -test/simple/client -test/simple/server -test/simple/paccept -test/simple/pconnect -test/simple/thread_init -test/simple/memcached-dummy -test/simple/coll_test -test/simple/badcoll -test/simple/iof -test/simple/no-disconnect -test/simple/nonzero -test/simple/add_host - -oshmem/include/shmem.h -oshmem/include/shmem_portable_platform.h -oshmem/include/oshmem/frameworks.h -oshmem/include/oshmem/version.h - -oshmem/mca/sshmem/base/static-components.h - -oshmem/shmem/c/profile/p*.c -oshmem/shmem/c/profile/*.c - -oshmem/shmem/fortran/libshmem_fortran.la -oshmem/shmem/fortran/profile/pshmem_*_f.c -oshmem/shmem/fortran/profile/pshpdeallc_f.c -oshmem/shmem/fortran/profile/pshpclmove_f.c -oshmem/shmem/fortran/profile/pmy_pe_f.c -oshmem/shmem/fortran/profile/pshpalloc_f.c -oshmem/shmem/fortran/profile/pnum_pes_f.c -oshmem/shmem/fortran/profile/pstart_pes_f.c - -oshmem/tools/oshmem_info/oshmem_info - -oshmem/tools/wrappers/oshmem-c.pc -oshmem/tools/wrappers/oshmem-cxx.pc -oshmem/tools/wrappers/oshmem-fort.pc -oshmem/tools/wrappers/oshmem.pc -oshmem/tools/wrappers/shmemcc-wrapper-data.txt -oshmem/tools/wrappers/shmemfort-wrapper-data.txt -oshmem/tools/wrappers/shmemc++-wrapper-data.txt - -test/asm/atomic_math_noinline -test/asm/atomic_barrier -test/asm/atomic_cmpset_noinline -test/asm/atomic_math -test/asm/atomic_cmpset -test/asm/atomic_spinlock_noinline.c -test/asm/atomic_barrier_noinline.c -test/asm/atomic_math_noinline.c -test/asm/atomic_cmpset_noinline.c -test/asm/atomic_spinlock_noinline -test/asm/atomic_barrier_noinline -test/asm/atomic_spinlock - -test/class/*.txt -test/class/ompi_bitmap_test_out.txt -test/class/ompi_circular_buffer_fifo -test/class/ompi_fifo -test/class/ompi_rb_tree -test/class/ompi_bitmap -test/class/opal_bitmap -test/class/opal_fifo -test/class/opal_cstring -test/class/opal_hash_table -test/class/opal_lifo -test/class/opal_list -test/class/opal_pointer_array -test/class/opal_proc_table -test/class/opal_tree -test/class/opal_value_array - -test/datatype/ddt_test -test/datatype/ddt_pack -test/datatype/external32 -test/datatype/to_self -test/datatype/checksum -test/datatype/position -test/datatype/ddt_raw -test/datatype/opal_datatype_test -test/datatype/position_noncontig -test/datatype/unpack_ooo -test/datatype/unpack_hetero - -test/event/signal-test -test/event/event-test -test/event/time-test - -test/monitoring/monitoring_test -test/monitoring/check_monitoring -test/monitoring/example_reduce_count -test/monitoring/test_overhead -test/monitoring/test_pvar_access - -test/mpi/environment/chello - -test/runtime/parse_context -test/runtime/sigchld -test/runtime/start_shut -test/runtime/opal_init_finalize -test/runtime/orte_init_finalize - -test/spc/spc_test - -test/threads/opal_condition -test/threads/opal_thread - -test/util/aaa -test/util/test_session_dir_out -test/util/opal_os_path -test/util/opal_argv -test/util/opal_os_create_dirpath -test/util/opal_if -test/util/opal_error -test/util/opal_timer -test/util/orte_sys_info -test/util/orte_session_dir -test/util/orte_sys_info -test/util/orte_universe_setup_file_io -test/util/opal_basename -test/util/ompi_numtostr -test/util/ompi_pack -test/util/test-file -test/util/opal_sos -test/util/opal_path_nfs -test/util/opal_path_nfs.out -test/util/opal_bit_ops -test/util/bipartite_graph -test/util/opal_sha256 - -opal/test/reachable/reachable_netlink -opal/test/reachable/reachable_weighted -opal/mca/threads/argobots/threads_argobots.h -opal/mca/threads/qthreads/threads_qthreads.h - -docs/_build -docs/_static -docs/_static/css/custom.css -docs/_templates - -# Common Python virtual environment directory names -venv -py?? - -# Copies of PRRTE RST files (i.e., not source controlled in this tree) -docs/prrte-rst-content -docs/schizo-ompi-rst-content - -# Copies of the built HTML docs and man pages (for distribution -# tarballs) -docs/html -docs/man +.libs +.deps +.libs +.dirstamp +.DS_Store +.cdt* +.project +.gdb* +.idea + +*.la +*.lo +*.o +*.so +*.a +*.dwarf +*.dSYM +*.S +*.loT +*.orig +*.rej +*.bak +*.class +*.xcscheme +*.out +*.plist +*.orig +*.obj +*.mod +*.i90 +*.ii +*.ti +*.exe +*.log +*.trs +*.sapp +*~ +*\\# + +Makefile +Makefile.in + +# hwloc and pmix have been de-modularized, but still uses parts of the +# MCA system due to the amount of glue code that ended up in the +# framework base. Until that is cleaned up, do not ignore the +# hard-coded static-components.h file. +static-components.h +!opal/mca/hwloc/base/static-components.h +!opal/mca/pmix/base/static-components.h + +*\\# +config.cache +aclocal.m4 +autom4te.cache +config.log +config.status +configure +libtool +doxygen +bin +lib +cscope.* +etags +GRTAGS +GSYMS +GTAGS +GPATH +vc70.pdb +.hgrc +.hgignore +.hg +.hgignore_local +stamp-h? +AUTHORS + +ar-lib +ylwrap +config.lt +config.guess +config.sub +depcomp +compile +install-sh +ltmain.sh +missing +mkinstalldirs +libtool.m4 +lt~obsolete.m4 +ltdl.m4 +argz.m4 +ltargz.m4 +ltsugar.m4 +ltversion.m4 +ltoptions.m4 + +# Libevent and hwloc are included as a tarball. Ignore any expanded +# tarballs, since they are not included in git. Do not ignore the +# tarballs themselves, and those are artifacts we will store in git. +3rd-party/libevent-* +!3rd-party/libevent-*.tar.* +3rd-party/treematch/config.h + +3rd-party/romio341/adio/include/romioconf.h +3rd-party/romio341/adio/include/romioconf.h.in +3rd-party/romio341/include/mpio.h +3rd-party/romio341/localdefs +3rd-party/romio341/mpl/confdb/test-driver +3rd-party/romio341/mpl/include/config.h +3rd-party/romio341/mpl/include/config.h.in +3rd-party/romio341/mpl/include/mplconfig.h +3rd-party/romio341/mpl/include/mpl_timer.h +3rd-party/romio341/mpl/localdefs +3rd-party/romio341/test/runtests +3rd-party/romio341/test/fcoll_test.f +3rd-party/romio341/test/fmisc.f +3rd-party/romio341/test/fperf.f +3rd-party/romio341/test/large_file.c +3rd-party/romio341/test/misc.c +3rd-party/romio341/test/pfcoll_test.f +3rd-party/romio341/util/romioinstall + +config/project_list.m4 +config/autogen_found_items.m4 +config/opal_get_version.sh +config/test-driver +config/mca_no_configure_components.m4 +config/mca_m4_config_include.m4 +config/ext_no_configure_components.m4 +config/ext_m4_config_include.m4 +config/auto-extracted-pmix-configure-args.m4 +config/auto-extracted-prrte-configure-args.m4 +config/auto-generated-ompi-exclude.ini + +contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h +contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h.in +contrib/build-mca-comps-outside-of-tree/config +contrib/build-mca-comps-outside-of-tree/aclocal.m4 +contrib/dist/linux/compile_debian_mlnx_example +contrib/dist/mofed/compile_debian_mlnx_example +contrib/dist/mofed/debian/changelog +contrib/dist/mofed/debian/control +contrib/dist/mofed/debian/copyright +contrib/dist/mofed/debian/rules +contrib/platform/intel/bend/*orcm* +contrib/scaling/orte_no_op +contrib/scaling/mpi_no_op +contrib/scaling/mpi_barrier +contrib/scaling/mpi_memprobe + +examples/hello_c +examples/hello_cxx +examples/hello_mpifh +examples/hello_usempi +examples/hello_usempif08 +examples/ring_c +examples/ring_cxx +examples/ring_mpifh +examples/ring_usempi +examples/ring_usempif08 +examples/connectivity_c +examples/ring_oshmem +examples/hello_oshmem +examples/ring_oshmemfh +examples/hello_oshmemfh +examples/hello_oshmemcxx +examples/oshmem_circular_shift +examples/oshmem_max_reduction +examples/oshmem_shmalloc +examples/oshmem_strided_puts +examples/oshmem_symmetric_data +examples/spc_example + +ompi/debuggers/*.in +ompi/debuggers/dlopen_test +ompi/debuggers/predefined_gap_test +ompi/debuggers/predefined_pad_test + +ompi/include/mpi.h +ompi/include/mpif-config.h +ompi/include/mpif.h +ompi/include/mpif-c-constants-decl.h +ompi/include/mpif-c-constants.h +ompi/include/mpif-common.h +ompi/include/mpi-ext.h +ompi/include/mpif-ext.h +ompi/include/mpif-f08-types.h +ompi/include/mpif-handles.h +ompi/include/mpif-io-constants.h +ompi/include/mpif-constants.h +ompi/include/mpif-io-handles.h +ompi/include/mpif-sizeof.h +ompi/include/mpi_portable_platform.h +ompi/include/ompi/version.h +ompi/include/ompi/frameworks.h + +ompi/mca/coll/basic/coll-basic-version.h* +ompi/mca/coll/demo/config +ompi/mca/coll/demo/coll_demo_config.h* +ompi/mca/coll/demo/coll-demo-version.h* +ompi/mca/coll/ml/coll_ml_lex.c +ompi/mca/coll/self/coll-self-version.h* +ompi/mca/coll/sm/coll-sm-version.h* + +ompi/mca/osc/monitoring/osc_monitoring_template_gen.h + +ompi/mca/pml/v/autogen.vprotocols +ompi/mca/pml/v/mca_vprotocol_config_output + +ompi/mca/sharedfp/addproc/mca_sharedfp_addproc_control + +ompi/mca/topo/treematch/config.h + +ompi/mpi/c/profile/p*.c + +ompi/mpi/fortran/configure-fortran-output.h +ompi/mpi/fortran/mpiext/mpi-ext-module.F90 +ompi/mpi/fortran/mpiext/mpi-f08-ext-module.F90 +ompi/mpi/fortran/mpiext-use-mpi/mpi-ext-module.F90 +ompi/mpi/fortran/mpiext-use-mpi-f08/mpi-f08-ext-module.F90 + +ompi/mpi/fortran/mpif-h/sizeof_f.f90 +ompi/mpi/fortran/mpif-h/profile/p*.c +ompi/mpi/fortran/mpif-h/profile/psizeof_f.f90 + +ompi/mpi/fortran/use-mpi/mpi-types.F90 + +ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-constants.h +ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.h +ompi/mpi/fortran/use-mpi-f08/sizeof_f08.f90 +ompi/mpi/fortran/use-mpi-f08/sizeof_f08.h +ompi/mpi/fortran/use-mpi-f08/profile/psizeof_f08.f90 +ompi/mpi/fortran/use-mpi-f08/profile/*.F90 + +ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h +ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h +ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.f90 +ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.h +ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h + +ompi/mpi/fortran/use-mpi-tkr/fortran_kinds.sh +ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h +ompi/mpi/fortran/use-mpi-tkr/mpi_kinds.ompi_module +ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.f90 +ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.h + +ompi/mpi/java/java/mpi +ompi/mpi/java/java/*.jar +ompi/mpi/java/java/*.h +ompi/mpi/java/java/doc + +ompi/mpi/tool/profile/*.c + +ompi/mpiext/affinity/c/example + +ompi/mpiext/ftmpi/c/profile/pcomm_agree.c +ompi/mpiext/ftmpi/c/profile/pcomm_failure_ack.c +ompi/mpiext/ftmpi/c/profile/pcomm_failure_get_acked.c +ompi/mpiext/ftmpi/c/profile/pcomm_iagree.c +ompi/mpiext/ftmpi/c/profile/pcomm_is_revoked.c +ompi/mpiext/ftmpi/c/profile/pcomm_revoke.c +ompi/mpiext/ftmpi/c/profile/pcomm_shrink.c +ompi/mpiext/ftmpi/c/profile/pcomm_ack_failed.c +ompi/mpiext/ftmpi/c/profile/pcomm_get_failed.c +ompi/mpiext/ftmpi/c/profile/pcomm_ishrink.c + +ompi/mpiext/example/tests/progress_c +ompi/mpiext/example/tests/progress_mpifh +ompi/mpiext/example/tests/progress_usempi +ompi/mpiext/example/tests/progress_usempif08 + +ompi/mpiext/cuda/c/mpiext_cuda_c.h +ompi/mpiext/cuda/c/cuda_c.h +ompi/mpiext/rocm/c/mpiext_rocm_c.h + +ompi/mpiext/pcollreq/c/MPIX_*.3 +ompi/mpiext/pcollreq/c/profile/pallgather_init.c +ompi/mpiext/pcollreq/c/profile/pallgatherv_init.c +ompi/mpiext/pcollreq/c/profile/pallreduce_init.c +ompi/mpiext/pcollreq/c/profile/palltoall_init.c +ompi/mpiext/pcollreq/c/profile/palltoallv_init.c +ompi/mpiext/pcollreq/c/profile/palltoallw_init.c +ompi/mpiext/pcollreq/c/profile/pbarrier_init.c +ompi/mpiext/pcollreq/c/profile/pbcast_init.c +ompi/mpiext/pcollreq/c/profile/pexscan_init.c +ompi/mpiext/pcollreq/c/profile/pgather_init.c +ompi/mpiext/pcollreq/c/profile/pgatherv_init.c +ompi/mpiext/pcollreq/c/profile/pmpiext_pcollreq_c.h +ompi/mpiext/pcollreq/c/profile/pneighbor_allgather_init.c +ompi/mpiext/pcollreq/c/profile/pneighbor_allgatherv_init.c +ompi/mpiext/pcollreq/c/profile/pneighbor_alltoall_init.c +ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallv_init.c +ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallw_init.c +ompi/mpiext/pcollreq/c/profile/preduce_init.c +ompi/mpiext/pcollreq/c/profile/preduce_scatter_block_init.c +ompi/mpiext/pcollreq/c/profile/preduce_scatter_init.c +ompi/mpiext/pcollreq/c/profile/pscan_init.c +ompi/mpiext/pcollreq/c/profile/pscatter_init.c +ompi/mpiext/pcollreq/c/profile/pscatterv_init.c +ompi/mpiext/pcollreq/c/profile/ppcollreq_c.h + +ompi/mpiext/pcollreq/mpif-h/profile/pallgather_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pallgatherv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pallreduce_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/palltoall_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/palltoallv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/palltoallw_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pbarrier_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pbcast_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pexscan_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pgather_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pgatherv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgather_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgatherv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoall_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallw_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/preduce_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_block_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pscan_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pscatter_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pscatterv_init_f.c + +ompi/mpiext/shortfloat/c/mpiext_shortfloat_c.h +ompi/mpiext/shortfloat/mpif-h/mpiext_shortfloat_mpifh.h +ompi/mpiext/shortfloat/use-mpi-f08/mpiext_shortfloat_usempif08.h + +ompi/tools/mpisync/mpisync +ompi/tools/mpisync/mpirun_prof +ompi/tools/mpisync/ompi_timing_post +ompi/tools/mpirun/mpirun + +ompi/tools/ompi_info/ompi_info + +ompi/tools/wrappers/mpic++-wrapper-data.txt +ompi/tools/wrappers/mpicc-wrapper-data.txt +ompi/tools/wrappers/mpifort-wrapper-data.txt +ompi/tools/wrappers/ompi_wrapper_script +ompi/tools/wrappers/ompi.pc +ompi/tools/wrappers/ompi-c.pc +ompi/tools/wrappers/ompi-cxx.pc +ompi/tools/wrappers/ompi-fort.pc +ompi/tools/wrappers/mpijavac.pl +ompi/tools/wrappers/mpicxx-wrapper-data.txt +ompi/tools/wrappers/mpif77-wrapper-data.txt +ompi/tools/wrappers/mpif90-wrapper-data.txt + +opal/asm/atomic-asm.S +opal/asm/atomic-test +opal/asm/generated/atomic-*.s + +opal/include/opal_config.h +opal/include/opal_config.h.in +opal/include/opal/install_dirs.h +opal/include/opal/version.h +opal/include/opal/frameworks.h +opal/include/opal/sys/powerpc/atomic-32.s +opal/include/opal/sys/powerpc/atomic-64.s +opal/include/opal/sys/powerpc/atomic-32-64.s + +opal/mca/base/mca_base_parse_paramfile_lex.c + +opal/mca/btl/usnic/usnic_btl_run_tests + +opal/mca/event/libevent*/libevent/config.h.in +opal/mca/event/libevent*/libevent/config.h +opal/mca/event/libevent*/libevent/libevent.pc +opal/mca/event/libevent*/libevent/libevent_openssl.pc +opal/mca/event/libevent*/libevent/libevent_pthreads.pc +opal/mca/event/libevent*/libevent/include/event2/event-config.h + +opal/mca/installdirs/config/install_dirs.h + +opal/tools/wrappers/opalcc-wrapper-data.txt +opal/tools/wrappers/opalc++-wrapper-data.txt +opal/tools/wrappers/opalCC-wrapper-data.txt +opal/tools/wrappers/opal_wrapper +opal/tools/wrappers/opal.pc + +opal/util/show_help_lex.c +opal/util/keyval/keyval_lex.c + +test/simple/abort +test/simple/accept +test/simple/attach +test/simple/bad_exit +test/simple/bcast_loop +test/simple/binding +test/simple/concurrent_spawn +test/simple/connect +test/simple/crisscross +test/simple/delayed_abort +test/simple/hello_barrier +test/simple/hello_nodename +test/simple/hello_output +test/simple/hello_show_help +test/simple/hello +test/simple/hello++ +test/simple/intercomm1 +test/simple/interlib +test/simple/loop_child +test/simple/loop_spawn +test/simple/mpi_barrier +test/simple/mpi_no_op +test/simple/mpi_spin +test/simple/multi_abort +test/simple/parallel_r8 +test/simple/parallel_r64 +test/simple/parallel_w8 +test/simple/parallel_w64 +test/simple/pinterlib +test/simple/pmix +test/simple/pubsub +test/simple/read_write +test/simple/reduce-hang +test/simple/ring +test/simple/segv +test/simple/simple_spawn +test/simple/slave +test/simple/spawn_multiple +test/simple/xlib +test/simple/ziaprobe +test/simple/ziatest +test/simple/*.dwarf +test/simple/junk* +test/simple/sio +test/simple/sendrecv_blaster +test/simple/early_abort +test/simple/spawn_problem/ch_rec +test/simple/spawn_problem/output +test/simple/spawn_problem/start +test/simple/debugger +test/simple/server_port_name.txt +test/simple/singleton_client_server +test/simple/intercomm_create +test/simple/spawn_tree +test/simple/init-exit77 +test/simple/mpi_info +test/simple/info_spawn +test/simple/client +test/simple/server +test/simple/paccept +test/simple/pconnect +test/simple/thread_init +test/simple/memcached-dummy +test/simple/coll_test +test/simple/badcoll +test/simple/iof +test/simple/no-disconnect +test/simple/nonzero +test/simple/add_host + +oshmem/include/shmem.h +oshmem/include/shmem_portable_platform.h +oshmem/include/oshmem/frameworks.h +oshmem/include/oshmem/version.h + +oshmem/mca/sshmem/base/static-components.h + +oshmem/shmem/c/profile/p*.c +oshmem/shmem/c/profile/*.c + +oshmem/shmem/fortran/libshmem_fortran.la +oshmem/shmem/fortran/profile/pshmem_*_f.c +oshmem/shmem/fortran/profile/pshpdeallc_f.c +oshmem/shmem/fortran/profile/pshpclmove_f.c +oshmem/shmem/fortran/profile/pmy_pe_f.c +oshmem/shmem/fortran/profile/pshpalloc_f.c +oshmem/shmem/fortran/profile/pnum_pes_f.c +oshmem/shmem/fortran/profile/pstart_pes_f.c + +oshmem/tools/oshmem_info/oshmem_info + +oshmem/tools/wrappers/oshmem-c.pc +oshmem/tools/wrappers/oshmem-cxx.pc +oshmem/tools/wrappers/oshmem-fort.pc +oshmem/tools/wrappers/oshmem.pc +oshmem/tools/wrappers/shmemcc-wrapper-data.txt +oshmem/tools/wrappers/shmemfort-wrapper-data.txt +oshmem/tools/wrappers/shmemc++-wrapper-data.txt + +test/asm/atomic_math_noinline +test/asm/atomic_barrier +test/asm/atomic_cmpset_noinline +test/asm/atomic_math +test/asm/atomic_cmpset +test/asm/atomic_spinlock_noinline.c +test/asm/atomic_barrier_noinline.c +test/asm/atomic_math_noinline.c +test/asm/atomic_cmpset_noinline.c +test/asm/atomic_spinlock_noinline +test/asm/atomic_barrier_noinline +test/asm/atomic_spinlock + +test/class/*.txt +test/class/ompi_bitmap_test_out.txt +test/class/ompi_circular_buffer_fifo +test/class/ompi_fifo +test/class/ompi_rb_tree +test/class/ompi_bitmap +test/class/opal_bitmap +test/class/opal_fifo +test/class/opal_cstring +test/class/opal_hash_table +test/class/opal_lifo +test/class/opal_list +test/class/opal_pointer_array +test/class/opal_proc_table +test/class/opal_tree +test/class/opal_value_array + +test/datatype/ddt_test +test/datatype/ddt_pack +test/datatype/external32 +test/datatype/to_self +test/datatype/checksum +test/datatype/position +test/datatype/ddt_raw +test/datatype/opal_datatype_test +test/datatype/position_noncontig +test/datatype/unpack_ooo +test/datatype/unpack_hetero + +test/event/signal-test +test/event/event-test +test/event/time-test + +test/monitoring/monitoring_test +test/monitoring/check_monitoring +test/monitoring/example_reduce_count +test/monitoring/test_overhead +test/monitoring/test_pvar_access + +test/mpi/environment/chello + +test/runtime/parse_context +test/runtime/sigchld +test/runtime/start_shut +test/runtime/opal_init_finalize +test/runtime/orte_init_finalize + +test/spc/spc_test + +test/threads/opal_condition +test/threads/opal_thread + +test/util/aaa +test/util/test_session_dir_out +test/util/opal_os_path +test/util/opal_argv +test/util/opal_os_create_dirpath +test/util/opal_if +test/util/opal_error +test/util/opal_timer +test/util/orte_sys_info +test/util/orte_session_dir +test/util/orte_sys_info +test/util/orte_universe_setup_file_io +test/util/opal_basename +test/util/ompi_numtostr +test/util/ompi_pack +test/util/test-file +test/util/opal_sos +test/util/opal_path_nfs +test/util/opal_path_nfs.out +test/util/opal_bit_ops +test/util/bipartite_graph +test/util/opal_sha256 + +opal/test/reachable/reachable_netlink +opal/test/reachable/reachable_weighted +opal/mca/threads/argobots/threads_argobots.h +opal/mca/threads/qthreads/threads_qthreads.h + +docs/_build +docs/_static +docs/_static/css/custom.css +docs/_templates + +# Common Python virtual environment directory names +venv +py?? + +# Copies of PRRTE RST files (i.e., not source controlled in this tree) +docs/prrte-rst-content +docs/schizo-ompi-rst-content + +# Copies of the built HTML docs and man pages (for distribution +# tarballs) +docs/html +docs/man diff --git a/3rd-party/hwloc-2.7.1.tar.gz b/3rd-party/hwloc-2.7.1.tar.gz deleted file mode 100644 index 95dce21a46497ecadde172420b21ece029f43072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7206844 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
l?Z#VSD5 z$2t`Sq+kAYc^(nth}Ni^ZdQq?N}C8tdtYdHc;Ddm)_r`accx49+r;SP+PWa-jN1&@ zs|^>`9;fSA|6c%3K(W6@3YY31g}_vax&Vx|G*b$y;N_(XI$~`bA?n3IX&Oa5=PTJ5}bAUc$UXuTQwz3woDD73UCbj9JAf?pF zxxE%ME0`&r$i$5&Gr8pvnT_Vg8eXY6XCPGRat#i|-uVrudP2de;g}qRw6W7Ob&fe6 zxLf~*&(UFQq;l5t$iPSC?I1fGs>DG7jV4bCHg}Kjv=AD#U4p2Mk0UOAyusve#W#t)Mf(p%{1`nnW(ZSze;@WY_0x*KKgfee^;zyiuHNx|Gal}y#M04s1BU}hS4Gvj`n`u zXA+V7&O;eC8FS*t7{-p6j0%DGy79HdNEx25SBP3uAY9DIU8$ z5YT51Y?R;qH#)oj&ojI*faUN#9UNGZlya2ReKs!vBg(g- z2{{V&jFb7qE)EFg`J|0t_uxQ7P0z!Sv#GhzEZZ<0lQ5dbGOAdq6`npn-Hx8Djk`3M zqpsPh)mm>}J>J=UdUX8ym3ZAk3p)I_vqHWVoqDUYE_Sz1wp&|q>kYl?c7s8;s|&yr z`jr%Hz1c@fefaTed;jDYO?M8c-Ft%P{8Q$_fW}KQBQV*kCFCaN6yr_nO=o2b6T+^dA4uk9 zjBjNNIv?a7-KhhU0x?+$zS>-r>_V=?@KKDN9-zokpt^3EarZH$U?LcWf_s_1m<}TI}p`3sPZRqyQvjI)e zg=XAh;>*ar9&zWJeRiG94+`s%a&?I6d+z90Rk`&5g^yzY`ToiN^W&54=R14iWbf#i z`lCQsR%$fz&Zo+fq`$j&ymPdFc!DY_#t?ED@|c^I0&FAV*-r;2`-ca6;`xi`$3Jc# z?d{G?Krgas#ofU*-sx!$ksD*n>LSqXe&CHx+-P96`ZIhPIqp9QwQK*U7mesg`C6II zlGEA^Ye;eEq{6ifC!{3u7lz0d=fwLwJQnhT1rL=8Mp4mQ*ZQyd-6Kg3o~C8|g?rC> z-`c7yp@?3ZSgvEy)`nYHwbkvcw=Q7ZKCzW2yDtFunzjGxENeO&JV|*X)C^)7I`1W+ zkEqo(omsv!m;OC5=|rL1Na{t}nIr#xf_1(z*QsSMfuQ@*>Al^goFGX?jD~dHW5;lI z7{|MHm6!s~td2^G0f)JQoEU}o8uEG@O=f|h{a?`jzp{3{zQ+HEvl~rJ-nG=}a#dy6 z=u3Cu8?u`DUT>s;l}Rg&F)uNhNeAvAj1po{Ivx)==TcvsN6rNrzVL5lZ-b+@!VJNi zT^fU-*Lw?8Bd8M&l9T4f!$;y@-eWlQc^3gTDe23ZJG#QF@3rfPs!RC6wd+Sup6u|S zBT^PLG0F`h#Ix`nwq`tJpcrFF96t`#We z@}(%lE+D%jZ?F6VU*nBnUEU0HyR`0Je6Ze|%U~xu&`!gr8hfW2tFn)9AMvTv@5`LS znsaLWh8c=qCYay3acLA7+$E58eF^@_VN>rIkl*DOg=||&T{50>{`=q^dL@`k$KdRrIASBZi(}8(CgxP6c02aU%q3VGT-O#L6?~C ziiee50%ipFUMd_tsLBHT+qDGc`+sX7h5alD2ae2)y@V+P8k9%^f%f$u^`&K*g1|`q zkMTJ0GEdz0l%^nwo|{Aoy+2Df3t&GBaWqH+v2N0O@7zofKr>!UzJP3&7K8dT+vJe{ zC-I1)om%p0&6^0(3dCQO{6o=F^V5P{JBOk$BIvDDHQr-%naE4NfmiY^6GAl z_xYrX#SbK-TeaJp`t+L4x}=r)j#xQkaiR9h!JO{}U&d@sGMxbJPpO;I;-fxtr|p7D z-D2xNtFykOrq zd2uz%RZQTH@W5(#WzcAJyL$&ux?Mct;m*1zY<-QYUVWeU!^kt>V;U54Ih#5zx^L{{ zo4QrHI}6H$Eu{GJ^KL&zt2b}SpduOW&IrXkntmo7ggT+W%UpXuezGezI?ZnieP`zM zKtvyZ?H;qy{00vB(kI^Vv6I45IT#X!2~LK`+z*uwm;7q7-iAbDR*%D9TrrL=TyiEH zg=)HKVMTG03NwvGE@4G+Oo)=rQ~kQ( z?}zYreeNZCWO%P-7UnSWFuQ+<^dB|9U2m>6@2hY*_RpQ}5`4V#;tyV_Nz?yy>vf4v zPg0%4^cb<*8%N#2BTA_ABUo^Bhv8mB%Q%XWDrp)pmXF7n$b&u*GKI+fb?iZRlSZnm zCk)NH8C_Bg%#{bHSM$ba2#d2RmB_o2U$}S{(T+c>pGmpWdl#QsMA9uOF_%*WrRq3G zW~BnX4m0OPBQYFDu03+EM=4ED-xN>Q_>?$Kse9Rr*yR3p+D&XO;mwy#^LO7gH9uA4 z1f)=QRNb`YB?E{td3{g2L02p_HO4ES&HfzYKsf8R%SSQX6T)-eI(W;g>Fo9duEz02 z%x`5;L`nLuTlpLter1JRf{Z?o2T1zpb+)&eoBorB>l?!Uk^X)5Z1ebNuP_jy@QaBH z10vjQayYgeIW@U5Nwh?}LcIV6|6u?{Vxck?5(O78*+vr`Y2MF-7|Wj?*oku*dnuHFV7bF z5F_vU)dSOqB^7U07;Z)}Y?wNo1K8w*5WWwrLh^RdO@}d+P96k(apj^px;8>0m(Dwi zAnS*SNx_>xO$LU8E@X@HdIXA+Ki+ zd*@hpTy(*p!77+)mJAq!PFXh0DQkgEtZna5L;}WX3>*wgz?Lf-2t^^^5*4!yhO!3( zqVbD|*cghwujo_gnT}hx?8nIqt}I5VN0aOImFv8fsW1}+6yJO6%D_i9ie*cnHszw~ zh$OhtV&Gs#c#14`VqyJaaT705jAJ`$_^FzB>)sF~CE_3u@}CA(*`rYxPsl$U1`uxs z$UA(bO6(7G2~szSEX=FiP-@~Fx-~|npE&~=0x6K1KJ+m#J~JXbOqP9U5kWn+xJN&K zW?bFK{TcdNqWzVIQP_`%7p1Wj&edD;Hh)iOiz_Rgs@M>1SR^M_9j|4Q2fNt^kFyVc zvFe1+xDt=g;!%Vz?l;yO>van9Y~ow~j9EhgS_v#IEaC@Cd?Y4Mzx#;)X9io?wE3_QEy=&C@aYrvJQWwmUOCeD77@+d1KL~vOehe8r6PYPpnuUtu>#b^8+ zeXQE2&=Tqi%M^IgS0;%JAOl+)`oiXn?;zGK^5w+wWQo%#9$E`}zloJBc;5&@OQ5s= zS<_j;f5&0-=eqn>L%>*V24O>FJF2VSAOf7=ibDTmR=>gC7gRU?p|2Z%OMO7hFsm{qk=6?)Ko zwQ>LT2mPzLioahyWCdx7N5^NSn{MpoI>B3ZX`xsl?dh7A6$py!sw__z_wpsWhvW;? zQS`TmfyT+qhXXsrtC7PmaGHw^Q^9jWV>z?MRFTvvmWbyJVk0P z%E65ZG`OKC8HyiE5}q3K{u2ZkWgx;sQd)k<#<*HvgemCdg^?%Wxo}pSvyEUr!IGXA ztKe!Zr+A)~D4y^p2l+tprC})y5d9g#NGv{#Z zw1m?K0Xu**kq4WKJqmj;Bbv_6%a=5ctsNdtTr3y&?zPZ?9Gbuqyhm1L-e|}UNU^*l zO+-Ri;Y54aR73W%!5^n7I`c00+iDVMa{)lirxqsZxds2)3hgV45F@5b-S(kxT)QUIlRU0Q_AauRsURN46u zfm7uWh=v-5f^#N{?n&sF88hL8b9CA}IVYUg);E-N#-B}w3d6tfZ2yTz&mIw&lzsKHCT!zFVJB^X9XX7fe z>8UDmYRY8$T%Z$IQW?z#B#S^TrA(FC*Xkq#%QE!e5eIh37GoqySQ1)nCvq}!vE6Q8 zw-sM+n)ckJZ0M(pO|l}ehYK)`BQI3WQ6U=#5@98EK|?wi0aPcinE+YVdEFB#XL72P zHd(}EbQu#XYlvYAsPHDu;yodznW(~|-nh4sO-yN1@_)ylJJj>)$w_cNu zRW<$+7Kx6h@|b`&BnFys14;my+Y#068IKQd4T-48q14@wA;PfeAcBqyr#6YmKr@}y z`WrB^E@J8a(YX@b?N9I!aY^SaS1lzQfPnXgc6>32eQUdj<^)k$GXCZj#cc*RJP z+pz!c+`HEhKeOMAc-VZXjS3GB=;!{njYh7=?#O`?wY(8U5^x}X%lDYH9X%xwIH-cA zS!@f!wlXp!<;2*`&TEZkQLV(eStLVDafNwTlPkcsSHtBeHwT$g`H3*NFRRu}jzvR7 z30NpG=YjxTnRcZa+;<>LOJeXywpmUGn4SOs06kIp1W`Z7vX|U z9AOi@moAWJw3w@DlBc|dH0xz`!Hz3LngbK;O}63bbsRc$@@3=t3hAZw1{ovIT-dA_ za*DKOMT#^wX^(`(3)@kD+;fviKDp4FC15u-CY<XuHjvmn|YD;&{r$LpX}^8~5PV$KOigIK{3#CqjDt{zm3 zB6l>70XlLJ6Y4OsF|u>O39h7(@Y)mBcaARHN))hU9=Ne zz&}BV(#tY^!p)hmIye<(tF78xGgAW!Fn+1Iv1&yg2!&&;>Q5Y3OKVxT+RBy+H?gHJ z+t-)v>&y1_ciFy{ZoP4_Rb>_hU*t9X23NlW-Cls`&Z+i-4`LA5*%FUgG!hVXdDtt#0hcEGIbtbOSIXs)i^-9AS-LD3o)a?5%WzDVD-dvD z)(B7Ag1Xh1)<&a6#zEV(NOw6?RZrQXid7s=jF;U=5%!p&Yd%$<{cCssXhMmaVkW#} za?a1GF9X=`yrHk{J26|>;)Y^6eg39IkFg0hPjL3BNKj&0O!x;cP;8%Ob)(EaZW*ov zR{Rw;tpoD9AzpVn^{==IozD7K7uIPldy~b$*O}9Hh5=7xvX0mrc$mEuP1fNR*>eoD z7jP(Es`M%3t^mrr)CU*Vdj6?ZBW#kC@`f!e)P$1hnXIqs>myOCmJBz`qnx{4p`w)a zw<`_|t4h!K0?4F%yAAF(tRmAV>2~9aj4*v*xq_lOa0h4Te+LV+8U9YgeSC7Xe~4_p zXgfcxWDgq4|4@N`D-&zhVYv0Wxs1B<#86(P9unv6p{*0jHNgzkt(!0jJM_)5m@9)q{tLJ9X*Jh(;I4P?!T({dU>aCg)dUACr=C zD@AHI5!yAGDM;;w_zd!u&lmj9IgAc-t{IL7`Pme;Sz!FjFM5`;z8e3mvCkzQ#ztiP zz>7>wL(@bSrF7Sva0>J$`U^Bjcmt=|Hl9JtDkIdUSvd}M?HrQtl1{{@uEbG)$AOB4 z0>g(>po2NmdT*PBVMa5U<+Acp2~xV@g!yXN`_B$x8E#rt4AAVR=q0e4zKz^-vIywC5k%vz)#bU(m1s_eh0})m@<0!QCz7F}H_A~_IZbB>OCf{# zEkIUmN->20!BN8hDktGNwt`7#j=mGg6GL?A4CAnW1Ds2@9z~Yt8S>jF$?*Bub2(Eg z`g{)8-aAa+O1_z0yz4LpLa7z~^8rhe4IpXF0tktO52%%`(k|30(p*yF6<#PFs$Cc{ zn96SEZDrC4iBVNQXw*_gqvr&Yr&4)9i%X#6wUK{1Kb849=1fWr?428(g|XXJ8*Mu^ zo@_BPR|xwLsN}J@Tsp<~{2*sKRerA|O-Cz^om_qzr4G+6*-)=q0Z*5bLjqA+=t#znzs2-Z-nx7XsIsE zGL1)N)3`89&a(I^z&&UjI3pKF9Ml`ol=Qs77-NJgkO#%Pz-7Zn_xRGdLt4ge~0{m8k%??q&G`o&jO?IPC)L84fxV|L=dA&0_gbvN+L=w449{1S0YO2VXF)fq1DAw1CR)vb*hK126^t+k~P7H?nG6UUJ zzBc9(9);{Hc{EW%O4xM{!ENS_F@eB}hGZ_LTbjggOGT` z1lG)F&_w22Ux@kgxBW|(!=bZ^8AJ+T#7*YRvg90`CnGL7QOT6gOkM-z-Ht=aFpu-M z;g;XO?HVir?OtSF&OZB;oPEAIU`NLnIjs{H#rk@4ElDDz)K3l@9HE*94ZCqiOk(B7 z!*4epJiKqOt&8m@R$Xsytf?^YhA>_~#@8>K_aCl*{m{mLKWaWbq>?lM@0DM^^;O&n z@Lte~y90N#`X2s^p`k%&OJDepn;eQx@w(@9m6kLQ5%tiU|6#@O^PgP2*=%wEz?S$} z$%YZ6A?dnji-i&t(~{a=461!s;c6&Y4SZ36wQ)vgdU+KJRAbBvEbT|w?k-9(yag@r z6DOb*_nqSld`33ojqgpr^m=kZ5f}KLn>Q0F(=vJlODusXU_V%bJ!AK6i3)r!7?`{l z!rAaQg{`+NjzdiUPY?_ec#vE!uGk|yuB3#l(JpLo`mSVIY!4}^HXKRW^P5h~eDp-H z;iey6=rBqZ-JzZG*O6)DOX;6OHV3)Ao`pDTL-grQZ1EUb(XW}q4cnO}k`&nztv6!z z9+pjg(;WT{RS!Db_s-8#G|g%odHjE&{wZNJ!xKmCXXf?yv|3z;|1JIBRC`uUMy;Bx zOko7`Eo%l+*%Z~{2Bp@uCRkpU7IdZ9#-1y0jO6UX__iC8o`lb-5ptYHcIW$JG{lK} z?T2JPECNfJbZAcL7lm5r6x5of84e-5=gqH-&U;*%fWuKXi8{k>w}`~VGt z;m|OF&S6BjQvl@CBwSS6wdocrA0TSS?nouLAreUi&bT!m_CXMLBlp6K(F;AFxP<=0QMX+g;36&Gh#94zL}8@7kv4b|L|z!ZZKPZTWqtB{cN60%A>c^7 zTG$Z@)u$V$ttaB|D zD_sVbN|srw@2~ui=V4gJlzOA4K)1UHDMffp{2&LEg5InnNyU7Tq-xtQ8dMTDg*t3u zX%N7_TePG8r&#H@tu1izz{06ic^iJgLVp??`4L>W%0y0i@csI9=pB|EfX&8_O)1?cyKt~(Ya*Jv<{@= z-SL&xL?5W%F9F@GXBA2}&;*v7W-gawGCN)TXIVh&=eTnD4A*&qdliTAqtES)P~N_~ zUR1Mod^H$_1g80GkSrwi5+ecSCGMFAqUa)bRsqFAUEU*_NXzdx<1lwTExdKepA{z` z1Wh=F(-{}UsS&Yz*DH7~O<-oiW$9=dc|Y>mxTldA0A@H!YaGA3AFVkXn^7%hNlh2V ziDSw_4nX-^rWq5|kGUa&qTf?rY5(RJ&;<^$Xkd7q|b{DmHt>wRkr zWlZjynQ|SAqVJlN5~SN%Z(YE+ed3gp`P9p)+JAMHHNya&q~i+=Vi`K`C83X9j9PPM z`Ob_{16fgjet$N@X*n%_bOl1y7ppD}^(&cYsmL?RrnKg;@<(;!Ce{}bO; zEI8qRl0`zR#D(n6!tBHqYR5N znT+jA!UeO8qPdvxiGvQ4?gh|SHR>g?R(KXIWM^Efw4E8a1Pi!iH{XbB~#V4J(Bz<`}{lyxu4W4=YPZ zk0n{ku-=xEhngj1d5cVwD@%$$!_8bKUw#5E{_7Y)@-*~2e7_$?Moy8Rkh5UQR1!VT zRwe5-#F^W3WO~lgWrVSppeACrPZ_V+q{NE^6~TT$3@70Q9wWgvVeNT9uE)9%x&svh zLOfNw*ZiW$+^q^W9Vd=mP^O0C$hB$Xv>!`Uo<)O67BY5!j?lsQCVuyz07H>ynfB>8 z@ako|@uC}VL7&7jE@=wPlrDe>it)n_KM+SR#hyEG19ov=UKa3m%*NhFwnBzMypY3# z?Pmx3k7Ws9iT{q{pIskR&J-yj54 z8Kl!^AL<|!%g^M;U~mG&-HV-@nBs02;QNM_eoXG>UAx6{B^n2sw`vEw-J_qL zchOg~wg?+G?|=5-@{(qh-?An7-3uDL`s^@&zuM>f)xhmdxY1v5HYZ%gnloWcgi*&V zLHDz1hlz}YN_TX8MG%nq$HNyxH~8uK{!9Jfr@*`Z1-9a^F~t6L^VRy=>s5x+y1v54 zRInG`Z*IH;Js%2fJa|3n@JIV)0|jku(%Dnb-n7{*XVO{BZIdF&?90ZTof)&FCF5mL zpBMkEWc4z?ucx1-Lr*_vUkaJ^p~-IY_rrIO4B*n|;mF;@i~&2_&!4|IAqQq@Z$Lxs zl`96`#pMVd#2_*g4Mryw)Rc6J1VoWy+y+KFCC6i~g)ua$zXaP%p#IRURPtIz1w~)w z#GcpytvxR=NND8_vFa<<=tC0Bhx>2-qXp`BCB% zx-3xLzPMDMCr@lRc)?Fn+YpvZ=f)#N9I^2nMDB9l-Po5f3U1OQcrM4bIoFCWG`ey* zP7QQ7vSEs4_^2`S9l%W4cqhAaWcHdba_fIZZjDFA$?GowtfSjn;N&CK#3a?SK1sqc zuH+QSHIw6qVW2?uLn;~%nj3~5g6g8uK+rTXWoc2)b9f0;Sm?}2bAkb0i#ollktp$T zH(!%WyBR8Gy#2rb!zj=$AqOgmG#J~85lz-ML(3|ef0iqVR*I56Pzidkb+im^4Y>9E z0Oe@7t?O!$0JU%iu0LF3zU~SIgmRz`Y;#6fjnijI@08`3sidR&4LQ}Qro0GDMqoBD zX)1PDt$nH)`?$nP#Qho$Dk?#L9}bVaCsW258&UpoV`hUy&(-^o~?NTn(TTbhgXm7F$zK8##cyA`su{u1i9jjzyI~LZLU+7rC-X8@=MJI9N@@*Zj zMDPtfLaWj^ZdZRu`Z?1?cB((X!m4Ttmi!oxtbPn-Ft{lbtZpR#rVXa8Ug9GV7TLdX z&uJHgBH?SL@$hv5;Q*)OgRdxKytydZIqgo&Yq+Hovq%TH`$~ zbcj}m>{$9{*X(1jDGoY0A(*m8Sv-Fd)1}~L0_YOAwpyZfQ9G?@5hF)_VVb}MRkVL}kM|C@kG4-< z9N`x%;|r4Omc@&=h(dpbvncUCd7>L?COCZ>VWq~Lw#WhHedG@5k`ix|y%ABuqXTN( zbeO!~Hkr{!gJHL*Z~T_(!y3eEn0AZSKy~NvP-dLkk^j|^^1M9w z1QW(K-`#}KjhR80^Zdg1$qIMQ);Y<}gJBp@ZZmnPaPh8PJD;XHqdC38wm*mA6c8X) z-RF-YG(HxrS%EbKHWyi`b%@n3_Yt?*%PHU&NF>!|qFdl@+s1NE zeu4LGKb1g!Vk-(8PDY1LW$7-OXeGuJblt2>U+yJTEx8}mDv$S`?mrjrk0_1=gqL_i zzgiz)+u!;q-t#vQ$pM~HLJib-!ZA55tZm5|UV(>be|r98OVH2nQ5nTwwp}M84C_^; zmzZ;e9Xa)%O-mIs3%2o%`6~JPy?e^Y^pR6pCPlD*(nx5fS>NmqY;^n`ew1Vj$&pOH zYuiS#iuqss_s5F=g$u|jt@^2SXC)03!`&&n6CVRo@@B0g(nYr{X=l~ zvD{|lNmm*@;jb$GS*!4=UKUElJ;q@rm%@mijDz$ubis))(|_Q(6X}_TV&hMly%}03 zuQA%=;4N&)K}GsQcSkov7tVMfB$UmTmFu>ZK-^$(vQ<$7)%T|il~v)B4V2};F8xt$ z*~T>6U1hPZETc*kh?{VX`KZZcs{OS`c-Plpccd8M-VFpJdADc!cLObU8)s$Fch3{g zHBe^9m})exm|xJ1gMV@y?s(Vi4v`uzf=_@oBCq!duRa*J_;G(6sZ{R)dMTZG7ohx| zI}*aafM;qdyi4U@HUb&RU448GgD7+mn1dGu=_xHT!Qq5V{?1v@q4I7D;E3Pj~=iNGw0OtxXw4Z##_D)%FOd_SEYBQ`8IG5 zm&GrrSfUa*9^$ZWG{1e=yl%iq`#y~HhPn?YSbEHe;0-7`0iFIN1r+*y+8D^UQJ?ji zf;>)*3X&Lzr-&Drq`<&$ps?1K{~?++s_4b3t9UGO;RY`2|LO{Tr1LS*_tA=9Yt|a- zN*Y8!qxWoYtS!UuZujZ)pLP&ZL~I~n`ig!4`}GFuGV;N*{pT-^uv}Yw z`*ods#3UKASeOr%VLZI^8d@6*ARDms_aX;iqQX6t^MC#_i{G2Kpj2L6#i2_nF2;SH z^e5yR3S%uzSb~#d!?BHy&jL2A*h6fTQ95rkJC!19+XyeyHw6;RNGc1$jUpc7^usc2 zieD}h?i?kYL~wM-t!Ef|LnkUcAt^~OBVfr+M7cc3e_7%SETi)Cj(9^Qb)-_%oN@0` zH=>DPuIz4-?t>(gX}i%eY7pjLgJtXnBvuhnR{3&x?1Li7(B4P=$TXX}q(8!spekS4 z^_yyz(z!RXH1JXm)-8xoMAthS|nEkMSezvuLDdMjH0W#UD<9>L5=3K)&C= zldWyz=-RLpWgJ*LeiuC;(rQRfLbg8B_siK&?}x@UElWq;nlnts4c%$}OspSh?k8*! zWdj0Yo3aWhz);FqGY#CpPzl3*jknfhpj6u=WTvDcv<+ExTtRJ0W=Jo=25f4+FZa!a z#F;m`^7_D4EB7~W+#Wrs^JmCPMRf4Ss5fGdDL5*;^ZGd|m)UI6TZB4v&Z(t?&ld&^8$rO_+Pr3&$ws&7VKlnGZ2Pl0F4m2P)We4#C zlW)R;KXYl4U0hu%UmtRp;*xEW6M|L?W(jmhGFwYxucMs~n$CC7IQ;>c8gUemSVNLR z(+?Ri@Md2Tlp8H|iHjQyCG780>{T&#BJwK${_Zk=H>&s>+NA>fwJb0dmKBgOhnQs_ zMsc$0m!t+~gBz#gVU%r%TJ z-`^vJGm<74Mgq(Je4Jzig1)22LLKFQ&h>na{WON}6o-HM{EE)iM$Q$w0z-CB@Org8vHmCT!< zvY$Fa8EH-Rke0VRih}Hn66T#`kw^tW;eS@uf=8vOL4Y(Ua$%@$KT3@(Lw?3#gZ}Z} z?g( z796wgCk?+YTaKneOwWsGGwJ$WzA|rOU!k!UCGm|%GnD+Kf#<3tDkK}7Jf^3BM!_#9H|4yEt3#mE|d&@a-|=x8w4Dn-uj`+AKQE;U|h zTuLPD&JPw|I3YZv50t;B#*Y@tnDdn&M~E}W1NIPz&EaHK$;ANG`|#4&ld z{=YG(-5YCbUyE(5{^A()2hj3*9-V@;(NZ44O%)Qv3MxqK)2Ga=iB{iWmsU`8F)y$W zKM!JbGTcm(&X6-8TKAd@*+cI{Bc)LuJo@HseQFz;-nGdPrW{!oJA67bkk@o+kUMZb zBApW$s}s2iLB9 z4F~XbUUJ5~$+dyZf96WgpU6e&*`IbpRj}qvQ#pM$?t8BuJp3FN6RA6hKVWUlzcZQ_ ziZvW0Om2?<-E75Y=wOq1V#0kYRn6R}zFc2V{y=+LKx0BrhswG zM#+k_ETZ`W3!~}9Cff_!2FTbVFYaT>wY{4Q^h^Zlps(A9SNAuJYxgWSL-Bri6;}!| zcJu67aI>a2C5jWtp~GV&iFV?HCQO&cglwtA@9x0?dAzY2z_!=w3UgV#)oiwa|Ilog zRk13?dKb2hVEfyrx|y9SJ~&mFGJT(v-_z>xk9+WOL_iXDk0foAwK4qJscKUAr?D9xlZ9<^27WsT~PV^;0yGY!bG}n@rONB&s0&ZE9R9%SyHQZvPSQ6 z5cY+0@4Bpj;g^KXuS$gye`iL%k;t&XX6^#z@=Jn~cIW{zG2P^d8kDF> z{T4iyoWkV%q|Ot=g$9C1tqbi3`PEHD9-EbnQ&`j?{*r zzFI1dt7Wf}yz(GpoS|o>72K@Hj~OzKBORKHn2+UmD$5 z-idnB1C+f#je`P(pAJCpZtVyQoBb7`dajW7BOD?ANwf3Sr`VHj*NZN6{dGMMfm@k4 z5Fq;y{E9AjfVuvC%>8Umn<(vF)vQPWuVTFR6H`$i| zp^ss5w8xq^=BSOmnKVZkzxT!3Hi-p{P?Pc~gT!z-RX`Z49Frx_z=Z5oQ`>sgvwzzG zcEebn(gd~3VxPQU1{f|sRJWpz_=VMPnswj;>`8O_N}Xwu7?RkG?MP?9y`yhTnFZ}T zq@%#$MA#0HM@l!6Fbb#}iK_?=zR^^zWpRxtF+OVbawd(=2&B@h zD?(5NS4H;Aw7g9TdE|;DKq+n8<+V`B8gC4{n2dddenpqgFb?}SG+Lz=xBiXaN39`c zbYLQtnH_a!GLn(Cs%SXpGJj>Mq%B!x+?5`#-G3KYyA10}je*FU)dArfineH?b0#Qr z#5-t`$I~(WhVk>xPDuq`{Dd~6U96TaEmF?<%455KAu|I0-rm}O2}|iTqbH8wdE~k> z>svo^F2dm4=S2kD5&iuHR0AElKmn0XI36_x-OIGtEs~ryeV1I9(L;dEg@$j{0QkoV zym)~3HH1cnx+p3a+Rk&$lM7p1D?Ixzt00EnqMx--^W|`B*NQ};F+_Ir)y91SCQhhf zXN=h79oyiBl1@hVK1WSWNa^Kp(IF{_k z)Wc3v^nr%&PD5sC5|*+!o*Hu?|2_`NU;BV8AS; z9F%eb&HZqE{VlEo{IR~Kf33@n?Yj(XXm9N2Mml8(;~&t^Ry@NgjG_mIqS>n>B4jBTBZ08 zI2p&{UJ$y$J0OF)K6{OMDoErH*%=qv7nKSFhavQ+`|ppw2yO)lkpK#5r zZZD7%fl^xgEq-ccs1~fD3|UrZ5|hh}?RoT|s6CG!%-aANk|-@OB$6+OLua*&Vf|Y& ztUm+80yF*?Ua7+=fqn#iI0qg72&Mj4S$YP(7&;qkUBwu^UTi+JDpR<>TSQhYi7Y{=C(ZZ}y=GwZ29l!+Apz>X}bZI5i!c(q_)0pSdl7>0#EE zAaO!#4jypsDD?jg0~L%4CF3h^)Vn10TO8~%XV~{QKCD{sZ()5{wFh__-Z+Z~-VmP} ze+tX6QDhs2&j!wg*K6P3u+O}aVmmuv>Oq=3kdrS`5AvUYXURvN(=~wn4*a1%^5_AQ zf(=)F;?aXMqXYa`o;XxUh{GS6_M-=8AL^4k9AI_;dw@XxSwD|i%qrFQn&`*5Pln|> zNLA7l=|57Ms(L)t3v&`pYno)k#1O`Ysbfje4dQ@gNa*(wh8fL`6cFAE&(E6`k}s?D z4p#^NiDi<%uwc=x28|JZTUHACQRwya8zQ3Q;O!B=CsQsWL8}%fVcovzc>j5}!g;o` ztgG)WcPHs9x6JSxgvL!aZBR@=PD!1^ggOYEUe6tJ=rC10Mu@z~B@hRaJZBt$&&r_@ zx^EDqiV|#_yf0+buz`k9!dC@bxSB%#n>DLlg7wB=rG7eLYe*^^V~ZzIEaRGx+xx-R<@s?shPj zllx?mn{YXNWIRHB-S3muKSaULe2!38yC;}WL=w${uuu5NVp!}`$to)|Iekg+jkbcr zOy2M~wdHv6CWhX@mVD77D7q`Z-LZ-J^{--3sZWTDp8XmL+u<#)hV3 zHkZN{-+kBJ-r0NcM0}rvjc=_YCFG}19g4bh5C1>IT#eLWB}hGWiH!Dxuf@QU(HQPa>)Ho|`44YNXI0-oQF(KtZYLJT{xEYVSVZiEpp zf}~+fw+f?K-Z`Gnae*>-2UV*j0`s}BUkdx3V&pfi8lpCV_Uw(s6Sp5mPIB8V`>0gI zM-LhmnJFufd9Eakl%(A%vmtEAConC?zk(Xj(bDAwnFqi9Ir6dN6e8*a zQ(e<#5V^l5zRR{S?T)nETy3?sT5n!0iPx)_S3PHlzgqpRxbwJUttOn6->gG#+3(tJC@p> z#FsmZ!ncSmg7tcs!Bl6)h?$Yu|C8HevzB!hUZdJ5wL|j@Qu#u(a)!3!r6sXq2v3JW z?`&HRfz0ehuE{)L*s91Kgp{C;pwGBB5-lCeLC0D=9vRqtat6ckZx*P=NiCWRrKtw) z2=&mMqB-X+8!$KdKXtpH<#xM8cy{Vlq0g=VIsF~xP!MrRSx+?nTUG5cKLf!U6ImIjxxL0u)Kl+nFvCe;jx%DXFV64Ib5#ai- zL4nU6Jgoe0dEYH=OV6^m--ppN#2%ivrB5HIHIa8wE&*q_xhtkW6g}m#v2M(z~r+)`n2D1lr*KeIBspwwoQ5m`Wy*|A`lpt zRG`bh423us-y~UUV#1dLEjEXKTqWUtz(7i>p<*RHN`aEG41WYS2B zv-_fH*SU0%l=gKzV{Z&!Jrj0yW#t=Sx$67ncOUC@uG|z|SyfgGs_#xSOS_P%5|9WC z{KKym!#UJw91|z_G&@lKfdoWlQPlQ@@6s0t3RyHHgvYlad}79kkeTB_<_$KV5^8=Y zf#!>bnRAf&g7GR7M!Y0kB^#^4lINU~p~8P3$p1df?-%g2@>jpXoKvZpeEnpAc1Y)! zBmliP82V8R&&yV{Xu&s`#4Q##&R*1)fHY;dL(1;{#n}EC)U+u_fMwVh`gG{_37|zf z*7zxpnk3$-QtnQ3?^=7)(4?aF_Mlv=`(xB3WN~-YTM&R}>M&E614(_PVN&azzicIf%tFr*YktmGn2AD)l^Z1>y=gdH6 z&B-#NxtJ9vM_{(>AsUO26S(8r?S=Q78~XRdcjR4$k^5Kh1^oR2&cr`G-+!r7z^`IH z_`C$|g@5q=_Ltb%W|YMfmPbY(!atd7OOz_1mX5X&Od*~nz^ql0HAVA}5*7;vxROG* zR1h{eJZaj z<57{G^*^r>kUe+8v4dED!4%hNlErDQ^JOS~GRdTXvLEJ(AUaV&KB0;NMv4hEsNX#g zqi#gmD%uvshg4I8A*zP1VolE1Jc)F*{3RxQ>h8VV+vy%2?LFClDRy2wJKR6mJK}g1 zb1EpIpKb*D=3pa~Cr*i&x(DSxCao+-p_xo(mQUx!UCGCbj=s}KQ3ICoLXp6_(Q{&a zfidWm@TH)Zx?5M?2n1#s_abjN!gMb_=HjmK(PbRDT?)ob5lD{X1+A%2K3xJ@@#`aOCVFiF_nEG&x$yWXIh@x zeGVe2JnwqXfn5PN&q^u{Z>cvKB8*qGtrUxz!pMB7=Hm! zIQurb8d26FBVYQJD+U-w#G$n^k(z;rd+_)oq6xwI5ozT#r za?8u4nA#h4$#*;9hh_1^!JMDWjt*AGwL-}?bXSFR=j)oDf2hDmNaB2sF`n>|pi(J3JZeDr3>Caj?K=H_HwZz*gtkMfB1{WN@?k)be!f#9(x?t&XPrF*4Tp{ip0eZPEv z&X-MX!-?;@)5FfPZYBG?n729-!mqQ+OfJUzkB-C~C;=v478S5h#wXsqkvVr_AaBjHRFHNNjzmi8PcX zvDYbgTdi0T2|P2vZyJZ);}=q)no|nryDIM_QlOD)JunyHkuq5k!UCOuu!i6#Pb4P` zQcv>}oqj)gqE)f%y1IqXS0t4v?@yNdx#Ba3{=V+sXO;f_FXCT|e?3hTH-J>ByW9ej z8K1Tb7$yH!8$sV#($n^WblFMUL4RIBQL-oW3#Md(OjDbXDbeJ!5_vYqwsnWH?27{X zMS=aI!2Z1z*gF#t@w;idPPX(^A%TTHznH+Ud=V6Xyr3{ z`Zdc5$t*khgp`z=B0uEJmYtC3LZ$3q(kPT>Df6vlsFvfS4Cv+#(1@8 zd&E&L26Tz427QD^!E*6GL*Zi2R3(7VdDa?@5@WQ z_SzQz9faL+jIyV_uAZR3qI|Z&)$l@a91|;O3KfRy`93FWaO*iZ>7pE6#(5EPR$yF} zdyG|CR>&GwvJIgh4)oS!(4^dV#M#Zu?<>oQ26A38USY^wh_A3d&=N-{2fN*;2QMCP zA5@kFdh=jApi#RA{B&t4RfGm;8OIuH?;aR+i)*KfsM^Iv*Qf|JS+yKC+FuYH{YE=) zm=zDU|MTzei=*!I7r&s&A=9%XN{gW3gdt+@4@$@tvLls7Vzp6&6-?RHmIlK!n&(!8B%g|{eJc}vvsJ7#fp18H_ds(#m1{XB`T zxX!Rnz4)e91#Tr367HC_isbhXh!$ORN193LM2xmcPnIP*68khET)A6t*_>Rp8mM*2 zfo7GJ?gh^rxi1wTHwuff6PjGm1rXR~@l@#g{EBd{G<#KbR5plP>$6M`0q7X~sed~S zcMfv1>b$bce~9XrE~j@L9^zo;QY5OPDQSwmt-5 zy(omCpo&V9Ssw5()2HPiOlyIf%5nnb?a9Pg7|qggAI3ilE~{M$(Pd2kb;~mZ5gHP* zvIg6M{Z_f{PCqqFAy9Zupn$yNlcW7Zx}@Nr!v2}jyA%?lh0wi3-YP~D>@;4-#`l2mYBGI0@xePA@i+pZJ_;iQ653T7jnf-yG`*XrO}Jiy0`oonYAos1T- z*oT6!@H_n26nR=s$r1aUpDSJcxU(EFzWNoWPE}EjcpDze%uc=0m>A&9<$LtX!nOsD zPvUrQ4xh{Cw<{M4v(!#Wghj`+nnfrm-rI^wDf`bY1t$iJBjq_pXKK~V(3qFc`JRBN zN`)Tk#3U~QvAzGYQIM7}=t~oi@eutq=yZgzkOZ|cbb4+>!Bn;*EK#L$yHJC8t&rcm$19V?M$@rSb ziBrWCOq{vWxeKozsDz10lQ37X3{93fgwrkK!ASM9!C*f?u*NU;=1&GY$npTT&#jQ8#`UJ!q^>tt!V&NH~ZL zkwjTBwcZ>#FCcP`rUvw{T&eLJY0peKDjzPm<}+MWwBU0^?tHap*3UevJySKa+Ly&M z=Pj(mF+v@BR5jHb3IaFh1=Xw@4)dP0*bquJHJ$8*a?3fGaG=N);W^+V4O>UsJ^axd z4q-XM8A531lo~x}b2+}-K`htmj#fwsg2jKdn@DcIY6$N28rQ0EZM}SPgB!U1`xIQI>nCc2bKfqgaOx-n|~86c2-* zyO~f{gE|} z>&usId}f+^Qsv=mIMNcbE2)Z>LwHB<$q4px@1E$v|1O3@;Q))l|3eE!51;jX#I+Vr z;Mu?6e@F1YYk#L3;lJUf6F_BDz(Z*(*u#`5JxVJF5;BU(X5B}R$ZT_}vIQ2U0`^8K zK~dt6M2OA|&=FmLJV1z{{&+CB5hbLyuvhrKc6Fn23oqKLBs1B0R+XCQGfVemFj0$L z6s2e1vF%1vs8v}X!&24~;5VuLMdea51p|KvtrrcWbjkZyUUoPQSFCW*_6Hb?m)IqHAD zQze}vwJNT=hT1m`ni?o5S1wm^phjJmpfFH(FBAKmWMPUtyo~_-GfO-@ymuh?G_6AE zmrSHt@{1(Ab4i#P=s%wTG?sKxvn$h>>K1VVlIhAq1N7_PQ9KrPH4%|Ckj6rjkqNR` zTU=+Jyp&%*vy{w<{o-V{3&Nuaxjvm%O4GpsQx{eR6GGGH6w!G-l~7Sh?zT?oNARXYr!jjCQKzuDrD< zic?`xCU7<|Vr_lR=~QsDjj%B24DqOs(Nn-I!!aV30&_w+1T9sEaIwDjYb_mXWwvEq zF5Zz@WL<mNxEky~_Wop0@f>G8IFQzZUOoi!34jihBg+r35+eqSy9Hl6@k0&AhtRj`-Oi2mam~D={ z0Mf&0*{n1FamnCkTf3<~6fEAPL+U>2&)cIS!Ba5LMGR0`%1qtTUvK8_R;d1&sfqdK z_O@a_8Rtm?KV2#QW(UwmyXsRu)0r>RGD+AkHd3d%tiVbD zooA<7MpB=Lq!ED{4~i}P2gRlOfVQ$4@9|&?MKr_T#^8n9i`3aip}a{%4R3v2oV%ct zMw9M9XQeRPuC>0tIFd$+433|{F>Knr1Bs>fK~*0ASYPi-Go=z$^6=qMY z55^%${#d)_KYGdY9zXpRZKwV_zfD%GzT3x#+uLkw)0QXIJz4?qHA`B#78H}zm$syJ zE0LtmH5%q2{SAx!EUwX1leWWTj$CRols!T9H9Hh3vQA%pqi9NR%+epE+UryNFU4pU*Bzzy0R( zi&Ff?UqY11hW?#IDRyZ#QOYG}6s1sjPEq>pH>IK!UP<%5^LO_A>bt{UPkEOJXOO(c zbX4tyZM8rbWm3?)5%K88C&;uaeXM*xD6dnt0}QZB(DbgZ>bY^!1@tt(<^44J6>LA- z-8<}_9R0LsB>`u2zdyhaA~RPvpX;@M2`7J3{9G z+&0ETq5>pvOwPiKaZE0=SPeEIDA^}WdqSG$dnNop;J$Ms%#;?sL()$u6X7za>Iix+ zx*uFQF%)1?#Kd6J{qfNL=_R%8qSxcTk!yawDUNhaApc$TTXXhRv(l&)~tp zbpjaRp}g?oyA0VFv1>Ku9Ykb^aTq0dI(Untm3g=4g1CAp<*vt_AX{;b(0;j*NPSR zd#dR?CL?j_`ooyx$Vcp;jQD_Fk5nOJQ4BCu6wj@mSE6wSV<1kV@uLT|Sime|6ZS!% z$c;z9v>fIvqATY zTW^+EJ1ego`?qcTKWpe)->KKDt2EYZkW6zR8+t*}<+Y*}OB%lSmY@!t|D(F`yHM$XHr5rtgCa#g=cYZ9Hr45RHMWR zG*Dc^vUNf9VXTwukRTl~cIY;y_%yEmvC^ja9$8yQA~zE!AP;ABU2KT^;(>T59_hIh z9I#zW<8O@OQLXCLnwM5hd|yZuoA?vSKP&ZFP&7QKCU^j2&d+ANU5BF%c0v<54q@)0 ztLtl`b>;=F__CR57{;vACb8P8w#+jutiBUp4nW@nsc1G6i9gl;zFXxt7^Act<`E2g@HPy4hVf>Kx0$zc@7N;ywlEyT7ThYjYw{b1z! zl7{rdK(>NPQ8>okfH{%nIKqU`t|GY*M+YQnJ2h<8_b(p*zrB|ycKA^j;?#s#)B=^W zD(mqeu-i`}Sm+^W26fE>#OkU5NeoJdqlP4MdL)pv_~KEO)f1_l$Tt+pBq}lD0~!uX zZmi-YrPK>T+@5%MN?NiFU5scH#mKp6BzY)f3jV@*0oj2yZLUgwm@t<&H687<%sj8s zr_!=_uW|SFM({jxe;q@U-M;F8aa2=*(OL|4(GwI^C584Xx0$6(r^sZ!q+D5P(R=Cs z4&rycuf+%c?;yU3`L`F39UqP$@(sSo%!{4|R)j91@GY(d=0e=Y9bz`*XX1j8dvoc; znhp*dCQ7<-N5GsXBva*d^SJsbYdKg~ZQvIeB&G#DsS~hOpnIQMKCq8tE)LWuPz)K{ z01Ul17&<*;kQFDFa&eZAv)mH6b?IK1Mm?bUlbva6F7L?da)V4Spq|uD+G?F7#i2fK zHtmd@5~IPe@YM;t)0L~oKkgkIBszpr5Ag7q>Rd*iClrJcT%K`A(z!`t?SjUi73tXq ze=kfz|F=G&`lAJ^>yewIV)gyA?SJjrc#!&tUR2WPGdRyxN<}k*J`H1tVj0<=eP2Qp zMvPRzhDOkJJbB9b?-)ZQ;}{eybov93Gc=9fj`YyU!5jCEKW$H?Py zgxGJ3jCTQM#EoO;!quc`6~vhG)lrS0)0lS=gfc=dmG`r$YZA85g@>QFpB*-+dtW!# zXh-?FxlRk-cW4=oWB+DTR}@%u6An)X_LS`6CVv;#p==9mRJARP*wwh@DEL4X?;GL; zPfX4QisBg2(t``~|D+au(_EYUWgf^)<9mm-T&h#KK38Z&Yne7?eBM+-(}c@vDRSxJ z_4HCvOd~e8($GFLoiUW$(6tIAIsHfZ;P%jiujJG#KR^571}##zxY?fJJ0-Tc8EcY> z28!+O9X@-pyVuszb`}CKTHbj@%(TV+gRHkC4wX@6)>gJrqq(018-RGiJho5;Yoej2 zoqzmf``~!5U0bdhbC#=yuS;rbcm&R|hpxwHMCtZ|a|MdU%GU;~T}?O#W{UDOwoj{j zJ3qdF-rlzmbL4n$S6J~^Z>sBGeYGXxuR8Egb)!@L>MQG1`PD8)DMf|0(2uab^X;!> zl%rJ0&PqB#wtP%AR>TUu!&n^SojAn@_Pgw&Jr#Ae?vr|&C_<4L;UoVWaizD*jE`y_ zs&9Cv8G;OrLd@?RM&%~jDHV%Bb7X85j6go@H5*0=g%-2e^4_z{$0Rx=#@eDmGlYjP zva+4IG8$QKI^sR%H)1dRfE21qD6uJk18CXW6Ew5CV(WmfxhSjU%{ zRHTF9L)WB(a?!G)}pkdJ7!>NlCAi~jQM0&hw9I3@(=tQv_H7e>nKx&dI3&R1k ze0&p(oNG>^VxheTZQ3}zJ()2DwFHo747hRY%hLod)b|G7C`P={r6rmTvnAzTb;IFw z&%tH!7!FKsut_LrWYBu&_#Ub`aNurM^f}JB`7FBh^zs*!JRSdP@a!Pv*a=)3A+!NJ zhjk^*7t%deCFMtDjQJ!c8Zw5EO$ctE6hT;(cRtKe&S(M-_gq734rV;=p?DA!aZ)^> zxrsP*Vl*s}Wt%Qdnw9jb+pMtKwZK%6UIxum7YOI#lxV>b8T!~gJlZ=vda={pf3gSr zHd@qu*P&A@Eg96?$h-!M~)82$zaQrlkT{YE>WVm#1(nhkJbZkpeTH&is^)OdX zYbm7!7S|%BFfWS}mhY6?`xjC9MO1zfm0v{V9f``kSIT@+jF^8D)3@2*BOOT<~5tk4{}uFOQ<+>Mwi`p4%adK@seWBcobr& zwjNk7fStt~bt9@P9}dF)*msTLk`Hpjh+NY}TDRpWtrnN&9(R1kx@fFrIhLujk|MrNE-*lS(F|6?391^K6Wr-HY@JY5PIoM|KBb zk1O&7f~T-|^>0Wchz5k6kGf=q9anITYt4}1X;A|Ka%AftxS-)g9u8A1R>&VBHE8t; zV@^u{7ym}0{?m;wCH$lx&@k;=f!jQ3e=5^M18Lx0F}W3?o*6~s;fS3eVs}K|2;`q| z=HPWDA`77UW6OpbE(T`)5wejLNmJ8pZHJWHP+x`O^|Ch@`dZuNp{y_}I=xYXildxx zA+;^S=ZC@Ss==brZ>uup8W_>KIjVln5C*f;ZBD8xDAr-`{ej-8o!9=%F{v&n~ z4{8ar5MAlS%}RmrJ)Q-x94iV)b6DUlVB@2I6tGg&Cb`pJosdqSH$C z=$U@9T3MiLY2KXNFU|qGc&8|<(M(;k(_sAMCovb3@bY6MNMaP@fr=Sd2>I&8!7ip= zH6A?0x||@He-d7bdQ002=r&!y->w>e7)5B?MY4=fFaNA$?igg+CbDiY2~eNz!J_?W zy7=V^X{xDu6(g7tRew+v+)=)AMc(ceHiVlA^0llHh27er(JBA9?mT@sF{-~eK84OR zJPk~ZL=gP6t=_$R7P?LBWF!8CNC|}GPZ{=tkLa?e*X!bbL+nyjg(}9=b~Rg0-Y``v z*^yG!&9NcxE%s`@asqU&h7+56jnDveQ;r8ejX@+mu=+09d}0OxlVm{ik?FYEm?X7D zS2|{8b8HS-Dk28&FeDr?_)Zj9p8Y&7dMD zAmb7V$zHWV<-E9(_}t6X8{c)f>7&SD?(R7e=uH9HUR6@3QPA~Wu+$#Q_u^l*zPhNL$~x?qo~@9i@u=$dSp{B4{jjo>`KqFkT%{)@;LDc! zu(s}-!u(*D?!HlmOER(u4ZdY5wgElT8?hy+!CovwU=^1=OyK~6Qj}vIp6={4Q}ZlG z%VYsX&x>_ngrpj~cvRHBvy5%&lg^I#h)mgB*GXnU6Er=+Gf=DBsIw?GUuqemF!ZMY zTXLDy5?u(TFGUm&UbB2WDVJ)15vH5bAMPM#3Ajm*t(sAa6Q59MzY6I*VJHub1Xtwd_jo`KOqF6CS#!6DUNFIM~j z{i^i^Y@fJS;>kB!NxC>DVRfvETwx?EFU9`|QhRzb-X`ytQ%m ziGy8qGr-S(C$!Jp9+ACsK*vquJhHa{GcgJ)URcm7PTe3>7EiE)lffrZu>x(WCo5@U zW}WhC6O-{8XRgHr;&SQgrW@Es;nL=Y#kuv&D-l_>WbqX*yQ0%4V~N4aDS1zrVhZ;1 zw%POy!o{pySd1nlbxhBngHzcd3@u$9PRQgYrJIy_XqJxr8&0~03;}0252I7n5snl0 zpoLmmGdZKgnTr+-oki6dDY_oM!=k8&XJa%bDjZU6%-Z4U&Z|0<*Bio?DNO7D6#2gI zoxwZ!+Z}dQxF=@gf!{It@1w0BN`&P4nH14SK{okSuY8*m>)_9-{E4ABIYFs86i-}iHRM+Mrwk%?Nm{eSI zqS>+IV7EaI8#_C2#`5943Q9r$z`<~IV-R@x@}<~EQ+@DOmX*E*F1lC*n826P3XOW_ zcJKOHM$D>sFM|-VX8=dOk#~VcR?r6=SPG*NjN%#mf%m>mvGVL$U00&-Q6E!%a?rCm z&*PxMh#ZO?Tw%LZRFsT(9_bc2jkw=iclsLUfmFX+Dm4Hpd&GGLOwtu}In z%_CA>A}w3qWyw=zBA%gWbBf^oEV3*kSe4a{@1x`fGm>{d`f>)=LVpbW_y5`Z`iHi0 zq~V{*U!gVG3(zWi6f7s(P(Bgnh!wCF-9rNn9C6tGURJ2hC#IrEw1=&#YM8}s@xdIBhy0DaPW>$ z#~N15h2;DMNy1SW^q4HrO?27w<(Q>G9&t`Vfkp; zyO!iO#{PK57r-T3MQ#)m>Y^@8Ib9_9`O6=VS<7H|m5Q8+U=aE`o6=q6?tlel4PH zK(~Q-yN6+cA)wpqFv71PbF?Opq)s|R(a5VnO<4;;4eYY70`CTyZZ@w}A?=>HTp{C_ zs;;i8qN^N@EHTOaM-D{4lI+glb^1V;swas55;X;jOA7Lk_6A~S`)T-_}0{vYBcDaI)&!^NS8o0g|mm&>?f=^ z)QlE`pbermyx=B9a;CVi#K?~bV<*x&Cjcy6;s4&_MPc9Z6EHA;0H?%}?Hb74 z?c;Fd(=9a|T%@oVsA|@r)VNs;%CYM1*n^?V5$ZS~G%aH41YJucY9ydw?vXStV^q8N>{1OUl8=TT}`}gVWmnuVhb(= zxxm#W8^12f-s=JoyE+K!B8`kJ94hjw>Qm}}CLAnHSqjJa$Au{kI9xDMO3P&L={I~NR9OL%R)PlNh2Pew*?zwu_}-rLXm zQ)3A~zj?s?lbo;l#z;H4D<46=NH8JCjnwlc+UW`q{wv@;xY)Xlw9u)qz}V$yvMbPM zGSkr~#o7t4#{J$DRbUnKpHoPEMW#CMT%I7;2_~hu(s^3+s;T`h(ad(2dJM~u2h72E znPM(Mx*O>Ws6{0BRy-hA%MVzEPL>UN1JetCZdx46C0w_(!>9equhU{#a?w5htEH;O zf3ZM1o+OZ<$snNbHS;`Ur~?!=&RKd4jEItt1-EWBMO83PANIM^D12yLKF!0Y`; z9%9%9O|Y?%Qbi3$VXhBsZ8h#P*YDH>g@+MJ50$c>oYZ3= z%!Mvp0-83Atl^BF7?{-qO%d3oZo+IEt)yHkdY+YzoR%u*zz+ZR)Z?=?CSBqq7p#Xu zjH#j&xFHueNIN9QEsaf^+_DoLHexhp#Khg@6(uL|W5ZCdC95LKGx@==zDt}bpxWr- zeq)7HHP|C~>?bOxFai?>TT5|E98*{cX65o>sw+A%2D*!~F%}@+yMsJRwIPn3ZxvEa z-edd3&7S!(MRzlU#31nj9C_0X)HxHFK;VBQx^9z!G4_o^2(eU&S$OE;*vWa5A##IN z{KI*5lI;UO-87FtOrLNGU`O7uGjl-gcp%HMCrZz@?}vSu>RA)5gk38nO- zi!6bTJ;YJdj_e8so)hB1vG}5^dZ||@r(}A;YdJN+@M`aBYin-vl*j#?VLQ`1BmOEK z$fca(Z#9!%)Sj6_moQ;fjW0DaL_e#^vCJW!UdYs1?tt8PGXg#m@?_H0HnvgdbUm~| zI6lKj9zE(pwv%VqzH=ck4a{f^i+sT}kv<7AoF?+lW`c9sti=#1sIA>+k<%xI!59RXE}bDWdDjC+Hu#+|su9EC0z3S;uGr@d-Ih^W9zf3I9d#6*I~%ym==uQ>|E{RJH2oA%0Nl^S;z7%JU$N z-}U$1aepZ6U-F_ISF+IyHZXRV{RmR?Ab&^Y7(mWt;^BQ8uQ}z_2wO$v)g=j3W!r63 zQvPiDW6e6)7tZE22)b*T5c?j@Ue=29_vH*FLx#I_)T&=NemX9qHT&a%(UfjuhFTf@DD#U#lj}B(=;%;QM5O z=$z15iA;`qz^E5KdqzKJ-Oe)Rf_brhF70#b z5G>sThhs7q0)GtBH!mb#)UDTaqcz5sGDQ@o2+>BsVnvH%hSL%|bR8dMcBA`8_4&WH zb`DBf)MDa8hXjXmtw*8{;?z^I{a9+9O`TC)5vevzphX*P+_4uLMmUEIHmM43#wcr=4_6MqN33U|bnXA6VOI@yk>w8I2s}?L9bHnY`l#Z6G-ThJB0J7USXv?fR zsZl|%I225Mg4V`{GsU=5`^GRkO|#tBgJmSH$!O*m6x_bs2XZB5&FkrQqN;4|V7byu1u@%Qe;B&KkiCF=G9F7}HPO*VdH1;@Ax$^ufW*bQlH{`^W1G&Dv_5fnJQz|6&xaHsI9cpX7PT&y{FT zsVm8O@qa<&4o@)^AE;}`Sla0C{|%4t{qq<#W7zONbAbU0Vv;P8;uG=Whp)G^s-(N4 z0v}Y)C2~XbzM;3{00j_USZ@rSOKGtAPTT0L?Ev5$wsg73mpMh38Sm6Nq=I-UU>Aqu z$hbP^%XTwQg=gLfupeIa?x+VsMx8V<99&r(>EGA z{D!H*@HkftpbO7T08wB-0C9sk#*oCyh%-FdQVRYyVKw-fM`PJ{zTJXwF}k*?Rwab=DHz|>?s_ty4P z6t?fxkstqo5>RW^upr)>Iq`O>*~D+=FU@zYg|)^~YjLUC?52N=@Yn6v7zc3J`V3<~ z*f{uiYY|j&04868UYkSn#oy>dN-V#(MCP`Sb{(cwOBbhSjl&Eqv#^)&vmti+uWD0CGQ$N6v8Vszxd(=MKc=qeY z!Gf7(5l`T7SU#g&P)C=-#q}E2TBI>dnGo?pIelyeoOlC-uQQPR2YbWlB~-_w!O?`}Ou>(t(wJT}(ZoQ5XYAf=5_+FQkWE%|6S0H8mcT#>pv?x<3jS z7){Vhjwpo^b=+9xgW&Ux7dub44}ow1i>b1|$%*wr%$~q+RxW2s0ur`r&0x|q)v#dS z(o^)1!z`GqdCe(-hI{Uf#BzFdQ1LAuXo_ppq-ry#G>+b#JDHtRs1)$dDO5cekfDEE zMfFJfs!bmh45LyJ%h#m5us(PRCLw*`3QrEm-E4M*EjTKC^`OZDRfX_M6Sw7{ot|r> z8Y}GAl4;vWzc?Knj(%E=?;a^A8;_TAg_N|TovQM*l3sRXFUI2fl%c+ut;3W?51<9^CJYdR%+1WcBz8u4t zC3H=0Knf=mBn|;Sz*`kQ_1a7HiMr^U$h)UIgo2HfT-U0iv zRpsB+rf%t7-OB7@rDqeaT2)FX(rl@%+^S;sA95BDdTtTvDQ(ck`4KR%@yPSpXC$5P zoyR?CtoHGksy|ON=A2Fo?VM<(two>TeQtlob7CudP;8}`SW6wdlz440&_BLk{KKPo zT2b+uRm`WJfQ>_l=G{t$Cm%pmV#hTRxr$rDG>E(7uO!3Ehj484!e2r)Nu zvAB6GTh)Z%a1z09jUb-UjFe(Rx(0H|Mby{ZCx00XP9#5eeo;yKvMD0S1 z882~YD~?o}?nsuk&gPtnIH9Z5xJC67qvJ<)H3k5_h@BTZM>{VLk2YRxZi}PsgXijt zm81J=^>(?Xje-|2@2GdqJIg|{u>O!H3z9|(l0G9Z|CT+b znzo80JmVWm>1B{zeD=xdJJq&j(McLl%++SQwcP9h7U{LTgXd?Fc>hmM$ELaZscEie zYBpe{zQc?o82-~|)HO#U!QOTj$u76?-rrbtR00V6u-O%X;gA@NEncoT;JUQGF z_c;0;y#vV_sPg9FQ<({ovabU94nW=MCMGj4_=r#CehQ{&CQFFNcj|Z_#znKs7-FyN z2cd^HDV>8c!r}P*u`$BQKFN2Eb2Dw0hkwV3lqMVBw`WL&kx~oM`ym*qsCjv7fEkVJ zmAN@t(==XPO6MDy(HwcL{Gj8g%yTjppBNgj2 z*G5T<6ehTYaSw6PRF#tBiD@nuQ48FTGg-c0qg7uQYjoN8J6W3*STZy7j;9~e5EuDf zRN*o9>UV2xO)Tjj@k>q%l-l{WW^QHGiZ^>|r%#n@2LD~2CFI;2s-)6?Enbmx+chK4 zp1`#enNgkG<-0KfBZEu`;PWMMufxjF(6WmS}uAr76~j z3Nv#@G4w2P$SEqyFjFh$>-MZao#yE4*TDH|arbeWMoFwQ z3=AJo{5GyAC)K~sYLlxOkx^6f&UdU!2(8DvX?WOqkXc!v-y=cWRmj`5}esb zp45522^-B$=!Pcq^>}T1N-@uk1G z7cRot;o2betZ5iU5xPfV{$-597UbMUwdKXaT{xKVKXH74aO6fbi2Xy&7pqf+TAt3Dn%O>=n>Iz_+epXQA9(hgQ*54n1ka@IhA1;XvK6s zj2#Z^?}2neQT=qV@nUQ5xm~S(5kHFicOO3#O|c?cOJe2W%JTjD;*MCpcYkI1r=M0H z-F%+%Y>EnFUs_3GzBb;hh21k z3Edv(EwH6iOA`fcbyzg(e@SF)s08nrE*w@_Rq{?~oc%G3@z~W>A1L{Wf?y%OoY1Pv zl-?HBXZHB?x^uAeT2{nnEU3sHnd_aT00K%k1 z{5?aA&}JHXRAwkc`S?rXC_Q1N8L7X8cZ;R^)9F=;_)UAY=nY_hd!sf%D!KE7DU8pN zM}Jtt%VVr^k6$o>K@|9);za5h{C9d5{x6e<|7(nD2j~tPQ51BLOMp7EGw3wL!oN0l z7L(ou`XwM93R|QMMzZQf`e?5zqsqfGCBIkabF@g%J+{?|0!u8wQ58P<79CoD*|%T5 z=Cr&a4?pKrJqjq*jMSs4)dE43^a5Jk$w*eKqO@WKLJBz|MpVD2@DRgI%1Exm(Jq)? zZDH}Q{dmLvk7NJ->C4;JViRkwqstC9fwMQCw2u`u+(>4Qo@T2m`)f5COHG)26Hn}1 z@AB#rF)b3w<5CW34KEb*H*@P0Doy_@s3|J@Sx+g7#VEYBv;Ar9Y(!usHZ~iJ?;Pu- zea0q8gg08Cm;kwQa=`o-zDLU(qiKdSJ_*hlYSvz_viyX-_;NL7kX}iJd7?Tip_MDM z@Ym}MJ1CW1`l}@=S~2|iJY?37)N04P5>Mh$gOBXaaqyAM8VHqZ31BG!nOp8cq!OlU zRh{eYb-Nkvh(Oc)u#P#~U^9o}r^Yh2&>PqZeUIuEat4BKm-nHBg_|^T{f~M>$s*y1 ztzT&ayf>?OS*n1-PYr8|3lptf4f9P8WR|khb93h96BVm4CIEJ++5x*yo&S%bc)yHLI!sVOC@Rs`-(oTBz&k^lFO| zI z`w475G@dI6qRM3Fr&7$Q181fO^}DQ#y{;2_swd(-r9xKlZ4Po;Y6O6b2s4|3w((+j z<#7MKrH{S&@@yJ>OhU*^7-4aVe+$td(zydk)aJc9Jw9?eIoNoyyYnQGeg^-2Ke(DK zZ4z5EC3*^mkhN1!>}F~tUtJC-mmquKyj_W#U5S}w9?wY$zNJM&6?tf=uy{Ln<~kpW z@@Y=IJGyx_a02;#<#AoZVz4jTv|2`v?VB$ExoUzwle_rP+IA-{Kz(b? z()jpX;5<0IEcRE$(wg|Pc6k`rv^*LLwF|Ep&RH-9nRx8VqPe?|EiZk`a0;mz+qf`^q(rdayoaylIy0tkd8ziMdc@QF*pyRWIlnZy^XVe#xdajqemZR1FK#sh5qpp z6%G=|uxkpXn!AC#7MaBvxFdAlNkl%9JZ`tQcb~S~sJ9_0Yztd!tm>zq^9pKYDG5{V zKB0|@X->qISUTtSG(^mq4?WVY(xrHHQ8eJ(q;Ny3gfTB(1>pxL48~Z59&2_;pKq9v zz1(;pFjI8r6qp4-EaW&dofa~`nqDfaw%_Y?gze-1;M3}=RWlcRX)p@t=Hj=3nK~w$ zg2PNQ1_vRT8|2u7(^gN`U{U$FRS`cd!`XxrNfhJ+$X*)DQ^aD!5;w(Rz{jBm^I z7ibONSFhvx>^r?ZOXsMV%Z*a3%Q!@;X;~bMcty=3S9{6oFPBJ{@HKRi?=1XrE}59& zGKkBKgS<%;_Em`Yp8=PKG|3&{$ebB?Fw}8opW}bwlr?D&`9hkCCQ1k5CYHrLh+N1VfUsbpn9dDG}Kr zWpj^2&Hh~&_iwdEth(R^Qg!zu4~_GOJV3G1cqkV7&IO!qRvHf)%m2W^m3m1)FR;)c zaYCmvN*Mg%7nuY}{#u${urR~Igab;hBfz!AgwE;&@GTOklwbcR>px6i{^6@QC7vvK8 zbmo6ac#vVOTnbfDn!BO-)!wbN8b1}5$(?4AZ!DwBX<2N=_b%t~-$XoRjy6f-uWw7)1P2& z%WoTRmhZmB-^TFx3?Ea&PH?ZW^6^3AE;L%X|5l%}3)BgkQ5~nDV$~)WqM9bXzZr^E zGh(r7$_h|==2r*(LIzn)9mwQyRo?$ z9o*0aGX!p!eUOAr5|y7He8g;_bL4gIu8LQn=x@A0X^H{Be1MFw=E9jP`d;sJ1P>yR zx^VnTOJy8ceGLOdNqY{+V+T(eXlG zt*9)$eb*U8;=g$OaE^hKVn#`29-~eW0HwyEp>%=}ogw`TI3Dg`j-47XZcL3s2Tfgq z%~i9-ok%%$PlIvqRCS7Xj~LMdAK7`;(FuI$(C_ihWF$^q=i`Na3e$FJAn-_{5cvNT zETFimtZYWO1d$<=c}9~k~q<@WvBDl{oh&N$h*QEml*Qo^+6rnV2?2+#U< zT&vXHaFkAqppMOH6|QDg^T1f#1Lnqdx|4y+b_E@zpjdfVus6qfzcKGMVg=HS7j1!V ze|mHK3)9U0A{ZQwf}#ELH9i->xbOaDE+Rgjp9SHEo4;$ixeoN?=+h^|)e7CLtf~{W z`|fJ>6a2+XkwIWrcXwWFzu5b-3Y#th{dE=S%j^ISVt;#3NyEuBc?gF#>eEcBoND#A zzhUD2_VL)GACUZU`1IPd%}sV1fA;z{JpgV?-*>mT!91L-Hh$gSI1<~>_mB1tR@GB> z#_=NT6m)WD2(#dNODOfF!Sp0RF@^%R?{vZdj!`lpT?a&C&sDInDe!!<46{`|fd9vc zw=)m6NFURXpzn>4fg|Gq9Ks@T5sbx$L2xGAa|cDc0!L>!{LvwIA#|l~aM`DMv1K^i zkiU@cbX-|YmXn^43wE3=4}Qa8kqxoCT1g&Z30IZWp;bPlhRGK4n`RrZMr|&0)z%q< zD-}G?|7@K2oDTVR|NZan-J|yQ-qT9QcVPBUgP`)MG8`ZKUI$kNzKaDcJ+KG_=l~(y zMcR<1|FHp(l5o~4U)CxLP^E&E^ii7Q*dhm*CLcN1<g+(nr=4pmF%s!rehl;lwu#OB&PfadS|^Y_{9lLx0@!1|_d%+7cMvkKPGj z;}a-?jxSvnTULwrW6LVoku3{xE?22#S%62{jY2FC9OKtTJc#2j@Cd!L$I*KA9~E&a z2GFYh16Hf5Ay~3A+S2i3xuUv+;=I^*!iY`n+SVa$8%W6VL`=Wy8xVRgP{||xxS+-$ zj)5RyMpb3!#UT~AaD8px|KPeqfq*|?Zc7!HifIdBS7YYNQ0=CQa)MWsY?@FSgd?|& z&sF>@5h40=N$!L`WJ7XkC9GT30(*%??ya=HS)!s3U=`nF7H03_3CBL5|N5~IfZ3rA zuW%PhUO=@mbRiDQ{^_+rTuj4N=XHewJ5uHsIrsD}JWT{N8AyTp`-7;S6_S^49E z{83*6;NaJ*L->T(W!_+{3qYdbM)$jYK2#%u16>#Z_F;8goWERns23hPFlQ)eVaX}YA6)$qnN1T zeZg1bK$Ey5SkL1Ow;{%KXg;EN0aAM;qEkM#<91Qb4+xPru;L0L9qzSMUH9^2-QZ;#{S1Nxc_n@Z6 z-9za+R`pZa?_U&4;-iqXMACtXZ&WSYw|I@%JTf4=1))o7CTV?yUS*wxg3j3C_?UDi zfo2Dvw?8^T16)LxNkMXANd{o(C?>uVx=V~5jhn>pfC=+^V&?INi9gZyQ(u&(zSIEC zA@&PiTSF4<4G<5YuZrEHJte|qbJa9vkK_RWTGF_WYM%7V7HKKOv4B9`XOS2W7|K<&8o7gmCZKDgDKL>TS8rh zW64pWbIB|{n(R|iOl_LLl0-$v4_vxR#bC9FS5|^Heb*TPf#BM6B6z2P7DuPyp1T!U zqgmdidB+&R-ss<76>b;?;VQDNV;{~gOi1MX0)r&Xz)!u<>01?Ca=h9C&`3uH8C8@* zUZAO0Dxe4M9US3V78H>%1WqgyH!`&kWOPF$U1vPBQp%|NO6DRbRa{OB2P)$BK*$Pw z99iMJBNw(0N`kIv_>R0AL$wXg(Hslw5JQ3u$QtV@>W%2$EDv(t2$WEFRFj6>QHcMw zdUx(v$ndw04vwUvm^ohM6GSD&jw&KP3COdINH97&&Qz8xiu|{LE=tU)8dR<@05wbY zsp%elyvqfHR=7$b%E(+X378rF8~p%6{s-|xuO`2~6F>Y=dry>B{tveR&>GTaTlaV7 z^V~8&pr1wlFC45Y&$PUc?%WY*^7T%<4v8fu761XnLapoK%&!Y~)WKz+P(Z$Dj5Yg} zU$5miF~(H0`HQ>=%j^Vv=y-9mhk3C9bi1+hTA&FW_t5^%rjiC~sF;JD#;TIDYaTaG zuRaiHu23n-#LfmZmugKAR_4mb`$P>m#nuYfq(;R}Ybisd)AxFg;n`hOe|#96x#6&r z&H)~|Bondnp}ct6K!AIP_eBGCd|vJODFdgu#n;X9DZ-XVsnC5D1EG0zZA=c0G!4HzO_pbyXP(cg~SBS(7G z1LW z1>5d=5vK03o$)BJy*`d$F(%8&8+dDLcelO$8YO%!yI*5YB?#e*6Ickv6iFsBS3pMi zr|X1r8N*X&7zN#na^jF)R@${nw?(HM(m)vJREh*G!W<9z{FnCDzcH6PDGpO`vq4~Y z2x2Wc-lgt;dq%l}d9n3>&-VBEwst@{)P}tFnL4sGo=H6?J3Do}597(3T7^ z+)=XS(e9z>1B!il(QrbysouaRpZLZEd2AFq*IPGt$ET%h*-oc?R+!fc^IOF@{C_WA zqhTgej@1%d(h$Qw3HmCPsR=W8)#FPW4GM5BV<({PxIb)6r?u#sFsbn_URvofCN7U^ zg*+7Wy*Kw|S?vOSZ*H=xM{;DcvNuUR)#_fHVyU$K@c`tgeY~@ZImMc=`#N}1lj#Ly zE+$D~rvV(aaFV$<&~u&h&gsKPd<$G2lQ1vvD(PtB*{>T13kAcg<9T;+-NIy3ZIpxU zM8yVSk43xPcRcwCv@ZPx^h@B{b||WwdwaX>t(^m!8~krCJZ?Cm`ux}D+xqe5CjQyX zJg4h2?;JmO&Kps~v6L5>PU**ZnO=>VyABOz?z)thxoH)Mc&gnV@yr4OKx@XGJIW29 z1p2?2!N{Eke|x9XhqIKx9qO#nNw<-lMLU5$WR|^d==89b`vtGiQ~2e{;Z}l?884#P zc#N;%hvmEa({dSJVwa2w$ItvWX=TijUapD!un7+HLjj8^N8p|Rlam)UrxHNm>Q1*3b&c+<*O0ddJiYHyEx(M3PDFvr7 zB_1zZ)VOfI$y|RjgW3evp%Gyp150*+ah9PZqano;Ox1pbLtR||k=X9}qlfK>_Z4yQ zK`_!GoP@x}6;>;kw@zorGG^fwRIse;d;DVxas+trF6Nfy0s)(9?C=iI#q!-a+fJwB z4o8we&~dj9`rP$Q^yCT?P1mcFgP&Na?y5tM1=O@kTs-E|!ZY*YxeidpO^E2GtqGgb z?GH!fzdVYgpHBG*3(D&7)KMUIaVv5lK7&6B#~@2EZb6p-MMsSiTGeOYS(wV2tWiPL zRL}iQRiffeXY;MDTR~rPYF5<6V_mp{=J3QHyU*aHdMzvW+q5h98-K$))?8KO`YIDl z#{(`$X=Ql&fAYWvtZmwSk%6ah=ug>L#i{yOLxn5m&&{dVaC69C%Fy{?==sAzx;E6kv@~aOT(4>}D zwdf}vf~7#QH^${+Bs!;VhoY(R1Xhh*vXo@jG2Ymb89DJ|B&^H4+-Nj}j;m0HnCd5( zTIXZ_?CxBAsi09tAX1H97dj4f++AdFX*IgX*6u$db0PQt6EsOQ)}WJdbJI_+RQLaX+AA~Z$1sR`u)M^4QiTBa2|c3H$*6e}mL zrNT@__l+2u%uFcG$33SkO&m5Hb=siOBX?{6HV&YNwl`>_;lDRPUzLiGSDF~@Mc%Z$ z{augj@(at0M&yr=ekDsBVe%0aF}%VD-9Ka?3oDB{U!_{7Qh07P zBzrSo`dj9uYEG-w+IwuUkQW@ZDw#v#wU$L&eKCH^GJdth%FlZB-7s8~+s2FwqH>UC zBN^+XHczVWqR=2@EDP?rXT}FDVxS+h$cPay_iG}mBbD6_FQ~`~8dSppQI{9{#42hy zA#wy_33>zXcekq`9Rfi)7wDYKWm7^9|3Oed6%ikn$@x=;2A~B!;YKa9t&?-BUYg?o z|4=qIO*6ITyK1vr69$6MrNg%I`4#;$JR zEnIYqoN<)`jj6v2_0D3DmIgpNr@sB4;OH~8rjDw)@~16PYGl=x0=?$U&r$gJEX7fa z@Z+dIREHuGkF6Z}7$2HiR^>XhA9L8%>>w_s`b-7u5_*q(_Xbp-G-Rp$kjK5uQ@E}Y z7UB=;nWeKB=FHE^RgWlsaiVTSoL)tpQYw>_lrh=9uI@?iy8t4~`(?t?o8hWYe7zMNH8Bsfru*dJR9&u2EU(xh&;jTA0XetEHkuWM#>$(u5{Eqtuv^ z4z=ir9pE%WyEKfn__0Gn0vS|YHR=AkMN@is(@UqkH>Vd+nYWGgSS^tfrU#~E``GSU zc&&00v#GilMM%eot7(~RDUeHWS9s-mnW_XRd1;E^fS>7|fj{>@biMdj(wV!7uiPLQ zU**u5f9eFR0obN$y<)Dx?E$j<0C{`%GfAiP{FiQcLubGuQpR_`$$@azGhYf}$bLDX7v>$ZE_|BPVsH7sPqaow?*-kpuHQqgQ+HIBV z;ey8Ld2NcUXrkqt-&SePMZyP{C_=jCn=ev9G#Ekx*b+Vs`;rIi=W4k4EZIb|a8ALK zV*WRN{*@@7Ubiq_V3p!l%HK-)TPc4lsyqz!H&n;BQz{B-vq&hCoghGMlpOzWr=>@5#n)d++Jf!)*)zeX_gV{;Zz1 zpT61IdfRR+;rlthYetwYYZN*mdz_4Y(61B0b5?nbK*885LaJqNT2e_-SzYZ-nGe3} z_8s(bqZ}R*47zs9UkQ-e2IF)GeFf%~huI%gFTU!9G<0Ho{KJ#@2Yz3SP%uXl%9-nY zkUr#bc6iDS!WZJaJn0s)w3(xz@aSQmgdaHN9p;d?URipqr+65k>?PP?O?+@K=#+s0 zY^2QTn$z1HJo?nbqaWshp53y$r83TaRO5uW4?c`jD6~Sl=*wP z1P>?AOd*J|X4(4|!8Earhgu-wICz3Y|L z*DaVNDK_7|d9u0n?BMY28}YV@k_!GJaf-KG!Afjx9Bnk$qUJmLsofs*+il$dp3tYb zVe{P%Lh8bYHyb-guQc3CNWel&zG=U`lPd^~AKGu8vMi*Br>@g&zuB<=I$fp9Z75!`RQsc5qjyt+K=78|txJUvuupwz5b&~^(-n^v$z@Iv5ou_X z4-%7Mlv@3ZXlgdYfAT;-H>+WO?k|^@KjoGcXX;@6Sv$>B$d`AV{*G)q*RdXcmi1;R z_^`xXkmBK$i(qjO$()hQno|9*+aGxlx?Mux)@^Nl7U-MCGL3U>y|ct`CS;JRRJZ2@;7&VGlMft$igILoE;H9 zSQRD_XgdsH)12#0btOK)d(bA~fST<*RiUNQN0H0<4BDy+`3SEa>Sp=-k#UDi^%!k< zNwo)9T;P^-#rW>Yh?FzRdmi@27*iEh%pUaMDmekGj(2{KG{OYBC}j|6WAcs}`vNt* z$&b6^Q039%yB1f|AX zzmhPOUK{SxWJT8;iM6CBIaJ2CIummsvXae75EBUy>6gnc9pm+Ki);MKXVla>Z?$2m z4>k_|O@$>ZhAEBBz?1=cJVdmvG#)=_oYw)QaDdY{NY^v<3?~2;|528_{7riJ^J{6m&46bqYrcodvaQ}FOsx@kL zRZA6zI{;qi#RaJqXrObzARQ<)h>xxx3@O)lG;oG+3W0SDPGov)56#4ZxYxMbFwUBJ zSvBvYy%7FT!DRDu!^{r*i50urJbZ4qpS^gw*>1z>f$r%S^n>+vcmij8`QZ7^i@gJE zw=N$4w8&BV42GP*%?I;<5AURgD&1!;WWFtIZF$DlS-bPxsc#71H!cOu#MdTu~l?iF;er5V=yH9XdbCy3r?gdJK;x|KZa~3U3H=I z67vj$uHax*i+TnIT0~&qVnwx~8)DK02e!770bRB0s0(R&XK7m#!ISN>BYUdG%}kLLKr#`A5MPUBZ1{ehz73NeuaeR>q#Gb4W7FH5RQgqSV-s^kPKD3b~p%{-uySCWhn|tW&C1DK}#f$KL47 z>jG6R+*=WpNP3aGadbj)P9nrruGwoN1I72S7|V&Y*BTdt1)yR&iD7hI5cb6E^<`x8 z?k~ojF-ckPNWb#5y}P%uwfAE8-%K8$^ws$aj{*}Zwma_AQw1<1%+Dh|QJA_Em2427 z5VTv)Tv;1I(KLZ&NoN#;0Zj2-C}07B)g>srszq8O6RQF!1uad9n;Qfr?4J|lWmfYb zyDrdoo9Vk=#m_LVw%psA7nlmm0%o4W(iecma@DUh2F+`LhB$VR!L6@UCZ(1s4j0H9 z8nPs-ecTZHVQ>te6a=zFW_ycex>7-?e=J}jGj*}?6d@cFH#r&mxb08Icw@`!1an7| z@gnm7&@tYmf<;nxrH(E&M96p`M?}&8&>rwy(}vWY6M1Q`NkCzBfkhAIqQY%Mr3V*@ zEC9ye5g$L}kxc>eINLn#hxm7g47Dz@++Ya3Q?*x>X*puQLo7J2fPiM~bsSFHo$;-Z zt*(A>m_kQQYoA&zz-1T&=~ck-BI7Mt21LBG!02!Mx)`s(D;MQ(b8;t6UHI?vCn5unD68sAh{qE& zuW8Yhk3mae5OKGlU@L13vws>$BUrR%q?3shKue`kG*KC(3rrFWToL!GsUFhymPb+G zoncJ8WfqAzLR8(>stu1yQ5~t|1X(Vi>grgkrwQ@~(FXHl+3zYf4y`1L>pP@#L|pb% z*FKalXAD9$_JE}%LNIIW6AQBn^<^FF*E>Ev|07wH6EhQ7Xu&bx{iCYD%aNne9U64K zu$f=fvw?G^cn@d=gPEe`A3SKRqc@^Pa?tT(dWt3^e5}7s-$Tv7SIS&gLncCL>8pvg z71h8eD*`^k3cTpYk45uJ&^C}$vGRvQg%qI?PJ$Xp(@NN9M`a88yu@U_!G>ejp4e}| z@h5CIV;9wLf=gW^_novES;HT6^E5R&8eD3ZB4u}dy+?Dm8t*i2C1P^t2QzP+0zk!V zLvxK>>UWYnW1-WHwhvZzc6DmUPu%2= z+~YIsUEmKz?k@Qj+W3B?Vpg=vtDcjnWH&Dk$+h7B#-Mhu+`ao#T)!>=EwAIzDM%YF zL>Zjm$q&Vd;?_Fwq<~ych?{Fr@ zUXWInjGhfAeX94a@19fsjkwQ_t%N(%kM9~wO>`1#qLWxF23q~GwfrMFJFbyqgC1ft ze>%_#iv8aPLy&*D`Opw67HtKUMt0H7uo~)rm6C*Ur5M23m@gJ%@VU2;c^xF)o=+GxiEJ7;MdA2p z8DVo?lpPGneR^9B`QRZvUQplBmgz|IPhhlKWH){^1&kv$N>-$05zQCa7)>uWmjNZ) z02y0QMF^dKB&jyXr#4%mGC|GIyc?WFv|h$tbC+!3S#r&}S<^y^9Q85|yXeZN10i4t zlesbU9kbu9-CgqdXElIruhj*nvc+bj(LDCZY?oHCD*1XBj*TMy*5B)4wyOBx{U1t; z^-1}CUp@R~8#*WNeY-=Pw!zvMer#1WDE#WJ@f}P{DjdXgV~FTbq*bo>@E_SR_oW-E z=tcYi!w!K#a+tV1RL@jXtt)1gMA=fScJd95%yjOY7d0?4(Bkl`QlTU_SsjpT{syan zUsCCw$c-q`DBU4D-b&`*s{TWly7Fq3BFzr~_L-$mY9Z1$ zsrg4D!vdSS3zXY0_6*(R3adcGbdw`$(4r=I?Rc2Q+T25moT)tpgwC z#S3SI_d3rHf8A94)WkP!fXa=n!$j^)m^QWv-zdlXgo#WoV4)(Q7EAiqc_-0&b?51! zd<>t~Yiqh%IBM9VwlaQHLD^87KhUfRU#S}4^bhl57bNf2UYzFwFR~mqGINLw-#DQ~ zIoq23!B%t_=1qV<(1+)*h_csnU zj`j|kqS>=jOFWrD7`q(9EvFzt8HBm^repuU3FNlgtQ9A&oX65TSXlz3JZjo}mFb9A ztTWT9J6Ll0=$FRiojTPfF*xxW;zX0ZnG5rp`k1f^+TlmX&A>6RYw$r5lQNQ)XaEgA zz+(nj^xKK#cEMXV4X8ua%^PCDZS)$#+UL^?+o&zP>bBG_u@-aW8D3LbTF`6SbDvHKN#JsMX7x9xQ5S}{2DCk}gwhGN;-3z~qT0_E8z(6Wfd)H27*&-8D z9y%{&vr0ornxBfOD~YbHf9IH}43kLhJ?+Fs6;9D(K>E69TySn7q8+rO=jEKR40@@@<==)O;>N-+@f)(D%d7j#X}(#xhfc=^G@MMVQW-yBmc5*aoCKjssCHGqR#E+%?NWoV0kqcM z{BPrrG~4}eb|2`c=`CX@Cu-W)Ip@4zb4QuFrI$-NX=minketPe@>!ooK2w+S#e3xO zj{8hL04k8rrUzIUlac9b1;a+tovDYdxG6f~+YjC*T4tWzZ!9;KQ%&H>~;rRS9?gRX=d{=*3mV)mY`HU;KT_S}D zj&5DU`8*lyr7Rv@ybAM?CaAnHIqtGIzHoYYB{q^tpyZ1r0Tc8`MM|fqr96KJ49n6i z#n8~S<8H|=Db{)Q-SA}QIdQL2xCPc~6L$uIJNO7-P)lbgEl;(7 zf$f+5m#^Cx?bd$2x3!%pzg2dtD>d6DQX)V~YQOnUtrXOpJ(L2=>P&1bnQ}Z2@8^x@ z;r+`FKt=$X`H@bCLuaXoVEro+tUm?80x|v)oav;;E_18`z6+M5WsTYiMSBrZ(}c%Nq{&8A_eGAv!+S2$}js^ z0~uxzRA!Z|;4o!011PR+cui?J(BF zy~eq8*jW|}``dNCiP_$Lx;T|r(j;}RRPXX&0917xKTy%}0q8)ZU?`0^xhHp{iAZN# z;2(?|k-3rzP@LjR$>X`XYa$z&!Xya}Cy3cg5}R&H^1A$5e-(nvwkRUjoMqH2pImSn zIu2!>DT_X4L;%Cv-NJid?eo>>-{-98=x!SfRO~0TjLy7K=akfMvAe~TVc%Q%ykxHHNmFg!A^vk7BhQ&HaRl*d>F9}UmJ)Y?FSO(LY#M!V~haoU^=q5Ta>=F+N{4S=P zLvtg=Uw49&lSYO3%M$&DyMw=CoA?_x%)5^u9AV$`r9n3gylz$?Vp1Bs_u=2kl#5yK z)Cl7!YTxv8zZp?@8Bvz@ti7UilCEj^H5C=&~k--Ha(HIfe$&{d8IS4+s>S+m-r6owcZ)D?C} z_sr@d4Clvr6yu=n%<^Mu>BJ~}x+muRUARV^PSoBtT$h>P36Fg=<->e>@N1_DT7)8L zAm0y5c&}iC7{xEa&>cj94+IveXYk)!{q5>b<@VrGe&ywCH>PyxWIRHh-S3j-KSbuw zw2s-OwvO5dFJDNY>7f*np+o)w(QlH^mcU|`+YMcsN{Qd9kjm_=7r$%jAl`6BjgcYHT z<_!?mO*#Zs`dIgA0TVVXRzBg%p(GC7(KsB4yK9v%6^4o_K>^yypxrq?Z;ycR$slRT zY;RV)9MDiKRQI0z-`30L`{+TDEhxO0@YRDo9J-)%NJ?ldNyJ))*H8?8@**PRJMr-U z!#;+?b&zi+(gNn>$TVtsxK5vILgkD+x4d#esavT)5vdq-!}Y$)_fU1>EdOj`XkP4e z$v{9EUOHqZqdX3Z0dWBUlqO5iY)K0sm>AE4eVpc{&ju!J;eanzH|pXvI79uChlW)1lNTHeTvr znk`Dtg+8n(zmAb#_Qq&vIldr395IPAG6HHadInv_!~&J+8c-hcXi;55NG}*9tHfnG zsITs*(~JQbR%on`O~NL0*56Ya|K>XhSTw~anPqt)V&=R+(QW{2jrbO@YJ&k-b zEH18z=mQ)+)-hJ?i_FCT13p^R8T9Y!Hkg;RCjOotVbZN=zOmHA{Oxb%#M`CQvyL;w zPtERH)O@pApL>hGc<_1s&AautOVwsmeulVIubP*L6vz0SFGzrWHihe(*iCBC4*DzKo6YO?fD0JUKqr2 zsBSm=zDnp*QPo0{88?C64yEoVle-;s!acIVzD- zS2TN&Y8VW-%X#H^Yso|{l+1=R&e^s^fz4AO7h^^kjw*Efz#zMP;d{ojao9x-+rh+| zjE_`8QF7`+{5NtG<@haH3Z=6S+!1P|8I|*rcWyx3o)1B))J*PY$<$?=;{zx)@_Ju8{s`F?<)y3|$WWlQz$auB5JdzMNnr7`SIq z5Iy|P@}OS+EOTWnAu^T#L3m1B`fZTo!3Pg3|69Izvs>2Fdj{LXlehHn1GOgf zdc_=YihJCmWznj~@4|XNC4YQxUXEwiRdbpghc4Q$H^@n6<)hcLIf7_K1@)VBHjuvQ z*BqjZGI#H=xf0ifMGqw5P$Yq@9gME~GNj=|Jc{#qN0i(RwAf6N%{o+L0^AE>Xo98Zdwld&|$IP$N9X&g@BYc(VO$=S7^sq{P7Om&f1F zc(Xo3aL25n9gN?cFo-E5JEo57xNM~NggEbOiSnK`#+xI&XN)^3!FWN~Njm0)InT*G zloasyzWnHNyz}Gw1<7@4=b)<%^xyOKPVtjn7tcIA|yM#`5h?A=#$n z#Ue4A(e_)wG!wYOhyZ?^Xjwx9027Mpv|_jh);4>)?oTndZ)6VxEkO9uy`d~yod z)E#K|B_3sQHkooT({!C>cLkm29epQ(q5;g~g(79jM$d_H4TX?mBTy#E zs1tg_5!PDqu}Wcuk1pfTZBuAw0ziBm&lwF21*;rl!X$4bbJXu1wGaP&n2bK^j|V+u z5I6{q4b)wdA#keUOaV==}@KIZzM2}JE(b6I$_yQ)GN`%0)6BIzT6B?^%26#3~CHyllv zM{SJ2O0u9Kuf9egX1s{kMY&#ND1-=vYPou0RNSN2@4H=(t9=0rmi?+;6IGF%!Nus5 zy2OHJKCiC6bkfaK#{?!top~b|544}m6{-X0K+e}T3L0`PTeW+n>|QTwpR

0>o%X+7wBs}uE=n%TnT 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
ZJ(at96<#ZT4I+QFWhAH;-ck68Wt0q$|HD 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
&msX^!8azOrT^ZqoKBxq?MHuAh7%j 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≥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ⅈy>e}>$F1gwaus-YV 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

    (efm^eu{2h$XR(L!sCehr;JuMmVMy9^m$R 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�mLKc$UQokxmOsxKhe`z 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 AMPzEX`s7MMiNeRA2^^( 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

      N_8zwHPd3XtGyW%oK#2-6<`Cv?nrV# z0hE966HSR`esHjV@b~n)!W*w%Tf+MNT`~h->=}TghL&PMHMl@p=;-9qO)Txwsowk2 z2tNIOz6J3cpPZV^4$B=wQ1sT39(_$7zuP61^oecM48!7RVqA0D9d+L4-&o~?OJ(`gbC_q^El%Y4MI!zs#0 zOr_9K!{0w(Ssn#t{);CY$%3#z7}rHytVRGqIrF0-t-I#WAE|TZY817rzG2ez)=B0X z6iXa&8s6VE*w3zYT3;to8mlKDbSmA-89a1%NC_{4=1#S6kH)%`f9}?M7Vv6i6mnC} z;>Iv-`^}6enuDLz);X&QxaFS6RMS9llR2vVs56(HKT@tJOa;DnpLSncw=R3ODN7kc zb%Vky5qDAXfILk!G3K$qY<7g&x4=5`1Q(eaalL!2jX1d8h_P>7vNMv=x(XpiWOJKB zX={G0WNIccolXXQQebEO7w$c1>CB$t#)Ss&W*<>r&_@u4_uxEdr_&eX?w)_^-fSYE z#j?j{v*7fMw_>L#v1vhxl8;Q2bXo6Zp)W^P31=n*g6}7Hzt>MTm(q$KlO+qw3=HNZ z_XhyGnDMc-^vr9oh5yla0RCsvUl=wiua8Ax{aFDdLoVL7t zHY+PFEry1)w8rQJj4)nGN|TZSgIW`d3Lj+V6fSM&wR4YG&ieQNsRamV zsu{6+eOv1qwkbAsH8;MysI5*$=nVVbiSC{I`hMqyJi$zGfJNZ)Xe~a7_C2Kn$|p_ z*ZfKP8-rbQvr%L=S40z)hRRQdi(^`M&YXyLO)3p}L;TD_`~p^9Y|WTB#TUkfuqSv{ zR2qut#=K{Z<&BN_g7^~!mBYM(Qw#Pa-0-0VFQkNEP2(NxhdFhC76I|b;Nhe`<3xSmIn$F;Q z{s2jxI^^NeG@Y1oq!W)6-CfvoIr}d7?by;AC0=BtztA|3s_kx+;N6})F8X>QxHmU6 zE>f!NtlOYlsq1Q9JmqEadeK!V6+UG%`yypX*TTDI&#m#*X7h-fT=PheDshWI%Vf<^ z!qmxm#lVA9;g^v^wHllczAEjr9u0| zW=i*(a5{=ku%@OYReRD_cNbp!&da^H{z$h$8;xA4TlC=lX&D`wO+<5Zv)w{%(d!Xa zs@jmCmDOrA--Z9833F?aVg2=pK{QX5y5^PI)}ni>-BZ&(h*AV^_GhoV5(4zG1T{N@ zZ5^teN1IybKYfh4Rp^l-J!yh)3_oEgO{czOC!ydBAzr6#Z4I5RZzoYrn@KR-n2(*P zW+4l1Uk-{uj|`@>4Y~=JZ1d;qyc!a%WP?LgPE(6@HMYi2j@q`l9BzX{V_Sm>d}C&W zdSiX5+I&KXZv7$JSZ88eXPxX&x|Eoh1z$P4>wqf9_G6W36`?KIzOXt@Gwt<3) zYJP8jwEW|dna|?l$DQ9E><5^L-yV}H_mvWyG3IM~AN%Oj<)fh=t{|pzzS-trAnsK& zoV$i77?Z*_7?V&?pAhHw!i>EQx=*NlPCVeK=8I$}Q4WQPcts~sARPomV^T#bRi4Ug z5_A*!yXXOMF|-`zXt}D?ESnJb?~kV;i67b@{1$`QM@|Qtf!Wu0z83}jI0O3yFE-?q zfabWf;M*FS`Z7eV`f{~XUu=&H?%EOx{;;)ev}T#MwQWWBz~zo>M(s=dN1!hYFXrq- zQu8+D3>q8kwi~sKe7|YaT|8=d)AS<)et~M)+h+G7KEnXIwV|po9^_+`0B-K>SMHu4 z@b*t-ASB8~mTrw=O=aR#0rYzpUu6^Sb2m(8T1#SAw%qUnq)Y&&e2HHEkr7z9Fzf@Z z)iCt{4{T5Y4S*E9(yyYKcqNkP?#W66VqaCDyT0wz`wu06Taz{0k{Bg?SA-?CdQ9)p z)1%?`uduB5yfc{4iLsf^_E9G74TO@ zUM*Hzk2e-qt(((%TaPwN%s;{tjt0CMCa3i6s_hd83hvpS_ajEQ4n1Dk*6P&`lo&w6 z7tZaY28wGCR*O8>ZO(J-xTsO?$*omj6S_I?Sfs%L$?M)@x@ zy>ZjK*fy#>n=X?b5u2)1==TbdS$jys=uhB3Q^TE`oBQ!F&MKeYbX((TU62<);N-*;jRW_2{N7f45I>aT#CriDeIng*a9qhYQG}%-%D|I8|ajmL)!e1h6 z!{de3Qxiq0oYg!>4T0@`Q@|nvkBPU&^^L*B_o;m~Ntl1|2=ALZP%E@O<-?w50Nx_- zn} zUg^3x<1?4{?|-Ts-VrR%hTh;Y-FOvar|T3)5qs>(8uF5@LVWB=v2{!fuRHytcEt-L4m7;n0pm-GOvGI{P!;I*bC{{2$s#-t8N$7;#!DFRzE>4_YBzC^qX zGU&Uehf1E8QSj!V%fNylD#C)JD7wPWJWWu-u8ybZ2eCiD!QH*aKWi z1MKzZ^-W|V1?Bff^6lLM8BYai9!enw=+Ppu_HpxLY|JM3;-uRE1iAs@E9dSTjuJga zT(|o|bUV(}9J|ACbnFz3d8Hhc%AZv^wY#tdVTxiVurd2qapM=_nn}0YC;~#IjF}|~ zN;%f$IpB74>NOnO19rDGU3P2l>fMv)6#Pv8Nz+oE<1R!8Von2?gkjgc-~6ji0?}ahOHG~!B=YyPy~^Uft_{DFPb6ilbWLM zxz633q)H=`vKb0jDti4{b5bt5wdoH#m@t=dkn`4!Km&n943ROg{~=N6>+Z+fs!%tH z9$zV-jI`?#Q^c+FNQ$0Z+*b~rD^PK$=jdD$VqwDf} z{~R*py;Bvv@W)CNc$%pdw`D5LpSuTXBSonC2P4f7R%bEQC+Jce=$f8?=n-%L2$Pag z5$nb0=1gxB2oYj9L&iTkx~YUApScnFwE;RCJ0@CVf-qCeMgXoosTNAjeWwB; zY5a;+KVusnu3pf68GFaECqLnoUBa}O-S8=-l1^Fky0P{5=g8dMl8?F$q-^ zWOV~4WOH`CPl+`fKCbVC(E=m{ z@DAv)Je+>9xMX#B@3A38wNV?8`%FDoVy`%9Q@hqu<8)JToi9S3@F`FMqJYf5P|(gEJ~YOeT^iD z=6Spp`)5t2AdjWgSO4nvvxA*3S=V_rtp=ZB6rCfaI|6-o4 zz`4Ju?XXYz{KZW<`kDm~^R>?XA1s{y3`_=|O+J|#;+n)PKF^O^AxRej*2%Dt7LicL z0zoP@HPwo!%}jmOhvEkgTwWi8^eiLg$9~MlQVW{|_F%e6jrK${kpu)ryD!IxqInav-)_? zlC)MX{i%VW0Zu>kqJ)%B+!rXs%9{!g62_-$sGmfTol9i1*R=bPQts6vp2*(Hid~5# zaipW?z_@d_WnUG8N(wjMd%Kj!nTKZ$xWAF91V8jc8~rTu#97SM5K9}FO^h@ztR+cHp1>5fvHLc6}&!mgFqADnI>j1?A}E64MTOP>!4jls&S}01S1FS8dG?b zVOaYnHOa4~@3Bm>d<*P~PPc&>Wi-~nrM7I@*_z@ znFP=O>>2dL_QDp$z0RslP8UVQbmvj zf^p=YQ<=$2OZt)GN=xFAMPLVlfwJf(4RjNk3EoXP@J(4T7$m1l866FheJU+!CVx*} z4h+U61H?e_fLNs9tC0X)X*sYw-*pEm0F5eZg3XL8YbH;s@vDg$0G5|C!TpR!c}+lx zE00A9mcE)7k1{$2onu7ET?1-e=Ky9rYOcg{d(qnSW)2&fZ&48{pWuPHL@oTffF*x1+z06Z*gXsI7|E^25g-1^C0gnTmN zwRY!3XF2G3|I7H^c*6PvEi3;wA?M!x<$5IL9L`G?Tc4Q%zJ25ATELPhyM3EU`TNT9 zaVHo>Y0wnFe-f>I^4#_DJX~nkDbh#g%e~-K#K3%lQi}3U z+^)Ig5V_xl`jhmI_UHS)9|fl4H;l~Q_tyh@ET3>M=$iNqlqaTFXlAWwzU~w7{?zO# zrS|Y%o@s)A?ct**lS{lF4+rpECCWQGN>1}`V^fZncI@N=!!w_-N@1p1wv4<=NcR}( z)di_pn5YyNmp-VJ21`&*9PVU-Bmg9@>b5#p^0+Gkl9Gj#ovhCq!;Wel#r-Oy# zbNcm0fXLqB+$9I;y9)Y|W8S<&1C;d#gTRnLn%uW14v(gTgK2>pAE1Bk2O_6jti2jp?-#qBgtzp8u}oa=>A@6`*&=QZ4ME{ z_IEzmN)u2Slk=0ylH<{kKIJmXWs2S6_j*Y1&G%ylBgLvLpb0di2XMLz5{c9cL$L_2 z_9o<)P-tKW>v0K)$9SU?Qaqnfr>YTruXY-&Gikq}009z}NAi z^Z{x;!eJ)c+ilxxS**S&sXUpod}B#BS?n@%_(ZRQGZo8;HqND{AH4xbT2VEaao1TD zC@7b>F>WHPS#ohD<~>-X)&|mIu;!Yf=8{Wy#R{?k)un1#E%b;w|Bc%0^}IL~uf z76K%mM%2bW%anYF+Y8la85fkyV9{Z+&f`e`=)_=%eEl2)M^*qSK-RycTj!m09Ns!7 znM%$#VF=N|q-?a52`&qx#0$^la3-99u80spa)RDqB)J0fc>L`pPk;VXc8?0EZ57;h zG7Ox`eEay6_-@~rv9K^q*)yZ)Wj>ifvyJAH;KBFi6%)J#@+^p`;xs(TbsmEoQ=;3`7F z%V3!64a=M85HbOino))+Hnw5)Ib`|oJdjfBi*6*)($noQdqJLzbsH*DVmSHoTP(S< zF1gZcDBc4Ilw}!QY!+*qlLN*KbH_2pE~E8Jc5|iX!JfJM*1blcYXYX-2L`7l_{`EO zmnU!~e=aF3ETabilwqe@S_nXJ&$ABbech)p#aTMA8hlC!9na`t5JqAX+x(NthQG`$kXlXf1V!o;e!}Q4^?X&l7AH$$`@W96K_8oNKQ&gNqs{$7c za|lB^Y3aBC=~aZ>wRGIkgok3p%YjzFa!oJguwiBpe(ZSKzR%`P7I{Tg8TW6bZ(XABs}I5i6ak2 zo(F3>MH}#qr0mZOFIN?ANmxCq)iR3b)amKzDE!}*ie7;W+^qgSl3G@R_c$no0M}=cd>95nQQp`~iM#%h%~%tU_6LocHTMagr&H1sNJ8&8+pn zpip%=MGh5NTTnj#VPKVfcevK$i@9tb)#5pae*WR|maiSb+3g83z&aC6+VhyUXGD;W zK&+h1TzUWSJpUjj2k8Mby(fo_W&!~1=(9{2I?RqPgHAjG$s1GOO`JT>&^M@jCu%K@ zVPR7XeSLQM?c9?WLCrEzJh%$}(fU zqtd0G1Oo3f6LJ+gLBkYw=%AUPS7RC z=iW|8L}Z1Med6@y-k(d<1=r1Rb+0m4IMkHN!Q#v0ykv7sfTUUek{}#yA%}hrKRm{t zO(M8LU&T8V20xD4P817}IM=X=7q5j43Vc*vX6A3q@-^Kay7yc|uRm6sTc9}AR@<4= zpw2moihH<&TJ9#!jmTj7?!56Q*s{mQpUQZ{b#0mF@@8_@Bu;|Bi8q)#c;jog3gVy; zQx95vwm=a#V)?_zqJfpHQNoE&((YE%XvTUJ-WZv=$l%5B>BU!J|E#udFisUg5_)3@ zTNhYS%9iuZ%j^5aS1z9-@$XR+tC_73d~eUw(6AHLF~-wXPXT__+Mpjt_CZ>UFHVE> zWFPlGg!2T)YrMsbO=Pb6)J^C9Ie;7|l^^JMpXxn0LI!LAPxWP^Q>>B7rBcxzD`uz4 zauDIPO@awFQp=wfN@cH{L2hZv1jp%J#(zSg{HGHJ<^_^=j7_Dw)_X>}&dUU77g)oo zvwTb(w}OO5ER}^w6+K4Bxfs0sP_mRU*c?A*A_87IVsJEd&EB!XQ}VJbEBws(RonGp z0Z*)eS*){l#2rWe8r26gU6hJRyYr? zZ1&6wFPyeQ?Es24?7j*KxeDFhF*nzy)4$pb1-9p2ZMxJpgaQD7!9I_q87%sDzB2sl zX3QYTSjsR%2~a#Z7&3cg1&{^xiR1akvYN|-%{T&a)ridv0f77HtraF89RLutpwxzI z&^@VeuN;?7Ke;gzgEl!iIX>133{xCJB!>G^JC+C(KU@d~-p%`J*yJp%xN1~nfgJd6X|RA<%u=|LoLnz`H6b08 zSl2Dx7=ZjwzLK0^6MUdt1Q0_VJ)SbIgA$v|m=r(kF*Ckw^oQp_Y`F-IxT|4YFSFEf zA(~IyK;&AKP&^jJY?AS_^Sx>Ogy?X*Ep}5SZ2jy>xSiL-1LV}Zm+K0O55LSsjS=jw zT)O+`Gw+`4{MvB>{`V&aFgru7R$sNg+$`)yWBI@#$+LT%<$jo5kFcvrMJtA zPt{>#!IG+yT?O%W;%zwS8wqaq=W+ypUyfiskU3DOxKW&!KVv5-=#jLn`k`g`Ha$=N zeY+Q$W$deT4?l106~Bb_Df+5dX5N+=EQrY>5}Y&QF(ZN#df<}gc%R}94VZDs7&GAu zC*$#&a6})rJSZB`HgOb-b3IU*at%}CrE@5W&NpfB$B_x{F3owNrPm*X=U`c;1C1#d zjaNus+nroi>eTNQF|-lPXNE4QKM@75hjSLSW48DgDp?f;@}SCkp+3UqiamGkb!yt? z$1KB=gn8CbOE$RdK_vgR?SPlUSJ>tTrdHEm@2?VP1A=3oo7s83ItomL;@(#Qmb z=>W}XN^y3jC$h3{>v=ETJT-8jAPC$r#eV)&?c|ALDSaAJB(XoUCQGMpDC^th*#M!K*O_+eHjHY-E|usK6MHwAe{Yu5=F zwk0w@eVg*~5H@fti+q>8vCkP$xG7hh)y`xbB4TiHU*RJ$&8oj;PyNHVoU$@du1%&t zQ?dxM%su0kET;JDb;OTGw-X_LyG6m$=Vu-Gf>F1(?%#a+d9{RV;Y+_+r{I=`cxeIW z*EzmRW2ve<5?&_8<2xMMoA}#3Z&{lmEJQbSyiR)KyUZ@j=<%prup9_dZCQn-q{LEA z(sOf`-&@Z3^BfkxoS3zVu2|zn?O+ur1GJ=&7L=Hu5fMZ^$dn3Z#Xg ztmeZpC}=#8HC9ZDSR5h}ifhU;Lh0vE6SGH?hzSa;gF03yD0w!RiV$1YR8^JVQgS35 zBS!@)e%I=m-y917^MJV?55m$c<n5~wrHp)MuxW5Z_>Qtya+2>}JKcx*$OekDY3M_ybnwIqQOokUxX|E%?mt9%o zgUt=h1_yXPH`GjO4>}8gJ6Lal!atSeWdPB-zv#dnY1km5Q*QUp@zBUZe*{AZ+6G3&1cxbl6JP5D?%|YShx= z(Z!k6N`4|B0PYjGr$y@|WR*Wy3_GGUf3abf435TQfs&3pw@GcX5>DtJ7+Neaj+7aWteJ)+9%&3v)=ZZYj3XICj=to~(wF#;IsZVFi z@m@r9Tn2TkrGk}BQ?W?i^OH10PjvpXK^B&L=E3!$Zm<0BX&Y8gI#M_rP0UPQr92Rz z3p&}Hz4uNnR#616zwj|KJYqOrONL->Gp)$N8N8D1z^f=~_*P{o*;)F)ll4nNqQHLVbY{C)tM_7~ zHuuNUjj=MPZwcODAX?(4VQd_`i4@L;w+-ETe6QpJPE5%Vus`e0zT|fRh^NCk(-hY# z=$6n84;cx)O{&8sOB(gS|BxiZl8SDSK|H;(48_PA1UD%-DC3bO3wV_4-Rft zPe)@|?Jg0Fj+P*&0Yr9^zZTW!Nuvz*n)sbpM$gPL}wd#KmJy-zEbGnz|1 zA=d9Iv=6r|?DO(76#CK6troSTkc<7(f`(wm*$T^sc=|)3=PctL^nq2pGaFE%JsgC# zB{(&;U-z@H6U2nj$7VS(T0H#VQ7B)_7e2Y<@TN}|pGno$oYk}js4`g_@a{DI+C^Zk_!mgebXv|k%H77sIh`^pAFSlx&qV~94i;;scvIA z7MRWHckuc4@=H07eDTRJsAXb#tfs2^DsM1Heh&aRLH3kcc20m{WKpULIlX@O0>#R0 zc=%-$5Y9460Zqm7Jf=sHzFRwEIfb26HcpRCfDw*Td4q9FrXQZUylb1SubMC8*r+(F zZ5E2ybF(bu;1qDWG?*VMM2LPN6Hil_k*1Uo+o=@Pu+H;yPvs;Na3QQP^9$0fn}`4@ zwet+6zIgnEu!AgV;{L>g{RxCJ)kB?J2{p>23?>E%DDA^z4AnAWf-~?%&gsc{cDx1u z5lMOc2{voKW$ML2Iy_60d8!xImHYzSw(*+n`B)uNq|ZsmwDVTYF|~+*f5c;EezIqh z?}fxo9QZk`Za8_9+u9{y zC4(ZVqtaROxRfUP6ge`q`;uY?-rugX$h{Gn{{$)!or3tnPg{6jUv>*3{?<%$jydm( zrJYzJ=9-`E11nNhag8vibb_ctcH+sFY{%qTTN{v3WOiuIeHt?<`G>@tR))Fh&E>Uo z)IB*aLMBgBU%NUTyjn+gqa@-epky7*<%J%6=f>Gd015Q5D~^qW7|7F zkC?2lfP!OQ$prWZ#>m{u$)xPD2>e#!W+@!&I>b&;8Db$FsUZYRhZ1Mfng8gn z0Dq;MjDI-TPmaED1Jx(Yu|CZ%0$$l^Z9l|{h=5_e1@&_ILI?v`$eCGSgucCjek}aV zte^_4P;$ah2##>_4bIn_RaWEH^~@Mq>T?6vr3ifM|RDt9O4 z+W`MPiH5O7*UV4fkppRibDqG$RDyE9H2wORyg>Dt5&Jw~|KKcsJMEmrB6&q!oQOVs z65p5J1}O}4;1t7J9lo!fBP>?`d32oU>1L*NPny1v9({M+>*Y2X5#}+Shlzv393O=U zOX+)v0W6`GF`S0RPe}dB&KVzuA!C>#&OaBoX z4_NYY3RMVUklF#Xtqvm8MiC1p3(Z^)JKelFmOr%$Pv2`9kExk#<`3t&{kY9521E|O zc_G-WnpA=%)@%Fpf_j3}i!tuR_haPilah->SW4S5eZOAF0yeznGCZh$Kz$)W565;= zjVh5tT3hk-xiAkBYpgfmR*qm@SJEDp_t{81C)n?hi38t@iP6s*akhXDcYO*=8Y8Ru z>it5OJapMbP^lvJYn;~?nMQL-uJcNLu>=plT1FKmc2P;^crK*i$J?H=n3=70=xut) z+wp{(h?+T9gQmniStNtY8{w?Nmbxfn2Vr5RTP9&aK?&F&4j4m!TPHag`Hg*Go7ug>_lR<@DE zMGvh$jh6WBjR~bUIy2sGBgK2u$(vrg-frJUL^2G2XntOdD)YMVa%`>PEkeEnZRM!Pa;uAgI-PJJE~tqxi@y*ABikhwu)>=wEVPd{w~@|zkv;~GSxGm z?KC_-GhbBP^O_!*Dh?Uhe0OHoysj7XdwY%l+8A7TX>~OKc6|$f9%y8L&Jg(RH!D$17%^JY+bT>ZVJ7 zpcP&AaUBiYa@k+182_!zNH9y`SZ6VvByBP3YI#XY@2n0SiJT^!zdGJUT%M*|uRA2!PZzFEOO8c75?$bN z_E|L9^EwsXyINS!#c{C>&%Nq}483RJ*RE+a4_jAcaDsK{I|^hGD7?G z(-C%MFL+d=H@odVyHD|M$#jkFQL5*N_P43Y=<^@$+se897d3GAY%N0JFW+BO)-+C6T^$>pa{l^X zVAJgrOADss|6}7$d-46n^mMJ;UfPk-E$Fz>&DCT39FYb4RB<;8F(zWm6ZUCd506!^ zVXKp3c*F4TCYHEXe|Wifb=3G+v)5c0)5Il-C$fIgYeWfYz3?*`DX{2W@V1rl5;?y5 z?#CxjuhV`svfwJ}Pj>%ML$g({*UzNI;Ozx1v%8z;K1vz9Er&(0|4Dv-cX6Y5A7-O} zcZm0UN<)YLnM3dnA|qOT47@$ve9lK69OS%zaAYU3`|W*A*kX~Wb+f1WqDXDivAwcg zlR(k7FmLCpzq19T(C!K2>4&e5%_QDDw*MF0{;$WsLWkGs()rNY!L|h9K01twwF-At+36%9_b(~7Q#O!dN>M5A-wN&~@}>=|Se|@HTjRwXmN0bO^Y`vSdVU_ZhohoA zkxhHG{|HIQ{Q<9r^Gi3MAIKCxF?Jmz!Os^%POTi_0tXq1)kasU^?B#@A1qj|_uc8~ z|6H|$Au}U*lhZ>Dm$hTAb64I_dc2$J^*`AA3aGZWZrz~8ixw%gNFcatk>Vt{1&S6Z z4xzZy0>!NmTuX6+LkUjt;$Ga{X`uyLDlfF>{Qvpo-f`a>cRU&6?Y+m^OXmF6nsd!1 zN%qbh{MQ-m#=H&@9^3A|BkjVKOFAR%ejogIzIlIsh3y^SqH*tW`WW@IZ_QsXPQIU~ z->%6aE33-%xKV6_|NLQ#*xJ>vHOg;j?Cy@6e!cbbjFQB^Gmb_Y>n|&C{CqPIZYJAV z5wQ(p|LG%x2FE7<9alGvdV*cCf7nv^G(7m=zwynj^@~8)MfR`W`exv9{s-t-o|nhD zQ;nG0Hi;s`m!XBq8}IZuXP=^8j}?i0x^7?fvFg`HsUXsM^KwNCwcr%`eyJyYSmxxh z_NDh~*XPV8^jLiROU^S+)ZluCS{n^^+6lgbydDc5lBGUyW%%Md*8eU2i!9^|@Y@vM zw|!rDx<^e3HMem{2a?ks{!DixRYcpQN8yLewVuUQ=9d3E@;VqNM#|>4U7n^ncMo9$ z^)TR>dyh!l8h5kgu#W8jjx^lI#;Ondls(Plv7P6n9J6O&^SzVH%%XUC4M=es_MKb< zGozIQ+@hfMQTx=&VxBlE>XteaJnmuc7z3-><8IP*Jo;c9$$(kO2{Bdp9lL|dO)4^c z4e0tp!oG2yA|D<#EX(_nP3wpD%h1>E8ztDi4p@%kq;WLX$jDak`kB=Y<6|M9bdA<{I!hpB~M^u{n;X z)$|r9Kdfnl*@Uf#+o}1{lY`L)c{nA%*211Hb}s?0QtwExeam1@rhKv6vcpra$Vn1O z24IpFe`0F9R-Gn9{ta`IZ#;N=eq^qk5MRo?hrInA9&bgC5c@nK;VXtAkI5`_yvhP{ zBHX$`a(~TyT2k$}m0A0dKK^(y%*g@+VD56FmyS?vrl({GY=#;Jgy0HCa8xq^!8=H% zRMXEC8{a04BCO+6-R+$GgjE81kdgeCMzGopupW+h7Vi~YJy4K$ec0+25u2c?&`uS^ zN2gY`Qgl_GkUey$OmGVMj>)C3?)A&=m3!SQMtXN)NO;yU6nP{pOz4hG$D)U;L+&HH z!tMIOb1+l0B@7NGmM5txTFxy5FRZpH3JF5enV8-zc{=TE*GrnXE^4Hsr78s?l>>FL z_B7F}2U3Z#F$rdId9+RLHWj@`R&JUr()Y^?fTFZyN$|?Zt&oYZW zCYpacO%!guoG270ru~{3erK7~NVV(n{zs_1A|3*PhbW24V`Ps&-AY&kgY(@)Ka0WL zfCF%nPYd<-i+=W^6Mb=l?)gU(7q;6_W0(KFUp4=$M-+P*`9FQ>Hhm#WuIjeIuc(vq z1mZF$>XIxS5TjZ$l8T|Gki4?`AdlGrOc<{Tq0r;*3wgRRUN1x6BhT1j(L)hUf*Fa0 z8I6gJNq#$qeTM#+GooFNhtm>2nhNq1p64z5rWB_ygFD-?EkJYC5=UC7voB^-K4`@b z%_+Z0-z!hK_Px&#*DW)tmXwz%=i6?5kiK-${KS2H6F}irT}>shDb%;DAA2w z!tn$;LAsF)_FGx%xGi~MOu^0qmcp$C#G--D%3Cs|y@Cpwa%iIuST%3E&_}*6pnUz= zpVxF;l%CZmLdoL}^WvMfnI!pvu;5Pqq4EwCt#9e}>s`wS=zH9_n=Ob4+g#f_^II}x z#26UiVy(d-tTm_ZhaOshWjAs_jnRG_PGl6Qid_%#Onrkkxu4eKFg-gHhTFD)Pzp** zQ%W@eqTzj3bAtmSd+!}bMVc))1s5?-S*^^Qt?PrM?RU(B876IldR%bj7CaUAz8D-DRhn)$S{bk6WLoe8!F5MsZSN2IzN6`c|A)cZgy?wb^oC|*@9%8pl` zK$|QDGjT~?`Rhu`LZv)CY8!5m*9Bi|cr|2Q^XuRpeN(u9t#JQ@^+&0c{4Uuc*|3I- zq~)3_8Spb%lVIfJOBX@VY0rQt8Sn?Xf8;S}1{9G)>ZGw2St`}W@T@iQ$|4{*@g$K% z6#plCJiRu8hIJtZDt8?v{;e4SPolt*(bWC7fjxpfw}c(9)-+p`d$J2&FP@qV)u@v4$xc8ZbJh{`+$LY2RrHe7H0BnVEPgStn~QFLKF_s)nasMc_K*olr@0L_DV zUv7Xbp3`c4Bx{CxgUUkXFSNcO@br^a;DyJLksvWFjxV^UY?5$|cY~l>$N^RWa39RW zST-OwAgJ4xWJYm}<%Z=Rxu@21fVTo!%lY~IwUnJ$>BG~rc$ZSr5Y7Ff1sWR$-SrlRSl05iyfq_%>S zU#k=(*6=D8iGKTVB<+qiq?0D7J%B8E= zM9Cr{5t-;nkO9aEI8719#>NpOls|)aMW$_EYOcKr+(mCfZ}+zY7U5n{aFXFtNaZEI z2X2#nF@|yjJH>iFsB3$GYGsr=#StdkTol~8h~dOu-Nr!@NlDwQflw(0(3sM(R)NOQ ztCaR9-;yT+EL=gP?+vp9BBgG|$GMgyqaC|xDa07kkruCAUy{9r*ax#c7NRe7iOj9P z!-31CX&MFf(;{z#@PV2^BT$}aaCQFhK2&$&ndI4)dKXZR;+-X?3qv+odgWWXN;!hW z<&RXS@#+zDC255!Nr_FoiNF&LxULJ92Z$QP_!PL7XIiL2s)jBC3J5YqAlf7Ea8Nt~ zO`mA+tGSR(vOr#oCFT`&Q0!=*gE`rhCm~~z50c2M3?A4)gi5kXvd~OxJ?61Ol9K!4 zFweg;%W)A+c06c%ZbMB7{z&Y(lBqQFYaec&d2p;?-yb`3~b$_I->K}FUq z1HFm;u_MI{3%t}UEyx(sS3ogFA^#&!4R<=5jhjzYen$-w{LDWSYywrmBPl@*kqO8N zmY*eg6_jkTw(taQR`@~bO;$-S6&VFJ+k@*;ERH<7!NN!joG?jSb&q~PRc z{3Z!@LxfS!cy~WbSw@`)MS%^fcrwE7Eq%$N4u;^@*^}aG63^T17+Mf#3lt? zSlad)j-g#I->8x$GwYguVHQh7FC&ovvl)}JJA+uW$a5@QA`58}Bl*boBRdLqmBdg( zSN$uyq5K8Hc*B=WMigNZWzuO7uiZozOGZj*$5QK|84Eep@=UNO3v7g1wDqh&O6sF2 zqPFrTIia@P6erU-vc!Ry41f@H;t+b$t#3ZcCIdK{RHYOT*koj6z_{cdJ8F!+U^Wv7 zs@G>gu5OWikW&6++Ags~1r__qSlp$Y1*lhKPr<4(NEfkF>JH*}0B)mrL7wl2S_RPq${Vhu?mrEr^7?(#eW2GE_R#X$gpetK^KR}m* zt-maOxR?>mCuK`ofPX0h+uA4rFg)bSz9jHR(cc)@w@_IC%RlnzE0y@Of}3auUFj*) zo#ZhDxcURFt(u4lh8q~s(otyqd$Tm_(8`;dNwwS9@Lhe$g80zeYBlN<*$cZsT`agw zg7Mmo5UF50;CtP~RGJ|Dt~e5@2}z*oghd&N%ASk`q=aJzZ-%{wzR(#Spo>_8!;v`G zU~Y&+vwmL z8sNUyKn?&6k>lI$){{aHK#KxH0BDziG|Z131+8-s$pe0Yx7+dZ->o{Mb0sw1C-wDPmP?57>L_vr}dNj+uj;64gA=FG5o-;kesqQ zKmzdL%jqjg)~|vPWpcDYDz_9sSCV#g!J-umIRHZI)*{y5qTGrprH`XPC$NB{sk5IfL55TJ?v>)ilW9Y+8jz>QYy zHD)|9hB0 zx3zMyV{Z`uwnLy_LFir-A)X_OGI;;#jRzVZS)ja}u9_SGfHM&p@(I(H*A@W4&9|q* z4P+vCsi~%|CQGd*$o{MdXHwAd^*(?QKuCkyKK=SXmVQ7%i42ZnAj=C#fv?VI4ZFM? z79E@^ds~`YC6dzP01RnBzo6iV#$ocqZT2TreSEPFs9s*AS~Oe~5D=i6sjsN7sEMsF zcX-st7ZZk@LG}s##8Fe^xd?W7K7A-G>^NU%J%V(cM~-9)3&WJRnsB?b=HECQqucYr zkg)3C5};{E0`L;gwn`)Zw!O1QJYT)mghu_Do=$#T4~OZ#`ZmC<4uzy3sw_)A7?{;R zp_S32(@;I<@eB6mp~PN%A{6d8|8@(vE9*GDPC&qM7}ZMQ;gLF2YmL0?2nOy@0O=5LArb~Eo=WYYD|1(Oz8Ss5owLf9#}ENZMEI&*)M6xdOM zh8kEiBS&Q0xZP2Fi-lcBWO|EE+|e}-uf3h0E8A&Zn=l-`mHY zH*y5044#y=G=M@mo5Dr--?~?x7%yuR0DT`BIY8<|D+O_W?A;AQE}+8|fcNhcey9BT zfa$Bw!`vnPY48R@03Sp3t^Z2Dn#Z@$JV*89fT z3!Z(vy|A@qM70g8=@zIv5f^Y7bvmhw^VyA^&96FDnacH)ZvTKOe6;$#(0QNO+vJ(2yCqp8HZ;Sn(A@{qhoYlyncmHP^;t9Q=jEf%Thd!y zkRI)qc27T%3f1@!4lIetolFS`#2&b09hb}Zt_W0EgB}eZ-Zq@6*Sl(NHQsrumbE<7 z=KC2~%3hH6pZHZn9mIh6|5*=jfd4*casP`@Xy}1JdP3yze8xz|q7bqMIXtY5_$+^A zU&`K3d{uzKI9*81rZfxHy8XsJnB7;xg~EY6>2|?6b(SUrx{1q}N%;Yb={ZkitHpxT zf<5n5uYe#_+kh?oeYVv!BKw`)awn&1X`R4>x}te8^{JMm_;ej>YY!U(ov{7oDbaJ` zy7J~^oyKGFM&@ve^z^Kg*=+UAHz(UbW9{MLQ7?zlVwVLkS2*O2^^9AKsfTzR3L>!( zmYzO(>@$5Lu708|=MXbEx=Xc@l5_)-`JgU)LBLDmrshGgX!-E)u4n6k7hSOz8$<8# z=+cFaWbGm?)Pf!_nZw1FVH?if4m1JF1-CKk zC!+^yc(?RuGArNco)Hmk#(TRt;43kfq~g36%PEox7khW^T!d0&0WjB4)K`jLjq`R^aZ6o=zwjV3R- z^Xku^HeD+ET=M%x2{2u5-7O2<>FE-G4`bX{cDy6GTe5eX4 z5mIO+kO`p+?x*kCqFwWeENKZcCJK(=mTBdEAxvYftFPzY#-S5#6s6#PbSgTou5BJB z?t``HDMv)}p|uX_+Uf*Ujq7@Y*uZ1OD8S2FJXcr6IbaO=Of+8*>2*&(O1xZC=Y5#x z?b^&cj|I*gx7~)eyj|Kv7(I67)wo*XTB8m|QVZ=d?&>cGD1eq)xSEB#Q&JS!+QvWH z%OMSbvj{jJQM3xQq_TY9SFf1-qxu;~oybf6)M%-rn2V56*zugqE$e!b1V_H~E$xe# z}q(cGAPsncgi zn_>~;1zV#d-u7c-HccK-Q_5V^uZs;s3GLMS1nQZ;)Buz?>Eq&{oi2bLE>h0om4F;a47Up{sYtG5{9r{rcymt>lLG# znf{bXSc8{`!Ir+_jS18wQo$7NvXwd%^}=e3bZxj|p;J7n`Yc0;d_wPo%?B+pqC@H; zdX){a@9TvIjEjXwtm+7dVERI23LZBt7sEZ^6(y0B#X{%F%^eTEAUBr`!y*u=Hqey) zj6)^LV;=Mxub^hHCYkCUHiH4v044{$A8kF$t*-DrDpAevirDD9C7QNO1Yy`=#O`Lc zYjXMM-8iDWqV(ZfK`&n1mqG8s*r5`X=e^?Xqta}&byzksAJO1X-sZ6l?sjY3$U3%j z&1<ObO!3p_J-NQ9I7#c`C^XtmFd0~O?rk<8i#jK+7T1Gz5|!$dXHA83bqtw z9csrJBi^Mq^43Km`fk zF9&=`wIQC1{_yM5mJK+ta4A)S-?N}#u?d(n4;py`hd6~>!i}Wn3yN9>fXOXL2Af)$ z2Yr~5EY1Ud1r7ruY)0wERbI7&YN`)Duznq^pJmb<5{p_A{n)nBI$cTad2I3N=;#;i z((yz$MO(S)0++D>Y@zpHBnD+5SYAz%Pf`ZF`&yfuXn7Ai^7qmj^l+B=bF2okeAW7d zj@{qCD_?qIig=gh-PXgjXYD)Nbi!5TR5@fi)skV_W}GTzxR<1VueRUzgz| z@UlrPKg^?Tq>3uLMU?P}0`OW+mZSlLf%^_@MoNnr?x7t$ z8Ai2eL{;6lFxQ)Z*TF$W(daI95vL=}n%_aykPnHhF^{dUi6%e_3sBY0%?(?i2&do2 zW-M3^-4#l=o#Kj(nc+kg(xffSRCiOMg7@Wr(2iIPJ$b@cTGZF~L`N<5iH;*uxQ-^> zGa4FIyOHKR71OrLYjo*2_suO05B2H-99p z+}u#opLo$NRz1^kM{fWl&%7-)v%q^p$#t!Zf_pvv(sMojh4cPPsF6y7d{&roV}dGZ zdA3nTk*vQ^g;G*f=ICDHxY7RBbZg&ONI_Ja>?L%3AtmoR_;`7@JIlDW_E<>;dN|Dm za%UCH<*038w#90@tJ2bL0*AqhFf9~m8%O$i+|TK+QyZP7(s{oVmb1kmaK29al|7ZT zP=hQ1=VQhqT(o*$DZFQ^i!jU#!5)-4&hcYpk3L@Ra~oujzv@-f9=2sTz-LC;jde6Uw_@k{0lwPZK2qPBK)s8?egmCnoN z=;?xQnA&8=-LVqsmKspK=bFmN!!72IG+)FcWF<%!#|M`Vh~oQrpY!yl z^n^!?dqI@cQ)ivlODjYA6i3f49iHZvQFU0<`0+GwYx+AfxoR}hW{9S$K;l2;`GqEW zt96C#0@5R8fwbQuP3`Z7$NAby6q%n3X+eZjYa*FQKJ$rN_R&t#@+#fnjv6>Jw2OhdyC{$H z7Ac-c#|NCRaUq_J=J(R%=D^IRc@yF4>+gDpmNDPO!+Dh2Q{t^+W$LO(hQ0x&|KwPv2I4_^* znZ)`=uh_PPNTc%#Gpp&*u04I1cd{5^PB;y(DKpEX`F#nIVlV#N&I0!z(W@<2Y|Y1H z^XP^t1X3C6i+hRCNVwog!XI5|rDoZ%kZavaRQoDj=|0+Md5eKM`8{rcL0|mj$$(2! z>716m6icE(}C? zlp$No7t3ik)Lc6t`l&o)RX9aOI9~bk{=GYUubhs6*y``BZ1Q?uEO9>T)}Xzn)60pj zvSL6-0_1aR`FC-g1^n!v*t=4@ZYc1+@-kglxVyCa1Ti(~6T6J*#Xa7Q^I0yLUU^r* zKE6@`8orDt9c&0D+rYg=O2SSuQp$d30j`g;Nccv;tdCf^quaSPh5$*M{#0~EhR^3I zPC86NuOmB;+?vjB=wxPTPu&T!kcOrYV04ZQaehG4)_%)kJ9N8uW3>4VEh~|_?y)DD z_=>)mjx3fXAW|m8D(u#c$b9%iFFAjSOqQ4|F8_V`StY~-kS|oyTSjJCL82d(wU}mE zS)Ka=pTL@B3Y+mR=~gqfE}M2~$|Ehv6nPJS`EDAyx(m@0Dk2fGcLpB0q^jB3#~1G- ztM$NrH0HJ2wNNol8T+|mwITv}5tp=S4yW2$^FnXsQ5|{FAr3zzx!SY{RfkJswny_g zE{g`p=4oppJTCHsk(9U=f1l#8itpvHx7 z@u#K+E%X7c(FxMI`ONLoh4BXNTnb3oFv##o#5eg3;%@Ks1JswZ+xrUmn{`Q5j5w>w z%=W_?G>DRUAuj}YvNjpm@2Qk_t{eT+a+x-lS4M~?_It)#R;0z( zr7dF}sm)kA$GeTA&QVDk78hN@DgPt@E zrEu?{*7)V))z<+XcvM{#()r6FS6oenAIZI1f}f+gUM7(Zje>u*uG^ksB++sp9Pb0% z251{jZRNyI#+RZenTk=JLW)Oq1uY@>tA2&mAlS|rcj>ILMy!1WO3jJ~WVeV1giUi~ z8X54eo08TgO%U-9E?KfX;Vk##zU9+*C=E;(_U50RzF}5}eN&)2S$nl2qjIu-=GF7B zyn>6+Rtzft_icwufYXr2x71_5DW0s6(0|9PPHoN2F;xc}Xob73FOQD9Viu|7=E4<` z1SoZ`bsH6jE2jbbAkn+jc=2aX;n!2#-)sQ2ztnk|gl(aM85u*UQUqSS_W!oi5~x-R!}-wn5KfEwE&r2 z3gcapumV2!Qe`B6S8P#)181V&E-w%y8qOC(e^z-bF^d6Byrpf2W$3Y{IPM4Coz)(# zl@r`=G8A@cC>wnA;&xcP#a$LDz&r==2_YY~ z>wE^a*nQ!7+#9Rg+De(ieK35oYb%DHAEN!Is{UqqOnQ^Iyos(ff)_I$llV1xy~Ow= zPlTsCYz?dqSLd}bbJSfIcr*;cK`Gh1O9R(n@J3ZSeiB(-6!N>Iv}tktsf=BUR>{i! zLGjv_!(H$LOMB2->6eDz#zkLv>HI~!n^X2uac-*1v_L3DcNLWAQ%E82o#a{*!$Hak zv^LPKkS7REWU-cCR;?$4bDax3BvJBf1fAhM_PU+e%HPA|4jYTm{BYp@;cv3iJ0`>V z!qQ@z97n8x{)?8(r>vmVM7WVEN0al(#hWcE^}OI<2+bUShuVu5gibkh>}ILr5-&xa z^RzZR&TM>PIRd$mvipLyk-wD`nt)yrF3^^{g%^`rYYSmA!hVEX?f!>7b;2!9mO{a( zLFVt5o+A)w0Qrk{C$YS^>6VUf(JNcFRV1>=h2-F>6=TyZONf>RJ6rlSyZ7H^;aB9H zqTCe4N=i6~<(ZxZ`}hnZ<2i1;2dd5pFm!b#5gUaWuyu&?&TR2Ru|e?D46ts9H=GRE zN3WmhJam+a9*z@V4Of(nw-jcg3d}NDakDZiv3ygOqrvi6tWUN;B6F)<#A{O!pPddu zmbk(J_5fIaUnz+cds$$i$@7R9H zZgu!JWynj#s-7$519R#5YY1EZ6;hQA1*WW!COqFdwH zdWzkLVRmP8j?=48)B9)g`;y7Uc$3vXo_+$odyf$!UCH3|h$pNO|3w=9Cu%b_HgrD_ zr_hCuH)hv~TZvI8C#4cE<(gFxXQuhfZ~_ANk@4AyFzkmqEZ7pvV}_y4;ycCzUstDI zfp(Ln9_C#+uMa~!iaZYA7c@^j_aC0GxD997+SX8Y z{8<~V#Llu^;mG8n8n<2Tp_%~qAtsAe|Ch_mFTUha z9>HY%hXevlkIda}H=`JwmNM)NV*Q#v5;p9>t_0yh-r2_%C*$kC6 zY$n5a`E>JVN`5PFmx&Qf`Ygzj0Ud!^F{3iq568@?C5KAKH+UrS|LH>vC?o{G_?5sb zQT4EFi;1L%lrbpi;^NOYu~^=Dl2P1ARz&WEBXuWa$q=7jG9zB zG5Ut@c8hCh#c>7#1cX?_}!XM7Z7_3hq zJ~t?OvQZ_ZGzi4q8ON7j+1gcN_2-{wYJF27om?h5e7y&o@q-!-bWPds&_Dzfs!c}6zV zdF1_hqTv+FI_7lF0c#b07AonEr#T<9qeM4qVBWp7>bN5Vu>yd?TJn?SFJGV#>kFPX;D(v&^1sWM+<0xLh5-wX^$Cn%GM0sQ1e1u1E_5k1TPjc4e9MYM9y( z!M>}BLwPTO|LOCBgsDibJ~7a24HJdVkfH&u8MZjzDYL`$fxGWTNJvV9tXBUutyTXs z;S{r;UIsQrDx{tJr|TZ0Z>b*ajW3r+uIo-g0;gvU(f|PUmB{UaUFGl8lFO*W_vOm> z)72l8$3K*=9#_ULB4=R@CM=En$mRj3maAu%;j3z&uMd_}o#ux;7h%XnSi^_!r?)># zp5py{D6+enl{a&YTztBWvFoww@6fy?mk+? zxEq&|b355{7qceFUtlj!x7Q#z(^r*}E4v+mL+9oqo&4Ht#ME{l2tV+=IP+q$Rt-}z zVrSlDT(MFOLleMHWx*D%wH7Y#gZ7=6$M$XETB)FSXHU6}-HY-cw0LC!H?y$+^2WaL zA>OOkO3zQfy6j%8R?X_uI>Us8%dgVvla1EPGPmq^$BZpaOIq_jE6kRgmbCHtqGF$1 z0)UVCc`_;MC||5bPf+IYP&N0?aM$?HHTO<(C-^8VQzn^e`6!^WJfa7=YkU;8Z)jRA zjwv7gBJ|m~i7B9pycO2(Y@DNFdo6kA3Mgjpn{s;|oEC+~mW|WscJ8Z|jq~1BN`I5Q zkJ06(wk-+^+!LPBBR7C83hR_1rX=3Io0N$WtrokKqK(mgH}!l(-B^8l_lmnDXFe~& zo}9fX?%UanZBQ4%R7iA1)1BZ2^hd*M5fFCWgj5lZXm#YqNX<1OAl%~Rs`Ow!uxegg zX?o|YQ}_1$w9@_0UYl{Ee|^aDmm9ecpS@(&UH~xT6#-P}HxJ>_o{veOt_z*&ZypcD z_=K*LTpV8a{ry*U9G~5sr|TDf*8;D?J=^3C?%%h@?iBdq{pCm1FexcN(vXxM{0ZnQ zi%H|c01si%Fg`C$%l4pC=Zg`2(_ob#mg48AP}ss5Ib64B!NoOiscx0CNMh$S#OTI( zF&C}kX+V~4gX}Rhs_oAjl0-62E~m)v7#!E!Nja(o@sGhG{y)h72l;;kB-I2a{tvv| z%?nR9TmBj?F)Qo_58 zuLzO-MK>pk(4U{JmTh#CG4tkxHFU#}OItcIQC?nN_pVzazt>$LU#;>?{5zpNW~Q2M z6lvn|=EUIt5`vTgi&+*C^XjLkJjiDG-J#w88%)lq;z|AHV5@sfC0rkcR?($>xAMQQ zNy4vI0Dj#CUw>p?+^pDNA5Xmb`H=FjSZ_NCZe!mH8_+7s_&NYgW(Onx<>C6Tr|&X% z*8vWO8w~Zl*K&t3guyli2|6jo-J>)`bzYeaKg>LV&-wujXnT8rzQxmqitkUT`hIN@ zeqGP+0Wdy&!02ANeEU$m@z1sAwzjS&c8V(i01V8<;3eqb4aN-owPHzOL9~6Y*7pDa zj41$m&rOKB-Gl)2cQ+y6Q%C2o5KsdE5PuAO_4es1Qhs;u?Y)1{gq!ENU%=>Pn~m6) zyMOrn!bUacNL_T%i6=flq-#I`IGjk$lFl+942jj=9eV`_$20=fPjG2ATo}Q9Jha*n z@&TMMu-pv0e8LCJ!$&g#zVV7^6k*n=gX*^rIrM{rBlMFW;vZXlTHhM9ow~(6_~7x5 z)Rh20DnkV@!~I3{cpa*f$*ea1r|1L&uGZEN;E5Rkmp%r-iy3GZkIIcmV6?W8aEN&l zygvPiRRxX>2U1kk8 ztf^ zuW$(PJoGz^t1oKWUNl;{r%}fjk zr2Lz|K{QX)xj;&aM~qPrg@|olEq_w%+1kBxpU%vYOzLOE_duZN7pUxg3Jq63vT?cB z4?Gy<(H%FR7N55EUB8vOtTU+UhrjLn#F*6~ z+DGUITU<^j!+*6@358{pAv|qAUVR$i(mJeOPo4FI%JnpRi^MD%^MU&TsS-MH$N%(Q zfPd@Xzz8!?BL05m1HT%-+WN;CI3k)ar_%c5hp3S{?9ArDU<~vL%@1u%c6iyc?()_d zHG!|qD92%#Nv8mFVRYL&skI$!`vVhxNRPb;h1Dpt5OT2@H-qNUcF}1tq!r*sJP{YdMD|qc3{eB^u}am<#ls!;6h%L4w-* zPYJ|>X|or@nU^MkPY5;AY^t13SS=P6ToligM>5vzj7h;cpIR!--6TXuo9@Nki=&(m z_st8Y&c;8{X=#=^8HiJH1Zh1sypIzF16$l~XvS21&8Q*i<#EzmPg522(sf_wQ@qss zNJc(@h7Uu3lf;8#Em5d%JJv(6|)If+G} zV5PM+M|!=8w2-06(l7v9btJi^%;kv}_xn^9yJoZ`L~yw#HU~MiPa1I;2g^W_ndR~@ zL3(;BECj$09Y_tthWMmMmDM*7c7quZGj{1wJ2187k>Md!jSHEt^8ox|Xf0lFQ|h!_ zLY1X{X?|5ldP?T~^r#pBH4nk?Vxu(r9Aa=FS%43W!E({KVr>m`-5zjllCG~$q+02T zr~lSri_>or(!SeC184NKk-p1I@3C9|e&>6$vZ>V5`>$4ism1SI7I(|{du>E8qUsj2 z&l8do&i7VUm?pM&TbaYZ-><)ZygmEs_3>NvCt|}JRqG#PEMgq)efm06^VJ2`?zMni zv|n!M3>(@NTQpd{9Bt@9K_2=&--98qSFTUnkPi+`#J?_H=_T^}G9FXr@#vaZTrplT zer{IH+713ZcIV)t_uIy3w%GZlgvItyQY`ZCYt{ct*QsB(H$JT5zXQt=xd1^<{Zpnh z1PE)8JoSbE?HT}=Rc-6tT|*8q95PIm-a5EWGlA%{}~g`m&{a0{$qoC!G7_WFKgF58#2Ezk&UGWevhW6jd{tA^3-> zHv4&YBujQ@-21vZ6B7!-TVCLM13=qiO%-GDm_RUz_T$xuPo9SkHB<2;p8my|=k05W zZ$IlKA4+}q7ufjXdJ-J+RXJ;FYWeu+9k}g)B}!J@BWEzY%%-;^=jUTBml;#PCa+fJ z)sdmluqB61{>7)D zZmPCQsqDV&zP8CP4}+TWM0>7`Bp8jN@5$em{b2ub`%u*g5enr~r$B>dg`Ym_c#iqg zG`NHv5iCo~j*ci{PnHAaeR4&kCk0~$Do#s9PYU5gfV+qzLjKI_BJO26`^2Y2Pl^T% z1Y^Qc*^qt7yJ&!XbKUzLJgbxq4_=J9e55ns4!Y0j@Bi%QQMnLQ7h#Vm#rxRy?T5XM zFG2yT8Zx393WaJHArMJRa5Nws&3}GS*f%7iGeIYduc_yxw~v0B`(2(Ho!mC>Jtmz(C&r(>sC(ntLez0g z_j%myCTDW*Fn4e70Y>g&#pi$vI?oEa?Ck8ynW1WNlgqwqx=aVj3+iJ#x=gxE?wP|H z=a$ph3vuC@Sg(ay2TM;UPp1}RZmh1;oUcU9YU9lhh(<@d>*qXgnXlepW!89lqTs?E zs*i}e+naZDhzKv{7TdTykxJIP)`#_-9gQZJV-ilDPitx#d<~Bs<3>hDMrUuKb*}oK z_w8Em^mW#(#QvtZ*@D>7uJoE8~3D z)|Q_(FBw%{EY>%Ri;9b`ZN7-R-gZMF9tO;8EPElBD<$E>W~)oE2`P zBr|y=j!}KueofS(HrFDK5@q(L;j;mka~=y$z4LRZO6e-Q-?R{2pVrUXwNTnP)U|h` zs^vz>M&z^Z?9$=fNCa3DACowvy~up+Y5tp`TAXm=3jI6IN79#*FOLkRzG2_FbBA)> z>KoyBz!nJ}b#8>_$eGCXv(=ZOAFWco%&ijnvBlF+^Y^j>a@F*J3;A^d_6Cm?xqwAC zZ3IJ);z9-~+*ve(gR#g_$+%0rKQkU`VWyxdQ0RN!G4S#-x0J^uvs#`rxcYAG^YzQ@ zTUHdJ($OO9_#4`F;^ihT@GdND(HuDkL;f|gfXhO4^KYfWj4a@Y;G1o|r8SH7bEB*0 z;pac-zKykcoHx$FkIs@dNrF|);^9t9r=a+I!~So3`tZ@C#4Auuq3dp{?l50~k>k-7 zP52kYOS9%JDxjL}C@yzauX%iXCWG}2pMyE7%?qsLS`Gw!ww|xF6kadPnQ18?Uv4^6 znIpSUg%iqA?3KY$?1&+J&Yw@lT2QD^%eileNZua-32hIOCROqh4RZ z(WM{mZLD`QMY6<4zWHtF$041Ur2hYyJGz|91MwKqZm|= z2q=9zG%bcVsXDAIAI?9Hl35VP_@H#+Kfz8Ges1%X zhW$#bL2iYC&U-)KKbtQyc=q!=rtb+~+OV|%^*=@I(~5L18%LWLIh(ex`(|}29B97( zXm|WL^krdp)cboc&6!2a>n_c3JeLmK+XtnCSwCsA*t*_}IAMvt$2NUCanARh1oTPw zr0BFOyY|(L4%;{`feu@g_rZq`1xLkJ!pzj_>apYMy8EiF#^k5)*trwCm86q9(y4K! z62)=_^a+gcQa1iv;wbW?R<_z4{%r5vw>-2iS`uuVof;oLs`D1JTM3g7TGE+o>^HG> z$q!nou*KV#J95=sI}Y~^i?uk`er6i);M5y!|80p$?v<0t4OvI@J! z*g96inoS=!Taq^#*LA%$M>}!hvRZ+WNyb=n33g(-U8U0BHdDpL*~Vy^E_(?S&tv%oxVXpM@^$G#M7Bq4&|nr^B|00tt!~e>xVDDt zN`AU6v+_-9%+*f5bIWRGSG-@gMO1H1>sEH(CagpC;={JO|6O_)=t&y{RGBR4=k<9> zY#x!{m3>{RXPb1oTG!ScOeb$tzIU*GJG$CANx37TVkJRFu7w4MR1iB)5swv|OGQc@ zg7(8|XD_T(NN_ufE0c?Nwzh?rX>fhv#M25SyxkwRV4{o2(#Yvgz=l~XYOAQmi9Qvq zlhKT322T!j_LbtwVaewj?qYJo^7BOfI{ zo~*Iln@Dn1;Q0PvsyB($y$==lBQ@O#oVHk7K|;*Oi%79c0!2o)Y#>hYqBhVLY=>tq z8b3e){J7IZ=egXR-J+hybU}a()gm3Xq>dsTVkTJ!ii@c_4?pUN2|}P&)asNp>21b>}P7f?40po#K1zv`)b3tuHZZaxWP& zG+j!eO-QboZsyD?(yaLzr&uq*dYfX^yX28MIRUbsOI&+yw)Ym)$GQ3Fa*q7BwSa2_ zJ}$>9D$b+ZLt*q$2onbC5ch>b8t<#vt+<}-B}M~vdGKAr9z42<8c!KdxT<$0eoIS` zp6T%fantb_zYg({_5NW_4?XRb6&sy?g%fL+e6;|ypb2LPy5u-V0uJ^Nor^#bgS zS}cv4^v&*6aI*r8)3r@D!uSYM8MKek_uYW0)x$fw{?!Mt3G*YX5`1>i}yaYrBXjMMOXlP>|4z z5Yh-iic~4mgrK4#1_%%&ln^?oC>^9%DGDl8Ec9xjNfQf2=}km>7ZG*;U|H7&AOEiT zmWOY44awX)cg}m}-1pqcWag&bCj71W^QAJ&B9=+Wps4{iRw#C+=R>Kcrh$kwR}0&f zng=6i@?5Z*<1A`?Y9ZnG=SVnQKU{cFk{9SWoYc8Bj2eS@#wz%3# zM>s1my1+&jTah z;Dm70pwWb}8$8@RZGumgg1V}}o3Ur~tUWe_i6iK}HjRY^v+ShX*r+V3irbJtV_@S) zvxCfUzDm;x5-_%Z=a>cf$o{SMXGv+Ph1zn>hCK~*8uI7ccg@U$Y2Mv+Xf&A+F6k9> zd(l=}1EQg?9(CDZ(0oQQp^0)QI-ViRHwhWv<8-pwcgK|sl{U=2ip?$RWraB_O> zgEHbKeW0YcM9^LL{XY=y#(mt#Fs4+@tL3HrOC5TnF*yGmQ_d@b#7v1pP)bEe) z!gu@LIxBTUZ1TZ_6XWSOKFri>uys^{IX1j#+8%X3!MBT=JDfB0 z;k|0XdeID#^KFRG@qVz%D3pGVzO%!}K}&a_+=egUIbJnaFaG(9V|@rewViU0IGJ!+ zbY%yQE1wciC>eqnDSKbifEER+m)Ij`t&OZfRu((Qx-`$t9H4zkt60NoAJ~|zpz~Pa&I)hsk+?ZY>rvG~5j^+QIO}<^N(0y9G4tnBnT%C-taveg$04qG!3Ub8 z>6F}|z5ucd1?}|@dB;6pnvkYv6zavq##}t82P|jQ)g`InRnd#V<%CKUpQOqt&aoWN zOizE=+$ESkw1=OYBz0$_B4e>FsQzJneVDP}SW&gf$<3W@g^Kj%_sr={Oa`8B7Ay{> zH!%!VR`CV)Ej`gEtg&lD7MTi3s4Ta4iY7d2`_6H~TCh8JNM1YEEB9c`#ZVRQ@iYL* zc=P-z*-p;%0sf;Ic2SP$8O4V!qnru&cTc3KESNRHsEf;*AemrbY$H8FJ4VdA2rYu( z$q%oeG`YRB{p~c&RThY{^~s9Rn>AHCbCZKNo1gUB$58LyxPdb2Hl=Y=F7@d6lX3e; zRa>s$$rwGjo7&rpi%Xz=JNF0sm{f;^aM^H8(F+`Xt|lbx!6D)~#(i3VruscYgB{m$9C3ilhRH$jVj0! zGc(^0dJ&MMoK|dD`b?%Z@1`?7`^oqyUoNIMr_IDoux9U~)3-GtceKY<@b^Sh`1ew5 z%OR=s0-LIdlt%19fgQx(yfNuou$7nJvIn?TXgnveDYQuKX(IAuvc}nWWZrMAA|8ii zX5lDEO-yE>x$sv9#xgJJYHiuihuI3D6T7|XWSn?6>*-BGB27K>6B7=D3GZpxZcljU zYS+Wa3XqcX8(>fgwWL=7HEzHZDP7qcWBYQ5I_G{pcz6(PkoycpK^l+TJ4x$wbM>6F zHj2Wz6}2xx)c49Ez9*+`Cfec85?jZ@jH4-=O2Fk??O%9QOGp`%@H5p9UVw)x((ZM@ zwJOkMA4~>Dddr{Z_KT{xX-qPhFk!O-p?HL+vk167U!*SeU~ zJ!a)!Yw3G7C2a-_9o&vc7ErBg`{yigk;A}%RtMEr&wTh%&sMxtj(2)nTH)tf7pHJPHbI` z(H@YIR?D@K%E}W(J%XKaH0jE%J&pF<8sCRK%IE2hkgPPk z(WHYSJzzdLl+A3z7yIOXWzrkt{wJ{+7d7>{21iGt`(nIM*`#b8n{evNq4YQg8P4bp zn{=rU3UGVhC|W3fU;hL2i`Q4I-8spvp@0SkHkYLs>+**@Zp;S zTtH!fsP@&j%{qbInyR)=4fNN0Z;;wNldztidQO$5RjEvYtf3UV$l@15aZs4^EIp#Y z#I9DlBVwri&crUnaQYqTKTdavTgGlacGKZji0A3<7MCD52L~6n*AHhP?ZSZyfvWy( zuZtYFG>C{rJ$5L=PF}jEt8&Pi`wRsM$A*E0{KkRlqV(eTGSgF<0Y>7~`knI+A0?L< zTp*Xg&GtXqeWi%zB+vK^15W2aT$Ktk0Dnq}tB~K0aDL%|+`gkf8#i}U^5pZpo9s3v zO1Ke`{NfUfq!V65`P5#Vn;2|5;=scJKJvW@rOxN{b~RWy+L8I!;7aw`YO*T=s~WB$ z26q8_yeSK%9$XQLiaHT+Zgbat&*%=v78O+o@`_1}zXMso@t5O$5BA&yb`;nfxmV&T zDsGGfIjD3*S&!`)qGS}H>2LKM?@WK{6j2lf8qIXQJnCMh^XSSUP>_a5x=M&Rr-VKA zTvVaIsfuv!DF;VuRteGrcZ_8+cA@o9_SI#_FJ~MpDl#895Jh@`DoP-$Wxsz?t$AN< zDf2eQQ{l58wIEe{iCAm3vmN|L!@a((vKYq0ji+P>jJhET-ekc zNzGlH7WyhWN+1dn5s-C-vkcN4#t|HPT<*YCV-7pv;?VIMlxo1tYbdJA!g>&3nrg1e zAvM3G=BPu>v0zv((#{HkBarFH-onzX^*Q;04 zRaH2ZLlr^*;s_$CoVUIA-P}4uY^zy7Uy1t+Zn{BSwdihxmrA&xB zXT=3dX8L_#%^BqUnO!r;g%5H-ZbTr5iA8gwajstCDUMS|cjPAiQ_#b^KyT=o1@c*c0*9L7kd8Y0TThW(nL)*Y=7g7 z$fkvxVss7$hpCEZ2D?P{bh%K5)dzgFHLvxC(;G*q$ywh#j+Mt49Ab60k*(5gZL?+o zl~Zv%-%PJO`0PaI>ypVHmzPIcy-sE&rk=N@nQaM2^(m4eJw+)|q4FGFu-sF|c@Hx) zld9SpcTpQ1+mX2=M)VNj1Y{~GTj+tvj=tg4qP;emFeZCd{Z9MhJo-aPdNQPo+`RhU z;i$-+p-J%yf;QyIsra#C@jZiYX58L$jW-p~^@~KMdtlB=#lPu)`#^qUai*BN@WlwS z37Te3j7^j?HjK5q}+kW1ItBL+T2}NW2 z+1(#f<;&Q(IXYM%m2{0aPm~rfCTvJQ{OInbdub+N@Z=N9@;qY2hs%3k9JeXIv7-^2 zdu8X7+wjahVSiEhg;1BK@v+8?x&)=uC4c$;|z_(Th+jvvPT|7&)&F1DlZ&Nx&6X*Q@3QE#drGhd(PV?8cpCCT9SQ=Au)xoo|AKe`o$d<}b;j;m5yBzvBr3F*WLQl+%G}_K z*=P$mnU~gCWy{hYv(us~*U#@@z&@+y*xT|*?1^$8e|GtpM24zHAxC(Yi;ZTX zUe>eQ4`17j6$m1dd@^mxn#O5kItInJk9*AC&VM)(iF@ThtFdiM6a>}KreQ=sVI6yZ zzXT(>u*6|d9ODj?5nPMr*4sC&$BHkZN;_RNwp@F3iu+z6)i(HBiw3T=j#Kr9jS;rS zNzRtND#pQ%w?QdP`J0%JCQQKscS>=(NeDh7JH(bmbt1DpxqVCLPG{hF=#1^HXD8y_ zT+egex@GGcC0BUAIEo$L_CoQ6m8Cq}v+Gh1()z3HLU-Y)jH(*wg(k#y7vFPqx#!Yi zc20%c7vZ?$#gpv<%xXF5wV|7J8KID@A#FO{D8-Xef__JDpiT6%GCeAQFK%;V3ur@M zh1O>9+@=K9pzDx{G02Pv?E&QVLtsIZM`i3aWsED)eWQB9|&%p#3;qq~b|h!bUtoCmE1^P5i;^ z;_@lpaRVwxksP{5kekVLIJ`EnUX9Z4O_;lrnU{ji9iy~T=bG?|_C9MC8SUg06hTSL zZLFNgh2nDOnxyBaI(mqNLdLRG_i(Du$7K~$ntxnG?T)tO{J5Ip6Plo;upJ zeZC|X!yPIUzQFsl3*9-N2DIS{ghj2sev!>9Gs^OVms%ulN`5Q-i}M037cL(ZJ)TS@ zjJlfdaG5M9f25+nBqyg^xdGPyVQOBbnvy;ATqBfc`-YNYijaz-JRe#x)k!8bf#O@C z3#^J2Wztw)$h(KWZ%%Kh5$^%1yh^B_m2ZrG@$?1slwoU|<%X-}$Bu=cmGzjg*|x(7 z-NMUS&|Ix{w%(ih@R5b7au_+~OKjZ^mJ9lFMFAJXf0Ayi2s`xJ7t=86j6Q@0%_ zp#u4JQ0hnLUMfK}pr%~A!hm31vrD&n!^E~oT&9O6W-X}IX;jF?XwXd62yEYiBe6M~ z%2rq>YLcVCOKX;;aY^}vbFWizmR>eQI7Z4;19Y8y4;@WSytloKhdXb_uHhCp>5g9O zv&v5t5##yYfx^uo1?YLmg;)ND?Mw=XSOKUin47IfNXzIm_j5|f$2G58>Ju+^_Q#Ok zL6E+VAAcohGoqi-u=nIMw!u#6soS1{J%E7_NIh)C{J^PV5w`j8h!L7Ps)IsaS_&J= zsnViT>52g{^6H@!!4XgaV3Eng14qhP3l79!IBb!Lx`-G0^7NUR=_k?fiini_(>f^c ztpIw~>xmII0Q&8Lf@cMz;X!Jl4dVsal8&N!m`wi&_H>Xe{)yzcrSwNHp5lHA= zF>Kpd;owCI$XM=3`iPgsD2mVWGFvC6N<9nnJn6>uf=CmNAsxx&Oj*!@83eP^fQyum55;B|v&8FnmPpuky%hwW2)uKnt)xUTLGC{H*$*;= zA?9pR{_&+vL$lxYuZj(EeW zcSRtLCw51LAzCBH$2GmlEXUZ!#V50@$2vP`dI~K2^#)~YQufv-i&t>NJV2-!%Ch44 z4fiBCo$9*EuQSw2B#u3uyd35@86aXmcCdq11hZ3>@wWE0ju7*Co{mmSv2+~8HtU1g zn?@7t#`WSBIirzw@rMM+Zi;t8#r&nB^cd;My;&;m4L|hEdef91p_^sVUWgmZC|2e1 z)DPDYIH^Z^WB=&UEmtG;j|sv$lC|VEUE8B3$DrHUE?DP_-^9=nh0bB(X_Tp9_An&5 z=Z=lyi8}1yu!k;2H#iHZ3{(+}KqjNL5BMb=j|}a*R;`-GtH*@9mNl*T5YhX9M#?f8 z$_0ULhp_lY$DGGtw_eN1%ei{|{FS0TV?w=sx8X?}_7)Zkx7Sn&kd%@niduI!I zd2b)5DVSB>qFIc-s#?V(z?apR-7JJuDUo7+EcRR@B)N&EKX~yH-=m6xR!WmreLgug zP*JbCZijnKbttXJ=DkM-?zNJH=manFD+iy~oIMp45+51UMsBx@rr;Va6XZaLqY<0+ z!vtT_QXQcHsomGTsH@N}LA=KwlbgKQpKfiOo?<#V7AAH8PpX(182>P@CqhUTp~4_Q zWn?}b+Orw*2xE*qKW{^UiT@VlOJ?-^`3c^dXYG^ner-GVA?RVz+jPQEIG3XuVQVD0#CQAcjqL_;Hg>;p?M(Q^d7ypv!MEo zvazrbhF3*?70h?$UrX3#HYbMhxlxbq+>PXg^@3<1Aw#AUeFpYe~rGoD{FSV!7Y9K^)d)EmN0V>mF*W zRv0z@A*^B33x2hG51#VpxtQ>`kQ?qE1s*ZP9#If>Zjj5OK7osgsn2;_U!UNIYSeBg zi;us&H7qP9OC^=wBJf$PGowN)sec`2>H+n0g*;}Xy`ehWnf*+RXG&7DYBxtJX4$I? zUctn{X@i5U#AgKyYfS`Ii^hOtRD0@tBZhS?X(^o#6$@U&nw9J5WC&0o(_&P4pI@d! zp#v^9ZvwD|hgML%ijCNG`5^wj0x$n%QgC7M)=;bw?I>o>evb>At_-YPN+QjWMG|z8 zJo&1};kZCl2&V;|x$=oDinMza7R+%0FIvk>U&#e(?=RHP2&ocR_tJCl3d;H*&l-m2-^4`kpC821_HTznP+u!|vcCp$^TB!m_kBThqI+ zF{)mtcujO})$=Ab%4)Uji79N$&ke8fqYT)7QCt231E;=PAb2C(m^n46&QTYgq^i}F zCeyT|wy7-lpmlkLL}Wx|cDTfm@@-@^w=q22+tsQV+ek2_c_!@^yR5rUbl_gLLoKl7 z&+hamhitj-@T5dh*9{Sv>T0yv7AofCoN!F%j-^k5Z$OS(1e3K)j+G56Jb%w^571(Q zCtKMu7PrR8?8L4zy_=YA`yS_r^b;gk368 z*y7=_Lh4+u97#)VOYR}fOwHO9RhRIY6C=&zcTSxCcx&J424NH!dvl%Hr&ecL`)nGMmI3PV4X8m)aB7S)xR!J;B!rhXy!kmeoDi<9rLa|;^+ zKODEcMi}U9iG<$5`|RFf%1@`z-XXe?;hgzZL$9o`wz`eMU^`oKIPDD#(^i@RdGe-v znV95B<`@?*Wkqp&DJ>3^JFWKhPI+$b;Ij=DfKWjwE@DLQw{PCe}h-kU=9hTKh9hM#|j(~P*NjnH%^1x zKX`sDj2TEToh)mPmOEg=*p#Z`Y?@Ps=YEfW$WtxB@Z4-C;1aw3^{Z` zrxtO&Rcb@H(QTF-6a%GzDiIJu#ywmeRyZ_7T66F6?j=i>dRO_pjf+@7LfIx%5Z&Wc#P2bfyc^d|SKS`Wkp`7Aj3cg%aKycAvif!BEnr%@H$I zlr#UrN&5JM?OQUtGP?L`&#*K^&)Lo9A4%w#?c=*?@Ayn~D%R~`=|tq4mZ7VzcN|j6 zhDuOZ6)(Mb6DQ_2?~jOiFqB$!a2s%JU_Z2fUv$v!*9kjaEioy&(5;cbt9epr%k;+b-aZOF#nFJ4*dSTe${iN~M|9`?qom{lQn!Q*J6SFgc;N zaIr`rRwKbF(DYPvd-T!X;ev`@s;#F*!D5kiH%?7Iyz{bazRvZOUB9G(L}M?$3-pxp z(d?z|k^9{GX_g{2^l@^q5(M95c~{{$pEKFmZ-<%aaEUu!^`Y0Uxa9-eqrAH&p^nd< zcAOS|oe--qH~vW7`B@|UZC~t*)6&6DrN6d1?W%EPP+;gICjV=+)8k!8qZ7~tpQ#B< zZ%Wm0V|U1lzL#RtOvg$OmuQB6fL;L>dPjA!n_?v;_MJZMe|Otmj(40wKX3Q_d;o#L zLB<5-ESEX|)2B;*eO#VI8NmDJ^4pxT+n*IniH;bkwU1*bT=T2)PkhVZKv1`1xo_NQ z8-0H7DEsLvJEtzyD+Re|Zj}~0l<+QyuP(X|WmjDM#zDI6y;sTw*Y=>6Zp=`Q=84hS zXPItLD@5`Fd(c%_P*lV08-1|=m{0aQ0eeV*9|pfLC=lPy_Sct?imL5AN<$?Dp;s{y?|GMt%B6WeS~MtYTH` zpYeOdtta)i^6tJvXTZCq#w1~HI*+d9^D}@f51HlHG+&~<4`@|0J|jx%9>xCav@ zsES5ulV8yA*JDN?x9H_=14p;`oXOF#%*33LY4)<8^w9TK{_P`!;UmpYX5b6C_I;PI zcit{;YtMh}G`?)JKRIUol6RpVKczspvm~{u#B_$PzpJra^FnjVU9OtxmxyS6%efO% z(x+Zy_jdR`EyD!~jfA-ft#st0_T+}&S+GlKKF&JRN1Rt5Q%9(8=Bvj{9 zEq7w_JKDPztS(rVnAQzCy8>gYb}Hz7(Dbcizcb~%9r3O&Cuz5Sdu_m}s&6_&9J19niuq_Pi`e;R&rf&W&3@!GZTkFe+c$lT z%f(dE2vp#mGEB%`dnH|FX7%5=Eo|$hGiB)Jn)(kN9HdeeD0hHTQb6T@20%_jHHu4%XV{# z>2&{tcmlUDZD#@t#~+-Q8*FcOsaVjce?Z_CG`(2fJ0b#XXiT*zy7f*$uTtz)(1WKt zmA-QOwwo#c*&~5x8CPCnXUxYcrQ6-+UbE+0jm~uZtcwv+c!77+FgqdF_LV==qtBQQ zl)HQeapO!~KY`}xGnHXg8|N>2naF0EA4;2@{G)Qqyq-nPk@{-UOx0%TODTQiRhI># z=8kRTh}i{yoafzmgN4r`YbezO8zXF$E1Whv;>C7eDDa|}n6bsrh=3;w8NH<(hly;JAx z);-ex$57bVyStjr?;7eay%~EunRt=gP)A;?JHARl;9Wm8{WInCgVd7pqP5Bf4}xAE zKXNF6H8O!zq!h8-|p>YC@gicFevs(#uBs>4C_2d;ONsm8u- z>`$XGA2$Gk1t&}|dJGtvImkaO7%(O4kmvW1-l=DDqA|L*3&(McqmC*+T@ga3q3Usi zf)Z^7<@7&y5t*YJoipyEd60Vlv^y!Cng=(x3!cJ-mYSELwXNdT*lv2?gI!PH2@>;m zMN@f*>YHsk`T6?Tey6E=)y!+!ZAkTzwn4iGv*HMc*5*giOkj*vWFcaJ<7uT@*#Tav z%#PV%JLJWa0cZ(pR%HoY3FTm|#IUm@qru*6F9&A_W97)$?5#sB{2_aumHXVVj%?bz zSx(u;D%%ChV9=+`=$Q@*!Li&xa8#K z&f;0O#jMvp(N8t)w#*&~ji@LD;uH1!Nu5&2&u=*JvKTfB*P)Niq~J%4>%`xMQCD7T{n$voEL*@ai-oxJwqcD_)s z#7;r($OMk}>KDg0G^i!h-K2N#%5S4=Jb}H!m)Ohu%Eecz3RPU}S>kOuSe;q-#Exrs zZ>+JB6X1}gLfjr6iKKDXNEM}!3vynkv#;KfFEOyQO0kXGtHDY&!1DAEG6%uO(p(#U z{(6$_=4qp1ccU<`dT(#<($WcRZ_9(1?Wnx=d6IU%s2KHyg*+9W`m?kfp(0SoKr88v z%=%W|@s3P*aAv3Ofm(qQU7T73aE7Oy-q?y!SJxH_1=Uy8-8u|~LQbmHGq7I2UZQ(E zCMJfL3Ef~i>UH(guXlFVQ|*B=>OlOgAmhyyVcQDeHA38BZ1?k2xO2j=IqcqQ z^~J@y2kw^?Mo{WG-iy&w@5^uu!{&8c_q40npy875c3IVMs&GfWBvnf|D^1GBHSd(C z;trIi+0dmyuQK>@gIa=Gay!=PY&&0=z$2H(nldC}_T%H@)ko7$h{c35#`vX0gm($v z&F=9__erNp=j2TF@gcnRNl*1>7+`yAaHFKtKzQ%H$YTpd4te@HAm^5LqsSUjV7pbG zSa~s839p|t=^uVPX#wmSU0C@lbgZDd^F&~m`_BU~F3@^1*EtuGi~Iq06LJaE5kvnbMp+5% zu4?0n<5@U*>zJV#ztV=|y<2H$>@t81jPg**2bf{$^AW#ck<^v6|eA4aNNWo9jP5_(m&u%XP4o~^vHvx_!J`v~Wgk-iOA zXOr@<<9aj(v;34g(H;s^8`Z9<`O$fD(D(ILmU(aV>njNFIevJj72R~{bo#YtXkRH> zaR&#?bx%X%e7-{r_l4#+L|QwCXyZ^j#z}VwK0P~UrW6Ofl46_@EgonY5BD5v1y(9w zAO!v9ob$YEeSd4Fx~lKKdad2lv#Yj`@)wo%I>H5qK?xW?5Be%T@=1>) z*|kHBkhH8>CSS1QX6p1XSZSUgxZr;7EcmHe6EjPpg)ZfD(7hx6OoF@sMw_x$bT2DxR$^^oh& zZFa^e2rE8Jxp*12=jl59X@f*)r;u$hf56hYR^Ix$1LpCCUNOVK$RcVpXyb^dd+m@` z_(h1p1eu|ohu`?6UI^#C_F?B?rwbI;Si~JwI$Sz|?0NBoKL>-Z@7cFc{8v9{v1~^b zO-1m0OZOS+nw##JwAi$=?%<|O_*ayRWnB}zov&)As8K3*3pr+0Z35vJ=gqZnE{(BZ`EPgv%)PUH&O~pJe!!Ls(2&ld#pAg_eb6g!-rd6hW)i@ zLY`N1Z@HgQ7KHFDc%-7)ynipr{`!1>l$X|{ES+CZO)J??F3ZxJ(SNmz%`lggZPo*W zLBg3v{5MTj!s0szsD{rel+~v1%;uQNc5Dknp>&B`?MP_`lZ)NyQ?&g(?Sf@deWchK zIie%}h@uWEd|ZO4qFRA`Cq4RCb0{;3ZPp#@zxzVn1pL{73-4#_@8`703JxkMr=l(- z^q1LIfmsx-2dTJ`?h<<%ndQR#2L(5b}Z(H#8>*3=_?p@kP zw3p(S%A^+VHTXm5?Mo-(ftlfy>SGTYU3x9Eck9LXMc=Pz?*xmU%TA8*84)66 zhW!ak?T%qao0Xk0xHU%!)TDR2>0JC<#_33K3nfs~TuA-GC(hQbpjjQ<3I9m9 z1@8iBu_%03o#A!*&92LqPNgY37oh9?pzf46I`}q<2zvGxHF|fxUP%2TN9K=*Ud$xh z?(%dM(6-a#VcT508)C8=W_+FVbs%a#dH3P_xP))MAje&+r}CfFh)}7*jw{M)PMz3l zeB0|kIxU+NCb8`7KV&d|C=)t!GgjyRic{aH7@^3`|$STty`(p>xOm`aqM+p1?+Gk{Epc+ zm&sW`nr~ab9EUA_5XDCVOkUPxILcpJ$?D?zlM&lgAx;&v`?s96t0w9_9ld;unH6L2 zq4(TSO3@>4nD+W%>pXyJ>DuRG=fq&*=@&Adyw;=_ zLwBP`yZhzQ0)-fgTp5z?;-r18arzXcMGJ-(uVHSDs>!tL3rc2T84$^D_DOQB$o54t z&P?K;iRnJT8zCEXGg(u>4DynAS_K&-a=U6wIsl((rMaq1e@-M{>?Q1yC}S_93Z$et zua}~;dK@WxmqnO{eDNWgQTik`9d7Sc(DNxzZyQcQ{fv8>#PMu3Ol;a)Ez8-S&IcnKl%;Z`cz(r*bfTr z5TZ$RT{dJZmgbTJ_Y!|%_(_PC2JQG;LJ4B~fBL*@f8)=$(ra;u)KA=fT)xPak~QsB z5p1HqsC7}2mpp&#le}6D={YsyBjU&4F!Po7G5py^5N}z z)e=q6xdU(YhIFCE{-pmcd&;@bkq6Bnl2$^325h&mEh~!&TMr9I`20#;yx?}4#yfhU zeZ%YEmli&xWx;Hn(Zc|QscVN?DPR(oWJ#*q><5s!^LBEbP`rQxLzu^hQ_qB|L1{PI z=<6*!%$>nC*Xn$pPbhV15^tmTf$y~-QnZqM&tsDv)(iiuR&qLbO$4MMx@QE;vXa|0P zmS82*Ft8V%YkHbGhyS3$d7`{-*@#07q$Ldf^;4={b_m~K$DfevxwBJi!}-h}qqOo* zzg_mcFx_X=1typS9)2CJl^q*>nKb(2o4}aBtxDY%o!e96yz$DsofhsM*?KJfi^5hw z^UW>iyAxG~vV(vq)6UE{vUu!^6|>HY3yLNrcZZ||X_h@11m9HJG%L!7M|Gv+{`ReGHgnc`+ z`J4ae7v)XbFQsnW#GgD6l46fdk%iVS%-cUUYoZ}9EZ56Ke4Sd{IDD6D+My}=JbFl1 z&l3FHjIC7pho~V51qOe{9k@k3FX8-mDD6vrsLE!oG2b_RcwC`R0kX*{^dCqogiBj? zZ({8}`cCqmy6|Snuoayu4E|8waGFxNoX?x_yHdDph?NBVtQP)ip7}%Ox5cCfu)f*m zxV7tZ?wlcl?b?rLNLd`8d%dr}1CMKib0~K(;%kW<+%dLRPcK&d<*|BCd|2xYj@uI= zy>e2!(c`@?O&(I5NaGw)%KTljE#VYYOvH3z;`guI@jm0qaF0Cr_}s?2z&56~UrO3z$c1)h6M5uUT6gNs z@!q@4ts&@dk~MfN3O|+TFFr@e+bNl3xkXJGZ~PfmAh!BhngOF4ddZJlxi^0L9ab~{ zW3M*zpeSw1Ci;h=LZ9bu2+{aFlvQojZ zy8xu%eEkH(Oo!d)R%E{~9vhu_s3kFA4fhL!yNf|U-j`J5j`)UkQ8?;Tp%v*jac#eB z&5>WBl)^nqiRX)xpX8XFoLIK+z)f4)yoDCmsHo_t2_ zam=lbvU_Tj*OK~vtYDnz8d6~1T-hy#L5(KA5we!IX+Qql;LfvrQP`9)sdIXxN@%sm zhIgBr^g+OX#Wq9QaBBE?{11_n5UJ`_eu`Bp?svU$+p&dO&O>2Z)t@uJB!b)?EtVvV z98UApJaIp-ofV#^Zti(K^PdfQcVp0cM~rGeEJQQ5gRqQ*A{)Z+#m^N3mkugMT|Zq~*J$83qwXXgFoKd92=z_$I;E#tK@=wX<#XHm() z#sAd(?ylM~fMS(cXF9Yg%zW#hF3|QX@K+mNLs&ToZ2S50JFom-IODR?Q)0KTorhh# zLGuyjBaUBo)NQ|4APwuXK25JdZudrv6*W?dE%#G#&D9q7evY}xWelx&Z6Z`HPb%dZ zvTpHo>s||5%%v*KdD==c79%>I<%;zs8%+A`GtD?65QRD!%G@uxC$;Kl`ZZ*)Szdnd zoIMhLvnB}VN>qd~rCVqrZwSvY_6yHdMj@4c;5(~4VN>{xs8aoRS>X0=G5*AzY-|pt z_e*iW#E%ruIrVv$;9ZAqPMLH63@=};6wM7m@#9eY6@u7|Z5P6uXby#}9>?+?U30PL zk5f{MeP5A=*QA8BJ`Uj}IZbpGn?){_%t-4mtIAhImkNlo7s{4JH=E%mEg^q`!|xFG zTlTK1dH!+%yAuoxHA$CmHwZ&3pOtqJHtU+rW|cf5Wv82xT?mk7&zC4N!11u9?Md+X z_Val~v2CTkpnvOpu?M`U;}Rp_YH;vM@RRsdyLI~cugNl{4~A5;RLm|(LE83Vf<>UO z>703nX_PBrouG5))x~8>^SID!%bS&ZV4n6LG)74niVq{;o?hERq^EL#0WU_GMTFOJ zr2E#C#d5pTVQRig)?Ff7&&QTB<6m2~{l*I`NgS&H7sA^yrylC;^I`)8+@Y~#w++LO zucX(3MCOQ9h385;lSoe8}Qctn4m8?afhe8?i$M_i*@g_AP=erZa45d3yOCurxTL zzPmP}Jft`Ql!<(4;}AX!n_eX)ecNx%%=#|&-qAd4xVfA0eXRMF6ec7_!hHKr5PRjx z`;#a;?nFR>9tv2P@KbD4bLt)(tavU|Yguv{`{<%pj3!=}DgI!WYPP}`NpVe*s){mz zp1>`xPPqycu`qFIu>kmYi2<3IWiLBz(a(Z!K|Dz0T=dHDP;v$Y*(LEeP`xSK1~Hn% z)>aWsQf@G{_GoPBqc*biDnt44wU_n_-b046DRZ&&YaL-0jJ0j>go!+QMI@6$LzB=B zy&Bw#jFxxDx2m$2IRP)NcZyS@j7G>`Flj~?N07~;halyvBnk2)3<=#}F4S>7!{)+R zzR}-Wa>IMzFz2Q<+uu5zt;7ottEV=wI;D!0bVFF3BAVO2t=Dsa z=M2e_x}V)X0Nl%rUu69Q>t74@GBg*K^_ibZdH>>~f&kDV8C4D7q4z_x=vXj01t#XB zF7TYME@u9kyRO{|C|Xll^*i1sy{aO3z?lIQ zd@DJEHIm+EC>B(N8|)!m90c+(a<$-swi0{mXNL^Vj^;+^Cw*moB68zhq|+(%$TvGL zo=21cr`sIdV4Bp^hToeNxxZpdAKGprg6k``Ue^|Bq`6WK9`Gg=A^^4MNcMZ%T2bB`{UWn^6 z7;mHnGmmC9TJlK|p<;)-!Ne`BdUHy6y=f@nI~0lP1_$WNj;Dbmk69)x>-3WV% zgB4_AK_u5sS!8!6D1wG@uco&Hx+Hy{_V&&4!M^%UZzLuFNyOA}Xx#X=Az(4=Fc32e z9~40r_7{f)UpqO{qf5AQ?c)2n1)ilJ*GzLxb?_WaJaUGCWZ+)L)g>#{K2#(!I7W8T5~8 z?@+{cW4oAAue@a4tRL(%kg1+Z!VPZh>KeKrFYwi1uy$o{;9w!_HA!xL~_ zjSxHnFg#EDO)7$~Flr|%>d=gGHDhr=%KTHB0wsE7P$(^yieDh{dd1NFL3DpX0{3C` z&fy7E=&Ejc2qwhwBf}o}=`|mqkIrM2M~|ie^3UmPL0&cQqE|YmM}_{(FTtMc&4`DVrv}e6P`P})FBiP9YIH7#xBT zC^%YTmLZ%*2Bh{L;uIQ}jxv2hn!IP=D)o;y5wM+zxX~lMk_@7AS~RjaNUi?|5I8j` z1Mw99&r=2B86f-Oz45zdpbu0}DocexY&Q;R5%dp6EmHqtq^O07sV?^FDElu+Kg0e7 ziJprMV*5k9VAC}a_eMZpPyRpGf4OyvMpl79ngt0BecwY2Y$CEB@x{)@hX7VKUkI^X zciX)#l`WgTF+ttcumPtcq91=^t`6bYuKMh@UJ0`*NY&a(khPjm~5rkrov zZk#?_U&fV1NsMg}CWsGN}Yli(I*FAN?;*1^>edn-aP5y`45t46t!&{5}LS{^N6$7h{6r&O|6r02;>ZW6nYF6)Q?g36=H1a`UYh% zMN;s8oNkuOo{uunZtTME52{8=AX7`}XJR&+f10wvEN=eClairx`?~61MT#Ik*0yQL zpnsMiw1N;45(qi|F#NL7cl&+8s)%Aw{E-VEGPt!&C^pX4^`HMFQ422q&kZtE(DiS$ zJ_6sMEZ_GGA%DZ&NV%fILvQe#Q{Y>WMc|vYRQJUoG^?MpNP2ynspde`)Z9ivLr@nS z;_Fyz%hA#0zofjq9YRR4gplI%@-Hd#WKqah9T-*Q|9~R-KTzmYAnO+5R28R#Jbyx( za+00%r+}}umRdHvP70DK4HrON-oRJ_8y<+W<>d9hRKbw`*R2YW5s9HJFp zrWv<>JQgdXpg?3>%;>IX%>9K{_rQFlj{?IuILC?cMftKeuZck2R$tJP^F{%}jJUz- z*>AK!Uiq3<89oU0M@w8?>n@T44VwFyO>ki>FG>!fZFHISAQ+2z7J+ zpr%+eW#fzq32dSo4%vduDmaiWs92-*FRPpRpIbG+GVi4_YjG7=8R^{nRgGyj!F5aj zpr%+e4dE{2`D=cR9+HSf9)ntHB~zV7uo}e1D!jdu^Jf&_P-t=y;DGXX_o=mvyeR*2 zY)ZNU02k1!^eT_2=&`Kk4LK!X)9z4u;VWv=t1xcP`6~t*MYhB16*4P}GGNWpqrrfo zF`+qb8R9{mWYu7pp~_{bdmrl8hZrOCsLTdZ)s{&^tZ=4Q|-4tp^1iX z_pcSJ?@Kx&4iCC~1#14jEyzr!yl?GDLr?EcjD=2n2GUZd1n>daYeDPCyG+VY4MzSQ z@ulOCr^gqi6JbS*r>kECivJucOs(%eoqbP~++1fyQXxL9tiO24_@oOK@uHGXo^w#t zl#kh|tF2?IRmv-^l3N{s0kOL^HgaG^Kz#$70fjbjot|yuqbOneB9p#d5=rl{fmZR+ zu_N>)napMAqLOi(>E&7}e=efO!fY6P-;JA}x(H2j-ErmvA80=OePcBbmVh?H*8?Hr zV28#ALz4kO=#fcKVpLLk7XZRRVByOT&pr&tcqUQ7b~>W@d4gt|gXjK3Czf~lcU{>$ zi5xSgc`?w#ds`yTlPDYle9-3mparJ-`oCv37I1G`8#cP-=Lp2qGH5cg#!fakIA~Zc zCKr4VCR9>eBa}Z=JNyn{ST0w117GeN{JeMx^li3*F9V@Mm^nUp2XP43#;+BA06&xx z^`_QYMT~(#-vjpV>*r<#0VsMX-u_#2ZsosojBq09wzjWoPd+PSuH50*v7!yYLJG1Z zZXN_aU@aopvz6uo=z!Yz@9`2^Q3F1+$mN7O*HtA<6B|1<58ea-9)z`@sU@<9_U63H znAD*Gr{K0LdLm#V05*R^R{?Yq*m)W~nz@^}AGIdZ!8?37hpHNf$1;H?kGhF32I?To zXjwzd&)NJ0du*daxTJ!38$*w7d1dn;qzY+MsC;*K*EgdP!~v{jWH!m~CD3$3k0i2u zWUD&qqhUZcFqwrUXjd(u_KiREH!!<-=vD3BGEKF72Cl>oK|HkXBzyGfyYb0_0*W5(aw%T9#jEbAoBqA{|cGfTatJLuL z#Yl!005~AmjXcaY$+PN*AY{+1l835|ZL#R~R#S;bX1*Z>)Y(a_*!Gck7}BCq4%t0c zBWwm1QkWtb9Gp?Oo2o?mDH08?`DKmeBgUq^7rZ7XdV2*&NI?W!v2KL>54 z6cLXOWhOPji3k+jWE2U`uiAf&3)DG$$Dev%6G?|0|Jm`i;&$FK8!PFIKr9Fbw?T9# zL2s(5;V3s5B`9pthQ%(G)U4d@FohR4I(ic1P^fUj!NpM6xj48t8BIH1zE0xn>t~xO zT{_#q#!(lQOfnq~Hc%o5`anbJ84*3$%8BzO%fPzVD&3&d5fL_SPtGplw=Elo147X# zcNWv-IO8sP!2nX_^!Dc0-n5aigU6Z(0CT3r#X>ujpdtz?ZVM=qn=ta*`UVzq2GL9u z7!};ig-dSrTIPi4j4vrDl+DJ5Nnw8m9?W6>d$?#SvGF%GiCu=&upI}c&>k9BCk#>v ziBJ^NS>Irn9S()Ex8+TM?FlQCdv+2OImD6{_#^SxSTYuLe^wfI_6b$wqPtZSy(rCm_g23*_cX9M-szXPsh+u2eyi~6*MI4<~+jscW7+=rXVpLeo}l7 z#a-e}9%WBID&=+gV zZ=w%<@QqbxZ=%YEWb`p=h%o}JO?QKG*?uYQwuEF=7{bA|H{j8oaw3g=DTB#V;)>iK| z$5iJsmC^=|gql03m;!9j{eL}X(gg~{Sjsy{T1urlHySdGTI1ZKL5_a>`g$K}cpGc0 z`g)s9DC&}A=`?fj-hPB3BPkvOJfB|+Nq4|)@;+P#C+yRQa7b2G_E0o6Kd{S(;&RB6 z7^^1M;Q94j*njiTBL40afXNhR_(g&0i53!Af$i)+U2R&5jF+=l{1OoGF3}o zLjQz?dY&JaM>K`*sC@Sn9yw9-)<;4G@9*-iRDRD0DcQE9N3t&0WW1borIcekR##ag(+Tsb)mByajZK4KueL+c+MwSO?kjIk=BNP|D<-q<|6 zft4HxL8w*Apd@nl4S-T)$^rSp);aZg0vDiG25{hbXC}tSXW;ouY;r1vf&-v(F>~Tj z16^X-y}&wd>!@OU%=l{GJqAFb2+iaY20NTXg_h9EL7MFSB$Y;)gmhUg3pQ{!oa~(g zAC9$-q|yayuv&$Ac*&q>k)s;T5^O+$&219-1`}3x-@eqvE3MKV{F0|R$5vb&Q(j%a zsHeL&O2ZaTK2rQpg3w}s(+0!A;XU(VT(Uzu6LXdDj!!qX^cek-eqY8G9w&AgX?3wH z^c*YBu|4*IlNPkd-pRX_rI>!CvVJJ+`7PzRENMHzSUX8cb zMo+>ok2I6V+G-d|RubNMsVu(jo*!X-*2wYe8b)`ENCD;YE*+}_Q(0Jlb&V88rxZI} zJ%AEX(qrJ7iT^2kADfVOS7vS2ib7S}Ufdjdl@NNdd~hIOY{Oey zwG{I?*Vn_{fY?!0S8hP%p>+aPjEJu^adyYq!`rBac$RJD9yQM~j>NtB+1AZZ@~2M2 z+y@gcLUx!u;{m3};RsoR9fF~YOv3qOL^g7q z4(P2BFgHEDpqy>&^3VEA_;Kw@DtNXunY(x;oD|(~6_S&m?QpeO9AT78dW-9e%X^E< zYnzM7BSFC{i$ub?5y34~D{b6#!U9gSekxQuq!G)oWepZTz7>& zyHt192?7YKB(izK=(e7VuLEA!ylJI%ozE zgaGN0pJPC4r;%^#;`B&QTeBbb!MWLI;Ab$pnL6`)n{T`2-u4NGeJ%74E?1EBA5pRE zFdYF(g?XFOY%6pg(Y4FdiF>b5ae8*q6hS!gy|BE?OOg)QGv2D+(rliAbV($1(huUS z`C90YI@;gWWGyh!8(@_e@Bk4+S68#M9$M-Go3GSnH|H#a8=*TBh^B@CKXwYt{E$w* zcPYxTkEf#+3npPh=N&|8WkIv*<0XGT1pSs7j<7D2)(uV9*EYNsOKB?%QVU@Y4RD&p zm(R32h~hPnP}w#(?oP6@sPvw zNgaPl1`aAb@cTp$GE8(AemAlo6l}4%4Az#yLP`hJpklg^0CmXaTboB_Jq3J8BC(e_ z53J}L7oo#xoX6gTjaBAZJ-Qp*!-RIPSjc#7eHQ?QrQ!C=al++e4*Es$G&lVZwdodt z3}hlJsom@8!`W{0dK;NioZai@JEM#PWC=5TUi&h$VxVs@7hB{)lj%g|Ny6j;#+jU1 z)eEqPy+d4xr7|cAJ&`J(SfebtDT_ttk*&%#O3cMdHkU#uI(*Wq2*&$e4|C&dTy;ZC zKeC9)BypwD5v_YB4;vKlf@DJVag!~$;>;DH3V~$9$^#@aS-*;O~f=hHo>I!8$Y8 zjH|;`UklBQk=64tbfOV?+<^^zB)i1H0g&78#V^F07_gOwnqhuM6ur@mbFbp}$R1Y7 zwjY=ufsIm`KBUr*TUcOsV;420nxbKVp4Sg{h2Cl|3WPqvbV5&KC|sxt8Pi@bXVRkI zVkiopo*d8A)?|8BrSmEi#e+2%t^za3%cL526tD6CI)<1E78Xr7gt4a z*pkZ`&@aq@3l(RAWP_zz)oly@d%4kBv#w^H0ibZ!I`;yfl1Ah1jP=woAr zA+VPs=HST0##32=4JclM%HuXM!bi>RO;&(~({y1SRM=fyQ>oaFFJC_{R)q)!JDU@8AR+U-Wc~Gn6(D5_pV9Sp9xQUhtHR3HR()yECCVMD75h{VJ*c2@Ks!~Tknv(P|4~oT{aK|`}c-TZRMctODU6uPWXr}sTW1xBqQZiJ1^gO-c z^Mh9HXLN2kYZC56WhGOp9ECKMuy$~2tC>H7)$VFGfOt3l2~pp&e3eBlwGr`@<9jMw z664=0jCt^D2;}XikC{mDVuoU8Yy>GwBK!=fR*vTnJ@dRFJhW`F-}8z*0r1h3ND+r8CX(ai00GQeOn!@?kV*$FeipnuHTEx` z9VyB#@63;%j9uF^>}^f#Ni0HCsdxHG&G;ISgV|Y%N{hF3pLCzlTAi(~B=*0xTNbH@ zp*QqZjk2|0=2ip10&?4E$~cu`y!tEioKiLvd6@lmQ3iKJ(dAfYjx#)R-?*pYe+IHJ zn5s0fF>ss_5G-^_?S}a`+k-1R$S>6j)18o|&ePc?h)~F^Ksq?O;nE5gbQCoannz3O z7>jDZS3*tM)wK@X-NTv`+=-g2evxmFh&0cPU_vhv;1BvjsWfilTp>vE)dB;pk^P26 zFl>{_GEZ@zuov`j3N?p`lm*0%Pecd6DH0>Es6g;CE?881e9!Ok< zF5o;t8#IR3pAYynBTd7004dfQ9E}RKgg-JQUa^T{hpr~aa@X_&cFkTr7C}tIcoy@- zi9i@3>Z6S3@RykCY9fv<$W!s8HNH8|=J?#bb3riPvXFtP*-+yY?BGhFA#?_>naQJi zzX!3A@{awzxF3=X)%PFdzF*gyBNSZqp$yKbhM z|II_VV6!Fn;D#Ck-5tDl`zSskG>X2H7k47aHLMiDXBHKTYQ9(4Rv=T^AV!TJDCME1 z1#6TVEby@~_6n)^9*e~6w|s-Fp!V55=28vpV+J_}Ua=5uiwN{zlyQU{k%6`AU!B5^ z1KUs%(1JvpgZZLX<`ltjJF-d@c-CJQc<`FSCCzChzrZY&E+WwD-1!>)AOh}4M2lt6 z+Jwa#h=;nR;E3ydvgPKN-LI_ds%`FTFYhic2R^p(6xyB3#g{AtOKHu*_CmW6C+5#d zPBrQwFE@1;c88iE8c@TodAL6lbTuWRpvsHSd`tm~O`OIDiiuo(5mX!ENs{OcH9$j> z>EchlEkxJToe$ND;F_o{J_4QZB%()U(oPIgjPnzjc$UY>hY`tUu(cq5bB1;y!!Iw# zj{#zT#*aW1+_Ee$p|Dsd;KOP7pAy;qIe3A>#YI87Q$xsd#X#(nNNnz_k;ESjj3O30o45o@QLG|dO zVjRwwPS2r4FyPcQ`L5R8SUuEK+S<3Ju5M~-xGlz7NUo080cF$uB~4~*RRa{rg(P=7 zpwCMKqrU<*Y#pn>SW{`M5?Al7b$P&nsfPPm7*OdDA%n|dQ4}=~NGAQ61#;uNjcE>D z#Boav!@-*wN6u!=&c(%Cs3c$Bg=S7C5QJmv42&chi+F_9@1`#)a~`mV%2-B6z$V#o z*v;k`?S~W23nnSN{%(>o#)TIeSTly?J7d1x-L+>cNe!5hMxw;t8Eh`Jo5P~XhE-Cx zL?mJ_VZpo^BL9TZM* zQ@6y160jIT;2EHa4fv*SpNyBW`c+z`W)H*YJ>g-+PE@c=UDFKbTX-O)hDbIx)w~RI zI@SQAdgRSACpc~@rgUKIqAaY!r9ezasfSrPY2I*wX0;|clKCtS7_D9wxr&!QTBRzq zkl5Rq69O)kb`byaG#9}lOxf+1rL?G_S>2CT-aeeAg$-?36i_`{`pmsjbb)uP#TEA* zRn1L93-emW#s>YluS}WYU@!{N{AYlyq-B8h%w8^2K!Ei3FEPz!a&lbDR?-pjAv@(y z5tCC4MDb-Vm-11<7zMK-{uk$vEWS@ApoN}(axk!tGrG=Xv%NIFaQpt)l z%z&B%vNOuQtk@vqNagqHdPCKTPVRbmha2>5Y!|ik@L?YlJUc>xT8zga^9k8E~F3U6+?z=S$o&XCaUF8gnfb z|AcH0iQbz5Vm141bn!A9D7zxLhzn+N?+FkcOdInNs}5iXL*e)rF2+PtxRZZM6~IPAFFdBL{UL zA(8UFCO&$hvoBQUDV8 zV8JA_Hq-*k$0|6t3d{Ji`HW8T@O*uwP7al9w8NM{!RQT@CVG%|bLuPuj1*$ytOLrJ zR8gARCI%)fSkMd7oh8d!fPul8?3)Sx{G)n4q2~g zOHr}PAG)j>=@{b-BFGDobj~y}eTk*IeLVY6%}Civ7JXD@1R%DRlrrzq%GQK(gX>l* zf@i=Ypokls%TxW-`Bw-?o**z!%;-?N<2J8_P77y9N1jMB!91Q-#E}~hsokGslm8ix zc1o=8wc-$FC%~5BYLWBU96QuL(kR$QOW*y z2;AgpyCAFSxu(A2>f+WSnEIsSRydZl!xwW+>i}ukjM!2(q5*}dWz59seVk?VjLGAJ zv|#cDA!lJzeOqI=4;cz>uHB77FvNjf@GQ!8Vw(hdG%RUHMiKiI;fESsx&9M2$ivWW z#OU@6x?0X#_=!rt5qfr!3)tF_Mp(!e{kNzmnJ6DSJ!@RfIXXeElNx zo@XPP4FxWMROyl5=gp5b`H13ojG35Cz{aNGg*6P3s!DBa8*n%E#@_Vul%&9Tnk1*Y zs9@i))^39@YKZ=B+VPNv7gD?%3Xm(TT2?h0c5$k@v`Ixl!Yt5a_Ii#p;~uqOvf6VYAyiM zLb!c}U_Q*s^M#DuM7g7Ula#Umq~M(r$V9Lm0?{ycE8HdGW}V$YajNG0j}teRvhJc% z<6yihUuACpYPtq{s_mT=V~ji01O@VFUn#E7BXT0p$aQ#ar6Pr*e{~|hIJKQu{Z*E; zDHOIGMUK;c?XQMCdb1M*^?PV6Wn|SAt%#0#-^qQlJ}G2v|?4vHAl#U0UhTb zcTeJ=!`4q%IvghZ7(4lDsNuPU!PIWfehwx12^%KAwKL0W3cRxz=DHTboX>6^tQ? z-tcV&vk}jdCkxqi!+@iiU9E2yIk->m_3FZ8|sn8i)*iJE3w#CI#nuOx9I0 zfBIWM5;e`gY}m;7hdsc%=oDHd3~E@}@tdXOxEDiedUzGRCq_-4FO}_}7}<1@W&;_M z*c#nmI67gI?2!Bm-%ehfz%-}dLunnJvy5G;SXdLU$u?_Ln(hzr$VJF1qMFN4Q$&UQ z-zD5k#PvFtWRYZrH|~3dyF4GzB3j|`Iec5)Je$8*J(-p-*)R>l**)WrwA-y-6fv!o+@QB{$qOzqoT#;R4`7NNof?E(KM_G4rr? zZmLl;_V>Jis2h7%U*1LmOh#8x*{YWN?5U!_Ln|(EfL?5Z5!_IWg18K_LXhp;V4O^+ z_v+@=SZN}P6iT%F#VUt*v0NOdyuPX^NZMF@P?Q!d0EBt~bW0WnR>c?%tZopIpcs06 zGIHXYw%16$ktvm{Q)2%W9u9v&gYjjeku&mpt=&Ce2+1vgSQW2}n4^X-eVTG6mRGD6B zB3G95Vl~UxRJv|(MG?Jk04;vu-_@=GxlO0iS$+D&^SFcd1^xlG^ZVl9K_0VjU+c)H zq2J+u>^@*3teJqI1Mf6s`h!h;G9WEbAzM^>Ja)~`$XT7Xi}BlK@TaQICMKJ=7B$}D zOrZjxJ5A5v5auJDbqH+Ivs-K4m=Na#MoNOuLNi@S=!QPaFHRra&=*cogZ(<4!$JsN*mIOFA5P}^bdIa zoyOXTqAKK-L1FR8wZ0Xj(*eP{rH7*vTLZBk;?H2*BgPs!<(!LN(;aUVv-T7o2{sO0S?n7rfWOOBj+wUGa~ zFdhoP8dbpyPZW0U`{sn4V#z+MC$8T9eLD={Jt+GN)i>Kn+(WUrk8g@O` zS-SCYGU<{mI=SErzK+dFW#aa{sAY2ck7v#pMS5pSa~Z;4v8XQeL$fHk8fT_9aA(`8 zlsYE>DUD)wlGOUnqIS5}hJ1DP+>=<(tK$e`kS+#L8%L6~qx?dM*+K;krSSRoun`=P zr#_C=h$E1Tsv(>61$qieJJ9faC{Bb!w9^!|6v&MvRmJFF!zQH+!=N)wwevIQM1J5m zqb1EkV{0>uFV@#m{6%>t%5PEWa7Z$7RB~*^RKX7v-xOdRLSnMv92^b66%h_l=_t?8 z-eP-2w5f_HRTD;xpfk@dp+dl2^oT&hL}5s#TeNM-5+TzB1MsbRXSaY_Ogwb!oi7H> zK&qoaAVQ}j*s-Mb=4(%}X*R5QN}_U78R;F{UZ9u>2Cdq!=S~ z6{8UCq0u@89s{b4ky+|*QCOS*Apg`8$w46d9*V>2GvzBE*FVZMQT_G8~GLoDYgK|{llNd?rjIIrUY zOFLVx$i}w>bX{m>A0$gtE`29cX7bp9585bh+N#YKE>GO=f0}3jT zHfjEVjlNTdMpZIQ_?CzYzbDH~a_hBtn>64w&;9{1Yc|QuNgL>8hWDKv>PlMn6w1R0 z`Ri2vhPq;eOpSTFFz)XWI$Yqim4sjEF0e>iS`XN*(F&kM)nKR2qdny#F!4U(;l{)C z@kDA7)ayXXVI3F%U0v+m0qACDNtALm#i)5#i{A_ptZh!w>Y2dMrbu-SxiGE|?YECf zCeEjE-FeHCW_VQ-2_xvVAVcTslee)B_37j zozB{L5hvzbYq7NZ_V+D1^lYe*?^IQ6+4B<0rLqJ}GU+)#Hc-*v^Po?0GWVhG?xvAn zeul)ek8(UOL{dabLVp%1T~&vhI?MwQn172MOAqkLcvBSs16IOI^!Su` ziycl;qqFe}X^-J6#+-R%Quu%Uk^OBeLm6bqT@55t!Y2gHCL_g865rz-rVS8sADyV$ zX^Uw^h1aU@;x;RYlg2-98lW|;8YOXK{y(~x3Y_54&6z9+a&>f18&fbK+sRsYOs&IU!pkngjTy_}tJN{I`pGi*k zb!Z#JI?R0It$ZVQEuhoW@VHj?^B#_f4@hzugaa}I6}kQc5snH!jmPjTJW%ue`IChL zY49>X9kIZ1_%jvX2Q~+9b4Y2a!fUCyw2eZ-adE?5Irhh3_?c zVX>hIt$*ee{-hSaf5&Aw-O^NK9?j`Jrz$SMUy~W3+pAYzyt6c;BGK7(XMcW<@+Qdl zYgf(d(?}vDH|(mMQ`B!97CCrEBa}7$hn%{^UUlaZoAkee6(SiJZz35fYRo0mqx*MD zKGuOkoD?Z_zSFQs^+KfGH#2s5ei0W42W#3$ORi5D6;OW|!&7Cb{yxsVp`s-&aeT_u zg4v6RNX>KzXHdM*)|M}^i>6bFT!9;w9w*AF)V+sbeHKC|U{N70ND=a$Ds(Cxc2eql z)IEtxAI6GY@3<&cxit{2;Uw?2L6KIU>c*tq${jaF}&^fdU_Mu;+e zujyM1I2zPJm^6_mi7C2w>?^695vAJBAwOio$|)^Fid<|Wf;Yd_%o_)W&Gh)FzO5!@ zO%c9F=6YqX%Fw;q`CUN>dv9`^%CcesDjr81UDDI%YruxeC$x0DOm?#`5p2oCNc6}z zkx5XRJlEG$JWx^^qybp3ccFI5hnM^N;aJ;#Z3-j_^cta^d58;Y^b;V>)FEKeRcMum zv7O<(4lj6ayNZ&8YG3cX=&>5b)@Cc7qb#$Gz_)!%gN@4tr>BWzAV0BR%aXa#%AR=u zo$exQZIc*>)s7AS4ta2oy=w368AU4g;l+gxPAe6bWI!p8MTi#e*lECK3D(FPNZfe)O!r`lY1>Vti=TfTLtmV$tue@2Bz|z4(^5SQACKpUZ^-=3-nJ~jY6+Hc^%Lo51Tf@D$ zC0y{Au0u(2xfYyAGtM42_&O_e$<&BS4i?ys#(OdN*YD5T9?7HIkB{Cc5ZKONo!j2E zGl6Rwg5$>YbO3K+=L|?Y6GSzir8_)3y1T+7qqaPj_9u()g|VP(g4Ff>l`Q#oT;X~nj9k!aT7`I zB98Z#9(~<3Y`1|2T8<>O zccgEjmDoVZp`H4hd2O}h46(R9OWUI~FWGjGKU9xMT`L|5#rP?7h-~KfV`_N+3bevb z68(`{T$Uh2m>d@W74n6>S~Qv%`HZ0`w7`&^jjdVk9LUcpbhW^hqM&=G-Str0#>R5g zO~moManRE8`=&z@E_`<>WKs43;PtaYzg?VCXZNVysRqFBl<qoAEMxc=o*i!2&lFMXrgU z4!lJ_{I-ZuMQ#6qs^sxq9b=&|@H$vn3_c?M{8zpx7)eUaTcV;T0w%;2YJ}Q}GXd6b zxJ?SER{WF>;p87OiJ`Ve30UF0;Sc&nlZY#9rHG6tQ_;VbXZ!Ok6(J4!G*e+_hlFTk zD%0p*ET1es#1TL5Bx)oPowcEDh)v`>!q0jIez0+{!`mH#eeCzn_0I;*L>8nPcy@o^ z(d_>n{~7Df9pbj(N9}uo+w~fX8?0g6C2tPxcv10cN!q~J(pt~7jsSOLZahuhKzFvO zts?L!G-iWn#J?_>t+~e@detN_g$nV^ zI2Y2?H#8yH$Qczg+2f{Np6MO-r)a717|Oh=cHT ztgzx_O$PNtVp7h}U--?ktvO!EUiw|66R>Z3wKoqh?`LP6-5NaqB*Ty%of z8bwmmk5YD}Ypv#oFGYr1ZF{wgAzJ!X5|Uf6@aEdt<+Z%U)>hTIb$CHa!ME zB`)1plB6>t39r;xC}78&^$$PP^5^`eded!|~dMR@m?fwCtQ; zX(Mo|g1xC2)(HH_9il@(ppo@Ap)kZ=bFYf26I|pRLm5H{Y5&3f=eddGu89M$545yADL@m z{*;R2@iA5~o-}!(N(xhCEqO@WGJJk~{f+ppksck(aU6 zh1yGz#Bki)OX1*%MEA2~m&Hbbqe&DYw&7FTM*mFD=ja4APhU#0`m0uT=vUrX5vsgi z8cgZ&^OtEd=_#jfPeWLW1Di3&$fCH387@LJ==sV*O$*O){xd`U&kV($b^tKR6sMUf zp{gI9yGVv&yPe(kZXXqNFf2J$xHSIsO);J(4BmW}Co`tlj{wRtViy>PXLb zs_ZW=#L`!Qz;~_}#=${9;X?l6h|D`qhZ;UPV!+K zV)UyRb}Gh;n6gujk`pn-RznEfq}~+x*AlGw1j!$TKOe3sB`Ed+2^bAED@Firu_}(o zus-ymAgAVu`IKs|3`3HVS`eYM0it~omV-7`k=Tn*Z40Yh#Ze1uL`56ty;MQI%7>!r zn@}G5YCFUND-Xc7>Qp?23~0Oq!{M<8`Nrhp9>%e?{+-UG6NOkGnDRvwLK1bg7%4R; zVCpF)j4%Z5S<*=w>IUXX>~hf;FHA~7*^YI}`{#?Cvv#l}$xEj1aDU^)XzLR3%r zhbcq0r1DySALuX}ouJge;_GD*5-7JtpxFduEYBA7fetBFF34P6jZadrggNoH0T>mY z`*u*ROHeYHh>Uc`I7(SGmAqQ8M5U_eSmOl0YIPfi(^5n7eXP~QIS!5jVzf*zX4Xe8 z*b!B1suU!x>>|gFo}VqoI1>p!NY&}J)ZAFzQMAfJ&4IgNr3>EI(lexElFs1Ddh6!W ze+u|(N(?Y%C@`BN=Lqc@afP^D)K@Q!J7=y0rgaR@1&#-Xu?ONF{u?*y#!K93{rN^9 zDMZ`^FrTpb+rbM-joRF9`UwIG<4{GabSPW~ASl>g92|Q+Io78CTww=X(QM{on*GXY zxjq*ZO(4U;Oqf&Th}5K}%XDTJS{TrjOE)+TMBg0=pM~W1O&0fu*+;6Z5@M#3)&o6E z+@*AP+(;#C>J;43k|IZw6V*_ybu7f909;As*x~?>FeF}5?-E9h*ZSKMm&HSX#;w1p zjjCy~C2JYNV&%dUEB_9%tL|;2&W78j2mXf2q@>n#)*6&GcU4fS7##+k1r$QKHWK`> zn_F3QKgj{641@N&Cey8KrFv$=Du%G=kuBsz{BB2r4_ewKtzP;BKuqwh*i5%YpxpD; zKLaRKDMAQoKmZffOkH%YsJLkV*j^J3cV>Bw1vZ@f zH7a2a-N$njolI?@PL_Ty7>7E@io({t6vm5&ED+KJ!D)kBf4y(LXGJpIK<%tje*%pn zT27RO1yW6AV*ruQk|w;^`;L@cNcWKgXCk-A@$9CkLJQV8GBd2?_}Ja-lkzgjIcAj> z)@1h9i%%~#*HnF7)S$J#h^hP<85<}LsBLt z5Lg0Nh)bB__`*F1jIu6nlZ?>e`^S0FXvo50RYi~X_w3Np1*}7wYEA6NC>Yhfw3sTd zkzYy<3YU&SZ>bPZuNrBWP!dOdS^xT_h6Ij&_87~545IOEd`ixtn#!HW#<7pk|GNl! zr-7vtZ)*K1C%3zAvGDgzixl(QEOKS6xs{apr1 zsC9HNiG9&+MR*1WSa6fm$}`LPl_)?JsfsW#&BD|Jt4BH3Y7*h^FzayY4(9jVY>F@T zUY6>5T~L-!W)cyaGpu*Owadj->WMEnFpIv?q?~n?1G4}ME0gH@Yd3jp?4r%^ICD7* z@45#`fAF$!mO#}C7MG4!F(*RA>GW&WKLlL$6|{L5uZGgHvZAd%3PnBIG;F4nPsHYnp!wNvkaNVmG~_OsI zJUOi6Al);fO9gT^oQdao+J25pQpw|}zK*|L4g zY`NiVSaDQtetL=^Vt`yv4b6}GEG&6_%Q{(1dj8cuoV4w}E$sd5GS*q{emOMfib4k2 zsl^JV7N27Dx!wqhoXeVXYd_ipg~xU@oTSV;biUKBU`dZOyMI$=Hk=b zO~EIp=Zt$JYuxQW{Ox%spcc#rFIAoMdIEUbk-56v2J-{jKkz$Oi+(v)aw|^9*bhtR z7jf(sLoV=1CY`%8in~O0S4YBk4Z{r^_3F|-+lWMp9jdlEH`|agZa@ALKLHVILdeQE zxar>E+Nn(dqA5aoOUg6vWYRO;_4s-eelEku@4{dsY8>pba}XUxvRLic^DQq(wJMRm zeTTMj`q0xi}LyT=HcM+;Mf?+;7J}0S$b6g?OhuQyy$(S z?|Yi2o!pKcTHD=+3yCuRy`@3vYcljXvn*~dqtS+l15SlY)ci$FURwP{ZV*3ty7R@R z`2#O}l6=KO$9CS+=9Hnroz1z|(*Rs0l4A3NqT;ii`%^&IqLiX-hmYI2h)C;ARX^CU zvRq-Pjx0TUuxuhQo>hK^seivfUFdW-yr)Aq_AuyfA+h%UTF*PmBXGN){`&Bu?#YYg z<3g&B{m>mREBo}L&s?*Gjo_d05iCEhEmk~3ec$u=!Hz$fLRM835>8cqHlf?Rx}#X% zbYnxt=DHi7sWcVahJU*moR3;$)n?y3HlA|_iQ=5!$SV*&I(Ap-X4Sb&2%g0d;W86@ z>$jSnJ4#t|e6JuF$$WI(y>bxdC*6OXYt?S0v6U7sS*|U1n7`Vg9!EXw?0g>c!Mfic zo3Zi6N|T*(c)DGv_i{BfPvNFt{lyQ?@T~X{H!YODkT)sk&|$Z{wm3^N<@0RfG;@zN zaN~ydK#Sr~HVl3qgK4Y$xaeov{oe2SG}tB+G7VW@$h)CIsWdS6vpEOVhUgnEHqy>J z>^_{|=D_=%eLB-TIuL*IVyzHx>xQjR&k6B?SA{>X=S_Yv+&_HKG<1Yw2l?8?K7H_i zZ*(5~bnQp`{1|@oJ2TVmwq%E8S0q*NVy^>dFKFl4Zap$i-)kx}W8!M}Ic@i$@H!IY z)OhSyad(j>6|m1UCQKDgRO^-!C2vJ_u0bFua{ z$R_r_W?a!T*TH>ZwPbC10G#$m{Z{2dBo>a9Z#t><@!bQCOCq!^3-L9{G%dQhZ}U2{ ze<*OY_eOuj0p8WJeLr&DbIL8=QFU}y>!P7|>4sOdZ+tbg)#Pc*=AaOn^Oyoe^de1U z0nD#^k$cpK^~~zx^IS1Fdg7hDU=4m=dVKVQaU~Mz?{L2>r+2MAu8t#baXh+tYttK5~x0S zh}OSEu;grQbsGc!>3rC1aihKTDL5M6T{`pg>I6651wwM@ue*~fymD{CAwd>4z}bIM zh7ZT4qj=I;)`~Q!@@X|vyhfn0M)0lWlX!<=XLIge!(7G6*+Pw!YjWm()2-$687NY; zllStgMLF6SavcZA*{gWEg%VhV(Oztj>P z_h37iS~0!ZZn3Bcl-SYn^kyQg+cUSv@4f?C$lfh4o`sypY43*zFb(ORpZmJhi9)l< zI!W;W+7rT~Pwg{I1Iu0H#vk<^1&{m4_}YV!rywU9VZpOw^asP;hZcK~Q?{+{j!2Wk zy3IgUq}Pt0>r)>%d8NJOpz+VJ5PC+r^4ZDdy`PIg)&L322A=`^gmHZe)bd)zag{S^ z?32h65)|xHXQ216+mpx(A-Z(EXH%*scj!X@ut>uOcXg}(x^WKtznI8B09mZ415a>dXCRsX`E#{{+gs){`Z~ye38hwGiCun6mcBdVb zbz5l2E?hW{r*-goz!(dq+T%YQqylX*b~zwcXj4CMVooC>8kak8%0AwUm2H$5*u`Y< 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 z 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

    1. Z=OYOjRzxC&bhu>Eh!PyK< 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 z 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

      6a0ehilgnGlX)HPGP&v%^@zPoSq! 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�C_dEUWs{iW8Fic%GZS%Wgi06cXNz^58kOD45iB87n#xNla7ZXJQ%34~piFkkH__BR zOO0Jn3FhBqZ9Q_%@J+XX>^I{0Zl3l+9NqeoW6B|1 zG~8;nK`ZbulFe{TWrmv>oD7OHlYJKG>t_%$!pRemtD{BFD9()s%$j%&kPgCBeKYFz zRKg+FnCWbk$fQE~GKm2yPZIg^1Mn}Yr%Y;)fv9NGpIO(vQPuf|ImRyP>e zuZ=riO=1ffy^cZZE|NTAYD+O2&Wyni|LK!kl%4`+`6l^%k*GB7MSd>MB0Ej+vR|4{ zm8@2rOW9#j{VfaMqxN^5!!}m)vNt$u^>< zJYjA<&1M@SH@H}wzIDj~F(0b|v={r|`jML!D@Py*g>)1bEKSQG+ib{kpzSJr)0*F8 z1@VQ3y0Lm*LB9Le_t#-778?EP|OmtKn7o7){H9; zYwehR15jZ=0rtRcuWebYfT-h8SOU; z$atBh>so2_1r%d5)BHZ`Jq+LgZN=GB&d?s5E!IN%bc^h<|OeF zzN@(SmDJ)ID;%{RSl~^k3M|G42Mx#ePeAtbAGbfpYCgJ1eqhYn z9CM^2At4Ky`EV%pz*RgQVq>WBQpOsxRSMkw26h9Hm!QEV3W@6}WK4Q+t5dPD}zmM|Ay|4ko`ZK zC-C=&djP`r|J|MKon71hzxRjz|I_?@kp16A+iT)~zjQwHr<3_Ly$D@k>civ0gnTFG zfk6I9UIIZaO3o|W-kle0G&0Y;& zacc{9>6G5Q6OYpHm9fzTR7BPlNℜ?W%{$NZRk7b&tERei*b)j-u`N``dd@w2Zwn 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%0D|V}uM5C4E+uX6++)1>#vs{~& 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 z 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 z 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%0AUfLgrDD@lwQ@kWH*O@ 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 Ktz^KBcIK)r4;9MkfT_TdrMVXC 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

      jH;@thK8%Ku`a9#$Iv1! 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 ?DE(ocBew~8n z9|p`>NA_iR3`$poG#-Lv`etkEp`Ohv_>PK5H^O*Dcd>JbZmC2ea0Cz@DCl)X-<}d0;pYSpn@h~ zc;EI!`?r4F^SK|Do;ri0zicTzUzd3I{NkN>cW2n1k6*7b2_9wavAi%pwzfzPE45?m zK`G|xJ|*WkY3Z&&<%9zel%+RL6JPf(yLk1ugM@)RC;3M)bjfHus~2{{8hX4ACAC#y zEcoB6q>Q2rwo)(JGG|oR)Tj~+!bYsoU-ch~Dql zW#f5GL_k5f;_|sVSsGq%3oQXwJK!RrU@&0iSM&rJOje9Iv4H~l4Gl_D$iyLM+sr_& z=`_o+_PDhVoB7d?e1J2W083xRso$aN?6a(QF(Im=9>I23k;OIR}PM0t!E}%+?a2mn4^sA)z~Lp*x3ONc#Zq{jg88_ zoN6(fmDm|F6tWb`vxZm@`BMn*(Cr{dqmxSf=sG?{`x%Si-07Nvu-I$-`CpH={kcD$ z^S;Q+?8S-9?=2ow78l}iujsTZk^m8nX4#sF){KHk5W)Qhj0bkV!#o;g!;pp0L<8kJ zsk?QZlofwU+it-5sjXC=A-#8`QN3t+SgrF2ck%<8(eXwjwRF%{HR-emP-y~&>MiF> zJ$d-Q?_Ulr%jIg(DGO_2)YAwc^%(ScpNCyw;Ln_a24_t6qP`y5=X~Q+llnHw7(rtx zYZ`2Y?3g0(4ughY{lg6wFlNFm;%hoZis%3e3eY&bHb&KM-K}w!$vD6~ru+GmrR&|N ztqjuEOZI%D>UL33xfN%Wix>Q~gyTSJomNfX-ey*HW7L~mm>CP=gn_ka(=J|wM6OJE z3VE??iy}#~NO6FQ0}*93k!2dRu8W8xAkQz=Zy|7fW$CiToNxyCH#mcy%$J6y|CZX` z_NO)$r8RmgfU~=vEy#95LgllYYG#BvQko_1dSs8;BJhF^{k6Elk61Bd|JzULWO@M< zeP}9_V5D8<^L|k9a)%~{9ZpjcQAJV-C^ZU<=u?M&)lDRVGy2I8P$GGL*Gj3; zh=j<^6+(5MZ5x{G*s$!|+)k8ediA(u%+Mjh%6jZ3e=?4MDto1*7h~p(#PMPr*Q!rD zYyc8M_@x^UK)};C3|{0{C@iAnIvySnO6|IHyzY=6qZx5$SrS7l!Ph@qSLGI)u33kjE>p%#k0Q^h|()4`hxWyh1Dg z+|Tv*GjM1tD=X{n-aNi9nYZlL)7RAGG8_mA3k$2PtVEVxSD`+9^cwZ7EX{u9FY-dr z7dZLd$iP|Gvy~)4=H=z3RH33-ir(+2Q@5NY3jvY_4^I?83^yjJ4FJS}Y?YeqQS5|_ zTl_h7IZSC8H<>$sES*2SrIX!m|4X8z{yr@QpCtc5*co|tc{ycbg5HZ)xYE38qpGS3 zWGgy4I&^e&R@pM8irwAaxVX5jt*uXD{-+aCC(mQAA5&XjZ;C&@We)8$oPU$i>MND( z{%pxw{0*E)tT06uC0{d8Au59Ss?&}%FWV$~s`X0YuXmPH0hK9aHr6;Wpx!uUlU}Gc z35VnL%6CLw84f}Xm@p6TJFCNSZ~#<*hQn}ShZLl!A{!f9 zN=izgfB|rT4@iSpoten#ZQgMT%J6FL?qWgwf;AVGc{)yO<*8^aZlo56m~8O%^_{g) z@sV}FdsbOB&-DhudnC{IdmoC{o~f#=bn4s;4i5I~^=ECAjM5D%cIDfIi6`+!a414} z)%I_oy~_y=J#xX5W3kRv!Ny%Wf25tPe0i;spPGTNiynA>pl;G4Bc8clEi)s4kKG3V zITr6YUjr>E@)ZDJ3{iQ~Xjs48bm=fZ5x$et(X1>x&T@VatET%uK zjr=$xSk5CP_%I?B0z^}PD{};=!#Jlpw4qOsC~j<=H(>POC8+P%wqp1BIt%rRt}Mip z1Q*EWe=EF=U0kK}>h9_3*|KUzfP;fWM68Obz#P^vl>ay>bMnrZ{~Ud|BzeXii8iOy z?xAmoHS#!m#f8P?jEBoT4i5|S`H?qySXomu#io>g8#`{E?YnF7JB$t;e!II(RfmHS z3obS`mQ2#k&8@Nvkv59TjShpRbVU(67;4;qR23+#pL2}`JlDol!eRN};LIg`3lGnI ztMV9W-&Slyq~Gr1Rg?ls=O&|IO>Zb^smP`PPwP+Q^28oSqk#ObivjQ0p%+-eis`{`zO&wm@wZ`JWs`T6Phm=sabDjHr9 zvpHhKR5V*I25F4dhl6vFNCN=y3M$FQiXPAY;r#Jup=QJp!FQrqrqM>2Xz5gK`$F9G zsV1|M8Oo45Clw7Z@!|P-d2ta00EhM~mw*1YCSysHCAO)01C40xhG-BBq%vyhCuaaG z##l`XX}~RPEmd@0?acB0ix03>IE_fw|MEX=-p=z_a}ji%q5=0%{rF3Rq35~FWe!ZO zn=TiUs3|jROG^-di>qtJOkrxU%bKmW9{i@Ke_?S zOqu-1_9nr{^Z=Rd1d>Y>GucM-tp298_vz}abh84L%T6CiR3UKI4yDfLPF<+bGQB?^ zs%qQS>|Lu6_fWX!E55w12CnszV-+)l+65)Fe&na zbf1OaUS4cdVRnfl^gQa%W0zsvzx6t%x*o3=skGK>*m!uf0ZFOg$H?*hsS9`3R2UM@ zjrjIf%l`a_Hx!Wp^C~GQQHmIZb7ne|ZW21AIQLr*oIgoQ`sHuOOscyZ& z6mtz-uZEK--c_Hnf<&PB-g`o|8HB7iBDQK)R4BU?*`eS?4}%5xM0U4KfkMr`=fbQq@_KBa;Qtj2BaZ)7Tvv0plqyKjAP|6Oc=~?s07YYWG`Ss=% zQl-4q@$vBi`}c$;Z+CY$P?RQ&fx1V8R9?p*m>5Q=W!v#W8QMK$oI+4&Yh2LX8a9F@ zDp)60$dq599a{$#$dab_q8aGHA%O zKs|bM^Q+%rOgoM6)<%;EwBTCr(!xp(3t6kZQA_<#-pwzPCUr0o4X)&Zrlz`7VdeZ;^ zLK(?&`Kw+8Fv^*kIEM&sBn1jkfP5RGaW85lyA3*=j%zwXPIuGbP5Up2k3ef8a-7On;)6KerADFR#h#jCeloe6(IqVOgk=9 zfJ+FY^$07794b)|)L*cEj#j(Nvoio-4gdn!n>CG+KlRrTQawGawBa{meL~^RgBRO@^GCf~NOm=^Ft~=e`mdry5dR6t8((})$ zXpry%3j;alpa`~?2}6pRvt}cRM?^&I+`K9@Q~?Os+t;O|WpM<1xKiE((|l6k>uDc8 zxZy|jl_*tc(5AXq88Byf>;ErR?|fCk2g4IP0r7T?L92r5S|O{(M$VPR!uWqo~pVWHST zp=fqxV*?K+w48;4_la~1wBkhp z*ec`plOL^TD;p%p3Yn3Gih%@PSt;eCJ(Ys+%cJ0R)XDw0~4grB0 z*Vd^E^)eZH>}I8nA_h$8gI9NE0*TK$h1Aw%BGk8#?uMFl80^@lL(baXUj7W3I9v|7 zDfEuk*5&SFfsod4BuYJI`y?ZAzi?DY%;x z3JVX96*DGD&}W7MIJD~kQTSO8XfyUl<1x?Y$j}=j03efKJ-pNHa}Jp=$(Jbo!uOa->8#EDG+AbpXVs;QTRYVS9TROT-glt>YEbyZGgB51FFp{##2C?%)B3u)_>m$~RwL(5?Lel{Onvm~_S|iSix)zy ziPYuH%i7FrGtj#!7@hl^<&Hk=Z*qt9bMtn365YsdpPj5l;A^J8{y|3&Psr&Iu-^ua zN>Pp}um`4@nlkwmH*5qhc<@8N-i4W=hl-sfHAbpKr&fi!qye#J)rNq>4lm?aXQ%d| zuo#?OBXwJ!6Q`&geNAddZEbBiSZ%|(?W`KY8Ca{Zu&`QHbFoZ3(9BoBY8R{uWx@pw zXLh|$4At_T5!MzkQT&6~}QgH6vV zjwfe$Fc_lp95FCs0Dz%^Y7=HneSLjJMa8+_z|MgZIo7^VPaAEhp+~m3e@j%cq-NHr z$*hC`D6gu*#lca^bJ}t1JU=@d*uDAl=jXw5C@NA?AT45u;t=Ne5|@JBCJd+G?{vMn z5bm65qk5`sXy8{kqLL<5VIt>9kT`ktGF=x$p7kmzo@ne#I)A{NZm``n0Zt~UwHazl zZ*M^JbYyRr;s+TH&ghTKjzz3{GPi3s+HSR(V|@uYAF1ApHIq*D4;A_}SmI&|O=T`0 z>BQmFjQ&$?X*@KWA6v{Z<9)S)JT2PIv!#!|za_lMSID26&^$LY~yJaQfq+_8@?%seeDB zbtW$pQhM6a!Cf|gdjI0Z|4G|^ApZ1qPzRym(_P-owx~E@E)xe#n4v-%na{xv2m=7u zS0f#}x1aoWfCZkmu5OLk^8v}0H`Pk1SkY`(6F4BC%|#&{*Q#FQV1W*h4+QwuR`ri| zMKo1)b#vy7J1v`Eff6^%h{bZ5Fu#{#R&l`mc4RHC#%j zPaQa!Gh&<;G>IS8+Eaoj`fQi*I!?xD>uc7lrF-OIGrBG*z5qQo(DPe0e$@XCbOAki zj4e1+o2oTTNliqcwCR<n6hI9!LL%S+05P~6wF}f9?NZDM9=!Br*Tf+umD+HFIJmgtL=GSTqbZDf zzi8)Hm&=6V?YtgyQ^~w~Ax;qJ=S}+wiD=@{TK9^_I-sRHbs;}z1PHjhyE{8K4gi== zTk7f<+>Kpb*@Vg!LcWtx0svG|N}7hL(Zfdnel2X&QLm08N6tBC>md83wlh_mf7|*X z5rf^%|M1&K=rN@K=VW3jdOxGV+vaA!efBrRuV2tu$Xy4OYpT775W&>SiB8`$^MHzf zkm`;1_`UB zr+_hFqbY&rmPO42szKJx5)1OD-#J|cYv3M`lYxqTNP&Y9{cZ4+W-@8A72sk85l zyu5gkB3fEn4TqO#AldG896hb@@?;SrzaRY9@uD$fW!9LnCHU_kK_$bjn47NZrT1Fks~h0fg<{ z=m3BN;T1XTQZyou2rDZn$maGogQaa&bb9Jf2{IVz2_&IJlHWG$G|4g`03CYFK}J$4 z%p%LR9@kFi8Go{8B~bB=7LuH8Q#Eulglv9oGaq}N)QJ7P=RL^i2nPB9gz%z*g8u90 zG_)Z$EI95Qx&9Zy+7=mlHyS9=LB#i76$Cj1WayNJ8AePWuu#RJF$VSb7JL&Cc2IF4y_Ket1umff5G$JS`x_}Dbfr4c z5psl{3UnipFZoWpV#u@LttzC{prd~)%BbLWpcAn+<-c>8HV9B{F5U!CJ?7vM5U^)W zO&p;c&4UE@|4ehC>FL4>ll<2N;2?tUy7ep2%`|tWpB*xAsR4l5P4bIX?Xzr6Do`vc znLBU6L=#_MK2b$rFEP+OJ$w_|uxr&=plVl_+nn&EK$~id9X7%nP0>=O5<75v3JoFm-bjUl)W2Yo4wt8cHa9l|C$V3C!md@iwohur&NCMiT#(rn zMd;-IW#L)+{>5k3qN%-IvwQgz3W+Emd{qD&0x3?R;-wVmTVM`lNfPx8AQ4|hg`5q~ z=m33Yjp$R9j_o>lqv-glu%ZCNJ(ExnpYx4`O+iy)2O^nFl2%L*xT##>WTyxRPMJiL z*(`FVeGH#lP%~ud2{fB5^la3IWGzDozz#7{M<*J@Ptck0$%}#1=uNw458fYn3`kJr zJ`tn)36m_TG_*;|trP66w;tJs>BwY<(NNgzj$5>$AQo=tRQw}AB}Moz4Ggf%It(S7 zl(ZN{sn26MbT~Nwjq)D^NztSGw{IU#(4J_bv#h!vAf%EF3fNRlROi>%bu~4r&OhJ= zUEJKxTsqd))|BW5r9%4v;u8>P#9@MPG^c1HmQ@>tl3a8k03tDS^2M4(D>^L%C;+g# zL=6LRX6LM~mwq?3=h;A#uioanrc=;};fVxXZCh*-^!5mim8?300)Li;ZI#(AH%@F6 z3};<2ZI#{O7HxYALVHa9K+F)xcDV{*6dCQ5s-N5dTmem0UtbTirC z(82?qqw((|=k@?@LY5*alRgvpo&tsP_V#u%+Q+HdTQ`LI8;&d(H=yjWtd-rcB=MOj#6}zzh-SHshrvbSNU!M|cDEH}JB=;pM`R-*7qwb2SPk;MMHSCT3Ww~b*-4&>ms zx3@)BCgge_bGwTN7W_^!9C$M*oEn`9WyeLSzXR_hQ$q6meMoGlCWE3iDyRLfiDW>A z9@upN0*kC{Yy-Zwsi`S2k7q4@SHZAl$Qaq`UyTf`&=5(d*v`n?4N^?!avMwJ|O(TYtP8)PnI2-P|-~ zJdJ*a&>UfzAk&Nk`6DXsfD=Ke{HFAvCx9THvdV6FpyBMys%mjG4hrT5JZrReA+J+6ntK=AIz%6)&6<31(TlQ{K0=O?eLio4|@adT|WG2Q5fST~} z@!?5G8CA##H)+D$KGFOuOPC5R(dDm^=F;(f#mkimvMXJfA$^)O^Psr??w{?Z|l%~Cxdv3|Dv7noph?GtGhluRb)W{2(;rJJ%6IVf1Hg~w?nVtRaGPEHpZ;K zckDx|qxssLRJa~l*D<|9iayi85lQV-=Uq=WO`C5K7OaBG&KH{hT0U1D^DeMlvuia^ zLvDzehDIVG2!e~BADAsS>$Ae8!tXFknk*sC=0Fwze*h4Xr9cj?2 zv2uX`1Qb<7MMFJ!%8nkWK%F=LC6mrxYkxH~2B2b&UwV3e98x%I0^J7{8VOV(a1>|Lz{l>R1D&Ez2@?(w_Lx$nBAZD) zxvWABu$JcL=2llTIzOY43^;A>&+Y$)zp|W?A>6Upg?sad1N`0JTI%Gpot}QP=%@)( z{JZ!c8$0)sT%lrRVKH{<61Va}DSg!I?Yf!c-Y4!R<8PhKf zCc1)?ox-yv3)ZN1JnE9%MXN(jU~Dsy`gxz#eUx!Q+R+62SDj_lb!*)xxmkU`7lS1n zkjA54+fnBKB$41OTXY(9-OZn|VXtcEg@bzQ-qCe5JG*4AEMUA1Jz zam2fR7HzTJUS0i!9%c6Ahn;2c!)Q5?MPGDH^YQk((t|1hCU=raq6C>x0g_~5N=gc; z^+I)lqt1U9-wYVBcnJ^(8Fw8xvEVv%=)c8A?|T>k%<%mBVBB-+FZw!x z0nA+vI~1>1MnD7?X1ZM70GSa0@c4vaC6(-?n!IW=?K(N5i;VG>T5)|0RNmLm7lylu zs+`Yk_5E1*`nPN0tfhEb{d6DIw4mm|iI2pkkNJAeul39C=MH8~r16uq;1Qq>d49k(7Got>6NAJ+`Mcu$WN z`j-duw}@_bmydDU9xv{fse?TMr!HOw27S8@G1Zs}54#=&hFCuLbC>KyH-0DP<8OnIaIeA23B6MzdK+F;K?~nM~!_Tu3=*83oC#N zX3fzA07mYmYAhB>AsmDI4dmtJU0q%EkkZEU>Fm4E;UCg&8v7_dJMX8i;-0E%b&&9` z2>JcG26jAn31Y>dgQ(JK(fuVnBgRM-s45C>OY&7yEMrvDpRUHHTFc}zV>0L}l1jz= z{lvKy!YIUy@Rm!TuIV1RQ50VVGC5-YuKWoi%wQ;2hs4Y;vH#k^X zsaR>0B&kziLWO|JiI0!ZBu^JVxixeLE-AlhqP)*1nh$} zo$=yav-xPotV;MQC4O{YuZ|-@LPbRdjqSTK^!#q@`;B--5`}P5#!Fttu0DVMr*&0< zC)W;C@#;bcHy{+}m$ZUR709UXH|OS0D#7 zI$u}24PdT>86l5+_0IEj)1^%?(|qa+1TzXRPB0}U3K_a<>*?tMs-FN+0Fo0Y9vvNB zY~zgi%n$jiz|$jCILy|#zuy6Xy*yX#tM()Tl(4p^f~$o)9+j3e)udDa%tB4EZBPUd zkB|Ol)RQiqM|%ULUSz{#rr zh63FzX#uLn=3N%{cDYN6;Z}B&Hv9XGp6Arx@08I~3jb}x0wWHLdx3(*kd%7aJR2LE zAe6V47iS#osPZ{S3vo-xj~UM!nUj(<{aA{-Se=HBmeSHvoem5DlK0yKjKG=O6LXXp$bfxvEd-Ry}fyO zcm{VF0ey!~vgwQkJw19d_#=!lLxFZvMYB@S%RwHY;U123vT;_#iMsb9wdi&P53n<4 zLX}$xhZv^qRORbB1!nA7*kRuMNnD)>u*`1yoK0X!{eL zOmI7#Ky2Tza~BpCmX?kl+zmj201bS4a#K8=pj)N_nvbf=%8qVd>*a1V90FSs@0I1} z_{XfqYcpDm^Q$X4iloBY6k1bU>~S}S`gaUv10wrQ*S2tmbHs|Uk=g$iCE=h1k9r`d zn5COA^!4wqAQ$SADg_tXR8>`h7_-p!<>#;8CZHW3bM^Fb%c`QeiAap5tr!u-juX4b zdF9qQ8c(RNu1;yawKXSUuSJ-_#vzNtnSJ0$B70U;mKSJm#gfbJ$x6u}AaJoxnzaZE z`0kK__>7(-e&JMo)R0rwIyBI5!GB*Z=A4!BUBDo~ol5og9^p7GH(Fv3OP*@@(X&%H zwn7xhMzYdarji*E<0e42Xk|y%c157nGm;3%~!1!{! zpZ)z_lj}@dp@RAtV?2D(!TW(w1P75d#hz)xgEIOXHB-z!JQ+3+jMW@rtwZsuke*Zb zK$9hEn$!%nlD9ml;~U`N@zHdVPIjI%uI%6O(!6!?q8m+x*3C?>U2HJQ+2*){n2z<- zv;~$62>}#?I41&1WXQ>2=4NfR-C?p0u~{P*8VtH> ztBEpSxNb!2E+qs_`1htKL-#WX_X z$b0DmnrCCDvo@bDMKK4RyU!_zG=@hNMFJ)C&M%orJrCo&3;t*Mn9d##5%Q+-DNa(K zFwJnjuv`=>GEKg7Q*Y~Vtf9!do3UGmp#l~JP(f4craV`dx>A&miG;!oWk}8^dpOWg zp_yD1Q#L_Y=xVUw_D0>=so)E+^S*ua6{iSZhy$4yzSelqvBm6+4r-} z3;x5}^Lmprfl+hQueAp^cem$vK#bIJ>UKZa%OXf1js!3ml{^YenzQ~YNY}vP*-tE`-JmW7P{AOFm%A~~hdhPZ&(@0(KKO61s5cS|e z;CZEf_t5}=-S_JAdx-N*1e>q$-EZpHTU$~>1j0WlscP%L)oR-2s0wv98-rw)4zq;|{Eh}g zk3%Ob$1<-PQE!WnAMt z|Mq-(*co(-ii@oEr|t#{kV%U7-m zqY4;0W?Np5q|&jy-0POO@J6T7$8mVke#=xnZb+)LmvHr(Uw6y5h)H*0_I+~UbG_J< zEQcTg#Es2>o?V?Tq6(=sMxm&6&8y|1(}jDkC7+y)Do@r2aua!5=>jZ^X0FjFd8oE$G zI23UVnSiG)01nM8oeh;LY+HlC@OhI)UB%?~F+5kdtk*K*V9Ugtqjk^CYX8-Xm~;nx zd0{~3i*#K+br0*tgICiP7J!9=!yJ;d(9(J+7mUGaHb_C_oWCFZ`^aCb;Nct&ke}<% z-gtyOUaU7I z56Te;b{`_ry%fF!)>;El70@+z(n6pRmYp96VCplaoo)l#?PRNjln`92d08p%4bP21K z{I`}bgH8VDmK`VR6xMHMcsxT9Ffnx*>0IMENSTYrgz9v`;!f= z8X*6Jbhi|DfYA5CV^2Qx!-FqmmTcP?R2*r&SHEA>uzCQU33K(mN1A5Mu4sZ;-tr>_iat82PG&_IJWNGa}Cthklp z?ozC{yHm8dTX47H#ob+sYq8?)R=oI^-p}=Z`H?@#l`}JYX3bjX%-%^5^Y#vTShITv zZG32}HW8p+^`xmBmGljL{L_j2nj9f3M56LE>rHSTN`*sPvr<{^E5MhFvyj+}w(TAX z29YK_f#wo1W}<=+T!5R_Rh%C_WyO|}-*yJVExzu{-+<-F&Mqwsa~7XUzY)gQTYi?7 zmN4K%xD6R=s+ExrmD|x@xhQ`4M&Yw&{&Yfw%~vLe?FYJDd&c}x>LlQ-;GPX7oS7No z6FS!l+$M_Ub4d?d? zrf=)&<>o?upY~B_5-vV|agl)`D0Koe|NZM`o~X0V#{2Be1`P!z4Jf5WtoTi=F(PAiKv?V zjE(sNHqdiYd(G$yPHhgE_`v4b6EH{*-{mOw*y ztF$|gwjWc*1H>U7DK3;JE|wOjhUcc_nqBc}vmOmEWiO zVU(ZEb(#M%eeLqe%jb)8X-+Ib)*e=vC^o|c7fiHMGHhW-29?6XfO4bpp@DjeDKr*W~m=Ye!Y3sIMC^+Zvp)ANk1_AN( zw&=I6W(f(^4>w09&yoOuJK-po9T2&X1NZ2U_-8`SF?$myE80g3?#uSmO42Qt4EjM6 z$ZK9_NDQr|4(iJ{VV1AYb_`b5E6s2LCGME?unex`a_7)6XHU?y=ta+PLW9N0zKg-q z=vOGC{m<`e)_zvZxRzFQ8K>0=MOMZWsyeQ@+BCY=9db1?n!(i~e8dU`XYQ6hgE?)kHREKYY%-vs)oG->v@8C4m@xE4o6Z#YrwEUT_9{i(g*#op)UoNQj>X=P0}oy%n!N0y&gVri-E zWhEpjT53V(6`-s|UJP+@a{=MR=d_&Wk0%x8J>fy~+e#XKpXA3obgpGfQabYzNyT}z z>*kPE1qTO*;;dMje-kM|uqBVx#}#i&j>Kc5{?x?h{@54&%n>(L4y+?x(|i}{)EdJ3 z=v!B=8f+j8bYshufk=%d7ze=9bwe8*3SwuEsZ$S8>FI#J{vyL=657J)IX80Zuw@XE zW@J|h-Eb3yVbgyD;nXROwtrTczf zT2UA3l-fV7DfL_cD{DXOf$=F}^*8Q@UrUO+!HA*U$kHQpykFA9nVabV4Lw)?A#*@H zpmzfRLKPOf^{Xl?6^f<{@ZqguD}u#2VU@wsV!+*1_qFOo2Lf+>BRe$aWztt>#(*P3 ziAgvROKHK3Tc%cO+=2}-U(X?7l*!&*lM zkk_@!<2XOGGH{wD*1)F+upaCkrb<&CSpk z=;^5~0Gw9wWa$w3Y7_sNViY+f?kS6MJMPQ(z({A0I zxLc#O*LACWPH#E3_GiNHICWG@IKU9O&$cmQ<2x&Q#74sVwU?_rALw9o*DG$TalFv3 zx`qZ`LiFn7r$K-Dw62BBF8ZlOv`{LwTGPnCQi)_orGsk%qZhtAZkS>Tmvg(#wNDXD z4(;d4H;RGGWN!pS^<%hej5O`e<~>xvaGJ)iH5m<1UK1fYtFW2SFpQYGzV8LVpDrXH zf039(-~m8vx}9qlX?o~v^Kr|P?YeEd-v+{`iDzr<}uQOUum;URk&#afqrlFh+Z=HEihVRR=i5f-rTIo&lj6hnRXS+mthc}4Tp zmL}%+nq}F;{8@zu`pm!A*4F0c=2ljSq6g3rMKm=vzkdDd;7~nlsfx7-4{$?E%Nbaf zBAiG{{Hu5Br;FrWT32RgX9)-D8yb`o`hJq2^^rKKh8-I-U19slI`*xJsH1Q!<^ zB%C|Q{c7=D=&0Vd+YJ&0(NwimMxGR}3||Na0k|HEuMl6m@5%y#tf`UWd47UjTj!x+pYo>m{}Ycx#xU(7 zvND)QYpJjQy{#_4EcdYMo!&+GX*myzMutH1BWoVU^bDyDrdYmXMXZBY0tI)zgYmp?f`Y|Gq>#yj7N-b{CWxs zZ=~X2+@<*JeQ;0sa9Y2YT+b9E3fQ1!z3^A{>})peX5&JS1M3wcsP4Nw_w~hGq%NnJ>mS) zQtABBif!ZHalc)tPunwHGGQT*EHY@KuA{3-9s6q6eRc0LNH_;$hR(hX;%)osVg}!O z%}j88p#Kd9Q!~X#PpW!;bP>2p8HPX%t$Jm*?8v1+okq8rCzJb_M5xC zwSB8(My;f&Gc=&<-1lAJF>mKqMj#F3Y2i~}VI#}%h)856J063cZL{TpWKaXFyw7ew z5~3GPzjyD-8Gqi>b0gjeUhsfSrGDtNmYUr#$?5FWg9L7FZsyg!!YV}(<%Wu2X-~b6 zM~keJP7(UEPybT&q|iH+p(L`Ek_)L+?uJY{!%z`J2w2aH-WJvZ0QtM9sD})cUFc^H z2WH%>yKhufR0nr64%dl&(I2!rPk$PGPGRw_N|WRzMieA(5rg!dxO~i%?_3j5_Rz-m zYcP>Xp-*Pc0Dwt~Nmky@r$AZx_pKynjgCBdamR5r$3`$Qn^)zYxN1X_rPKSTR1=*% zRNq%{+{#W8?7x2d5YYX7%(S$!Qk|O>|LQxfyb~dMa7K4Mw+xPsy^!i6mYsux13SKr zjSUf-Y2<=6@p!>20O(>KwdRaqt714>x#;lsTr{vVVr-ek{b}y`20!nOE>M*xvH=9{ zIk&{J3~z8(w6>-f9;BtESr-dh#9rq{FwxOfZmIeta{E&I62pCC*#2a{E@);}v>Xfe zZ_=(vOT&k5efjd`*NAU08WcXxml7^)3U854pEb3wTqE|gL8>?+9+e4t2!+|*)IPkB zFM5DD5%c<=eGx4o2rSvHtmp%)3Jb;A_u}&E>+6e)rM~wnLgEA`Ue!N{5egplD}1`m zs2!GJRp}AWtFEYE!VJ5*mU>ndsM4#0grEdc?VzBz~=-!Q{d zDt5sG{13-$X@%3XxeJ0|9VT@fn{rYx#oMi2`Y#5l_aC>OX zr`^nBc2F8UES~k>h=e~W40^Yr2L}i5-@o^R7(!(EsxSIl!lC0GUava{_s>K~_fL;~ zAz&aWQGMU}ezE2LoF*HB?#5-exPI=Y9B;kab~j94c?|mjM%9vrUW^erxDVKR5g+ARy#OR>dx2%#{)IY=z*>>9t6S9aW69uk2A zORC53P(JvkoL+uN_iW*f9};y{e+}{nAP$=L%@NcY--Pdev*02F02sP-;?nGh7eDk_ zPY>22NutE5eo`KGE2NHop550%mxQu{O-c8=uP6ic$*O>7$#FYixb_V}GOA zr-STs9iwdpaDW1YD(64K&=+CeUyxJ~B6_dJ?I&Cdch{X^;qi+S9D@Z4Ht_Upu_`Hr zfb_v20GD~-c%gR9Z7b^Y1p@?p{JVNIxqs?Yin!s^S7h8Rzn9mi>G@WzTICPh%tQ>f)t2N zYk1>NpuA4kva~$H07Ga=!Kg~!S$oxWKZh;rZ?3O{dJT9IZD7U9O=xRt%k=&|OR8+| z1Isn{_v~-14f^~;eXPOUq130ECi4t-9O67_tU^Y0o6k=ot6FDLxuVjjT|(^2pAqLP z30z85v-UhaJmQ9oVTmeio-Rw>yJ6p;O@<$ZA0H9`%B zwTIQ)Ujp^6XRCsw`kd)(X?epiw~r1FK|BRdU(X$+S+0lmsjlah`23t|mX*3niYNjEgAw7$ zkiHMV`3a%I9WY8NCnO}e@exDg%hNd0$F8rh4f9wN-=#*GoD$v?7v)u8qI(k|{((>{ z>8$U)SyV44ys5*-A3*wYs%C_}b-xm@@pfKZ*8^{%Ugbv_{B%+LJEoa8^P6$fV)*TKe1y5Z1ljgVH{kCoxil>29D;g?l{_3}_D6XUr zdgGUE9upQU{a<-A`Lh+6q6uyl&)?}Gwz~G}$7FNJG;U+6JSib@LY=HRwLF?&YII@S zOG=Y-#)p5ap)KTexqIQn{@(fGLWb=NsOX|zzNogL!9_Cu_Uek85FNV3X}6m3?CtLE zuBw_iYboawztx1QC!8ry^KVj~+dB}sp{}m3sHiAcxY+G`em*53dShK3_Pcj)K7?5{ z-`DgZpyhP7kDjeYfdU>!Q(LH#o8*7s_kV^3g&=LMT%5n_9Prcs4UO?9y}G{6q2)Cl zP04tDdwrccwtKu3HnA4~F%3)!K_@CHD;sSpfU(Iq$~#z|=leVq%BKFBoD@{T?qzlq zvqsKe^eeRH4zSYeIr~z4dqoES27mzhO5~3bueEPiSZ0PKFg|qrHEg-M=_jz8$!|Px zc6AkaIIb;Dj;B%R_|t>Z*?Yt@=VseJa8oqk@NDJ8L`=?dtI=eed7iNV0MM;R@0Y5m z0#8p*Mx2NtV~@L?r!I~3WEJW$}%%1!3=!h&ZSB>oIUVQW3YN(r- zr49iQB;9Yye|m0xy#2)b&*z0-OJ|4DPz6?RvO68+-MfQ{6(2Y5w=m8Q@#8{s380b* zczJe)G1t7jR|Dr{2N30}+gn)q#ShKQ%p~MU{q26^4FFXOtX#2fSrZNKDWzDoV4c5e z>4aTQ2EE`F88$r#hO>s%vKZykq%*==QQt%&Y&nqM2|+wOJ-5!?baY_ypC{T3ml^_= zq8o$vd?b~I*=juS-4d6OkR2BlCxQwy z%-9N3{^LoVJ$FVXbWDvJAZ2WS`<{{U(&Azo+g52#>@AEE zh(!;c}e(@VA>T;1G==S{&H*Yzy!t5>gJtRU|%g%|@)e3@AM=n6b=?DA1e$*4av zc7_H3mTkG@rn~hOcXkSTLH;R`Sj+&h#Y2XR-(QyppFEQIOp+tkcz`W0g*WiZcwQcC zT$=@ws6CO^`Mmw_AOQbRJUuBn|G%?IvPhSF*_o{f;Rjm(n6$CHUII2wL_teSTJDeT zZlN#~h;L8HkDOSAf7W(%pTl1-_D@m?NI|m`QdmM-b_>@%KdR*As^ zk7=JxA;*uBwj@x*PK>nu%1ab%aPFoppA7)CbadeZTfOFTfx?3nHQt@@zIR?$GB4Rt z;(5LDetRT%I>Q&-4iSP~>a+_1_TXUDCr=o)L=b}1i^Qb`7ONDAlVijWQR4j^7Hg!A zml9$K8j+K?wp^887&6phGWW?z z-12{p=ys!!+Mh7)MtrF2yy3d+rXHbbCA3l}*qyjuy+IKI{yX-kuA{?S5|Ni-BwXIW z@wMb!e3&43$Jhy$i4ZU;n7l{<2+3U9abeu)qERr$SjZrZ(BJQK5J|Iljy)GBa5QR! z&}PK3g5g-Ls9&38pKGKOrL%cTIw1xKC7Gz;5XPl}0N=Hi;_qUKi3fV#_-Aap`$+jlt7Ji+^Fq?MZCQ-Rz;FSrf&cs3W0|P97oQ*W>YpEl;)mEHzp0LMHX~0l1{*A7A(2zZzfYBAMWrZK zFt@P4c=_aV{9B*-2fx!RfVs)$e55joAZk9#xUEX)$vO{R&Vyb;=z5()yNYx-?zsj9 zpoR&~S1h1(Uq#vkNlN9n1&(QfZhTNuNtdt1u$Jbi3_);!2LNFWW#wNmIri)?^aZnV zYf(#kqP*XY(+hhGZ@|e4zVu>2NGvbrA9s2r`&QL^RkS9Fo&(Qyb1?fuzNNVUo;Z5I zvVM4_LX11o!_C{O1Zt2ok6dPShK4 zfEwI#6=%o%qwpQoMr=+3c(j9al1Rx%Mma3(N%Hvjg_he-ebM%Pr?5mAqFa-5(NdDAy+8tGzgdt@~ zX=!Uq3wA#G0Y4h8Y&* z-@IZ$NDvnZ@$kyCn>Bh?jYia4OEK;k!PGYH=2Od&#uutqp)SrC-n+z$5^vY7{DwQ= zfZ9t-7)%=KSW1R1hK3km{*b5w!^t1T#RvQQF{PiUAyfH{3)oPDo>0N*tFEqpLBCIT zOasNpIM9>B42x6opf}`9SHf033yfmSm>8)HC-gV0H5-cZM(IN=UO!6j`zW~|?}b{F z%55Hr>R!?Mi@Q+t_IS&ut#5M9dJ~Tp!1)kZ#PLt||S2r%MWJ#;QTY{858xq04{w$!PO6@tx^2+OwgvE6gGQByYV zGKJqAUY?fDXRGZrna;{OIy#4$i;IgeIeCBY0SNlTUEO3JpGHF>5Hfi(GkBZrG3$`c zr))T3Qv8cEeUH8H=JeC?>6<$sXd<=vqfrui0BSF+IjX6u7LXKwmjVC~yx+wIp_Jmz zGGpMRK69U8b%suNM0oh((vnnMf)!Idw77%rPrMb8mAVX6-1b>O-79E&l3B6_eraw< zMd&yo420}dA=W+5WjL=Vp{yHegaBT6eHNAN!uzm|75uFdZSpV9DEgj3c1a#N1{R((^jc^G580E?vr4%jIs*`4$#URMA`oN$e^Q7?h;0 z`$z60#g-R(Zbt-D?aPfp;^lT7AcGMmnqVge_TL_@4KH3xpc0n%g8#SWxS^nc>hHa{ z?XufbTl0;oYnp9mSjt`dWE)Bxznl@WHk0~&lwO3bW|Ewpt}2+y#4_~ECUT3L&2pZ=nYPDr-+Jp3EZbRym#pQ4VS$&9hlGhG9obx*XuNM z%yg?>p4=0~ei@pVR{5pKv*WAUqUKPyAcPQH7V^ibWc!kaZUsa;CqEDVcJy602ZJK_ zoUMO7uP#-e7g4r-@kRMX@0UBZulUh$8!t#xxlq&u+Gh7=4=JK;&aX>w{7DRjQ-CMMlRYUy%7K}KiL29 zHjHEzM>4V>9$mLnTUvET`TApVTse3P?(5LohS#So96q-Co4iaG`4l(xR{NSxo2(9& zqap_MXOp#d>|y@>O8*{g^pf4JJ>55`H7j{(p|l$~-8>*E0PO53e5vnW zNA6iqlp~evaFNdkf3zNdP{;51{e~Qa5|dnD(Lk>Or21|N5grbvC!Nd`DRCn3P=hlZ z?8kdp0pB5G7|kkntj>5wa(H9X^kC+p)&n=sKZ()0W!tgt2{Actd*^1L*`1Uy)NK#% zwD)PQyW*IP0xO8#R@O%}VTLlF*eZS~pY-3J{kzEF8W4s*DFCp`mEK{Lsg;s~={|nl zqIF*ODcXqeV#f5_V7@z-e^9Vfw2LT2y&jPus%#Ghr$(R8`N^9e?6A{U<4h57Vm)^s z--?A2olS@EN^CE(Bmbl4e}lOhL3&I3oiEj0PtigA7RK8mthUoQk;(OiJ>0?Zj;Uc! zCnj6puWa%Aodzq3b3^nIV_p#=P{N^cf8N)Im<9f6Aj+}%xRnJApbQza5~3IJ+U!ym z?W=*rly-VpV-q-1LTmWR&NoK_6>e6)>)i_fDs9-O)SI%#`ZXmz%qmHIIAi0ZXZv~n zUiG31rL2bfzZ1(Gscrpo7i@SfGq99l!q=0J7`lZEjrRO8*^s&6b1FNSe6vZ*yzWbx zp!PEdGY_HnP(YZ}OSxu8@X9@`4q<*a=)8stH_~XqWnn+bRLFcu{-s3X)vW-|{Xk*< z=c}?D7(K_=!}{h$q4z~x_g>_oV<9zxR}O}{WmN747(;Cvai zwsC|2U~XZ&uKvwaPspp2yl;(986Ox2_Ogr8U77UMFj{VQ8=mw~4=PBa#Al7&XSZ#I z)SOGdD?mV9TpT%?sd3o21I$qmPFXCSQ^+H~q+ZVJ<5&S;sY!3+j&Kjpulk2I5<-Oj?|fM^&7^nOUv>e28M^b4 zk`q~iuwOw8M|=NqMMPX7I!lgFEv%f$vMENX{oiOhDR@&pm(|i5#=aoJ)n7FaiFmyH z0npAFBM2B25W@z4G0;RV&$re91HKdd4-7gOAm|Jw@HJcuV@D1By<}YEz?P+pXGfOH z+PhN{9Ye1tsyOH-VYwL=>|#cdO8>?4kE??`R9#|y^hf?7{y2U_o&>rDWpej)gT7*?-Jt2czRod zT0^#{;`q4uB2$tNab*?rA1nvm;swc6H1q87P{sAlMw5tk0&yAp%!PzLBv6Chhl|w4K-W=-5fiFfX(0eVV2`5 zYuIn!7Ch?=2AMoPJso5br0wGXzN)IU;_A3+O2lEJt6sM&SGR2JNPw>(Y0UJlnrHzl z+z-wU1YnXuKUvrG+PK7)6hcVyLjQMUU{*GlyAx6n#7#k47Vf5s5HQ5QjRGLYQ(7Z` zea9fnz3iARJjk;|N@oMr z8x#Ci2yS1NE|#Orv0d<2Q{yL@IGl$4f_F~HD>(Q}T?L3d#GovlcMs2m-PVZID&LkV z*GdL(Uzly+HW@Sf-(@8daCCHX-1wDL91SxL{}NLAY~md8Z%+7tixZXwr;m41t;g+t zwoQtA%3lY@>{xHsP&mCx6BA7GK7Lich;-T(w`fgo((m|(0)k2jKMj@eYD+#-`{r=d zh-Ui?{k|wz{;{#~uvKz6O(}U#3%fez77c|sgr_vE)eTYRv+boEywvoYT>u@W-(sl-UzT+(Vyk zeygt#!T6`{-!Gi_sEDe=m|c)Ot;Ani6}4Ih2jU3O1(u8_k6lGi=V$W0Cwj)$w*44EC^t zVkewKuFmqx(qaCrm3o5sWWm8iRx50Vw0r4SgUElKgyd62Up!qeIv)(vIbRolzm6lp zE6SACuc^%eJGVWmpB1PtHrmKC4#WE@-D)&>XF8OKrfVN2NAt`-zkl%B8+f_UyT@Ak zXoogC9elR0{9`~Eq^lSkrj*@;AfiMK0FrUXpMLLZzEI!)e8-H9X*xQ|F`CY1HlD2K zoqB51Y|tB=Zr8zs3^ZQ2WL#_z_6h}xRQ=WzVCK8fzbVu;$X%cgHHPV)k8tl;`-|g^ z(z$|@vw^=8Su{4V{L?n?yd8-$ck)hda32Cn&zTow^+v%;lZVr@ z&|*0Mm@ot%1omyykjVpJOb*RAA-Nh%w>Qy4%B@DVR1(_-u-IUxaK8UFTj1J^Exc4Y zu~W6s*n#oQ&eQGW(q)YlMTyym-~Fz@qp?rkV@4$QO=VpA@YMw4h64T$<|{}2_<>rm zyuH+r5>EHz#q!R!NVu&M_SimqAy9u)@GG(L=vzRpJLSv0%vG<^54}$vZs(h3S?<({ zuW+uB&_mLe z9KxhkI*CSF_`6|gVqwujP?QkTjH!})KlYT5HS5`v z)V3?+<#rSdQ0K})lS}H+G7pavf(N02X?BHxP1~pWBzR6M>Ig$~m$zU50MNUu!?qkV zWb|gLfcQ;Gj@M6eDGEqGLG_^-^L977W^^e^}sG z?#5DD|2wAD4Xd`t$OTzdjww1uH6v^JZ#N7>WJ#}vL{4Nq-}wu6&T9J%gA&a?AAk`7 za7Txd&kBdfX*w}lXxCA@*C3ku!1^NF1m9)$%cGg4`Tv(_L`@#W!}RY3!^6Xs(PV!1 zuHPzvzsp%|MFKZQMaXm0UJ` zF%i73>3}@5tNaZ_Q%|ho%g{N!yAb%=zqY zI#r6ZckIZo7$@@Ju51Zze^+ibiB@LnD+Qe%&@jKXVhuJpoGsWaB=DmPY5)M2mpxpX z^lMR&Znu*<`YZGW31S6(-mqyQ2JZ>4ek@AiI~ZZvZ@b+1d*1K9w?FZ*$Z>b{4_YJj zEJvFdL^P^XAp@g|phE7AjS7TNZuz=aMFF>Ra!p7Cv%E?cYXu!iDmyT~+;&UkR+=s? z(iycZ#)dBoeZYb4XaYuPMsrCLz0aI`|NG_F2}!|B&Ey+M#v~T}Ijqi?Cvowj4is*d zQMRFX^w8J)6`9Dd^$Fu`&JxkX0m2}UcK+BHjp2NSVF$}xE%;aaDpoyWI}0L8Js>^Z zqF#wIu^@5c?_!MzaJ^n9hvY>sb=vI-y0^FHE8O^0Zs4DoEE9Np2b^}yl1PuW|61ZH z&cAt#8SCiHcxvV!Wy(^Ju>0P81 z_gc&UMv2I{)AI9f%(6q7G!m|)mmPnFp(0`uG*bE0^8Q`Em#mGGgf4VMfdB4@J9LJu zG-+0J1_Tp+F-XPvFG?VfEz=+m>bCMk8|yfN9R!HQ>G!#cE$^4Tze{K0ubucXX}&DR z*G|-gm7+;t5yHgcgVhIW8U?8aX$I1YwNKm4*TndDrkUGhm|vrI=E~V*Of(XOFuEqP z^8PT4>w|Wyb~6U_nSY!~b=Q^=!Cf{=zPrv3;$o}8^d_{9n*=a$|h)8yrjaHmm;$2A7s@A6pb%V z0LXd+e%RLWb7{Fk53}q}FYm-9YVW=?=EC$S&)%qMxl4}#DbFxDZiBtw@W@D4$8pX6 zv8JD#R`>201pF8n)`vFFqfj=?A7_f-GPIKf7siPNRdD%h*M#76Z5M}UE(FXxMdN4v zZBM*t<_;EOCeH29vTb~NbeSPjG8;R+S0q!4azb5N_+&bYtLfz*j13DetWt@kf8?3{w&NE_~HmJ3HJa1y^ zE2COAsIM{`YlE&&*FNFipa0CcuKfN$fDqb+fO3_rW0+84toVx4iZ?>PDY6<>T{TL6 z{G>oG&e-E^87pe<54#Wka(u-;OKOc=kfpk}09+=Ai0dvxrfj{?w*JSb{jJ~6UXoj8 zVLWDzCJR7h$`0`io)k?Berwz($GtUrO&SEypvT-Z)+;|1bo+__ic>bt?iKn ziE(BBq~Qicw4xz8AoOpTX00g)2ZzZ6%@2kFCic1>*7AH=D&%&8gtv-({^ZK#a26zQ zQ+;x_;_dJU)(Hb1?$3`Zt`J1Vmuv^0B{!#^wmTb!G6(-u-fnslj7?LXj%S_yzHzyML}4!XMyLH**6INJuXAU~QqLN*d_J@ld-Q(6ZS4K5 z1DEgpMuPAzIT@9{;wy6q+xZfwzYW2wqd7lDI}12lvhVM)E|T)2rJ0(S(~xc67!e)| zoprF4G|4a-)_R~W@;loHKNjUGzA=1!@O`9$g?|FLqAjbwd!%UXm4voZmg4mGDM#y~u zjS!}ab$)TE>XG;o+nA#Of}~YXPY7pqYV3`O)HVC^lv#_BT<5dHeYPPHouQMEyc_aN9~{fc8MhiWxKE59im8dLQ91K zMLHG=e=uM6+m#FW_4yZ~eX!2XL&3ywhNCH`CW^`V1_Z*DE=yb z!npGTSa5t5CG=}ucg*rW*#EapgO3m7+wRXUF`3@4Tf!=4ca>i-p7%O2FDE_=AW6kp z<}Q&@*?RG3_ihZjYsBqz=SA;pS`=hl3w)&T(J8u!#Ls&Ni-UrOZdZe~8aJ@irqs{% z2W-u$MT@Px5Gg3|@mp|n3x&)ybKbPAb|1q5$EP)T8foiBC9%ZqX@&d< zJkznXf;*ZY`7t(Fb#bg5l9rhAJUa<9GVlR^@81R3hFN;O)bS(@5D#*S=o8!;!DaVI zO+7u-T%zpvoimg)Ey|8++XTP<0HnQ*izGGk^(E`-unyZf`+%v(j`!R?{d{bBn{l?m zO^hl{A6d(Si%LPTQlhZz_)OZM(jY|ug6}jLkz65Vhibu4MZmy4R7sjgJu)vbN=KPH zQ~vs3DT6iGjjw{gPL4W$!(QW?h6E`ov!uS_uUibD%f9R7_yy^HS>u-|~`vh1fWs;*Qt(c}@$ct^8o^c5-oCi_a2yqLIvq71|Yc_mve5 zbX)pz+27-Y8{}X~z(H${+2QUqY;1kG)a``R?+_<+PFWa%DSoEPmDbo1^hTi%NysH$ z@-Z?sa)t30sehM}Ns%5^k+jW*=IfYT7@pI<1C~g#_NiX0ye-KaF<T z#imJONG9zT$mwG^sED&==9X!WXi`a&YioMS%DKCea}q&j85W(U#WqVzrV7zJ@jB2w zwY;qXgse}CM6@cgpY9@5QOU_rU=DbXsoa-gV8dC9CH7>DS81mj@8jjt@N0MXg|bBAtWFC6v3vaL~XO&7UMnmG!dKl;w3eu~0guc)of| z%krWhj$soa*Tc6%|!`dpq4k0kv1@FZ9Sli?l-3XE>uG z+3f@|E*Afw3Z*sjsb9cOYG*bj;;VrQ+n&O{)^qWcQjkDtFaNZCwF07) z`#wehsMlJMs(A^6_tk&q6E&gWh*FBcS=nXmPp?2}EjTlCkd0>OBvwytL+G+?RKZTH z-AKY$VNRT~`ESzM5*a3CHs;qF+CDI{&N(3c9juJAY?U1}d^vDD?Mj}h%>JWO-{X0- zlGEAdOKi@nL+M#tJ)VixX4#w{8}o9-Cd;MgTKCR5#oDW9u3SsP@}ez=8D*p{t|sHh z6eTLb^e2H!g+xh~DhSHUWAZLm$u_^amP@Mry5OIAp9>wYyt9(GIctwd#N7Iy4uh8* z#JlX8(BmC^s~@*^CVlW{M^!$5-oCt>aXa|&o|iD)DPy&p3tTtDrS)viss zX2=(E$q@0KPn1HSdG7x2s}!RY@uLOfTUT>y>kMWC|G71?%;WtAh_}EO=h8?Ixt>3h z&DQou!CeK(1OjgFc6dIo;U?yc(n ze5auPmrc%>sobS+{oG$2AA2+XLWo7U?D}5u<8(I#q5TdgD49rInVzNq!-(Z)p2Xe_ za|;UxZbD=~9eES~;r+S2OHBrxMD$RGH=#^aXSx|ihBle&Kk~FNXjM_jUGpzp-${l;glJ4w0BtcarIF?d@R$b7WTT8w;3NJECiTb9;LS)VTV~Zw{QIyeRSa;WZ16j|_$~x}~ZO z?snt*Nd_sRrVB&pLF@etqG=27Pf( z-@`pDah|9!xSK_#fzbA$bA6y?WIQ=J*>PXB<}A&iGrPy>W!@>N(O^ir#NdmS6wR9o z4@XW^4-)RuNK~W8`N^C*9Bl_@m|A)XCfM`#_WrZGSYfUF#IJ zwKG<$%LI`}e#s2O>PJmEX`E%2GCzR4i}l|fl>-e~eo6>w6>ab^w-7Rb%$c4xsn&Pm zLc;4jXw6AK9~evNo-lQyh}HP-*ilCD-reTfg<8|vwk{-pIE*opx-y%b?+3P*Bp^5t zVid1v2+>rs)$#9Yn7Qpf2IGr08Bl#ok3S{1QV>4~DavlqVSCL6UCGoC){Fu-{?LsA zEE8uQv3^N?U_e0(aM#l)OiXxhU&etnK=T`~mM6Wfnatmi%?#B-nBy5~m}rC>DgqHD z+cehXB#zdCEr0U%?Sp2L+)IrS?c~;^Bq<27ezM{FWbTrGVSYYks;qJX-3Q#5kp~>% zP|{Fs-}HZ*$1*SOH_zS5)Jmo0gpn^UWZJNbB+*&GYA*=BW)|^) zn-D!)p%^aO|B4eQ;ysP+fBTcFmO|7V-iC>`d|X0PC@+*BTz<$?B6k}hQgb&8;1ju2 zQ2gGNrzPi{zNs}$Nf@GWrghNj=-!~2W4DO6-Li*X&sloFlq9dDq(ll)WNK8jmsjL$ zHNh44+ML@u|4v)7${|ZRgghlg$16$HUJ3p0o;cJ4Q#ZV2SG=JNp1_BdIW=yJ8o~Re zZkXSg+_o`&&wZzgBdCVoj}+XT$P_C{d+V@&bVLyMZ^HyPH!gaJm6g@lbkTvU-R;ZO zsp3;0uDrPO?m7<&mR4i4_w8g1HR0^<6BoH`Qi+_mNfuNlaoB~_WC-wnM+-ED6MPDC znQzHtSu#*(75=O|gu0KUC)HGc{rZ(ZTVW@PRLsG_K~FEc2hO8i*A`1^0bRCz(?wt3 zmo${jL>yQC&&nGdSCd;f1zfGdTL_+P|7HvFt z<0FnP^|?R~`uDWnXaG8U0lSE5?3AHb!?^$k6Wsz01HDvLrOvapt(2}@9N**j!|Emn32!CivB1t zer$sT*ng{`a6EV`B8_T6*obWoiXjnQTbA{{kKKlV{0**2Hl=U0F<}|fuAA*Nt(Mau zJC4mj98Eun8N3}2V~Zp(TrDk~Wj|mPWcTtX45DZs`#V*)j{{VhO=Lydb^9Zr)Fm`f zA_nACR50P9mMn~6y?_5+X_5vO;vpi+X3jQ-5xR%aFlSfSC2P*>!X)ykUG!jg*?05MoN!c%j0ec!VuVQsb%zy_dp}J~KNzc3>iM zFOq|JC^bSFLP=uXnttQbKqTJu)D#AKh!gR#OKU*)_wCip3>*J^R==$#Ny^-erjz}B z`_>h@hZeK(&KIZ1UeG_g|dzP=X*+6)=#nPXlfRB95aZu6;L>z$T?e38M51(${cTw z2rs#ye~nWLff-MoSH%#W_bI#I*IR1v2li# z8EY3a!&Bwp+3iT8W3(l!^e{4?gH}o!NC@aCwIl!VoO2zYDb8!Czm??2G;rpfnBtDu z?#i9}3+7Lz{QT-_#j=%7o{XXiGRB0 zh*VX(=_18lt!^OlxbaNKQ^)RD0+BqxDMxTwH{k& zA0@o+dAc22rXok=9S4-FZr{autL+xrU21E%fng z1fA&O;ptEZRm_=J$HKxwORMl8B{cumrol#-k9Yz{^7{6c-Yn6>!^17>!-xMz(^W>r z(KPGDH9&9(!QDN$yOR*yCAho0ySr;}cXtWy?j9V1!yVr5-2Jsb_RMT|S3S~G)5VaS zz*<7|)H_xLW_rgsF}c6>Gc(`wr%f~(S#QH(;!@~eB`|wBR5lIYWx?1$qt-#?`g0tWK2GVU%ltvfntv+1 zp)C1H1p+cTmaBKv-93MvU}wsyXlnkk#S>MmsHngUANW=Gdvm$RwjKC1G&D3evKzn( z0t+alsAR^g?@CDM!rB8aBY@%~G|VW8F3OTr(9N0+^d^>s2Fp5$0Q+k^&GB-p#{upx=+hVFa#bda`IV9)Q2wglPjZ0S!9d;Y z=Y3pUdt!>dhfbcbmD?6fN5(vNo zF~CkkA`lH;5gN(TCpR0ZHRk8%f7C-Srpk~*_zKWs)-7AGv9aN(p&phd#*!tAWxcSh z)FXd(DXN8jzal$tsS9#|kKDxp@aK*YMg4FBb0T%z2Ha0ThJ2dp-!BJmPlrLLZaJeU{Txq%N01=f8XCKa?lI!dG1 zQ8;XbCM>BKPgtCP_vmru(q36&F1$kwB#ez=Ai?F1GU>mWvd+)X zM|1z45JK(IW#kU-Wt4GtcK-JaFGBn|EYBsYY1sl^-nj^kTDHqwV$M|cns;2$$7I?v z3q(Z7_;XYKgHD$9Yf?(g8kQ~0+^~sZzw7910`aJ&Ni$YOkwr|26n0m10rl-`(9uZ=7tu!^f;F{QPMSV)x%N%%9m((0NEW z61wG69d0SO-fC9QjI%xeabL8@yA{{e*!Bj%iNC`#ouD9$K|@3LCwq12qdL_qjNk&uw&Jw4OnI94Pv7426w zfSR}SGlyhj0~VB%-*UV@ZX)|SvdQfkM(A_anie91$*#R5A{j>K@(dhK6}yPR{;iz%RD8wh9L$B_=0_x4!9;)*NTvcdfls!E*+7 zk-|cv+q`OxS9PqN(9-M7RTDmo#7Y?I>gJS}%h;7kli>}CBIhrjZo3}BebI?Wqo_t; zAVd&zdV9U_e(&~$NaF(oDJUx^g;_xf9-W_8mXi4@G znhu6kTn!THaN@tWn`c~7^cLBh*UwE@SAaDFV)e7^i3686WsTk`LRP07#&v~mHJdM;3-9Ua z*?y!qjrh)p$buUQqzNs0jw$Yt?Y>gdy4A(szpS{C5S^D#$vVfTm;H1mWgsIj`U zzEy)sD%=*Edx|{x@;vwiS($Vofr#l2ZEHdlACxqiA|``D)e7algdf5h8{clFQqn}> zNIa}6a?5?rUw{7mneFvtI$9oCbSyz?HzP^m*`#uJh6W#)mY)8DL5p5RRCK`Eg_mTk z)AM;ITkqGOlx@3~&c4$}IhVV672qZ(g+02etq!K!tmlI$DYO-kRqqgJr0`?lhpf#6 zPl4lR7#L8o68*bZ{rXH%yR`_Ua{?#?7NLq3x)O$l-GX`M z;(tGx3Z=;WV_&~`I{vsG@o~27;zv(Bu^N2~Y<|B%6A>b9Sut;DUvCwAWGge zrKqC6zkiLYjHceYRa40=>Oc=A`1Al)5Z?nMNq1z+(6#qNzUy{NU-QFsc#m$kEdb_h zcTp*{lgn4klUuHDUGJ~fCuEXwyMvL>NL9v$%QXh#jMy?A8Q-k6w?!O@-T(c4eAtbi z-BhbLQOv~=KN`$Lp|60}Xe>BIg9N?KPE>c?!As$Oj3ZOdm^~dBO4Ke8W*7G`;9x;| zgaN`*-a@by%I5za2KcKEN2vLf|9Qjf=E5gG*!C*aq@?C}YpI5eZ9Wk`IIvF-&?Emf z%S&N0fVcTl+C74^ZZ;aAh}Z`fgvJP&7vh628Y%!E4v>thehs#$B7XFcRg<)o9mMuS zr4|9agW(c|K3eRz_bc3{BOwwntcmr*|E~oIHXI*kl%d5$Yk(n-mqZ-JVD1bULwfI6 zzYi{sp-aE|Cv0KF#;u3yI(v7(Rp`i~Gkpt3xQQ?}^VI{Px`0+Ap3&>&p?8|Jz(A*w zmD#=MeR?w|(^A6y3-_ZEqj&CIDM9{sT*!~U`Pl#U0-82qMS%tU%*Ww`m`YZ^Iq{JE zd!_*Ub6EYApgkO%@7~x@B7paz{a#SgHgq7Ng%!>Z1s0Mrj97AJ-|lN<934aymMZ=w zPrrg7+U^0Ex&t@0q)W-sN%7U)X?5d5K;HPP-D>a^n^27a^b^=30bh30i%*JBSPHDABD*_NBP{^sRqqf%05CeAG zlDoM$OVHU$9K2Ii_N)5{>MY&jX@=Bz5Nnh@d{H@hbjZ1B0fn61hIjG)7GGSbIyBeU z$qK>2Y?%sAQ^-lb-R9LZ%=J3J3O_wR50F<9c(;1zXtcKUDZo8HJA2;#UZb46*|ur! z>Uy8b71pl85}gJl(nn9MJYs-a=InD}r*;GJSN!_k;EpfQb-jacJdoH)sL;X@DtEkx?N(I**A=U2yAUXmBf0F;$8ry8uvp7E6SD zt>~~gdODqAO;BX)^Q>?~NFCZ2HXPK{)FSff3Y2qzmzkXvR#Xzx7~K#w+bkxCoOAu$ zeX&&2v9A!kdC~M=cm2`K)nIXxRk_(am6N4EP*V%-05BzOJJKz1;7{ePDvI3(CXYj) zl7m1Xh%W{Nu79yTzsQpRaCLq3`IZs_DQ2TikF$KUNe&WV#l3UkIXgS^^z`JJY}2d+ zZV%X!x@8`VCfrY)m<-w(+HAxpXdg(OG_n|F6o|KOmKI)_xJQieqV@OI&W*K4SRs@a$jp*@Jco#Vd!O7$9THdEe1B(I+_<+wwTpp-#YX`%uimeO zqOl8cQ35N=!|X4ssK8PWZ*=*m@mv-bvZHv>h^`2mtQ;8P1@$Z%RZ6-Cva|e`(&2pg z^2*d&$vq?&CtKV0$n$>LGx2A_L!UX@b@KVft!pD+ERvdzZoqc!@Wyj~$>U`ydAS1~ zzWLqDk+$tnCh!g>M7S0q3wG=AjN4ENJ4O>mtmzT54@{;L;u8pDd|Y{s-}BCZ0vjNd zYr={fJ!G2pYx%A7`wv8pjfbE7^2Fpv7gYF)ipt8r8q{+U?sJ$j?%+70il1`e0*!<@ zvdXuvKKd_R?_Pdh7n1FrB5r0@L zZS+kPr!?*$9|a#nS2*v=dU1{GuDCB`*=`(B<`Y@N`W#z^p01|peTeHl*J#-52WTAd zDXup?&#QY#x>&UJtF-Xio_627iDPxuk`7&i^y2JA?BG#;1w>7p`=+#`bU%;$?Yb)N zz47tbQXHT4o__S?7-PhqSkmfDx2}7AlS9YpWJ%7EUuv;8wi}zy7YCeOurNejSXdZC z=Yy5#_1y0tjIHD1Ipl(fV_@&r=WM)p0lvmeQAJFjPHp1k`OVubbp5@UQLs~BARjK0 zbrP{wXM~pO+htHA#Yp6qhckKf8Y#$SX1qJ)?HG_z4A0l}UP6Ygbsf@;Q!2GlJ@$yC zqeT*(6Bu=!*MD0GXCkW3Yf7U--aw$QLxcB}XS2gi-fWy&*LBq+?RKec%v2`~&gQz? zG~64uoj!IU9gaw^ZRU1%b^;=IYuCTGP8K_e%t#@gFlgWB-7j48q9c7R&j_`9-B-sp z^upQOro6@6r*iB@*XKYH(gqJkhWv;68ygM9;tt`}Fv;8+XI!9>uYFN!GQ;?2AfZ3< z-1-3ySMsMS?{BI+%$Dv6j8l^qjIvoN1Lk_zVkiM}#Vpu}fX+UzMh*uyXh|#1FJT5V}p0tO1k6QK!j4rPTVT-*nyidtdl|&0#-<6&|cw&9%b6W7PPJ zEG~Pbldu2?Skj;s@tkqs!9&AbeFN}v3p@hG5_;=zId z1u!OWD=r2TP-fs*FZEUPL?NAG-Tu!eefs9v8}gY1zNp%wIn*kbTo5$~!X^DXiDc!~ z>A?aTb{wC45jiYmy?ODfm-^?;LQIs1<;XTZJ-L{N8S z5)>%H>IQo!J>4dTm?d7&m{o08Psd4q46MGqUiA@M&+Vu8gkj1TX&Y4u$+_@rym}VM zz8U`9yu6*G>HLvsAooas+(XTRu?y7z!xIe;3u_1{HEC#ysI2rr&RIS?0D-Ex!(Eb~ zb-QH=7?qAxc*^1|e3Rvs4HN0E*aOt}D2ZEpWtph3hctn1L0Kl-~ z<|~R%rWD$c@?ODkC@FiE$xE!;-5yO>b&hs+*q+B=jvYAaEmwzqOau}hM8tZb4d`3Z zpy8A$D=ywp-Io<`P*{etv7)KdBpisc3UA-mxv{<;uy#t1pCI!PBdmx}Nm1dtHoZ^g zekUa**>G4eVgmw!nucZqm!H0^u!aXDr*hRzb#IIALnh5B@^p~_1KV~j)(lIgprVqz z@Ly{CJaZRdBw@&Wyj`Y6Ux-3cb@luTqsM0ABJv9&6eh;jKo5w?8$V}3X=!N{6|AvZxnlc2 zDNKchg_z-@ls_^V-|9b;3>jYKvC4}`OeX7i9bdUXm*^z8KBB&71je;_98NInv>6i8 zrxhd8ya)IltBS?#T~bl4w!7M!sT#1S=aLg)%+k?##v4nVU+dWC8%5n#dI>2ete(9+ zomQoa1Z>w)In!2P^P26!fd>l?Y!=FDB$M$DV?@VFLZ46iHk2RCtEL?mpVHY0ex3$`w z9334qd0cDj>R2$tjrR8>ZP05v9^>w3$|z;}h$%rn!V0)#9)~)HtDQKwodwKmw{X9G za}-qB1N@I!Ow|s-qpXneIAYYFVS)GySTJI-_8#Il28-P3O~VM+wbk5xoHtt>q^Qek zjuasVR8(eWrk0l0YLm6K`BR)=EqRO)SffpkM@??zv1UbBEYODurua(F|>FsALUwmZY@UZ0!`}uuRIl5aZ+Tx2S-D z^;4zme|fB&rLJ>N6d)9cBaPbS%B;-I-QMc)-_-o7z)A=k1GU_JG;2;Hm9U1&`q93s zX7!9`5<#A|YB5|d1u$T^kvo4Q@N99X2+s7t{8r1C`qg>C>bwF!@BkwV#+M?C2>*>l z@Ci1lh{^9aK8DL4(`jMtsRQkpSf^<5EKcO$%*^-5BCM*FSc!tVx|_U5e$U+s6sma! zSzb8&Ar$t8Zm0LRS0J>pbUdyA$a?YemY0w2+pboxQ2XsAfTEkq^VzUrRWz5`;{~lh z&t0INj@j^6XS2wK&pOudZbaV1;;XcltG~J22n_JKI=w zIdXDcWc+VwBGok&?XTK7hoT7>7#JoW%pwUx0B?yK3GxvkCJJZ?73no$g^#V&gn-S0 z+0)6I=D8L3yT$2rjfg_xxi0B7K#yb4HD4%~^s;GN9~i)CPbF*t{YUH#JZ~^sq#^c* z@Gcn!tbEA-CcU4=>H88!e!~pu*XS}HUAaiai73uluqP)Zs8%Ruprj9l@5OrdP-(UUSpS zLwa$M-pWw^_TYNtITpt7f+5R zLKWNXzx^%=QA14{)bpoRzkko0H+y#C4ANU!U9C_yzm6WUn4{}*J5GOJn)9rcd~DOV z5XDH=agtQ4=`fP{DJ?xVMBq*P5Jn+MZVUCuAQ=ZhCZr$-9@3pXUI9NMnx_z$11&;u zAC%4qp9@Qqq5?3CH?(ZQzKvY|`}c9C^M<7CGW-??pXEw@T3Q+)Ar8_k`qsxdXbtyf zo_@Fg37f$!qPG63QYV-^f@LywxvWRn4nC!AoF5xW!Fk=_rOIK*Cc}Ui{esh&*v})s z6Kkg4)9V+Ee-D5-wYAK8>lC4K;nAg)@v$U9FC{e{ttlz#BO9g-Y!0q;k2yas0a`21w!|U6gc-?Zl#d7V7 z8{Ehbi8%D{#Yn+@`*x-cD=s{pmaFU|36_9EB}>-)uB1eoV8c;fbk%^y)6-l$6j^Gn z8)PQa5I>RW{U%d)<*tV4-y?t`qM?zlTy~b2Ko1wS3t*{P1ALDa2j2P7UvlM5W7GJF zi7h;|o=>ge2YoXU8Ds|Mn1Bs~8MxGabi{oWCCJjxxUXzf|D#^fn4LEdU~`ZjV8i=+ zK>*Tm%Z;ZwS)KLQk)U6?z0!_JH0tev!b}nK<;ybpJfAXB`R7c#ZZc}sD{>W%*6b(e z%^HB2*y`H+R-T`~d%4{Q5Gi}QED(dVn3-}|NWpDwZD63+_hUkMAd37Z56w*ez!=R5OfUx5Sfm+^+g<4OZkcWg1S< zP!`VJ+}t49EVI2?b4RLyuvP!tKi)*iBX(?p*Jg?Vjqt|~qeO;MfCE2=SXPL7DU`i( zbKMB=knZm8ii)ur&Vni`DyF7Xpl;J?omO2rkMqCp&pSuIqvWjRk^L@1T@Wc)5yuh} zRg_es@VpO9)$y9!+K6MTM+~KSCx>H6xVg9{I1e*eCO8ak4#tJ{(gH|FlC|ATulGg{ zv%UEQQGm55C@3f?2_YRxO2UjEF|1ogN5`UtQH?U@^yypJ?l9&!LYsjfyPiNVua+Lo zAt%z9qMft>34@}D;bq4SYOp2au3XlvnxemQv$yc#M_;V9u$V@~NCAL@Na8*4 zxr?wxu`q)Wng@5jf-ghy+9>L({!Mm^78V!x>-Z!3e_6@i;WKVe}5GfcECXj=#Bs!1(RSSIypNVU<1CZpW${J zBKXL0QlH>rKs_zr_}wR~soUcQzCwCLA39E~=a~X<;)JkqnykZZQAWR~=>$=rlGK9v z;9e=ViTdPu!>u=i-Z#CE6!TMYSQ?yP7dRTZ&Z-qCMdC>P2-(x==p=qBEN3}yxc(@T z`OFn8IhYT?c4;ZRuy0?UvkcE!M%^HLQ+-mRN)C2ZE=V-SgcLng#DPjX2{W7w9bPnF z(I1G*-0@$4O{9>|a%jN@}KYNS~=gJ31fM7wl`)5gYa-lgX$=y*gdg z?nim{#LUbLz{-fw#^Y%X`UCLAv#Cx#G5r-)Rq~!IYP3nCqf%|__^^=b8X6G30(QyP zyXFrG1S>k4#+*(|65{3AXO0yuG+fr79orj{-}!^spf)#&DhyH;oS6f5k1+t7`dIjT z820b_ls9TNfz+Iw1D{RPU0sJ5mp*WTnk!RAM>CsU^IkBX$!CwwgM$MJ((js@nn3oX zd4>$_YBXB7o;57?=YC*a-FVP@rFJ_O1gi~p**o`nNcz`O-M+a-YFEfW5+-O6yjggd7?sUp*}hC*u7VV$*dJ-Z(>b>q^*Hz0dHuY z`?6&+lV2geM)F+3ATG|$%{6OQ)`$F%9mNzxX{j^fpzK7w%wARtyjGy zr;-DKBCwf=cgI6^U5t##`WOM_H7YJ86!Dwgvz6j@VKwWS;A%4K;`x=NCX-;vsbe;H zh>~>C=ckb?VifqQ5kijwth+{)CYQp=rFP~q9mdhCnqrQBz0_ez;iAgdJ_?p3NH0pYonVg2Ki}ZDYN$RZ) z^0-hf$JhJ0Be$~h{Isge%Is+ZzgG7JZFF?>JHpsCYb#w!9CL}}FgzlR&3APOa-TZZ zd(Ys?h(XwqMAlqb)!Y(kiM6oVdZFEs`bf79ZRSniJQGDlMSx8Q7ul1?FhWIu)B&!R zu!ujfMOm%Y3DWG$;g437KmxaK3KYn`ko?%}5&@ztpIi(M5*%<_wHm5C_{k30WUxZD zVnh3OBfqVo{yMdZ?DoWUPc?S?OrJ3Z79B4vC|4+#*|EhNsZ}k~s92Iy zNrOOJ99cze7z)ap@URmMBcp0iWR;7j>&>>ifLjQB{9LDzT1P&dnFIrCx2=iZ=zGKq zRW2{lfnbt05q@jALWq!GAX6^ce3Tasuj{FM*`wGkmq?$As(Z-L&jeB`vk0X7pcW21 zeU%|4a9^KklZ4y+#8U@4ivPuxP!B&52BaV$?-bB^U9U-tkBks-kh+hYIE3O10d3>z z+Tv$M9XT-}7s#Qi`JLQHFGUmgk5v;*i8WLJqF`x`lq{-BILTJ5IF(GRoh83OSi)cmI+hhtn{H*jpV@#BaLa)^2aS|~FB%XGo!jnP zSKURHu~`@M@lFm73g|zzwCEQ2M?U|z|JGZ88U0^1<8*~w@mNYH6evZ8ylg%#Z9*}= zpY6p(%H%a1j;A9SN9{+M&O5q=`T_y`_iP2wv?W+VLMR)Y{o%yd-m5+CR$^}TuAg{Y zgRs1Jf9)UYM@~MLKPf3GE-o&@)q%*C<}h)hwtUZiNSBck+a2x+@@~3Rx$G;;FBwX7 zsT*{Jwvq0xMpptC+RG|SJ!c&YOhQ-42rGn7gNOGUUIexWsX<>VoyuEgZ3gsj|FFCw z^9%Br%YMB&IaOGM6=rrS2daEnIC zgp!AL?t!8}QC+=s_E=qA-6ZY6WlQUZQd|31vqz2nxK_{@*6x1c#_GkX_n4c+1o-J7 z0({y&1eWGsu4;;wKwZ<`)k0TYNB5@muEXSfu}C3|)(B~$Ap0q?q|4W~$XIp#8V^Mt-zD6Hs}caYA~a{XxZ(wW&W3 zZQvz6UVA{NrJ#|}J#Wl`<$EZ(>DIn-iZGUD=P~77SXiA(B9+XPqxj7wfeJ)nFYZVX z(r?OodTHUZc_4He>+1_FRpfT~n)Et~+xl_@b8v~;(6jhd{+WCJe=Pt}7yKA}c>$ss zDl|Ge6fPc|~|4nCEEH;p5=oAYh+=d(8fjTchq`0z{n=R2Ry_KV?~Ilz>-$ z@$gL-BAk_?9T!v2t-wV$M(+3gMQ4n>DENvOQDbAzr;5&{U7 znH&DWy5XQth_@<~B0xfOFyaxar(+;>t81ie97S+(aWT_FkfFl)5$>76`m|H2q9&fK z?k$&=m8GYp#ce#JkBL+9-EQE!D=s^BDV&BP9P>jRWXI@CTlOR*2+H;n=2%47%(E?? za?;*<2}eM)K99Fc%{pjkXjFN99u3tXoE;?!RW2(uRe#h2b2C68@3w>OyweJVxMX;X z*2{fq1o=)|3g&u5{~O(%zqmiWdy2q8=WGff#SSX0b6+;!%L7d{^yq99c8+Q^gJiFNIqmh|FKMdc=L$8>cf`l35=xFe%(CI zFCGW&@24UBvM0CyJ6hKF+?7LF+R@>8do+E*fQ|_5$dy@(j67C53J(Ji(v=|L5n4Zg z6u8}K>gL}-%Vh*~>~%~ejxfe~shiJQZ15_@*~ZvGq>^mWe@s|Q@xaC!Xru>@9e&+* z%0dao02Den^j4bc?7QFL27xhMo8TL!isVtA&Mn^bDts3?PWYM|a|`EpuX&xndWPTI zL-~X8Ka|KZysh28Xx_Z6lm7F}&pxF{Cyn#FdOy30c(ypx?dtC2#qRa{@M^g2cnbp7X64IX9+ZE{c-Pbs8((`-AZ2dwUvx}}3vY)iUQA+_^o zz9dS_>GvcNHD{Wf*<%z)#owJ6umt86?cNPhlG*TVv__ha!hicb6+*c=(Bt@ses-jd z0ptuZ_CpPPjua8kOsTQQ+p_NMjMGnAN0sG!Y~1Gh7jv^8-Yp801&gOFxFyE7M2bhp zF+px%^ijkwab&c_yItWqFQZ@J5Yx!f2^m}IDE~B7+{z`n$nT>BwErq}jQVacNb1$K zsmoY0lB0kgsF!jb5V+f1%Pg3qa-tChG1nJ;YcSAI6;)eC&;mDvN!3%=O0gpwDq*X6*LHFz*3_J^!-}DYW#15o~FHGh7!Ne zaql&{Im`R|IF3mg5+pdakq3@wlYr>YR397sM22(3p};~0MoWy7!<@`sLIuXB z0FT%WOabH#dHz>)Gt}BBq0z>I0@Aym+1ns5iQa2=IJXCcL^*IEe`R+t4X4-?|IZ8ChfLqH!@&gbk2}0Gp z^~#bOd#IY~M_o++>y|$<-{W5V+_Hkiju&8c!m$|W85mSpBtl5z$z{3RZcWs^gMqky z2~)XdY8@YnWA55~zwmzNc0`yXz0C#;nru3I=&m}tsPRMwCm_g_3>c!sZRDtqeXeN7 zuFOtYJ@~TIMgS?+^QQU8*n>s8Yal9MqFW>;5=`9v*uQdFicwRs`k;$llXCfZlToZv z)&fr|4wTe;8E$%}^M-57S{C(?TD{41tK(^$E0$ok&9YJQ zr?V2bz!5`c+{h8XiZxnV8lV3(G(D^A$9~8A+v|=N;7dPdgo;XXH7cLSz}XL9%@otz z`L|+zkWg-fG937*lddEpw6MIq{9qrX4EYZZJS1p;%<#ZpU<22b*W-0EPY<)D-Dlr^ z^Kg=G`bs|P!Hf3v+;O-jV&5V zd?<@r-Vb9aZ4ZbQ4?$fAZah8CjrY1Tx^J2WuNGCY@Lx(ojNUi$_&1C-?C5q$erAcZ zh^kRjBaDGS(Eh%=9Bi#LHx)Fmj(H`HB_h(p{Z?QLL}qK_uIUM(t_Av0H@OW zA)`4CGwgH7bFHUXwRCjeXQUZo4WA0MzJIUP9|%*c`!!OLvQ3%SayX$IdrJ`QeT`Tb zrcOg-TQ+Sn7r~ytY>CPyI~F&kJ=1c+z6jy05%m=SOcIPnuf|22zWI$WR{OdE-0dF^ z?E2r+pEc99dmb*1D^a@J_?{`Nuh|pr{cz!YeQ?KCN$HcNB{pYhbFjNdmDo+R*k7M0 zARJj-F13PuVI*|_sr$27JJlA3~4~&!hC__r~AY zgUSZ08=o)|i{*0h1Ull4Rh=zjHP(zdQQjL1)dmj?e^0SiSU5eecPrgGpy+a-wCt4T zP0o^;K@KhHc#vOq8&D5HQ%U5E+AMvxjV~&GqitHeu4)p3@iI`%U5*sXr!HnsY=i@M z>&P;*bmo65I2a?r9-4N7VfOYtKB4Kat2ob)Tq-7b)N%W2u^IZ@5iyQbB>Qc>@wP znw1 z6o9ETvdZx@z4;mqaXqOHv|uSbOZ{N%B0F zNQ(@M9&3J&_Wq)4F>e|5O2rq^w)yG(^=_)w_)jvOl08x4Potb~MY?~6vQe%lkW)5= z&rCrlnj1ucFiPZz+)I7pwm4|kAkbi)CSjeZ6D{TsgLSf;&QjXj4ehhYZv{b(AQ0qb z)FdCgj%$Uk9u2f8%BPLwDRxetlKyde*9!UJ{odM_kMg4cuNi_wOEE_DY2Dgfx^cgU z($&Auvvh;9yl2C*WyFycX7stWr7{AtK4Z2ZvP7vE+a$f*YbR`o{8c>|c1vpi5qb(H z${_VWcJ8iO#cC+|f|Pm64hTvriHe9IWd8Ev!tfZ{3+qo^53Qp#|G-S?zhc99M`mFL}L&cQv9O=A2Su>y` zKc|f6U5CZ=LWni>A$jbmm1`+8j1h9w*ktWhni!N_{BzI8qBoTN^%9mn^j=SYepS{= zEZ0vJr0=rN8FLk{+K1oLfjwFC%=hyGeHKO+^;`H}mA4Q*R?@zKBo06z!CrM~+h z^)A_Mki{u?g#J&cA%E-vCOiesiRR!vd=ETLJ2GQt@dNEW&#fAl=v#m2E}P0JcNx?{ z{UHh?dO}}xYR1;DPT1j=HR;|1L^EAa!xddjkrk-c$Q@0|>Fn!|$-xzEO=%@IS6NzQ z-kO;y|8|$a3Z0@rK9|12d!ssPRT`de zYmTRoms>@OZ|)$Izk_ShR88W-_9MI|b_Qg*=P#2Vjo_?fyX7-9yggHPEgC_)o|9ct z+Hdwxy^sG+Ra~vR7-p7=JX)sS{Qor9g}ptQTy3n2QR}-~mjO0T>8$_Am!TgfeKHff z^#T4^FCVgPo0C@)AA9g)b3p(3RcpiCIVRcStn=#y|sHoYgDx1V)?&2Q;a7{0Olo;>+BzVM|L(ty+)CQ~J-4T}$O9#zPO}^wh+~#Y>qf z?$MeQ;-|jZ5gDaJii2^>jyU;b@d;-*Y`LJQ+NPg&&{4kg4%tC`ov&!;Yd+Sxa^*nk zC-D07HwhD5tyNwu+e^9qtNoHC_a+k0dzklxUv(KRW8*^83%S`d{b5>Lf;YWHkAHz& zGT`J!ur#D3l($?66B6|)V?5rWL8RDO)Mc#U8^!T4b%*Irma^$vdFYeL$zOOgXAb*W z=e(m+<)xDaV&2!x+Vz=wBnw3S4a^x_}*P|4)sg8NPv zDx@oX@cF%7jFPq31B6G1g9*GIro{=!__f`R3tJeO*jZWI-`}1`qHhi-tIEp0^j;b6 z1!8GS$gZW0AAA%WkXvC4=OtTWhPq1}{85h=-!bCzHAlN^qdlCIS;b%KSmd~;Xr7Zn z0>RElP;~MXJioE{>p!@-CJuOhzor5Cbhoe|KJ$GyVd<&n2_xo!hh~8T$Du~w`N@m| z$>_}eNAPn_&*x83!yjkb1?|IieLoN5xDITtO6S8S8>P2ut{?2ZYZ8MNoe|vx zE}&c21mO`HdtHdxCl{6k{@ah-$uv^!RDEzkp-vIRT}~8OyF7JBNU%z*tgz0|(ryyhQ=86*quD2Y#1`|Efj^kAeV1ov zA+h0?9o;Se&SYc()ONjE8eY8#C#yFjrXBF`8Y<^DWF88q3Y zaFr(@Pbl^&Zy+`UwV{{PYIB&|Q>YRnX9rrP)_Z17l=AQb|-qEgSZ^w zX$-jFK)QdCEQDJ1QH6aEvbggD91#9UD7IMLeQmkrhlo4v=Es!y^~e6#-~vAbl8vzF zzJzDTL?Zqn7${<(@#y4vA9qB=i+RyuBH%BwL$#0O8efdgQ-G#@$2itB-N%h}zBhXI zIh@T5bN(Q6W}+0^bO_fb`RtB8q|9{sEd*k%+5qx?m?WrXUX6gFz^7-STrK`(%c55uc?pYer7`DhGOGiX~#l@Q1 z!MOKO_O3MbL39>J4po73|COEg7P90+fPMmNDAQmg_ zULJ{BvgO_XL7wymGFgZGd*BR<;uaUFQVr^Q$uo_rhX-f2Pz+Jo4TS^|IwxwxX!fzX zL%VMv20nKKFG;IKkq!&`7SLcU)kHhO*CSn#{Vvvi&*vtnAWjkA#|aKHIX6iUN> z^*OFt$Ln!lA@yO8+>cLhwn%n_PCOc)cQ=B?uE&}tQnOBWI6RKIhFtGzXFwr709in$ zza}iBgD@#+j~cE_w;V8a91|C8HZkFt8RGwf}jI&Gg5|A?{w zyN$Q4AFA`q!_`i3Qcgczb+9u3?}`duyS?E>9q-Jw?>ag_R zJ&HO1#mvEo82|jCr~_h2#F6G*>>}50YriTuh&qiAIH~5;)-l=HiGK^+GM&8E!$%;i?+iCCScB)-*#|cB4#_9Hiw>ODbyt1eVyQ`KR;7=yxuKx9%aXH z2O62ShTuh5eZj@eAs38mXAz^cpoA8o;#)h5p5-B7)(l2Ry(}6<_VD%^eA_akOBd*@ zm=bcG*gBr8Q2)F}dirI>zOP~dM&-0a3sM>a1RFJ73wMZSKGG77gKhK)aY|0`Q`{Te zwv9{4AcE$o#jqxXF>O3RV zB9Y;Ly)1ukQ)6GHEayQWL>Rwk-A+Ivi%6q+ zUMj4JWx?Eju^zeW6?H}O-eprKRu3}#1gJCe`#U((uVX=_)wDw&o121&GRp_JzOot> z4E)kI$F79-_i$c4e$C>_rO6x{xT)^3UQ(H7J@X$c_PT>>u@e1)%){Qj8)ygy2re?) zG~{oMLD3C^ret6!Sg<=87L-!etnQS&! z(X^@R_gw|*c*d{8#08bW;+x_3n)!&Z;K%G*J|yXPU#eBXpk3FnZBtB2{t{LGPy#N> zCM+7bZ@t{LGr^=SuInVF% zLk==)dwly(W5V06;U?K4KH=GHS%OB3#5m}EWz@6m`jnGP8Bzu%_>p5T*AN$Hckeq3 zOKXAC2$)Y+&14T=!UqI!d9X4&qp<+7Ylc|aH-7xRILZQxOgRdfdD>HY41I&|YS8_tOneyY#| zAM&4Ku(I{|m+O+eTgTf;Q&n^B!aY8`VsrI!#K~WOo*czYqM~zwqPCO=>sQ(CyYW(_ zY6=P30_&ygkRmY~?Y`-@@3U-7UMThocYEZVv~=crKSXxj_+oeDo7EgQx3J)KH?Q*B z(%QbbOPGF%eDBu>|B}Yu)QX}QjwVnYW;$!j9Ty;gq7FO0t^M*oPF3pBe%U|tIQ_;| zsYA_&pUsxp!>XQ2jSd1?I;V+_lN?3k)|V@Fu!BCV@X|JeDw6JHCYg$FS85OW%G|HD zYx$OrBJYb3FE0*D5?`Vfxs`yLwvK~B9;J@C$Tk32_ll(8}uSVwDbq@-i_jv*XF! z7wh(#_I3{mXyv7VsD{++m-s#UPvYBU$|ApS|AKspmUx|mwF=`lujR9>I-NpYxS7n! z4V;HR`NP0|vrMzwae64EvO{=K=UlS!C8Vzc>vc&&2q1MnHZNtHtjfptq`Vr?t6DTj zb@!b$Q|QF>0}W*_iYZr^tk*Ap{y(a&GA6DrOb>L5Lvb(ePSN6C+={!qQ`{+1io3hJ zyIXN6?rz21Z7<(uf9zxuCYeb%_mxMkoL4GK1)kY4WjhTv#y0Od11k2p%Wewq<)5Kl z@-ZG$o+^yQ%Ek6T=sas6nT`J4K6-5JW5A4e8_2h!qN4kFAXP;%0sdWLF(F)aLlb&l z4pD9yP!vu#yIvSz&m-Yq&$;LJI1ZoX-+ChKjfyYZr0_7;c?9)IbKV}U04OjZt#0R!gE+$_1K%VFAJXQi#4nx&;B!B%%9TnYq7 z86gjkr@gV%b{*R#=c1a=U{0iSBY_&xXi)dmq=39b;=|O(>f~>ppLin(`1%y>$JGNE z)%3JGlqyzdYv>X^r9h@~v=)M24 z`}ubL1+!kNvPK9B#+49>{eJYIZdULM3{|6?eOte1 zwudAs&B9-h`3IS_xDjDepA5-AGD{r;29OVMp8y2fpft{XU6(ew~D26k({}Jw8TzxPJ^Z zw>s9R6_Ioi{QFhbZRv)egT5h)kVMP7^}F&^Odot92$ISClasWfgVcS2Gp(e9GNqY? zs+!f%;0!3UV$Gno&YvT@xFtO`TC~(?mZ;;rcPsii639voPq!yh@YdPG&QZh#a)vvZ z-w}T6qm3)_eTX1|q93o8B+y^i9@nqsf14@3S>QfjId2}m)s8DRJ}gE4>cqpWrhAXXv9&@jdDVAdHh44<0;+IwvYT*c5xrT zBE2ts`a_<%K6FGK&&6M{#@_F-pzjUMP!W*5nm$*vW75mxBuOsgLd!2M#ayrvEMX-p z^dKVC5Nw2GDJ?V14R3N`jGq1M*>5vZ-XC(8t$OUb8uum_nqa%E#H0)E??Yap3381e zk5c4Ho%yQg+AK@W_ggC{=Tt^BCTVMl!^LvN-0>m@X5ZN|INa-{|CZaE5TBb*5<4e= zn6qKd<*j$li*VyhhhbD%tn^mO*j}A>FIh;c;k@)@P32hC9<#b z;PcBESP&@Kpo(-#57KtLtow0jBQSA+?+N+kmR{HAn5lEm=Ir*Q;c?7iQolwIZNR>E zQ935iRbK;@xMd8xxg?Gph6w>p>|rvpJexqH*Nz7y5DXbwl)vagS?IPG+KYhGRVucX zTT*{sN$mkZYC5+I0ndFq(m`*ZEOFs8ngemm=cSmM%>oJEKQO|Oy?*DRm9|m0=9#Wk7xx+|y9!|DEZ@tU0AYyI*^)h>_OaEHuk?Pz)g=m9 z3eNE%UoA>hgGM|3izJ zn(|s&XbAp>_pj)oi|+&@@qweGV($p~W@ct)<;S#4EQO5Za)#1YN#^ub==<`$_0=^b z7Ujupg5xP5O00t6Qg(&0bdFtpXyH0SIZ?V&@gkYv8Gf_X8}ob!((lRRRR4**M3N z(bW<<>JQW*%VA*WvueHvN}-uY!4ZmUjzf?e{HSopt&N`9~tpn*%dt3O6)frHbx&;bO`ro*)qR@2XF49Y+;x3Z~|e^EEJ- z15VK?_SGC5Un_JAF3F;-Aaa+FyXw->zj;X5MeG{k7X4C4?of_xRn}G9yK%Q>#|tt} z_&7=TX^vm2YASJ#nfWk#0G|0TuKP|*6WpggPfC|-*q@B;V}S&1y&~^`Aq+q8!Ds-f z843{u@;u_M`~447RH1bC@a}0=D~&jFIn4422T}#$3Ok^ z$~4d=h`$~PL||oV8AG}cxL~E=KA5J8P%Y6Osa2y35g{?Gg+doqKv(vDQlgg1GUq~v z`-+dm)@%3`ynI{H193koEUj-L7)%gIR@x=7>O zDMhyOV!8D#&J6nt7J^7iR@`_mlCKd*$H#QEv>!m&tVPD-(#sDlqp_5S=x?5CNa%9` z>B8>`)MF`N#$0UhMp$YU)1{ei1Pf9X+A1f+HLsp-Z5hNH8h$0%j?;0APB8h%f+hZj zVXBeOlkUmkET{;f_a}00)gA*E zi6v)E9jIirx3{ap({&q`16B%Nr|PduFa0Z)ZlniP@wd@)2(iY+ZY8V8b!YBi@#nW4 z2vnULsqF=t8&kB?A|S+`YGMcFDJ#}g=t2rgFTB!vz7+)Jb|CHxXl%INWj|vza(hRS zOd=y=FiG^F?_OkZTV7e!e~bFQL8WIIzqJ3Q9*s%l#A@#c*Y|Yl(7`PxY(Y#pxE62BPT zli5#jZif-iQ|6JIK-E>z(R1(&PFm|*0+r7WJ-OcYIQNWA^w z$iL(+do4g&7$zZyi)~*tNtzRax?V~>LNnA#jf?YUu(#D~pU^pM2@vdRVSp7v`TK5# z%ZW91?zf-r>8;l3t+KA?^G6=LPTV}lDl5nP2@oN}6!E93l+IezXUmIkV*3-J?=)LT z4!gU%r^yydYAc}bJeIZ@{*gKb6uEwfvqa@M)WN4-$`J0I$AIoS8ElQ-0HIlcnykkS zii&dxpT5V5%f(Gmt-aKiE?yPf9$GoKuAbe|E-#uWQ54-lTH4yGzKNkPyanDA50JYg zdn_fls`lEnFG7kns{e6+l^(c~JK(qe>$9ZyG%(U|WeT_FVr*<2A|m8f3ze1A42Tqk z!Bvwua(Q$N00tVwq_%F{bE#~fpGv!14vHlaFuOgSSm>7qGr^Bc zNe)A?w9qTP1NI*0+)+aH&GOIMeNi?sxM>ksVYB1=!Jx!pU5||ICLLZbKR7R;KP%;u zj8)$YWp54{gBKgV_YUhME<6#h#w@O2dB}fZp5h zW*Rl9zJKv<)o#&|QFlqL&MRwe)%0Rc7WnopSf!Mnkr8@#ccIV&lCg7q_N-5WP+L8G zEY-5vh;N1r0Ym7&({*QUSF#$zx~>(O|NF3r;AQi4bCw*Z`?Z;al$V#6lT-bW5pF;! ze4z0Vx6MY5W|01hjmzb>UP7Fci%X$7YJqHe%2^6HNT2V1gggjx&kuzZ>Q(G{gu3d*{vc<{C=n^m0KQ@gV930Ch&Rdzfo91x8SN7 z^HjV3HJmZwPh77(4ga?l4jTtYsksB z5iA^k^{8z9zJZmIk%9h1fS*=cNDYRf^5Rw^H%3H6TwPrqiu9+*Zp?XJ0caH-;lC#* z9iH#)<0EBL$1p=g(8EyBtRmCm}34I9y|A%AAdqt_FFM@NYJfvR<1o1~FE6jC zs3;9qu@@hqL`?3t$RIg?o*Z8wly3prtVD<`#xxL3TGY?Z&eGG< zTM(p!K!wxAQFw|#XI(=AOo7jAAVRqI(jl)J36y?oEb zeu}V#wf{1jp305Vw#i@bXLZKNZ1*C~-1_>ZDl< zWfq`GWHa_>OVbrM@1JE*Fd;vt^?j!CdS6MHQwLa8k{fS5J8P4t(Vkfh$jy zxn^FWi#7ri0v?Nrw5h477{4pXx8EQ{EZ1Qq6>hTJ;glU21`xRgdvq8H#>>mgIG-ch zZ&dO)Uv_^(|MIz%K6-JvIZQ+TSjA>JN5+3`QSa_5WaBy3*WXl@A1OUp<{^mv*`r-=_QE@Gk^fKSFn21lom7kEP6&x~ry+?K!u)WlWg;i`aH0 zLXM*2$$uYfaZ#a0CpKND1^Fw7Dso_Yd4*phMq68(A#r5W&P+^Ifj{H3rN#CVH)sP# zI@S(7@U&_EaoDlSS(F#G8tL4! zve6S~4<3TVk$k(Ps16KMdsf_Vty7iDJp`zq{;?I8ML^fOxV%F@VGRBnem9;g7XH6=)kyDJ; zmKMeDGCzr0=n-TfS;Ypuu#uwv|IOta1fOuI+zqTN$5nK6PMurZbt)aS6Bn&+A3V`T z%~@0Gv>lo?jSH7=Z*O&0KckB}IXU4V1Wo349$lEH@IbR9on-;I=DFjodIYODuOV`5?DQk7_B8!%xbgHcAX!5nDSG^!PO(&6w)6Z`OB zNH4Ud$4oWb=4};vJS-v2_d9gN?x=q(#{BhO2sEam<{>|g`iBP9Qe|~6H4G;Z3sP=y z6Fl$!mJWUUyU~!x)ZT~IHXmUk^yO|9g7@t>r72=-zN;xHMDNhk zG{{8JQh(3oIf(qrKDAKb^AEy5))kLk5v9t?+M$E}DXGAWQ zdDdC?9*aWiYLVNZ`*%u_6LpB0N)fxG_(gUX~?-6a}Oia4;=gq-n|uq3Kx>xLhA78 z5x`2wkB_@K;r&kjP$41jN}kH&b}7TL3jW^E{Gk^jr(ARs)K*^q2`Lo>3hm#ruE-p_mufxNV0QKy-4hp=Zq_0fo@bI@r z{NK<8&+_5W{`i22+!>4>h$Kv`<&M7Yh#y`3t;-va);MWaS6*%neAQn5K_>810F%y~ zR+OIkQX)Z$a8SVef@}B$|EVQBCutk|H%Tq}Vm|LyQuu9i2F9J#&+Bm8uC+n_BhWH4 zN>Y5}+x&O)SW{C|P(bnZNIG|Nu*QlGQ)-zZVQqK_RjFk;NGSWyAF*~FT^${U`HzTS zH~|*K!X8lhR?#77V|(A0xl}mw5z=pO&!lp`bfs4V34h>YA(KQa8oH=8yQapIRk&EJ zxI7)S874rTSE$XJF=S3$=_`-o4fxjal$1!K`n+bc3fK}_>9Q`9qFDJhIA&fwT~2g( zqcJtlvt&S=Y!|8oiH$XtKjJ0t;d8n@36{8 z&A=mr)d-$)&(8G+UVpr_`W%C|Q!CBrC`$YLn52o2Io&Sv#B!_E=(eua!~hTma1$p8 zWt~j6u(r5($fl7LMu@p>S&HE0GHGBtzeo->q)DZemWBp4xYvpQZx|gT3Kz~L&)J2m zg@pxK>GeIkIwU^G<)j`n_Byg^-P||4jn2#||jX=hAMy^QRa8b6*4B<)gRD1^dW> zP!b|kL@ca$kS}^OzB|26gf}AtTyQVl2n~1N(~EcK`{<#m%>Id{;IOt!iW)C&q=l$i zzwva-7H3$ik4vUeGcEz7-y&w_=8!hcE+L1dpx)NqS04-QIzK`1Si4YQ(tY9WP&txz zQ4ABy?bc&L4N)ss3GL5$-lP0;;%tabq0$Wn=_f#Tp=@}h`o_Cu@1iGQKp*rmY4MQL z@VW1RpNkTO7!m3xr@V>!?aojvLt^QKAV^eU(~c7zju^(^OEN1LDM#`6l&i?4-kB2z zcZLs5V{hK36c53AvtyyraBW+g=fzgPmx|#hqzhNi)fT5>2zMEou^QtMs4b26dk!%8 z-%nFMUa#S3k5oGy%}wyX@jTcs))+7TPMuck^!BpYnzLzKcNn4nn$dJ}db-x;R%_(< z3@irtr6-l>puHI(PMSxxEc|cJ zS3_k?{zRQGC$`W+F3W%ap1(ewQSy_()ObEzYRRtj#94QD-4AXIFH5Jc_i$ovt3&mh zqerf~x4!ty70A#7`Nu~1W57%tzpS|ok=<%)(I-*65&I#S@9~ZyVpt2W7b5S+PSU}2 zq2?>U$370>H@Aux)5F`2(%A|!%>;OC)!(pshT?XR4IhK#{iO^HP=zEeGh)FoQI4{> z_(UgZ$V}|K5W<7Zvxo-2;iL4J#2bj4iq$o&&#afOys=rzTufDKMW-aaUkUG-TWeWp z)mt6MZnW;aN|_6%)sK&XQjZpAWoK7e#2|JmO4Y3T`!Ci!1)a+ydlS$IlINIAc`c%~ z!!!Y8OiL$usklSgm`F?rXlJC#G|DvbxY*bmZW%-{XNu>; zf)mpgVw@~ppn^8iV7;8cop1H}{J{3rib1FHE)Yv+kd19`BGc#bpm6?Kq`v3qhVN>W z1sVxIN@h{VsSI^!-}FT1`S8Hm8MxoWea{~vDlG8!>`VyMeKzu52Eb+BV}gz!PNbwrfZLNFv6f{Pm*qnQiN&_&zV$=vv;TQ>W5}>sT_V{ECMVC?f!6QHdp{ z45}ASoPny?xeD9%ZAhMtr7T&ZP~>vbh9efCE>k(eF-=2(3+(&I7sAD1FA?*D6aVSf zYf|MaI$ZMDUP_`VA_9Ud4}p1Yd3m`z^o8!*<9xPoaNgKrt*Km+{5H+#YOBlss{<2) zX1#^-N8?ITP>mHza}-(e^Z^|vydd(0>&np$jXI=qu@a8T{Z&xspPwJ%)3H7f?ckjc zJm3`8L4Z(0L~Ly<7pAo`@=`=sF9K(E`b&nl~bks>~Ru%V)xIdky z2<#88binU{i7`VTJo&1#7WJ40hqYuunmQgVI0ObtXHobIPZ7N~sa)NH$bA4oSYGB+ z!uWF?X&4+HADK9~mRyvglqPmb?_?9RTL@{}^uQ!)4i zouPT>-PcP#fbBbkt*>C+u3Rm@OzStzTCW{L0iYCIizjag4nXajJ2R( zgc4p8>TC7j@<1Xi()n!wI(7GWnqjlVO^>g{KIh4NNt34Ny=v1aFEC#+`diIn>eqgT z;X%w{h#Asn{g7oOghN&-hz&>1zw7l)!lTQ#?JO&+9ebKL~ zSpAG*9PbCg^bbD6ZBBjbORy_6{(r0_h)fY%oSiMG{|vH^5m1;3!(mC2HC0trT~lgv z<>_!a(}^KFD%tV|U&6Y#^EFn5=_fgke=Qs~+)Ic9&?yieOU12A>yST|2&QK|omD}%v-HSx5F1ZfJ=XmKWNgm(>u3eKK1D^n?5wc)@G2U4G_Vr(tD6&PL<%NOg6)qYAm zgIa9pte=X@D=k)W`ed-{0LtT^*IiR()gOa1jv^74_9wab?I* zXYqNEVRqKO?zr_TE50RzjTSS=&LIPkNrN{jMB8kHU<|91*3YoOo71^Ji`BA%FlV05 z+P&5i$Lo?WDU&7a@CTT}k~jv9z90+5OOmGyyP>sRF=@{d+|Rkl_~^)`FH8|j9Bp{r z9Thapod$D;2&|p_J%{||X;|-ca#s8!&6fv?h}!PQU}R?%^Pvr1fy!s>pyGEBdS1(j z6ke13%^OO9<13P4p2|9D_2qZ1a?sgu_azY?OyTPV#PTe>CI!+!BCbInmHw6(Np!o% zUCFEkdG5lupt-rZ@p0LpuYAj~+nk;2{2tC@eC74@blk4z8>X3F6xMSMdB+EZnd2v< zn?JZJTMkROV5Lb%ZpnyGJ`K$A$G<#OHh1#GE?f|lvK1{+%stzlUmX>MD4IK;x>Mqe z5VmX1c0>G4#iL;NvDc((sWsRQTR)2w%gu45!|Vz4|D=XI1gEg}Tg!u< z8b~c+Dlbtxg!i?nt{KzeS?ucr?Iq$ z8%7S8LV$9(X@ee1q_2}JtR@&N_j^$aa%0;zJQ1PH;~L8$uUqjTgFfu^e%fT}bXOJW zEvU65#ObIVh&>RY)4J;2^5vgWc5`GV&*S@toSHES0=SDohR)oZ{K%NK&4a?l;m8tI+<^Tave@z;e9 z-I{NfNwQoU7uyajhoyN(gWYzl5&B7sRyOA5$*krv%O?#Qz_0!f-;wtbUU^_I2`36F2TFl3`CZ#tt%8kJ#pn*ml!F2E*vS^b7D{=1Lel%a{ z^K{Y(@8La`%5k=rYAeRu`3Di<)5Zz^Z1rWYZMa-T_;aoBZ7~h(HGF z%JL^p=|5lHf&^f`4U+shx%jO1=j>AyXPi>mbv&XY2&9KiVY1ryw#CU{z4t12YC?q% z@iF9=2B=+!f6b-;`Ty<(02LziMniyzUWQe+H|2~odq7IO*8-2@%dEX=p#ou`oDkY& zG*wo6EP4%A+qJeycMlNgcTNyvrhI8njXn)^X|FWop|M9zH^B*o%NgA*UBBb=+4nle8KyHYnRpf)D|e&?>j zj47^cbqOv$)dS4e$bXlT9>3RLX*AfR2`2$J;&EF-R&zC;n%7_dJysG+ZG3`xh$s?PFJ7mN_;@ zOtHR-4V1)ME}6G|e4u7M(3fRh{+35P&fET3`MAQYU%x+Q>U!nT#??``v!jOKA2GTQ zRUi@LhO?16abpS`I>S)mlPx9sQ4+*>CG<*cE!k4hJ&(qR!A&02A?vYWH6iP*2~H%? ze*@$bS2{!D$gacJblKKb25;^inzI#|sN5b$4pI8?8oGceEYRe#_SSJgm$3qwiKoIo z#VJrYp646gDHAS5%KGYKQo~@uqEczd8Y?*sJA_M4L0Hj`3}2lzVwVHAlgQ)*?O$j- zz#04PI+X+4D9cFz>t^h;2;|}>NKvkFRsXrFM(G7BHVXT03%I)WImHs983k1wMZp?Z~GcaafllyT@^dDnk?gcjZp-?b|0xW4Wxo$N{l^S}()>r|@F z)O`5xVXG==im}@d1c79+%HD0^n1sOPXPPrf)yu>)G0iG7T}S0SYvIIp7e)7JTaGu_ zdQ~#$1CJP-RHB8dm$3D>@540UVolM%v6|I)&SbhvqbJ|rJZ3S}$ND4#BLE+xbbnV?#5&!`d))`0^RzHfO|e(Pt9jc3S6t`Nu~<+CR{=7mdiV&>nG!9n_c&JzFaS`U*= z=G_0Lfc?z~GJ0ofWbEwhUg)!}51ZRWxAnwD4--vKvjhdDm-Dh|0^6+8)V#qms3$BjHb$-dEO08nC3L6jzP%MScM?O z$;2dYbIm?+QLeZ;C;aZeerdtrCuP1#T_>^})PLI8L?(uz6SO}`RJdEsO?G%@^fO)r zOq|6|S%5~lbF&tE>WP^T=gwEf*31v*zMLm<#m$i$oE86F2EYEr8J4J@^n>ejhzNEN zv4mp2qJ(>5fw2KL-KSWoMD?`^TZZhbyMaUonT}dK#O-oWp3R8KeFb_>5g_ESgAQ&U z_x4O;$Pi5iGJM)dnd;32KY=zN+}xhXxiBz8`vJua2B7A*F73~sKZpA(h+y6aAl`Ui zPkzf1I0jVclc7%-eJ59o8{Xn#w;^YPYqj%@!)FcCugOIm@4>J;EG|^Rhbro*Dhnbv zzKN0$NTAO_hJ;SYT+e7eVn5xMWxyrfAI%HrTF)A|iuC!Fn4!m{R-HC$#ya&or*{(s z5_#WAkjabP_40y%yfhBZzEOJkb1yBtL<~??3>!?DXpsZ`&i8J63=%OHg&8bZ;+iNw zJNX@+(pTQB1!_MJe=J^}3^ra=qoatB|ALLckVt!XJ8mVfdmdle(R`AxvDkPu-k#NO z`~jp^J_kfHw4W7sY^B)|i$SYMrBpaO>c@wZ3)e5nVLiQjA=(JN_(;J3hBE5To!fG> ztTLns`B+hs-k5Cd?V_nAlv8BNd+Do}&zuyQzIQJbL@$$08efR zq7@XVZ~H==EJiXvOl%wQX3Pjbkw>|UyP1wA5ueIeF9ae#dh%sX%uh~202RJ` z;?R7#$3y&w_r`E*jy?15!U9$OJ{Y5TStC9!+~&Uu=D`k%UczrR?Ey1-4KfvRf%(s@x&!SYlX{i0Ozd0Ysq(_Zc+sflfr@>ig7ObL9T5dHu);bgL^qDr+r_wRRi zLn2bMXjOrs7@jtJbknRFyrRE^dg03RzC*VyEAH~rl9BC>mDt!NM(OMGPOfr7V)Ey) zM4g(!BGtla^T>hRS&M!c5t%G%|86NS!*fnijp#ahygVCP2%#=m0bk#)_zEmLd`hl* zo(Wp?dJ=!4>zf-H3;PPKn=#W2@0P7)c>-iCow_8*e1m$L_~A`EPW%WF5)`Ch0I2@k zM`LPs>HSLZ-n1;Y%u1Qq@%uS!qQ8rauyB1guy}aPbH!+AjX@6qK&MNr3c*Bv=AK(x zDmkxbqo&5||BuT}M2acB-hz8Ke}9UnHBC)Pkz6tTf`AsBUTWw` z*F=iUX76;ni`LIw6W!ahb$-XaQ3X#9L;t>Po4rmSsnfHrme%{PrZ6L_*eX7`YWTtX zZVEGB-cK~#xO>@n?M4}WNe1M&OcIlzl1H!yROYIDNEf+sOC^2BkF~V#0F0fSSX)~w z8!+1AQ+h}KWqp52>_3 z9vTQFmB>&|^dD|ptv&b0ALN8GXjJL>^~~F>cf6##bPRs1&}y#nH#fEIe7TMI%$+CW zPt@_WdWO_!A4<0z8});WJ`fQK3MyyPtUnk?h~iY&t^>6?d-SNrq@zMi3ySX4%1T?| zcI|v)$FT882iZY+#Zl!`!D3Wp_D4bF;2c1Z?OL++4}wXauW?$s1UA3Z2^PM!Ou8C- z#1~@w#QiOeHbWqC(qzc~#$jgr7?JYSlNSIAnCR$gy2)Ru|EZ-=I)8)+)f?5A6evOx z4ZKbF0}KvK-yS*E1wK_A%c4U{8`kMM?aoumad!NJB|bhpbZA{2c5W~=oVBe;daPtVoQzg9V3JXo>^ZEL;!@?Z zs1AeqpY@v`0)X`J-YytU?S8HknO6y-pzzc`-G?J^WYK3MaaFi(+ssH!MC&Dz3(#2k?l1OkcrPUUML^oqQ1 zs9Z38(ASpM!y=YDsYJ8u(A+mh+WymL{q>LDI!fTpA`g*C=0*NjmV&P*n7NZwt#VxH zx9;swKf6t8sXbNuf1MqGq!O@Y(VOT52fS}-mnUpXFE_SP^K2|7tezNV$#s=4zJxwy zyTOOQE%<#Pju!7TsJ0L(|22Pv;bDcrceB_{YEIx|eUxCtqeUW12GTOE8&6`pORF_m z9({nP^78UBsckL`#1KS&zuJY_%OoAwT;o;3@@jX<=+ob5O`P48V!aR}g;1Ip%PCHV z`ttHJC8@$@FmF)3vv#NYEG0JcA=hlHhOX85WN8Ismil`E5MV%hWO$rLcZgfFFW+^( zc?DLs?`L@At(40aJ`KrvE6x>v6nwubR51)-Fvp5r?>R=SAdJiD3bo}TE<(@{hSB;%$QRbv%*v*{%&T}=|BwCO z>FMuWbXahKB+=pk)5L#=iVbdATs|Xfv?6f}8ld)`v$7lbJXlW;rP#9az2r}k_rn(-`2LWpTwsV8wL!xaWy&wX!j>*{zIO>j@No* zsDD6xpa9TMQ0*fA7#d|dm-S&>1121ryN3sW$8ew6I5~?Hivf?;e8v&oFGM1+K+R=KoNp>a99?=;B}U1p`Dqho;3hvzOD z?h+PoZdGK=%m}Sl@v!y*iQE*tNm0(qwvm3?FvZp=|Kc0?hM4B%MWr!sg~7ppCRlr(Hur zfARI@iNj`v%6dGL-)AyMbXblnCK(K~>2cP6H>YW9ujOs)X|xzYFJ_Mzj-_|KWjuFM ziOKg70`sx*t-!~#_J<(#d|CYYgD07UM)_P%VVh2+MtOowJPtuX?Hbz}Gjf8xjYAUPm#j6Rsq~khxH2}ervY}BRT_JU4;Dbe>Ar3I;;F_U zhlb+f;+4nXzTl^8+YX8+bf~P`4Bh*R*A_!XW!*`)M>edC{n#O+(_ttX5L|Fv%HK(W zL-DNXgRKkKjF#DhA3&$$BPHq_&K&%RrI3O9Z)iNg&s^yhTZCW*Uh!3$z`B&L{&@j8 zkcn)`rRrkX`1pPHZTb263rN*!VL3%@PutQIv3D543QB9EAFJ0@h>)qYiXlKrVfXi%|>%*}3F&t5qh9T!$2 zy6ctiH*Q0V{(-ZzGY;JF{@)Tp+49-hBUhelUy5Z5V_%+^tQr6kDpo2X?r)s6V8adP z%Vfk2SHV#dQ2OxLP8*oUlA8V(F2a-MsmynCVM}V~cUe%ukH0EC`&SYcawM@sJ2;fA zGAszOjj6L1yzbXU{RYG^Ip>2w)$KZb{_2odU$5*8O;N%m z#_DF!xWyOhW}xbpDcbjo`I5p$N=l0D>N8EM8avausMinm@56AW99piMfoze>BqPpc z^0Z&MSG)#@L7a3;hrv7Q-fs}+vvBi-kB^U5?3&C6)CnS3Is$GP6RkV?*aeejip5Hs z*(s^1p9uNrA|B{pO#T~YK4etW*f?*+KJteQxffBfQBpyH$Z`GUm`yja-getG!?ejp z^kXmv_fkV$U0etK?bC~MYx}uy{FuoV!&S{8<~!!Rc>7fAi?hnerLY#awzihZ>Ng{+ zz(>Yr-PgeoY^2~C@37&@XlkaSUrhi6m%LijXG0Rr>3Y7={S&%hhMdI#nbg;4tK)K* z*3A;7*Jw*6Ru0+Gd&-W29BqUqLy;m?LVitO6{zZRM;e0M*a4V{us&%q0#X>N^)g>_ zGY6GGV}78I!o$PKE3|6<(1U#UA9^r8rOPHtQy2$20D<)J>FhDaOqZRXo5Mta3jK%y zhPXuD{wT0f^+S_YU!Egm|3QaYcfZn(g^RP1JwriqV{ zK{Bdc?1^L*RY2(7S#`z>|6|9QHf9n!WQIQgFb2RIEnK3vni__kts=C7p|NUEU6<;A!evj>)y~FC-cLGc)Rg2>a~Gpz*#U%MsSp$V6r)-vjLzG zX-JaJtICrO$SGP8m4i)}#R}~=LKAIn(y9<3lAk*%{&g{&pFO+I!dK5Aw?T2taDU#* z^=&cS$r4g#8jVsmF3mQ<*pc>EDM~A#wOg#3R!<$yppl1@SxmY{_Vv!eyOL^^B<1d^b$g zo)@O0$R+s5GqKPN;gp-q6s{#idcBoMGf) z?&!w7oevvM`4KSKy1MHD zuxRLWnZuZ|62UR;JAYZVk9F29>fPJdV9_Yz_{@#ddzcVv`5pzVhWhW@?@-eT(Rc<> z&>QR0+pdsa)NA7jP1UlgXylHOkdP$VL)On!8JwpNt|xQf_aLFMDVaUgGR0Cxok^IY zIQ{vF&vl4AaWt8waJW_}O^&Luip~W(kleU8PC_8zWbgwqLZDDDu_+!N9&H5z0fZgG z0^!qlt0D69=FXVUgo3rn>AZ;=uZROVS0h{z*!;B4#-sTG_OvjN5!*F;ak7Q9t8b-1 z1y)wtPUT4quh;(SHX zcav%l5i21szB&=|Aib3;YRl(>ci;XE3Pzs@IjTbq3L4tj(kEU3SwvX)=XL+q53VEi zaZG>1E>GoFJ7ew<;!>0l< zdA*zGt~?BhQj4vx&v}qp&Sx~YbWlVqEz0+|^{&QX?f|pEcuKMLJ;|@d{JK&bKB}c0r#d{firc2JCBg!5S`tWo${&Xz1#kb&7KS_Hw8zinadYTT@A-oU7TgKZuAHY`WZ}z)vS1{O_aF*Qpjs8Pn6v|z#WrB#6o*d=++!)%e8Tp0d;=_>kEVFtJbTl`K&>O+G^} zsz5%f4e|v#l08*5p-onw?$eY9_XGVh7-mSF<)2id*|62#7bGH>o)hQR)l-%U9yBFN zXPozwM!*Y$BYHu3{5-j7cMt6nZbY(9W{{SecG5bx;T?HZK1^JBcj_KCZQZzAlAGe; z;{Ju!3fR=!DmLx5tVG!);>gCx+| z4Gloo#j)OjL4U!6EB4S=;k3rzJpL4n&s2($8`nb=FXKk>%*d?YYcJA>Kdrg+$XS8- zJKM`XBrs5*QL89YkhnLJ>)5cTwzjnNO)&?a4evTUyw6(AIyx}*aZh|KKgsJdKz0E4 zOQ+z!oIS~?*3T1i8ErT@*jpMxIy&T!+NQr6Ye`p0U^==aE?^xK-P@<}r#z@K-t z!1~L(LjxL3oGeJG(V|`hs2Z2hFx3WVLT@3TX>ro^_Bs3 zG)))a#WlD?u;76p!QI^r+rxihxcWC~o+woFzO718}M5mgEj#7Ts*zTEOv zov{(R{k(uCD+k3lP3s~`!#dM`lx|0Ya2*YLa$$ky#iLBKf1C4kq1reeH*}8K6dwh% zv7lh*xOV(?PvDJ~PnkRWSN?BV_kAG7wLhIAeEyka3e43qGzxQxxJZF`U60hk<@6^~ z6zJh69>}uF`8P*%O$nrsZjnAm_bkS_Nj1@;X?I>?%A#5gdg2)BI7yo4;A(GkvDSLZ zwp&A^D=J}w#ks+*@Na2nzEuI$ilIiplx4^Og}r1_x{$WS*y*;FmasTFnO;12iRg7o z7omVata37+OMB6*hJ$%kztE!|w4AZQnI!AfThqBeos`Hd*P~oNBtrDt7fl~Haqo>~ zB9)d2(PFg}!-|=3%C1Cw`Lhr3Zp14DX~bcyQf=mh*yY&DfOlM!QIX61PFyTsM*t0x z5AGQD$gNBI?cKz4-Sf5K44F?=i~=Wu7QbGRI~4@_WkDc3P*WaX^5IL$(f(u}Fn${j z#fFm)D=E0=Xj{-i+G23tqRarQ;J`B@Cq4@I!1zaqf)w+?d6UJ`1q90AWOgtFV9RF< z!8{Z8GlV_9sl25Nvug8iWcr&)qf19gK5&^M26)K;aXuyKvDX18{PsxH@T-uik~U^z zxmQ4Z7faA#!{d9;kxB~t^@)r7^*?NoAw*06uNDAW5bRU1P>bhxub;g&Urv!&p%m0@ zNZD&n`M4?_nu&=umV*V=G$g?r3oQ=$3-bGpjfUW1gBA^>9Yeuunr3|AE?s>D5UArZ z>ZT}7K_KLA_yD}iLY1;vaq>75mJ$GVTlv}>t3<2#mH*xIr^?V8N%q*Eql6gW9xwjl zt{%Q>{f=<9+Jc)=Zq(R7ReAZ|>6+Gfmc??tq<3hLR{feyiOQO7dT-$7j|eAoEa>d= zyH$`T)PNELA+1nG0!0*B2=8)Ov1&dx$g(@Ea=t0tp_Nv0sOjf14bSm z0#uN^OxFq~m49F5yp3NKj-xA@GruW|V5%GP8xC}_T$m{@C9;8$z9KL%FbsV~pl&wR z9<@HUUBFM4|{4B6(=vTcji3wcr}MPYBA5Y@OG$LG4FiYqw|rt|Iaen6s{Hh55VG@3*&U z29XStB_O<4XGk~7p`o`N(xr|ffqrRG+d*r}_B(P)HPC$EB25f51Smx9qIIp=CsCfzu7;urd1M@Q3Ho8HtP3DY&Eczst~ zP*6}tN5w-Z1(V+?7>-<8u(@4A56SH5TkOad+6xv?yktI$Ay<4z7^IMjm!^~I5e<*` z&|%K_bxGlstSn;6L$z6UX8YF^HrpXz zI8z(>SyP#$40I(*cOwogL@BeR{;k0Td&&XKmRxgs-G6|>xkqbZW41TFLP(%i7_(BH zSy<4>1%`T}!kS7*iZMT-A28F*z(DZPD&>@t4iJJne`-xf<3(rC!a?^Z0;cOr@`KL) za!OjW9|e>gG7OlC?OtlHf7R$*d$c(?6TYq2C!erD7$FN@C7?=Fwe>yEUL_I1De-M> zOnpN&!2A8Oae6Pukyjki9&KnPw)q~ zxB@8YfB*j6bmd-6($vHOfmO@sCp-G{vx^X@Accn$B46P6-OFSoLx*H=wDtUjE;^{0=yz6@ms7EUP`hJ zd-}=QS<0(Xh&5OP5?E(XxK>PfmiPSV^}UZR`n|i^f$J`Wlk*~o^b!**0YM8NT{Un9 zpE3hLHN4vbYj8}0W2xAPL5Z%Fij`o5fL}Cp34_QFN=EL2Ez_&i z8~d)wlLPaBSGVFSp{2awj5`LdUXE(`Nl}`yk_}@SQP<^ z9(fdh!C$qtm{_5@DZ>T%^6oPwQ#~J9vSZaXcCQ}tyJ|$qm2&gTS7f`~YOH|(2R0AX z8e9Yf`cN>_Cvh0$?*Ft>y`%1G>ZzW?sdas?EN*j+31r-ijev@cPb%UAS*K=1($gHl zp zr6P@>LFjY$dF>#7I5s$z`Ev60LS_X4o1YvlcIM%o#qPEKD=MMf{U(6i zEmTq9`?gY^v;YHIux?l})!$JO7SFPjT_L+dP&UMe{t2pHdlgD)K>$t6PBVgtpcIK% z)5^fZqZE29kr>+?5h>v55 zm7bnHbUc0gJ}=*$j7z&b!R1VO(n;aOt$Ug)%}fKCPu<`z@)Um3Ii4j$hxD1e6mIy1 zf3?H+4N%4s7psxBZV-Ky4~3>%Uu(t-iNMxx5TlB^7d4CJ^GBIXh5_+kJ$Q-R^r}pl zzhH)%m}eVaI_>af<=+@wnXTpqNy~@e!S!s}OC6vfBhy5JhmEQ=C>AGYW>m9{)aQC& zK*h6%7*t?=eSI)L1n9TZfiiP8h|JA%zQwk+UZqnK!sXvJZep{DNyuijdvB+&`;n+VtP%uN2Qr4=yoZ&0cI?&p^n zY^{^M+3R+3hVy(09R9N4AsgWpwhk{Bh5XTxXkm^gkA%IvUOXf}2skGpW`DUiTij=e zNEo!S{n-)zrLaEdhhCJZF{orYj$$XquaJrXAe+hkp$likzn`Dv3Q#d3df#g}Y7~P= z4D|e}%hWaX7D%709hQ(cGj%PWCS1EiFC@t0&@f}`v0DHIoM#PT4=qW75kyrvkVvZ% zp4znBU^6^Qt%&8k6~$4YaUR3xdFSdyVTTWS-a7^lfd(r1`jc8A-RE?%C?Qs}5v+Tv zej$ddOJTK={M%ZA=cMjE8|MQiQ!Y^jyRhR#eDk6KqLTB0L$i+LSk|`aos;D_Uj!YC zI*m-}B2@NaQGGIh==h#WiK_GvqC14Rk9)`CUxD~I(!W>qQuY-#=Q$yf4uyd4_M35+ z*4E?hIH7;~jxwOkpqIMf@r{-OUTXLUE=GJ`fDmQsK=;UmF}DM zOp)lNA}YV}pWq}$b|ZV1n*o(Vw$F(f=*;a>6d27916oozjmvz8MvXd{DW;3{R`b#i z&?t&^a|4CB&;yOCGTjjIs)S9l0nq(ba{$S3_r?>H8dfWtZD?#%$mVY=znaS+c(s{1 zi9*XIhJSnJpJqJ6;<3f)+EhJ!z?Bt~&LI0SDAKml{&L~luE41C>upMtTY`2g7}sE% zN1%@P!655ndLiq`l7y^-@!o?S#q;nw9?AVjAFnj1!7Yhp1`r6+!K>;SCIU%}yyLZEBc?+| zXpG`~<&1XB8tLs=VD#;*&*;zB+m53V1%B0^tP{U2?x(d?aOo%HQ-8j}(wi-x`DQj9 zw5${|cu|PUTazu}YG;0*Sd|Q%IT;XYkTi97c8@PcB+&ha6By>}v58CRvDD*(hcU zw)y9)p3`EJ&%-uF6H`+TeVTi%EqkBX5@QHyL!jv)7U?HO1n!Pon@+O$JR5A+$Cw_h z_&?b$s_FP?4B*iTip~)B{4hhImJ(Wv+ptT^pfo?8EH2!x`yxlsyZR^w*TaR zs@MOvqH>QB47DwSiYAs=$Nmq2uTJmjsRb#!i)nT@|h9_(GOv&h6zr_nW3**=eoQcRSkHEhi<^`fR7@sH%^bA zkw)6rTKj8%aJQW*ISPeRyBEWy+ov5DeHJNQtf<1@4mhbk;VJ3Gwc6%?{#*6stF31o z=f(8EIg_JQOZ7nHS>h;yz(WeS*bD_;)S^#EVR}kxCCsLX_vYFWUH^5W{g9cPO7E@0 zO5n+9eL%Yb8})U-IPz9lJQ7>@&AIA9-4%Nmv*rig)%@FMnU~@T@cqFpq>f9%K)UTd*_UVnn@S&Pti-WG}Kd_jl)1yvJo8zON zFuG(k4M|dymtqp0QKC8F?I$Af!2kzXb;$rUa^ve&wv0VZz{Y`?{V3 zMhHdsGsL6qQ!H4RJ#cDHl@IzLE*+cV6$BcFtS3;VfyR!9NLx{v8LIgZB;3q_9W+)a z{C}w+#^&m3^g+!YcuawX?s8p)<1;_dmigG+idP`m(kCiKGTi^Co;tlZ94J(`PV{Q2 zkk@$_iRm^|n_i(j$r~XgE^J=$ZAl5LWSLnuEhu2E*f@NRvrvjbma3k*@?H!G0lj~%vDJAE);iDWzKQkQ)}AVK->WXrfm+a?^4%qvXDTMrokUol{U|IA=B z^PM#w-mzuX%#jj5eFdH#N|nOEUa`)yh3ec74I~5st7^W8l91utth4E62yNuF0UZhv z8QYR8Wy1B7&qgiGM7SCs?Vx*gG#Be$8~X&X6gc4s%)8h)mp9jxYhDHWF*td6b?ublm(S2ou}<` zFjYgpY`{bl^Z^zQu68lEz3iPHz74me67G_;4xaT-Ps9Df;o>7M9ARC?;y zW0OkKXe$o>y(hp&x%+{)GlyvaFjArXLsuK?}gdm$ee3~4)?3w zAeHmg#>Q_~wKO4+BkH)m#*fz)l(+t9!NNId1DXM(1Ox>6`a#nN6!5Byfq2w-KKE_^ z<`^0>q7BH=3^tD1_h^d6;uN#F;NJ4T-p;@pzER)5dUriPY{&P`x!1_s;>AxyHbx@?+JG;lV5X!`;|JAe!sC6`(9;6ze-AsR`|89jW`r5pHsC#dr=|uhRZF+-a*H142zgQ(>2TlI` z*LviVq-PfvXe!1$1Hv>|S>s85y{>`vnPefv+2j3JEcnE!xR3#G&>!d`Ayj2?N@-**B4FbwC~FsY9Jq*3D9i!h-a}Dh z_Mt+fgtAb-PErKJLX)92qd}9Q1oB;te1!nLHpQ~UA2OQwPE(H(Ye?$jvxn(WfJiX*jojjLQvjwbTIQXGRY|+}tNsf`D!T%8c z@A2^Nc0{i4=T{w1SDJ~ckGk*H2p;bIAntb}a7OvXe0pf!YgiG5VBp}PA(>gx3>Lmq zV1m$E_13><-~zwtqmx_(p4Kz5y`wLIwzBa%s?QxAaA|o!JOc0^WD35%9WykI^MpC# z-R(i3r{$~hjxs#NI$+$;J+W08uVTz(>n zs+f(H^;euR@TfQ>n#dgc^?U(L-u9n4!6U^C&3~T3B{7(FVtrb^~`odUBK{8hmIqekrS~*0yF;Dk3?%ZrJYJpc=*v7__!s?OoigzZ(ch zX&1pbMpslPnzbPpC*){(h{H9&)MksT^=Q+h+qSf{oI1J*@q~SQ?#Y8@cerJM8%PKL z>0LF57SEeP-MMg!A2czA>#<+iu#+@u1mfI#514mpa@0Rf;t8(VWF{bp-WQy}+Ul=u zdHDKz?S#*qu4-{HvOh+6BE93mzoUpMjZ}Bnq9rhXAxETOBoqCxbd9Zn0Vy7`+UXcU z)YK2{l;MK;qbry17M3&k45@Cv4qYp-TxH6-%^=^eMNSxWIxHy)j{(3IM(7;qcGX>8 z3_qmgF}b`4G(0DSGG`iyb4~ED!N(tsio|U}jnqaAx&3v5@2-r*6JDU&+&(zyS_BnK zS{wajLm`*ZM#fL;k{IK%Cf%TPCf2lxx4w9mm?v{wt#+p5L{2n?r1{P z@Lt%e8}Ap|RUoK}lINUby}wqA<<;);puIyeMmH^iXFds zWiwkQ>dalMKN^kU+*Ip5_V6U$-)7EiM$GCIE|dkRSJu3qFjAhXkU^sf60HuB9|jT( zX})i8a-eU zgOOSULf-E>jE|G76Fx`v3tG$%cZhh0V8uQXsg6Hl3%;NT@xLRfPEV8`szJec_Lel} z3^+321;M;YRhJA=@{7x1MiPE6JP^oF8gy^B+{jC6*IA^Jx|i+yS~o4P{l}@qfuVB# zNP%l7QAM6hYz63YbAfZUhU|v@WyXI8FeFaTFvE0vG$`DQ2^;h+&q;>8WBpoBZc?D; zD;umm@wu9|K-a6Rh)hJ19j#%jcL@Fv1}w@lUnUi-7*?Xl1wC#L{src)F_>4EAoBk( zIf739MdQzKOXo93q-jC;)}elpZp#7-i!cBMf<`vCEeH^JDmd9|q@D6S)<3sS#8_OA7znZdeDg99 z6Xe>jTZmau@x%0KcL8%;qmmJO&DgyYAr_ZZ%%EUA2v2MxWl}QX@mHXBv$W^EeqtvC z$Su;qwm|sq?eF6m$L@)gfuFXW4}$YBV_RaPO5?#5ZU9H)VEYd;8jnHBpqTzUr_IkP zM?V=YRqSYr@98hfT7<;|ZzMQqpEl6o#h8#km3)rr$3%wx%%3=FmasehN2e0tBw?5g z%Z$H-2&Tj%l`I32kxFX)w-M^CN>ocBG1YM@)Oh|Y|D%pbKXCFeFaQA~wm{k7P3`5z zSAAd_zlT@$$@_ri@s?ybSqBQFK^$Mzu6(Qry&Y7s{4Xu3H~Cwh?>fxcpM=BvpIB~v zmI@8}rEOR2H`~e|xY6??dh21|5Fj~BT^;XMZFN+fZYbLAF@3h~>L6mUQqApIJXWLT z)}Ij>Lq~uiR@}=}DMyR?fA_?AYHZO>6+d%DyysvNu;Pbz2>7`^D~;5^fMioyOc!fR zjcR|3(p~K*5a#+kR8l2PvY762RBGf-TY^B7->(Z&^bSu?zpPYHQB`8pES78hQq!(p zURaP+Qngv9+oYgq@Gg3cubOO?O)_uI30hh&aoN^CQ%3H&_V}R9s)?mH1NJ(Z?b^3- z+M+sP(@&9m=`9>pZmSgu(z1yrEiNsOHi)^M;#sG=rSJWEAgApN^8o#ld!=&LirK!$ zZ!}EBLS!PRwlOul&jbFNTz34-N6t4no2&&;Bw5DxYoK!RJ-GO1$~&Bl{ka;V;1Cd z4^T;L0D%$)>pX4_`8;p2(we?e*(c>Gmn{9)dgLzjH4pgn7%sv4jGpCV|R75Y9v&1_CyPo*}V869uhtU9bF?nD2Mr?Hz{F zcnjSg`1c*2zb80fhQL8|lE|DBh+<9B2R? z@*f+Mf5#|tHwd(JJ%(ziYSXWGw(FlRFe^(~!wPIW5?)R%tFI|z5?2decI$&;9CcUS zY+b7{H_!rXst~Nye#xiZKq)tVf{Xq@h6$6j zieIuIehWb3)ayjFs)}0ILtnXxei%O*#DoENox&awt1X*8u3qwaTXL~I_cnJ4>2=z% zKIen+ULuADp}0J$BotX0ZO`pEg~l?Nw}oabow+mFQ)Q*c-V^L)0exT;Z^x+J3pmqk zIR*Z2p6)I2(`0@4_3^dN{8+zqhSj!5Io3yBg1*xn7oJrH{CEtExjTE<6JRO9gK(q0 z$%2E%Lxr!cH=H}>x*Gf0n{RY9SCQakps&Avy4r$EuMvA!`iI5dH0OW1n332(lif8y ztD*;NY`g_;QiXnl8YU8*57KvXLYGj~B7%(d?FcjMyuA;cgxN#CTa|Glp@h!*L{s^~ zav8nsY(APSpguUv0rE><5GS+HR+yP&Gh4~C*XSy%oW?P1eachw#TE;*P1K?rfnRTy2GHGaVFzle4BX_1V z&qO_7cz#vY*{bXMsQ0#&{!faBgs76J$aJL_C^oML}K?a+tmitMzxz0*c**5oAh- zn;{;Peg{j7hx_h?(zpakOI5pcgvesaeE+ydJMY=6UVDchdo?_CM+w|9%8B)wEk2#TE711Fh2UW>vr%a znbn=siH22sK0MRrYBiSF(fO$l!l+6`$u4pBh&6_p!km(>*7|)xgr`Cu#3d&u*N$<^ zEFs_XVi`afK!DH;)OFi?PQbw+mydjxE473aBJ*d2(Er><&(zy5le$AtJ=^r`RoJsh z?biS|ISkP`5o8i-;kCr&b zEpFthLmmwsh^7p!Hu7y&&L)bliQWC`&Iv-{bZes)=llGttxX;%?v@MF*9pmn(1W2)XT(bFah#K{$))XL-!Qi< zB69||N*CM&c4xlGYIS4IWe`E``%koW&2s`X;vVYpAdqpDmywln;%?AxLK4iFL|6F^KMELLZ1o8 zpOyRZM$pB`Af2GWb4#ftEBC>)Xir`0>Mj&JrNTz39U3EJIh*gqTXJ=>UoyJG5 ze0GvjoUc{H6x8{$ALsU-UY4q@s=lt+RmkhQ@7Zw@MTs9B9?l#SAqH(;G%cT~tuf$4 zzy$sUP>{_S@OOBwb;C+y;DEnKR{+fJ>$Qs&f^xb>?N~74>$fzFp~XLcxRo$DGsnp2 z%nPtE0Zzt*Tu;}jo14A3`mF|k_oPyf=Bv*3_t9`Wo>tH1 z=H|j9c*m=BThy+p2comXNa1UQbU=QK*6pv4M;j_fv4wcm>A|aD-0nXgK75coRwE>0 zL|$^H`Ocy9NpP%C4(Bfxn?TixI~I60{( zDIsI?&_k2dp~WG5IcE~^^;yzMC3OyCJ5r=5c2ndC5eh(shPv|_e|(IgpCd?*gZUCcnOOTJMaJ}>ucV^M08adL0;qkT0|d(FtC^df zm72BD*Uwg6-91w9qk*>X-Z&5bKnTzqmr=I);tQ5<4A4S?%pMoLxKJR@=qrylBcb(6mPa-&3|Sc z^>e-U)t$uJ0_=o}MQT{D(bR5nj$-j|dsYHDUER$4sfLCI7tTRVTCrejGA=#@w2}iH zlj3EiJn@2)3>=?<`E1hMe?5F|=LQlI{pawT!tepbWo4Kh+F5%~Pfu|RA7Mow0}IW4 zl5EO$#u2fCSNgyuQB1N2~(NoK2iX zRL}10>{HU?tfQA=($$bP``z7L+4!uQ2os(vev_%YKd+;fAzZvMXFawM8ce{9O*Iqm zFD&1FtQ6_fC8S-QN;B5R<<<3deSQ6^R_(E9Q{M3_-fR_033BuR(wX(V!DO?YtTvM? znngKyQ}Vdbx?A(V4r)cyVWuArkB(+r;qa0Z=}eH64x~V!>zf;?trm+ot3sHcMCQn7p*RJW1uI=>q>^`BQ6)2i_{woOCW&vC-IRo4tD;vYWHFNCb!a zBAF^FFIAQ*tAtNGr5>yuaA8Ll0ZsBrB3Pv~d|ai(4HsqNrzbl~4#BH9G>d?JNT`aSSGO&QzN4 zre7upNoy_JGRjIokfq)pc{oJLvJshGr#^@NLNlATf_tTDUEw#IdUTNA@D8`x3E+FG1iBDmqei#L zFUy_Y0u#?qB0os4cKILM;4J$}GG(RWXO3>-B=h~s_%YK8ul_8iowY{k)h>A)O70d) z+63! zhP8nH!O>~`i($n~cIRgP*`xLk5?{uuoN~3J&Q8IL!{n_d4f8wa=JRRIhst>yj|4ehh03CxS4<}QntIZXlYT6qcR(|5 zl7@{iG0$>~DUXOun{-d=yOq`Ot`rEL_Wepsh5}@x+Qs}ZQ^Z4@#I9_RkkCqiJtq-L zh%uni?5b7YkNk(uyBQmQ!e}AKgUuKh`1t1}`8;iJ;8TblDU(Wj#>O$B9~U2#>F zLfa549`eh}%WoTV=A!&|w4aimo=*#ey9Hl5M((a1d)D}7vUFEwERG|GKiqjs#N?m+ z^7BYaiW~?DX(p-4Ut1Tcp^YZxD$9I0eVNOy+U9B~D(c^Hz>n(V6^{@V&WRN+V%~{1 zU0nsxi6>nubngLB_&5GQL>SNDnx2^OqY|J6nBq*$-gq|djdVLHmp1Ya{GxD!_2T8E z1W8x~me?vlDiMX78yj6$|2S`M&XlOwwqA%Y@+I*k7i?U(<-bCMI*%7?uP&)2@e!g% zVG|6PXxb2Zwl2E*gp4>a^+5F0AP_uJ=-Guxj-sC7i~$oMp1W=e3e`2u&COL*5{|n| z=}%5hjQgXp110ED@#IPEWg8Nha+wsXYW{XR4JOVkFE4yu4I2Zmn2{C9F)QJLK-7bi zc@o(?u3u7ROI@4NWeXK)u%g6kEsS=0SWL|W#`gdzN;giCBz<#z4a|gHY#-ue0L{~6 zsV-nlMMMG@t-qYON23j4)dXE%UrQD+fc_npRjCm(jXIUZR+X?+BP-MSLPEpX%S8NF z!i-5J>lXnNu?oBfF-Sgx69PAG0S5FBZ^EP%qfUb!1iC@jDVtrIoXlxIG^L7@6fK*@ zp|=5|9*P4_t3)DEK3FC!xQEq-LGZLqL_`EiR!tGUzi`8$*~7!5#+gw?lHOP|Ik(u_ z`Bk|@m6zDHS;umW3@5_9ZO!YXxjR^SQ1d|N8xR2E=|j-v8)7TO^WM)D0`ofppU49v z-zpKn6E<4Yn)DjV7fg|MPoDx!Lj^Z%VN?3%HmOES__+xgIHV1e|+ zM<%7C75nF-YNWWaqobp%YojzFSWa&AV7drk+vQrLh2VrilLiNa3%86tceaq*2d@Cq z;uuyDH;9QC-b&3EdhGK!qI7b$kr~FXF??of^CL#*v`HC32$P$Mf!o%pG*$yR%6`-k z#qzX)+etu2D+GjqA%{y~ttLbX5i3YnC$>ymz|NHaP1UW4-ZGhBj=|U-+0lUu>QqQ8 z*Y$}x2vEBrQD?Nx8K_nS+cn0oM!g^zANd9OS&_0|}3VYr}V3btzMxA}{} zvu(EMA&Rd-6xKWCEJai4lTETN$~sXciH5Pjq}#e1bkn;#tK`0d!|}@Xg2iJsM1jq z@BL_TMaL&Nt?C#?m^Zo8<`Y=IF5Y{`2U(9DPfTl5q0rxtVE<4;~iYlTtZvK=lL}F|`??Phy5dq`6 z7cELot&qj*ewoi{T_2|V_z)Frx;`a6v}hyow>B1eY&T zA(Q>=n8j+to<2-wqe=XuvSqT`H^qta%XxBwgfJ2qW%lYzy$%L%2VLDw)I#!TuuS0&o0goM90kU~@v$`+toB7hQC)q0bu}|pFPWh_ z(hzS^ok_2%u|%qb`ZpmwcXR|3LCg$~8s}CKIV(r~Hf?V6yfIo+b zBSWV!B6=IZtB-@!EFYI;@c#3LUoqoP&>#nZc2oe`aoLw4CJeHISDFAW{kKQ|y#+S1ZeU;oYf0FxFO z4v48(E~L>!M(&Ey(6!2gi)m>D7OR>R=AXwdw)z{b7Xh26=2Cb~kPs^pNXfr74$+#% z$~u=_3Q|^O$HF3Rs!_uR8onQQd`NTS{bCcO@p~btw?V8;+s+W;hNK#- zII7~`>53jHttE8jD){W=sBaiTb+mWU0k=*i|E*qCXNpp_ZVsdt?9jctn zKfCIuR0J+lc*2_lDFqs57PZWUAU6{esT_>T`WKoHB^fr~zYipbhv0d^elXOQLmd-`BtQKy* zP`PHUjXgkX2aw3`tcU(SyRgEa5NmqHy>H1qcKH zUH(Bc-O-3lMdRdmfEn%9tqBhuDxd)*i|mJ970K84J6VkX8L_1PK(PEq<6>VH)E#C` z%#QNOj^0X9B{c&QHw|;9`2D`&xX><`Z?d}DM3|hi7IfS8ki9k$a3$LH=YM096FNxA zwgmwY4yQR+Pn{07VkO8yPLltV8fKbWtsTAfJq^d!%i{jUC)spb)KL%MGKw^!(}q_o zRwIPjDXSsf@J4IShqf>U@wLFRZ{?YvoyA_XAyNXv3YZ{;-%|KJs|=CCP$Y*9JYps@ zXeX;r$;ty*8k#$6Io(rPH&(e`g~geuj8ZN0$Xr?B~{WQ!f4|nH7sJ|ELtE$=tPBC09#>h*n2p3Fwk;lBCP42O|+c zSg(1ksj^xX4P|9zm6h@h`~Jf_ho`5>rP}dRKa5Kx1MaTxs4-|O)I|RMocwO^Fn*Ls zTW9N+)PacfAUH{c7z7XitqOoAz7BLu@wjNT@ul*hj%3+($k1Xo5IHoox3@E)GUt*b z`v74xk{Tl3RvJJ5cMnTwxq#u_>8iS(d%+O;OkhBh$j1t`<^OU^h`1^xiTjHT;>U+K z9u@&1;ZQ`3 z6w1P^Fh;Zx{UCoRyzE>HZtb2TJPSg^pkE?djb0YV4|~Y6k8LQR&VPw^XNVutn!;hd zgDlCkwK2Y$`*&EUtPX989zMbV5DD-L6P6O%Pvl5qO2&PWT%NbqEU6>c9SIZ`wTsU_ zz5w0^KuGX&*_XEEy=+s<(uF}lKm~x9APfj9Ds5I$#M#*7h}O-f(8EN9)jDu=9zGL9 z0bnOdQLbhMAS@o*Y-9cA^4c$4-|3lG1hR8G%7}#Ps77v|C#R)6PA4NluI2gp6j`b( zz7HT!^w#^l>Hf0{rZ5j7$3_6=|22i+r5tS_R>psV@OZW5PDcMx+2REO4Xfv){CCzg z)@sjJk_;Z#v9miF8+JrsQbtFkT)YHIS4S9kUiCD&mGh-<^mv_V-cfm`{-HVeUi%HEP(%r?ga;m^wM; zCC?1B?|+tEVnG&}c4ER~O&r*YLBgg{p`D=UB{Lr{g;>v7&@bB6Gz4Z4YJ2B z@z=l(4Beu|!Rcc6`LsQqXk*j3T4!hHq23v^S%m`OhF_s;ACxtcy{{)FdI>E6zUY0o zT69^fz;~1QQ^Smv;B80$m9k1?_|}!C8DKj9-`=UX(260bn`sKg@~{_7Fl5AWKp0y2 zoa*vI0-x3E*SV?cF!(W;`b|asDd?v>OKSf6CPVtDS-sZPP~w2~b*xcPhmX^C;GJu4 z7c0uP<1ZM$3qLy!cKr@Jp}grYZSjb)4RMk`3J+B2OdFRg)U1}wyLs;5WB9~R7RAny zLlUfqzn}gMDR*TQVsM|0txbngZhS!Z@!@N~>=$2mxBn1=4pqCyqxZ@Oe(Rbgj1mWU zI|T+a9x_fufgizAoMg}56&o9y6pW69>pH-9EPS(t`QliS=avX@S9vRUY9lfXe^ypj zw$k|uDGl3a{C8~=9gJzm{Mo^0wJ{86K#cTg=P#d#JGd+;{*7fY8BS)H>SPd8x?A`4 zh45c){gWsqb)<3I35B}t=@ird=?2hsl}(%B0ENoGe|ZJgzgTIh7=Uv>|1!zy>u2xd zUwO1qVztoDmj4Hs-b19?jYKzv?BaP*bB#e@SKD z8^Xs)K-s3XanC}1&s8ZFO>0)D1@SguAuW8>Jx&F8nNb$W&E>MUmI@s)D#?n!AJ!1^i}~=P7N7 zfDq#NmFMm8Vw)$&cu@zxFfh}Qhiib>wvKzYt&NcQ5g=Y2_ifp~Z;s*BeJ)0r5cFT( z%0Wu!KB+9^vDH65Ir>Ixvw<(3r&Km;S-TjkQt9>ny+{qce=w0<{*Ni}Oo@bHqQCmS zF*Z!T__EZCDX~W%(|N^~J8s2MAsHiIzJEYjvI z>)F%g*rBwCqII9{TJPAE_Gb`SchA-vyUfPWSNw~9Y`N)8nu`A2R&Ct>n=3f*jO6m) z31WJ9VG0a{AYpHBZ#%iM2*;UXB@z;@YMbH006@8e;JPG8TD8wy=t7q@=wYXOWvNum zxHN>&y!f;4!%M5G7?a`;3V$ZBaveD|!x|EZt0G{dE())C95IyCG5nGbkkpb+9ST5* zCC3~Vg{|-rCQuX~hP5~33QD(aZypd{3bhO-4ejd_XEy4x&*Uy*{)QMGq!JN_h_Py9!{V{;*3+~>) z)pIj^ygqQ;8xt!ilz@a5>THjBzXOh@VX2-UaA&?w3kIWa+y`f0c!xY(Tt~ z%0I`lxEyyU^CX5>*U1PGg;t>8P%^lk5BmshMTJ)4#0wX0{+B1xbQej^Fq%JjzlA5Q zkdGKO*ifwu8wbYoEfDp=WKB<76UFzr(L#l)v3^EKUz7=N=IG`<0aB(eS|E7Xa4A?6 z{r}MP)lpGD-``8u(v7HeNOyNP(%s!4-6bI@-6%+RcXvt0(vs2*($AaE_xbH#oWnW0 z6ZgJi=FZH#4X!yOJ42d0RfmBPhAi>JKSxUWU;NI;XZnWe4l~B=3Yqd$e`}wCJd>le zJUTi8%svZv+Y{sE3hzbeB@^iZ8?;?0Kg(cfL%gWd8h~tqs4PILD~%+8L_)r-6WIEm z!zQWN0SeU7(E(^pkx#q-ZG?sNkRWf7{kQW2e6~GKzvVnp84}U`0)p+ATVuD7_iFnZTjZo z>0{2s^az8s#}~8v5VQKwA#zZY^-*U2Q3c>ys;ZQBQ7L2U-+k-*Bi%-PAGFzBd&Xy= zANQJH0khOXd3()tFmGES_qpWoyXZ}*9VsOsc#w~J=qMF1@bew${wl@izyJ-e{eF%n zzStFNzoB?ZKg+7)0f{d0VCeiy1_Et*tsmWdb90}cR2VU)txV_*QkfZ*bo?95L2?qkbWz z6>40*d$r5?(jrP)Z4#*d3`jY$fzzcMuA2gT^{uNcRL|Bc*5#rR?WGasckLkfPQQSY z+}E_m_3r+yu`{FwcJ00KPdn|HV&OI@kYE)bED{yB%r{l67HJ+o`hZPB6A=|pS^G+& z)jTyFppiA*yitMHd0l%mfG-`6I^^8+_MTLcLMA*21NLWESC>(ZPit8!wzPuGz9n&W z_L?OVL3aLMWvF34HrwFWJFF)QS^s8CXqBc?X{~9bpNI~|ByO3Ro<8_| z0Y3|>bXya4w1;wEHqoaWPpVSSh87q18NB}6b`$BIQPL@!Uszn^;^Y+loSB-X5CUn7 z+o=<@#MXbWXNgV_PSt2EjT;68&)xsrqPRLTGV7YCY_b-73H*QSwU`(w2**nPHqUv1 z*fpmcxDRVlw*^tSlHJVU!dQiLR=CO_B%A8EWdMNK`WeH_9aRmP4XVQTp=h%IXxwMk zoUIZ)tikhLUgE;4H1TYDl3x79zGaft#axMH__<-P)=3{lil>w$vj!aqfWu#xZ9Zc<(fAN@UJ~VvY0nu$|ddZ7xqv-cdVQc4O7h9$v_a6%0; zRyj#)eD@wXS!ONvokx#4TOky{?tRSk>GHjnhH1p`mLl@OuGq2LTe8kd|2EErdQF$R z*Rvt9zp*G{lV3i5EhbTaSNrvs7uL16-*-R@l+4*%m}pBDrBHM;)@Y6)_ z^&0cFv9~9D54_7dJ3jpREh_TAd&_SNnEa4H)nCqr)~M0(II@TdFuc8g6R}ffcBPS1 z6XA9dej+gP{2_9}cLjhAv6Dy!^1mc^?tt6t0|)5+*?Q|j8d$6j#9CXabBP+7z!{+s zWYFBgLg^WP2GfW(TZ_<37{-phQdUP;>((Xfdm@&9YW9FXMN@*NU??aD(7)Q5b>9AS z5gaJ~iu!n^$?IJ?aXAxwZ@m-b`&zm9M>sj$P6SU0dR&z@VLYie_^36N zzXqJJrvyMi@PB)NvGUTya*fgOE^NJ)K4Br#<}vQR#7gG*8Bbe^_=A-U`gjW5>T#Ej(<%5y5~JiEuoTbGznkLP-)?y9E7p z%}79}6U7v6a~3$UlhvKv+UeFGs}KsP_6?T=6Ai_E47i0@vK72-FK{`oXM3z`J6ofS z?#X}(T&md;4omB(b&Yt-jaq@n2IXneCVaimcLAwX>>Pe&lvCnlDvX!Dlrg z_(2NQbSVO#8doS``!3pJRcD#}&~4eJc_T|vvk;|*fCkzL{e@zM3%jg>E9oJVkOu$> z7}QATG0kd-zwdAOK94Td&V1cy@BD&m+##A6-oV7YAfTE<)DzJ|ju+K&IZDUW_2g3c?q@^8&AQK7Me{o-6+s~FvJdbQG-#UC z{^$a1QweEuG}M`@C+j9Ttu-HG&BkJmXtQ78Jm`ZlDK_o!LGl}_l_$h6vB${K%`aoP zVCO3BQLv6Fc#jR5T4HbA!CMk}v5-WQUfUb=zDwB59^?V9ye7YSRSRp=Af{0 zAk@7yK51ag-6vL$1;U#_oCvMV5~W{d^(iGbNK@{KbS-9uc;Fqoc)6;GDe!GZ+{z?1!@= z@@=X?T7eK%mQjp{Ww+zTlZAo}`dJacqEGH0{ryX@vOJ!8J=qWAdpK9pz;SEF>a{nX zUS~Nu!>(TlK^qE6ft5_1_|Y>u*Ga%)MH6cG?%lgoCPP8f!RT*UY4nbr_ZI2=NbxEK zNg|`)wWw6G{}a=T+XANOqH5-rNP_w!IF>sq#f4i4a{n>7LWd;2`FNMCUs1o!qHGmgcDN{sBs{yTCoYgxlBDd9T z4fADeCR%_1Ji{Kd-8^B@=CUW`=34LLy)4IC3#zV~=-dmgVPIFdyS}z+(8-+8*ip|N z6zWW;ljYu%4)gr?Cw$;5;3KSEV8~Dty4hpgmRT5*`ZO-t2gS)S5n+F4^GUs3*jQXq zF@JPJ5cY>)&vh~2-ybPYTHdO2P_D;w3@T$=b66ft{`6lbZYScn0TVzAjhLxmzyj)6 z-5c&Rtx3(&QB~IqkOSsnQ$+9Hy*+S%!qi?}>i;QH+~oP;W@cT&-rio*(9aDC{jG{T z;ML#Rc|45;n@XO>WgMGYF`~yJ%$Tud2P>w~tR#10Vj|c7!J3^2ck%lATF-S_V*V<; zkGZ^|;cZt>KtN#T3Km3x6&ZqnK4?<2u%Ka$K@=4DONEx(M+HY+SNF(?yIzMO$dot# zW@(z7vLx$A)13eFARJEQ(T#W8TCDL>_uB^q5-yw9m~>-zQJyM`G{XX{uCr%Ok@fQS zMgO*Q{`At+lo318Z0o$Pyf+@#brz5M(;vyWTwad_P4g=87)evs^dI9flKKB#>t;lt z(MyZRvSa1w_}cgJ#p!glrT&IO=68<316WX ztdfv`+u_xb^Jo$+&})fUBtC}7C?K$D3*Wg@DJUoeygqIii#ULU*@7Y(*TpI6ZZ^P$S(3=FnwF+Rv|JBJ9!*BNsDLyxqW&28WdZ91{~`T~|~#h^J`m z*O4vp;p-fc!~LMW;^RJ306S64fC&o$xJK*v>Hdm-EP*1O)0un}S*2-Sj-BY{@!6nC z(|2|5pce0`?8~xJ?u~?10E<*TZ)Vl~vOMuQG6FPKdX%vi1y&G4`}gtp*1&{R=r+Aw zrB@8-?vs-fK6l@rnAgB}N2TUi`#xO^sZjC)UE4~wqQ~QN-U@C0>(V0YvrLtUG<5O% z_oU^+`uh6C_E73V^=E+SqlS^j-X5j`f-RV2>Ew2KdD$*;d1;y= zc^;)uAztQ;3K6>V-b{Pp>@HlC6x>&@W8X6*S_}|f$_N`&?q=T34lGyj-9&|^%U zuux?qhldXGM}iZC`B{lz3faH;30X&^}kwP}yd^svC?IBiP{3Y@mu@#?IqnzU&s z&6=;*sesspO_xYhY+ZN~gpJ@$pnl{YpG+_FI&^+6)Z_^8Mk?3AUU}p?t|j~hqaYy$ zVlktekBGNHgNVZSB!axICb$N6sLSSgZ8eZo%)sz{oqmt~#@LbKJT}T;r2llX6f_vY z6KXTcA(%D4gBYL`jXFs#J=YWjaKLkJUN@XPHt#*eCE?Aq?cq(55+E)%y;I^27dEdVtRdD z(EV5o+~)+=<8B;)OdX?3_WcaXQl&;1mciG5hzaOyX_!U=P1!Vjf@1`M`k2$aBr#wW zX5VVfVIkveVc4Qf?PLNACWeM zeRsQT7Q2L9!0@o}MG2a|3QZ5ze!8~HIWx-!8f6?Cx2FKouo1Ubofd?VV-p=G#Ur}9UYl`7sikJ#XWPv1;fS3 zj9Js`!AcW3w*0gktUgA+p~rMHk#;^8%VI_L>pFJ0op1JxD*(_Hg~t#KpIl1$UAkPS zLG}>O%GOr5)=Y*c_U6CU(N=Z6ECHX}@pLvh*2@$I-Cq;)DfHSi03RfLpVg|fh^aRv zq#sT`L$!&&@Z_)RxXrN3Z#bAOn#|_Yd=BBwt3?dn4A`L^3wV+5^Lq)7AZ71q>r{Qr zG>jr+#zCHDXFv>|w_*4p6-{GbKu4(P>2c;CSM(}BBtwPU2MVk!0x|#VBC_<0Df3_c z#iY>gQv+jaqpr??r&JFb-hasP3)`u{BNP6c&35~ z=h`M74eFP}73Bf?AXD3@JDEN#>>5LBMW!ph5*)yANX51l8f60}pB4X%N@{9q+S^x5 zr>)B=V}!=WqH*un@FPlK<>nl6uR+WkwA!CP6ro6Z-4hySJFpy<1hm&CcKjwas7l?x zC!;eIP3Nn25ZjLHRJyoKuG~(_5prMUM#HTr=LIAPAj0XB!{QIi&FRJfCTC=DDqB1{ z>$qEI9Uvbo5<&mK-)ucg_}3%Cs|CmxToQ#JT+h4r-c0SAGXx6KPG>y#fG zDLgYX)1I@e&%$kfNjgi&@1g!!LO-qhD*$s^BI7m_ZIMfDMdbp@ z;Rrwke=_=xK#XqEwC*q&-v|O_7ST0t`F!W%lImlR-NuV5FzOg~*0Z#<{PLyl_z^#M za^IErPe3BKla^~Dlhub=t!?+ki{L<0g0P^RoDcc%`4kT9|LrxKRml|15~79scza96 z5UE#3^f<5DG_d}Z=Cnouk??RX%%jG)R#1g`596^ScD(zQ)QC`(RPWzjaB@H*(b(1Z z72jZKZceR`JOy@X$qo=L=^}bdOJF$XvfMPL;>UpiGg(~_i1EC&C;;O8?7R4Pa5`TK z|A|$EG(&8*e!_y>Nj@$_2EQHz8jPzH3V3zS(4UOX&Q9n`?>Y!z zeT~nLo=Wit$7FOtfsk1-p<9Z_OiStOoI38(2X(auOh=*o07uKlimJ)>CIZp{_WP|Sv;x_u#AYkwpAS(g|Vvza1S&V<7wY%4bh0X zt8L~>D=RC%Wf6#?j{EqG{9szq`1YZg&yyfUpUKV_&U)eBjZL$3vu-7XW_A4!?17 zzpSD{K{s8tV8#Sjr-DxE$#8wndDux^?*V_j>$`vcfo1YZxP9D%0@ z6n?{gbU^z7s^KeFNThhMIb>WIvya(&H@`v0UgsDO^kdoz3=ebtY?fbALYpo>x@TW3 z^5yv{NkHE>z(1$1a>jtYq53-}rI{xnFUybWp{*_GE~)J5$~8`Vc<}z}X9m+mB6rN0EL)&H z2?gTL{w+-M@71PG~NVXPx9Jum_ZL z=EUKdBVH6GF&f=?2pozY7Q*VU5oA6m)gmnE3|!O)v9br1$Re{C; zs}#-K4Ct|F=S|ayV0d>3+6#=;a>rWo5}Nfjy;Zzrv$3P7ZXwtG(K$0n@OIEIFO2Px z0R@7X!=^$9708+#IShiKo083d4v>Z%%LFDd6@Xc-BF)Lf7IR4w*dpGx_JD*S!`^OA z8Gi3!xkA+GQfckI&L*MwcFNV7cf*$;bE430o=$6%=);5aIE1E+R>G<~Kh9eDxX~)U zbpq!7SLZk(%%T}eDiDc`m8ufIxl`%owe-R1sfOzKQ2UOknvQ!gdUT2{|0*?xYSt#=VlPf3(I=IW~7ScENIzYcq zK~^TW|6`Zt=*&_!PlWt6>5f)@^Dvv!VLrnutXlyy<9za^k9GgDT~cf~*gJVQ+@bgD zbQs>tGy1tWF`n@rGyj3pKtRW6Cwte-MfIhon3$M_I45exOZlkQUZEB}6{6@K&X_at zadrGXW`_ZQs9qd<-evR1nH)QOUsWZuPxENQ=q!mUvr00Zpbj^cMZ#PkYwQ3|6Z4Ks z)(5Vsp+Vp8W`0+&a&rIi$nfjQEBz43HF zW}vrNeux@ynU=tJCQiLqo0^@y8llc*=j0q+m&Oc1s$Bfc#ejThf827V$32Q=me(kF z*)6tbC{$1~!X)}jav2)*1qgb53HJLv?qN|sbj>bglGjz7?Q zr9937X##7sAbN=d6V;+GUH;4dXH9eHtO+BKGVpxc#JiOl$H6K?44v0Jr)vUuP#U{T z+c~dKPD5(qh?%2f)o6mhV6Nl!-|5;+R@G4w00jxaqyC|JG*JUsh_J+HQoqIcvVSYn z%&o1h&CRjz6t-giJ})+>lat^_`td|-9^cx^dyshzFcPa9ePXTEbe?6dpT_YS=ox8# zV}lf%pg)`0_zmRu?j8#=pZs52-HsSLu4l?BTfb3EuWHH^6X{O$(WwgQj=;jhg4oeA z)5m@MKhxU7i6DmeeO3R_^rpy}EfIfI^EMC46;@Z3Tk^ycA!2cs<$#9cl|`p;4G_JH z6kbDcryL9dccLWo{ksB=muhU>(O{w7+XONZ6$?~q@pIC&sC;%8=jO5m{gzE?idzPB z>G3KwR;H&}Z03r4mj_AUbB(9`>E9(^QUqQWC5@o*aUbG6V29}igxd*^O|+eLKK3Ad zl*SH$6+=#@c#$(W#TcUCF6$cX$VOi;Ut=yA*Dqt9{QxhekN-P0j%p8*S#oQP= zwI3=HCR>imC7K3nr;ULaOeek!a6qW&&%Heh4!*v-_sAj(Fl8{h=oF?5^&KfUJ1BQNV*ionJEGdaJ zCaBpF?Zv--c2W4de3ZEO8(rTgy>v3cv{|TAXQ#yUfM8 z@sf?yyafIFbrz_fikNqX<(4J$KgUR_Mq^T1?!wYaZ)%_qrz?AFeW=a?fk=>|llTR* zgaQnTW=jGh%m}FPqG)&S3sh*ox?)#oyo(#cT_0{(*@bFN01qlTh z+jmjacn|GuzS{R|2#M*lOFRcgsIWxqHOiwJ8{ zv$RR^iput1scASFt%kJS@+k2$EDQmQb@1(j7cVl5m#nU`GHErt6EPQ2%pa#EJI*qQ z&_o^v4`krfFZbwRpaRcj-L24>LF{${f&nw&Acw>hxOw%Ce39O4LSw-$QqOy!`--Wz z=@v)|fG4W%$a!Fzc;+ia0eTh22%WHyYg^mzw`tHJN3vLl{u1ClL9+59Fpaw*_mH&w zlXSGF8XW@7qtpusMXlHbIEZxAP!eqcm@N5sFi94lN2TwOtZCZ)Tg|WsBIfhCvP&<{ zGnYf7(B+TkKgnT^^d{7b$Q=)ooii!s5HnUJLp8h*myKF^BiOsAd%+EKe_8qVDc8wt z4)m(}r*pxRP!#B<)gE}YdtwZU;5qw|O*jlK@7#kNK0Cgqv;<>SR+E*kmCKVAn5I?d z(vH3p_kFh*N-U(>KX0ZPMW|ubv76zw0MXc9g{Om*a9rSO#Uf-i1xWc^u<$UAdT_uYr2kI`;FQ)5Ge0D^3tULCm^7m z!t$#!sAOdZ;})Ejb8p^Qv0xcMDCjKtY*iiX`ukEB+((n@rKw0CLI8#jCSfHHfJi&@ z<0`YVDf_sKtgz(yMrXw{6hpr?MP-x(SDrp(_yPOUdqj2O2Z_Uc!qcPi#0I+AO6duI z@^Xjft}+n5R_vuEG*w~ka|}$NmzD+`rdRCVK;f4SNu19A&WpnPAGrrlKG;%v#;&z8 ztSrd8@H&u=b^=4AQKmqF#WOTQ=PS2GAVpJP2uK{vzn1EXl8V51I4eODtR}I7Kr#t4 zt}1C-8VlqW2?t8?7MZ9pfYd|&gZ7cMrF;^XVyIRs)_f&H5(%aW;|4l)7q+%d)fnM& z+!}r$a1@+CS`c({`14l`%{19GzYCi=kOY6%nl8WNs`Dh$5-D4;9VSP+$i@WCTZ=$IA!wzC1sM$NaAv z8G$Nk3qD1j3QlAgvMb0mhu;YY0x_4L_K9Ksa*%_8%=B++-_S%QhAP;9`BJrb0lxVo~r|87!7kSdvtXkUvAm zBh#Yx2YV6c+$@f6!8RCmW;g@%-uFit+kY%w1^zQ3(As7_#v0WS);*q7sRjOAiWxWu zHB+Np-_fasJPV9aZyeD^hbAAbFgsG+M!U$N?JX04f#ZARX%hv+3l96xeg0c_`O~4IrNlTKa`@C6 zzI^OH25P3V7|X?jIIRbq#%F?KYjShG#6NR@MiLKIwO@{!kENh?#WVbp{a;%{=H};R zaR&E#X>wt&TaM+01x1nv~R6g=?UJs4) zSaV`3@*3#6ecjHkcCcmmKj>mUxe=$QOZ*q7;oG+PnLHz6N$_g>(#4ozF`9PtLLC5Jsbllg)5e^-SmoWP%P`E*SsbdlyACGlY;nxCtMrhLg%UPG`UF`H>uR3%jPxa!7XeM*GP;ksGvbhC zO5G@B&+r}uvu5WE*zmoc3T{uE@+%}xDC|5PMKj)0DKs4ApmD~{2wc&zatk}t!WVI8 zMXcV5J$AiBbWiJPyH8Q-usVUc{jXfD1`CX~qjuKyK_H7u_G;gjXWb_AN6M?-eE}bB zDqMhJA5IIu*BL>Jm(7=Q^_mh`3~=ms-P<4K8qAzWgP4DRey8ObauE4CH#a=jzkoqN z61bi%1;ZIC+uGV{04QI1I_TK#I*WI2ET*?%CC`(nhmj=8)Tlb7~Ek$w8Fn^*1Xm->1VaDg+V>`(dFOyQ#blBd0Z1r^M6b8 z(msK!pcJGQ#{*)Xk{jO6gURBoHD(tC5|%R3u9PA{3|wys4{%_B_`!pMYzeWOy}tYO z%pb-TtQO0Q%hRjw?%p7jcyVznNe6#@?ih5NgpVa=vG>te4N*Hb>Si8~eb0wR98dee zeJs`(UkWHmSseMmUn75!OW$^bc^&S~HiVqF#I1irm|=k6N0Bg^yQVd2^{v(jy+9DV z!ka%1IJ-i>1mpf)e0~(`T>tWWQS zY1$md&=AyVP!oQIIp&1+s)md;Hbxugn-7xzmau(_i=Y9888_Om-1ed{neoc3I^5NokG+)z|2dHiR7<9Y zBCFuw;|3W2lMFpJA?XeFjPNc_X$lU?aLkc;+Zr^8hH=2oS4O0fsvYLVup)B23*s`g z7UZ}g^?EA7=!1R_3&XB!FxjZyM}=Lsu;+Xjamn^XJ!V5bBV?p?L#KC|(HCgsyQev= zy2gX>*;+2J_*iSu-bb}%ji_ngFIh@_2L%}-S~`&k`jn&sKXR<4p^eLtcS!v!D7aZ2 zaSUZAeHNK7Uf*(w{*0LX5xq9CklWwW@q|xT@9ec;@7_{D&Jo?fgZy2*lBzM<2Qma` z2wEtVFtI>6Ni1dvx=K?BD)2K~QH+eVu#>euE_c%!+Q)d%*+{;XC`up#Qkv40?<_H> ztTbkHDqnM8m0OZnBj(^p5k&|3n#gDWJ3eeIc0EUE+#{+QP{n>Khp0EPk|}!SC`#t$ z$xLQ3Q5wwSBLCBpX`oKt!?Ce~Rxu)r7u(m;ac2#^IY&_OE4BuP@YXrfUTWDvKtS*7 zaAMDUpC$TK#%X@ppKC;7%5yu&N6~)}kRh@qqDs)k^{o@~^zX*=#{jwDc~nszTL}Db zO9P!Ewx+@q$K6O*XC(TY1U>pv?$g|Ha#vD$z{>lFwXpGbP+Ou}rSrqh_>UQ}bKPc+e#iw!ixZbEM$h~L>TnzltJ(d0kj}tq94*QJ$ zB>y@uC;9py^GJ@)`@w(8^<;jOQQ_7?EOf+1&w2 z-@|mTD4Nk{tLSymgmsip#!4klsN`c#VZvR8(YDR%Cvu z+|dDf^?8lr=T{~P!YtXj=7RvA`rD?ilxIX9H{@J_Zdi~Ji(cbNVdH|saw9FXrSZ3^ zYHm_cH-=h!qhRapU2M2!%9ddW4P`Nw8(j74O5D>>EX1P|N~{zE$|xux!~F5g(5zD? z(s9}3FZXwQ_B9{A?GsCR!{fkS6yc>teNwq-UuVBVOQD(g1B5U9Pus&=x_M=bSW>Zw z1e??f3l&-xQYY%NA^>h4RdwZ**h)!1*4U|4P(!ILyP^QRiCn&3k|` z{#TN9tN~@z>vmPgW5vP2d8C_Z^6|a#UHfFXRc%RRtAFPNPx09oj87tmjnEkGnKu)Q z2e0}HEd+AQIm17&W6Lsz~& z7)U}(A&QPdmp9H}$ajTKiXXS8kO*-y^&=UOdcMP3=?dfR?X5;gD;#J%i|1-*BvEDP zvfd#iVzx4?ys%>Kzb0j13bbP(t)D{vh@pKX#0wvVOaeU38`mvBfp&0Z zP@rZKME2}XA$ZR+m2Ew!NomSwGT7K(_SV9Tx^SfniJ%fYz$+kQkBQ?k=uphp0#HZ- z9nuWRYPMahyz%76)Jqr$44yuP>`SuYcXX6k19#q z5(t`}D^|7$BBgPW^)8R+&&i!Orzs>!E$2N|96dV?mv7a0Bym$ArF_L98o}&J9 zOk}4uOQT=gLE+bAK|XP7f)=(Tj9?vZA@iz<#$@aFW%rkJ^~nVA#k+SD(%HvST3Hwx zt8yc}`*SaWNV08uIcWGJQ*ntQD4#QU(W(F?ybK({kA{$(^v!YvxdKT>Wj&E->!ZimC{231Iq!W12$W=l)4Rk*~ zElQnq`SFGy;eDo|F)Ir@yrT%TQE&P&I*tUo$F2QX-pDXt z%vxK(L`afG=U4&!RbA(p+waLsvDvrD zE=dN0v}6%Ka^qOShK=d`k_R;6a~%IjtPK^@^S9fKmi7^>)_otOT;HQjQe+p%-q&(! zk)lMUfO3)^qiQ0RQ4;kWEqIX^SaZoA*jx+ixGm;Lj;yv-*AD7g&ocH1rJJ>agJMQ*tG?DX{^Kh^~qS*^!# zpjWZq+#N23hRG4BVm@9?Qc(r)++UD>MMoozALC>S`}Ve5Bt=)|Fst|jNI;Tee^Eur zSZpr$O%guS!jt)!K{fHdf@}Fz&%?Bv@3~-Ku}-&kX{-Iyeh!pCNO?MQ4wtsc;yB9L zDw~#N41pktTa@zGfVHRx+x@h=Gmc+*I*iux67&Ju3T{gF8qk4`< ze2H2Y9Y0^hV?`U`nAP}^eq_iu#eY(w#}>K4c45T|Zk7p%*L7(d$aMJG1Gj#02> z?;%IJ2XRD?hv3Wjm-Hiun3N2ut!K&(&uQ^f2YP~8=--mcb3UK#=xz;F9GI_mD5i*B zSS0g_D)2H#S{e<9c*FPDoQ~_!Pe|$D77~YVxF)ouPrq~0xYEWQp73Bvj#s1*wI{O> z|1IhJ%xctTbyxZ;4pEs2LzcM@6`0AbHXTsU~|>i zOoWG1c*jtTHt%D`Lr0eSk(O;OuBha$Qye9Q%8_#!fw34bRLFb_2sLe4LNjTKl*nKA z*u8(4FR9H;i(#Gn5YPsybP>lbPB^{@o079RBR?PFi7+;#;e*y0u0)kWH+i6bO@gvO z!vbx|f;TT8QYN!UqlJazTP1b^u|Ykw1Ny^#2rbc>Xy#3<;tMLN#F9oDa(mteAQ-u` zI^Rb$)khW>>{%yT(@!RTZXwJ8KV9H;TSQ1#Ot?MIjh5REY;Gw659Me>z>)o|h?mqm z5;q9W2X5~o#w@fv9Dqn8Vl+20DNK|CH?8ix-uk8UVRLU<{#Kd#2^PU*P_U-s`GCuygvH(Ehb)3G2Ehg zWznl;!^u|;@vwrPxeb`TNhOWqBm!W(#3-=59#5JIZ2v>oNkBP#iZsXAQ5sGyMco=) zZYvJgAWG9(_WovB-eoBFYAv@XHGIGLNt|m*TT{hUXGV&gxzR1U*SdO^ku0)&*M(3q zq99Z}nFoS_3tO^+iOdujw9h5Z)Dg_34V%crX{rItUF{tl@=)_VN^)4M!-w?gA0kS| ztJ_LcGU@-aK-GZXHX>TgXcX)@pQ}@{l+}&s@!@<3$H!I7C#DItv$e5N9@an=8%qQM zdV>O>flf6`46aU_il49L$5h`;yAzen;HBtO<1+)NoK!?90wgky^F)<9X z432VLFjA3Zy7B2jdS~h6VSeStNAu;vw$fIMw4j4i@0ULzm8JJ;q_eq`W$U?%kI!LU zC*hw!G<)S+8>?0s?gppa7_jN5x`dy~65HjRo>~fh0^)tLP+`fhQn^3qnBG4y_e>R< zg|2o?c&>T)d90Qptzt>3HWf&31|eiu31;F_eue9~fEbDjy?CAeGP1H3ZgNCzvte~B z1(Db+%WoHM$aX44#e0;4hGOCTFRWe%z67UE+`XP#jws!=vg4vBfIceH>yB+mM@xlNv`q#fQptq;7#*=DGOH0}QF{hhRrg-t^)MRN<<=tb4 z4J{#UT|$RC$#z*FPRc5d#mBg|U$b{yO?IxFA{p>b3S52buF93@|J z^Gi#iG@bGT9U?yq!=wjx7|;D)9ro!ace*x8rswBxPTS7*4s{TNEymNF4+>IkS~V!& zaoP=o=Lo@JkEd;p#|RFu7jXf0>+L+x7h6$GIc%1{34L?q*S(J_Oow6%gx38ZPqf{? zvLH%)K3b?4Q>#}kQhfh-n#2O#$K2+AGP))L4N6K)WzuhTt@nuMHb6A=s5?2~+F^`n zwmE-sc>n1r0uIDnJ~cfp=&u)*!AIpMa#*kt{JugG$5^_}>0%%yK%cT@D%Aaqva%Jt zT`<6PQVQR(23z^{{2Ml02NC#d5MCRDNOQ;IPJ0Ciq_x@X_falqhR;6sQB!+8K7i_1S{DQwtK|;+BnSLqLk-bR9Y%vD{foL-(z@YftgV3piN%3ClmVGG7zIl& z^hNs}F-$!n6%7)iZ;>&>?oCcIY$k{4dvc^CdVGfq6QzOv@=f=PwW}glhbi3cZ>qJ& ziXB}??ho-PjUbTwMv==59w<;*&>`+xr|>hf)nVg~5&Flz9Xel9=%MglWTDvZc(kw4 zp`>i;(uA?wa}lCosPp`;Z@dLu!D1U7J*<|EqkL!~ot>RGM~igLc4cK{QfH?Ul0n{B z;)52l>C!!vDUnt$p{hIMyv_7VshQ=ld=!jZ zje*sCYq5f&G&bQ%kFHoyKsZ(l%&GVNZtAmtzyd9U86Q7#jiP8qO}Yw|imIxrR;0Og z{R2|ba520yAsPh%$s!$;7|B)a-IJ>2C1J1#NO?&+=492u%3Apg3XX*OpaYzUbb*T3 zotF{8xrPd9@i++qwDo19>-55L0t}BMme?{&*L9m93hCeZt1I+i62#zNDzwByR|ey? zc6+^r(bm6@w?DQ!u04}J^dLlZ*W4)ltvwpyVWTXt@5PVq>_oC(i*?J1;NYyopI~42 zD_S>K^a?wRMYAyK@;@Rnv43j1yQ`jl`zd+AUEN=7M>!yX& z`!{ku9l|>dDbkDAfE4uwsoidp-LNM$yvSii)Fh9#FPeLdlsWdEyp98&^?qk{LyrGa z&X8KhsQdsGO2m90P;)?8eHMET5I~f>fr?wdGu>}K=3PmM_@kSAsIhAY2a1r)FGQAt z#GUFr_1cvXtt zKTh=et!i~-;E-TIJY-q@B^Za478gsG>DHJ+2z;ewISz5i@43NMtz&7l_D~?u((PGH)r)4!X)*>Z^UgcI^4SA0Y?AlBMc%r{ zySO2wVC65AV5p?>ga`|@FQ+uLzM-IBN48ZO z*;-m+s}XA8$#C5-cAsF_HDJU{fi+`3P^({t@JL1KvDDW|3Fi=^b_5<+5$&xpYUVIyrd#Rh8+&;A^R zEMeI38j*W@*40Y4HSK}>(ry#xeBL;%)FNi|MM;rr>gpm>O>Uzoa%<3p0lkOwWhh4s zR>xB_Gqv6~hj$wRubVv~=|joc&GZQI_PRJ>Up?wwg!Gb|qVv}r&|#r%jt@S~Gbqd+ z+S`EwgMxxG4rRAb#vo@K-Od>BP&l7U>p?iF5-}#Cx?@ooDF`(}C+0%;I9MPMG;2WR zji~j;TlbKkK(irJo^ zSCPJ6S%wkfKYaYhQ&oB7Zf;(%a-!kI#IXn4G8(b^)$kz2^nIj3OpWMA>Hl#A=%dp7SJW+u~Yd^{_j|1{i&FA!PE zqZ>4&<=4Kuv%*2mXl3}6@M7e8isf?0nPf>y0s)x25t^p#+6xNXHP6)QXF{?>d~zi`Xk3nhrHs|q>_plr3RH<+RchFs>Syv!ZEMNN z$u^Z{+(8*_{V%ugxQBX!L7>3Ez>8?VMLe5zm6j)-7*QZ;B_ys(_U#{q68LvL?e%v~ zPHf<7bSj94%pImjNqHTT%LrJ(`I3S__$LPe;sFfvJn2vTMOw+;c|7pd6%|@cXZZH| z{OuIk3mQ%ykO;^4K#QT>P<|a!AFsAtfd!SON$~q8eCLNS5p~+AzDi4BlT{LJD=e0E z<^S!R@XaA^YX>nOx=1pMScHjIY$oD;#s;MUf)1{)(~FH=Wpw3lQC}KPg}#YdDqAH*LVH z6%fD)e`^?!p%Ibh2XSzv4)&ZY$(jb~UgB5O(KyH=tJi#8_m|q=@eLI6AkbV}rKbVL z&+*<{Y4TKI#+PA^pK;XDzEWTzaRlj3C;phho4f=q|0`@xOhV*se;Q&Ebvr?z4F8_9dP=A}q9+3fBMbsk5Fy|EeVTv$Ksq zkBwT{PuvpCpf2n6U*g}@fN9ajqVT*6ia=-?T5L=p7e5Mom?ZQ~Q#D?$x6TkUz8-$p z4;NJ>-{_C=aC%w%J4+Z9Qxo;(dHyf;$2eW~vws)cVuweW=?64Y>q`Kh*ce2wIW#>` z1=CY+`V`!;Nt}lSY=^B3=$q2#10xFs9sENpLs%FC*GF)}s7A{(XYxpCcx5)oTpLyd zhYC^irP@owrWMgAvX$kTF(e%}EQ9a+^3oNjtl&~V*?Six*jev9`-QC^Y-O|!6 z(%ndhNJ)cqch__Me18xB@PdWCbI+Xfj@ff(K(Lr{u9tNTKEmxhc6^k*Rj;F|Z=cZS zvpH+{P)ur@1^H3FVKFS5DDDE9h~2lRB!Mf;b2Z8eH&-p-Q6J}A(z;AAx?C#eX`Et zmqLQ~yE>!z`)od^wCnpZtkIBh+Cdwcu)cNXJ! zLNxBnjgSDk3cMjB#o{UY3>%)9i-#wX1vMf4u&m0=fHny6a7~E<-M{JY!s@DeqDPkW zRl+UNX}taz|uNr3e@|BF`}#*`iqW<-C0vv-KO3D{+R*J$XD$R^hV$=ieO7+Txk{4 ztQr!46)pbyyMhGMhPw_H7|~Ri49kw2$ReAHFj^5Wxtu2njdICnM=GP7Asr7V3Wi6J zCQcGDlt`vX2MEQV1vdWMa!_M+5-KQp`eyk-#z~uHvI9?Wg%Sn^hE1d9)<{V2y1d;g zgK6?sJ#~;Ud6sN($DD|Vx}1pdTK}R3x96L`WK>QUubAfWuKNnfLyK%8QNbZr?>@f1 z{h42vPZ7M!4Ux^eS04f2-`J|HI(lkrXDuFKB894U^4dOu1IRX~nMZ0+>5bWC%F&mA zi`j8!8Z!^Rt!am48ky)Kjhal0{@`$4|8Nr1=)BdQDy|bTng~K=D3tCqVl%#mFfH}5 zVUOj&Jo;i>#i}&B(<@6R2Q!#@m|e9j>M-cTG<9`P&fJnN7)6tMfvJZCkfm18q#z`| z)wrZ;()!*u5f{FCa`W&sHa2El^^xH2q}W_d1!v|AB%9arwVm&gw9~2WG3s6mFSoORb)-5non(lmu?1&U+`$ zXZyzZbkx*7DI}#+><%AmqW4mbp$r+}^umHej-H;L7(BVcPWe`+rVxbWWn?hGLRes{ zo2r2Od&Lhf!LHs(R!<;@R_j-lGX>Vz|B$3l-K2IjO-zS%gwK@IKj*UQ(4ko(!OGHd zWYL5vdfrO)nszV^mpdj=sgYeq1S^T_iUW#HlQ<+@pWAQz*3-85s{RU^+Ky&&b?tCL zK;xBkF2jLG_wVuiOp>-VJQ)KGLSW`<`W9Q_TGa^o=c~~(Kc}lLr!3se$7MFn%*^D< zOUxG{fnXV9K)tefF`BlkU@jpA3bpH0b;t^{6CUmE+BIuwOyVLSjXIjdJDPm?{#9lz z{RguHP&5(H=>F|(6Z<*wtysD_xj3ap^xnZVn;C8!gn#`*X^VXp3$fH1eveKV{hy29 zedTMfUbR;2s0tzaxg&{1Ujb-rirN);V1&PaO|UIS*lT2g=cf~mNyTH{_%MMZ_3 z5F=Q4_(lb?nn%abJW~7(z>|DBsdn1#jWbb-f3QRGHI-c!QD!-XZjU)5JDVg~rS&y> zlf%C1cp6shzy*?x_s1ME$lfN&RWLR;Lzt8EFa{bN+(LEW-2Pk4th`IAFr%`?>Kwq7 zdhO!_;1(aa4&FQ^4@QeS($vrai7*ud#2GI^m6XVZ*8}9Y1WgKk$>Q^~PqHj|it&dJ zADnrYtTHuh4t<*1o65S>Kbn-a;5~n_dgSRdE!*K@!`O1R;I}#$*IAg2NNaVuSUE zzzL;qc6>qdQksr*12u1K@AdAotIQ}6I!sAZ%?)1!1GzGZ)WKZy}Z1r-jS3hR@9h3Ijy_g46^;m@Gw|N9@daH zwhc_++m7T>hJ5oc4m^4qoKW<#c?oRG6b^Rw&7=G5&k>0JsjKKdCq;cKXz+8(((Ntg z(2>_Nk#ZIrf?WLdi-G#^Nwb?%k<`LxFO z(V1{+HPlrFEh;v$oG_Rk4BB^dLLO{2<%*8f7H>Ya)xQIWK9N&gIE;xBkry!opr6Jv zzOF%<#CL(*`g)ZMT67e=kRW$7JQm3FNMWv@z#L*ZTiAgeHyK3HE!TmYsCiv;=uc%P zbN7+U&J~m@ap?NmrFLEm04T3Qs_=^jn@BvsYaZmzC^d-a1yq-k(LWOF%! zSfaD%lqsB}3${3~e+2v-He>(7gdZHoESZo%zUanx?9%G#>50N`^EhT}Cf%~j#c^eD zQ91JZIe@Ua?PB}`kYQN#eE}#GKg<3jC=}^`>q28me6L+p7Jctv5k1=4+6V{;8cL1B zWZ#!d8{Bd-YEhKh;D(DHM+hn;=~St$5Tk5&pvRN#4((<}i<99PV0dV042@n)$U-5Vh+thG)$sRo6d}V8d-b+YGh!Y+p><$JA z8XIq|t?8-qsr)-)X=pT%X=M9LDIR>Ix3{-y`HU4Oqf&(6*sr4-wc#2S*KXI%PY zZBO;T1u;@BpOwWGzTjkiZGo=QrIlV+E0eEj_U8uJ7e0Zp74GF5XU zPk-l+t}9LfN;NY* zm|8#F1o_tbKzl8sh>aMJETc4_m}GCc=(POmYz$wnzUx~y0is8O%HeNccv%?(4>l#C zU2Q`&I+6&L)LRJU09qSaK?0K>YYM?{?KUyP??#M2kB@DNr@}XGziYRCe7c;{(*B&V z30ThkgM+D0ZvWfs@s}BUN^0tXQ_JW9bK|PSME0KU4TaY&7KL5r7|Qlot(R{zjdiG~ zy(eIYHD1S{Qvb*IZ=(C1q_if1@JMHH9-XfDrrD}iR#pO1<>#dd$HH!rtiQnW#><$8 z+b2ebA4GypcW6;u%u}s{mmL3g_U9bfu#d>|`j|6gQ9p0>m!9>%z6fT`2BV|7aMrNT z@7kUEqu#*KKes@b@FQ1GOrbQyA*MWC2vmfoSa@Q3&=5g(sh#f-An{P&rB$ns9=WKg zs9@AH+R`w+`ql0Uc!e*G)dE_jl?1_PN%WL4B>cSQzYE^qvJ+Z_6}k-?Q9$Q)&=r<~ z#3}E|7Z2nDcJ2VNkT{f-y;lQ;LScl_e`jBhpyaCm?OMgWxw$D!2)CnyqAGBIZ(Jm% zsV!_aUg9yWSC>JW5X>1f8Ocg$X=xcA8F}(~`Eb%knN|w(zQ1Jr-bBGKR-{-8;K;w{ zl&B;XzZZOmj3C4iz`y|*3=@tsCc;74|DvV20NHzp$b-}rJZ2Nf;>Wi|*XGY$@pwEc$0#>TJHmAi6(I=nsa z2LXPekx5sUZbdFe1|vbxL4)sc4WQc&%~~u3VhTXfdbI0Yl9ZtQmCfdBZfxWlX|RE% z-;mx9oNct;d-Cdc723waW4&_UAb$t?c5yqY{bACPMyA7PR?L`FiJQpA%xut`GsXDf z;ei={WbiTMg0HwK3Kc^p48MulC@z%5gYF5CA9%C5p0wLGo(MmstYz zB*i>2f%@v-3BD5oc&AWTTdPzxx51t5%sCWr^W~+^az}M|3K>Di=5G+l4~`TKc|or3 z6%qwUeLd1Lm%<-hT3J2l^~36m&Tj=SAlr;bQo=tj%hR!Qa}UCz#!MWWwZw|5`^oUc ztXJB2YD3QY!f{O}vb~W=&Dn1cYbV-tZ0|RWQ?)tU(39VbF(mUkY%Z2|8L>r^3Ou8K zoCs4=QE>*cY*cyf`1tr@Lf}QYh$FfUijI^qh9o3Uh6M>0hM`BQ5CX3}sxzfr$qrsT zhU3x#bb2cdCns(Yf{?pE#O*$oh<|nmBS&CMi#X*e_HDSR z=tVER4?n;X+(g%RUj86NQUQJ5=fb7r>T-O-RHk2L2T>Y$mlhOh;Pe(|Q9Wn@5z7yI z%HhxT?0x9Bq&~Vl9Vop&jMyX<@Wd4U&XR=a|N7Ng0S)0H!mOIhkfwupAXb)wSm}~WW=kFw`6J35x)H}tCco)(`)w-)R>Kb zd-dE?qW2PL*>%71%AWj|o4ao7`=EI*_L-eV<|}M{^rH&B-$v6Z0dzpwZc==v~|TyMV&5q+idz8tBdnB2_mB;|HF{A#2h1f(K1c>UrI zfcI{_lCm(m1DWRiz)vt~urjR&fRIQE^F6!$mFj503+o>X% zMD)KdE-oJJD-Flp%O|$TS`N_0$Pjql`Wxx5b}^WrluDIdT^naCWNs>zxruOh~1w@l8EX#`Bh#O8QMY&5|jsJ^@QJRv~YCeUCQll6etKk=`zjs5| zEGs)Z{X%~sM@jg5y3VTl5{Hf9pq>rW=ZmUj8@)U7Aa^fT`x9z#o&hlhuO z!U6ceyuvw>({T50`;NfrabB-W-MC9 zQhkXa(C+c^_|hz?fR7is%|YbWX`jFap8&vPN<-A78GtTX?>>j;6HcT>?*$9}IdVxc z{yF^}C_+w7P5=o_U)NuSCVrF?fDh4yablx+&&)3WnU+BGs;{rN;5{qCc6<+j06U?W z!n8qkQfex22U)VInjfNWQzP?n$4zCO&O5reMs^QJ?sjy4Y%}E(8b-J6t7Z_QLPt2z zls@Cv`0MTe!rp9?^a#b6AXs82j26$I+;S*Xq_?jv>g)vE)S25#p>Xlk%q$oG&0ogu zZjvp=ivai(IBw*)ODb*vwallACfSKGL$hRe;!Nt=ezajdObv_<~^{-s~;XUej{y%Hk>A&=wJnlJ&a8>Ir3}ljAKXu8ASL}P}i;-(b?JA^ZGD+ zk{ubwAIDtFLDlhm{)@mmkv6(2wUvw{HZqc6;sTf~i+ao|#jlvbevx1`y!C5k`ux&G zMdSdo#33r0Jeoww^rD~Iw5;i$u|$g&IfeoRUfc=1YO?fh8<9YWRvS$y1ln#Lz3Xv| z6`m2WOsurVzK)lIp5>CR_|`^+i&UuQ>Wm`tZ#?gl5GJ-6Ykg<>k%F*?Gn3pa*TK(# z`e)LT#>}1$K-Q{nRl0I%dPz*jTn$N&589&0Ocrl}q&W8f5L}=;5|v zn-~3#^Ki7LqQuNR9k7Ao`PDTwY>nBmAt4PMqX5vJZ8VPZ_ zU{-8tfO5=8PZ!;2m^-kx6tKS?#J<|nR(8lcVhnk^&N>Cl1Pp*$6KMHydw040$L)dc z%NO2kzy|sH`kJ)Iz+)^$7=7gHg?-F9LH{^fLUE7F7EAQO<#2a0-*n%-9}oSVo@V1< zRxqND*>ZR6f>o+f@XGOcJTWfPBdzc9>dMOT#T^-h;oUo1D=Q{O#`kH`lwU0>6q3yL zRViNqn7VE^Jv*zaI(Osj8g+Z?6Z?VabJVn10GS=p08E-9{+l^3G{(U5qjD3;k(uGA zep7`%@_1J}0xvul5`b$Eto~{vRzoOi{4^601=M?eU7Zn$xwZ9cu2dt63}E5NB}ePg zN!B!j+BUyT@%uDRRg}OF=YlE>ueybKwy%aglHi@serfUV&gwHat@0cY$dA0MSL)&o zvLFS1^nh&o`*mN6@iYStCvJqZFgMf?{pN4xIg9TV>EEQ?wgo<#qx7;8>ACxFAfo%j zpo&W6LjQdX5D;W@AocMc++xj$e_8`c*J^_5xTm@&mCH??QL&>Y5`cp`d|Z>K`s_2I zp9fXS_vSerpJft1!VAf(iiyM!^whGz`FbfGA0GykqZCZLHaYO4MB+0u7{~=k*cT*) zC&?P5g$)@ESLWDV&zll77EPdq_}#iEcKge1viKG2sB3DcIm5W@$b5`6I2}3h!T!b? z)#xtUL7CYp$VmK@$C?NrK@hlvOyT2~@HZ5>+MYqkquHdvNSnIWoWx9NdHBbS|7f1&AxCnJ>>_EjAK-oDtM zS?V-w)(dr29rtCGmCW7+09_Rp7VfSN<8@)tH8^lQ1Ww57P}E2EL!Qb$IK)OKR^G4r zD(smcQ35c`O#;dPdlmp9MGv+Vmsv&)SnGTdI(XmN-(*XOcEHcSwq+`!*#N233^P{} z-|HaEmoa~Lh$zuR07l!+`2G7jXZKHm`IdG3vgfBw7QTu1=#==7Nb&q!`LMhayxu5r z;Q)|dx89G%qyN?!-bRbJ>%?wwN90i^aOq{gXS~0)g>tusups2Gdp^rpHhw*j{QAN5 z7|?-JBCLh~&6P&_&qxB(SvjmH6w_1pe)yEd6l7cNA))!_AaI#nrROB~_w{L8@_u4F zA}%O8Sm^7RNdnc8%fsOH>JSJJE_hR*EKd43*cK0)JU`Y3bVk#^SU0q%9_yv4|q5Q@-fEpQRSAKq`sMLCU{wwSYQzJ zbz~~YZ^mGon0OsJNWy(0aOCA#YPV=IP||Ybxac%d9)m^6kYawPo}I|5rdl=)b7gA;JeSD zxM(76XEe|comyD68M)`FJOfnR3g7A6UA$uYsG;!RlGaD(3{B2lJkjiJxk1DbzoXpx zvz(`(`Pz5%f+b@SvOH?BG51cN67b;!DUWqzB&o0-#0`IE3!dDi9x0-oR)^$QjbBV5l&?^lJibowW&4W z4UiL;wa;X71Esdgeu|Tfg@bvYn>Q)s%BN?8W!OQ zGixfT3?V?_mIg5ooK(KCVM;*)rWb>!6uFhK-nV-vkZiF_{F*q6GayHeW{ucxWu}6G z4XiMO(V$>PM;}8yYKSoVk8BT{lrYTT^e^MQSN1h_DQdxVRe!LVNl4R>wg}znHRRwy ze#Y|#QuMe(`|7i+tG*vlf@=SNF8~thw$p#iV)jHVOKWg(Jw7f=^JePpCm(|E)muzn zRPYmdc=$&>;`s`7Xo&=4dhv%zQPS$aS&Az;`neZ6HOc+E{BnwoUT>wWa(e{Z>O-by zm18S-gg|SVD2e?XTq&uky|BZJyM@I?WF(}#$z2I*46{we;eSMDYinyFrJ*`qYe(PR z$A(?m*=ruM(PYPc=+e5lus|0fj8#xpX5r=7ds|Bra~cg=Qr7)YV`vhvV0}3Hd2{?6 z6tbgJ*o=dUC$o$X-PTM&EdE@4_bE%|c4GG1DV@3@A~_U2o7+CGqiAV=kR{cPfvm~= z{tgh}|6fo5iW&!u9WDNWm)FD7lRiSKu%=dnLpEOVU%Qj`1H}*OFrz22h*m=l{4Y;I zQ-W-1=wNt$etvCjZFZTAv2EaMf8QcwEM$Wlw3he6^}0J8yUoyDCGck$pw)tfbFqmy zF=F6%i!IHh@6!UOSU6W*Hq4gPHrT(FF2WR{}yC|MxRJE`6y_n+D(}CMgM{F)=Y+oSe`xF#+UsXa)=^0|SFJjZ(@^ zWm!}vpL4&&aw=|I`S-TG??q*R^h%R%sIR|!@?jOQ0<%t}Wqo-OPU(6L64iDKci+Ju zOObEFYg?=UPwK)DSE_%$w942WxJ04;;QYXKruDa*^sN@9#tAP;EOKBsVBr%so9s7! z575?4`>wF%wpxQzFls9wUu0CI4gjrZfFTy5Z%_>tQ+RrM0t-R^nGJ5LDym)-bXqc4 zP>(!)qb;31z=>!7aJHre@yipKp8I2d>!Ex)+kdAjG5r(vf4vTzc(;c4jMz4ME;^sj z?bvtugNvU-E{c4LOB;wlej9EY8fhb2s7Qgp-2s=H{re$oWwpwQ<0Xb&ukN-}{8Q7G)E0lUn@lMgyTHu+!q zicf1%bYa(rXn!)^{)%ZR7!#UEkN*DXe|Kqu8%r#;ln8QA96ogM#0G?bkuwt`hcjB; zJqj)EN_(p23m+gknCzSk-+T6=UhoTa5f}8tQsIOH1 zUd!s#Ti5jcGg>TbUS3&IWPJ8GvW}il3>M-9oMEjP1$OKJr4M_Wbg@G!d%rzK|BHLj zI_MoF$=^EB>VCwKKQj;o^BbMi^f0J0L4ia@{!1W`V>kAxw^XA+S=mH zl07yM!ipgk@Oj>pbX|5YpW(5EKkVOv|uoM+q2&nCo;z74dTzN{mFfMiI{ zqbn;eF3!&vsUv0QOqR-3Ad+FhQKX(#vF|O0`m!>CAxl=J_Aw|-4 zsU@$ux&!#1b+*86c?}H>C8ge)!?TS6?~l6M-;+W@@LQS94XVG+9bkm^(j=DF)FhBW zpsF70>)gkE;kX<9(Sc-x-+GI5?1Ykp+DKxDU7aw=oS751wcRxgmnB00VEHz+*V5W* zPeiI%CkPJFZ`ZNq%=oFjElRO|ao4kMceuqhys|)cM-p?cRkMmvss2$h{-k=MKl*K8 zx2>?&tJB&wXom~oNyF3 z1HRj>3Eo?4T;?SS?{LP05rTexM)wyQs#W)u(_L=*HbxXJu7F1^SyNFlYQ(nZ)Uuu| z_9|GIB(}Jyh{iIt%Z4LaO*MGKtLr3ih65(zR76iO-r{nm6^JQ@)n~=&>f*9sC3Qyy z2>>84v^QRwhMz=^BEAb&0WPk`p|U+xeW0dO5YCl{LHl5%CbgwYtwzwI;$qtOECJ+t zlgYJ&mgUbbr)I9EZ!_}r$*_I5;QA0QGsAbrvYqXn(<*Cg1NFa-p7Vo1?K-OfbGQIj z`eU*h)4xV(yJoF$BZkMj9aL-b$#&9eqOQ-BwtA}_-qbp@+3G9*kE%rvq65bsX7uwF73|E zk%o(#69K!ww*pvUiJ5WkpnPuo*}jV++3Y`BFO_2iVw3mx_YDmV0H3xEYu0T7Y9nWY z76LDsU{ZTG{p>&(99?7+2~HtUm-Qouh$UHx5Dh5cy+%g@ytlD&;k}?aL-PK?!ALX$ zE4m>k8P_{aBGVv4U7zKd<*C(GWH=wYE^Q@ET1cEfY*txK7iOF=V}wy;pq$BbXU2D7*jwOz8@ zWnF}{&d}th*d-Gzbb@PrT8iev9!<`xi5%OGtB{21veyC&i&FZ%hyl5gER-j0lMR;T^NXhQofFsR?{C`}yoV^obNJTV+nZGqiO_A0d(jCC(aPYNTU%viG?nDmvfuOb^OEr1nHyiZ4MB*0bM!#pY31gR z=;-MG&S!8T4{KAeoV~yID4&s1NcuC)b$hyTt(M&@J3C7^!LxeLeAN{wLab|O1zZfC zrtRg&-SSvMF)SPV`N-cav-JD-?`36#Iy_wxR5<8J<>lqn6AnZKkw0s6e!+p5ModaI z1IQd^DrJk`6Gl7O?o;4L7B)1@9=Vv(Jd`7UB42JP7TKsdSmS^-BO?!srTksE;{ zdb55j8RT!#Cu{4i?Ptp}oQJ-+}wRTqu8ry75(1zSPVQK3ASDUSji@rBGjklQ4Qa z<#-rl2_9tkuO0AQ`M=Kh6!t3okKZm-V$X!8>?u(3L$ z#Wc$f(yCD$j$pH6Oh{J8M@N!WEPb)CSE{+f9d$H0OPw&_=|U4kM(efwLlXIO$;Q>$ zxjr33uyK(&%_~!yh82Az!Xu2-J$r)JrV+T#BDG_Tn1!V!zyp0c-4-u|Z+?*aMmW@v zzfRh@{RNwoiDnH3)Q_?r)Xo_LmEgzVsmXgm1wbD&ynCnCA?|P;pY%hpKNAG%vR^V{ z8+ud8#+oJ#q&rD0?XsDZgdPN@hZPf}zVVke2B@P#JjG$rnjp_v-8L}2j4wP06atEY z=SK=@gu1n_$kR>#{+%bj0JuLX4;;TFW+AZH>jA}+kk3OD10)%Z8YpBPc;A=}fYHx&w1&;H!IDy{%PCDfa7jM|^#9lq%`GoS z=amHTFyp2d@x&y4){+JOoj;Ij423M`LA3y|pZJl%!sHyWsVHoBTCzUNn`B^Zm~Dxn zMU)V`vt}1Gl_g4t=81okjLLb!8_CP;b?$9Xnj~e_bBQt!pN~S68b}gChnu z5^U$7A(Ca9kN}B<(N-C?|9SvJS~5%-DD!Xl$kdqFYA$)F>V`xJ<^P8*NWuR07boyj zwVF6Ei1>0#!sE{c^62d|HyHXzSwR-sfIaXAjmiOGnJqJWPJ9zPv%c8f_DfcrUZ$r(G{A{|;!-_u_Q%No?4~Q>D}?TZ%Q$ zL0SnFSQqk>8`>!1YjP|kfJp;*OGznFHdWg}D5kr+`~2LYS;t_=2uBEO=x-BU#4t0e zMNcEh5BPn|#y$Kh#|9D16&)i_hWnA=Fo^@On}y>pVHEtICZct=N* zlGPphhSKaA3<8ay`RnqfWZID^D+S7MM^=`it=P-;yaj_`=u`9arBi!&=i!dwKMjZm zhORac|9vJSsRLX6G`F}Z=gg((|jlnMnB(0{&8YV(BOmv{aReq95%-Non-X{#*RVmW+YgA zY2(*EQrX!B>(`@|jOscd5Y{OS_k_Kl>C0h*L>HFeS{%vSn!2NdgZCL@ z42xg4IN>IQ$J0QYBQyowuu+3*^u5rme#VHDT|{oNe$-m*|qI0A1^x(LfG}z z^W1Up=(2!R9P?lt`1>>R{l(43*{$bEyDL)8juXz~1Z}48Li*xh7w0ef$J2qCdJK`| z1_T5I!05V1t_>$^#Z{!m{kMpf=djpq)40L?aeDj6fSDKp$^3W2?XPKTNlI}i<$mVA zuF9T_Ix+~~#0UrJ+@2G9?`fM;C=`1#=bN5hT#!%I%gMS|g(fL?@{*OeEZ>u9Pn%;^z6KixjjiFY=e3BkqZa+x51<%Sf!hno+k&gTCBQuRk)oRW(LUkQM`odJtB*VM)Yb!>)f8#7n zQKU)GC}qcweBJKx7KeIQZVe3CHns+VKy;$?HkDa@U0s3zx7N_Y(JkPJo`={HV-Ca} zTA0+PQ4OuE=m>$j8yl!u(osfDDvA;~H1l0oL>iq-Nu~0?O-@_0;`&%J*6Dq`8;I^# zR-T{^S01hL&G9+TZ1DB1tEo}+?j`^Ul3@*MGD&wkF&e<2=Vh88zcG`@fenTy6ev6^ zh72kJj4p_#Xw-mj{lD>J2a;zhwM0VM4Q^c|!~~+m^T$k1w0&C7?h8|%NO4QQ z#>jk4z&=mj`4ee6i5%g@C?_KNuUEvo4OgT6_wLaIZ;WGU%O_H)!#ja15tIOczE_4< zhz7QtX{Zv1M(NUt{xg=ETO0aZS`$6z{EH?!0i4t2L>Az1l9O|R(~Hw3vB`4$JJMVC z%iEGZbRhJEQk8lDbwG;00b#STYH3q@a*&gi1JAXc>gLE^M}j+2pTAL}Sd;WS)mPCD zrf;BPHcdKP^1%Dc%)nBN$svk5cz9APMb(Q(BG&U=RvyLYH=Vt=R?Ajrmv(6QR9;{F z+y4H0aP9NoW&+2;O2~L&kn;gl)>@jiYC|>1Sfe?qhMl3ekuD;EYVYE1nlJnAJS~@+ zOCmc$AAI?z>U8S38lCTsk8_=AATjoji#4^Yts~zZ1o-(yL@w$!`rqgQ0VSohY%#m2 zB^xLpgaw{>5}4EF7`WS{+&s2!(AGS9Rf+iC1gz`hXk?p2fPiEl%bzV;xNH{x;A6#8 zE;Po?P{=H={}}`#gXGC`0y0G*fNZ+eHnGBw@0yYQ(?Y~oKJT+Ru2LeYd^;eM?0f9s zy*A@|5ClJ_}nRo}>0+H?y%p;)klkn4HwnZIO;X|$Ufj7!-pUu^GDPN~MP z2Z1T=7_5-GQ&-tvc6Eq76-`lzGwL4a0;dxxHL|5Is7m~eHDU)6pVd+SC*gH~+aW*g z3jF@^^m@Gb_a`zktdEU0TSx1S7jtxLZgF~uSB~{;vzApwbM1HovWl7LQ69Ffb7u#- zWpBs{qXBVSGb*d22`|4cjrAtsAq4{*|6R7Z77HtAR+YKCVwXN#qXWF|20>xi{&H3^ z{6;ByLzN1+6;PKR?AGgJGJ>kA>h#dP3)fvnZmUbPB{3^%6!-5|)XR3y#ga;R?N8~WTJ z8x~cx*Cvun$AB*vX9=H!;<_6qOJnyiX2v&gCb%+Qq=0U=-@x6Ch1Ez;FVVl*QUuUhJ`@J}u_U(m^z`()7DNy_I=b13Kr@q0+imks_Geq%@aLe{j0K$q zPMT^4%aNz+y>VUD7-NH1b6>VcQ!=c+T7Q7tu_2o6plq*UlhrpTJuc?nmOUKi9Nk_2 zI`uegN{ z|6vAonbclgUzaH~?o!usgAudm3 z9o_-)+NU>mE~ic@6>1kCzdT2R8HPOhl90RF)<2g5(sHV(oaJWKK1Wc}i2ke%B&;vm zfyXso_$N-Zx~JfsL{(epXi@{fMx)sz`rQGy5aWVeSQnOtdB!>N(<^?Voc9_qLXBDu zk7b!aO#wfBb?-v~l2}}D{0pmcxh8rqBmfe6k?Ja{@1N!zzNCQ}5Fcq$5~X5^#{zKt z7wMa2F_{c%cZS2VS%D^TnKOc`eN~w?)jlAl<|A;{5x>3sG`#jat~*|^kP;759=)H} zSv+D4SZz*1i?Uf^96>mq9DvB>Y-*g>dQYy}jPl2*GiN@=5Fkq~VsMiLr7Ztlsz=1` zz!(q~gn2xC+hR1JP5m*+hay73Sjbe1YBiZ(s+n9;nuE2{j;!lUyZ)gx1&!gyceU*6 zm)%uI#_lc{m0%pm$QTbf|A#VM+U`My^}~(ibJ+Z1s@o;Xm5O;N@>_`b&O3X)wtkOC z$bXyRczFhT@68Mb#+J~zU0_%!4ue3DfK$GzqBu-Y*ScMaxpqiC?0mN>ugNJtZ!HsX z`{bRPBQA&87B@XR1b3U-4L`a0jFhIYhXf$KT`D zey4oG*tke`yaE612)RQM7Y)JaFmG@-bmoCGuOPp$O>CeQ_@lWRjwLm z3DKwK&l)rq5dno&>`-*T0u}8g26J)!)S_)4cECE!;mlZi{IHdT6#ZB5Vj2Ja*Fbjf zbL^`HakBx;r1NUn@Pw{ji+P%C|L~g&q_oOPExC6fERW+L|8UbBew|VUVH)(_l4@#@ z^OM`ugrVEEFSR2Z2(&F=6XEqtIZ}7HrC*?jNisY1p%G9~TZY_1q1gq`(Hn#TsXFGX z%$7QeCAv#E+0~CF3M7M+R`yqAf0CeHOsmp>=6H|Z4C3xq=l|%cDZov4O}=^< ziN`*#G>@_e?E0o2#HiDo$9K^o1Q()iqDur+@6~X|eZ2tNUAw`zB>(D&{*>FI=stE8 zN%Z|J6fE$bQ;R4?eB&#a=P8U__YMx5+h!3HX0eZ-<(2JV0gs$(7SoOp;^z*yZ8hc^ z(mxr_!vfAJ?o+moJE|cBzs7N;FR*m|lT`FGBWoZyIocpO~FES_AI~KV=&K^1QK>iv^XE z0#p$kNu)_yrnBUEs{a}8W?(Y$F`{aPY!c#j8UCU7H_#e`R!T}eBk&2 zOLs^LCG}jQNG`Lqiw^-r#0Xj&DE9}*(qvIl80}Xo7zTDSBQdvZyLdpV`fvo-<<>v@ zOznD=_qC-X*kbs<0*k&%IoKE5d|!v9?{s7eL2tS!8q9hPq8iP4ch`wmn+TNXqrjv2 zv`UuX6^b&cv&w_5w)H|YqN_w76btg>$L~luWXi!!M-I6j*stlz*;rSJ!8=?mh+Ww4 z)Fc7dnoX;3t$H=je}wjDRalpjgq`e1v7A+qea=dpcRWk94PIf0fIhH#deY+Bbk9&G zb7Y{6Tno>POWzd5$r)+yePy-TS(skoFv-*1my3}5jC~Q`hRZXa>601R^uc$Hi=p)mzP>`Yv5fAx zAX%6@aJ$mr5rM#q=skNC9wvs+^qBw%+e@ajobp8~Ei6TylZxtqmWbO9)NVxcX?T0i z0V_Z{oy=ABgo^o{0NSTs|Hjp;#$&+;529C<@ktF7A+0A7yoG4C)bjjo`z*>U@crjx zP_7-FAxIecnO&264D?NXf%Dry{=;oY> zv%FX=6Ll5zz*+9q=^squFA)*sK9aWYTeuuQ?y5w3$$gi*Ey(z)S)~nax%q^ia72RE zYO!Xmxy3M9G--&%Yu>j0JM!v|iq3xHN&^MUTphYKTY+)ko=&S@lH~Tka3}-eup3f0 zxbo(sYBvzq94EI?km~)UH|Qr6;+y85<0`8&#lZUA-}f+FJ*G=0kJsaAWSi&r{`+;b zdr}VyPFHN#$-}{=pB=Pww8ljo#&MA*KTzGPF`@^J_I^2By3slhcwe@Ol}4K6mme2% zJ;p0FHW#Tb`!uP|O|rP+zj9L|m3+wHkis2v)!c``uLY79Ceg%5y4?7kVI-L1cIY`w z42-TDN^^_KacipA{904qFY0}KIm~j+d^^*8Gm)0Z#*kmLP{jFplQE6o<3+*Gaqa)ri7CEOvjsM=JCb+ z8tY_Vb|s)ud(T$0%SDZg%DLSCahZ8MePe%ufw$F|_+kw~Z-X~6v$tup8u@FuX+S6m z#r1KwShi!!hCqhR!_x`fnD#FiM&X<^iK)|*hs&&0#>)?QBO-B_+R9p+$4WXucIp)s z8JJtB(q>DdsIif&HTVfqM=h}%Zu|uc8>`Q@_3h@R>l*iQW#dZA;qjsfaaK%f_7IOI zTj5Oq3?q79SEnE(w`5G#xbr&VPgAw`&64H(ISF|IVicaqgg+WVOVJR4dz4QL@@VGP zwK3xMswRO>Eg|1U)7fQDi@={EnHcG;<0XpPUlaONFTW`3GI?LIXiF};wI{z^+GkMt(;G;ENZY(?;_?Rr>tJ zU%u=B{yAbkQcvneSaXNbR>>wxv0w9%_*p+!``mhZodKx5Xt@5~ojNk2NO^=3Rlon| zpVJfdbXUyp)9aotaNU;XziqCy5GQxkOHzMQqLU*UtJ1j^iD(ymD8M37HtuR`f!B=9 z%|O1GW%K|Pc2JS>>t=RlXuYd z3-LOuxTC`ZTj{yzx`~}uI?WpV zE4`wcPSPtPvs`7J)N=*N0i$X?I#%CCEEiWtqPHOZ^c#_T!v(F(IcNauknMZTZ^Z_) z9;zNYAYC=7se`JR$orJt6QcPHh)W8AYa$^agMyKEwOJx$aM?ysi5#HA}loEQ}B zJZpCSQg>10ulzMTI3-q0e|6SsHK8#Ah&!B%JbD{V^_r7Lk)TN7CSND`4elNx129k+ z(cx%F6pK3WXC`AkXY#k8Ml*Mh^J`^Ng{ppy-)zy;E0RqRCUH{)ffm+bPyl`Gp}oQhvIYfg2@iaD=+Q+fPP6Ck;R7A1b8gx? zXedYTIy(0A(cbj4Q1Z66%AM=cDs_3-=-bRJ6#=Z=gLRElZN zsFtUVy9Arb54~fnZC(7!2B6eyVn%N1kdhY_r})zK{3vdFUHkL)pD)ouMG%zj_KqcW zVGA8EwEzGT`!%e{g<*RnY(#U?S|N@8Eiu9J)MP$qMVac_3Ddb*S_xqcvFPKJofc8ho4={{bsTXM9MHe?%}m zbZM6Jqhhcs{Rd>IKDX1~3Jfw;8|J{TgiTxh_bMJ^ie$*2VtISqJ05qw5Hi$S7Ad=H zn;GX|Na?af7VW5L zk*Sxl^^>vN&7%bn-t879?Nv_3vP#Qz>t)5GjrsNjamjCridK4QTYQBDdf7~*)iU3r zJM!~o6!#m*HI_CE+p@t!0*f}0ZWeDMqHcrw}X`SgdOTikZ!qaXOrE)~~wO^8OH^!!H7o+Wle zG`4Hr)c)L)zf5XN9|6}cJx zHSTS|-5;BnwuyT(&g{wDms7J2z@_?N9VY;A6*cwP8)_Mf-bP1~nblmQZ3hL&@|WC` z4hI108bh!Y<^95b2#^HL9nF{82JExW3D47Qswr4)r`1ZZEhnWhe^V@51v)tX_(6bK zmisxmIb#Z2qVt;lZ7;QUY5hm%E63}OpYpl&ufth&N)#RNv3G1dpb2p&YiY9NV6rJk zv1B$DFV}q$0RJ|^oNP{~F&V`=vc!8}uk3x8SFprO0Pr{R@3@YErQRT7-lyjPd$bS1 zGM+7J2gjvUGKU&CLN`C=1b<}ch$E9i63KT|^8om7IwSWb@jg#4*syyVe&gqahm*Bo z(k`v&XDprHAi0hs1}2Ua?zw6hi7^U+l*^KaR>sMYFGDzrfd!|FX(glH*U)s=NVxS- z#dca`f{zLbd^@toed&)==nHD)W#fg`H1)6%MvKMV!-Mrlt@V{V!^fep1mAAPeopE$ z<}%T{G?n+h4JTgZa-?wnR{NTku*PPH%mJY{`rVSni?R;2tP91tK1@Qpy6oFzpWE+I z=BcXUjgb1sO`T{d5>-=!hAQjqIc4XZ_wy<#^V-^Q0fPF9X_bqzl4)Gpdrii>KPy(P zZ+tr*LD;*=+BPtNhnWo;%H>z&Wyi&>=_KvqnRG>SA;Z;%k=NmzQLL7k1nJ8ov+)cC ztDw*>FNecpyjI>uTyBHPy~fXV@jFn;=_Og2xucZ@DxkKu1so(YWf8-{)pG7B_C|K6e*^^B#jbpLfnbKzvv8|v5 zQ(HEKFk~?JHn4CVl&qY1LjkPWSN*rNqi5OQC#MV;y;o7?MiPl%h=u`O7eg2%8+*)B zY2jlGb4JYo0ACR;9$zgj5gNi~0QqA!kbIlWr0pnlT*SpMaM^m_gFjncwmM-tO$`%* zH7jUjhPBuo=Hi}nUgK*XN(FRMX_^Y3ohIb|4D;AvRitA^!odev9id-h>BjuX#b(h& z59U%nzI}77eJnuv4ew!7l{0FsdmZT;R_zpgm@1SlWXNxXUu&TAu!bYmH{fS>5i6S+ zVWU}Md%+P~?$q&+l-HgeJ5*~P{BPLxY0XG$WRTm1`SxE0>{$2=XD{<&cjYg6Yz-Ba z_nK`dt_kXbP0Y^S%l!s~)OvTHSR{H8zHB(Jt8s;7s^YrDP~9ZedEX4wc^~G=8rVL% z_$sSr6$Zw>jwCF^+6(#x_HSWN`&5X59r1^+y_*u$DYNCDUS3B>r6Hp`Z}kd7sQtSu#W?_Z9r( zG4L_N{LD&D;R93KF{`_z2S!l==?aDY*NU{lFuxm;vhvrD_8 zsi~>4u`w@CXooD}Nu7K&pS*~+1f;2_w=tQ`Q;%TGi-_at>AAKvsi3YwPUs!C)}Fb^ zl|%f6C3V3sQk2^=yLj5Topn!&eWq zx*EUb9N37iF8-)N!}{f(wdJyFGei=KRxcDL*B>)`jFv4m*d&L=tKJ>D=VrM+DITR2 z+K50BJ~!9n=Vf6l?Yg39UYE*|BSsM5{S}OaNh9x|)Q}VHz>FNI@&o*b(Qdcj&++1B*v9$X5ary)4rdY6$q&^&L2A3x`qJ9=5 zrY!c82vPW?y-2srERO9j?WT}wy`(f>-Q#hoadM5&)T+@M^6KDa>!#H+t|0(9Ev5`< zydo2exdVmqDjNI^+0FfZrYuD}n4XUnE$)i*bgo#jNM2_JB4$^;Z|V?fun`5L%NyT} zBbTqM8vZ-o5Fp6-;Ddr&vB2%LZ}1tw&CSjH3QHGax6t2w z_38O1GUdzsYQ7c77xIixutsjRs5as+h?*ky!9C(pTtvUTYo4=IA$ifz!Fz zU=H;V_U;|ezf)-{OvMS&VA}&udTb==C3Y9GdmGo*AZvKlW~BZs$d*w6fC7ow^=7+`B|X1voWx7Y zI5G=HY{Obj`Qcvc`GqQ1ZDBvZZU{rtWJ3brs^oVp8ANk^)YJR#N$qP9b76KP}06ec8=e6%r6C~{7wL720z zTxf)`VLL6SfqM03Q1-J7*tFQQmrOPOO ztd6!`u67_K$R-Jf@WxQYOIA|5jsVp|6lPv+c%~z&d?gzJQKJ;$aj6JPl6mxA}6n^tkH}k zZaT~?FBni%VPuv=r*&%abwc;*TKM+6g@px8a-=BftjK3SXfdVZqFz;8?*F<}BRJ!V z7RMASezdS5gtsYh3nQ-8QkabuXNY_@h#Y`%SLDWG%tidXBAR>(oxtP$Oma?CS zY>Pk@>QBXl?Gw)SiuYu}!XyAeSIaT~a3E|==b-1yLJWtxmP#c#fs1$Dgadd=goPd> zP)j=$S;u*<3hj#`_^KD=wAfmGLhp9EV!LJ7q&jdp^x^u(;`PLKp(_mrKt)Fm_6agTfSg`Ics;;hXY*h0Z-<+qLx*jo}wQMZ+LhIZ5 zMGS;{-^6{m9tIxEr9eh8GLoeAxVOs_;MJN|6+zVj(=g4VjlrV+O4U`n8bRRtdQ}+b zO6$k{{D%c@LS0=QGj^Coz?Iyu&%f1#=2#t^LcH)s(;x{=N$h=&MFS%lfWE^0Awxyt z;6dU)dm=##wK{M?E5h3Uy!zg{$*HTPG&7Uudd!h7n@?qm$Jf14R@XM6imZG|7Tj+T zv-3eK5Ed}tZD2Xl$(4GI)I|A8#IuH8beqIXJ~}ogp*qZbH^V}NmeF$v>>qOn^~mdr53~DB6`X3o~cVH-a8SZP=rrwc}&e$u5=!4 z=xQrJolRb;T|Fa{D(_Gq%p%TwCm^S;Ji?MAi9L1Jr18_b^L%&)8@|elNK&Zz#Gzk; z(p*b_mL!$2I94|21NFT!XG!4!0IWG^T-oHq^73+hMygxqxLZnN>7c!C%znmiU%T6m zn!39;EE_HDrZS_a4z6>3)F0-FMr`+(0=2zUBjzhiPLMbts({7Ye$B`0;yBZtwt3iA zzYoLn>=-=*7gZPmg%JPOwkN-GG-HuqYOlUOXdg>ck@-)EFiA#nGA|r$R5RNx)kcCTEykpF3;E0lgZy!XcC7E@_TP)|2sgut!cPk= z_GVdECQ8hx^a<0Ve>7Y6*utFQ!b`pS7d-(mutHgX=Jh=;zZF+fm;u5Pw<<8Fm%i&B zj&pMl3%r|?Umw(x!jI$gYO?<$f+>hiKI4mA!OPqAPnR9-!c{1MeLMK}_V&oR4H73Z zT&va)_X_IOXHHK7TQ+K4QzlgbA-?W_j}q2jmlLc>3(3Y}Vq!wWDNrOBcpRZ&k$?H1 z&<3`!b__yul#3^SD?zBF_dXKT{`!fjgvDe=L$vdiwT{%v*k-n&K@3X zwUfQ;%vm!e$v(JHiIK(!A)t^3XJlj)@?#9m4X59oA%FK#DV)zFmSYM^#u1=?UC{%} zdfTpk}{5b3<>s)@xVi3|iS)60`J38wr!6b4jg5^QMIyw`T#f2K$dM0bOJsEjNb!dAQLl%I zW}VDX{?L4vFbjuB?Q8>Jga`{F6$~rr>cBREYz%UZjt2JXYiKO_>)umBK&eu}nr-t*&R~F*-9AbUF^TZ_ z+uXHI_uIMf0g*67U>^mndIJN0%hP^@4^j@C{{=hz^W|0pT7aA9z?2~xuTO){{>@Yg zl1z+@z6Ad&Dk`d}Q7HNtga!cUez_gJ&y|$KBV|(4sC0d~L%|hG!rN*6ieSLkh z&RR`P&BCIratf;7KLCLFg*9Z`J4V+YY}~d|AdCZYp?lgkDy27G6=GO_ged7o;^w8hH@{xqEIVeDi;D}y zqTgs!LPOy#5YZ%&qp=8MyDl8vkF6KYqi`y>5EIj}^jvKJ;qB8_rk+m=D^Sk~Hyug< zUEJK>{1KcQdb5$ACQ9CMPEo<+-UhasedcEp}W`Mea$Mzs#j&?Wvr!!bM5zz9LmsRY9Ii3z;}s z8ge6qpx)Wp*~rL9p?S6G864kIwWYZk97IJ7wfDVh)@EiU3zjbJV45>0C;&yG6wQ9J z%3P0rlkf7{>tOeaHnMM`G{w`C7YPI{GcvS-X4W{%%kru-5Mi5b!5KSJoCjG>|DK+# zEFGQrRU!A!Qw%4QDw&f~Qhfy=2@kVfKUN%ELIVKU4xDJDY!EyU?z(lIFI5tl@5P6a z#OJhYk8gK@VjzVHhJ|-%-GG*xW0jLAQ0m@@1vzqOuh`H*EDXW6EPfx)rsas878HSJ z`%x~HWwL))C;M4*!WI^-6Y?5rOPUj*h$gM;K@e=Ot7E>sf}ns92r^LI*{~5&v@wA3IKEfySS&Dt_uis2TI`>JiE2f78Y@w8n<yw3Z9$mucHkM zUs~*1UUdM$qQ3qYcF5DJI^WUqr!}!6U}yrKOu5y4;^3Y5-!$u0j|9Hk;*q01SdW@8v*E_iF}1 zA%GFhUTU$%Q%jI@(~AeWqwC+aRDnX~>BRYw)NwvsbW7-qWI-Ied^rN&C?4V9i45nc3GIB znAqT?!hKiwo({?91z(e%0DqVO82AdX&#V;XCwCv|BIW<~Qg9--$r%3sT7c|H2y6EO|4faWW}Cs#@Fn76)`xWQWGvU6VJ9 zOm3XHD5^uGk2fqClb}$P;4i5ED?!DeiA7hQGx3av-S%jytzBq@{ zWcjBZ9ke%fWP_y%Me==?Vs7=ZdO9v&%s;>W)XcGgoz?Ji zrx-HO=7QH(DI4fYhGt=Bm+B2FNP;<0LD=~DG7B?yD=pEP z1NN{%fLt!H;}CWS_PMAuj|>^wmc1r3qA_os6k(N4dy2sJoN(4P1Bfd(T3)TZEMWy$gbg;yu<;55QOxLpb5d+Pgnvmf{+F>K0gx? zF=E&`^jWiOXlO_j%s_zB&-YSpdPyxQ%Gd3ww%)qyasRa1fQSxP-IUXDiuTknvMd!0VJfZ= z21gQ{KI+VMtPX-|cWJ*^(fi#b!aLCW1807Ufh8F!eZewVa8skZk^fPmo_JFdL^8B- zFA!fgS5={x!tF@J^e1)ttI(;%u{J(eC6%`#LNrp0>&fOo(zu&3VsJHE)9+C~Djg#|t2v7$Ez3K+yp-V)3i1%%{d5oBGt!(gy2tW~m4La6zWvjOr_=R! z`~|7|dAWz}BRF;)AsZRO?>~npF(g~0rDkhV1ov%?RXcXvccv0_Hq+ltCp?6Hnt!Mj z_=9Q%PqNu<8*jFpm~O^MhO4-8vA)`yj-|!XWkHqD0|$sB`=+kGf9WoqH;v`>)_8V) z{`tJY|Lz>jca|kZQTKqB_~accrFb$b-bA=9sy}^FcZg)-yiqk72OA_n_cGdzi;EiQwX^yzhRcdwsE8)R4f5Qs8nO_;I$rF7tb?cMt#N_nG@}gS6E% zQ*?YkSo&x0ZEO4U)D8R*Bw(I1H$l`Ob|~V1Ek+0k2p|AX0N86dnuHMN?NDeoD zATJo)^HZ@zT_%di>o|gvRcPRvH&?#IBL~9cX~(X3r>=QJ4d8r;(?=Uqdinb-@b*2U1C6f+3%eyTGAR%M)=>PjG4BdbJ zCV4<;AN{uiZAC?eQEE+bvu#}Vz~2+&6y5;_A8`w=U@W22IlkxO2@uJlJ&2`bRlbyN ze|6eFJnq*%oA7Qjd|ZV_v7cL5-k&8tUD$~Ugh(GP!3}(KexGqfn3WJzVSI?-8NT-3 z*NfQ^RU(s8=B`JDHE7f-dIPSvIot4=uQLeX`EL(MdERPg=f%9w@sNR_`w6kRaIwGjS0Cxak- zIab}!(VY&01I7WE{&EDrb=$hVU7`##1F6FOt<~6Q8(HgXgC~9%Z73zZ6uZyQKD*2) zd<@IzmjB2yzTvZ(Pi2}^;hahjZkC}@=l&)|lk$MPY=H>ac3UU^?pAcV!L6$-1ojrG z-H42tto;u>KA#}Ek`jXaMW9_vvqIy{c}7^D!2zP@Db*Z>}sw!Az+$ zSG+2N5Qt94x3Ux!Hv)*hEoKbMEG#%K41x`gBL>#JrM`ZNG~6GhBc37UFbg&M{uqWO zbU0hVtGzzS8$=RJGI_hc`ikRplzo2CytS##LnS2lGx6Q_@69uLzZ4~1_S!oy!u|F0 zeR!ExX!_Xh3h#F6-1+bz32O0X#7K9@J4v+J7{+k3!4i0(YH=uVnizYGFv$Y`wih%J zR^FV|JB31b{3=EHlJ_wFQK!A@t<-^RTX^NB`Dp_q z)PVD~^Ut6IzAzPE;>+7<)#F@KLz9rAw+MWyw6pWwAK5f#%u)4PGAZ2m1`a|AyTsgB zv)yS#YqfKb_~(M=5Z4+w$f~p6jN^KhaG^Ay-F=Vg#5ey)R)w@(du=WR+puZ{rb1S!GoV%S-F*M zyLplTriNC;=iAqWw_P^*3f5j4vvu^l61wOL1K;nbIP?&sF=na82wpdQ!Tv2rjV_AO zdLymT)Bpzn_{H^J0zkxY#LEuh^`i8tmYgfXL~;|Z zv^Wv=N6(4zIQ%7ftf|bZb=FvJ%y-XArmqZQ`f(bKJ5G(aw~Y(S97?lObWZnakAC8c z`$z!5uFMuAI(0SO7LOt^b~$IBx}(D9+Bf$1VpO7RbgKK611TB>Y|ik=O=10|1YzB$ zkToHKY^ZnIK0U;5BYm7j;4Nd-Q3T_*GNLk^_Ivw;joRLdIUPFhV&>g4_F08gG}?vI z_)IV9SZbA81mu#%)J`=!C9F{jC;_HDagWp+&9NdtP2+vM%Tx?#KdM0|jGG zD`3M7SWItj_KK6l1Xitl{OV_8N)i4>gFAY*ahS=g;e~DlD{l9&lAE-0o>iQ;Zgp!o z3T#n@yIys#Z_@Rnp3e{ff~8d~+(%iID!j^H8OX1mGnS^e8dqZoLC}t`CS@9_xE|^B zEu;g%9vZvez4rJFl5EmZWL)JOm{CO0bI|ajQ45y!%aQyn06vw~Ww9pipzn36jST*k7y*GXmMx*^Gb9C0DKSSwE?!@*{j~(4=Yy+cs)Z zM>69^&j#+qr)CvmfkDqR%a2nfK%=X4EV|)eB|*dh!zTn9nBP-xu~?4ef$0Ov92+#k zj{;WS^CRiVpN1cyq2zWEfhCb6s2shwwW4vJu4)fbEdo6X=u|Wl@n9aEnS&Zv`SWFCGaL}k@ zNH+I3T~2JWaZn|Bkro+h~}m2k#jSTy%3j;k%!Wk7|})eIp@)UIV#mW_qd(dm#R0Y`)2hJt5D3* z8RpZP+vR?zw33a+3I8C)th9@?R!ANEeUKhMXmUv};`ue;urv|9kSiL`2;S-;-(w)= zZ2xix00~?tPW-s03Qb9_HNp8s{9bJwXb_vOd}}dvSfXgO21Hi#Qit@|IGF_z5Q!B} z{=lQ9&iavvvFa>+^O(9Olbh6ePt4e}RKB>6$MW|NmZ8(@F~u}Ed#!`~rle#$vnhWv zCt)~cv%26Gyb*6Em4*EJpA)Ihex@)GyCOO@3IEP zoj%QIFhDg!x=99y$qN2$gOmO@0)t0bVjA=1?~R#DBqoo1|E)sdJ&pA((#cFQQ1IB^ z2iUHv#JD3((`?2VFEc(O5Yh=~?kw_+X= zA;LJsY3w+%JeY_!YM)KiGrx?Kt7T!sx=KiyX@9g~k)a0`%xJDXx;Te2d7i3ENaPqZ z;~>Gex3y(tX8Q2wQbn@L<^E9>I3Do(`mc+o-146%cTlf>lOmolG3@q>f$7-YbPB;~ zHCRfXzsDw*J-zif^trSgz_eeEciP?Z-G@OO4fmuobVPtTkx|7(tw|>REV%73f8)1& zpOO1<^@d8Qf$woW>%x%jV{&Dbc(CSG%4%U@TULxoI!fX|-trDH<;(AR#VS%8^3%6Q zMphTs*RI(#lGjsZNJ6fwk+u&9H}c%9$NXL-xO|PFNFjH7@+ZCB(_x{Ix9j{IC376 z$0GCbktHCi?+*GeqMY2u>039cdgo_=?~sL&j7&D|n5&D60k&zarZszJuRhfxeGJWa zM*PR~4W%0T0#PV*IAqGle@gKsxpfMe2?Bp!w$Zm{DDj9|h)@tDb9Nk<<#<}enp@Ai zL}cIzgsCX!PvqXCDBRuBjgip;)0ti#}zatSZ$m4>g(>b|t#%ZJu{SG>}3OkO$xcY3** zT0zu6)A|H`cm;F})B%qj+__hpmLo$9tne;Z)~lHk<>6z#Anlh zld!+2{)|nGz`B5{mN9wah$ih&9c`$AdPQS?{`2_T!+m3wp3&e}EGoe1d~J#3wRV*{ zz@I8|_JgvX9?`G^X4K#fLC{82IBYPI$ez>E%*>B>X3E_o&!0a_-+ma%cI-3DWxI1>#X5OV;NEKpJ$A&05ih7M zEF?>o7Au&^$sxSZF$(PcWT8=&aCCC(<>Y{yYcw7>c>gAVh93Z{ajM_Mg)|gW4{Omr(J|?)E>w; zS9%O?PO>En1EqD{vs!Ni2F-H6tY||4BBUAIZj;wPnwbvmQl=1e@l-Y2bHbPM*q(LS z#|&eE`jP(ryrf32`T%t`U6(u`X!YZ{8UAxn96Yg&ueFr^2EXTZW}Wm4CrP}dWPS=U zFltcw+qd*qI6eziIWZRzRE3Y9*F*mu_rG#;Npt+yieHkf&mqfLhw67{+)da{O*K>| zy8$UtnGG?0=fG>?$nd3EO@RvbdsSxTqSt;m;VXeQhjBi|VW-OsLTWhPl9JgjyV_{n zLySAG?SGS`V|&b*6IwL(I6zK^?ZQSY^tUjT-qyY+P6vjTCOF8 z?a9ic%qS#+&&zMRjuU(Mv5ZJ7j6ZJ<}2R zb}VIHZFxAmlAqS~=Y;dlEsjNIw9^>(ewRen@I*;A#Kym9@uI~)!3PZ*UV3(trLVGO z4r~oXpf6Qh^a`RL=OO}fS-esr$wjrcYBgzzWsdId?@N@aBl8QLGDdYAZlZ7Px1#0s z-1gfC82s4XXLy&cV~r%}?&T#8H1lgD4v`GpQAJI^Z?3e_Ynu!ETfY!I|5(0+sag&~ zj}RpW9UdQZ+i&`BoJ#;(zgH_2hn$hIO z@ALa%!`kuwEJxRDK%lY=;bck^4v8Kxi)oC$x6;3cYgsE%Qz53JojPr|&p6~q$(-~~Y#d8&xoUh8nmTwVDvc%)H z>~hG9PA=WcD=P4Cam_O@Ve`7XyIWgZ+uM2G&w>lPrHS=z!&`5d-aZ+9rAG~C@Yq?{ zyp0;z+1pu~;UayXG5}H3Sr_dj+SFy9c1>Oc#R6jmMvGJ~-FYDabcs|l_f1WW?U1i{ z?&$Ad+pvCz+r78Pc_$ehy@Q?_rQ*9_hXPAp<$AAV12QRYeB`kH-fM4K%#R_$e0+Qm z8=`k8k*pKR+x#JGYW@N{vSPWDb+p2V2h->C3tYPP1xtiHo=gfP%1c;6 zW!b~GAB>hP+l&@3S(u-1*u$mr8fUQZRa*O#Fio3f^ercl>Z(Fd<4Dr_dn5DhVbD;( zDQe~f`%m0`F~L)C6|=uN-vC1Y&}_bs82YRI z@maLD7bU>I^b+@AoE2rhfc_r=hL}{j(#t`5z(Ffw$*XoS;$s^!!3dK^EUwS87|WL} zMG1-bd?!>jUuV|we=)BG8#enyCC)hpDL+a7n`*Y9J#4Po9$g}iY6kYvlj z_S?6xESK$CA_hSzT4VqKJ){POc@c?VTeENKQEhNx2pDSfHt(GSWo1kWyS-|p6jh@^ z#Loq>qRyhrkrK$1#Q9ZXCIFlphcK<^4{#rt6)_ezHW<`i6LLnRXvfr>SF#atJIV9I ze;x;OqCH5$Vn~6-*EPd7+zZ(LD1`F@{D;GnDw2E-4OSa9c7KQhO+>4b=Dw+`t1BLI z<3|5`c`Y9Dv{PHS9z*ccx^P!$InDnD3$OEjHjj;sjR09droU}-W--FtF`RH(l`}bm z`li0jp2TXhu5cuD^S@go6>&LT`}lnN~eYFVl6p~)QtYdk}a)vEWFt!zWg$hNL z!zL9))v$VoJAt@j)Qr^6sj6LI;twKKBlu#eX)geeWFH3#T3G=vpWWGWW_gt6Xcoie z9Lyaxq-3I_A$aQqjRGdW1!9%Wz}LI-F`Y9T2YE#*Zd#9=#0W*^WcR@*ks1essSc zdn7$-cUO)WTbi3oQY0?FNW&up$GvxC)mb4T-j$ug`Q4QA9QucwTLk&ND6eLZRDM$c z4G71M`CI^nJyu6YM@RnO#g%!gJ{LJ6tEoL*?LBRtel0Mdb;fd~P2daei&-yeo4 zWB~t~3QC;};T+_!FHh<;B}U7{^EPB?Guth206}2H*sDrWgqG!MMXtX5qZ4iG%KIweCgHIm34opYg>CeN$@fuHVhO)yZPd7S^W>p z)RbHt=xJ+)bY`2yA4IuQ``NRjqwfuOot&JMknYp^={GH{nmYO;-Zu5z2(rKY@AMZm zO#Z)H-_w>aHT3gKOIT5ZxOjLbFg*~myg4Vp_q0*d{Ws%{)2z6E=QAMQj}IMc7fQ&h z<3PT9b04pU!D$r3?82QF!rBUq;yywGH*-Q=SC`*%9-`WFJgs1GZm6Tlx*up?9&?1w zsbB(N`dJj1iWVL-VZ&LPpGVoJg+1V-TTPa8Go__*`WaWSoF>R*bsdst7Yi%qpRYY| zOSsF^uyk|DcI!7${hyz6@fvU@AYnj7)>$0OQ@x;HC%+& z`|>8L^U?tbLC6ZXt#b?yHDVmuJeNo*(ZBDUYPG7OqoeZ_f1hh;SIt5@9Bbwk%Ue_c zncVlk1<_BH6gWNqe1gzl#{JCd*eXri%llosZALV@E|r~I-4tWy<%I<`Ev<4i=+mR4 zvZ^XL0H^hSZZ_Z6F#0f&<;nALW)NpgeLRHFx$~Mt7}u?6v+XA(o??E95CI7CMnb6Y zvmmP69K^_w6j@xnFR8_)S+$7KZ;XWa7zdqdegZ(B|NDtmIJ#WUT61{3JCOTYf6vd|TE8#jOu$2PSA|+6 zPX1c9CWR&y#tzoWCU`GD-5EVlOVz;7_Ps~j!P5F`eD2+5MK!Vyk*a_!kIgj#^4F)B$r2ug&9S!uwf z@LGD9;Lu-jqH$*JTH+0a5#@buvw0!rv}CIi7$#~xQ?uEpC;G)8 zn%@ZEzihq#zMs9UNhUy4$JVb7`~cA6;^N)i z9Yvy4>@Z8(JpjP}&lvejo%S!&{vBAQ!ZiX!7^qKJQ}9?*lQC5g-Lk%}o1)&loBaQ4 z0ZiCNo!i0d3kyZnw)KN432k)0Qvd)Ud=N<3O@z+#a^zwAP5x~8Yv>nI8#a$S@u6x9j`khBXRVdp`;{k0Kmt`2aXHYJi`=Q+>z$Mdx3?hG9?g^c5MIc zLsA^S<&l*gPabBLeF0Tqz9y<;kD1&->RR+Q^>P)jJgDAu)OJ?b&W<5whb9EhhhMKt zB6o)~sF(Oi3o&s7<3osJXe;<{Qxki|Lb#I#@&n$@hLtGm9uECs>Wy3fj6tH#V_vqn-<-~=-2 zBSh+4+7e{{4@mtNybMPyz<{DMOx6WU?=uuQ6My{`492rxb+!EIxwC29Q1OQ$&9h&cWkcZJ-d<;CXWeTs5+tnSB^w$VO0`RpdWh}U zn;2cjqP?wnHWuZx_(mc{k{8Y2dB)30B?~?yX!_LQPqBOx>%u4b71Cfx@`XHwjtM^vHt0_rzm3q?pp>Vu1yrO3?892*;3*l_go>pta>js%+uz>u(F zBbBMz`hUBkG|rla7;S%OXvmy3qdq*3;0q$1Tw{|(;zZ&5oHpJ+4lM};(E=svgz`Z| zVh=Rq8v8m2iJ;y%qINjIG;6jbnK6gSPpa~!rl!tLKJ5{UU|a!YTTLP^H}OE$YwX@F z#T)5KLX8QzQQXAKkPiFMd>J?Sh z4>YGuVVnJFq35+x4`g-19x*TuWDT3jwphDp^6>6`OhW2^@a}>DX2DD;v+Td@QC|w2 z)N2C-3-*JCk!1UJ@Qk_Y%Pz5!l9G_pd~Xl}+xo)c;SbRJDyP|_^K-LrO=V?LI|;UW zdbtT?(iDjhGA=0cfcbu?gNTR-Cq6QKkQOon-bt`Su^Yz+9syI1ZlaBb&u1G7Zzf{B zvv>cr&zAHoHX4JZhsVA9UMKkPJKYA%zW2a=1hstn^r@<<3I;g{q*bL(7h-23*L>;z z-H89&e`kH9hu2^xyee+yge8{z2x9+gS70QN+27IJN!(ckhZ=A(n_SCM60Y8EUP~rV zh}Cis?@V%!#>U1527|S>Um#+$)r7dFB2a>< z6&XFZq0s22nqb~V1EEG+^=A)()pCdY+MC*QcGaa@Q{+>3T~~Xrw|MWYdYeIMbxN6c zYS6}cYNrS$EEGvn_lgm7dXj3Hs({eg7DR_YLRgTPQNKk)!ff|vg?4tl3{A47g#}Z( z>`H~i`)LF7QokwUC3lBynUMM!Wz}sIF+vQ|8n`Rv)zm%X#OSQj9hHVe zt#&W(bloGn?uU3o3HEPmLzwrm`SleoX+z`FaKacShTNW zaBef9Dvxt+@idwM6S3*4uU^umS=jqN2jNdIMq7+s{EO8IkUoB zJ1}^}I3XHBgpuHb7AzO2G?|dDJv%{tkhBp^PfU=#75zRtO9u?l^h;ZA`_f|VVtjJ9 zyLIp^NK7n+f5txXU&qJcv3AcnKRrz<$FK@U7c^X-%5HDk z<5l>8-}#&_e4Fwi&x^>F!7K82h4a?yF3eqB1#B&V06abYZUv~Y8CE*5jN}T{b%*h@ z;s}ilMPh=Ds?TdoOw8!0^eyfX*MP3Bk=3iRD>}*5KtBp*(L@d=XAF<~#n08V#Y30) z(}%ju*`tP2GqD6RVM*%gzpm{@wQ1tHh=86wM=6i2W zbaoDf?XVkrK zIZ|R=mV*_7aPj9p!8*uCc{xp)Pie}f1hCtNhfo=bU@O1p?4k50q78fIvNfUNgc(^X zEs$h6iJ2}$163GeU>Xx?lZejN^?w$&1qg`3yCY$Ql8$22+O-Ylo>xqRUJ?Jp-dhL7 z6?}i9gAY!C;2zxF-QC^Y-Q5YngF6HWu0eylTX1*x;0`~?S!hI zrJ%qPB1n*&kPo_mOc5b7lYgW`w*6n^q}Y z+Q@>!a5^9fZIl$GMdRi)^PyTNLjmW6Flkg`|dL*zonmZO0VrXc!>e-#kz8$B} zO~1MgyBKBf5*X%6MmYZSx=nJA2`VTE0+|+^s5CD9b8t;FRaUZM$!h&eQ#Hwe6Hgq7n4gXjA<`j#b{8^; zAgcFCnyviBw56qmC=|-g`R>sdgv_j4Ws22|n~r6e=u>G3;%x3IBsFPMrsoOn>jEY? z#vuS%I`d*F)zp^4_}O`39|i|k3JE*cOW3MBLV+~bEAJ1NkGJ=1wL9LR5HPuRJSj5R z?1vS1x~w%7AgO!j5-Vl^r02U9t!Nh6XKm*P=MB}%P4Z z2IXnUeIg{UJ9RJ|E+D!n(UoDfsP=OqT^oYk9ehS#LU7$fq7Z-h|S@Anij#KcTcd`DBv#{3y8rl zR8SHmZ>x1;%`o#*T>KxR;TYmz*V}8|U-#F~=Rp|N6=XnUWMt+{{EzV)p`+J=g{McE z|FGJHnBHuU9_p>sy=GtuPUx)|vrI75Yg;2Ff$b2!ncyU*>W<|bgd`rXEHBs3`VJL? znA6&-L**k|=qxOMn(~o}j~&&oiqXx(!!tTEQm+a(3PYTf#jF(=S*uxMMB6LugF@v}K_W%PO%@SS zR4Xg1?n&P4$4l2GFxY8GLhm6*Q+#%nH%I4vuUdihp~-z!)j7)wgfyX2I8ErBgTfvv zX^1iNI`0P%S*>gO-vxp&!Ag%WiQL~eKIIU)y2e_3;Gk7OVsSDWC_o@FAaH)~$dWY@ z1&2{jimVU;1Zhcu!g`z1bKP)f%S0Uy&Qd3xrW{-zc2O^nOTp%&;W<1sPcJf3+l*WE zf~y{v$>*&O3=9m_B_)Ph?vAhI$0sK`+Pe&0pdiF|EgB_KykO~>nvPBldG+q*=C^KD zuyZDP6`O$qK!HmYN?kph7kev^z@GDOwEk68XFqe;w5KiXOmKsx%C6s z7>y#)t0qt=N_SZp76X{YtWab6a(pMI7#!v(pSO1&R2VQ=aeEof>$F}6q{tj;j977C z5H?zLt3*kdHfwqn-I^dm>vN&qT)*OdSYi9`#W6cs*4QSii%!cc@?{HBLq7;wp)z`# zpqd?KcuCYN6|n;ybOUzj8gv&Xb_CumHZye6tm+n7CgAj4y>4!sR;xRsx$pr1kVyc6 zQ+0I=q;MW?ZaC_F0C7cSrJA&l^6^M!o$>jtx7x_+-R-SbrTVSfjxVIp-$!4Nu|eqp zVP1uZ(T@G(uF$%vEo&mFw8evzDa=VKOXtscO>`jQIsJYM2nD7&EI)p*g^J3`))rmt z5@bi0XHZ!Fu*U5CR(??!p&NZGbHSs~u~q9&A>zt}=Pt8kU7nxEi0W_CchJ&GH^uMP zLwX`4{A%Dy#(E!lIE%eiTKCe~hIY1b(RLRZOg>qBD1cqq(HefHnun+P6%-|+Ld_|3 zF%iv{&OvXT-~eSk$PW>8B0stOnc~V}+$3Up2CsRsTB@|lVjX)a9Vqqo_8u7-fgTeP z1{Tg(-O92h=Nn=(&vmmF?KqN<=pdKL{eBhE2S}_7t#kWV?DY?NeIkOS1#zjo ztn4SWA&|IfrSexSs#F5V|AB-+O-+p}lNLh;1nY@_T;@wz@V-`7rON#2NsR)AP^-3( zLO@9HDa+X-S91*wqE)2l!2sm;dK{g)uMgWSzs}#AJPwSURrj_ZHeAZe?%OS-m~GfG zhk_S=2&6!g3Jrtz+^*9=nthgBRHd&i(RiRTO3sYZ1rCuzC;T9Z($Zugg;YctV-^}S zW%eOwX}?%&$i5(i+WD~L=0#`;!_Qv6zLFZZrN=orM@{nW2YwWzb+KqEdKkR^eKFMt zDBx-|4l?vl-ri>{FY|P)1gZPk;P9Bx^!x^`m2$w+vX2reN&<5C+FwhC-ChAGKuF=d z@8>XM_DwXA%%?~`oOlF{nq`WVD8jA+$N2d8F)=awm}h2nOOBkhz@EMcw5Sk)9O2FB z>p7W;RP-8Da>wL!vx?K|Xs6FL0R;7{tCi#CEG}9!z~F@wHZMhKK-F(ue|x&>;{(DW znNFK6r*n)L9jvwd%dg5c8|@^GZsnbB56T|N-yhfn%CroR_lw+hR%LBXvr>LA(ZjKq zw6u6n=J4_7PRb^AeKM|jg9glM)iuMdkAxc?DehpU7_T1vK ztIb~m3P(N{F)Cu4!c|xVh=L&jI2Av>x8y{gOuRrTc4uTBh)XJ^{E^X6=ih12L{!xk z-&H8H7d5G(Dh&Gi$_J@)VoGNjv(5i7di`0VVAAa3wSz&hjd zE7;nSecT|+gOx@g1X26z)c(;JF;gr`EVzV>{OaA^UB;yC#Gdn(W7^K|zneMB|gnR%;j;l*NnS5{uKFfxnoIx-)#VHSz+Axcz8;k{dqrp)OvZBj?ZnZ3!C|Y@(#^nbcBpPTj77=4+EXQf~+Bn`Pc)(By=8Jg4&R8jfhrf{HGo- z-j{TEy_rlo{-)~c$vx-vw$gTo4UhzCG?FShI8>*n695iRPiNcpbZ8%!F;=h*nkcy& z7+r$(tR9DMxl|;0C7IJ@Iq@1bX+hS+tg{&g8rqgUlbx-ktcC%7rS>+vv&nWxkZP`5 z25jQ!DyMN1w=OQ59}9^*aafn$V*l!gBBf}7k`g*ZP}et9EF_T#Q4*Y(<+D3OMoV(Z z0ZmtL_Pp#*TCu3aTW_5Cl=M^C*@M*O67UV{86lyFbn@qj%!N2iH@U zs%mqf0DPMDaHMRg8WjCS4DR$Fv9^G?%Hnpcy3@*Z>8Xn@mbm3ii=l#ESXMSNHUap) zyhiM>*oR659!<~P%VvS0k);><=TkqCehfuI;1r!Oju;f6=ygh=P&r+8V9c0VPDf{D zcQ|phNT9K?F(V6M!o2R6=Gd->#lw1d8;8FEXHAV+PSYNN_iVt?qq#WeqH?J!De4qB z!_IKO-}4vcfW-uS_dx85^LY4@}((-Rcp5-ogsS2DXZ&K;1`HGZS zgQg$nnxCW+g1a{*qwMfW<8{vODjuqTy^OfJy2@s-4v*ay505Sj=l$8(aOhYS1?eFO zg|Zt|l?Vb2+ahDB%?fnR=XD(LeTT-b6ha5mZ_Z<9BYpaOE@*gPW!)V(GF2B+rP$fn z(tTSfBeiSIA0Y~7K>8)?|C0!qF8fv4djDj`X*=tN$snQW?7IqfavaLIXDt>sV2mpiI0UfWXc>Q_@k`M+EvUES!Y=X5s;@S**atA$hCFr4Z`k?ukAZw z77HU`(T}-xWs-htJ}W-L-GQCI@;YYi6G+2^^E`Ra@1H?oC(V^Q3pBzamOxT$bvA2? z0ciP!sOWUa6jdnEMU`k!_HM8!JCCnIw?Jmjg-Th^%~NCq_xT=*FFB&Vj~5yw*s_!Ul(lgr5) z4A-u%t*!l;rKJ(IzSzvj^t4WjN>5d7sME2(*tMA41?N9mR2M0B_mITZC)e3f&dfL* z!@eW4SS*uRRa4U-iT@@_V&BArg@7^md)U=~?n~z|#j^y*Z}6KNmWhmKwO4NFbXjtY zC@?`YhuHFCOYLv?r+EOP#9>jAPdNv#{sE;w7dhT*ug6n!Sh&n|##ClJkDv~`vwC3` zYD*ea_oWMccZDxsW+rP=FnUzkO^V!xvE^qX#9PMRN4_y9swwhtKMu=b#MU>Yx5GjJ zB1DDJ#aO5|`S|$0Jel6D-&~g&tlKN~b$9AL9!G?&TwM7%RJhHcaK9LtgA0@O6Bz8g zt%vdA>eqI3X=xR@37ZoIC73%w>_%8v|l)&`QHZa+)n}{OBD5U zxH9$J8V>TWk*1Yjh4OUHuU7q|etb(}0w@Ag%X5GV0%yz`Ha*drv=}ks4Z-RmiE8-> z<^Hdlyt6DR@t-&8e;@kHWFQSuGoc;CB#jU~zPX#tj3zN9qu6h8th$J6M1}EP688h0iygTcV9$smy9fs)ZO? zLIH0x%cbTQXCMPFgfjLrpE+hYFZ%A2eE(#_$QlVOdp zki~*i_~}flZqDsz)1bb;(*#gGFg`+DQ@3B z`u_g@n{!)AN7wd5-9v1&6$B0{<%Nk*6xBTKcWmeg+xYH`xXN7~lQp3D+yRosGx3sr z#=jn3-{9z{HS#a}_7+-l3}`6fzy<<`l4K?g4)r;<3lEKTB;1$Ss@{DfR6c{t>dfUl zy~Tmwud8?G)}{3ktqu%iEj<(_k%+Q1^BC8Er1jVTjG!!=V|1dNp`e zG2U7-?yGq{3cA|zG@n}PSeU;)rVvpo(pF{q?JV}-vrzWsRNTC4%W-yYPEA7tghZ;U zsyvx*N6M=;Nb8{jvjcn_7S3bu?%Z<@ie=N4m;SIbFum>LMvCYFYN+$~_HmgZe!&sg zm-J0uTnbzYUcQtxb=EoVu_YKE7ppWXEfKY@+1E~0z09xp*57PY-LW5ySDFt9S>p8` zV&E6V_TOeg z7Vi4=IJ_&`o|HTYK?DiT>{>Z=K35IH!J3~w{9TJ(4+3FRSTu61dw8s{T{Ii;>USv* zmA~!drO$-ST(M=fr;)9%txYHPx9|JiyEdQGh6zT@>*O+6OB);ApR494_yVeDYn1t4 z*A3p;y+%|M`R>F;SKHJq8J6^9zlHAJ;?npl0*0iRU>robxu5ovQHxJXUQi;@Q?FhimQ z;H{g6qaae!e4~60$7i+ZZx!HrtwpMTAOJ5d4dfQLq@P2JHB#{;)MnjIs5yLiOijC& zS5`F2O3n^X?OrKUM${Yy5lv)QYm+&C!>N%q+sH;N7Y=1MT}33+_28+DiGJUwuxDe> zq{|-1G*wjXCFBKba9xfR=3F+tX@buy0K20Wk)ZM)CfRGub&7m5EfePQUzcjhB!x=2 zugqt#+y0DgD#q(&{}!&XQZ{0tGeT`Liz@RO&z(jhUC|gep@Ny7fDJ2LrBGM`Gup1( zlSx>RP4_t;m7bXq#m;WeD`$uEO{MqE2R(fK*2xA6M9Z1oJ4*7*fF_SImY9;WSJ=v3 zUN`^CI=hrnNO=Xq&{QZ2jaL9R;BcL9sm-*>*-VBiPEyF+u96V6PJm6prQ7>?FN18h z$b*sE3bO}_C-h{>0TPd}ua$(l9D&DRWVA zsKi3XS|9GYX97hX_ist&5NfB{QE(O*Tf`)& zo;$~6bD!KsPfpyL%;jHO9JF07cOH?O_EG}`9@a6=a_s?&SJF@M;mWw|Sk=Er>fI$h z)>W>zuTwl__aAx^>JDp1*Syt$kZ`3%RL~++Sz?^_tVW_*x+2-KT>5kG%BfTa?=ds@ zY;So%-)Kj}K#+Xc^1ZUGOz5;6w=jbF#cv@tvNJ`MWVyXMK)awc1uvS(45+3S{-)yd zD>7eETCGRJs|{t!AQ}jWR-RaOX57B6o%TQm2&&FXZtxp2n?ygO7pnTmG~h0+qL?GW z0SNutDk24>{wo(i2cs?-5e~M7ud-DkizRU(YCu&jS)hdgQJGIM<2 zl^aHYx6}b{M8Tfc?Tda9FW*sLWJi*Mqkdc;eA~|eU1-s4rgGJ>3|~8VpF<=2*C>0j z#>esmiyX7|N9bqP0%rJ#!CVac4yWz!zNB~I#m1d)4L&c!8HvA%v?)d70fIwSpKkHQg-qh)WP|5t!Y~g90uw!}b^RXPA zR+ithokRpf@@(D7@D+`3o?q^Z4z%ap(F^?K0HJriXFmsVD9^n>QhxGs$Zm7-;!Cpb zZji*y&)_KQAfMCH^_20ZW_dR|lU%9{#PCSWWYDs z#~u%Q*A2f+`_bH4zw%(QyvhN-Ke#$h#b>|N`e(S7=8N0@FK`g#lJy(yAz z*E=u6beY#7PAtV0Heg9~|8jRb?elt@&+cXKx52UVsANopWQJqUA-!m$38<1MV+Kg- zxr!OaPP``W+Bh^bbk;o7ZJl4p((|))+DJITB~r57?i02mBiO+_zCXENMX+_`*LKVY zq>pPiN;v#pYT2g}idPjzHz0ani{cY#*T*uF;|?7li?*Lq8du+|<9+H3Yqdvfx_|_{ zB{hQyy^ks@1$ER98&dl3KubZL1jQqo(7tb0LlD1$1KGJS1O5{4*|>xkZaSm;PQI`| z5n_59Y%sb)bExn|RC@oe6|)F;8snm`GxFOm$_%4(fQ$U8T&BqH^Cq@#u+DzxAXnM+ zx5kY+dOYw8O4oK10C$>-H^~#&1T5mho`rDm&*KlOv?LOFDPv{V7nev_Mv57&V&ys zL#ODtmzAVX=lm%bzR4)3p|EJ5l8K5W^n9f=Nl@EdXD`bfwbNuMkEW3h*?i%j9G#@d z)hxGPChhw|y|rgz!5QEjQup*jVT|)&EJ1&r==^NR-BktrUsN{uS;#g5N>(c!xWW`tNgz1z|RuUxGx-m+wnMF@PGh-N87KK_y#=I%%pI1n$hTe zMFu=*imD6!X|>&=TrBsiF?<*&3`G%d0;cyU4Lw6Z^9)hAx63!Dx;}gj=rk_=lVZTcCSX*E^U==%;k(4viw(P}alBsmeMl%2?lLR20 zc!hTmK8PoA6y|((a~FC3jYQFQ+dXG0_UALGpKHf7D2MVPRQEY`shJ#yiX<2xtnKUwZsvF z62Ew)Be2{OF6H{UZ=Xuh*ohdT2ZNqB6tfW+gXSsq?YmZN?hB^YZuR+P0gZhtB7g7SkYtnG`pcQy&}MtQqh$vRghu`ZgM z_at)^)pu4etwaDG_Lr&?%<`OnFL@Ilb9Ku;>A9x%OaS7O#cp4yg^Ca9pIMX>P$N0Q zx3M)GJ53%vrMFgFDS%WiG{1-zU5`)ruY5dA>Wd0YNpYx>jnu`*J}Gf@d)RJ0s(t z`T53x_cu|JytzOg@4x83Gwp{ovs!d^47is3F8@x$;7oSXOX+$x_aP!XCeGci7Tv11 zKhXh+O;#(L*0~?zf`WoFGBPI5O;Na4wc;MzTql}ppL?#>k)Z2|7M(X09mcEUSwZnn0uY1gk_ zv%mLzCG>sZFi)%FR35|+*iN%O>06Rusdr9_u5p3#>0s@(5AnCr`*D@oe3<;Y8L zz&WvVDVxUFec?99qHN$nrjg>Le!wxQed@#o>T>d61_>W2JaPCZsT6<+*rRzIj88@D zh6d**cg1s|U3-)lH@H9MR{3h@WB`pwy!o)7f5T)zUGG7)l_qUT&q?fa?orX{HOsUE zAHLi7iMt1@ul!LM3^4Sk>i$2QrJSP0U;liPQBSW3R6hwUHZ0mUCq`9xHK*&e`m*p# zBb`@_>&WzAP9yDT<9W$AnkqV)+k+%^bkDh2mi$X(e(#neC!RKL**4$%&B#3RhM%A8 z0e9${ire^{#xk;QX7c0#OM3LY`uLtRSGIhyNuTG>xh`|5lT zKa?d?aZF7mAf2}tF#P@2FZ(k^mB#!>?3-53?zR(|6x6rAN$w0cy6+PBhORVcZ~T(W zcqMb2GM;SENPDCqrXnhrRZ8#r6hu%@-wVWlMA)A5B!R_RBXOl1KBn0C6aJoB|Fh=C zVZQ9*E&aka6({pi%;NWimT8fF2<@o0W%B4AEk@MLkt-)2yH2{>)0F9X5DbB0|JdSW z78uuAblrhpgK3@d83O2E*fZyX1yV=NI`Vpn3N2rK#G>srr4s5fK~rte*mdMY(4UQ} zwtdwJqo+8{DYL2Wm{zZv5CJ_!?`En+&^F6--6#Y1GoWt2D{g!H%QlCkQbZSi5;Cl? zM04%b*_3lQQeJQOr%wyuf^WTc+qE|B0e+eO%i=O##%jiI#*-}+UhTAkb{&dQdLLh{ zX35b#o|=j1c{=F#SWejXJg~TM1w+o7^J7868fEfYzk1>17CaE+o5aT%Nxfu~EfEqR z;@*8IQ-51qJL#)9_YT$p)Im(Uk1jvnWJgW>+0!?7w=xzB?TP2cXP2j#?C|OJYgzJM zEEn$VAVJW8Xus9YvcY>4Xnax|(%D|A1X>dA{wc_`WYHwNX7K ztE^tMaXn;bgBFxgER$i@I7!*g6A>LQEGH*td3jmR;bpG?xhZyUw|(w*gV!ZKtjx{L z?F%1_-MLDN*+FrniWqjtkek5e+cANDa)Y2Qv99?OQwm$TodJO#a`V{p%G~v&$LXV{ zja)G*iIU9K@=5vobK`b)1F3n;ob{Z%nvrcXgtrSQ*1Qyot@cqTHELL1-TPC zXn-85Sb@&ZQbVyU@-qbJVod3>;w14PIR?lV*A*3s>!fhxH}PeTyL)&jWUx{l-m}Z) z)S4^^AV}Ba7z)O|PD@4Y=Ni^6;UP&VC?F3yeHky^^5M-fWE{F~ql~=ttUrynF;j_zTepZNM0_RiZFxm8JJbgZt>uT}?d&rQDP3RiGgCTnYJ z1aT5NJp$azFP7|?WTC%x>2DcUUSuXV)BW?x7yC!~;`kL;RhQC!3ZCOe@m4!buW4`6 zmLhx9L_KQ$}N=Z{Va*c;9ZC z)Kc}$^)@sNWK!4RnYaIxPgyi`G^QqCt$FWR>Nl;9nJc{{o|YPKbw)HuaPqyjMF;!) z`TI-hLGeNi{hmqM`nrDW8UYZ&fihe6z+myl+hS$Vyo|C$(B_z&ki%v`%7ClNvz)zE zS3`p%UlvwRD?Vsc?Km4Ou)e>)IMH0${}Tw|d`NH%Kq5jm#@?l_XxQWe9w$Q7xp{TA zRK?Ba2S{AFK)&%<%3y82wzaU(>>?+Qin6yy7y1YI!OcS)m;2o?#h4P@kt_50J+gth zs)|aYEIAK1Hx3Stcsv`^knykI?O^slCJhONQhwU;YXk~tWe*e}xDv^wrAa2e6;`FqlwA86tw}9V8T96H)5q%`S z=xaREs8YT%(rkiV`|Q8~(}3f!DKkctTn?`mN1~|CLSg&XyZe4{aNCbokN4J#_6v6( zmLpT<_!0+8>Tgh;lP*0P`pWIkxGbpfDZCBIX1B`_vc!!WJad1piL9%og#ZjXg#sjkP=6#TOE(O{G_ToLezz{| zrjXB)q&ho4Cs=!g2s|4Zt($vFjHk}Kdc@Qe=hrjDl)M|cNL|h-&oC6Qnfe9;1ptUC zar5w;xwi_DWvNn=0efn4zfneN&(li4PJ$5|HfY0#ZCy68f69?hm7Q~I)=i{PAi%=< zCSFkB1DgZolDMGDFtr6cNMbR}f0O3Z-8O|7g@SX>*dhi*#PmH48e^F(EG9@qJ4O9m z8~laqY_W$W;IBc8D|!J{+|x2WF(mU&S6Tl zn@OHq1C`m$NQ8ih>h<`FLl#bkCkfrQqoIDQ8%_}wROv4S% z&&?&b^L?DjS1;(aol>Dj00bGa@SY4g@%A~ZJh8P(2g9d>>6%vfT8xc`E#5`#TOuxO zF-@hmIQucj^xP^hEI4A#wo=g}$kbO)JU0V4#rD%koPt^JRlOIo>3fT83PnlcefbR< zbHympYc*;6Z90YXzN-&-9)^HiFneYtr@B0O;-hbeZQhM7`^w6Sj)sOsZSpds7i`iQ z&#q?Hz0c#0d0e|GjPT*Nub;b7gmXXgE7a7+(FNr`&dbF;6xK>O(q;FZxz>~oKteh` zK5jYz!=q4m?Ss3E+Q=#~R`qR2PbSzwT@|;!~sKl`5r8TVktysZuuU z{7Qum2hxm~n3$F?53g@VMwTS;l<06RO1A$wx=yEV1Gz%>OuNM}IALH6x;mr?&<~na z>iFmg7CL0WV*n;hI1i+YhxXKN1t8mVa&Dlb!^6m^Xx%VFWVfW^P**D?)FTr}!u1dwM$I+_)4LUhxBB(~|A5sj|m=1RBNN?JXN?QZ=TMh6ZMg zcx!9x$?@^PIvgZ%sC0KH127Lxh7=V<6G$n^MONP4-joXw>I+T!r;7WHsgik4oSRkE z*fjOoT_>NOo~o+oLkg87B0YK6H#P*^j#XLm>`3BkmTdc%#sEa4%)~!E_g9R6?OuDW zO?l>caA#|SOKAlO{%C3OzF2SH+2oS|;x~TiL(JE*V}TA(C@7rwXLZ%Kwn?2mGufE2o}Ww~^tG7hp~ zCciX2Jety1PQpKHr8LxQTwgQ`$%7|J%KXu+oCis#b-DW6{0lCp)$~u$3N0;ZX=oIW zkF!7z-#3lo8WeS@3jYq<`tlcHvx(3`WjmE_6`VP;qYWREM@9IiTKzk7gK*o{F`d8WQOpzq`p2A!*)H&^_y zX?@`IE-M!R#4sgvH;o-DQ6<_2{xS19?6C>!Qltpc9$yIk+{pt+&X$&zvhs5L1k}!L z?R%FKPqm_GCZem!fQ+opKkesI{EQjX7@#R(e@saQ6b;y4a=iuE;`)X%&y{_fPo`;k zg0ZF1z+&y2W~+y>9S+&Q?*Ht_2Ev51+!Qe>xr**yOGF^P`90m7pWB1NQzKIU6}~Ei z*948vu~cwdrX&6IEvr8F48KLNY^CBopW5KFsyoM6(wWtWvu?idJCEN6`8Y(0_9T!d zYe#B~bae#^S;7PIDO2DSMmx5&ee|1F?EL%F`i;|>&7?0nUP}v8WtZEm{yKrnDw4gI zGl*m4oUK1(k#T0^cY@}Dv3@HAOdiAf$bg^c%7Wi

      08-sr@7G@N{6}D0;{sjLtNh0@tlc>=V(*`Oh`&;FS7{ zFs=R6=q^~-h9#Bmq@WyQQck5@&s`fHF9cv+SQbi$S}3 zacZgeAcMexnn1R`?hZ=B^3$$Gj=cMkn)1;_vxM}kZUIN+pS9%4c<0nHso&Mj`k*uO z_{BJ3JVvh}{L(~2C33gd)z_HhS4`D2Y^r>e@`{*J6ERJzQ=i=L z5aHLA*X|y}2T%YolOWzSOs0Pz6Sq$Z85Q?hX$Om5=%zGZ6Byo>4ZkE5MqLfEvJL1E zsWo8UVQKa|aned}s&*2jXsnVl-`5)0p!4SJ>q0woE8ox4mm&CIt(3>fzxmvIhwHH0 zJ=jj%f7jwk_2g6)f<)0BgRy~0A^Cma$>!fISM*i7qkPSu(BNklvT`FJ)xWaMqx(~y z!4!sc=z9hdl^6u!tT&3L>7U|=$+H*xeXEF&e(?{F-N(I_c0a+q!`}2jWxf_x!%feY zt(^+gis#*zipf6Pi6walwyr!^U10bNdx0G}BcJEBxo#B6SYGvc%Z{SX<}PI-zw^&U z?eL0AJN$?xfpSU; z(1Hsh2$oYo0&b7;tGW#eEs)rqp>V5q5cYT-Be9L&{3hIJzleT#Lawt?FPwy-s>VLt z@x^;LIWrYR-<2L}m-}V!B1xl%mX7Vn*I+mwBrms+52^@~q(P^q00sJ`up#^tjY}l| z^s(pppZY75q%WS=w$GsJ*oHZfT8YQ7IQtKb&2%3_5#57bosap*{dg5B^rK)%+#aVx zsCTR3ub)3a2)=PUcE6s!UhXZN`OJG~FHhgw3}t1j?h>b`pDvV-3G`Pqe3%}jE2c`L zI826oKFz7Ui7}<$JhKYr5nTxX4{2{57ge|R4---XBBG?g(9%kGNVk&GDg#J&r=TLz z?a-3a-KC;1v~+iOcm4Lv=pEh#(lhE1uE%}+|lt(O=E_g=sxrlAbefE1DAFY@^*Y|#RQ_WY`>#|30{#lq1Xe8 zfg;i;^&}UK!@~HL#e%One|CQp@=Tr4kX?VqSb4_Y^V64~bG6(^s%|p+&YEKDN0Mvu zr%?wUckc!*uB6*tKPs4Y+Avh5`eJ1&y2qSz)iKCjvn+5>7h-gCcE*OcFt2h>DY2EV zA-k=i9~tXvP6wKFiH6jN%aPa1bFKP^!8&+WR5q$-{HUqk9~1~zfr({`}h+R`lyQN<-*L&L(7qe zi<>UfURqVwlgOy(>h|X;K38s%l5f1bh7EnlZ{M~h(!V?!w;3-t+wWj+ny9u*mk79( zoSZBoB0@q!Qj1Sc#IjZV*-gJH51bn8Eqh4CqO6lX-5zE@%n)5XM-8T8#w{OY$ z?InGPs%)kWD$F&c$R9SSAJ=50*xA|jk)#2m%D(|VTpPs3!@Hghpj@!>_HK;cMgxmp zUpSbVt?D~Eo$f8(th@mZz@v=)R-jvT!<2|k?+I!BUOO`?#;t+Z`9`gwYT3${yRDR& zo||J8aR%;kr+iLp15ZgU$17QRcr<;8t}m8FB_2O!TJv4aJo8mnR%T;ip{>3B7%DHO z+2nn>oZ{11UHxoI$_YZeiaM(r|_$SDU0hZxegj?`v3zARi^j^E$oM=sPk zuI^nPPp{u;WQqLt28+P`cx$pimsguM#-{PqL|r}Fa(^{D<*LW$Dt($Dr^#(UOZ<4O z%EnMtHBC%uNxU_bTusb*Z6JqUDV|s*=s>*EZoXw}vTmK7T+n%gCQOKW93tXXTkmx^ zsFk_Dw`$UpY*jxnQ?~BE@jZ~h>+FCE)^T?+=d**=>}2<~1e?ad(9o$`r@UKWL+{f? zpY24O=;*5=pUd^N!Mv%dsmBi{sTqg!wbeA^N{h|X_b38N79zNkhit*@{5zC4RLw=*C3Ohx|l6&FYU z-6;*Ow3L+T>&xkDIUfq23%jqGUxPbgeN{9mvbMICBzlagjR(#6S#H*!pPzra zzr5~mxiwK!Qc_|yR&M9)EaGvrVNuk;V?DulIT&LWr)p4RznCTk%nITC`}r(773MK4 zkvSndbX%csJ~A>g)^6%Gc~8!iCtJ!adDS^@M(({v#dwE9LXGAXez-ZVWyWvTM?0F{ z)YSAfSn&%(3@nOjKpoxP$$WNcss@dor$OwEuaG$Wd#rcHQ_|DZ?KKIg-h{{aT8@>Q zMJBQvHs+&_CJTGiIT31(R%S1)>b!K3$>H5-!fq?-voUs~TataL^ zELw*QjTQ&e7Ay<`#t?7cm3#|qQ@`8d&?C(7_WCsC+HIqxl@`LBO(=T4!HFj9a}P}E zb5SCn85#0`ppaRsaOL=Wf4>@XK<6j-qm3Hd*~jx!YbN09hW&j==W4Wu^;EqXPHBI( z%5a{RidpJ>x=w*+I}y7<^lALoz+9u(`9U11kF!^}*V$?|dR#RK02V%|W8dqIqs?)B zphv?+)6>^i$JNz*a!aZ;Zu?8&f~wscmvrHm$K5e+W@l%`#l`pBcV@&dFK>}>Nal<- z`84_a`!7?f7UuDyLljfd@hCRd*4CDniO9&#mlABQj>GD(xLocM6F*Z|2k*EM5D;YU z6VNM$+iPmZ9!SPB5_zn!b6;(ofpn{^lN6r^vH@K}57!P;P8Q0kOX_ML1QKkKnh*wR ziiV@3qeDLFC5l5lmLp=X{sw_!@BRS-;U8O~fHCkW65rl_d@O<9vqm+TdVWtdOPoH4 z+Q=_C;o?RM@pKSfRJeKZ>0Il9>gYF*l%iJRd5;qC9aUT&!;9Pc#71K8kV#sIQ8{p+ z4_kb3fFB>BgNeiO|Klewf**mJfgcsAsRy51ppK3vxN(~gyc!tkQrqmSbl5i{Dr4%; zL|xWId-HjF-ju611mB3j{$@6NPZFQ^7*b}|IRPsfpU4u~jFjbbOJ-2n5A`Vhhf4GF zTfI;^J5LpqFYV%*bw~cHe8-~#$luEdJan0AnbxEoJ7&~|4LsbzarJW$`7R6HESm{o zqVN}%x}dTGbsF4yuEMt%gl$Zpl)Q!rd#KU#DZz6!9m%U>4AM6r*?oHbDdg?l{aDd- z7M-)TXV=dws*R2xT&|3{T^O6yxNTq9565#kq`DB`IDtuHvw~ZY_d1tnuToED)ex=I$ z^2?dHru+QiEq$6++T)nLUOcUiy!(l=#P$2V@%jvXU{W^xOx+Agt=?XBGms2Rdlt^n zm@{pKTmUFqWzxlbLEt4)(kFt#{8%3{V4FQ)(iHx!P5l#({Mp zLxU7##0OVIjXRlrijG@W-sls2M_gdLQhL3?23G$&uF9-7>z)!0QChQVX& z$>KAO!f#CyJu>>daeG6jsia6AMN!MFcxWRt(1&tTLYsEqC6JBZGm>1+H&7zsG?X~u zc`ex-MB!bBGp%omYc4COc_d5RL^p??#wPL>*o=Q38B&m_qh5a&vJkuZZP8Y$y~L_{ zc>AL;gVjQ6#JgTP0ynGm+ox;HIu=8H_~^ZKPseO*&*h!dpI?6~UTO^OJ_N^aXWGSl zj;gZ%jt0!>p;{16g!!Jr5=OwaxA`Ntsprb9V}wvut*}+m^7Om68mrcNYw_d~AM9UV z8Z&3^?VM^k?tAfnjF?Xw=!o0SYH}TS*8sD#k)vxnRttJk?_@0ot3XD~7ekgY~{@N>{nIbiR7#{)J0N@gI5;mI6)r_eoo@vd@QCb3ce zvui5iV|@6-JwZ`YtQBJmyYr7)o|V2{brjG2x)hY+5y&=rK0GYaLTuEAzJyAW^X>#0 zjDU&Wx4*DKPBMcOffod#KreuoAevg(kFZVzzE}5$K?=~kwBw6EdI)Mhx>4$5P_qHZ zHvzjhd(K6$~|*!3^Vuk@kCt@B4m%u~B5s`?l_%?>Y?O;AW&~vRT6XOon3LWDPV${;LaC02{_vG267U-iAc)|;d zvv!M$t0~gMMo#PRZlF({twgFX73we=U#_f87L3nFMAS~k)Gd016$(^XD9q-C70IjD zKXlHwe!BjV80%#D9iGp67jF#u9SWPK3SCVz3W~<;R52gHAd|+=L5buxmScwHN}{#S z*4`2~DU(F#9y!0A9YhXCz|JzfDb7=EXOhe+sl6df!a|*BV*leKocWe=j^t7y6n_@xcYW~%i22o z)>Fr|BK7TaYe|EM=N3H$Jym|W(>9p1{gf(WyNc0Wf<){2}$qL7O5r+*nOKNA5VDumXXykURXiI? zlm8<6i-eJn1?$7)57_p4Uj>JG9tcJyB~Rse31;e*Iw^#8C$&L{!!-ibjRXQlv~x@B z!@cYaJJm94ucm55Lkj(W{P6NPtarP*B*e$(s2P&d8Y(T%K0l6ntiHb#P)Vd!z8H0W ze9B|ZVnb&Fo@1GwZ1bYK6MiR=LoJp#Y9+FvBU&3PmvO#jHPrN==?TAjl#T7#f}DKA z{pH~M9Fn(;99x-e7Qik+VOs4?hn!U6RT0-UC!abe4lzDWtVA~5#dC2v&4948$IyKF zpe!Q0Oy=g^j+}AhlPbHHgOfA8=}R$9a@CN)`!9WRTH3|w(I7qTR3Udzx5)*~Z|m=8 zDfL(2VBa#RwEY^~7Im1;+^9d!x;`ZTVmBXRKcU(itHojO6qHA}%> zjIOuBTrSts@Xqs>fwNdWbR>x;ahdVbA?OFIG>>uy6nwyfKooiG_+H6}-0xTwqc5}Z z3U9bRdgT9%Bb4nl9TN-3lk=FHQNi(WZA>GFGKuf;x17MLs;@8lws`k5_k4=QJsqvkJZ}T z0&V|A%i6RzB&I6G=j1CaSl+#5vZ9?iRADt>6E3)}GPkU7p3xQFmKN<6pk5X*af^1Tsum#xv`F^Y7H;jrq` zyuxz#AZ-kD!9TBosaZ&LpXj#bL04VJ-? z8&KMCaCP(%!_ih?;D^X&tZRBD&FlutpL^Hmo2$x>ZQtu>4)ydKI(@H1UOkc0jjgG% z?C%-Yx+WT_jx7PQAi99D>5H{1w?fuND;i1@9NdG%)8Ud_czsc}b_oCz0&&m9r8{s7`v zmZ_sc^SkUN!J!^lqUST;;ukwe3~->umzkt+PO27Y#rq4JAczA*GkE(S=mazT#X5$z zLV@N{=%bcM+)fM*Roq=8`adbn-j82QI+w~D_$2sIVFqBpi4kP@KM^E7euQ~3ns|%; zhl$Mh%-d@_$KP;!N0zML$4UV(uABmp!*=ptR$Zt~N0ZIwDD@K!0+Ua?r!6#?iE$zjB3y)ydGrecu%hiHp57 z(tqYKZSwR=voEh9b9HQps&EUpfvZrB2nP-9i-XLe-X-q5Rp#{g%{SDb?x{{}tF^L9 z*I03XlAr*mO#-zaAkJQ9WbLgX5>>u~D`vm4f&fDl#EnVfv4$L?wBK|YvpXp{xN;J% zR9{Ph6`vUFb~2$uRt;9~Pcoehb}{2~!3gNYOsR)*zo5+Z5; zXi&X4%GA2_A1tzTeLW3DB0&MaR}1<&+m!NMA({8tHSN?$v^U!pu5f)~lK%Q|;pKC^ z?4_Zf%)2=%_PRn8d<<5!TC6A>H=wsc%;&8FDisP}uilzkUpQ+^8T1CJ)&S}&yJ&fB zO#L#rQ?jUCM1LGGA$Dr#4yVE(316I1dB@9D8ltV;9FWCcc5cJugnDRmEA0brr*&cb znF*$TP?>sB>2%`K%*@Q%)RW!PVR|I^fJ(1cICi0E3c~lkn|q)^Ww`2?SN^4et} zPpinL@l@Iz9hY=rW8?mvJ82e8o~QO^Gt0}zeG2St<7B+njw?UE!cO|OGSJX8r=ofs zZA6>__sJWFkaBx&KVV_mfJV@?7cPqFk8-1c36ZtiMsWfa!=$^JRI*1ZXQf(WWsQ4# z2b8gN7~;-UNhUe?T-I^Sj-GGops!~chaLA-*Lv{b%5UTkIBrmAG>K2PG&0STlkoBs zKI$F0DGnsdpt`YRpvd)wgWKiR`L@x^m(JT$1x>PPQh^_e8qefW_QJx$s)ub!g^6BO*T<{~c%Brq)HF&C5)6R0s0pe+DWSa!Fsx}V9*>l zO(8VZda9oBEql{NUt8O1S&zv1>2k{X(Po|7zDefS#f~_q-k6jW(dS=~GKGxWqxl_{ zR%~*;&X4Hm=;Sd%$pwe1?dJEFd&rK>=UYN1>s++j8I%)O`m^z79evW7Ip{yHU6Z`o z7!dH#kP8pY?)0kl8U~<^kwbjku(CAG8p`7Vc{fY>rYi}-2a8UEChPu|t-Eo@ zF~-Eag|D0lbStsKBg~N?+Ud-Ed?%j*DC89t2U4~>UPsAi_BH62nRKOxiL9-yG3|Tl zXL>t&?R>=`4Ot3eZ#+3}x}MC}<{XVL9L-dStFNzLz?2u*`GShaWjRt@UasDx#W9VC zi5Wh)KA7jSHo%y96+r22>)=3>n2Q50g(`~G5QRf3v|?_IPW2sVl2gA6latkcNL#4p zKv1v7(q9gExR||(#h&u*zBIjXIerJVQoH#Nn!F{(y2vB|d_fK$uC5m~Sq~RZ?#{P5 zaSs<64oijJ2v%%f4413?S!CGM*{L|ca>v-zR6(!8deZ&-dwe-LxmwnMfPn3>3WZg% z&9Mp~y7|oqKHGaZ9jrX{@$um&R+|zK5V$&-50g|M1l(j_T}6@(mqpRlUGS}2x2!2b zfha$Dvy#Nn=Z&iEStjqxA{UUrZ$`t6qP^6@$ic{It=GFoUuh}92`~YO)6g-HkljGY z>&$Udmw#sW@KB@u4%uX_lUh3&k0r5?t8GnhX8*@WMh4!e#*5GLfL!J0=RYGq*{a*t zsW8tJq{yw6}eDpQn)PnADBUY0N zwwj|}VTHO?)?RyU4DDYP6%{+r4%ZLk+}+*VGjwk*_oT$tT#H_x_89tHI<5Tt1Oym6 zZ>`AHiIJPI$5B34>`ZhzIX|^dwe2T6jK;IIyq`aR4(4f*9jqO!_H!(1IiIa&r$|dm z-d6VQbQhzy#wXyjbg5*wEaiqq(u@>> z$>QqHF7EYg@h2Jd#uiWlUQf)KGQH#L*RT6{nORu|wT_G|EQ)^O1)3^J0)sR0BUBRa z?hCm-ak)(=qofqiwK`r^WUpkIBH}eMIcYJNOP3G{Y24$?8-TviKc#cIzPdcC8!t5u z@&?K6xO#XH5fU;r^i4c{{`~pVrxAV6ftl~mQld$`GRK)XENC^6dgpYs#wJ#|DQoT- zwt^lSR+D?bqCjHrgK6xzZRUVJfi#0)VHYDZ@`0+vGyugIa!F`a^#@`u2GfsWTAeYG~Z<=adljPI0TPmXq4Id zJ^f&~c`hn6no@(+K5u4oyo%RyM2zKfkhr?_yLC=0zHWvV%uDCy(8Ks692p2D7+;H_ z!?{b62u7(emP8@}p~Bhq2Jiu(P!O~MyoVW%uP;di|8SHNswgCiJQ|=Vih&wF$sV4$ zs2H9}Snl{GUK}n2T0BAL{mTr`&x-?>pCgr?qj6|w44Sv<%9gHsq_D>00c)fhateqM zP+b^^Al1{7s;#hq1Ps?HKw~f=1Me6*>@7fBe1%CP;GKs+^Ta^k;d^-SQQ*Me14ic0 zidkxIAD0&BaX^d=Tv|;PuWr=OE2$N*+;Xw1rj~n(2@Iu$CRdi5=kk5-+77LXv~K_) zk|;(jzboVY2EK`jvNsz@%w8IN@D&)iO-nr9P=dv9{ z#162_!E6BKkaG}Eb_VhHsjcjaN&3K{{jb0wlo_#D$^9%(3!1140R~iYH zrZS=T@lCLrGK8!rsz=LA$vUCtL;2czdMw6Y^?*!tc6RpktS<$e&L9>R*5B^T$;nAh zP978d@czB5ygUaIr1MAgULwCkmLjCoq>Gds%E8GAN5Dsw!APJoK4`N0T2A|gG>^?x zy<8N%)pVmU7ngbtgx`Tan^2D1H@L+31`@Mn#8aSf1?6 zwt%9(0pP+-8d6v1p{jZ(ZaT^wiNvS_SU>Cc=&ClVZk51e<$bysXP>|?DCjX2(bUwWy8na7kd~IVx~9g> z!y|>?LE6U!CP|!%3>uhXxXlN48q$l4i)my+9|(R33W_3!2-a?R-v9!$3>|<%Ad=LD zp|>bSSl$AF*!Dob+E(0Wb#JjFCW56368!1wQHtwaAR0E|#o2n%wC8>oAfs}|Ctsst zfXmqp>Rii`wBzIBFLx(JeH$q;%2rCq8c*W7g^Q~}|KrSy&+DvQ(KSZj6Ckou_d%JsB>0jJ zVF5E!L5l3)-}#%5wx*j5n@oV7o^1x;kWf23VYp04QQ?om3|?3E)ukJKPwvHcX__Tx1CONM-Vdcy38H{tUjx5TSl0Hwu8j zyYHD)Lw?900p#$DRe%gfCP82_D)c=Y9LIfL0dYc83+E9ae_KX4Q2zaDBLYxRP*8&L za3mfSX!5*b@x82Q$JC*vW=A$BCE!hheIa78YJB>qc~v$Ytzcjb4Rr#NL4i*I)wdha zg82~-Mi+XgujvM#@BaY&wm3SRFJ8b%q8UaZ?r6}5=zlOs?_0Q8{+G{}-o4sVU3mA( zV&xvMWR$rqx2CHEmx|I0pgF@ajHxQUol7${nxYPXEFZPu1QY431ga9$-h znlSmRqm|A@2B;oXCJ?@;)c2Z&)wKQ*bgJG9{(}suDI!X9qR@Ta;0$0|N!e(AN%m|7KNx^>qH-E3pO&D$15qMplF7KUP9#6M^|GqKRpxbh^Guy1{0ALTv zEH)9_3Xk{97i1e7n0g@Hup6(mDk&+E2ULAcaq&<2w2owe`O}iLe5k&+RGR5IAE84T~W=muXLV3*Hr^po7z(eIQf7b|!gqO|5DT#S3 z^biKHUT}b|1sr^h5i3)mH zM75pK@z!L_ULXO(*}uGKd3x^MiKab)H z@;^i7@-L!&Z&#>NB=i+s|GXvdHW@m4hBRh(vFK$?(h|a~qi^cJIdT(7{6W(j`50h( zp;XnJ0}DTYe@ge2Pv5^wLN?c!*!61{78eh@c&DK)l&&+c-{F$Q#>TE~KQ*aCMn>jP zE7U5Q%2CUXJ_D4=*RHOv_Vf-ynJ;YDZ!;lR!>Wtol~r5~8UgQTjqa!t;smY_Ox)PM z+rd>}TxXjpuFo_tKq!Hi`kCL%F~(iTE;-Io*96NAe|uFgHHjvkjG02`RnJhz5dd#^qX45;U9 z^k;_wdJxdk8T5jJx=okiR1&u+ggz%G;9_H|<*1uixUUW5z!v1{^8Apu!nlL*FPwSw z`EQ(=rIcV2fgsH#^wCP1oL%8GSoJ>FexUMJ8*{R@by=oGi(9U~-UKP;VRXDEIraUd z^}+m8-!cpTWmCMqOKDAOqxpE5brC(==TB?KOO*eeaJy2iCu{ZVoD0^{JGKCZw38@j zow}`*TT+H!T*=@8ebGEQsc8DR%4T}17qpa2Q|orXz}|NZI`tneQ{esq;uv|#`Qs(sHFAOSy?iquTh zAspZ?n&4VC3HeIphoV~Wor1oFK8v5c1Y9qy|!1kEoE)f;>765tAVO;ymxc!^GL-gt^;SG}Gl}9j9U?;(q(~@QLK2{14 zTN0Z(d&nfn6i?BhELVWi0Qx5q-Zq6dQn7#vmk`?bfrLa1yYouSdG_1e8i!@3MVDzW z-Ukn$sp0^}lk!-uEH7gK+4IY_-1EyXFIUINu@|p2>(2tT_@C2dLI={VFxPN(b(NKs z-JWUyYNL*ucibjt10JG?sWv z-S(H1;<@0vYb3o=0O9AMjLtR(=lbdY;S%P*70785g(+4QjdgGAuto zABcW>rFiIiO9)w}$roSbZ#lq?aoDBZNrH9N)dTt3{gabk0HXY98-bPhEeGI>L^U`< z2>tNkgMiZ-U|cd(bJEh&9UL6C&x~TDqXF^W+}td|bB~OSS$Bw)l+X6Lj?UObjRP

      i4Q`>kA8)b7P*G9Ihur@Fj7F8QXcbR9Lm!k`BoHdoQG0SxA8b?^~)I(Lxk zLh{yHc&Mnp9+>GSfrb42{7AW8fui&V$=k+(Md)A|pPn`}<230c#_m35g*yTbW*|H_ zL^UNGIuQ6Xr zY@_YjJ|;pW^Fuej{1=-8&t9BA6#V~eij=r-XamXfge>BUb@TX9ZEiE5Mw<@YXs9n) zJci4(SyQ^HVNx;*zZeq=ehMHFOJ1B~-$C|sz@vECDbG4C(u|iZa%u|0v=jIS3mON3 zZY6~rLl=?0vnbGr*3~*}yATc!4-tEOF!zA-2S$?ob(=+&``2su=QwbRLH%P)&A*4# zg4;WByX&`BZ=uP}9fxhUA#Ml`Kp#Jl@R#HE?eqhkuV$y14}6|oUtizcgh{2M#;pc#fSBPbK)N4@nfR1i)=BvMMm9>8Ps|ZyZ@}1*jK*{gIj;Hd}cJiX|T2HL} z{N$gVoejXTwDh}8KbE@Z@hz>B=@ANZC&_1r9t!;x1rmCbWbS5q*=)o*KV)m`43IhM z6uJG;aqXR*Z((7Tn1n-YZou}3K7W1?BAu?8XG{ZV2n%2Zk_4PGKq>luvp%bp>og^S5tnLj`2`_*6xz z$(*L$5KdES8k(3`02{+MpSd|s9^?Or%^XhmjCGMAr>b3><5d+pR!-=nc%m0S0i_9~mxjHi(`Jl2 z|9w&*>BB^?h{?$E1^`#kpjBibubuV9=X`uRU#NEL9CO8SwU3US9abD{Ary}-akj5x zV~yV1n+Vi*ZzZl8y*g6mjhWx=7}Y>8t=qZ>Dr-_VasYAmW8T2P5Iy)Q5f~UaxId8Q z@9!_2zI${;A>_IP+n7=jIsN|JGLB8(Jgq@BB_^iAq$~b-%ERXSdwh8%JG+uw;J0tz z0&;{i#5b*|=}G{h%6ZPnw56wL$vOJ$TgYhUHvmyUuD=zE&M@)}M|U1;0IFfQ0R?;% zXKslJHX%o*8!xvQ-a6TxA3PmMqb4Z?48_{iEi#@Bz)14;UIC280daD2ijgY}3kwUb zslVK++XfiBKTQfdQwhKrr9_?jCYsd5QtSRKC1vH%O@oS$h8&`N7spYqZTskCiQfee z<*b8RQI`RMKgTS*RjUO^7u68fWF4+n%m+I4uDb`T{m2kmq;jWqO-9(kWdj3)J5*WY zK`&pvgheWq#5>QOuNd+n^)Ys_5pj&R>gof%=`vPywOhlO7l6|c_Bhh3w*91J=xz8n ze_s0GAN{%Ep;qs-QxOv6GLv*1ZS<1#HEdgRK^YR!)(4meRF2-a*hD&2)~pUwsi~-gdFI-MNs^t+XuZ?bse( zP|@(HtI4?^5GMD;d~L{M;Y*FisEu+I-pVh_f01eW>Z2=?l(DA^uo}(~bHGT>Z*3Xm zX|kS5baZzYTIVeFWh!vU{2}!RcX&DA8#Vh@{A_I2nrM+ygf;kN0QtaB4A55^JDxgl z_=5lByRjvvY0r}`9YRVGlBkiaTw>K66v`UWo|c}Ibf;XI?J$$0*4TDyh@@}h>sSTO zkWvT5cBY-vu`Oxzi1ySLyDrJ?T)TZ+M-BcX%CQ&MH8J$0ak@rnkN(g|r60tyZp&Bq zmv{`!nAXYjGx5Bdd9Pe5+fHJ^zz%ioCIft~kxh~g#r@d^ zK8Nzamc>HrmmR<1G>fbO`Vr)C!HGYbzxtV{-}|~;E9M5owS6Lc+$E%QERmXk3u2%# zplGM*Eid+7hcQfPl|k*{WZEP{9NJrMO|i=PlaBLtj$pEcXOrKl|1=8sUR&Cjx#!)& zZ*HZ{U?ILUoKu4}#TaX*)8RZT@3ysPI_6^bDVn=6cg%@m<4Q8$-n^uwi0RKt=^tA& z121bp4z{+o`?l(C0zView}m2($e?ox8Yo~nfr(BzvYfDlxvDsxkR!vID>p_{>qP1( zj`?i}^eqB96lam-E+^*S9%U1V%Y>JZ^ticXUL*d0mhRl@ zoX=S(Me!Ko&Ps>W0+SAXXgIC)th>^kC^ZW`xD3E=VUG@g(Q{v4-@CE*8F@?Z3)dc^ z3}JCNh^BoYODnhu&WJbXKp{kic&!+uYrLqb9}C+n(EILvO}xih!C92Xyd6M7roH|=}SSQc%Lm)|in zFRsqFs9{*R5YMaU|+(?8$^LudeOlXw{d}4X+~_0BO#WR>IR~`ih~SaR#*}E1#HG2|EkB{ zMgjl69#M`(Tz?a-TxatnH*y0TR#Ao*c@;V!AcefXQW?ax8{V%wZ{fh&gWvY%cYD8T zynkyD9yNco2%=eh`KxG6j9U6$wuz~6y@rW3786lLmVh<&4t^=D3=O+9m@KV^iWK%-lCaNn_!@|{>^yLD zd-af!=y&k_?jrm~co+YdL1}XL{Cv2JbQ5vI$Q&rDtL4X!u3WKFDD_iZ#N)yz;LyHY5m2k(irg_p+~VYmXNA{WxeF4xl!TlekDs1c&PJAYN3P2Lo-^A z-&@a|e9UWqIxaw48#!z+br|E5CWq!)VVU1l_oeeRqmIVKy)|T<}U%#mXUpZusPTXF^$~^joRsh!F z!fIf!BH62j{5{7HR%8Z_mVxSo@mHp{ti{$;U;)Pg~r9!I!CVTA$fHH z{i)x(?+va@lz6CLqC1hD=Q?utC~g$&+HG^Eh7>M^H0&o>peE{*eXdUg90(pFP&ClN zH$NSv=rZP$Tv%!`%KSjbz27TGD8~;>6dFkniNE3)wsk3Xc1N1;lMpV>!d{yu#CgdT z|IV&vyVl*f!*NV#?6Pw7w^)fFG*gr(h{=i^r8e^G+znF(m;H-^F26KpW;V~_V-}?Y zNft!6W*w}Hmiya<+`XXzNayHw*x5$0A&=*J1v=a`)R$T86q?qp@lqHpZcZ!+;MbH3 z-(*#?8Kio7^6^bHn#7y{H}6-$9~?>+qilMNJ^ELQ=WMLO78#%g0CX&IIP4^{Tbb4d zf%MXwASLb`hA**$d5IpZ)bY=ypvt9;ka|>(W>QA5bz<85Q#x_Yiz8J^pPnB@!E?Nb zc#pXbQCuFhq0Osjax(7~Jvk-_G>Y^Qt$6jssJN)zccVb9qgj{B?L~LLUd4M@q5y8_ ze>r6b=w(Z}p=XQovi+b01e_el7=N$CRk=SL)v=8aCn;=bCAnP4HvZ(7-A7t6>6K2h z2D_d139R~@-D;b2b3!{hAM1)#Vd;&b^zw~iS14p_aGrggpebs z|EMqi5pazDiZ{3agqup8a47&>x~oJxmQmn|aSZBUOtcQYzGXxgtAYW$X{1s79r7=Q z_lpN#Adr|Cp@EuzkvIC^6c7&V-j8HycK4=V;35=*jQZ#SXAy$EFEd%k*CqU|jv2qh zZr8(wRU7rk1-=h9e2QyvTJ!sau2A+DsKNRZUhILC`u6GA5I@mM_#)D}x29(ZYw{)@ zi+~3wdwEXJ*qrt+VNuMTq7!U=?_zD~?&SDIsRKU)x7jk(SH}&ZEW1Rdp{@4`p^EQUCa#NQ#oCW4N58?Z1SY+ z_knFio~Q^wTv}ySmksJ@iVZ6* z>+;c`9;*eRbJLUlBIOtiNVSyW%$M0DK(bximB>Wem8BUe0B)TH&28``7my*qyvBk< zVq*QIAiKsyisK$8QevN_vuytE+Y!j?7H%aNNjgna`+DA}kV(dBJ-mJn($WQ_&Q4!7 zpoU$JZAtkX<5Wj;CElbvG{kdL+B#e9Tx^KfPD3+589-Q8S99N%WC{tfpeQ)E{rXyJ zkqzZ9+T!13J@IcRFNk=_DBj-Q?&;~7v9ndTjgE#!!U8M9 zR8>{Q#SMRcn%;SnqknP*u$j&8a4#<|ehmXvztOX%y1H7=Pp`pUqd;?eszG<`4g7fP zM?5fnE!9}LSwG+;e_h_MMnxr+BI5N}LSlY?z9&Vr$?N>6xcFfvXn&<+yX-&5Djz=f9qd#5kvc4r(lQydbBw%At4bH58*V`9LIN!J zKoKk^qpn?}D5`T4J_mTXmG%(t5%&M-G5>Xg;GY=0k^;6}@s;gjdrX#6LglO8 zw292WpR|TGZTS|Iz-wawghLIe&iyb~r(mkV<9M+nuDQ7x`{qq}JM-taN?oSChI@L7 zY^EDw=lQ1^&Vgrw-wgsm15sS{w;ZpuLPkcW^gfwA-Cy?d@|t#EXU!3ET8q}q^V;v? z?EnaJbG-T6x9HLfJ34xLczm`jA!&ETbGvL!FcN(J`0*o!u)AK3y>Uk@>*ELhB%>?6 z>1fja=(z5)Z;7JgfnF^yFB1_G#$uOlY;2sIxMtS7ADTm|k$*i3(pen6w=>&J#BRXy zRw0hf&E1{USCI)76_tjXn$55=|KjTKJAsPqC+hG5?J{W$c>NkiL?enIV4$k)9JBHY z3Q>Nk?UR#}NMHu##3y-!z*zZxuIlTPgxpFK5)yX0fBeXVokkLHd?->uOiG#?ZQ7mK zmLmo0LM)p0`O#(^yCK^JsgP^&6(Li6gno^ECcvI`&YNc|>0#fRoA>wkkzrG6r0|-B zo4dkcxw}2>{d>$s)!Y3bf&#-PgY;f#R%B#k^#ujOP@?`lcsYlFv@5^%k;8?rUT5%s z-9a+?*Z8PJ;V94)oLZwxx`D`=;3OD;j=jmu`=$6`@+*S)uK-E2Nd5O+oZs7wf0{z# zaKx7xDn(&JaI{^&C$<7%{){XflxH0Sb@k*rY~hjFf&g|na|b^{q--$UU>YH0A$-8_ zt6HW(uz$zVw84tEU4mZ*Z}&#ZA(50~{@S{HvlT#_5^n!=(EpF$?DT*9?vrqGUlumD zP+e~P$C#s^-@LrW3%_fc@Q=T2i{~HyvyMl+|MP#=k@QT#VS?vQI_x z1WQM#zQK3`v<`!T`z_Tcl6?Lf61JMXS7)2jy!^CMj9~<1xT(D>%NS?fUw4zLw2G{Y z8a)Vzl(+7gk@8o$C@*=q#S3WTyPM5SXm$@PE&b5t?cD2HUU!jHwpl4f<~Ob2r}nc#!Yx-FUVf(^M^e+g<85ZNEpx>*XG{J133TF4ia*ZwLfW zL&@G55SFb_K35|x)&qsgJL`@x*X~t^Ty&w9#C+NwO_b8-RCB@T{e1n2x|BM0#>u5x zYq+AN&12twUHU1!JKVBU?pUg{{YVh`GeheMKmbeSiT9_?%aKC6+3-g>DI!L<9 zK!$G}jb=c)6iRl(0NH#b>3@(by2VtsgzUGRAPcJz$)LtK2Go_x$e6h5EL$nG~wGDqtW92+>3!{*IxYZfQ#~&mPw#^JK=%)_` z8|}P;+U?|hvixYyvz6ff%Kh50GhI|SJ+(Vu{Q=*rQZ zX|z3SPU1k4CzIL$s z1elaWUPQB;F1CxMbge|mYv$es6BAPyPx>LV8GqoGrWDS8WKGU(t?n#KKq`q`6@tppl!WhRk>ey@0?y&qba`^)!N^$O#sZ3HM|(Xd4c4L-lIk29e= zkh>gVj`Uzj$UYq>Kbpo9$6y+YsWDkr5|GTc0UN#?VF^W1(b0AR2a)N2zlwuu457XOl10On-H3$;6a|;|NlS7l$BCqWip0eUjDwd$FQBq2>)>2wI+!;s$ znD|p=Qq&XeN#Kby*78h`3TSIF%g?8LNTigL~MNHd1pV<8iHN_-*B=YZ@ zTZci?W1-3JA;H0AYK2 zDq%dk0?ptL#F3>o2U2!4;SyRvbtn**unKdnu5jXSM-jdKZC9*&ssS~C*{H$_EWei#l2O()`}X9oP($822fiNe&~z$Kq=nmZ7#p zZ4Z>{#qje$R`Br~9T6=Q6Ra50)?tFxD(-bK;)bbz8_2Ta>I6#H`_M><1QezYdo?1@ zbGbEe^aaj~1H3$`0tU!Z!`$fb-$Zs(bZBBchD2FWdi<0}#^|=NvXd1CgR0db?I%u&~vBsyQ}*{KWFoE?z^Lh+!c$_ zkDVndhO-u=VCMlRfa94IB^;WV%kuyf$zw~~1E-^upzUxfqk>r1xs88W^2k&1e*Jd_fuB_Q`x{H% zcYGWwqdfQK?xci!`q>WKg@MiU*d5|GXqR@?yT98buG)X$3>*9ZjWf(FoJ{{~oYDO2 zyv2podqu0239F7esMYyy;iW#-m>cOlSyD!Y(#Dl09a>`YbytoXU=~%@b4&t!K6V9O zk4yAo&v%)NFt#+f8yV9ZF(ORVbJ2>af&w0hIhF%9oo%t}VK{#fe?h6JA|A5eFju4S z$`DRUAn`AefaT=ngqq^qSPb!POu_9@H$yCGJ^DO*J{^G z1-hst;9=;C=bfcscJ$UCQd>$!3ytJ)4j7u0xJ20sK2|EUF_TJsE&5M#_XID^;A%Sj z<-}l|P6vndw^tHaG!&v8Pv0q`=sMbm*TT8Xn!LgGzR0;DzCsPzlBlqLQOvR5LZL>_JDQ+Qr^{AjLtfR5N z+C;~4h7D7n{bxjhL%>!4JDkSl^ABaAEx8bkFbK`6-u%oqz^*hhRBY0!_PG(#k_??x zO?VfZv=N5G@w$B<4Z1{+c3FE7k|a{?afZkv8uG)z&=wC0zyC5uhxWL67fg5__zws+ z^yoL(>@7D=cu4a*bX+eCq~th|at*ighO{;vffHIyWs^aF+wY9t+9pD}%d%(96PxyW zDu-YIr<9Vy&&9SKm9dNY;M9bOr0A<(C@tE~*hx1k@_;=MxxN z$veN4GW z|7h&>6i(mTwnR6x@)_lWq;fB#qhN-!^lN;03^+t@W5E`R%=0>8sls2qJvife!8wrk2Ti%K-1)%k<^at5e6!{Yh@?w}>rIw`YW! z<4K0sE6ou1pJ+ZkPWLh(yrN|V0k~kLQF!~dH5;%3ZIZZ*u&3e!yE^N^p*^+1>6BTS zxsDhjw>x4^wM}L8uVjMFLV8Gjary~Ia=Ksd@(|1+-3($-NZ_%hjmI(^(%nd8P?#4j zC%yUCbyEwEE`W@2+rSD+H#q&;HeYOfR$=khnr+@9$m7*TGj>2*H&)8l<+TpV@1%}L zV;$S6bY5XF%-KeB#&qDGL|R|p6^7+nudAbh76}LWZ?R?_TF>4{HNVQF#~yi`g(P26 zNT~JKn84DN(PP&VWEVfQImLc>`EhEsMW^-a%v0mn?iO$0(`cCj_Gc(RX&76F<(j2c z9ybb2KwE&<(W9%arThjNtV_bVhnyOaPhjo6%@+-m7OsO8m}E5GH(tSmicFYQV_} z79qFNEu+$v2&cv`XkU!rwR4kc@J}E7sjU!ziNGWF8Iq=3Awr?RpHME&VE-JekJ~;M z_I~yDp@4BEyX*E#PAy7laQ7*-<6i*$z9`(ypm{l&^8HZy{XYb~KRhd;bxAX-Wj_Yo zH1dqzA*&&pe->UI{Lh=q$p5pBa{u3Tl#PY?e{X%6Jf(0Xge3m6w&)=pr zZQ=u`i=ACkvX3orB2vqPS~UjYDn2<3W7v+zf1c~7sxWXa5MG1h3(O2qF{f}gLw_%* zpxBGzo5DvLc(x0NvJa&DQf!fU%3A0!Dp&fD|M*Ofggd!%SjA|09p_0t5SV;5D|6&p zKKbR4$G$wJr(f8daAgVZD@*$64tRj&qohT*es{w|hnjCLFj#-Tqs=YK@Cyh;xc+<{ zJEyj|%1bAI4vaSV7Z96XGU?oo)c;c;T%IjARqoc&$CPo9KUs;d4e^kYcBN9(oV&<# z|6=L9otUWRRZ|s}G%PQ6m|psV*_0sxZX=i8sFExPWf1mbvK?e|K zxY0KsnE1Z|PA0tRy47t^X;s!7BS3mWsW9rl6)6sTjwf0f8F}V{g1v-;7*G_a4A~FG zEeQ>=iNp>C#B$6cOAs*x&X6usgY=JZA!wPRKUeKb56QTp6dPZMJ)8M!ZXY}!)1n-N zW16^u{UfCz)KE1Z7JWqLmv#^#+Z0^Sv-lA#RgSrP`=flgJeqjVG^*&4KlF*9b|dp* z+zU}KRWj-^>`jo_DZU?ie(AS_4ksWRN7yer%o}@0tFe3=O?O`5L8)JeDy}j^{}m;U z|8QDj=Hh1m-)kn?|3@?NTdOzXW>iy$N(Mr7tk%;_GpBvki9?zC8=S1-BxN-M9}kU4 z`*hci3!jjK?Oppg)!^jD`T5?(+}G^pb9Oo1Za79t_Tb{??)2yNTON-$&`cQza`vV- z`CV>Ej?R=qB!fC8aW(t^>ko;5|>CfPG@;EdYY3P<@N?vyn| z5*ZfsF{ENU5-dH{r_S={LnK+-#H0*M>s#$}cXy8zD4U7>uCCe2lJCWtX2H>+UDzhI z=|PXz>#^C&=rvEyHa%wYo#uhVUX!imm}D9G@-Dn9I$NOmSIFN4!Pw#tMtYRU6-xRn z&Wa-Jv9SboB(jHnKALO1e5Ym*w8LeMITh;OP*D%Ir*E;``1EF&7)E?gDn}kz{d0eU zM^_YMkE`BV@m6ds!W>k>JS)Oy%j(l)u>wXjwZIukX1))5ZCzwhJVfM>O}unEnEEu} zF>X!e!NX=mfeWDoGNL>Z6YMTPSMb-{+(X^>D^<@~;0j+*UNcyDVeze&n_oBQnQi2n z1S``B)Y=klaV$G7aB9%3>i11pB&)^LhN8tk8MRb9J~+#t2gNyX$_R; zkl3W%?Ay`U;WRQw2r;TjAiRL4x-p}|p2AHPohGe{Nj^Ei8qwxPk^DX*w67uC;_Jn( zHY~hpV^K+c6@~+b0#S|sa{$W%&;4j1CI^jSa*-%P38{o#3OzvHv3y>r(+tQx@b1fy z)n3D>0ew<$Gbop%l>xMz69iI(TgDccb%g{@q}>jQFA;?9I+CQ*du4JIxIo0TjC%MK zU#xg|dKc~i6dFp2>U{gw4M6-itfec4Lg)5t%Y z9%uU!!xa>SSrCr?)Kny1A97Ot&((4d4(!VB6%%7n2005b07-3I=7^7Hl7KPD+qu?S zKdAys`e4EHEh#V|%ekXwStH#cV>vA6 zHCKW^oIxUj`Z~Jn`P0{buUrQ>{I%=#6vCKu?mM)ji1t34&iphEFi47g3G3FybvshDN z7KnnUz8Y~7TSZD;40FT``&bvPG}cLFdPWNXNeP4|Z~|tTQ6AW75cUJ}U7BCXE6U42 zYBu5YzKSok%S+#k+uqBN2H>2S^m3+BYtB@^dB+m-1}L`jtx-gfh&0Z&+xd&Bpu}=q zC{UN7>9qbX;rVgcKPE!Gt{=eI>#2V;DPoy`dYQ5SLHx%@O+QneaLl{73zJW(plJ;H z!DmBM(mUJEu!JSDSm}PCJT$uocRG@?`t$QJ7fwL`@0x?a$LE5~N6c z0YchZ0Yj`dQUs;2eo|hWgw7>D^f$zEsk6*Hu4$zzGtiR~Sfc~C4{t$*SbwJ2&<;g) zY9<#jURHgx$bvzwei5Nfgo@N|PcK_}B%|b-T_ctId-6(4RjCqtyjRDF4&NsBKUkvB zi_t%WQ0zJx3d0HnEIJn~95?IJwU*~|{Gp+W-fRe_8nx;T8KVGCG~M!3jHJj;5MM|n z5f&D~!>OMB4>95Ie~|vrzI`)-NQ@?(Fu4>A7RzwMOe9si#qm7%Gdj(*1xXZ%0C&=@ zYv-lwzLNIoWqrb)OvF6qa=QmkTmxsRfs4WV%8y7CJiaw!vrSXKXG@s4SPY@m;LIW= zYbzsH-EUtL9{E|ja%dYbi#CTCF{oMRhdO$Up}c3w=!kgpW#7gKGyin`XYlneC^bN>Wjr(dQG z?UBLg_pJ=_eg7?az-R@12U8Zg61NPd z%vIB_RK)%J;PK6C`!1WeBm4SN6h-#mXiAo!&p*f7k?5;i+Bpp zKIUdq*SIM$LlVgz@!Q9<)0Ax9O%3d%wQj%bRPqnEo$5@A%e^qRWh;ZK9Tw zQuucb`**AY5Hr1FXv2Fmkf7W-yZZeKjQ>0{HAz}Zwt2CvjS~yZ#wpmx?fRpb9EVKD zhp={a5`uHU8cT!(IU!n{7T>M9BG+4M$5Gbd>MXp+XZJhID~su+JMp?EM(}5OBE#Y< z>>2L-=u)uz60Esp?#ANp>8v&36qu9w{{D@Yh?^oAe_)pvG!m`=NK9iZ;%&9nP8I2m zVJjixT-NOt=*8i~s)4uwM3N_RD0HBg+W`u5-o$`mqA*q(r+lt=XLq(w1zY7D-2^d4Qu*`r z)UrN>OE+re3=g4Im)bAp_Sz!0o+_SM)D1^DS(V_scoL;xS|xZr&*?}XqWa|obVLA( zWjjD1-5L2rB7)8gYAJ#7PUR-U`r~TIRrt0JOm7zuu?+7ynZD%78J- zje}A)f5}u|8t0sT9#IWKKoeGNMmE%8*HC|n3?^jB|Bz7ohb7N(uK7?8)c~zx^URP# zE&zq+4ua!$s85t(TH@4Moe`pKYLIs*7su816nc*C?@=ip(UG$wRCCxt&_W38JxcZ) zyFaK_FlXXR#^G!SQ0?}TT;UG#I6!=kuhdIeDKi~_{)^F5-hMwE=2r!Of6+mKs|pVM;H~TU|H^2t4{)X zR%$He5Hbb`*d7vJ-lCZG$%wW(QlOun(%l3E!x@qYsU4_rkUDKxa!-c?~MOlVkwNx4=-n+`uVt_o~xA>7I0#Hlk#o%hQ3Jq!l0C)-`OBtORitouU3J76c^BR?R}{S#~UZ%2K9R`##H28RCGIOBGL z_D2x7C*YJz2;Xdn5btd6oBBaR1<326BU zu<@+F=E{9=O2pO^0A$J)5{A;*K^pMnHES+?ziz1~Ntjh%(a>q9*3=Pu+T7Gp@6a(Py+7%0 zLrS5}wF!W>I;0iQysL(J8#GQeT%mP4)We#L`etHJXDXr)f2Q1Qwk=)kYjPI)G}=@Q zaJ6~Erxt<&EH1kJKhhiwJ}PMOqTRt=0{h*xgz*onxC&G6URrwzUfW}9*=DFhBAMlH zm+f@s23J*75eA}lum{qV{IoIrM%F4=3sgPjXK2kyIGHr5LHHJ#xi6P@(H*NcvKt}d zs*N;U)(RA z%$sx#5%BUv_f|f=gS(J&^2hq@Mm#-uw^o%pB=3r3nQYk=)#9ma~WboUg6fR;^o$Wk!4xb>swZ5V zqh8oVGt2l4Bx9yiSZ%|eX^jypRS*$SU1w6Spe2G`pPc_1nn8g1ee-g5cJWco*14B> z;Cb$0A6abX-I{$<>Gr*oXnLkSni^Js%qENdFswv55GINpL0vV(ZMrl~S5_}_b-9@s3 zL!$#_ND@=?oLA<|M^ExQRgZ~zXQklA+(P752wtRqg_n)4s~$<4&G1eSfjV@e1bYBMifwP1?V23zgM_(tKFk9Ti7;9ZU@U_8Km5cx*uwLy>Tzg#_`89@R z*+^pjG~3N&VbOjrcC-Gjm-&q@W3ji*`ew#MNkUtGPFZDiyl#f4K9sd&fTIopg=1O! zvZs6E8?!+XpN1xeapWTW)7Sat{L;JTs=qR-;?T^HO+jk{Y^00l z_~WKmnsL@~bl~jyc^VL%d*-D)e#rqB*}@5ka#$K2 z)x}&<9J=r$MU8~huS*>8oY0V!0dTQ(cdZ32%}K8OmT<)|5AU8MAn|dL|53oN;L>ep z+UJ2e(nSq*+WxdUd!nmdwo&vz@dQ<~uRUy8uD01BKWA%v$mZQhs9V*hKeLdJvx{=e zF=u28j-;WDl7t5`GQ=HHY2L$#<%?mngNB&E7MmHV**Y&xp^_$bLBqm3Pu48K9lkfw zPjppo_(DO$Z1H<0y3$46u&4IjJ?zE0T_>Be2Ql}&xL91lbV|+guilV4IZny?%}m3! zuu7nHIq0hrc5Lo=G zLrE5|v{y@fD}1dm5nvrPNr%U=hQp+>HM+$g_)DQQCI3jVZiigf?UqZ1nPi`$GOEqx zxkq~uw9>jv4>!Hy`gS=K$v?w1SfSnJ=Qg98p(VZ8)OR0Pd0AR@qEb(5RhL5BwcUOh z2DEN|D4EA@V@mzl@9@qDc+RoVep04(`&{_GYe|`EsltJ-;M!{ORHt*(=;<2!d6WH! z=al^Ac4k|D7EE{-XzpZ{Nt4|BZIE>F1Q)}OA6jVE>A>?6u3E};`$H#W#QoZzibE(ru7jVMUpN z$k~xO3i+6flJs7YKCYvK?i!`BtHzhE8|5Jcmb=te%r*4_PRx;gD;Wn5{5BZOVZbQ&(Xf#h%DULe6YB?KMoUI`h_t>PC$cB^gmqxKEeOp*mG;x*kUvY$m z3b;t;{L+q$A}6H{aou#1POS=Abz$=CItfhndu-$X0h@TH`a{wvEOk@=kaTpu1To5k z0ZDN1zp7+PCAp+-K^ymU``Ro35^zfKVQea@P7yMtF;PNEBOZc0Vf+iBzzdTnan+{- zSc>$>n4pYImA3YE90U$n&$)$Xw7;+LxDkx^9E257^dVqan0n9~7GX3n%@3G%hRri@ z(y*_F$MCBq9iW)!Cez=`O5xU1sA5q#=5j&)*9vH#<<#=!cAQ%l^G3a!euA{ zRO441-eOM!(;3SY<1Ug{^Kv$i@QV3-`LY6;d^oi*>T)XzgHOLrF7rPSvNfBdfwD?m zHHfX5ui5xLm&6J9>?tA~vUasBq4GnG`{%6vIZU1>EsIT|$$@XpZpLJG!9^|{fXXDq= z?bS~DT;(s<){h&3!?p{}C9NKT#P!ViL5F~vn_e}hNzB(azt^GrUdImM>)!3oE$v%3 z2FUj9w>c~bE{axESgHJx2zy(o^tjM86k5MWzOQ>&KW;XL17B8Mwuw?7RsTP#Yz$Ebg$a!%{p6Mfn3ld($l`mAf^^!_+|9D69cDNAPNUc zq2oy)HZDv!6G75;d*R*Ved?b$C_LsT!=2mi{-2$bOZIG+|gm|yvNnm$#3 zbv0Cp>(OC+SL>Ld$AXb@f9py@6_yTu$#%rDWZFv?K9v{o=pJyc-oEW^U!MP^P0%W9 zh-en|k+ao+)q>TF=|#F(=v%J3S@2JPn~?reZKx78Q@m54@VSqQGz}PvbWkRhJf$=0 z+Ep%~?5`h*p=Zd5$q3WXPSmo)(~p}6ohD5~1>>ZbPTSQ%A5g4tzyo+CCA03spfrRN zihU-tp_}At;VNgbGp%(jda_+B<;M~&$R53Tg|(JxA8}USpt}*)&*AqYF&JsyU=~Gi zi_(m=jIf}UYv7xmbF(-OIqWimrvJba89pHA4bt&X!(blI6dS9H@EdOS&l(!)e|tVy z`*AC7F{_PYdg{Y%U{*v^dy475MZkhkz>G@WQb7O*6ujIM~copp39#5}_Os)B`+WnV2KyB$FxT2R=sqviy65 zTzU5lgE#eBA;RD^Sj`=@@RVVy{Ccb@!F_C`%R4_cnjiQiD7}N-qmj7wUae6Wwog2d8BPH0G7EG@bJ6p9B{SsNh`D= zP&NhF2rIO`W|_h9cYff>6PiGOU368Bur@=~_}8Q*gga)*?azNRkgMcq(_pW`Zikbhv@t?ENW~jO2!vLyE7QI@mw{WO zV%A@Io}kjPZLoE;PbY(uO6+D-tiLnm(f0C8xdUf(&-=p=g?{f4{E&Y3n7LNAuez5Y zbR&l^Mh1f-gdbW4kpm46BUy{hBsI8{g`&W5MJN$09xobG=WhWr7-{b}jJ)#&-yK~f z&K>HS8Jc`;b@T1)!T1IEP%yN@w1c$Bnj#t`wPL$1YEThkKqTT#l9z*JV8oh9gGNw1z3G4(1590uV&;;l>Uo0{q#kDlNZeHfb#yYT`j-4j#P{aC4 zu;NI3s_0`;>Xe*mP9ntVDqDOpgEs4azrB}CmC&%eH(qr+6E-NA6y&$2tX~b$WT|`# zd65aVSOB}%wB6s(>!Q-dG)vqC%_dVvsKvX&^{q~t;e(}em!`nQ3QFJVHjx%t`hc9{ z1nkO`BT0x0Upfm9c}mkpLpXy*tq{{mYRb4f(kKt*;jajgbxE4qyY<`7U5fqqF-+#Y zF-&CvC_^#myCc|cLS7&+gFuLSA=0}4cRZ#Mk;sT4HPQ<;K$;-m%Z5=8^erovgD`4% zTBgfN2pg}p3r#Xq6PGBS3yC$rLfkh7g}Qg!iWX2as6G@<{*XHvgqUTqu@O{_WXT4P z(JI1YWo(9}bGZYOZx~Q?6x_FgZHT!XAs&St`};TXC`US&;L*>cEiJGEK21~uXM;=V z;|p%)hZBxwqLd^gb>@lW# z31X<1ZuY~qS?l)Oit)q$vxh4v`fMB__*!@`mmtdbMY)|Uh^a2>KtAgRsiqt-=gZ0C z4GV!%U3rD2zAL~U>b6PZJIi?a0a@F7Kj!bda%*KDpO9Bj5f6T)Mp)1HC&QDK9#rLg z2Hc-qCq4B6@tf~x4pV6WJ3z$0=L=1>s~=mtb0ot%#IXW6XC*I0WGAWX&yQ$cv%0h@ zBBN16K{AM3y_7(YAA`jqkWN4=;<|NI+&ZOR*s=s;#$x;|%!r}Tl)UwAE?ZCV1NsVB92amu>oN11F|IN4QUMcZYaBPya; zOC3y1g+L-fQ{=7f)trp50#laay3F)E73Bt>Lxvm>aGNB*br z+<`yllUo!T+sG?VN5$T&zp}@wo%FGf;nKz4w2!H+-n3WDPTKL2Yh|e&9JM2@0P;F{ zS|>Z5NSh@Yy=;xct+G^1UHy49wBHEUh2rmX%8b>gtm1g@?U|*ta4{4TJTqZ9va_+9|;_h_&F^(fb~ zkfn;x4eQhC-CVux+??K* zWNo@6rj+LHaP8v=E;vi&!^rvEos(t<7i@-q9baA)ri$;%U`MWZ;*N~MHLVOiOHMzo8#5{-e>Ga2)PVbf=xF<2~nf&E&#cOs`0B-?5 zZq0>xh^bzR-9>c?f3zmAE=Drx^*y6eb&l<8b@FNh8d1h>SAe1+pYj;agSGLg7Hw;t zy{|m=+E3@?^_wNG^4$GBK+bT&&{KoTXj}YZO(af1HTX5j?B!}+OMf!#(W)%`yelHF zcr;JMeg!cCSvA!SIHMh%_r+&){yBz5WfZ*E%mewO)1SY(4s>~0|4@)TfS7!~R^Fg7 z?(7@keQMXjoD@!d19+T&J6&U{asP{v%L6J>Ue}T0+|g?=a-$SEZ!Of zEIa@NJ@lbLi-8=T1pWl?t5}`W&!`843;^Rsi!M!B_;y}ntGb+|B&nyh4t+wy{;~<2 z#xSqipi3n#I%5;W{J`&s40oBs0hJQr( z<~JU=!To94Htty58Mj5Wisr-36i~~hS;+tXaFD^p)Zx4e!qLTrezwuj#LCg=hF~|F z2O^wLqX+h-7H&K{A4C-fmTJu(RQ=ju*|Te#dNIv&r*=dAhlL?cV!}z#^;#!h46aZj z>RcVuphd<;TZbVaD)U|z*;j{*V!N4x{|?GeV}30-8Uqc){`D57)}LQnC-+K;E|RPs zkttq{L>j1kum`CDEbWQ_Od;9}#uD8%NI6bqYrkmC9pN~}t#MS*vN_1I%HF}^Wpz0- zp)cUqDNw!|!X2tlixlY)jb5PGlL&$0Y;0c|?fceCaxLjc=%M7{75I`aOJ_o%Hxlfo zKc|$dAcqFE*1pseYRhqAg{1s*9&YLN>pBO`ikK65VFs6HRW7<+yYv_sauefT$5=0r zZ>Xv}&gF@s)tKsxNJ5*KP$1+30`$5%lQK3W#wE-)Sc3VDlx%R%`AAB5sBlas3bsNN zaQ#4^DeI&2I*>oiMFMq>h-P*kI?ecXnm(7g7hHO@-t>0GFazzjlJa9l)-%Fy(XZrL z2yb$?QfAej;97=sGA`o%AnWoGw%%eBSnb@2xVO=u*CbqA z>mgqz_pu~I&JhzDECq?dxx6g_@iHQts(K!3B+a>5Xw3~NJUCh$zWmfTDKmuVO{@EKInZYULG`PQx>F4;Ml=@DdE32Erw}QiG_w^o z(r_q1nJ}!t!lw>$8nv3*m_oO6_t-LpfaMqJ!dsuJGNIb7PzWq=ya zF67s!ku`!yH-Oxja2Z)fNS=)jDPx8xvp9kr-zOxFn@{FcLo$Gz2O9*7f4)71msyk(m{7gY21W8r^;8#HHTBtpv15gZwmq zz{h|V*(Z;T1n}6)mqiXcFEGn~&ANCok&^zx`FNaK`9M1=yvOG@K#aij9-nIk8>eTu zmYZ4U?fr8=2d5=H7T$>twSvBpYTaD6o@MlsvqzTb2>MGDdNN56ZU1o$g5QM;zTR7n zAo5tXuUcUoa~Z0-WKPwThp;Lg@K9LK2;rt?tjhc1qv zvdsC$b2iu=$Lu%J@py9p#xZr6$LHIR8DOwV)bffG0?k!PEG$2lTE(T}Itj-f8!SXh zJuim>k8$)9e{bS|wKK_6x{oL8!hrJiv{&cPT`JIq_Pn4vOM4?cFDxq(k4*3xmbG-G zN^w`Oc8-Mx`P!kQ+OV#secspu1hHFYPSc&W4T*mmo|c4n@d614Aj}N@OV1*?^oQ*S>>8nw zds^ui8pq%B>ds~GkJr;le@_Ygu%9rl#2i|SkOVlraz+rx@gI6mf?XTni+2OsLY`vI zm}l^koQ1+Ei)SXBwZZ9oQ2zF#6CfghwyUCOC&U{ss(7Nbadwd%v1;Eb63BCXeOP>G z5D*MDCD+9I&laSfo+9gdCLy8{-wlxvFmLi2AZ#W+3b_Xi~PKZMBMjaDbpgK3wlgG-Sj>9l?jfJjdUO9AcL<%5PWr7+AjQH znLTANd@lY=wELeC)|%a=dBVYJ{N1w{1djQBsw8vkE&Pn{(cZJ;7Y4ccU-jVyK5Fp} z#;49%ztK6UBEMG}O8#nphe-sEurPt9iysJ~tErZ}FZh8J6+^B$V&id!KjF8pE&Mu) z?}ZVs9uPIxl1xP@)=(yeZ_ld@z3VE4N`|FWMc@u7?+)Lc@#}KRHI`?iwjzhe%=te||2<7S=}jT(YZ*?vi(d14^9z1n zO@t|MG;PTjO+?{2q}a##{RYRT-QS)eH*a&{_#%^XlFo&X^6AkL>f`@-kMM+SO~d?f z%~K=VMgvN8|Cw2{j*a!}A-9(Mn0y`0X-{5!=&2amB~j4AmSCj0v&pSnSr4nCEfqbn z*MH=>V4g0jF0!H9p2jzW*LB!<(i^Jv;3t;Y^p%uL%&Ml)b2GG+*XVu!U6QC%cJRvb zHJes$ZVvj_-r&7JB+t%b0o{SFfPVo(8D}@@E|%ky@oqaEZLTd3!r>=z2sk`v;UL#=WyY(hIZ?;AzLe<9&L&~xUU-9 z4j#(q$wO~OdXK4HPxR@ViiocNGIjF%%n54p9e?B#Rq7a`_-L;2+cX20v6lK^cZ6Qk z?@F7WKt=wE{_El_`%BN*i%!UcsVYq_jEYoinZ6bb3HE7OA`e4;o|qzKqBwbBPF@2; zq*lG_AT;+tIu$9$?*XDZmphPt3Bp*CXG(a{d5#VxtXX`DIy(P^mVm|_2J+K%GWxf> z_jMY%vb)w8(rVf~k8N@}4-;%?EqyHR(lBFtm*Nuyb71>`o-I@(`-WU%xPRx9tIs^# zVD6hO$jOryX`G-HxlO(%&~XhuM5+YaBn>sB414in8|HL=r(pi)LE-~g=gnr^vEcng zK*GQIG#GV-+Ir7J@i@Iko3?rh;S%`;3>EF1FE1sV-gEkj#Ku~*%+jk<>JfWyAA#t; z8`%G`_pn8jXo`IlI@t|3WKN{wJ|Cs_9Vx~`iur|fOe75DRf*J@~bWQzo9to6%4`;P9wM z#Nn2|QQAMA1v&O4^wbC`b9drSiMj!)4M6NeB%LF(AcB45Uu*#2$Q_CtXmta~&VbMk zrlclNS``C#RVV?rmUgXGU_-0jld7O<(nPaXT5+{;Bi)Y*+$TUB_1$+oexSx5v37WB zo922J@x~i$0qep?zcDHjllV)HAqq9wtMlZ_rtL`V?ye&NcOh6hk^|Rq4_Y$Q00p-J zk~8g{jHbKk+F!4FCLvMYS`A>M#2PgQQFo{(QQ_1Pxpu7raxe%o7h z-qCho6~h;uE3u1vP){Uy#P#gJgx8BMlT&cT5E@6iJ)1@z2+l!~nx6T_fyd}M$95id zH^>canR*ZhYO>KZN3Q!S%TwP8&`m4^NsCc6Z(Pn65Kb0(k_2NK4A|_LKib9X z%bG(A`bsx_=`9}Dlk4F_83tWQ?C=F0hN(rH(p;Y7q|S<}6CFAkHx3xXI-&&90O)Jk zm`vm|C4?YWDpEwD=$e3IMSL67XE8^#(b2=kHOPOO?%h9|27(V^4tHwP!jl^|DGiJPI zj}ovajV2N|c$>G?%fh_5X$}^(&A^)|2Pa-GFZuS0ow)kRCTs-0W|A2X+0ykJuu3H;#p-7o$jK*rnx*15 zY}LP^Ua)lmV8&xZkF&q-U4*W+5l^v`zS`@c%X+ z@bfAsaO)j&VLH=c_A5h{WA#wb5SE70=(T;X(Z>n@oiO3$t53}iJx4^4v+t|{VG|_{ zAae=}wV-pyncN43aeX4~MGbQZ{Z3@?Ho#5rG_7F0zO)Bs6OXrT|ERB}v)8{P@fV_h z_=V${=B__pr{VEsL4ZkM%M42yF+jqKQXHgemw+<&?@R-$^+#zz~$zhvLup4q~ZS(*n8SS{`PB7N?! zb#&+B?d=Ogo3i^6cvgC`c7WeCoSEIi4Zo9;z;|NYlJrAUp(a#80!^Ha-<($TS!ds&_i9iiX3LC(b#qy=GgtFrwcCxJ)}c|X za_XL2`iM14$sw17KFgzM);8a#%sb(D^Q(#ddt>YVkK@ZWMLAEB{AQr7XcwUI^*rg8 zHMhJM9lWLTs*$$-x;Cc`%uE&H4z8H(m&kzfU8!RDP$}TkPD6D&D0;!1fwAA?=brMd zJN7t+_p$d0R9!p}uf4V3vEm*-mG=u>&>q{F?Vu9b4h zpeQlquHV4i1|TB>(0f$BFs*;t5FXnwrf9Tls^o=w8Ru0nN++c#+Vshv6SaceYT8}E zru_I85iH(0{DkyPR3+RG7nW}+q4n=caH{wIHJgZ*_ZV>b6L`|b@pixQgw#{v;^hBu z@csOaH8qM)Da+X9_j)*dy~Fyh9TBw?h=|`eJ|`oQcW6zHJ_g|J6c~LRd$3LC%>2*? z$>WEP!wD6nG+$Yrw@4pqLBO036S#WxjqZF^?YmSlbOFZ@3(b3FPCwHXE)WXV7t>m14o0X6gvC`YQNv)_%9e`X8sQtW#eG^-@<6Gwyet$$NzbET|t9cWjzW! z__k|16H`>f_F8wXR+WTD6qVLdCPgnicJ%#uBLV88&D!?=Fm_JOxo}OpO>)P!ZQHhO z+qP}nS+VV`*tTuk*4pnre-6H?Isd_&)uXHH8f~H65$VbP`QZjIPWcIyL&wngi*d*A z{Xp7uMCeHI_bnxHLkUrKFmo%2rDI3VzjfR4^XorL14EM;b-k0H}MwP)OMe|_4Kx6eo5CDV=TC98FOs&;(sqOqooB|=Lf=UQP!a^+4y z5~SH=U68? ziq&H`_bO>lgY+~}b3sYQKsA70>j`h=xb!6SbWQr7>1~(fiXWzto~H0!p-q4r-$EcL z9teij6to78k}7*DQmb@H>Sds~Z7ruCO47a+y^r`j7`SL-vDwX^%RG7d{3ZxQ3OGG+r)Lanz&P$%eWOqU|=dBEHbz@bdZtrZ-w8_Hw9wR|UmmiTdGwlt{@0!?Htpuwzp7QcTZ{F)($;ZB_W1fQvl zk75>_1UZ*JY}{jzpTXh=gH;coE7tt_YZi09X)r`G177Ls-)`kxT^e;$-dDfgeL&|h z+m`znOv5sB$EKHv1xs$>W$H>;KGy>|oP z)fuy3w3ck;^Vm)ViOLH_W$|d3wzdFp2WV^8!BmzddLYtk$wZLxn8;^|&u+K;E`0R~ zveXwE-Vb{*V)?hL8PsFYu-4`)TDfUp!Y>B5CfgAH!K-8G6=RejL*~ians11QnTHXh zX|MbiP4>A{OuxvvBAB>0mAWr1Qt;DyWzac6E6GjoaZJ4q)FkapgHS7naVx==Qnh0> z{O67AW+&e8YBIGTt5Y1rx#4M3c#AtihFHE`1F0I;Hg4vhsjCSUtxevH#LHH049Rzl zm?rE5r_day=#pSnxhfLZs1BVXK|^v4&R43|KT3b|g&GtZht>Ea5@_#)APp73LN)`H zxkwpe1rm{R=l|-B;bA8otJVF%3>6A8OR+?OIsx4A55mto22zIyXKdB&r5{-N-CHgw zq6FPAtcZTjy+9#M~gF3N#rNf=opW7n^F( zov8AUZ@}S&`2sGANRps9f)f|3X`Hvp0SL*4T@@VX{+ z^S0$u7KIq&)a_zY#A>Y>GV7@=`T3A5SS1s^Qm}T@-a?5cfB^r4MJ*sI#2Bf?ZIauD z_M5y#7LYYR5=EeCsF`1_ed$$ZDqCy2&Yh64QaajTI78dd47uXcCUQ0VJn^&X)Q7iX zK_6V2B0tHL*)a;*in9;b*nHe4wJpK)^9+8RcYHKwYFB0Ph7St>6APSPVQAD z_#<7(0X-wGHLW_I&V|Xcmhw}i3aoU!1-}h|IM6Ennl9*ObT6JuJbdE)XNQrU^YK`f z^aG^3z5QZOf0Uwckq@-AJ=XatVgF~5rSMlRXNG9T< zxji&0i*i}hxP%f`XqisQMVaE$J2Pt@WGiNUC^ham5pUHt9;tg1o zfnGwUBqOV*#h8qr>SNHjHb zKY-hLKAygn<*q9UGL16;PW-l&i+-4Nt2qK63e{O;*UJmBNbM^z;h{<;IJtX){dhvW z=VZq&9EE-sSxWT4FH18Ikef0BuZK(GudffdU%-t6c23E7u~|0c?DY;oM~vWgr~sQI zJJ^NWwbT2tzp`d(bmA^>RbZA`HldA`9H~AF*A!L1u=FzsTbGbfaeXxJQ}96iL3&#T z+ps0c5AnU~Dt^0I*uW=He$(yVStX_+ouTeAGN~r9`K$1fx}Gkb7OH5?&=~6?wUY_Z zMi!|i&J)vjn9921jUU335Ktz;_$;Wy98`jpdg1%0?>GJ$c+%?hsvbYf!`$_6dGV7Z zT{&$-^Yz!6C{fYB4s^zC6s=r^n)*g_i&X>K8`tY&9<<6H@YMI(o4J%1kM1(0$9a_IlJd zYj9bl$%mz*rxvFWm4qjHq;X`oVJQL&4f}HmVmlFk@;3F7{jMaU>KQn<5H^!K{if!% zjB)+4f^1J;Q2X=-VUqChLbSXV!Q+b*vC|BuiZQ~WkLfSF713*C6m>!!<%k%^`X-k> z#lqD|C;VAuo(M8A+I8!HU&SMNb{kQbDhY92Q62GcWh+*w87 z8m^L3NF_s$F%(1WJ6mv+{c}XUg8F_S74%X~x^@pK zNV^Lfj=~H+Ezw^#++RI5o}7EKRvrS{c|=?#A6ssyK~(vu7QBGMu(4HY#s{Lg*z@@2 zscVL=u1Ei>Po!RB?cWBhgE!qIqLrGaJAVM`h!p1j6|r2Y7|_qRY>>xoy=eo8OYYzA z6x&}ecw2n%JZRs&X1~3VdOT3<8FWQjjUqTP@2=H*RcajG3s}8auWtcixx0k_;yq^O z|H|31GXCFrPwW5Z?EK&A6;Gn7qA~Bu&t}GktMzzZhvm(ym{sUAgUReEg+-K)JOh5* zi*a~Ot(7Y`Hz@++#ETcsj{ubBS6P{Qd5~M3{-Jud^a``L3cEcCM_C!2O6We#U*%fF z+o+UI*j+-9sVmnpF1<-z>MKuScjfUErvcmlo&*z<4!`UPl?h5CH;AXVmtiFPe|Y0@ zdzMP|`w~-^+G=CQIxx7t)Y$}pnO<^Zimc4is!!>d^r~ya)l@8;k*k7WJ{lCW7loU& zk*+>&C@#ONE7WH~M^_2&b|Zdi-I_V!H6O-ZRFG1-SyoVKG_4OJDwph0-I*;^0-1OZ z#<};V0Y=LqPCvspM}2C$kEDx`loLw7%e<37amAa;#7+S zsZZu?RdKlq85GS7=C5&Ssj@Of6D@k{DC5ub{YvMyc`~^v&^jA8q%Ni#mc%qA{#zH~ z3vYMA?`YR~c6VO(=whbTMc%^Zyi5WhUUr2v>X%A)S^`Z(uIx?vd`C)?*;JkSQ&sN? zS!ahJj;tHgPdn33#QZsgu6+4xPoY->>S2gINB1ouC}3l&ayy zao!y~TFbl;dKF7Rv4Atw_sT}9V_zz`>!aSXq#6K z!p!lYHsvOE|0&l^(pPBv9OWZy)AdbiQW|aG?v2p30qlK}618(j)mYiVM*V^qb1b?v zH=)GR_y?N}Md(l@eMB$M6dU}&nQS@XfNm+mOgUkhN~$52rbEx@U7-Rrx&Wh7qtSA} z=)poLvHLAY)j?sJGS8NcnG!oGafVu{SI83ng2ZR^VPgfnNP07vyMdXYjR}j8a|@1& z@Yi-BQ3ayx?e(HVJy;`Ao!dfY|>^8m$EPd5C*u$8J0VibGU zmZ9t)KLFRZxCWJu+DRCiCEx{V@zyv%k zW$IL$Cg-m5;_W*w%9#cSqTyQW#VXb_*`dQiy!ZO03Lkgo_qWP;4 zFdT|Z8f*>*MT$>PXdPpvrqK?{42uls505OD80OxIi35DHF&#;~3_nL6x)KS*IC}5O z1`}nPgMp330}(52JuWyN1b$c;y+*Yuo+eIia|VOma3xEcr?fgn+{WXe*x)D-lPicQ zVqn2z&oUd7u~7s~I-U-1fo5J*gR)_YobcouJ`q~=qX^45)aY0_lw?GD@U~88IO-@u z;*jYG>O5y%YI9^?7{r(AFMOp^=<)`F}VuTS88{KcIjqBN7_P4oMoqVWh6-2Yy*!&@ua=~rhsVe8~cYx0e% zI41d*_7Ce|5%^wQAojLM6DtuN<8)o@&HOqoyuuYU6Bz1)gRcFpE7eueLH%2+vV{l6 zX$?F&PLVK!lpew@bua@Zj!u>BR%uglr5i3vJqt~!nSEnB8yuk#D^Gp|U!V!PmL?sB z{%JV7-nY9~5AV>QKu$;-S%>TdkF}}0TixM#gi#)Z@BYHoQx(G4C#u-YY)HUYl_nZn zs#qj#h@TN`Yte$x4GYN;FEniV8pd)5DeTo7aKiFcvj?0#NVWMTmkfwa%(4eqreP`< z@Ce9gB{oP!Fm{#N`Vi1a52$O6WEE>`iNK4N+j&~xZY760HY5NSC|b<_+BeVS(1I}t z_ovDouEQKKfN_AbRLHHmuSd;*DH9kUXB<{ANidVlSHj9@J5%o9q?*t}i!NTzLb)PL zKRKLQmf5x?1Z53AF%qnothu4vv{H*5g9CeC^+vu_LY3^_xh@Dpd_{h5K&P+ku1d)DCO2VVq#u13@) z!oVvqiXdIPX5HQ^Hn2}dI(|G-qzPb5W9Q|hqkX+}WJsnruEt`T6^g!5mK=5Sp zvpiPkOVzz&l-CF2oLhN8)i=Q0XSnHT)y}wO!n-DVyp_zV)8}nbeXTNAHAtvLjqWEJ zN9$e$wb}tbfY1YNcpD$`2_bD*dmMj$|{fvp~XU(*>4H%2sRimZ7Flx+K5g%(j!eKgy&DBA|ev01|nw zv_dT|uDGrVDiVS$y^69(L?2hU!)&Y+d6x?pl&*avmn`&YAnpCCsP*b^Z~*FGCc1Al zG+IR`$H@*lKq3U-4v3O(x%xj$9=%6@3oe-%X$33}wt<~$#S1knYebH1HRH&EiB zm=834JLUi0W9{#+kvN_Yon2Mm4H7XpH3M)l!A%uxXUrQ|TD}fDDz;|ooiwV zGc=3sfA<$NR89~0-&x{y_`$^uob=brSpq0`p?Yg^@Ft!#Y7+uu?+ucgA%TPvP#-A^ z3P1p)v5fD|g}BJPI{f9Ggc}oI+_zm<)U9B_G(wl zO~umZUK(=XHT0*oQPM06Uzu|y-Xh~8=HXy}T@E_GOo%wj{chOMhcx!0s|-`7OxCDq zNn9!uLKuK6y*OG~H_>6u?X;eRv!_a`+h%(CK4VJk19G5 zsAT9WS1vu?hIMSwcMm@{Qm&fE<_2w(I<;^iVy?Et4m+%H8Iq?xOd8wu8Th#h|LR7O zO0k@IXL-vvJ5-sw^yz*`UHpmN}GwV^G>Z=Rj`Fi=hzGDGK^?@;>l2ze&84_#c`FhUyt2wmk05b>I zrg#|0FAm>$Up8|L%rJbr9QiIiy;fZE3jBV3D5(ALfnDdhbQm8%iZT`a+j_)f30Z$<~>iE8Kh zd)nirpBOH$qVd*U5Y=x&LhM*uNmkD*p}*i}$=%*U?;u6q1V;3*nHb)1cB#yn9p1fi zuHBJ+6vIcnMh}a;*Rd--^RFMHXY=qF{9YO^;|81!eXPcrQ+T#t3+%D#c~l?Eb9YHn zM=H=(TBRDScn~09ksb;Bwy%fMj0@%6pS)JW>zIGzGQ!Gq)q z!Q}(P*9#`d!(}wXAe6ZjMbfq1@-d>sUM3H}0DM63DZeS5cBSMHqrOUj599wXN_rAv_&4`_fab);j*3Sa#}`jepr!O% zR7sk_EYK#n1lYK2d%N@S(Tw+>bDh0wd>^nW&)yj8uZWC+1z)optjBMul>gHVk>Xg@wGvl6JbD z`gnV?lK0aiBU=Ml?Z-^lS&e4IMdNRYEUuoqCGl13MhCQ6h7o4Nb?}&Zj#zHUg>EYK zl1n+%cha!t%@GXr^>wz;M;80uP{K)(>@AOX04!d4O4z`tjDoD#L}TDORogFEvqEeL z_N(T89>L?t^@|Ao*!C^+dNpl}+=f3QnYW(2#Q4BA9T_j#*8nC~Y_iNH%9f^3r!ZeU z`x~s-eeKEC*&OvKf{Knltab?7V(q`E4$34!v%Bk;JTh@iXK21$0NOD`-a|u6 z&PWl) z$L7QSbNr1>CJw?kQROSAd)>ESJMlO)Ee3NrUf(!gb%t%QH}pv_))6hYop3g3|ZcleSoqsI`@U0DMl5PViDPRiqm|aEmK=b%XxVY z+O6PslAbnBZ?X-{T>F3!!5TpxnbKP?CylSektKGEK2S?vGMe+wk@c}YduI_0=dax& zk3%_!7r*u0oX4h2W=Tw45rj_jBWaGHsila|01b&h)#4Pqj$B5e>YCmDW1zmrrDNY6 z<6B+IB*(GV4yMkFr+n}5&-w=D;eu8=w;y88h} z74d1Drhvd8CLqksQ`PIaD3HswX|Fh}A-&3y3D}@m;7#Yh^~dnC%EhW7ozYg6tW=MT zN}!~Ke-RA(I8R3CPX7ohd!Y_QkA7-Zg|)JTe`{F3#~?5m2>ig_{r)_zjC9R8%oz;q zceJM5b*>q7BxttD^_T%sBSN*DM)fkv}wcB#O z)EJWL>L zt9h+^<#2oM`8ed5k1nJdgaWa)|0YZK5lWWHL$AfL?>(h{^4yp5BCC`9<*^#pa#hAA4Vy=?zbsGL193IHC5b*MhBF>>CDN*#$#2{-@Y|)i zB%Lc^89dom(~>p{@ETOUXwqfYIyO+0t~%2Q9S5i3y_+2@5s#DoQ>N@mh2G5 zNdSp{4!(oIJ;%w0%?3FRAEKL3`N%t2GS$|c(n^=~-!3aVMon|yW$(b27p=!BS0`*Q zXBj_jlfFufC$hPWgK$hN3dMzlHgQLrxS;~vP@kRKwh`;#$+-c#e{a7Y2SG)LmP8iH zeNMM1qD33wDeP1vOS1>=WCf1FY9{$_baVx-L3k5Dmgd1i6%jN+X{a-)5+9+%XmMdb z`Liy(a4FS}q67OA)pxV=G*OjAGWJn^NyhI9#&(eKV%rpMgk^6qExT#aTMtU$O-CWD zz&X%64^p_ksPDv?c2jwoj+Yq-p%UpFa8o~61u6il#c#YD6Wymue`k1D7T4e)$117Y zoc$_bcR`9;RA?j{blAAYy|Ch)dqlM+bcvm~RTkuPb_cYC_46m={KX%3y9HjQ1PXi< zaeRI`zXjL*JBIU-ES3>4q<(_Oi)+$^04qaOFW^Q)iZ8*OEOBMyOMTR`B5{G6+XP+D zxZBGXcS0F;41`|5pOp?#!-PAU`wWc*dRuD7TZaoXrL??gMv1@OPifEI zTt%5o3$QuGsvsyrT|TmbYquN1YC(?!66@r!uaCFfGPoZ*c<{me(y*Nlpa~B_XDjQ# z`Xw^X=3+~U=YKVsQTCIU<3iO$zq17S2lq-l%XWT_zHe5F>n~!(p#?(Lt#T;-{@DH6 z@`b9N8-x8l_umLb_hdF5(qeb#kzKUg;FnZEY}Z;HbNQ-AE8ku%@Mg}Ldtk0LEn>(P zUb+P8354nKtm(h&-I{EPYg0lPUp1B;NpSzVKJEBtI7m+S9z*aBLH=~7-FQXeBuQnD z+Np#(xE5zZ7kx&#*-P8<1Bq$Cx}4ItH$NBJl(+a!Fo=2e{$GvCf7ySTxtKZruZ>C^ z_J;Eo=i`n+p+psRkrx4ij!tv@(L*}RZd4BsOPXv4AyT^LK_SsN=WcyIKahS=a(AX+ z@q*>^PGatg|4EHKJ?>L$4`Rf7N5}ix(a1>`rFKUYURhF?x3B(4d@c~FH1QS!P;xE5 zwg!Zgty%M~r@nE=?dRNBz#JqJ+FY|A#Y19r^CoCzZaY6pJ6!^stp`c>Lf-l^DbueIfjK~%eMQh%d% zGiRq*!t^vse}fDPIy5Y{)-v&x0-cu%ks@57$;MS2f(0+WbI*crl)*93!jp7s(WaFC zWvcIOG)l|*V2a|Uc6yynxzTu2rsJJ=w*n$Lti~~@DahWqY3J5zq?@Tt7&>mWeKKKvFIt*TamzHf^5>>? zyhmwlZC5}@-1l3HVawv>B8ndIN)qd4}!bb@f<&3#D#z0{O`^6JrMm`%Ja{2)}MVF6P=ro`N`;Li1BzZ#oz>yaRI|p5<%= zr#gp9I_T59i~3~Ktz2SVIQ6Y;ztOtPF8=HTSIW*CRvx}%yk9geuqb-%x-ikq?&q6f zu6js-=tO@mBfT3+z+IKqLJUr~h9wAmP(MR#7wlm3cZa(?yT;I-)0bfw+ z?#`|r3#4dJ5~;&wRVt?U534yJ)XhM!JUuIvI(59Z7HV_^HzcBJy>pweaV?kMJnd{= zPUo^?NWGz+%Nk+U*T3z(oxSge=i6I~)Qg#=o1x4?EmR)3B|xg}n zV6O6%{Ue3#y)~X*B*>-x99Z~mz8_Z)kA(icx;=iscK`N&cM;WB5h>#^7Vug?v4dbxo{**FiX#?*vbRSKkqIbqUMu$K7W zCSBES7(MXTkxHm@QmaHXnJ&)6Az*fPAW1YUA2TyVG#&dk!s3jn)s$tOoLWNNWOC<^ zNNCK%9S+|bvRh*S=oBO8w^e{a>*%7t|5cD@z33G!KOiYl$<3SpnwnQDsv-I>8yMjf!&{eJ+id2J>7t^rPI%j?Rz*!Nd`_4dcRh zP=bV#q!x>yK-keqay#o@sgtBDt41qvLC)V|EX&QL6spNny%&ByA`c1B11j3>fk;n;PRP_@lF9#R{kPy&U{9)=-AHI~uyEaQQYv9UHVwsHEV>bT4I?_W`@ z`bYz5#F91DF!k729zyj~)Ho{^037n!hy$SG%^D8Y1Knu627BwUM`!&{%}6y;=sA5% zrd6=#*1D3U_eA66uyV{OqV=Uh*`-7hj3dmSwA8Z} z&t~*j_xsnoN#cthrD)mFdCQ^$BAJCC>icEnQC+>N2J;q1&@c3ME6`QZL#a--`=7Y( z_XCMd_X}0(^kfoz76`#*Ik8{yc!hnyogM+O#Mn~E5ae|#EkTp?WC?c@(hKfzn|wmt z&zlqOD|kMKpZY59(<=MHjGS>0MxYpV7q^VpPqIL_%y96bT2CI;XFnnsqgLC-($2ay zm)6B@2`Xv=f3K0`0@gWINgcfgVEP2MYxNMHNfd~nsI0^F;>1_T>tHX1%F13{X8nFJ zt65d>%wQRPznH*n{O_)#(=nbbeqYNENO4}s#QbO%%&B`0fZ`?D<54>4;nJ&Fc#+8l zItWKW8Zj+lL|pv!1J;!cbgtQ$Tqfk5tR&%~ktGL&dd6ECiy_eb>gCA$#*GK^Q7psp zFx-*Y*H@{;)*3@787WDEVUCOD<3;xN;YV;y!^h#bO{|%w{VyrM(ygHXFqSaRn^L%XJ-V@8wXIgWYHKhC5f)0Et59` zotEeMPdm-P#92V8Y!)V+ByKT>y8sO)`L{gC`^E=u{}4;j;law`;|mG{#ah{8DY<4) z2`7rHF?h1Fc^35emD8+Lm1;Pp((A#la!xp2JY;3C#`J!Cga>Q_g$z!DBAF-Tkqbxk zqpg@~t_db-oflt1`!I$wiy-k!x{|pd+sGH?ZRzRZi{&7=PwHy(Y1F{*il#c-(!db+ zdlFStNy&b!NI=u(q@)sK*11Q!m?mfAvtXG81kRQ?L|1W!>d=g0WI@TIIz@Ib`X2{@ zAUsdOP53^#qHu$U_$Xa3a1z}6B%2GmxV5F>WxNFjDDP5;q%;s#gW0K+lP5UpoG-px zWR6%^R8bRs#8#E6z8%bJxdVsgyXxef)02!ya7^fYJyPmXG9p@E!;Wn~4Aj9^&FSe_ zqMqiDZBrWsJ%uZMu~7U;kbww?ZM8W(XPD_T>XlOqbL1VDCXwh^5&50p-_$X(B0iO@^Pd8FQq!5*w% zjRfMsip+YRRHb%SAp({3THW zO*~H?&ix7XWvpE+>B`jEnP3nd)f~l}eK{I2z^JoNcn+Wrolh2V-buqC_~)vQMH{5H z>7QMr580>-M&!x^tgX=K-Tt2T?+W;{X#CZfQY}2d8&a4jx+P_AT$){XR$0baU(xWp zt!(|FbF2=ED}Ym@f7D9{N^!TeIYQ`o3kHp*_>FPnC; z^cQ%SuXFZB8`G;7&%FKib8WZrXl~En>?kGGE5ay$jUd_M>bPFiC`q|OMQO^cZMwDM z>-e`B6|T+?k(owa#tAm5XWlF+ty8cIg&<`Q#S2*VWJ9|0(WWGA@)%UD5_W)^>O@BE z2Id^n)esb*;A1i)JK-vUqjEmrEgU#@V(>sc!aLU-77rmt{t{K8JBIRfI4p9%I@;8j zi^j}mH^wyD{1?C??gD7#itWF$pOT*)X{)rsG|>hP0;_QSLzUYrY*4tgid@%c;gywL zXGdR!onOnLK-3~z+x+y?=<@Qd?s-!qK`pL4LPH!%Dd?|ZHi0Vp-P-2A-esZP5*5D-JX(3lT_j>9wH19 zZRAnesGZ4Fn^65xCB*8%M0pkbVT_wc#FY03_fm>UvKMZtqa+jEVjRSsmIXx>v*l$! z7ayduEx5kkoXonGMlx1)?T%dfOMmRHEKb<&pP9H5!xgsZiN{tP&B#4S#LG!IlL+=d zh1!SM_!S6SF9tS~fVt*#^l%web@_1#87i@TK&01YxRss0g1iBen;#eL5eT z?tI~`c}|@uEbQhZBVF8hnM-`RDEANJ*Q2Cja>v5~Rl1ISElWoDWdF~TpSNXe9^|^! zvK_him(N^MZ>aPJ86Ng6_|{~z^_u-lLoj~edPf#q!w{Z;WI@`l-A){6NDQH?6PrZX z-Q%^z6yVF*P83qh9MAF^IklL5=;{O%6GUd5rv zd8FoLRGnwpS*~to)e-T}nXlV~>`irDpXvw4r|-L&7nMRqJ~XldB(jQ-F={9Ul_`_X zTG&b+^KI$MDR!?po1Yci18y~)tvY|B7MEVMukep*qPK8jHng(Pycl8FK1OL+FvGUc zz~4iGSIr#c`p$eHjEX=g<`F1tWHwRB`0gCAB(IV&r)eh`VZupkw(z^Is#mJb1(rCzxzotcFBz6d>Z!ZjYFtW+S`@W|{JQ#t)1% z2~4ZRX~q>0^!zixRyMkcLhnH;;Il=>>UL0-;c zxNE%Y;_`=ZlOhFwoYJS4EykspmerkxRB9m0`wv_n9d-JWm=G(5*(4yy{NGFps=|c2 zrjw7h8+jl3r8kJFrp`A1_VLFEXm^mTiRZ+XIbxBfh}7lW&&AFHcOYC}`4`9Y5oyVG zH{!w^$+0@tK#N@>SP@SoCf%bf2*$k1c#)M>5@sxhYqEE+39bGk0c6k#6;AxCBm?m` zXiC`iMJjD*>OgJ?0l{^RW8?VY*rkXFlE2+_v&qd|w}nj3g_WP^wcgfk$8#H$Be{c{ z15THE4qisFNl7d5TUTv;Th5pnjr#&eLcw3}YHB+Zbp0%Mf4u!Bzp%dP z2s5=ZjVMQipFsx|mxe+lmJ6+gQy`F1Ib*M4<{w@SFT_a?c$tCB!^23gMsYUaSR2e% zzXEk3oPFb%9Ek!$l*!B>r*EK&7|WK%Zp)h~Gl&`e|E4Mxpp7Q{>BTq}1TJ6sdmI}* z?+Bw@68!aQOVr9sH;x!cp61(&sKiGm%C|)ub5$_pf6M*q=fO>%rkprWgv^BTnOA?y zKlJkv8~>DbD%m3qELM$sRw9;Kdf^oxpCu)mRYaO$0D#7U((T#|p z?NzPA^;4L=t#IQ&7oX?K-gUC06+WR|ziK?`$)leXhY8aNkrBY%ahqO&+inn=>KD;L zXYIq2q>5|CvCz?g!-XZ16YPIAQ~495s9$UsQ8gyCH*|xwtGc7K?XL=T(0(5@qVW;@ zNSwSG|5>)7{)LjBB~<#n0PHmxQh2TU*>dzj6?l05SUcM+dCB`n%Ot&9UgG0iWp0X^svmvQ5_K>uX zagW15l-%=^E_HRa@3$ft+8B)L1+wBW-at=vAP)?1t%ag4%_Es*howNOgb#U;DZsza z?>?($Bu3gm_}=j|7$0~8B#v`R5RjPEP)xzhkfrDsP~t1fsdJOJJTZL z8B4JIc#Dj0OXYB;C zI=K)ViGT5|IxLAWhJ(V|H#mqQ1yg}JCIK1GJ1m$MXz+-D@lRDU9ghjeGu9qX;Z0mqBIkstO2Mv(W+UQ(N8uvQ3{yZ_Y1%B|3#$~N`l@d3 z<--LIw~SQRiIzu>Z(7F=&|s1P@k_0oiK3t^ZDrrHH7t`}{$AA2 z=jq)r^Fw{TzuFnMs0pqmAU8Jzq}MLhs9haW{P)4Tj$h z3+<|VdXa@e6gmZ@i!xl6{&N@5fB0(Gg|g)sw|buUSn&VuOb1#eJ+EKhxkR55G#`Au zw_h0siShD7Ut%_j{JVQTkDx;&yO9qZw30;|k*k|JKHsVIZww)6@hXW8c6>(7OHm+I zdS5Fw1Pp$1e!GE96-crQ9pVLcU6D(vB4#++T7NbKkNV&(|Mfiae>9Ahg8`Lg$b1vn z3E|xT7xi)d*IFTVw*T||WJOEIVT=3!+Y;}G_&Eh@rHkm*1C1BleRw3ZuSZ9UED=Do z&28<-lq51zKEFS64`AJ#Qtjr94PHk`BaSUO*AiN~))}@(x|%g|n$H|UOdH*kDUoAl zeu&+3-B9TchdqcL8aL>AX+!qE*Jc=Ckiz1DvSpUHOg8XUb4t%>1oRnn^e%MoSXTBA zn>lit_hubyyY9X7u3DR4L&UWI_sI99e$*WEYGI3b13U4l> zd+5>2SG`2qT*T*TJ1gactoGymBHE`zcp^aHO=Ml9q~89V-}EMELm3dgb$03MQRxAl z?z0p!Ubhkky43F!FS~j3d9?kcUmD1s#!O7L7g*%!R1JNJW{QbztA(um^=FYB17oEo3uut22Lp9IR#vSsGHL=WvkZ}H@{^`Ac*_MhxGlF5BO9u(Pa?jBnBmN z{HDjKNC;9hSE`Nzqp(4((&0u4ri3dYby6DbwJqfGHdIy`n%iLmh(d+nfz17N?JMp4 z6+9i4^mjh@jJoN}ZP&N)o3H(rRa16f_WHyp7VK^uggSjW4_}s)+2vsxllp&~gP7U` zL>2U)c@>IbbqNgJ=a*7A5Q#-50jr~fZyCYZ(VEvr!;iQloUiwQWfeoA20cWHKlOf0 zO?Y+Zb`c?TC=}+xAem9IlaF$-pZ^TI&gZsnPf9l?7x4MRF3Z6 zA03Cgk(^@m<~$cyTB~5Zw@`%?wQ@y+%(O!@8_|_=Wt`0B(H6H?@S`sT1|y|OH_N3& z539}LXLRR7%{&&;c~ZvpOYwOD%m|$9#4uDd#-=k^Q16g_sUr){O9iFfK*<&kk@(}R z-1w=(v#qCZ6A zU$fvY!t_ktCa@Aku?pu&n%Vk+HW)6#WhOdF$z9Q5HcV-S)&Zw3m#gbq9yENc@~#{H z_Itxyf?QEb_cMk8i<$xzv32g}#mTWW=snTtDGs$KO^r`>uAd<`Qt zXasFgJSDWtexu$~0=bg{oNc&&Ur5C%o2FN$pK^zvgk{+XDaIBu|B|$B#v$)BF&ve8a9kJ-%`D zC&cih8O|*1W}?GHA55g0fHK2v8w?IS)Q|BJQSYQX&?`5C(@z9G_i{$}ZpHPqL`WJv zVd99$xKN<^j7HWUSU8Av2ms)#K&_Ou>4emZF}Y-t(mJ09c?^s>4QPuA|~ z>nlKCzpuCJ=iBM&cjk1+hFJJv=rDVwlQuTguOsQ2S-s9`rJr;i|1*I#x5s?aT)c8H zE|>HoEjsKIM3@`IL44SWsKUSvV*vLtaOc4B>#!5mlSom)+Bcs7h$@Ey!gBNhWQYjq z2+{!hJrGW*4M^4-T~0$SGn0q_^D63h1Hgs1j5}3#ao%SCZZnm!Yiu0)Lq}~hSO{Po zc07wD$ane(squKOQKs?HLf?H%LtDcr_KpF#G-GHEkEqZ7y-Mp4c-eKZ!vjGu!M(A+z~kJQ4jr z#@;Db7@%1eUAAr8w(%|7wr$(CZQHhO+qQM~KFQ6w5C6lTbmn!Ep3J1Gr@Lxu&&|ZL z>8sl{xJE%(lhl5m`(Cd2-uPNLA_V;iq2E)~spyI9Sg~m0!NY+Ag`gX`3xFkkqn!_n zZ@IV=N8T@^fPbca>O2FnZ6rB2|EDIXI1e#&&cjxjLdJam5!mfs0=n10I2=M6SVd9k z-iR0!H+4T|XUsmJuf}OpFIqIwV+fjR6l^qL&_qyKHm6=DRm7v%ndB7^1lop|0RGr% zx?If7#zYT@OfU83`5$u!ols@0PFxP+q}2Y{@GX6E$xTK>pJqXAAthBogkl|&O$iVk zBD4#!Qn#v(d-J{GJa;zk=QqumupN8OYvaT_t1A5MQOIjVI8cuJ14ZHCIPVHm=|2*= zd?X~#|4Hdo7GlN*u2wJg;W#s1xN>OJ`i)9lkS3<|VpEztI$R`qR`s~!L=a)Gy>Tuj zs^9MWGQ2$BS#4U2Cl&C9)9YNPC}^O}ga7qWC6iX*9`HSQ}gTM%?x}eHI2R-FvTnt98>0oh6%?5xlU~ z$y<--*+NGVtca7Mn}^`Va)1JF&kV7(bSE^+8ztTs>rL zPtPx2DOfJpkI&egs%nX`yv8S1==d9{@s93yK>Rt=+pLb&Jur7;{G6KIFtO_2g?$o3 zJUv}90K;s%(_epB;W5ayk_cs-r$Y7^~mr|0wXy@?Tm3u`&EVNXyL5`QJNb?$~X&Bl_+21;*V#r)3j{ z2@`Pa^ToFcK;zJPm}7&4HYWldA#uB83*YwL*|n!O@ZD`%)x}Q*^$=T%z@0s@CmTl4 zwc~JhChM4@maU8=>KMCb1nw8^*KrXsg&vAWA|7*Wiqq05FaaSS*8?f!>=RLSB{FzH z4WPCJ942oGI9pmRpHsB}I;vO$_z|`uf~ClmLSYKkP)8rw4twSkARiTkw-A-FB@3vC zC*ONdw}XJfL9S3plXG%1u~pbWC`+&v6ExGx%UF6P7D|+jrVaqI1|U%YItB!ysc-7I zB)7>iuqZi1h*prW)nJuadO^e{dx)}yp?M*Fl}fTLhK*T-{I=t@0?$QN!>m@=_f#xuD9>s@6Bb`9iDNh15e7t!~WPZH(66_mWhbFRyQhYui=N@6S;<_D+{W%P*o;9Qs-w4Qq3U+Lhj@ zTv}co+fkX#q?OShR@l>R*cAP(Og)QE6ZumcO3!MWdR^BbNous+>HF{DAyQKBhN%(q z6?_$Y=*s8H*>9)L-_!Tu+RA6xRFy%urB!g-RbSm-!|#KPH9FZU7iUy~mFZXRqNzxQ`lg~gicxItTM z;-+;8;iu*+rfb@V0{-4mbp1mK-pn+g7-uZz1s2+YQASakkr`RwOu|&0F&y8p5xcri zC^tSt#8D8yE&%UIQXoLcl`ew1pr0(lwe=Rj(88@t*azX8XKdm)mGL~O3fd7~%1V+7 z+7PmG>lBZdn`q_ES&&x-tH*NdQF=g5cc~|h({smsMXFb;OZcr;*kFamPJemCO8q&k zf~ioN^!xOR7RV{g))^RW55_F&W5nY@Fut49w*`~@G#?O}f`MIsJgIxo+ypqEx+6f} z+^&lc9@%Xuhh-{{tATJ9CB$cd1R3G!NpST9dcXAK2zEMiAG17E^+m=Mq-+zn9wLUq%nI34|l+QZshpIGl-(yBIpcc@F|E87cw(^SVlOrAoGBf zX%_aI2>a#i!@%wyA~vo=`+)+LZn$T+ED+wkB)_lL@y>~g(pjoc~Q{ZInBbh zr;r`hcrHaAe0WDT4BFc`8w}_MASAJ!Fp|W|*w7Wd2B$t&0CpCLp%^8p2lo+Dw3SSl zNj~Wff>xtUOY8?IiL2A_-zWCuO#=t+ZH5X z`J`9F1E1+QHZbm3wz9Y2IPO@qp2%=sXbkB#y^Thm@@8VOR|)M5>i>(m|1X}Ti!;&( zTvJ8o6dM8hTa#@15xH?=VPi~4tP`KtH73*G@6w`RgI)m1W|il|1;HZ35f|!#d06?$ zrpBtC_Gb6u?nVs;wqvwyZo^IxH6o=4_=dJATHbkKR8dvX!o8?kQn$+-t|hqfoG-yn z2Q@sH>2wYp1?UaUmKPYRa3g_PLciq>;*G(^}h4X8oO!5Gjm>(5uM4RiH4RfzQKLdEAH2gR|jt zI#37|d7~4B`MkjEu7FMg#$ZGEULppI&kMm11xFX*jmVEm(f5@vg!a;Ss2-IwQTkP! z6mHYD!0W@%NqE5M8rl>#0FVfP5`DzIFZm4V7vF-$)rB#h{$UQFg*jYibP8T29)RxG zm8VjAaa0+R+!G=8iC21Jn3RGhurW3k_n3k->W3pO2o|&|!15{bWcMxc+9zEh_s`Hh z75RMOoeuraVoGHX!R1ctPXBxm!0E+l&L>qX$z;Z8+0$&5k8{7m`(kEmW= zrXrF3T_AC*{-sG%Fd!;(u*-u?zM|;8(JHyKG<0ZU{C}$fMJUO(+^7w2yswMZ`JcfE zeJO|K<2N@mt}muKP_9Bil(c93_NVtLRz}rmE@<+g8S+{dNbb4Hq841`)9SGBFGI;L z^NX-0(nO4MSu+eVfOt$Yo^7z)s5hEYaEuA^jXp4l(%VoC3kXiXs@A?vo<#jUDmvBv zr>>rcW*DC}>NxUf1hjjS6ZYbekKxI3?Cw%KCy;g#cMN%-Sa%x}-e0hTJI1vS8WY}b zc9L@P!~c^MR!?}R+J!WC5@u$Au*-z$a^R3DC#bvIswMtj;~p!quhfdsttxXh$4nKg zPP-LJ@-*`tcsl3W6)t@3b8mZvvrC<$#FUTH7?ZD5Fi+X@?qVN~u)NrV z+od~vzUVczvn)_(Ch0VuSnb?Hf#z+stSpQn+)7&1r?tIzVDLGUBs7SagJdrhCnZNBtx@;g5^&YcankjLt zW?GwG2c45^!uj?irduN>WZG>O)sTFP54;hq%M+SRlR{P3RMeWPq(NlsaF#Hy61&?V zqj^X-8>x#eivA?GsOr?rQ)r}FWx%F6>~uu}F-(Y|5mXYtBP!FWns3?k*(@v*Kd9tz zCB5=bDCIyQU1xl+C~x)r=To*d^Y<7XEw*T_xh@r*B5LhBxgq~TiH>MA)bx#$XNas& zgEIP%I`D3tmu8%Qnt`SRt+mM_x&%dARW;DRNg>*z#Ui}BYt+I+u2w}srgBA=c57_% zncLolsHtgFGStNtp?p_Mf&6HG%eemHupaXeCW-Owrv-^mp;W-Vpj z9MF|CVKb}fALBQRY+H;1|4>K4|#*kXViuLl0;bACte^mA-Qy(zWtU1KZvNlZqHB`1e< zupJCreq}D*K510_D;lu0$k4xPD^PlYbHXxft()7<#pvfKa}Ae&hUl)o;!QpZm=Hj= zYvFb{s4pe-2Lfl2?Zj|kdx&F{f7__tZqd&)qAu5(2j*8sI;&maGYV2(;##pH4CxXY zVu(r?7I7(wI2;uDYtmDtx#vX3S7+=}UOP}I(8zRKg%cQMK80%qu`Ie$U5p*w+^=Uv z5tV#yXDJdUnfXnLoQTcQ265f~Y_I}mQU*-PL=(*@3bi++lCBS>Xm%lQMIo$cI?a19rl{^PhSj3fB< z&UC^t?Mb1tD0upbqA#-PgB9$Dj{ZMgu089qIBu7x2?0E5P(fj(Gw>*5coV5O5ROnR z9g~|VToM86w{jkxE5y$QQhaz5QA_C(?zMHnuT{t#bDM@=(Ok9h?af4JT(Vid0dnj4 zfS$Tg4<~W_kXM8@e3%}wRA0y=Z$4LSYb(?qBRV0gV)!Oz z+zv#VL=D7hS?}mfnc4O;Zz2aj1g4yDN%OD7Zj^Am^f*?G8w+iW%z%?v)kIRxrT#yo5=4Yr65Me#Llv#-Kr;dOvz6DOHt?QzT;9@` zR(L5~MEAf0u;wzmmaeiB=h4l~yH6=M?+?pfN%aZ^wNJ-np@&Wdt8FFWcUGSH@G z`hw}}fY`$gwoK+Nb8S=p_C{N3yM}DU^mGG&&XV}fAJeRBAn*j?wn&BA7?lT)#eo{} z_I2~jS4*i&1&Nc^NEN~>J+eI9_Cpr(7IX1${{kZAe8&9uU`dI+ythwmJi)V7j&*QS z9c2RpoJeOSIMw(|ZM;6$qd)jn#h5`Ul`Htk%iRn)`Fit7IulrFzJ45>gxl)X>@7Pv zQ8W06d`C$c_-%4I&?O!&WlyX7{9PDxlaV)a%cOZOu8}FsUZIR#;}AD^J+)H`i6z0R zi?vyp(2f#I8&;j;xqNFHT?}JTM_d?U;?+*|VZBS}IW7*=Gu7y}UmQk;%~KsM-6}%M zJOw3*F(pbUKMcTlQT)xnj9L@!sN`N0|E*@|Ada1*5m0WsTqO6cQa``xppC9UKaVG_ zYI7@v%p%=h-%7nixj03wW@rlttZ|5{<@Octp_6_uTpXt3GZUJ0SOU_^D{f2RyAj+< zqr1%RdiHCvEXLBYV7W{zm1m{o>jC$P!uxO^e*-$w?`6-e_^Xa;HBFRES!_1oo?xrP zmYNrPYk{SSy@d0XM2Ow)EH7N%-vjwl#PVGI(>oGd((Ud^*!Bn3L}foEi_996?_%I z6|AA5xWQ;aASoXar<$?it1fS%CgGqqkj5Swy(KCpJ*Gpw+9X^ErpOe#!#th;$@H39EBr;|>pL*7srnv?TkGU9X7L$t!OHt1 z1(o-qCkGVb<@ZnL^pn3eV9=k;h?3SHvt-1V-{ee!Ct5oOzPBIFH(LJpH*;>%j)GL7 zJGEV6EEq`vQq?=l;dgrY>Y36Yz-Xcb-d@)$)QKoiLehPmlrE!JQs5K0Kl6z>INpby0a zLmvdw4Q9N5`1JfxxT_&x0OLP+Jm&9sH2;wa%=-Qb+~Q}JZD53BjD`O)2(RcP`sUMr zTm(J1XE4N05C7=$wMwCEE&E-#V}`5#fgAIbvTrRj-S^5Cb|_6*ZGA#Ag&|YugdsCM zgT)i5aCr~Mz;+E_ybCx^Q|*UTh_$V-^yCJ&6%Oa9PxL6pKOVp#2n10G>;h774p?A5 z1~Jk`!14%MkRQIATn^4+_^t_^SxsZ^tqK0`hzKE!nBEyQ#(b>5zwIA!Cs<4Yw-7N{ zsX2%VW()?Sxk%nZd-FLbi=jzAA`i6r^Y?L`&=Dq1w@j6D8vf@V@b0u<^p`D3W+LLE z-mh~=yt_j$!|b{Kb*owKqp~^pkc<-l#k8}%5x3;$9!#@*B7|6C5ISgBLQUd5qctU& za-+ZIB4X-jzB(3flbl}6>x7=#ry=8aeBJY$8HUf=3w)P@h^dq*KRx<)lh@<9o0p)= z@%s>|T6-p2P3WHkMaO}md3pMUktQQKm*V^asuNKkV^NOs^m7fh>E+8C;3e|zn5GVW z4V8ah9e-@7UvJ;L_rYcUn%^cQ&{jbp6Suba`;3N-MYv;tjH2q>w7dF8fY}mh=;z7h z>mmOmI6-98eCgye{?FeS{58WeO|Gk&%U!<-f(~H|jD@|FEn?{IKRBcU{bUC#^C%p=oN1F@0i z{*?Nz2)}Ge1LdE_sb0A%%ToMTCz?!0e2O)GSrfz5kDhT?$*M~iDE?OW!qsbm_3-o3 z_sj9v$8nqlK$j!^x!Z(OYFIF zH;h8owyaZBWIJxt6ZUV~hl?&&e1$tWqK{gu0#&B_1TxL)v6G_%Z;Sm|ZIR}MMg04V zQo1e5@o$0F=3K4ZG2o+a7-|(}-8mJd!H<|?Bzep9DDnH&8>p{|KwmUbp3fSv!F|d9 zD+q}18MK*mX!PQ%i4x}?^<|cT07CY4;b6b24c*qPGV*N!F3s{qQQ-I<)}ec=O7(VF z>g&sz!9Ms_1EVR>EIv69wLoez3m)AJ-S(wQF$DuzALKVON1hgw?xc_soBNVzq_FqH z-X$W0Lske+G`I*kq+suks#P?Pcs$f#Jdh+*gDt-7QmEsI08AvN1d=wH%zA@mL_Xsd zgCpDlm&U+B18BZ~<`f(`zJXyDher_{9>gqELTn(#~%|c_cu>L%;l%T^5 z$ijIowwME29St;x8G%ej$!+%eKD%DcdMEmc6`=Q2lw)!Yf-LTdHIl2hP!8S?!(~8(4Z~^&8%W_eT!y)n z^UbVm&F=KhzUxZL@jYd_bu~|`048wo5Vc+Bc%q(0NLE6e$ z0#fv%_LmC&eAUVBk7U%Zw>Fi-vDlCZUnw zlJv@J_8p@WYII1qGXBaBU#KQWIU9xvB-Vv;2TI-J=<>+Y#V|DnVKRk#?maD>4>~9q z^kQx4rxWe++p)jPJlO3oaKXt~#KM<-Fk)2k&h`E>T}6>I!lI=%c8&Mc5#^0FL(75+ zKLQTrk$o4;)vssK&{ZT_;oiNwI%l%iwpXK4*a?wHv*l+JhUgqOhI8C8q%gd zqxwx{18RwxGqfJOg1;q=Y`hbeS(12xV-^P@|3DUo zmS#3Whw0XUhq*;vQo1OMU7B?kO9=SRC*C4Cr~s2&F{4#k>f!MSug5ys4SM5t^0Rhi zdrST{y0WWhi*?ZW`b2u`dx(9k+e>cVRPUFpJ_%WMnB`3py9}4Eihe4*fQ%PG7`nL= zeYY%a=Bdn5ewc>BGbUq(%fW;0S7I`Ex4E+vT=$$IuupDre^d<0+K78O@U~}<+~}H` zM*<^^{87#Oe~y#QKfQ@%^!{Mf0MdJ67%~W)E$2|1VnLvrT8;SY+z~%%lTQ8eMNF;`+lbwp6b(c!a24efY6U+RojMwe>?+xX@|*J$rPUlPeSo39 z{iNZIzGRnwQBbDZE7NUFXTosye0^!QQHipXzBZw=WGxYvNl~bJ+BN zJ}UJlDF?X>UX-0aHXvaWfF?Wv9QO765zf|^vSvC8YCs@yMD-1gRV|gCGo%eh&kF3% z@$ThA4a-HOI)9FDfnF;-jGi_Yi4~DxszalR40UmttW^)%Pfct0nfSr^M>yc;j2;iq zlEc2-*#H?F?D}a^nLpO<-DUE|W~i1f2V#!*;7uR8N6DfVf_tP<<~&mf(2G8h+0H(e zQo1m30Cs$Jyd1qTV8#47R7S}y&YE2jm#NE!E&Brj3JB_sUg+RO_0T*CWQ^Trt8JJ4 zQDhAlANAs!qCM~f5exJTyHUalj^csOi!Lz>KPWIoH?M5G#XV^8vJap^x~l5=bl6~N zy;m3ghQ}B8qf@;U9_9LCk+SL|iUpT!3LxOJrBK7=&j%RomF2E1g6v~@a96wHofgn6 zQ1sMX^Rnk7vwK#`DGox&nBDHUShODo43F~sxIjSUWCY&)86d$a=Q<9}C*#0Yd(eD$ z0AK|`&y^$EFxmaE{d4HThqd7I904<4 z(Ua=*X)(Bc_$}>VPgR`wUF?fs%Akr;&4rVbO0^b&r8tw=$AzoLVA=Awp#!ODY5u@D z4p!;TteK}>5i|fa7tQBM759J%h_v%%HEj!Ph0v zqUptG?WUSkm4!o3n0I+p*R(!jx0nDaEt7q)lUj+9^ya_dyp<_umt{A{oA)&N>s}=Xf1B^22!M{KYH zBjUB<;{aE=`Kh<$Ha_aLAZ>lZy*4%uKrX9ttlZo~e4VAV|MX!Xw!RuB8CEt}H$NZL zmDof8(+r@cybsqe-c6`MX>Uw%U}2CeIP7sv;*cWy&r+|IHddiO`X|-stwHCt*VlXO z0e~Zt&RJIisiM3c8-;DqE6Z%QbGqiokOUCI2|BX@GWYeqvU zqFXWw1GclfEL}c^Vjaf5TT*cb9eS+Wo%=D;P4a~?ShJOH5;HDTNB*U*6VkWX=BhbM z4wYz8@@rk$>}>4Ica>LI46ks?29mFFnO{}gGq-z}w+|XAWmn&@n^4`jKjD2p-_A)hlj~q0*MbtRAl{RE>9oHs$Ny?t_=Jkd&wZdSSK&qs?iJHY?7C-Wi zJ{X-v%HhWqV#Fa-s5mFfGyW}6F!C=cyKNO%YWlr`ZoZ{LNED^Udz3?PAl6eAmt2XM6s6jDw|VmTHD+^?9XOS8eFVpqe*pC71U%l z_kYYSDY%DlkEmmeZFyvK!wVN~9 z1D%pK4fWi8d0Yy6Pi>oNNkU7lmgVnx;iFy2P5SWEiC;MKB|DFqs4lPWWx!k>E3S8G zC^~zaCq~ZjlwtF z=UWuf!FkC#5W0dY!*LwIQ8(n!vli9}+$GbrFj1_V%iW2%FoE{4U;vF9^`}%Ss6j#c zm(8$pE(&h1n~eE73l=iCHhQg9FQqF39?(M)9nXbUCh;xxMMM)_V)@)M(VqxKrwIV< z+{n>)vgTXA4vxP$hQbH;9y;uI%Sf}!Z_JIh-zICPl4|20LVQn!DLD`e*1ocSd;nbnOkS$BizTbIR2J}bv zFlh)ZjtTxniyFr#B+r(;fW;cbu149jzUKI3d>35G{1qDVHnxp%VA&jTd5tX7x*#xcU7AKZcT{YioOA!HsG~7>Fr|;_6Lp3D zcDl(h(rCCiUDZLz%MC)ewdTc&ph(AZeP4E3MV5=@?R5U4upORi9}um}M(IJHyzDUa z-rw_D**V9Wdds%%j-xjlVWm;0tMz%>iHuBkUSts)#LYA{n$)rtlSiysr%z^M%-`P2IU?Koz!T^XkR?(p+0!Er>*Z2hcD4{?FiCz?BP=JkRgxS)#_^uzU_{;?V$rFhzLiwFjfRacC7ZN>(8wsjCN)MlXj@%>hZc)Y|c{xbko$cLm01L^qg zhx#m|FwExxKf4O!&oZ0Lzx>ayjyq}AnHBxvkGts)>_1^@4$l8H=Fah7kGZF)OxSKQ zAoP4uyBGVXpU_=w(u&IGiyvtzf;38R0U0xoPDDhvOchf>O4NycjrqMHRws>kvwcXyljadk82(78d)vMA@RP zL1!|Ia{SPNerL#2he!&{w20|YC7uDDWFm46?DDs?_VT9-pJ@B_G2i|+Sc*A`p@!f? z%a`HIgZM6jl;(RXNVjbAVdepI3J+iyd>lV>^;CJjWAB0rNEJ#lj&LbwpF*H1is_yUZ2p26#VWFO@( ze!s(PD^L}#WcMW>S9>!mIy0Q&6A86R(NgM~z+@&hj#2Spn+>WTy(Zld;O@or*y+4D zD!5b}trcZZcxt)^_cz9y0Us_D4(GTikiu*Vm@ukM4A^GYpl2iGg82@V)s`N~ECF+2 z&=#QpGlwj5G+d0(&vK`4VH~qOYBwExrtk#SVO~bm8H_TkTQ${r7mkrZpwwQ!P8)ld z-wb%=Iw5~*$(Vgk%8bkIMb54E(fj2ZJpOWTxJQrFSMW|xFz<4GY!^sr8(vWR8u_vbUHZs7Gs zShqR=1PfLSU$5=Do;BL<;Z2C0A1|r_vfr-m_r3eWr3?;z;Br(WhdPh1CP{DFpm_FZ zE}VgJ&wG3K#_88A4qaV}WSXG!$JWuFX>fR?V(zO_i1PP{OS*?eeuzNR7JExYSE|MF zOD6W$Wjp27s^9|C_oYlZT1DDO1KOa%eu?jNaGPFbX?yo-gk~!3A6uA=ZrWcDOks(} zR9U896e9NeU8~1f&9{EL0|TwJ#nej4V;U;#;4X{pb1Kn1k;AI{?sx@HIJl$2y zb?@g6iU9s-_tcg8$kdvt-Q^2IL95qPtj_;xaX-y8s_PZ8+~*7KniXMIAImK`+OxQdg(m6=7oJW6S(Y-?iv^0u1FOcnZOSZQ`tWCdvuzxDQcZ@*T> zbxdnxBZ>P~b7>HHxxzjfUV6vl$7&I=-p?8y`8KhGpE(%dLD4)PnS9mUOv7z0*o$+B zl`F+d9%CoIj0!W=?E(bAB#Vxe(*%H-JQ5Sgic~f7`JPxH=PYhUDf2_$ZU|D|8}hd( zZI({Ln_Ll~2HJ)e^8iL3CiBoN3C<1lQs5S=?2AU^Gy;>dsHCiwa<+Dh z(qp%GfIQ#cCRxX@3kuCmRraCBXN)t{T>#apTzdItPv0KMTTj8Ue7ZBN-Rz=}QW2?V zOD-CS-5#1Wj~Pz&bh|__#&*k(y`tzXtvk#UJTTRiGKoZX;k4Xl#n)|yYMt2nVQdh? zCypu7`k{d$!lGj3) z!rY?qHQot$<_8}K=*QoIVA+3gFg~a4PzO!*zWV68n8)r*Mqh_hUA7b82403eoCoGs zI-c~Fse44UGA~r)zQICWn;BX1NQ6YKPa)+j`dHCJgOS3A(90(o$X<(D*g>qt=F|#9 zgbFe-Z+3D{`J}s7K*`!fZ4WkF#gw5w8JrBN?u@UccnhKOwia8igQ_qQ^XtQmIj>Wx z<1i!}9i6qIN5!#3a4H*4w;*h!xO7ZaHQq=*Fgh2fgaXixcf?G(3~n_tHt z*XK_|7#Q~w`AtU6Ue3RW6pK`hr|QsomtPfi(Z;@zu?M9C)+UsXut$$?WdP!r>%slJ z<>17>9QD@b9EeoedrUfiVkSiI+w1Af6O~`+K_4o6RZi!NLoPjNf_L60H+8s07jeFB zqs0js6-l1Yi$V(ZRG?yo{5LPU_1DPC`X-6BBK10*zuVKz3YR-#Lj~F6e(!DOfW5AT z#2>dskQL#nmYt?I2PrM*L*%gcc&AKx5#P(z9NsiYA}E!1)L49<{T9rlmrdx%~LTxn_oiVbe=gnS+R%GxtwK8HC#GqGW9WRBZ# zuoibf{yfE{PO9Entb@>RB4o1HBFs5e$KnutDlb#jl^i2=0ns%bxm={18k>h{elEuy z{CtnU9nSMmPbE`ux_=LYc(nDnKanQR#bh&ei$*A&aqyZ!d(x~QBv@2GaN}ldVMdQn zo-e8iVkx!_H4UmNn@&YZ6P3@7%zuXX&tx7Q_WcKQZF>n347%Cx7`{YRFmMn&L8m{3 zL;#b<7|l^2nsasqu^2#mEF4T6eg?T;q^O!!ELwe?m2*o}Ww0^)7?afU<5T++QS=(k zfO0q_;u4e4f)R3N<1`-r8#I|JDvjNkg=2aJ%{-j^WOf^hqe`;eTV8Hi8s~EMIy0A* z=^x`{_f`M0dCz*O`bAh4Hzu>rLG!}e(Pn7iQEoq#E8+eBFcJ?-)DcCA!G%IY^`)*P zip)@t^D|dWclaoj{bNTpt6w$|ObD{6H{u~-q^A04Xlr%Xn|54+2!!=iY-Q9ih-~uI zb{i`V^FWvw_|?2fBea~$$ft%B%10ya_=ZYk0<2RPoL~lxV%%tunGQp+ z;7f!h@qwsls4qH z4rTm9z=%LV{LCE$M;rxwAj{(_bX-ji>vx3}fYTS!IGWRQ^`i(N75@!KJ3DE#&}%i_3q z&?**d3O3M!&=o`&QZ;MzAF=V(c8qRURSMEz8H9RCU`RE~T$LCFVowE;7!-hJ617O` zYPId#rcp-140dsRuETqWGe}~X5y04un+v@CHIp4hZ~&~sF@3xecet{xHNeo|xeIZ- z=;KOGq2l$t<@EA7uaRD$n7XH!gN1BAzO=?{OFkAKR}BX&I1Vgw{RZkf=pmL0dj^fM zB-bJ!M7VoPX-i84(iPlKmDwnAMFTK@FrHQm=!7HP%0~s1SSN$bi4D8(csN`LxQU*F zb%`5TIEMD^%UUToaIQ%=iT-#f}Py4^$*Po-IrMfo$Kl?xXDkk9J!-C=*N$CNq zI7C+pv4DV>1gt2K9+joZWn6!=dK|&=k4jG0qRE70>wyeGk#xXu!9eh)02UaUnuNO^nJQ}2q25g!>@37OjgW%aT)ZoiE{4In=)x0T^j$8Zu| znrVghH(^CuUI%!NOBhp*8L+0*GY6KT)eZAgacAM3tLPzfPxxn@(j+Q7_l?X!ZeuHx zXnS4%IRkBA@=Z0d1*jM~MhlJ=D9@;n2+Mit>-iy}d_m?1O$-A{ttIH?3dV!{rS#y= zaQgY%Vrh##sZc8JEp(1&b~pacXegv&mho#x;(z`mxr7n z=Ty%Cygu7r?Xy1KhbD&iE7IfZvPy^A!nj@@V%0LFc&wCtz!=7ys&u%w+Lb)}J1lGJ zso4&oSS5JW3H4nQD-(ha>B$PT#y4Jm3o{A+Sq z)5F4gp*z189tcNF&`iV~(vwAoZMovJ?*qbSP(SUAUs%Vqr^VIlCy5aCu+~xHy2ASU zc$ddG@b`C)D(WLKNqsG{E?ZB>_BPMLE>UqO@v(Bv)ybxT;v<0Fo;zV$=(@hW_) zx=1;c!iPI%zwMO~7!^(G_S(zE=#3gSq%vWflkY0BxvRIG7hapyID_;SFg*>t$^!9a zE7qsy9rlWivP*byL=6#j-9Fv#bD{*bYQKKekvw|fQHE|05A1#op>p~8xwDHS=$Y+W z!3nR02tn2@?(Of~fAkmt&Fe~#AbkgV1A`ES1?y{CN?F3Y9aK1V*i`=BTLht6jw80y zhkpQ5GH84MiSaQ0hn@~*PNx5w@r-C{DIJfZ`ktvx3*(8PE>Tx#wG}H;rjA%yck2h` zRIb<3GA=PpS{64HGw$og!b@O|Ac|D&}r_d@U zj5KI(@6sdb6+3i`H_8tW9J=Dl#Zh@(bG53nq`tJ=A_lvLI7>V`^Oo~&d- zbvgdYE7Qtya`o|k-ca~c{t}(5$top;S~hIr{d`yTsSEG1L+g#x=ST{*L44uw`@F;6Uu*vC~f-l{_=oEo^m{M_zK=T%EYw$0C(BsHvSWw-B62 z$|Mhe9+BOZFWa!d);`we2PurL!2Y1E@aAI50p)06sHh2eVvgTlDz3@0VOn&iCW%_13g)Lb>e5#7-q1%0^l&ii#;s z%SxQyT(;6qyOPqcu52%HXji#s?l3!*EIx0uzobgKWkSFOO>*g3t@1QYIQ6lKd%O<= zE0M@A$m^wSS@ELnnEp#QL4oAIR`KB^o~)3U;0I8iz8xr|+Jy6{AiAr{wVaP#Oje`j zZ6asTg#smDI0QIfm~d>PGL=OD6`BytfLiuEp%zA@k#Nc$iYb&Q88CZhK~PwZyZEpV z?AIshDufkyw3wSQ(x@xlI(rofrCD#Zd*f{Dm>!`chLof3xjOA9l@%dV^2+z{1mXC% z$tdtc0@JOe*#pW*!CKJ)^!ZO905M00Hln0$i(on9Fh8Inkh+DHbNONb=BXd;EbL7z zDlbjZbT~gwr>AP_^Wej%sw)l{-1mVP{})I%&>B|SxlRru<3p$dQiw?=T62+pAK8jz z+^b=g_ymB);u1Xg7wqpu3mtjUL;Ad|(EbI>W*&o<9(YW)4r=)Wbwwvt2$f#KG9AfF z%gID2RZuKvrnB1v!0T*7nBif6`4{Aa2>gRdbUaN|={N|_N$Q=qn-qrqGq7jXmS5f_ zIEW$E0l||7&eXDhfCkGR!3}6*Sdf_j9O~#R0W}}(mK_|FQD6Y#j7ime8`2-3^|QzP z(sJre-nlCK#>w_>FAG{g^xn2G0!1f5!sUX0#BY&~+H$%{w;c*^L>5HRA1B(>reSw} zEkQ|VW2pvIk5>z%U_6juuiBe?gaRYUWb#XS*g9eMJ1M-gOHX69|)~# zf4(5vmb!%@kw{M+T7mA>Zp*QN=%!wU@x^iWR`iwZzrzu{D{!0KPI|x%#RHg@9 zbW_Tj=0jiZw^R_=FU$4pq1-}~Dj+_u)vh_1jbM2fc;iu8n|16KGUTZ%-d#P9r&1<} z94>u}^isgvbSpc$Bj1_^Y3!eu&!M_5K&bJbCySo(M~MvB-b@^KHoV zi$>Zi{(1W`Q~mfJmg?j;1BnqY2X6aWDH7JAP__P#DL;ivp8Ne! zKx5|+;?C9-?$6yh3cgfGoTYrQK@^N=8bAXP5!j+wV!%Twb3s662pq~59FVkQs)B$6 zfg~B{Jj`F8&#zaUDvCrnM5?@FwR0aP-NWW<@GfB}&^2%VCA*MglCk`lS5&M&UVD$@ zHM0tSV@t51hJZY=|JwYcTwA6?jBph0kN@%K`?7>;5DuJ~Q@$FRNBrBOLE|VIt1&**Cz&c1+PIR24qEp;l}#e(rt5{0~)eGf1W7z@6%Nl zes@OTQrMPX_R3ue%-x3z06!I)F*BBx2`*g(&|#M$Jp@nnOdpZ_Kcu}=tT4b5Ga(ilPA|FP4RO9?l1 z&hr$3vt>+^qfy)rEfSYPI6S|~)kh9!v_=9^prz*O4gFy8$teF}+qneUnY?4k$Yyx* z*#xT`*y>>EEs$ySRNi%qryw4Gv7F|H1zYc&h;ptUrU!*oz$2l6L!QYKw9tz|I)5Cl z0fR8bWafZ`ATbx?RVvyf1yg+t=I8p4pI*eTG-OLHD=JvGfpik{J7M7IeiXlgF4s zgh(TYf)WT?9pyp+TK=)*azVW*69)5%FkPod0+nGq>l(bmUD3&rJ1JmXdy~q;_nNQq z;{}sD2({Mk!p&l`Vbu1M((md#IK_BSAA#;`QhoNeya8&)ni@3GJAXa3Ts21zflfH1 zSYagjh&S;wxRjTB> z;V%I;#|WI!c9IOMCL&@a2sDFg-H$gCG^> zK(CsY2?7F(td?B}jL6mjaU-m{3d)73m`V^^)rm)4xr>@LODkM)0D}%=Hsf&~ZRz5) zs&JaG-Bt(3Q@xCX7s4i@F|bqL%FNQzg>UpB(+#hdD~4px0h1!8YHnxwqqv}W&rb=X zKRezTvafei8ceY=JnQ&A4Vj$@f-58fsp5 z>a5(lz3cu|Wban3NfXfVGRb-hE&}NZ#A})U2%g_Mp{=A&fqe;b$mtpio8uN_IJb7= zklfm^(U~qA#fkSj&V%3n9Q)fR|3LgF!f~j!f`6r6s3Vp5Dl(7~hVSX_8I8$G({;KY zZ?g|g8W-I-^8($Vw?sdTw2zQ=dEgAwR^)fm-!JdUUzHyo^v5paKfGH_6*0!-$F_L0vrg-V3c0tKJnaD7 zj>Ys)Na7AJDvFDh*#i`Imh1L}Z6~qqolK1HkF(jh)YbO6>y7xddr2YXu2F7;2*UeR zqhsqlw$)G{gv@QW#N3HpJI6O+LKHJ};r-q7Jh6;!h}HDY=oc)cN`|e|7scn0Y;)aN zP^B|)+$>EK4-CX&5DP}uqEnd;gF_|~uyC#-T`C4L(&hRvLlCD^zJgVg)z$ZoaHujy6tUQj)Fi@bikvo(($#Uz>iV_ zv^U`hCNImQe6P1SZJX}?pgh_gz5II}Ep$+xEU}g}E>P8ln(@nEn2Oam3)s$gY+qiX& zqhreZxwdhILMtIw6z4Ly2sBf*g&_$rNrw>LZ{V53)e!-Vhy zZr%bU68?)Q0xXa|C~z3vXCp6KgYk~K7~N25lLK*KS^vjg6M8)t4!^5+c7p^VGHNWQ zR6K6a^#h#DOflsl^qZ9}*lNs>1(NbyTZ*A`=qzQS|AHac=<2@q3}a>bEG_M1U6N+( z)H7|YPa^sE;tswiCePRlz(oqqLvBmnLoVOva_I^h%i+Q&ZWur9SDL-`=aL$gDvt*O zufzbL6nNEU@5h4fidl$HIa+J$XXo+KjFa)FuT<koVG=m3OCYS(4VxvwLG zrh?aaInB@+T;Aba=+%4e)y-#q*CHfnLEKx`=+4BfIQiQ`YX zEjqrxQn@gvdK@YD98PwrrWfyk=<3_@cVi-giC=toQ%N3yFP zh!2!pg`^~Gu}Vh6RhR8vUyUyHM>8QOS?2z zVb2BHlHqi@yzoDj+_P%3GJT#^R-X#@@ssq`R96xcblxmc0rEHZ*ZH- zq@z<8io=A44k)8jQ+o9D$*tklD(2)f^l`ABhBirwD#}v1{ecS^9)sBJ1XIF!Ud<02 z#5v#yb}~kDA=-up?4}P8ycPCy$5plNYM?)Ypa@zaj`ylcq~4lTy9R$JNDQrmO^~t) z-0$2ca9EnR`z5Dw1802h9Iz1ZMGJFKgrVbdkKzb(+V|qV?W|uw&~@QL@Os745>BoP zlJIgApAK+3riq2|^Lv+z!P8+vZ97?@4g}c*5i1MM{BFrb!a`suhu5)W1{#48#gd!w zl7-;)v-C3-iRydL>u^cawt0lKjzExF@TXguHYTZ+!2_LLi$k)pe%nOfO)JVL#~$+~ zR|hyM5-xP0*^Ad=>y{^PgyHf7=CrU$HPh7Nai1Aqh&7`bJIA5h(!t}txeX9WIL3c{ z3hR5wQ09b)hCJw#zk-nlsrSL&NC(RjA<8M^Tt&C1-!oS?+%bnU(zf@K^3#%yK9MGdZ6ia>B=Ervg06O@dA zT7=wXHrYXlfV3$Ig1N}fPL<0vWR;kkn!Bu`LBG42AH#?!B$gQgVp7HH7_3pY)r!~G zhNY9j7R7kNm;QCFmSzE7CIG8&8*E|rjq$N zi}Iw&Zenw2C{*Z+fleWm?+l`s6E6Cm8uc>H*j4R{$^puS$Ak%VT*CLS_7JvjiuOYuO#V(DY5 zV>Y~}uDMRP*fRS|s13DK%qU=PDc+w373$wGhTGb@!~;*HgB9R^61?q*uo79 zxOUN8J1(&@&OC3XA;?a7v>KxKX$M=+FA3LVG#OJ4fU{yDBxWATuoBnJ{$aE7jSqz6 zVa2A@(4@e(kiO+X`nn5+jA=GgBD^*qhFsB8^lyWby+Ftw;)E#dA0Ga}jUs;(+!dF? z)a)8zP#x@-n7O0{4+PI|(UW4~?8;02dRiI;5V3=tJN3!-j{`N3?sR6HHoJHm3TY6h zJJY<$z@yfFYVnapRbRof-du~I^6_^A8{7oRn_mCgr^>x$r`CC%mH!|hfP@ZkKcWA? zG4_7$;~+!%J>S0WOHj+$^v9*z9EhjM4ls4{R--80_qqCDs!F5%0Xb(iB>t-wFX#Uz zZ1$fk^Z(22@P8N2n9<&f!)ZtK-K*a>ejGH^)gS>J2(T5D3;;o};pIRCDXfn&FlS$_ z1OB>mt}@q}_hM}(ww=-tSX_2#o?srSQcf>xYC};P-=s(|MR!7=qSHV)>emV`I}w7+ zas>3(9R(fbf6tZ-ZWNTjp}GPEfuyb0Ul6D?OLro8&2(-OD4HonlA!KXY2^DbsRX6E zoKu2QiRPC^<1hr8r8{;htYwq1?W7Ep^x-P(r|AO`RGNmIK%{pMOsIV~(g9ja(Wwf| zrdiWUSpF7|05PO{M@=F?1y?1Id>}_rN)#<3a1{g~wP3<8M@rdHAEH;-*qfQp{=l*l zgyyCSrF)=R4e)w8(Bx_JXEXL<)F;N@7aBycu1ljKT>H`Wv7HG&#))}knhk=aKaygg ziD7kuHS3A79*}Yc$>_)Wq6tt_deMi&7->gO3Mo3)kP)8v>gG&o`e$9(azdA)th@p} z>XM4XBj}5YeLjR$6X?TOqhYF;m8#GhCEZ~bjoQy+MXC>UwS0;-!7wFud|3^eR0>Tn z$~rrx3oDC$Kkwjdl0ehaWJ4N*e0uQ2s-Y_N&ghXrs1#hAkxc?Uz3Gl;qLx#w-<6WFdBu)vt>3VP z3)=wtzEL2$1(ThV{LGcYA70?EDWyn1yU}aT*c6+w= zm%Xd|ueZy`_h;*5=3jYs`%rjCURe6Q;(*m&=nnkfxB7kQJ`}1o%k|0$J^#=1<@tV6 z+Q5FrdO`OSm~z}~wmIx72_l-`u0bVQ?JwMDbM;iVDEHicn$khql<}N^z0v{wm;F5? z>wJL!P;mFzU0v86xdq>K9=|V|8-1C+{b2Q0_D7F5v+i}@$oJC8Ol$KaQ~TY<%L@Hn z*oD{J(NwFy%+c0ucD4Rc)6D(-xt>C*k?nf_*$%f%&^R!^-Y9*VQ|wFn`%y#MyEB3d z>Lb-URf=jw^*kI)Gf>4Oz+$myrKTd!kM^)RAx8Rl`2L?&DXrSoevO(lVFf2iCK*Na|L6t75Np{z z7KaBcP7fHIoj!pcO6&ObiF9-rOufnQwc8+-iSQc@sn=tdk-!1E^6D4k`Dvdatth<( zi6+UiENQ6+kiafp00mJRdJ5E?jh+gj*Xa=gTMU{~V_QK51*;coYzV?@p0#r-j(jJy z((Sf8rwh*r~&zU77PkUx_)-s>Cob}9S|Ig#bYNqY~`>>HN+eY_Z2gD$NGOftk)}$IVKQ#^u$HKf_ z5X*{^MLwyE`Bm%{!X$iInwzQA3_0Kp{MQlsUVl0 zmgWatOT~khAzh}~r9he6NVF`daC!vfbZ#9BO3D`Xh-$-1CU*;~4RU} zIZHIZ8tdGe55#Eb0rUx|jGAfl!IKe~aIGoDmd>1^m>Xi4Rh~>b>uj<;7uc|E=nJ=$ zR0w$VWZ0tF%ruHG?B^;%vb0@hRAr^+J)!*q|xRlXlH3V;XH_-jC9cQ?c6kQfBk>FnLp8ek1HFlBNEGTfg8rFTTt-g9F;EIRz729Z@qJvl8Hp zawfFgFyk}FMY@R^5$5u)B2k9@*cYjH;*Npy1eu}TKA-IkU?7Z0&<$A{LiGZVthuqC zC6)wtx+j(tR#=uGyKYX2$`>#N3{=t6-VNq=1$if$cT%m~P$UPxlU^<5s}ESQJ&pz5 zcx#>?QWT-c&ET5615oM(Lt0usE6#j!dcrVCX4N@;jD;A8scC_$EYRaNA-)Bc`*auE z4&p~e(J=}?L_)DwIXb2@f)CBM4%Zf#{L2yCj6n`oMPV`b9Q|it(q!%|u^@rEkx=l} zXBS&MjVR-0q2Go_JM|(-L^_sH=XivL@?zaFNs{GII)dJr zu_{Lhxm?$?*SD*Tpq0{8(5oT|Q!?&e@8EB(^P0w8{R>@g~Cg zGxaWS48e+C6#q88pk`N<9oq7OnqN?IYRmU&Y`roB6{1yY?}9z#z=CMsz#ZMiNQ9+! zIH*?)vn(W*NVeT;@mrG>ZLE!+fDM0 zfl%fVgQZH3OOda`kA8-+Dsk1tyM^aP@&)Gc;rQ;;J>kXQrw1-`lb=REqxm@wGJ_ST z-z6)-^M^S`inMbU8Pd9GCZ7$^N>d3h9KZ%WmYfH#!K0V|{=(KccfDw#RkPY8#%%qE zZmYJuMpiS~1G7OyzhD2D1_2c0a`OE3pMUT<8q>S~YoX}BcqTG2{(l%IiD#4tW`qfS z`-Y02P&guyqtnzbP+}Kps}jBlMOLC$w?KT}OV;zIk&*Fh`pMfBp9dUJnojQUK864+ zenVTNW(gVawkQ&;Cv0s!lcY?rx8LC6Sf)&)ZrzU7&>|cA|0OpR4vt9A_K$8!$vn~H1U*aUG{zK*r z^k#`YgXZ8CJL`~pW_1eDIZfhkEB6uhRt!7-sJa6;mGsN!W?dq2#`G)?O8o-&WtLz0 zZ?XDsVkS%+%>Vl^JEm^(R@=jmU+8Eu_^ym-Ajm*`Pv=_mQ59oiRU0y ztlC?AwM+=7z#@}Suj#T1UN3=$5GSM`# zB=$C5dso+NP?gzzIxfosatC+wbpae!kH5R~*V0bymh^CJ z7%s6EuS;APO9kDs2uf(EQc2`f!53hQ7Kz|W>pzH0%$&-71)?Q?-7%{95b?l!?sH{H zE~YL|H|vK8dE2E_)LQzjC+?c8CY zyMDi|xOfN0(7e4MIJsWEC){%?ouYS_`EkA}#k?pnR$)C$mwhSqdJDg6svEh~*jbpN z@-E9h@^({kT~W)7lMO3e;ARSPvwy>lS<1e8)TxgPH0I_i41rVNW^>ar!JuM+u&9|& z;f8&fc(oAG96!O^HZ&Y-vaS8~mu_do6<~HnEG`3kM%BOEZMyuN-1pi%ePUA|xc<+# zHaaNSr`!dBzk4RYRWsNPNE*3CV)*KkNK)$(^J=oatzZa9raYx8Ow&=@ib0Dch%-j+ zXk?m)mWLd;D*)~@Y--sH{e85Cc_C7h(vbK$nDmiYkuXUHudteHOhL89CU&!L37stZ zY1jrFfazwHwiW~0-lx?}F`T(G(BxIx;XheNh5<52$J|-Q{2Y6RXsSC`xt8k=cwe{U zH9J+fWFUxlbG_g=@hEGCKm%HHx}MX$1=ln*Oo)!Rpi5GRF)55VE=xY{y>g)tgRu7= zHIcwTtJXVdTVnM)1FNqRA~<2tSm^XBv4@o7N)4^3tdL$mTbOX%2w}u#Wo3+f(saf= z`|`eT@(PHBocmj_7=N$j@gd%^>h5f~d0`6JpB%%D-$6YriOi3_y{x)x_hmdmCTOV{vlb-j5)#)lpaTZMUh!zx zRDeWHYEi1g0w!Z2`^?Hs5l(CFA;iw33m*7sPd>6ZFx>qC87~v-$|nQ-b;Tw;a8X?a zh)2xm6)U8}c0KVvWG~zI7Y=+i%KOI^+O%R9g4s`&L56ReAD3j!rbRESA^%FCom5D{ zW{hlIg-JovoTDW_T#ey&JpBPabv_Xig?V4M)5g5S?+*al6cCHHnnZ!Wmvi0_L?InZ z?u9Y5#ZDrnUph-v;1SN!L2}7Hw>iQ3Gpov3i?IQtfLQ|QCz1Pgm(6qX;xqOIMhXO3 z`Y7DEMh#b7$b0l~jJ=W-Lmsxvc$Ha0Dl!X3r-lZOXRrO*3Jx8`^&^lnmMjmYekjcR z0{~OInr(Z99F?$=!falrt7Uwj?J`Ro0{h`*FnHl_5?|P8yx4SFTbp$5K?7|M1RV=Xe;Kk(f zR+iWd!n^|F#G4^3_DceMEo#Z2F2zqh_IZ0=Xwa%`q?zPw$%g3lK(k6>nDJ$mwqgd( zN^>AyoEUAj7XpGn?T&A80((Nu{NjMUF|o;@2a7bb18j3-JMN=scW)Vzwh97}&jO&s z+inCjoA+SmL%G5^8;ZTw{@q)3n6E7jzyxb)`}$to`)s?x(u)Gc=`&cj)=|LJlD43| z`S&kf1unTVO0F>>7bb*K7lSF#j()rCDIk6^4NTF<6ejG0&abZoLz`*D7Im#cqL^Dc zA-;0&)zOH5Y}{-_jp~Ne_Vi#GHXWei*pL-y))Wf(Q?BRB73C1r z-{V#nUs$A8BZI}2R3Xggr%i`uorO7*Gdqn!XknlxkMpQ>-tl*-(WgGgS*4{^%ux{z zH@R*!M6Ze2oT>V(bkdnJ#wt6i$z0)c_M!+VzC;pN3`!I_y*Bi(Ym!n?Hj+F{ait6) z7Mx1~-b^WOhYRU2nn{)6SqoF@*lHxi6Aok39?u2}7>@*`C_K?n7_hS%-0Bk$`!u}< z+p`~vwkm);PYY?pnT@pY0XEb&?0>0b10QHs25Xxk8xe9y9gmn&!dGy}pq5n;=~0~p z51gZLLRaf#j`q-wDoBQ@c!AGJ-973|_|vPB?69expV4Pk z73q*ytDig7jG=K?Y&4|_ZZ>7PWK2FEnLyhqgy2{c&eRb}wzhb;=ikBU%UAdsf1juQ znf+bg=EX*kbks9Zw_+Yjl-GEm#5i<_(+Ew#^&T`pVc6`ga2kc#Yf!YgE<3SnP+6)co)F$kpCNYF0L?ps3f16}t!7wytoKN$ zK8XrXeBI*{YLfp_*2^|<)tA3VTptfd6==$_N(UIUPQI5l@IT|<7^Zue>#@}{ z;IbnPzjhQ`Rnz^I>ox$QLne9L2iFJtqhX+GY#P5cns|q~8 zjH^e)AEWwh(D9Hact79TAkxC94Re5le11ozS8tyN_LgW`w{o0q-;dh#KbB&(*+2PU zWT%U8c>Fv6Ul0BtcDwyZ->x=)bgVZKFl7ABAAPTl=X%j}a1E76TPT*7)mX#DE3oDB zNuuAq`;%aI9TdZ)FZJg;8Fw#?Ph5=iLECbw>6CI&(^1L$;L*BdSVhSzlX1IGw2Pmk z*Wb%_>gf<8)Xsk~sX?RkS~qd(`TnTYPznWW3TPjf6G(XKkx7M8_nLj0JGwuyzkXq} zkh1Vy-4A#zq%@s&t2W_Lk7<>E40#;N30r?E|q9efnW=wy{Ht$BT4ge{43l-U;$z)BYb#-RIX^ zw^zQUSC`A!vcM+X<`0neo-kc`o}Fv7YReH)7LnGAF=7Kq@_i{)oXLz!=4v`*%UCPA zBcl3)5-IJA%b2sUPwMlKX8zd!0A)C)xi$`yrg6S1DwFXI>{@Z=^)_fo_^AuTjr9vDm214z+lDXEO2(XmhqOnrgl_ew<9K5 z+w_niz&KRv2Ca(?fgS{&@5fe<5E|*vlnR` zhAo0!Alp|#+s!OVU52S@Fn|GiuUbM>9dR)}NS;o%*XHT@baeE3_3y!%@VtpLseJ*K z7$+>EeHLRN?Lyiq{`J^%Z*K6ijrY=D!13-)5+TV~U~-C+eKAw-I5_J`_&05>#aa-K z7-yMoql$-1omS5bcT>y$VLKVNv0(tVpNYb+ z%+H9sOcau7=b4^&ZO@}$h1?Wb^*Qixlc2f>q>Q>K8v%G$py9sE2+T0CR`!RLbVy9^ zaOF=p>xZ)-7x`)yl$uXgU@8A2k7f&ya{)0W zD6sSHX%)ee7>Nsy*VZM)xO`kq13^)9%mrDac6S0k^x*`9a{uc&-ZfVP#0KA((LH8~ zJ#~Q{D$pun%^zEesu$`GnIjr?nKa-UiHN5mT1>dRbIrD9^l2Js%D&J-&ncJ0n@YHH zQAHOW#aG0%S9V-7u^`9d`BI(fEg{y>B;}#Jf@sT#W#eLUn5-M^A8Ey6MkR+eO*_r+ zM2lRBfBm9~<+dw8@X>2gz>S-kEppxCcq9}GA%e!pUkbV;hJUs}a;a*AFk_!)Kq8~~ zd4(f23(}+SLbI${WLbh^iP5gMZ%0$Pz1f! zO-$-gpFrOMfE#yw*c(sv4HI6l6JFVDMs0;v&34!ewGXT^Aax8dNLbEDFIRma`hw1C~lMCg5WYa-Y2E zHkwh;fLk&I#)@}U8X@B$HWXFwx%3cd!8rHsO%Q?m`ghtOA|Ze|wMvE(qbM4*?Z*J} z#s$5J?cM|Ee6!W8;5ssW6|u44)3$gCUlv>;)#5NIkHsyxCR5hRKO|)ngBbIUxxV5Vr{%KF=!qV4 z$Zkwo!2#?yV|m~)oV4@-5Uy07jkP@hqg z$UX@%urmS=b_5{lt@rNX>`rdZD#BLZyj?aF5u$K}!azL@6cOI6KxJY4ky5yy(hg;s z&8!qAyq-O_5eQ4-$L7FfFb*Kw?a~Xj4ib#7xR8}d@DMnyI0dn>+*eW65~@uyoH*Y? zfV)LKeehzIdY>W3G)!s;pu)Xn zIdvL9m1EZ-bzj?x`8i(bXR?bMDbK@Be5Js7?bvSrh_Etzwv*U8ZH1C- zb{siV_unxpqu>U?Bbo6oWZ(qnUkz+e3t30@V}MJVG8Kj$=$v zeGUH6*gcLi{IE)l98o8DMK!X8&xrsU;w<3sFaLnbsqU{QY=@-wbae;asp{^nC+nol zdBZClu3E6e@O8KvHcV6TMKQRu@Bvjrx!z;0kiI{e!_8-E>hy!&k|aqRZj7FKN$%np z5Tq=b$>~ItU+KdQ*_-Y>KQIg5QLJ@VgkKMu0Tnn&B)4a_@b7ZVAGqj%2v`KrBRr^l zn4n_za4enT=4N}ER9!{{OoVGqh%W25th!EV1wd?jhOAV8CpagM;p9V7j%y(ZJh$*Lv zYC1X3(8t_806$7f_+I)n z5Gc@3)eju=UOwV@*3@K!F2#Y2uz*ne)T@#tSFFaT4B7kO6(!kEl1BtZMfse%18imz ziDg}Vf?MPUN_$Lz&tI-Vur@Y^kWPUe_CUJ}y2_b=GtTijeV9HRpndUwNt8NzFk7LKo&pY1i$f&De6 z@6h?_)1I=wKIEr9Zh)qTjTn3o7anmCJUtx<*KfwBf{(IfA}@RJ$+wqCl-^jCaSRFO z07E(}Iq7Wmtn2LR(|Gz=yW=j+*ea2qAt>+W#<1p}kVMaJPrvV+lk-56Kx<4%dv&{F zO$YR)Jx*N_<-wjr-}je2|11)Kd~uE|dp)5gpV9yv)Ulm#$9~UnQi5pz1It6}9>hj7 zB<<#iv)lQ9+X2B{GG+PMhGlloI9VWYAatML#bvAnm7k;|*YubbaL@iV{!9O3+cJ8j zbFz?Od`a-x-zVH{YfK06NAb!WzLO%NjZ4f{2XJmB80U{qr6))i8gs<{U_zU|`u$4# z2qa~tE_>;(W&67Ly&L4khKzl$4?VT5#){A*ei8@mBWpE7lbMvEq@~x)vloUK-&WWk z2|R&&pYwEIK=;q}wzD)4TWc*pwY~lVK_;RRq1tB=H^wmqwJ8XfX-aT?44}^R=jRY! zCQ)^Sn>`ZbU>$V{C;7~Zh~lrcnB@j9kN+Ax-91oeU=d}9+1 zh4U6@%L-q){lV`IWE%XbLyvBY*JD^hiRmexu0EQ61vFc@_Q#S3>L_Qo)I6XDUOi$> z?;j4bF45F5Wc!}Qhpn#=_d_Cak_j4@G^p&Sm|&Y|;(uFXKz6J60lef*PfnU*h5@BW z;FNBnI@kjy_y3`#q;631H!j*)8t#dc!D9RxOiOa5GVhG!BhO}$zP4C9I-j4**4m0I z|4sI1pZP0;aD8al&uz80z7e(r57by`m&{A~RyK3qGeV@(gv-ZM7^C?GZ0H{I2Tq$H zE&Oj}m*u~>=5w+#|L+YrwJp0X4g}vfbp*@6)_^EdQbqKF?f_hFP4wAO>~4!_5(bmV z$k0@YS`zk!J$n1c&((h4MGFod=hHz#L=P|sowu;)-7#u3@$tgD7|0eAWDs|m;~oygdU1%p!X2~Pb3;}r@jBYEz)@j2?7)Y z8cgtsD6WCdJzzI-y_yxr6fLSvs6S{6KsIIRBV%WN%*^cw$fR414_rKz=?{6Ex!N!;Tg#c(mli zgBK*u8wX-HvR9K2e8w~q68sv$b?5e=OVBu|e?PTrVK1m<*<^brEz1@CS~JXJpz78U zAB|*NA0yR4Yg=+Md1c$j4+kZ_FaAo8P-L1_hdk?KMI`+c(iGF?XYZ<_s@s4guxT&K zln+F;tLY>zkS-uK7IFE zwy{{Zk)oG7C@W%IF*Y?Xd~G(@44UJf z(Y~i|JU+hK(J0=<&%Pgl+xq>Bn`-*$Eqw_Ldl+Ny`Lh9-uR1)HAhpi=ErFhx4^?A@dIdYRBz9siz`!G&R`I~8?x z*#>WpoEQrul^xZj^^Aa?+31|_(&4}mL7#GST(+kb=U5-lS4c3?>OSnL z%$C}0-6sr*nMCXFGWtznZXt`4MF;c}P~{ZX%t zu>LV^YJx*_CRx+Q!x>{I^Q;3+mH-`Zy)*)!H&HGhBrK{*ynAOt#d9+txHP6SMGW^Q zGQ^7!+TPHy@Zr@c9g|%%!h`%NtudlNvCFA%_sx&fXb zo_~{FUOR1KL{VkN2qM-^R>RRjWH${*`2$v*cV+*tso=l$;+Z)A_f(L;Z9l{S6XN~@ z6}O0x=B1?v{Kty5lUIq1NZjIvZ2j<;q5=OW72-p zi4Ui%_SJ$oMS>^vqzm-pO)eHQI#7w$%_}(442!VIG{|7Ly5A#uNAtyPGZJ2qzi0lF ze8HQv@)w!I2*M)ju!oW3e%@<5(w|5i?rP`cexBLCep3N6ady0?Wh&{%hY7VbF|+RO zm*DLWXf~*9@ZZA5`rmv2IT;!L=W-#Iwf)xkL$`k@AF2u>}IE#c1ce*tacU)}I zI4(?11gpZ=aFt>i+Bv*?1~;qCQ**7S7`iFuOPi$J1Xrg<|M6Ck!F6#Gf(X}-m4t-#`%G(u1F?zp9F>#b(O zkf>U?=%#J;B8wsbp?AFb)iw2^Y@vh-Db$)=u)jz`I-vrcYgO(pp-22s3_$l^cdssx z#F~qV(CV_q3>rwwwrFfvaPWVABbvVD>HYgsATwwNjf}(NwpoNP=EE}!!|AxF;&7OY z(D5qiW6u6#OND!8`bl-Mt=e_S+OpPDL9NyxemI6L@~g^8#8NDbxU`qSP0}kW<)%~13sa`kPmJl3W8j}_+AA^)19?kN+*i;YyxHs}WuCX#MFV zyQymAgB89z*KTCW#2EWZ6HDhZ%_8tjQ&v5M7eB|4vuQ_t3Eka7q>!-)%;l_m{}U?C zE>Jbd*f{$zwXDk)oRK)BMW*a3ZW~i>71jU3@RM#4VEH%jD5;S@Z^z!Xdqqg9{JqN| zMfH@%$9EVsNAWyW5mjgR?T8bVi0PiqoE{nTlGTggL_1xZ7I5mx2oeFM*<)bN;+@aRKHLwakOB^@C|YEE-P~5t zt_RA6X$FE)c+*NBb>%cLkOqQDO`{uexdvC<@8}-d6G`-sq)qM%9H_6CdZ`rJu+n3n_lAvK1uqgP{^AFWvEXAX z;B4IA5ht}YL5PpRtaeSe47PeS#4sk}J8$L&vA1SYRSyV*Sr%?$DS8gdqEyI3$zll# zNeK$AP<~V_Ku?hfU``qgkU&U}%~tA?cYTZ;6%-pYd|TtV>8K zC4Kw5j2ZKYQ5X2PHsL(=@eKI=tY?`&t46$MQegOAEHYm+l$>e369uR@okS*KQ#YUP z#bis%S`K+E(T2ivA1*OhB+gnYbof=3g$lJUwp3?GkPxFh^Up#AkbBU;On#ydf2N zHsQ!v%z)4LL}=$!aOZV86l+H>Sg2kbB4CEKIS`!%f<7ZW|M%nf`u+1!|BQUC{BBo2 zPe3-3$8UO*W9SXqW79U*biIH$N`2E(P-NAk15Pvr!!N0f!cCAC3g$#yM z@gape4MXAKEiTHi_iSUU>++Sn* zbEK!2qnpcrcg&}+r-Q4nr;EdL*OWvmDLr1bx_t3m_%h4+7=;Qd`8T~{UDljSOVxAz zIYS))Bnk83YLR7cwTz9ldnBw_Wq^JTB>fAzBs9_P^N4wz#bpVd%sF>**zL$;xl(1Z z^7~unA7Tna3ZLo@y67Z|DE%BCcH6tBKQaAM&mmOz|Harju2;e^OEkvBwr$(CZQHi3 z9ow1Mwryu(+qTZRfcMAOH_^48uC6-up1L_!V5OUrwl<+Uf1*-{03H_S@RCY34TSdF zxSI-^`2M#H%y{mTFOA#C!i1Qgeyx_RHQMkGGYC zh6vZ~{bO-L`laro-S9y4`y6;CgrC#!{TsA6ikz}&PH?g5j3DKf_iT4e(7!DaWi_jQ z#AYNSbxbv?3w$>rIdHTP3W0`+PVrt^)ftYY=&Rxk&tSA|$>~Jl%C!t^s=K6cf#t&G zdajIGK2HXd^5csLKVxsD4xR|TQ9phT4(p!t@yN{u4piDd>@F!0$SQy+h?Qj!=&=SS zEZHhI6{jfUQ1XbXoC}=5aeIb!@XjXEt}#__-v{BtVHJWQbv07bfNc)eAhRB4^yEer zyFb2P5XGmX-#-Xog*Y7Rqmi7BUp|DVMM@rJySmOLK^gfjtqYGdBa?_l9gjy0jDRS? zrTU(y$$FSoF)p(%9m9LMmDjvmNdX@(oX78C{@t(|&B$n&Ds$doZOh3*tL;HzC67?U zSDTNVEP&|7WE}9eoT&rSH_R1C0ao^pr#}H1@|m_i&_^6bMlY`cXxh@wAUu-t%5A5mwZ1bqmwWF(1|GlDCym zx+VNP8^P&2EfE=4`uUaD&hTASkqEpdMbUtJWs+*O@ZSjT3T>@+3?qOEB%2R63{>7LAvDv9#*3^jmT3k;NMy|S`gJgnWbQ*8DV zVJh36r@#SAh8*;1KT7RP$bxhg2T^vRZCeNKuC~A}%{7ARHmyihOqsinvPNi*P+Q&F|E;d+}3NUlFE^c3qe}^|wx<_KT6E?+`NR+Vh5Z6VLB`MXTBfdf3cIs=J+HczY0m zm*Br#Je-~CmK5W##m-QhhUhcgy%->&*-;`Fi zzKqllm(ToNdX1h_Wqq8`;!LqD7Ev+5P1$z8v@OpojYPteKjj?M-Bpd z5fkby9|hrwV~}d+wJLse-&O|lTUin?sy06_ADm-xL-=iexY?Dq4m;mqAx;f;-u%}N zUrLQ*TW!|O5#^Wj66VZ*%r>PzP3jV75Vm~k$7wZELW;5!D)za7 zWUHjuL(k1OT&h;TOmlK<7%GR>~!wNaWCkJ+8TvsXmU?i4@QOs8WOfO8G=d|AuHN;7{>_V!j@pAcnWr{8I$=D! zDCM3ucUgvV5E7jfZ9XhUAT%+;w0#b0f$q202TcW+^voyADfo#X(#4ODg#y=*)g>H12gWKrgD@;u zd8L%@zR(2#f!K{1DfYelj~}wdC-3E;Ad7ck0KtIIISA;Ggmuson#Nhmn8LBmmiU76 zbTcb<_fPE|g}o6?+LU{V*(>-3ATrAlg4s}oqq^D4))K~mIzL)Do(xg3}NLAa2*1ai;7~kv zey0u0>004^M5taqI=aNdjd%_acIjGaA@L-c2pnyxuRamxx-`PSw{^H2(tc)hx>4XC z%5fV_@Uz(RC2ph|z@Ywl1`$S#m{rRB1PYym_a5H93Ix0=moKpG(6Fx$<}KJ{7{0s7 zci_fJdsg9(XDmrOXKy7DrE~Hvhac*_Th3=rLuu8I7)R(e{{v&A*z!8S-}{+V$zz}& z)Q^v$t^MHL5|d}p*$@3C_Dzh;q+$=cHIqt=jtmdOIN}-t&&2So*V@C86)O{MbG;4s zDrs-E%BZr!k9Bu<^r-RN5NB=ZxP3NcMH{T*VKw#!`c$N{SfQNaUMajmcSJ@;`P9!U zR0EnriDBO^iW}7|uPE!GRZ%(iYcQ7ca0kVtNgFUwLUd!&Gp!l_H-H&QuxIOSDz^_q zk2CkR9Qa*GcDz47SRxr3LugD|sP+K41_~?JI!qFcq^&Q5$^uIbl-rc5W$W7d7(5aJm3Rgt;k<@EFe3^&1 zCIrQUfQnJP{-Q2yY&}%ur@@>{0L|wN`SXJDKm<`~hubz5VoPtStrGf&Zb&N0@(KZD z%N5cE$&6tN5F0$J-vSBG>V-qX$2*@&fMn&<$jZ$(sZU5r3>73wN}Jgvs9JpkRTQYy*rLP@W|^uBNyfp* ze8bg|XhvSz-raJC7ewJ#N7*d-pTOcSSCID86~uLR^x9w35L1mrkN9^#j@d;Lo4YyMiUM8dCqrM?*(SaIY9R zo3TS}13WSE&T2rS%^@YW$WG*6(P6{8tGB;0=A}NRfX-weNlhkUtKy@Yh-0w+EuU~ zq#CZ6fDADVSsajPtH10@wWn#5xb>++U@swsa__=1gmqwX3%G^GPcs*jNc5nzY@iaF z`ZxGwB5-l`d+;aNMo+>!yONdGHKF6Q-o{n`(x1X%z!Mh+tVf%Qa>O9QL+ZQ=wTDz0>}{uj^uge5%LmRIi2n;S4cAqiz53);;;`3|%o$N~Q$HhUK~}%l>A57i8X880qb~M`bq$Lhvtm&I z+)eU+MiSp&x<=eJ2Xxl$!EyMrIU%|@HI^P>Bd0{4kuvB$x3M{duI=8A1VHt`m=6TY zji2HA9LOlItt8xtA7}B5_9JZMih*Ux3+>Ve(5=6WKpC1Da92P6C#G}6mD;u&MhhCR4(PGrlpI-Gj zwu_e$gc+us;2h-|+F*`}flBe_JdH+9gL8SBv!mr(s7%pX|LTepi1~*tc*3Fm8B5%E zym8?Kl;kr$a;we9^`eiFGcqE;P&PUUl?Juq+mDP1i>|5aTf&WOP)No)c_} z4_}W!Me@l$@yED=%?)Ef5ln)VV|zNJ`sU-jTW*KSZVA;Ln{>U#31S|zfBQ+Tr!J5q z7*(I7FTUeWPuh`A0FHSzhY>XbJf|==I0{vI5 zkRmsaw}ExpD4TH6iqR-GnloUE1STeYL3p1B%OfMtY)fgt_UKrRDq^?Rn&|kb0Y|EM zm@Ufq=fujZB$SFY29}o`5tX?(iJo|?Aw&33<`DQ%;t&{5HWmvI8IDB1YAiF^!nwYM zg$vfju)8=!VW+X{2u`$ffI}1Z8~QKH&kvWvEbm`RO=axAN4F|(2dx>lkurk2SU|_k z^8Jbg8uuu}FRnaj{|MC2x{?U7(vZpmY^qXzq$NPFrF z_@QM@Ff+13zrfnN=ewG;I^{CPq>g zZzW;J=hZ&n&zlv3+upB}cn$&Lo?Cza0Ad=j@UMfzx4T3hv;}$&WE^bMA$PbK>`QCza#bg)D(Vf<4ar5%031Q>e zM1xF6+r^C|_o!(;z}W%1%ub6+fFLGj=CdZ?*V&~93&Nk5lWp#ug3f~i+VNkQ|M`RyE zn!U@C3dL9PXX}JJoF?)|^zel!a(})Zl`z5QGR_|a2hFmL|Kc*v|H}1dXJh(bxvWI{ z(qU5^`S+$z_>2NN60?^896rp1rxu1{_C08ehz=~eh)$nUnXH2Q#vtHv<5;<9>**$@ zJ!d=j|L1!~q?tki#mCv};pXS)+D9OBSRFZh=jg`?d0ibhJeks|W(}hyGY?G^|E^F;D0n$J<}-O$0he$CMS>;9gvR|_s+H^gA)8N2 zXqN$H^C8LeL6(FAMF7a0pP7cjgW{LBK}^txu-pa;TS6VvGnvwrR!8ci>Jox9EQ|e} z86nuw`(xji{dLRn!(Jn;>SHbwMfNdVs!C6LwyAUCovn&vQ;&k7t1@s#`B8(XKJj_; zRftha@DGP5RSwh<0Iwv}z3ocBl?wqk^72z1b<|pS0dOZRNy2;(d+Z4WE#4j$ga)qt z>>w!0kcW;Ivr!}UW%)q|pV=telxd^Tcc7qOW5@uQ)*`lAJ&&rn>ein4xHaG7CJix95qbC;a)Hm1&#UI1;**=_58904*oc-G(?x=UVeqfPd(L_QR!p_^^ zZNhH)Uo&6JsUsu2|JJmeS1ur`49o*AFH?##-$!dfvi6+<;EI3tETG&iz#i z)RqblopXQvQ?xe!A74M0);Hhh`!9%+U*EPj*O-H?9KEgW?Jaux_v`(ogOhCrk6%Ym zbt2!5Zj|79lc6Apy9loUR9jGI%y3{j+Erw#TO4E1rRXtzn|`U3{1vry>ad3t z*2|QI;xEgXiwab|0N*#q$(l<2+vIQu)(TUg=sSWltWl*V~Zh zZm<7jZ0&#UYQu-J{p|t}7fb_I!Lv8o^kq!m_94{wI(EYd@-TX%30O7bfGT= z3zlr9u&eGhH>eBmqHW)=l$@syDz;mkbv8-F!&H;pHlpJabb&(NOh@y;1B3(nZSq8`l!;t<%6gB@?Th z(Jik-9vuQ2k!T;vMw^o+_DT#(bC?!FX6S1;bK;LFTW2~Wm#0o_&?X<2fj#Jw|HjR$ zztzge3)2}>`=YZp`%kRnfSk*6ZpjFBfx4N>cB0byPb9|L!c%in(4cly(Rzo(no}rD zm7UObsw4S`@@YaCtousT74*G6ReZYQ*@SUixe?-fyOXIn|63&kP#-pT$!iM1#;1r5 zF@&YkFc4j&V4_Tq$hGm9a`*)y+J-lg_w-lBCV;WHoI4+H`Zp}_~wmRf}FiB zKs8KB;%1>;3~-+GSGeC?6UhNMR46yFuc}`FG(yv%y@qZ$@%oUnGYaPC`hreu7A9n0 zm|&tvUwADf9dC_=UkdRlJ#E?Q!^qM2Q~7jxutQE(!Ya7y#~FeQ_7%CNcDk_;@qO~7} zrxnhLa}yEYx^w$v5=d3Cn+c$Ct|?w#UFo-O`%p{Om@h6Wfj5w?tsO#h$!1oAyi_k!5s(lV#vu4{-n;`DAW8M17AX zqj5R5(CnQ*lFE5QHzWt)6q-p^^0|m*F8z;L@)NxANKOMqGKY3Es<~%jZ%f{e$gX6a zNtDJ@cC*tu05_b-#AwKd4Y*<6SFKoerXkk|-!3~6jNv?*8j@39Cg!QCjYC$BAfUyr zEm(11f{>J+%zJqN^!xqaIJa3)5K~ZyY!$GE2ITXw72&*cMj%QBkZG#pQESi@zSImH z(J)x~tP6vZ*%`cq;^NRL#z7WYmr0?9EW|eInFr+-Y|CjsJ#-UpBYtF39uYR8`PHpq zyQo=REgVMqjVG)bNr&Q6W6g17L%|xal-a%dBn>EJIjzj*UqFco9Sio!BBf!4^Dx9~ z59Fl4HP-6WZ#6z4E*Q7_A4NQne~Uz*%KnaPL3GaL%lnn}g_NJeAYJ41APT~|g#E`T zu7hEiz^P>7twu)!gsPzEQ@k=BH3wC1z@aN$_bEh#ErL?UeV5s&pRdZf; zRJ`@dNNMEg2=+qOV;k5{0p=XPDS1GQ8d~>Xn(Y?91$_0EQid`~xdp z`dWTrdtd(s&c05bp5BwJossumx_#-na!6?##EGTWnGzr_gl|W0l?Gla0bUKX_Jw)y z6mi}m79V|%`!e`6OOzTdQY7(9;Js5K7h=sp4QbD0L3+P~TdkbzVPuSh0{)@!pgjl( zUP6>wXMB&BbD@mPap^|KZupwDlqLh(8q^D@p@!>=N!DFS+xJRkt9lX93U!h^YnA32 zfFwdt`sHbF>e>P#VKFP*Bca8X8VwXCw?1&PT3r7;RRiAQ`)G@-g9m1cA&tzYzH;|s zF)waoTFThK!QX54Biq8i6CCg6Qk_avO!pDpX&fQzk0dAvgRs+XT8m(Ro6`1{&Y7My z=bfT4X5&CXeeaJG^J&3YITiGMd^lE9?5}L^ZuD|5`D6$LR{O)jr6A_tEz+N zk12ii1LtH1VZRyy^PolEG}^BoP5w#*LMg)!2$4*{M+I7vs|n$XcP3!D9#P`uMR%Ib zG76+)#Wu25A&p9#F$$#i$&A{D4m!goF)N~Y(R(He@Dz-UIV`gVmDWU^Ot>r)^ZIm? zv%L}#u3{jUx$J>YKoY7vl6+WboRU%|yaD_P^*TU*wk(E|7M?b!LR*yT{tD=#>c&}` z#h(jt`dwGQ4Ee)p{{e+QcxafYz26se4udu%FA3o2MMjqeAU1)7^?x{eo>fdTERM0#$%U2 z9qOvYP!vOAq|*z+l4yW7|k@ z=U9Z4(RmbGO{}wK!XN_c_h7g|3$S#?TC^Ze6g^qfe7(1*1a zk&qvGjVKE~7TeABuck^BfnZ4~RoNPMELgFBtQNFLzyIu{Hv<9b)6TuU^kA4RR?D3t zu7=;5F_#JAbxax>Vasb*(Q86-D5zXcS2d z1EkQkncRGr5?%HfobL41ByqT-6j@~t1{9z3AP5BqKLL349f=_9BRe-D`f@29(Fp z4`kOG?}>sd4r2cA1ZZ@uwX(fJy+)rgNaSe}%Q;O2yAqg~}I z_y$!;C4J4mbOP<34PfA}OnlBTK_Ha9n+l@hd98lmoUG^%jZnTLiI8ED(N4bw^aGSI zV2K+j4h5$6Efi`~IX@0@D$@3vVG(ND%p?!r{lOEFN6eJU>%tQLjHUyD(jf@%$AxB@ zQ%L}!2#R=GixaRN=??+@YkIIpoOm|4x?(!yrnRGUkFA+8a{vV=io~-XfTr7pNkQk- zWa|xE_*C?$X2`6ze$EZoHJ~M{ST3)6tu4twLLa{@eNzFy)?Fp_OBo8mUf$IjAA0b4 z@_yHox|e>}tKCTjLHKeRR0`O+h;F5hwm&0jvGzUil71TIhp~L?$VQcN zjQ)T`^KLz=XWW#|Mq9-nKQf_B+0&o53sXLbUZB2HzcNjt=9+)|{-tER+(f{40#ruK zt$fSV3OuRtvn}reImgwp*KY+&=kMOq@T%>3t5+EpiZf9sVTv=q*-A~dtPtSx!A?dG zbw011CI}g>=RJD#hO6dV9caLngMMe05@;5J&02?SE4iUaMn?w`*{uG5U;0G z9RvUqq5RnX7nE`_{)f4bh2wuV_tj`^CvUdH1?=_-yPSt?N4b6cjLZ2nt&?{YXWBcr zOEl&Dm7c-zkBNIY_2n05pT+@zuyWM}C9E_z4S(CYA zi}kuSwHS}d7mY`&%mH*S%}xAtMQ0ygvpLdkL)~+V`^(B1bneHLmK$|D_YazNy__1` zulS?j*meoTC}K))%0CGxT=nTuESx%Eb4Gm5Iw_wHMrK9`FzCl!Y1<5Vq^^cxs=GVi z-nvZe46ovj*Zi|IJ*>^mzzZEBf)K73KdukH!-hUH{a1bl=cBJ#-F0085^Z?ALjtsF ziN~~3a&6(^S~RSu04>tjgnz8E>^7sbHjGf`B?U<|czxru{sapfq z?$NWuBlSWOVK2ZNBu4uezV+6RSb;+-Y~3mH=%q$X=;LeVi{>#Ln@8=ctVU|-73nyk zwU`}x=Pq(v#Sy!jpZ}U$QKv=BMyHs68zjo0`)Q<*!M(GKLLIvYfO%CXa$+tkJ!6$es_$oT6vgC;}#0&$X=qFi&tdF(!&{g>U zxETCs|I=-HZ&b(U9iLcM#VlLi999^PW4P(6!#+g$=Ou^;+-O5zm0p$Wj9wkxXhwV_?YN6d7n@RMu^UJ!K-qsR?c;8ghPbh$3-a@ z-C3`WJ11F+2FFa*=8L}Ph-1dxpwY*)c(1xsw zjwCKIs*?3F716e;(Y89byQQ!9`vKB$S_X;edL{oFi#Clz!)Za=!LTu7NMcc4`??gP zbf1thjg!M~EoOs~2(fR`P!RYEQF=Ma`_H%vC3uXtNJ=b!MC*jus#2Me5E#FSd|o~W z-<>B_sqi2M_Lb_fzXFF$ zLni!z1S+&tLRGvp4R6va04KRs&jk5hTxHnI(yO|}S;|s1xGNPn*zRqiBivmng68v# z!U~x@Lt+)__99ScHbMpNVPe=SolCB(Jbrf|(Wg1wzmo`q1(p%%aH(%MyQO)4pKcSZ zt$-kl0qVSalv9{3nw;x@PUbJq6bDyB_n9v0=9o#-EcnL7h+A$2d%@RYRz&b|%|OlJ z6wVWPv3_EGLRe~)?huf`;Xe=v*8^G*i9~vleWtGIY|M&V7C~!I{hld%f%$@5f?({d z)}C^**cQTS5rK&$vA$;dtRKE%H{@##&7Tc$eM>G7N9q#SOF~Q6K4J!mx9|KvL;5LX zZEbY?{IVBZcA_jOu;pLFzeeyLy(%Z5a|a0RZ?3!EQ`~X^alp)@njz0sut@xdkq!xb z-5j0(LO{L0j%W7c^gvjw@ZUcr1BV{rQ*hq57Eh1Wv-`x%kJ`Xnn%18XZP(0wz2Qw1 zs~;_I08p}Xf(h6F2XNiZNAXma54ehpzZm@(H`Qt`%Vu(ECSpyuyQO0YAk<$em~9vZ zJC*O5f-7hMyb=0;NbcCA&2j3@W8SKN@s_)w_UC1dwqTg@_~>Pz(|7Sodl`?$;XqYH z2$#$!rd4?#)s1A;eEWsMVc6*RVcUZl_-+P}Rg#L`|75rS?p~P)pIG_?Jyb>Y``WgIE>{D3S1)5wSz!LmQ zTYB(rznP4d5x37(QKH{SB5$XLru#s%WAjP*blGG0|2G-$;n;T1zeAoQHtX^|6N{Z*l==91K@ zd!w`$#i#1i_<3_#}-Q&FOvYTcL^(HpddD-*=hkCBfUt zFW~-t5VWZ4;i_2bfYiTz5&@&{d%yON<)_s#w@_AfUd5>qnmD6YWU^XSS4@C@dve?d z3{D*17#k0t`Ai9jC;`CH#9UL@^yDvSE2 zb4fz)d>e-2*$zRa$5EwFZR$wdLl#6_)JD@8rQHV0x&Qgo_ZOn-URzIiDP0%OO!R$t zTiY)I&1E~ot4Z9F&i1f8n#S_n@dJ^aeA-kOar~VWyDp|dt|EgrGgCPjgDGH>xdp_@=L~MKtI=AGiB{|uWg6x)q5JC zQ;qWlF8OsXb+)5CKhLq;+H|;%z`jEfAE14+7hSjXuLCp}9OfGTjq*5z`%H*2u)oPd zFMidp(T59<;bQDk+N~YI@DYYO`zCYCT+`%*C9ECreUdJMGXNhVsuJg8p*vDln?faV zlYE>P&jGUtsXaS0XV#War&X9^O^%P#Bcf#D#Zyq^1nL6m%~83SX@ug zM;-t^8%Nps^>p!g&F}iWM6fu0nwyrAyVieI8(=Y4tIGVa)K+Wrq?}g)aR{D^RR`^?ZO*ot&o(%Oe zMAryzb)-&A_R6L{AzQMwF^xWle9eOG^>d3x39Snop{Da8l0xK9e&aEc_Q|+WLz7AO zvx)&u$`Jg=M0GWK!&5mJotJcgO=i=2>CQ)~2=OB(&bxO5Sova_I&8wC)D%(Glu5iX zJqj~V!EkKopd({>ecC?t-SfZbsaw;`3IN^}`xJKjmaI15obfWQbz;C8?Q1jFhs zGXb~)rJbK;@3vEAY2YEZL%a7jP^R@Bc?>Sh11wtzJ0HX}LHra5`E$<3P=09{m|ixHq|ZMFag9OXh5|0wUD$CB>k6YkdOVrWX1s9<4=^h) z)9Ui|sGrvO)Sl5kz~LM+#DqR1IZ=8^pynC|tFhvOE0oX;7QS?m5{)4#qR_)VB*EpB z>VoK=q!mDjYl4A-KD9iYx+T@UbH#=jlYi1Y6i0ItBoz&%_r&uz={As51bEOnL@w={ ze0`&|Bn=5+Y1aF;KVpAH*VTlvL&7MeFN_??^?Mc4!JRl`ekhuOeik0l;X*Gu;;QQU<>CGTYj6+@=qx6*MX4wR_ZhZ)bY%1}V}Mcj`-BxHmT z>0t<-IFa}Z62})T$wH(w6TtpVdajaal)EUgBKPzRu#^V!ka>%CBjNmp#l8TCvng1< zI2)p)aB9br29MTyvDec*5F;_#dVR*@U^R~i3Ac1W4gUpZ%J@+`6N z1qGeaOUCO>_IqcU1Gc8Rl|DG>XG^r+0}!i`#^V{-=1B9tWCT{y1RqIzMu8!blBPnU zG!}AvcIt!S6Bk;~(T1#TXGfJG1G398mS}My1=C5J(P3Z}rc$JiVnY*`vcTB+htd+q z@qi_?A(XFHLaLOUD2{*(@Yx;h!^hm?PG~~Rr5A<+Ju%bgE9npfuQVD7SWuHe`FLh{ zob&7RPsAgAta+U8pJ0DOQhG4&GmA8ZG2HmOm{xKLiOO&UAY4O8@pMK^OJya2^7YKb zrc#xAscj5AS@p#}vpxg2Z>`{W?)643|Mg6_Ea}P_SA#JyfVZj~fs$hOeN`M==3e1m zqvJ7gK%`sG5Jxx(;OOaybRbr37vO;{(P< zBKg3FYGat=yWc02qEg`SHhA8lnK`tx$H?wFVp|BzsC(I(?u$(Dk-OIQ(={s~&Yg%| zHFxr++xv_Y5@tLne0#EYW02g0rP5t-0gFww21iS;*H?|9$O^t`}QfP z5c6f3@E;L!KE%&TmN}Bf#S(la`QF$qN0@d_c2KTMibn}6VNW+%2`5HJwSGnk?DABo zLo!VM>g^s4a-tBs#2o>vMI#d@x(%YMI;LFXLejc)Ss$czI2WqXG3ufsFg9edVv}-( zcVAG!nSXKe3Ugd`POEnQHde-#5&4{R%>|(kKpj14OPm(l^b}o#cIAEt6N&~M+W9@^ znGmMhj$FRS69V5}E{d39ZbmWHJ*aSu1KDv-4B&{2Pw}Uv655zvtJflo^(Nz+G$G|y zQ&KU3l^r%D$&YHkvY}8>r!>vE%z{}_#owzqDwxqj!b^0@e- znTm_-?v6@qhN-xYZ+b=QE{nz@rzDG)C1;~JbWV<9Sx+dc?>ESP%=1j@>n7*C{s4_b~5TrdD{U&V4Jd;taRX}Fy# z%-|)hs3$wb5|UKOSSTa$7TW8_>v*ZDrfQ_uQNN#ugFy4}3#&tK|6{&FnHY$MlWYWj z5210Af}k|4Q1TtyRKuHmf*zfbX$s=#p3j|mS58EH8i>bD_IU4ffvveOR0p3|)nr_yUQG{v7HE63owX06@V-ocu3r-WLNmFttl>*d`91&RK zSOe#NkAA|6%G1V$Go#t+*hXyw3m7$GEM~E^v*BqNh5wUAp4mUsxKfh6mX*Cm&&c?~ zxfxrdUR=T6`CYTs+fJ#OVbn}LN?G%#DQAyWopK4^XUK#U83s_oJSj*hGzd(KEjD8B zoo0?yUVJUOm*iUsH!8}1!pB^gj;B)X9#ha&A!TNG`4`!tleF}6q9AK)S`^|YnC1j^ zt&p#>+xGyH-4@5{GJFFn!Hhynjc<}ia%vlTC++$NHaKl74$`Fpq2>aA8jqi{JLg6y z?K2br@eX40Yxsj46yR6}30rhb)OjQJrhJDQ2*Aak9p4_BRQblryxbkI5y3n^_XK+8+33c%v)O63fH%MOPPc z`YqaTq>NauoD+3_Laj4O;1BRc&d?|4MR&birp1^Ey-1Ct| z3Y)9e;{#8NHG)pq`CpyS3w>i)X@26B~5K<8P#+VqA z_%YX*>hK?Kk=r2=Bl2Pr+s(}}R&vc^PcCeg>dP?LH|xFAXrTyg!l(4Cv%Bk7OJ!xX zdZ$BK&|D*cBC5|{Mj%-9WLmS)Vl=u(wpw<{-DsEz0W1e@RWr%@hL_V+b84D9L>$>m zs@17dz-L+DN;#F7iWz}P!`=IaDLKBLlJJ#WnuK;oR)o`W5TSlaj%@DTlc=-tmRtn+ z{{ATL)9TA-pHt9m6yRX;aXQwY-~wf5x~;#zNYIQF=(OiIh0uJ0u)B8O=EV8ogw6{o zYGl0X1Fj_ZFH?mdumk8V(>$1(0xTw0<~iI4uxk&t{ujqg7AT9x*LNFiF10&4KIl-(wV{m$BMJCxFF6&8iCZNG>g z5_oxeJ@B>Z{=u|(dcT}KTn(TIXbrm~hwmIbcq38qzz>O~w7Z|t(m#&i(72}G(g)~! zQrG|G3~~eWTfEqX)O$W&gs$FpJ{E6yuJ2ml;xK^gyo~9*X#Z3PznEZF|2I@pSFJJc zhIqc-M?dE;-~v>p&3U-vWII;dH{NRDuu~xhZz8~ua!q!BkY;X=;lH;YbSu=Q+s*Ie zR%(9gq>w}5YHJ4X+ObfhUn|Ve8V%^PT3=a{u1*2=+g>*7*{SIiw;0hW*@}e>mv8gh zm})MiuhegAG*5nsC6%Fp&^vchvqyYPQMY*Rr2Y|nnJDgV@74F71i7g67Z)!Ko2@FT z3f!bbXwl>Xf z%w{L!fKMJ}DH`>7fO=_4sx8>0f6``1>fS$d1hlGxj<@8&NtK6R#Q(wyxj$nkYIQC? z6NZQ9?2ET;+Pm$dW4+E;{ZbvtBZO9h@iE#LJwDf77$NAMzYoYlHpJ6jH1~=C#c;4% z1)DVT9Aq$~vy+%FB{kE+DR}DqV4ExIwC}zDAZeLmi!j7+WYL8&wQbls#qiWuPI2#} zY|6X)FSahy5jzrBX@m4dT&LPQwV-G}vmuze$%G0vmA_Rj*$yRVv5HvRFSd+c2LP4h z#A%AaG&9k8Ellmw<4>x)!DG%mISPxm1%VznGT0vkLOS`fD7|7~wh>TYI-eJ$jmr*6 ztTCb?D@mz0p+xu|KuZV)PLzZ3aP}3&?TO6(>4BH0tgKb2f^A`kmhyzUj;3>}HuZxT z5BCfpTXV_#c}w3N{R?u?nKbcNWe`3Fp6}2$f*)KLQPum#pv{z=k;F_ev(<)9bk@uc zabm(U+%ruC4rm`R<*j~R)HWl#+Axr3c`#Iq(|Q!l7cZ%PwmpC(KR%Y27jBK8bv8B* zAz;Lgi2c;bx?~~9UwmA-8z}0c42Ee0zQsT;5$FOQBVY_&odJwDuXTZyw+Dp~-rIUP z#g3VH9dD-sKSO~XT)yIB?7w+n2>aZ2yu81k60IpcWaKPIPZ7O<7( z!MQdeo)D-ymWS_$&Q=@kpY6`EW#tAsCPZJTJabaG07Z&c!un^d`vP_GNXo z>@XGKCn?M&L@%BVe4m_KC>aFZ_thN^r3^S)TqX0nT=NkY_9HITLbV}nj04n??5V=$ znlyt1#92U8Wc&R6A6{{<`P*!+0ji&YwTMjt;e^#f<{q)19JCj(dJxZ#qi|ZsC{=0( z$S_7jVA165F^>GXmA0Cjg1JvMc0}~xZgkEaY7!gh;$ZIWec)>Y@CnPy@!z*c%p>0p z8&d|$|5+5ngJQx2D<4SVvJ-!k*G{R{P3q-uFPgJ%Gv-Ay#Kp( zcnwqj06f|H^TyG?SZke_A{A^fEp;fbt>oZqDD&8R{EGgV!xr0<2Z=@=ODA`U8S$w! z7abrVv!uJ4h?h{pF0W{~H)f}q8H~=uIq`mumHLt@Nm!Q+d z=ws5+UBj461~%2`%bC63@zpjFz;SSrE_2In0<3;Qe-WeR=vdcvJdg{0F`Tg3M4RgA zgBD7J0TLa|I1!<54qp!{F}n!0`|zj8nBPFa3>+OE5O-B(K%no7BTcS#E7gNj`@!T( zJmRr=kAXzm#go5=_x__ra93O|2z=LiCjYb(N5KXZ*^=B0A3+YB34|#9Dh5qU;3xzl zzPPicQ!F1!EFSB+5(NF%-&lfPwKj^3F+K&7NW)ODO-%k(F`Z`9G!lXPA19bJ5=feq z6=YCOC_$A9kw=wW!;WHMu!HN05F-gzV|KP8Vau~2>E7mpKOxZx@9|%s&ey4SJVU|H zPHb<3$s8Wa$G+CwztlpKiu=gF58gbp6b-4k)T+P zju)_BrjJ|?3d;`wP%90GV|%1`6#kE(+<6idIvd&C2F8_2=cJ&NZD^slC_Hk2kYTiz zYjw+vnk`jY&s{No=yX=ZAro|#9>O?6Ml{E%*thTY8Rvz+NuF;4P8Dgr$Xo>G&APZ4 zz4d{8k|q{s9vd_Qck%7G7(stFDqTtn&-%PMGk8Rb zcF5jasFuPt{Gy1AO=~_q?tC0A46$^%IZ79W`eJ*88x529h3X^IMz#shjq8(^A(4`L zg&r2(?39$3QPGX)XA6d`${x37&@}k~JE~s$GIey;9k`-=&+{jVwNr{WnY|@M(sD-zjcgN;!JgTY z8}EJ@Ep**0V(%RmI=<$oV4fPf(w7wteOYaQX*Ra3h9Mz7Y21hVXtq zHKdSyOSy{lA?xK*RM^eGa_sDOYWNaA`UkiS)D-Za+%4As4baQU#`gcadtv*ZpD{+X z_Uv&wV13{I?|^$1rH)9Z02%;vM=z$G2O1!SUjqvpxt_MM%D$1kfzAAV`ze3Ha9p*n z>sbP;Z@_^SC!+j)FVE0Xau_&CTo*MXE{sx*K}ZXZRuET;p@>b2QE;Id6>hJ*M*5AR z6$c{p4&}Zkp}JKeA2}`Ax3ZWEUs^O%L>F#|z_cEfptA%@unmulq9o~(gj-^x%8Cx$ zaKzNyN^ehJVKIC7Z21yK2Ljjf?daC1?fiXvuxkG(`Z@?>{?6d3+X=Hdg}Oy=dw;q6^Y8Ep z0bfJt8MLkC)7SZCW9-||vE2f)H*l$3k9l3k_5d9SZc}$S#F@Iq!_(>R*?qnflej~( z*Y9(TdOJ$1>B@38k8j%9m!Gy<>aY1rDx+^e967w z%(3w-U0OW!$=YsPdU%seEN&LXfxU)Vbui65h)=Yvw;eJAEX9c*5 zp4QpN02qVJHCVYTuR!h=zZiG&_Lh}U13hoXA#~&y&&TCr6;G!8f13r71(65wAJL@9 zxX3amv$WC6xz)n>y9TUsLR(@0+c-KWiejDXpm^R^wIZRgGFrx|DVo=q3^^>%bcS-AQ;0WuKYOC08J)aa9@lWuHU zOuBq^`f}FN7}Ui$m$7{qdbFX(q%vkhlWNxu$I&h5gOS;weLdWs8*)d)0&nVjGEWwD z@Y;#@qRPN-euP*$SOYQ!Qch^lT~taE$Rf9IWEOpXQJJ>shmF&PXXKr3@Cs$CD;@Jg(QPLm(5-~%T{h3pZ!?Y z$;#9wkn`=Zsx|UWne|cJFWNjG6;V4MMVWAVkwI} z=_HqQmp_07qwVqDv74RAUOU4<#YoE=OioYpUzY@97S@m#d(0i~RmrAhy4x#k> z8F9+HUrH5G(^|P3$px_!3g8)8mza&}WY~glYcYch;Yq+KUkGX)M~Ew|N|=Z+rYUQ* zE(}(@wnvMWBE=OUOiyyHeo-S_rc;h0;;}bGkcA=&0objH{sC1*x@FDT+D+CbpE?P{duX1J>Z%naQ zr$Y{aOD48Qw-(J4Tk4)(|G^v)?JwAy7F*do(q$7!!-QS2jB(1Jz%*zqMZ7}&i$QpM z9gU9&Ai@XSWj69-!RwW>(gV7@eKWghALUcXRSy{boJaR4r|U#hLrd~7Ex zUf7)TST(k2Byb~Vl&qpq#y-8UzKBAcHhC^9#vgc3 zL1w-n{<*u>L%$&z;2RaB5lfyprd%EZ3bro@^C@*?d2S!Gk!3^$76K@N?~&*o^U)sD zgj{Lh8?j*&k+3FYZHdjy1o*fh)Nqc&teD>#qdO1j_W5&MUS1s_80rQQ+T+*ji<3Eh zZxmYOvq<$|vS^*twF?-gB}mXd=0`3hIL-?e9oBP&r1BCFJvt;opA(96>(RaR(wv|= z-LC75-rgt?Fg|6S45)6-D08GdR!R4;}Jz}!bsVa5Fm72qPq=H?3$|N+K z=W})6Kkv(w44wZke~_8^Kh9k^nEz*gum;OAX{+_+>lcdkN1?)ap*wEYg(-H;k*&$v zzUhi1hveu$DLyzfY;Y*+rtYpwKncaPi+KSZ5WatCXsAojt3i7`Y7KpFTc77|RUWM& zCAgrieUFZ4D{{yIk+c?-E9z_J@T>$`bJyxd?BUV0(<$&oJf(H!a_#F5z4uO2@EDLP z6T=gt$HUd{;VT4K!0X`o{ct@}*DnDTo&V2@o{i!4XRx)KM2}~2+UNk>e_Gt+pCOSbGOhR(gp6(MX2FoHKY*V5pkik^*RB}kg3{A<$zgpwG~*)msUxZ7}tgUxUOku zXM9NCdO%HP(4+zPzJ(@kxTtrc)&1Uno zi5-}FDb{x6*A1WTKSBwz?6U8XSE7J^RogC|Q&qEG!Q~Z(t!iEzr<{_SQQ-p%dKeKw z$8zyDYlI84TW@2=bzrXm$p-N=q*@KcN+xt#%9KrqE5S4m z#kuykcJxaL`~6L)3^EJ}G4jiomg|{J_~6$yRFbK-auA6?!O$BPdn!9q)s1u5NY>ZR zP*Jc<{v93Tp`Yy!G9Dx*_7t2Zs}miPCsQvWZ)#>iKRFiI15lx0{7R9DfB~Rk&Cr-! zW;$aW3pOXG!WNb&7K`B}tTDs1+GF2IKLX4Qt4z+*+EvGW#EbX8a499m*gcHoRn+xh zPC~0r8+#bjrGU`^B5S+Ds2Q=Mb~Z5MCC)4tNS$ z48{CJ&En!Hyih>~|N7PfrPDNbZIkC+U%qQJ#STlE3(jb~ER7N3c6@JF?ezl{Jn?jz ze9IMUl~So?u>&26LOmFvb0(jRDG(pTt2AT<+&tRFLqnf2@TZ7tWkDZL$Fi)W1mCE^ zF_b5!fj4M^-N6T-8`}q`G(Sl4^!A4^9VN$*y^N!p#NP&s%Rf?{uk0zpPsU0S9QTZ&T;jm3V?)Adla0V#5`pWILZ5<3@Uqu^XZ zY3V?MYcupzuvhS-IgYzxPc|MH!(!#4)P*al-?%&S3F?LD8L*S_U&P9;O6T)K41m_c z0oB$v>+^>YnL%TO?s>gqllk$0zYJ(fAk}8C6>t${S%-W zknK=#vltVgyQi|GQ=QPD{Igl%7{r)>{>GSqszk*M&Tj-$=<7OWUU9HS0gP0LDF`&; z2eeRCtDH8B8d)#hn#f;ZN!^Tn?uOOk+elf?SImt2)JpLjO0N_kE&yMyVF45>-44kS zxz@qYadyBKpdk9Ug($WlQt@^);SNb$?vK^h_{LA$aGcDlLjsRg9(l;?4VK5}PF8kq zUZVWwE&z%JU(Mc3tkH^o|L9n)3p zQio!5{6k-}y*^$~Uw3}0{=s<#A#x1K#Qutj=PlSr9)AH?-x%^iPux3Zi#9l1dyc!P z@(@@PUZ5>SIB>vD;!C zAwPSI0r5;V94SYij2Xoat~U*G;85s<`3{58ho@Hnp0`2nW|Rot$u@{Wg~U{3Ci1j9 z8iD?bfS--nj_Lt8#@dH}-Tu66rQs_S@AdwBIsLuO8+4^Js?ag2R} zG|dzAVK96FpYMeavMEF)7|AK7Th%cH2NJ#CxKGoN!-=cpu2pfTqjuF=tXR3rsZE(k zeinxqc5gSZ%=XSSe0`2cj8pN3QTkghXNNJX3XdV|3(AGu)ZNql-Ni)jXS3*rq6-Y# zYsI(D?N3ETIqsa|e)NE#VOIWXjSN$A>u zm=N;RRizz)jvdB7I`RiWvPKBMn1+F#RXi1w!TjA*?N}HLC2U4z>+R@5iQf*&=;tY8 z6Zav@EkH|~Y+qXIvY^ZG98{PxITAKa8y#lXtYRC(CZLCz?f0eoxBnzus`Up!WL_wtv=$Mq|R7H`D&7rStB;95kMWCI-tU5MP+PY)M(nJ{Uk7XFE8@N zP&(CH8l56&EaH<@gIahI#lMcZ7WB`(I<}2WUdU^(Qto2Vtz_Kv)~%C=R-Xtp{&4)ox@mp@KDHPDboi2I~j$j^da_GM+u%g)}4W~$U!LCC+%`E zv&rJk+rxgNg=_6b2k3%Z4dWS*C&cbbRvl;cYfN@?))X}MMmu2X3$0hat&bHR#BO}+ zk#KV#F|$khz{a>FxIvlMWyiUZ8WLmHgTOonVHPbsS?LwnnC5)~#n}>ky9`-QDcJdS zBdHt!D6f%ft<13i{q+^=G{1+AbLQ=n0EC#*+jp7C5`w$O0mW@lVv+&My4-4Tze~L+ z9gcikXU`GXMA2M6F!fM`(!r~K$o&y367l=}fFysg_9|+tbUwivT3L{6sxs4<-&M6$ zif2VWQi$7P=hpR(VBuPIGzfMLJZG_c&bPtdi{F=rSzbYX3A|0Y0ylYv#6aAU6`czt zD;xYLmq~zc?%qUYWr>{gtQ);s*&{E2XL9B^qaX#wlItuZ?at0lU)T5j_U9z(3mu=X z&Np3|hduzOuI|NOCi_fxpI$#;URGMuqZnU3!6y+;-iOB!<07|hyBy60xDHip5!|UB z!kikEp&eLR1C(JU2_Ujf=ncighr{raojjrnIYcden7N{A%`ZK^)jUrr#{WL+L(*3| z7ZTbH>B&39?Pa*smy~0%GdSTCy4PX9vmRfl_Tiigw zFF=5?rfTb9*}OSHIOn!gnK)4NwUZ)D@LO6mZ>(g4>bcl_ef#@6 zX)Gc-NK#f=h8T#Y{06CQE&=FGlQ$Sv*%0$EkKceeLeR!Wkh03Dt&+Vwza_`7$$&RE zYr*MN6QwFV%il2%5p{&kn0Je*cEc5uq2C{}-{~px6#U6HjC3`@GkWX^=|IBgQ5SCU zr<9)vbR4g)ugTL$j;$&-cL;zCQ-^4ye@p`8Xl+HJV)5u!;7;2i0p`+^D2tv~G*TT8 zxBreshy9=7(cG4kpejX3c(>uiAfGy5{mbdjOceVwg_Xn3@5<>cj8Z=r!OfDwF5#3Q za@8Y!9_Q8sr(Q!PQWMiBLZx}#y%NZ5BKCp1iw$Y7Pop-+ki=gS$oA>C)>s=XS~aVC zd5EqRK|_DGdl`&r(iYwXtk{fS(hI0Zv>u3)gnyn-<~1_XQa967Sk;yLj@2(5T&4>B zp%$VWe(ouRjN!Nk-R!Rb)_WF zgs>PV>4TqaanRU*iD{Pq2>)ea_}@dOTC}$8wj_{z-qg<(frv6~+>(}!nxMxd$?!-V zM;)0kWWWGv7my4im*Z8kuh;B%Iwhr4$hy{j5s<81>_n{=OKI`C8H^z~0X{r?;E?<$*Sk@k46wNE((- z&ZTKH@B2HDS5tU<8h#rTW%^f~x)s4zVD18OVf6TWoyP1}kI&keM{)1nRj?(yYSQ$t ze1)azs?v@DS7u2IDs9D0J0<({&p@mAMXQp2m*;G_R$}W*^IX0P%gwS>8}pn_yVQ$Y z*mdr2uC{h>is$4K$IIa2syiF>*X1vz37+|6DAR(aJlza5ZO`z-cW3<5;JI7J84S$7 zlb-oJVNg@%DJ2?bvEn1?AA$$8vB%YvOUFQn=zKj+HSfsMqnUFP!%|gZR`a%+>{1t0 zT!vY~EvDOVrk%TJsH%KEi=u9vtX3UfLtqIM?xjtb^T0zJY+CU)ikg&W8ygOpt!WBu z8Vdu#C0c3%ORuAr<4a>@)9CF~EFrSrqmL^4O*+S}uZJ^W%(sP>8nw+WHV+=%;Z>d9H=(9rB#Z5XUPpYe>8TjPj!`3%pugE4%UExtB7D7qMU6>H-r#PIgszhQ21(7+_(qvI6g%C<)ZYZer`Fvd4g zX|Ax1)=gE>7PKnAX-C-f&C{55FJ;>j>Rh_tr3*Hm_i;&`fQ)kjf7^lGN}rhymp1B0 z(h4&4YN~DA(#gsZ5UnAYlqlx>@~>3va4tin5cVu^3Z&%j&>B@HVZQ9O*}yP_} zfhzs~TfV;kSJjT3p|i8EUw)qcED4y=e(c>?nT%l)tHHU|gMtV48mN%&a^qqFYpF?t zQx>{?u+iUFOVWQ(V8|GLEJ~^byEIY(;tYCkRJ?LO%U>X=zsJ`yZ!&P`pOc?h%CvjG{*>#s9i6H&SQV(_66%f->Xsy>9+vjmjGQEXwIgs+3)K1`8>S7 z{wU)laKYl}60f|f9<3!Z<7;pW52y`{HJ$-)bZG=H~E-dzMYX`xxp&CxbrHBM%k&f!luwxLzy zaDn#n`-}DG zhg%I^u)-+upT@jou!s-+T`LN%JtbjD}%_z)BW%s;U*93LAxx3c+zR@wtYipcu&fH! zf`k3_o7__W;*&Yx1<_iE5Y7#u3LIskQuDwGUbhvv=C08sgTUW-`= z5Y#c%og32(E^DfFrgmu0MUcShU~bS~oVSqLDyp^@J5wbB_@y;|Lbd>G&Jckn^gloAB4fsX1Pl80eW&9s1WqJDgo7p+op zxq^*E9W#HDiaL!m10wl8K&TL>IxzC~ibngN%`ZJJjew{go2?dIiFv}_k2Dyy0hxmg zliRM;U@iXAd{atn3U=Uf6g4e5Z0T2yO5$m@USXCkO4j&|#hD%pF4pgxM|Noy(eGMD zIcxF2)x$pzZ@>C%u3=oi9kj@-jv2vCJGe5-_q=T261X&YQ4+&0AV_b6(Sigwi_)5d z^9y0hPGL>}4VOn_^p$O=7Zrdy$qWiKBR9(@0)(}ja_5zHF2`ZpGeTT-oI})(*WA9g zFFBFc2^AoE@g+bo_E}v9ZL|{H_T7*&VqO@bj1d?8NEqRy>_%8Ciy-%~;m}QJ*W>dLQuMp<-$K92wkNYRT4$8sM-=e| zJ)F=T0zHDE?#pPl0t(1qeaIOaL2ck=wOMD2eW$68H~U&R590SO8_PP+Ebj=P5OE(t zHk;C!1x5dCKmVa{yD%sRVQxKz6EIuttF)V-Dr&sF8a-Qx3pRa zDZ`b?e_Rtsjl&@;p!icC9Xce;$i)T$P>cwb9;AhzO2USHuSR6hSvib^#A~$xb;X8tbNncoezXP-b~$0?hYrPf=jteV%0c~d#jf4%@M?_MVrM) z0v1Om^U6hVvGN#V`2(z+LkMjpL+N@oU{3A%7VsQDW_f7s3n5&wtq#be2y)CeLWS^z zY}3sIkmLP5_e+CJ7!nB#`+XBya?M$tn|18joNCe(Jffl&7`@MjC^O*{Ep`0`94p>F zFW0Asr|gR4yb=A#p%V>UK94OJ6;PfrL~|r|)gKse77RxOv0;V3-?xXaE8~VClhDZK z2^A--!dpOXYZ*f)XH{)!b^JVjj#lF!(L51wv-|+r4EwoZ_q@>auus^i+^8~P%AKRe z1*AhNn+0TQ34MiZXtWKmUx2>2%8$OF5wmYK=dN-|^!r>_5MVlT1v^x2QSPp;#eP)hcoYD=A-BgTmk2g|wv%MU`@ zmP5TvX}ur3e|r#;fs8a+s;{FcP??hY*v0TQpMliRfIa?`usVkF;4~huw`6-Uiln^1 zWxvqB?jHx7P``&`mV5PMf1w~o2u1=xf&*U2hO8NgBUBV}5HGF4M#T4b?f7P&IYo{@ z;WIdZ#gq~Q1s@oI!(cqlHpY7i#Qx4b5dM!d$D}$hntKqO*Zus7{s7-W!k8i=lITRj zfRVCVd@PAIqtnC?lzNmn1b#gc+-+1Hfd$6(Kh(CvMQ;X_DWrjWkD(1x=b<|D%lxY+bCFADL&-U2gfs*)AE z>fj2VpRn|hJg8Z~Pz~F4N@F61sft9E#PXQny*RB+7!mfXq(>rrCzeZ=wU*gatY zhKp7X--<@MCQc6D3kT2|B#OpRtZHc|kRDRELl&LRLvK)1iovTxNk$;6GNf3cCmz-kRqA=5e4 z@g3EQymZhdVV$f%N#q$f`<&*<8>0bbNyq-{xrHIZC4Ya6vY`73=fb6wh@%9zv-^-< zX*B4en8QA=7$QAo-^97i_tQilisA^MrG90j5v!aMwbuj09G-{%7RYrnG z8gy|Q=6S3hFWJ6d4>Q&mnv=+oy#ji@XxaJ{@}S^ri;Q7B`_#Dq92iHs`8@5rq`l^t zB~ayj@D9)UI|-%#QcC`=pMrmlFXpc}SK~5nx9bad7|wxL>k7-ykj6Co)N<_)fmh>Z z=Kh@nUX3{!{irfQP-Y3`i>)>g>CKvDx07FC=7J- zCs2gm(0BJiLy!PR&Uxa|`p=ON!&?IH`aRQ{h|cki-g7TWEK@(Ypu}>uA!#hGbz9~% z!x0Dto%8Teh z=05`-O!WM^$KT=>TutZ)A@0NQBYb(hd`sCe0P&Fn9!C6F#Oxt_!K3k3AJgYr)xYc- zzwILfzG2PiBMfkQ1c`??#8t->)Q$cI*;n7R9SSHLdk=Spp=~mY4fUam8l~_bwDErH z&K-QcKSid#*~;#bI*2s&jrsx82%>ramr20-UmJH$R+j&n5TvDPzb%I3yH=MT2Fe7S zj*~dEB!Iw?Xw2P;v!S#a`a2PWR)G1@tFgUJ2Q&ray>e(`Ww&L$n?opD-)mT_D*(_@!^~1;u z6_JH!Ijwg)Wn~Is{ckR)(j<+Q$#PQ)$uwx_&hovW`bq}T39m2e;YM1`#!|#tXTyQy zQl_bMBC@!EownCk8^Mpvnu~qA%U&!1;$ge?DpT*+GUsE)i5AZkUhJb3oy#+tk(h7j z#byZ(D8A5EELWU3uQqz#G1avr4B3-S0_2}#_X*yH@Sp@$Zp`JrCOZ1vfg$mL{%ASQ z`chrvR4cbJFzy(Qt(yon^brC%MM0MbwK+Qc@?o)jd#~hh)qv@t7ZUnpCJkSdy!l3d zVJ-BIX#iDMh_-YB(%_BqTpDUNjhSJZt!$6v?rMw))h;gFPSB^5pE6QJ9r{}Q@)BOT zc$|aeZ2)(C*U@LG?Z>CptYwquX=t!iuYu4UuOQBv3&y{mjqhpOJ^QJlaS({6*QcV*Bh`;hNhp{Tx?Ig|#(B-lw zK4rw!`qX1;CyIacsKOtgUILoIp2(uWL}uoiB8MtMN{s|Baa{t z_QaIsvY@A4s{2l&qcAX?7jvgdJ@;X#s=@pc%XF4jhpoWU0c`D-Gaz)aieALFVvA|t z^Y6&U^E3Ss74PA6d!q0jd3A{xV$3%&QBKY)L0Zdu`RK^zOtEQWD#uBjhu^qq&+g=C zJGE2LG*T-IGFApE@|a4RZHfc;43)s$ZDRjYfaZ+Ok!z8vc!Zk9?_)ZlonaJgo!VOn z2)N2jvw+qh+SCqWa{Rf2DR{5TGlWDTvwxWYji6AG3Y0eSIdUp{8NL*}@S=8h(Qy#$ zjT0(jNE~#33lNb69@3gK`HfB@#5N?f0Dya1SqjZLYz%OoRP%cI5pNq@z2!na1knth zLc&kws)-TWIBrvWaIi5G@6ik3jG)P)~IadhNm*W_*2 zqC#{0h5mOs5SOm{IaNdboe5wXz(G7zmw{k9&qei$4osO8*m8dW3{N!#Rz93Z8pC$) ze&=jrbl5rpoSE_;j%MV8$5txDERkY5D2QpWW-hvdomG_S0ghE%M7R$WHV(+#vgkaN z*i!(souPxbWj?civ)n=gkls&dLC7%gi~e9kDgP=^-7GTJv4V4}y~w?hFVh3{)=h`3 zrZd&$9F)C!Gg9o-T7}!-82kP8J+7Xx`4Gh*Lwp|zN^UU7ZUpR>alm`3>2lA{mb)5f zl&zBDChpEi%q(dC~CS=^u8}RjkC*zJ{x<@C29~Be5t-|KsvNiZ+ZgfXVDtBPxbVhS1k!%m;0#)8pf8 zmU0-@2Hq{my@nnbRf{87SL9K7?*4pvF0daRzL z936%hE1=xApy_{d>I-Wh9%nA$1EMLVdCJUmjoOApbhu_Q9Bl<&isOPT@1GMe%{>@* zpU%hMtfIIsG%MHDcpHGZi^w0uDX7tasm3^K&>jr9PJLbvq5k^AKZ!Q7_W zy;h2mQG5530o&Vo*(?X1#ZhoEp!-V7l_u?i@230yoG+p-VY@J_xOodddYe8fTb;0R zk)X-FXV>y)8#3$sY&BoF!eg#e5cG!EuwSC;7&z9!%~rZX%xZeftVhSKgG|CaqG=4?NXwOA22?mz(bsw6i~ZDH+EenA;p}<;DhUn;lvd{WE*0@9Xh2^-;EFzvtcA&FAO#`}je={(BI!5ero8`~%RVL5f+7i#W{7KeR1Z}Fv_QT{;SiA*3YHHCw4CG!xPSSP!|#v&2+YDFfISBH(< z0lhJ-smISoy6Q!08`9uCyP>P8Fog-?RG+HGge8&-1{l)3FP%D7BgY9S;et?+{sBP2 zpg&=qbxZat52hhCBXyb)Thr`~spZ~yl5<5SZ3c8;3q5#8w0m3nrL;PsApdRzHy;8I z0V!y?y1kUn*YBSTD_>lXqfJ40Js_GcWJ=*DX0;BBM|1mx@|O&^uOQJTWrmWiYpB8` z_w_Zx(uQrT!gZ3|u=91IKN z$&_YoO7%}TToN@7Z4V=UQ@B#ew)o&i(edusr=KE3N>=kC!FGYR^K=g1+9%vqz1zhz z5BMfvj*vgHi8W19hgmq=hAYTK*+KN1kYUcE-$oFJmN=l=qzX7QrnoR^+0vX;F|myH z3^+}4`{d<`y`Od3_D>*CL$9}^G*>voe1f+{l?o`Qao#hl@TV(KO4vx@C?66FP3($d z+ZvTD!Y~F(k4*+7z9}tlOJ)ZaDcK#_PF+jsgoX&wuA+1jRke%>F;{6;&AozT@hbAD zvj^1>yfTa`qbu$lc=oc=pnX#VU*%w`00t-QHOv)M+|EuNV+=4S83h>Fu6^^QllSb1 zJ1F;!f|U;30T#Jj{oTi^o(3Xb2ir%iPy2lJs!1~cSa230cBIuhQ~1ZFXE)H9dopp7*eg`%w(DFot^g`PGE z?TFHLl;bjM4tO2tqV5Mj+rnr1w($je!=MI?Kg0m!YyDy{{*QaUtZC-Ai{LeS|3*Yi zNzxRmjLDY%ayadl8Cat)=gaK!qjZUUGkFM!0*#B{@>)q$-H}T9bQLZbGxSg-qQn_; z$Z3RvFMtu0OwTECAFmXDz=LTOy^G<Vt)VW#`w50=oVEkT;|>_BmIEX)ueUry+7m-Aen9Cz4}BnLjQ!cq$s zCqM^BuC_BeX1k6tBl`tey%g=4bPZ(9392+ir|R@>ps57r)&@q;^fwCZF~iK2>2t)0fY&A&95kI~duu^78;MqZ@E&-9pkWQ4)nPd_ z4gasEur|P64>ULX*?qkL%z@CaTHwy?DO2%2u#tN{>?Dko))olE8n(&y6H$bN&nFwP zb*_OM7gX;l+Fu=X;(qoao2qU9E85>y_heX%-oS$x5Wcf(Y9vk0*5?~XjqwG+S&=|o zMs$*Y5*9w{CI7bx`$59Y6oz!bv<>Jxe-eG?q)Pio9nk7(sN10qMjoBfwSc!`vXd>| zalCR7?}ywm3LrtOq$l&2Ukr8fNsheH zk(6-8u1lcp-#2`!a>!AE{nMXU?~SlpakJEqaNCdMSt%lXB1kRC`uD})fKX)gg*%3X zWv6Vtbv-2FxJ$#pzM#3BK}vy9aGzv;Z0&p0!P zS74Bf+c2{=W}mz#7?(g*`gGx4m$M-bew@f`#T|3Bv({sF$ZVG$6i7%43M5jB3*Yzhbgu)6OsOo* zW`n{A0Dz)KZrk>1ZRFLEy&k`>FJ?B5%zc?6ME@V0lo@A)4Pw{C<|Ub4QQ!NCE_~JyJ+){mcMgyIp<>L!Rt!HmIP*PW6e)DQ9epwVS2j zjK1_shE`OCwKliv@%yEgEOi@f%s!!G&)8g`L1O=^UAQ)PE$uY{Q{+^oQ-xZW*5YzN zvO_h+h03>uNrQlgpbeSLVw`bRdqKF(n2gkvw@kT&h%bkR1=?n7$z-W)l#$8GIAX$D zO{Kj;o+rPnO;u$XbA3=;aZ+V*ft&5{Rh9+<#C)UX`OC}Q+U?O=rT4F$$r3|w$Id^~ zh|a%avrPi?-W&*eICADOM96Hpxr!<$U^7Uwv~?{6cE@V>%4uqrWglT+4^@gByqZ*e zo2?m?T~@f-H_?=Zd7%_aoSCMUh#?JH=nS^RG)Zf{K@8Blty)!KV6Sb~oI{{;CP3?v zSXW)!cVTA|+Sla<38%477S{vr#Y(A{N6|Lw9SRFmhexX^xU-IemI3VzR@z?BRUsw% zbv!)O8hSqvT|E<4rPz$Hu(q2Qo7S3@L&wr!D(jR;)1UV{E5;`?Y}MM=Le0300$ivw zgSSc&%;rr+3N_}}6(?=h%9`lPmzO{np!?8Sj71{pWfD1I1xaa7sq61-yVek%{Fz!t z1(x?xl`2MAF+rjw(WZ%dhfboo(f9M$}9Q=izMWclLo1`n!^?9}L52GlV|Y5BQ5R%^yk zPr`;{IjDJkcw^FYw?(&*DDI+2VL>UrYO-75ug=_!CNLQ2?xlHFH`Z}#qFnLb>Zgr( z8*qmz`=MjMZQ{B&S(>5#KOQFf&s+VmpAE zq0*jk*@)bgC+jo82;+rvXLYJ-MQW9$TCL9;_K`vK&2?M4wH{BURBqwU#$j)~2OmFP zJSDp9h`r829mZC&K!`%({I7~2PKE>yp&Z+_%CGgXfc(ONBrZ#C{lCeLU1iZg2%2Kv z%)mHxY;XQRI$|!BuKl4wBKUTvpG1Jz=^gz=IC;T9anGV42g9KRe}Uh&=S$Q$%_LE9 z_Z{1)W}~fCl`A;`r6s+Uo=KNp^Esy7AsE&Bw1kc`q2Wrg>4|91o#Y!{HJ@~M@&Tt1gUCb;s)wW~Q1K2};{1KCB_Wc_edZgSX zIh+m&80^)7AP;j6zC6_|+6$&=&aL?%WVtNR)=uR1+pYmD?m1zt#yXk95{<{$S|g7` zWa3F^OaY;ujwG^Pe3~PEe6KA`TB}sO$k`CoqQu7MYG|-c?1182w#HxCwr=f~PLxs@ z?4vbDBEo;@YFXW7SJ6n;DC~I(gNJL0@Efa5JO)EpG*;jS1~7Y1Lr+!GX9+7_e6Em| z)$ULQFs^^b_l3qljR-~oFp=LX4ZazbP8w4*sh<>=n=tPJ@pea| z-S1YtJ4m{Yak-A>!=VfQg_}O5-Sq*OJOE5&LzEd4gW$o52QilpmpH)Km8W21@frBz zT@0Z{-@2stC(!JaLaUamWpw1I?+-WI4y1MAYIw1*E~AI+)XTS2F{2^Yri>w8&7P^Z zx$sG}3MYu@MV~$S=z~Z)K)CTO5w2a#1a{Nh0v+0j$o4bi9EdC=K>vJt`f}$9N!jdd zpO4|dyZ#0OqQ3an6L+TTX1q{Af@9^dO>5MW&J${U&W5}~~&vw_luem?(PVMf;WS}>@ z;DO7l)-r0Eu-mhS3ce8p8iJo_wTt9Zs}zcPd5m@Sc}D3u{&Q^)J@aNpA5(H{jpL@j z_*cf+52r6=t!?odhK(htI>A&Dl;n)HX2{aPj{VB`HV`OumPaX)+%f?3^aE%C7A%R* zI4SdbYaI;SX)pucSzcpWdV*ImMMA`7qT-SP!2W+2dxvIWxHeXE+qP}nwr$(CZ5z+F zZQHhO+txYVqps?A@cn@`$mqIPDoH^^z!zXT%nuw)%m&=f8y+@GMynD^_at5qx7ajG zI1P3ZtQe}Z6wjJJc&knBXEEY?h>lnZeme?G&p7#vXD?&On!ahvc#0OLDOIWj?EgVUm5SNiF356dU= zp}E0Dh6mK8uWs%+8{#ZR3#;KJsXgHFVhY5m`gUf4l3~b&{Zkzwz6aq{jI3&FBN@Vk zhl-`zrGprVAYb~l2Bcv9N)bIT-6c?ofbja#6xmN!qw`uyUc?vh4@`B(feJ^qU0dj6 z1_L5{DFon*n}}5nXi9^odRI`1c1%*9Ep3~ntrZp6eq)P?m|WWCzo-GTDkx6tl~IlZ zExhfv3N~N;bV`Dnhot5H{)*zvN@8JnKrvNg+RxgvKT*Swn@qLZ9f=|`Q>7XpoSI3v zyoJn<;W;tF697(f7X}VXa>Kpui_R=MPo)_JZ;z2}m(ZCm*MKV2@wJi6P4)r-kuvY{ z$?EkJombz&6XdHq@#lL4Mtt%fkGH3j58CzV8+&y7I(@y~g4?^kqOu=MocU1xu09Cj zA_QY9KM1*kG;-eACyd4js({`=-{+UuI^0KbJ)zH0J==|S0k25;BhJs0o_F6%0_UIL zUB##O>(tzP)hv2l4;+th>i!%qmNg>6c12PD?D+lSuS@PjLXHcOdM+n1nCH99)Q+D< z+L;56m*WWyQ+5QuMb+gT1mQ1#hn_w0)u(=gL3>U5)u|uGv?c)!hd82g<1Qknc&PWB zEyLNxx*{b!@Ep~|sZEqPSKDr-IbFibuNJ3 zj_(Jf>TM80N{6Jn-&rL5OPz4ny3;fMnY?&9Yv4aVm9plA2{rXAc#8fNas_OTbq4mk zrWpGHFo_JGyT4did9V5X^=Lwt3|1$|%-ZWZ=J{_&{=HGe{%nnr^N;ec&&Thw=q!6t zl6Ey=E;`m87#?_Q_jdrPP9Z8m65HUMUNJYE>mQzCe$5gLd9Xd_fc`qDmV8whQUJ4H z3>1?7zK^Qge=kT}g8gcK;L9)=0*dzv1(Wg3REcocQyEd22~tmR-bOAdG#zxfu?!w$ zN52JPF*CEck$J<4!zPfUV21GA2$??w26ZcWS3T~e3t-nBWl%d?xOn<#NofV28EL#_ zh`}XC3EPo=T|p>}JC$3xA>>M;&gIsgNLTR*pZZS=W!oL)rk{x#=N55R5RlB=M3`ZM z89JUMV&?M5EaiG{?x`;yYS#=uTyjSYYocN*<L-l%W4s`(`Km6J4k@Ty1eOS@F1S4GB?9-UsU}Q1G7K0q~GXbceust>vuQ64`{@4YMdh}Nu zt4Qg4PieDUhQ3%E!{yft{CAcenhs+FnV{`u05?awIhL7y=q!f`f6~G6@btlW1mEU& zgoLFXk>ngk*J`NXNjaY-I%?ZyhnpNjHQP?GCb7K-(fUoYqiK$jk zq)sk5xR+{g60O_93pX@gu$OV&r!ND0bHRzrf}Xtf-c{L7z8(x{|E{bB?K)ETZNHfZ zc7F6l$9`ccAwq6A_a5~nPWvi^4#Xs+1>ykcSnm%g2NQ_ToHZx8Y-OD`>)yXLE|dmv z*N7&KG5^4UQX5|X>&)W#537`klZpL*?uo&&cHSC&=<)-#mNy%ZgFJ#Is@X}za0waYu1Q%!z*JTj3Sog6+l zWzEbtIl?}-B)vV$81{3w;Gl&TFq~#Bao2&&WjXAfIfZN z#HwUHlT)nF^{9l%Bf#2(ZW7ydb0JVwZjWwwr2{A^OhtgUqXTVoejI0rPI?e1rmO6-wgEg zA`Z0*%hsvsU=8Vx6|~HECDT-5FL>Hb_~3Hg64R+TMmBf>q2c>cPs@-;3NXH>11ADi z1?X~3v9tHJcMefd3bgdwM9r5N)mAg}jY%iAe!^%$RjLhM5Y-n-t87{|E<5*!uDf;^ z)$cwKh*R2$YYc*aeE59>33k)u9vjy#*LByW&4mrvc!N_$L?xF3fKDtWx0M~CaY2@+m!r(f!uHF@HA0-C)(M1P;6Q?RDIr&+XJgBwO~~}g%Zm_ zs>|1og8LzoEbTWv^jLgWcf=fBLM^Y?PYEm`z;CC~*m$&EY2dEvX(pK*jMIgp6`yV< zZBI?;AtybE+#PSoTKtE$sn;|u9jKx9@3)oRD1&vqoj$Iw$1@jMd35@DdfhmOj_spY zCs(rG!wK8=$4p`zWmA=Q-o021w7w2b6?LI~SsPJH~oo&M(5n(T~yM=^2Uk}%Zj~^EsRd;(lO>Q{YbNu3m*@DFK z(eOlAUban3n50JCoy%Magan}x>UTqwCo6xg*6=6pdmIP4zt7|AL@Mlj-yPv`B!k`( z_w$lyeA}Rx)P(oq(0f2{j2Q4`_p+;FivQdUN?4tclX%tV%`#IJx_M7`P&{ zVXB772gW>Ial#b|^)TM*I$s9@N3`Kovc4UUZ$=>r_RcqP@=53%IKhC6$8AdE&fq(` z>!QW}azTCCG$Ck zbnumG>)@iG`LQT@AUY}-0N8joR@74C+C&W!)9>2#!XVLkID!ZW3DKz0E@dD*WtcYWlKqb6FC#UnBS zU}0*7Ue$GBDeLTqD|fo2qf?6o$SsUjR@P3^GVC(ARGHCGWV6`np>$(v;cbLtCZKUw zS2&W~z%b*|1z5^%z^utIj#J{uS4wFP&W6KnLkQ4HYS0jgi4BE8Dc-DiMlvchuo;*9 zDoK+U$TDWMbx=L_z1_sG+%&J$QdPDbr{ubJ4c=k-uAs{8F>2J%D!ii0rI4wqV@s)f zTb=*C&r~sLZBt9yFJPyVi@gMz>HV9Nzwpm=x!x=`UL(Sl9v=*pi0!KMV#UY$Ot+Xu zMEmwjxrJxL#gBVi44zO55CuJOBxT@{T1EAT(Qn{Bt!SX$fsSM7B(RO6gJ4_`y_aHM zG&Xaj5nLjss302Wws%{0?q@75+9HN%GC3i>bx$u6M~MN7DP*>%T9YtFA?g_wDFnt) z&=gMydJ#ZErJ;BkzvRy^AYlzfzTjSKbd6!J-umj~$CD5kA6vzI3RcTEyo})+N37Q3Qoq zFV2)i2?n>a^0a*a4oD#U0zh~fAWPvSA(8X17dm`8W`zT%*XK8#F731u)o%m|Vx&js zz>S)HvRxSX{TXpY%VdQ6C~y56dT@!A)^h2S$k}T z<3j=ut%RSngOTUwJ1y2sB)`S8fxgACah;RTKcb*cO;vPWiRw?w`p_XuCWK)RUz`cC z9TG&RH?5)oakUhn^59VC9G675S%zKSa@|Uolkj<8?n(!X5`2*4e&(ccMz*?Kk`4|! zX*#F9w}yA>MKBR00cQ*zL{bNwM0y)?coAVjkg*Z^r)Y-<0;cvj1~fkiCC~tp&m76v zVKSn-!ZIXbTxi&&IJ%k&syWl6z*CBO_8@`LDLoUaIAiQ5( zpz|vHV6$sq{~7%>P$CkPXfIBd0iK7jV}OijHj-%=aMf|u!~r=^GQBKc?@tG* zL`jW6_Cf{+&VP!4h3y^C<3>*34Z!PV35jMRDdRy~EK3J*F3xJx=XlqP4%#jhIhBx3 zTL(Fc)d%0q`goOt91)wzveJ^a1`1rq+)XaLn+4Cq71Pa3D!v_la38Kc*B$ictKDdh zr)(iBFFV*jS4(O!f7#ypC%6?lA#SQZrh208I zb(?S$mCq2QvRxoDrcKe_<~9HeO;!l-DmVZe-O+LX*SddObiK|WCz5yswtM!y7xCer zxc-3blXUy1OA^wI8O__<@1-287OJm$+|_118QICxeb@)U52A?rp8(JKp97}^|0}?! zCh#i*F(Qn7`9#qs2f04+Q#w9p6m&7-Dn+1UigSS7Vw`MY!x!j$Bt?Qul`e7Ks`QH$K3(MB_C;xKNTlHS40Ct( zo}brtg8R2T1KmB*+Upd+vfev*zCJ&%PuvxcCqyz>l6GHm(7}lU6DcA?;0#T!dYWp;E+OB+6|2I)6I3eTj!Adiu!Vx z={jnsh`vF59uD`-bcLtFeDl;<^alo=j-@j3VF-NMDyq{?k&)0m*p&eHfngh(XSsir zHl3|l%A5^5qD9K0MLup9Ru@%_r2;9wv1GG$y8|Zx(oM*GS8w)`xHiD!TYi644r=y? zohB$1k0x+7>Z+;Ok~_e`q{Ft+0mD-=YyauA#|#` zSZc`lKXHV+%~rzJb!&wN=Gor!`A@jXjg;1MwI}#U>x$xsi^`saPePe zUTonEyxc+?NVOWbZfprhkUH9T!OQ}$PlOKKt${K&LX9sJkh?Kf!+oyY1vBi6IyF-ukzJ_PqN~&j zM_e$)eWY=;YFpE6N2nnvdU>V+YL)sK#sd2-q4gCopYUwcQLr>b2+aKTD`^IMnk~c{ z?MMr&MkQZ%8gk z5A71#7pUqy4`$S-RiHUy$x9vz{Z&;?ai)DUy9cX(1!0Yq?jGA}v)@c$1iR=3Pn1sg z13o&~5PIHoGXQws0V6jrL4*!P@6sES4i2F5Pvs_ukpnIIOVTU39EpX zsrvz-X}7ujI`SB?)&NX}bSsYTUiAN3cl!{`rW+noP-c8EOn1kpf-=2s9Cx%%@T`Dc zbKn1J(%P)0kha=o3i@I*hj^dww_k94S$aUSHc&^ST~RKnO8y*Yu66&igi(bij8jGh zchVUjF=pyy`x>Rd&;T~gy{+0FO!IHB@A>GZ;Ku5;zkoEox>lUW0rnNtrNEJ1Wvn0v zyO=0X0#5s#SG*s7UC4H~`Im2fe>3 zyLO;?y2!E~CB}^87~nyTWH2SXOJ#CCV$@m1N-I$t_zJ6zl``y{&LJSr>^z$;b-qMuIJ?)$9m58&2JBEq6!QT; zV`j>u?{NAPDW`r-b`JRiOUTK)&#C}0Id8RyCv8GZ;Zz^Qw%2+s3|dRKRmZn}Tcw-8 zk$9jdUt`f>Y*&F9F(Sx`mWVM@spyi9?iWUgfKhq>w7ztAO;4qB6HsAOlsG*AFXbky z`F)@tAUK_LmC&On$yk4*+RE1q|C#b)7@l?U5zMQ~GTkA6js=}S4m#FIxCX7s8~j(` zZ&U(Wav7q;s#bY=jy|0)53y)0_$j%aw}7i7K|z5%iuVAsQ$x=k-q5hH2%#NSwPHj1 zFee1%61Y11Gk}5iN|O0|k)aqlVryfU!{MK6`?|D0^{@}m$_1+%ukKZ`qqmNX+8)%EAujPWI-v?1149Xz&!# ze{6j;AwlN?LuoNsQd=o0h3{bCUg1LUY?X4)&h|2-rL{M>K;PzdB7WKUSJQ_zCCxi1 zU-!4T31!CV^;rE$xlz92^X6rv&OGT#^ViZY24bJJk2AaHi}Jpe0aP6lK5E#z9vWWH zqM3n^k3s70W@GOHoCifXQGxMO_V16Eg(#{$rhB@oJ8&_zXqxs9bm*16h4vr5`zt;r zFViT(AL#1*t>S+UwfxVW*)0Dblw$dxV5(ACNY5{#GS2C=l@ z<`J45!678U&ciA&u2KwAT%qogruU%wrRB;7X^{;A5g3w;gr349k$w@pC<{CF%)6p> z&J!L${?mr|163j#>*3{jM)5MAl+0oXgeE?ea$-6vfJFcI6{TSVseGu_iWtFKd?Ts0 z;8Z9v$ukh@)JZl06Ll(GmH~UyU?<_%b)cgf4^`SK2GtS`A{%#LBa4pN2E%w(p}@l) zx&vJ%oNhT$7@|@ln|_&3#NQ?nngH7Rb7G9f`b`0dqC&O+Ne$TW4jT@2T*18c?piqA zh_}iCh(m?FN}-ZXmO+XJ6dJ%_iPbTXP$@^xD=bkLszAv=VMb77+^h6RhM+kHwK$c` zfdB+N<@2nk<8t zDr}gJ++5t)tatWxTua?Lbn01(Pq$``6?6XjH2m@Z^3<+0+kW>E&TfsL+D_L_&)`+? z#b&nbIvMdP8er>1rx%zi_Qa_xPmydXL0#x)HZm=DGf&f3zEUmqGV!&})*qmsj^c^G zl`-`);RS+#X6iqw}^R{5fm4alS%zFOyUge7}b$h;S zvfOpiV?Viu))?+KpY4=?U{<+K&9nds&)=#3tyN{cG`MO%^vUMZ^H&v1>c$YH8O*8z)#0w zG{A&{Pog2foKdZc@?FcA^4R}z|K2R!_?CI)(p(1i2SY@54;E>J0*1uX(%~c@Po0c7 zB!M`t^9tobFacagH3j9P$+MyPOQ79(`0S>+jV{lg%6M+NvbgG^e;3mxW40Nh9R?UB ztrunvfQk?*j7G~2NA06w-queJIxxLUIN+E_rrSKTE@^Z+lc+B;Hu>u5#hA0Fs{=!k z0Hp{LDkhok3m6EbklBNqhI&ZkD=g0E%9H?PDC#*hv`iC#OU8|=c>8*LZrH9yUjTQ* z{epD&%6AK|h^!KtzY&WeAizpZj|@@nlMF{tUyfmEqWPadG+|2+yOF=Y`5L)EsKL^Z=G$?I`I`Hp6beMl$7f)|<+hVM=2OY>8(kxmVkKn=2^tB6 z6SIxxVm~iz2#l$O^UbevZLNWDy6oqhQlYrXSIg_~CGw4&fu>$p93MAJ(Mft?sB}@q zx`X1}L2>+kTB-L(UV{azIk~SOBg96X;-vs=ju*sDeI&BT9JvMSFn4UYtR0Ow^qe7G<-EUlP6`R(ZL>Gj=}=A~6duYA}x-JYsfMUOnc(ks97Rev2$ zC`H4o$%D8#S;t1oeZ!}9eb_#DE_^TAvPGYKbjfz@x-_BBt?*DS2jJxZx_A*GQWPi@ z^AEtu)j1wCdwm}vFIM9T4Pa<}nRr#-{?X-9wN6o@mSig_PWDRC5!`+unKu;7BN_<; z1`&b$Gr%q;x2CWEX4FC(oed}k^kkIgpAG3GC-;)l-%H1)!OlT3#>e}FG z%4)?enV@l1mS>(7CKFDX6b(lGslY;;(}XW2WD5<>{1=r=d(1g^n!N4m4AqenJ#Dt! z$vOO%;}A7;YV(dS+V8)Bj3A1^==FZy=&v)$8Wj6}?-%1%JS1F0C_njkgSd+Wenqi8%%0@59yw@cfHMtt`UH!mCY zDfgFwzmGr0C;efumR6>VC)3T7=?`$n;BlN%@42w0RIH~~@XZeaV*)muG2}c->8`Y9 z_t-0CtNN{-aq~F>UZVU3^DS}}tTCWOeVZk{#+_jeInePB z<0_yd9L0TQ^1QOuFi!tL#&YqP%YMwiz@WP^O=;YZ+^36#PnUce?*JxVNQ%A<%iA-u zFZa*m9Td;@ETml6FVnRL6n>J{v!E~)|7l>vXLlL^hB3&(i;B&LXeG@1Peiz@!e0=w zL;3_g`|am8G`h|46NjM^3NgPlQYmbOc6rA0{2IGcpQ|8{fDK>}N*|!0ZF0US0`G_t zg&xTp@tD5Pt_;87LU2@G(^csjmp_0%cd;-`kpCbv4hHuBn$TnTpMPOaG&SS5#u5GU z^b2ePKvOk%NwUJ*1!3O#7>wnUFhK%sAyUQ@+e;-xi)o+*f4wiQ@Q_U7-w5fymS^}b zFDvURvtBJY8^!DBa(DG~dY=myR73^y#oOMB=GB%6FhUcnfXrR8V)!%)cz<2K+=_L@ zKjZ+uES~L}wnrt^XvUD)v$b3)Z>UaYt@6^LZ#ySXXOpwoB`yy~Zbtg(aq>;#v%`*D zDobnGwW{g)d>X|er+aWWq{NpNa@A_ZbL&#?EYHu1{B^!>2GMBav==Ae#0#Q?wghX4 z^g|2qLIaCzidJ2_HB3Pzu-98(7G7=V;)1TqzID@GvxoA9E5#?_yBA25^!A@lvpgO+ z^(IfN_&3Lxh8`Ea&gYV+8THh9_QCT|{2`JJ7e z*=3$H68xpcIfchBkeslDlJ6|HnZ{sbvsA_oWG=|hUQASEGiPrL-ST2j$Fy040^K6_+~;F0&>tFM14;MhHN_TpP? zQ?)VfYgpmJSE*_}ex;nd0vsevZThIFH{b+u&NOo}D?F%?HIvX>!IFR8$Ci%u0L`^x zareB2_l{v{QxA)3hP2X3EtAOlo}Vpa7ov|TGc;)m{`?(%O27xlA-U*2z9KJI(Pr&i zNAB20DYv*sJW;lG>Xnhwct*S1(rHXe6r&{+!J$09%KE(-Cu z(+G9)>%&?9VRKpWECdMFEg2M3JG|^n(bT@=(337 zLW(yjUfJ!3ZI;v4YOH9|?fk4Cr~sece<;o=6C*_=E94uY0sa0A;rUSFZs0^;|1WL{-KyBFtvy zn=j}lM-fg%p0C(7AVpS&o5(IRC^f?Kee%WNMHhtDhnl}UBHqo)0 z>e0afNkF#0$9rIUAAObCW3!92eN6?N${-k7lJOLHhY{2L!;g3f)|d=&AKc_0>aD*@U>aEddu&IAz~@mL{G8z!3h-fEwOQTKYuvA`3W0{$-Fj9fGWz)XlwTFlL6C zHC-yyu?Oft#@jLPrZkGL#_EQxAqSPej&jX3!MELF%|bJQ%1$$qPH%Uo)70KwRCyVa#H7=pp`S5)6Q zkt43%IxGj)9yj?Gq=S0Ow;CjlaI?(L7x$`tDcx5zyw>v6S>X{m^p9Q3(lLoT!)>;= zL;6>O!4NuLEUPP=)A@fvcu@a5Xx#`lx<K5=(1g@SaOI9jS%+U~{mcVz_H% z);uhY4`Lr<8nyw?S%Q7??GteY8Jz1h2iy!%5vU z6ZIx~Uv+~A4kk_CR!}o7FH5(S!KZcd5hR3L%R87UiXD!8L%=g}+auS8&9gP4WccM; z0cf(R;u5HOu47T!!>z4DX5AS|Q_smd2${WAT{GJdzek5<@o*mt7d~40(<%w(Hn%KH z6^N8J$fz6<1(L`UDi}`NIBhA3YNFMFabiOHrd41hJ_GxRT$G`@J%ln`q0%JFITgSj6K6KntkX=4D`Pm2S zGVCBYp4wHNo>U$BC3IV;0xiB@QWuJ#ro{AvhTJeQpH6VEu; zs|$81ta1Bo2XHeNs?08(4Vu|8SRoW3Oc(i}$$F1(PvN&wICuSXh-!jCHC7ioGWM>? zR&`FIBaM@g)XyZNu0h$C&7)oFdDkfRD)(=w*b2g`7o^ld4yCcFO5ube}Kk{3z(*u7;-Dd}ndxzThO7@9n=svRR6P}q?e@6%ZWda!%A{A1d59ktg zyVTKjU+>I_tXO(?TZc4}jdRR$k%NlQ?<4Uo$(cZ_j-B_~%iZ1e1>m??`+i~dfII@< z7Z|Y8gXek!WE^*5bKx&ru$a!LLEx!cZ!AkwEs*$#Vw}~JCT{03n}@CnlWSou?CTyr ze)+!RBMM!>t=%@_A&`eiQ{9`2Mg*;$2#=*6N?y8cVPKud*pDed$RQS=m*$ z#*GSR&POixm>f-6pH2_2m#6FVRU!z`cBBow3{s-U0Ld1P@8?KPwZYxZFzPQ)=C;-N z3<-oUA{gIv^h9`3A6^G9SvMjX5v9)1NVrcj`h^`=a)I(Tps3-skDG3t&dCWZpO~C! zMt_f44jYTKdlZ?b;!2c2R@9qC`$V5y&-_C6;89mR`W$3!wOSP7>Xns#wMDN9%hwH+ zEebuGDl4pxxQw~sA(y%7PI*e3!ZZh(>Prdf+WcBIY80voV^%Z)RHS|>VFW8IM|3uA zy%O7tC*a?M0r4pivbfKR$R8nUNx}-vL;^KWRkS5SvR&ze6klg)+QlG3)fo+=k zyc9XX1p&@d;y>bmq9n6%hN9y(XN80jTY+sjPGez{;O(`q=J(`QUSk$B9#7P;WQ}QK z^}-VXHO%OKbHZBtXe#XhU7G#pan~HPrjm&~%Yd2SKYwt=Y zT-{>jyCzm!tB%FzD)Qc$%bH22W=*~00Fssq+-oz-8moV&qyq)g3wq`Sde^|HBHg%* zJ)HLxyz||qSlP;*2$0Kk=HC`WU$lh1VrMTVWRGc`t$yPIztxiu& z!XP8LLK*0x*V=j}L~{kzXAKd)mgS{nq7#iF{1U@%JUN%pOwn*phY`HR?L zHrqDKc2F>7veLmPpWI%AC9n>ld8y@4fw$LObq#4fl#` zEQQ>Nb^9~U`zz7Sx{OV{^j3o2Mh`>?_7=lHe$lNb(tC=W7(;QVnyPG+2$Ax+rC91u z|HhbrRnIMI^DIo9;3Jb6r*~c@+)4;F=@=3)GH6VTx%~UvRlBa#0uZ7v9O_mO23d;p zR{fW2OHqQnt;Lp=VUhi84P4GatF>IbU~!|S7o$V*$#|QlD`(P>X({2U1E=CyDpZyK z)QKLt;?K_HAqH@)yz7u|u~%rMUTPM?Y3^JiR_9k*sVcL&jQP;h;v6G0iJymr<3vC`r<>BmN_{>&5`=Gy3~;1f~aaU@}r)#p(^z;-q9+- zahv;s_AZ5y_FlUv5Ng*xb5P;E6mhS)tcFZjqsEZ~W#E3=!oflkLBPVOBnc3s$Sbo9 zYKI_V&^4ee`0hN4XvLHJ0rO_wPfS;;EnDRxWxa&(jmuy{WdydBqCCe3MaGsG*&XOA zb1GeU002elNZUYKq>0sKH{-K>A`glbn%%P4t^YYj$#foPap;%4i#464n-`*jLs-!f zwkL)C2ng_+x1lY9Zhao?7V?4$nR3LxqrlrNymcvu96Qg-?ZPwY9H!X3i~ZxC`|vfMtxp`(E&?BQy>{G4o;6U`5{OV9<|$lt$ozmp=tFJ zTgBGD#%STQnk8Z-bs z{~E14R8optXpuyGj6+>M78P77VQNE+T3J^S%PEaCN)Ut&rNN}}4U>tpY5T&7BOUFi zh3y=+K)RPWWknq?s0B5B2%o^Xt#@Kn? zrUvm@fB;OH-?>fG&F>&Lkbj5#n?cI|p4C)LnXJuzR4$M(WPLd(SJ9P?dvz0*ap-fYz3 zUX;t^kcHu0_YAkaeB*p@pXBh3<2-wwksfSQ-XfY=w&MBo##0ITcC7i)IFan_OUvzj z2?eyret7|$_7?y6EH~a9h)WApV!p5f^pL=SqiON$Z}$q%o_ft-WCojnCd9iJ2&u0R zg*Wj2H?~on!z+Ou@rStSW#@9c7jL(m;}X=`B$*|?p810M*voj)%i8FhS+n#gR@2)T zGJ7u*#Y){`yZVNR6kM9aGgU$3FFKCLhXNZ8Dt}0uuo`t+qt} z^-~dc49zMO+r7(V_arB?cEh2`w9i&!?G#R!EU2gyJXzQGJ+~l{B=aG zF}A`_r%&hS=jr)k=J@d7Lsc--&eg@^&*^q4i2N53R`m54p*9p>%ySWMpv@a%cS@f4 zfyWq!0tlCQ8czV*H3)!sPEW_6^c2SYgARZJ2%Y+5?B>{|_WU6cou0~Wk@l>P`gNFk zFrLIn+kkfBz~o#&nTq8!S{prZFUvV8yWi+KgSoTLN+U_~Q$t1rCl<46f-XpOCVpiLMn0+=cpr5u$?V5e6X&;~52`W@1B;~Ws zj?fmr1FSg;3IIiP`bC%YopOK7jU%E%y3w7%jaETbv5-!{Tj{L5)+Me;Cn8j%{3JYe ze5G25NhX$lj;!sh=-tQ1nJZJ~0kSt{)>64h^ZnCIQ?5~^Ov%VNlWO>Mcyfp;r*3&s zi^Q|SjegNd{<+oUxj2*!zC!n>y^mO6xRlE%oHg9wHbQ93b>^W*i#i(6;aP6W*|vj% zC=gVnv4xt#%>|MI^4y*^krlVQla>|Pv=d=7ao%u(rzYLIH&i4o+1-SIBR3djI~(4^ z@IPFL?ivl&iJz3#q;ZBn$4pg^< zH)+LHbfOzbd3iqHdXdPyxJ|A*s3~p=XRS&&RlLAzQ)nItpl`D+B)h-ZAd}7+ma@Hh ztmh6Ce>iBq17<|l}$LVSvARGLh1?f$*w0F5$dn(Mi zf2R%{yb@_p;;H;3KPHbApSKNN{UYZgeN7iEm^ zgfzBI8NM2Utc9+Fm}C~&L1V~?_>}VB;rG6TlBxhWh(yV*Tk3kSgJub)<|LguQTM!* zPh--YQS97^HGY))>KbB^yOEx^?K5rqzUrnAe^$i;EtMQc>khGI1zJklaatq&SR+9{ zXMta6SY?{ma(2YkayMJ&=Dz(@5CgkL$0VB?;N*-i6w11_eE zqjVmXB)72CN;iP>WE}4^MI6ybK?a?Kxor%ak9iSC1Yfof-NK9pUu5j2&@uO?!VtjzxW~#;2&8bz-_!(N${$`ucl=(4K ze;cRI+!3b&rW5@&)t6XA`tdD>2m=4Z?TJ~C)b+DZt8Y1HR}?}ucCXtJZwbevOGjcO-yvt#VkQP#>B--S z8j?B}p|5{YO}^eVda?Cp%cK%E?4c&&R{)?7UvHJM z4ODN#WOS5v*92X=QDn?*zTwNK+&>}XGwosUq{zd1nb3lTW-GhDStnY}(QR%Y)6mx8 ztk(^}1=hysrONTfKhHq5TblD~1^_h_Z!>tVy)6Tah7IZzz10NGoZa(F9^LY+ST9&B zA?;E_^7>>;O&+gTD-^#Rxzl264|7Eesy>`OI0ZO=mlxvSz-v3xwf1vnZENA~UgCGd z>H?D|57GKQ+VOA6hEgy3jiogR8_N+8#2YsXvP$n1w<~qM0Py9~%imI^%M2MsN2&C9 znx!-ws#{=bmvHDYO=SfI zoE%>)ofk|WKVqdG-kY;ZnuNaOaPs8ISb?-;op2HD7W?lxP@j*MT$m$Al!To39($2u zc}wp;&v_4+mB?>W;M+K#{2tqEa`BJv2VOpY1$jDWz^=%t+|xCb3fdJH3{f+BQQW_V zl}AM^y)L!V=srtTO^h4k;83g4CF}63P7FPq1WS$ex|F+pgJVzU9Pd%=0DAFP)(CqG zSe%u>KP6YOm-|_$#q{zP^+oI}?y|1LhP_fvBWkRvrn{YbS1zb1{vqeiSpI)x4bNRG zJik7yJ-Io0vzwE*#gD>UrirLH&wN5s=l&l&p01N}c7?xFIA@b`VVi)KkmvdB^hmj-mf~Ro^;<#du2kW zLdQT*Lwvh)(8qUm;y^mRb4Pywp9;Uf|AkkaO#kH_voZbeWzV+BTWoN@y?uksKSq1Q zT9N;Uk+*<~t6BDVLkJQicyMMCLW3qzAi*g(nizQ^v&0^XXJAF>Qdi*AE}#$jjU8 zXOdUo5CmmEKmzqR%c(xSHK`IRKoK>u(q~8iH&yOnX4!n~qWxDHhTz2R;I<)(Ot%b| zDz?;6C)$^4 zivvrciKU_3)Er56q?!XR)mC2#lJr|cCpueWvF1Henj$*Y#ZRxtSBW6KmA!h0hXz7D zHJaMDf}*zsGPY8#AP3UN+@k>BDKQ3<&m_<8N;1Yk9hW!tX>QVb_YRcBd!A zFnL;Q$oN2M-@_OR(9DelCL|~*a7~hNn?h^NG)Ne&F{})yk*M}fe3Pq)rxUPvC8SRv zEZ-@L3m8RZwu2U?{N)`_gGOi3Xi{pvA-S8eN7WN`9Yy}U>p#n!yls6Hh{-x^49T`JM*5n`z@<3E`sx$RqS1P6Z zVuo2@znhz$d%_6gsW_a$$TLNF5BoE7Up@pP7BY?3BM){a#>OYy?0L7$xl`X)+wuaw z+5r@EX62%7Ap^l>v6Qv7c#7QL-{dId=O))Mm)1m8rfM2c&}Fmmf9xvn)HN@v{8+Eq zW-58Xv-88mG;*mm>}seH#;XcKmAL7<*-BXRvyEJY9o!5GZ_XBF3l6%3w=oMbEd4@^ zxfOjT&67oX9|fDtE=}+Rn_XVSG^Q7W0TtqPy-q4|8ut6KUVuZ_DZ5G5lI5pcQ%jN? zc;wBXqG;*u#>W|1bDWqi+L$MeU^KyF8geLF@ek%Vq*x3Fx;7!8U=j6P5oMX1jS|+B z51`=KEU)4K`Q^aVeK5Y*%p9Sc02kXuZ(Kd;Ah7JO1&s6xu>k=k-$i>=Ij^ce1eJES zyRw_Q6at!1SuZ|b)Y&EY9C#uSVBr8@2*b6_4d*PD!oQFB!U}zH9UIlcNaH0lqS_hW zz+AsInYr%v4rVLL^iDfpmI*!F9wmqL;jNMEyyiA-O9IQd3zSae||Ge-urh}kEC|#585|I;an>dG^ z6$0Hl-rv8kz{Z9^G@nda6o}Ky!Ghn>++e@T$RE%AzV-66jQH*6aX}^6Ls%|z1)6C5bEj`4FgaCi1e*u7&eqn zIYmN;NN`^ez4j}>5=SCpYOxVWBCvluYOx%jgytiCdn{>;!2N`S!p<_;n4dAEUCm13 z!IH=?npCg62L55(zTAO9YOVyIkzvFQgsiC|DPZWz+AJ$ui%$N@e58&p zc@(0c?y{j1x=^IQgTI{>SAAkTwy>-5#;rVXrUJ$L{5{gdd2s;k*i8AFe;((sLIa;5 zG8T&ne7>L0ql`H!!50ev#>TdP#2k}kQ=dMEu52%wCfel?*KIrg3CvolxTg@7edM#w zNf=C*EH+q?0lC~2E7TMKjBo_g9k&i&4Wo#WTOtswf5Tm31i5=-DULOlIl*S^TI*uffqNZ~-+>)}nlNj#sDnN)s;%Q)} zz0x3!|HQ10C54jxv6{UWPGt&pcBPEAT{OAWV2fgXUoOj6iWZ#uRB`_Njv3U#4@awL zT{>paUn+%3y%RmkBk7SzKS6?j$)a1enZ8oPK}Lxu#C>sP2zvbF3ncIZ{|k(-nyUH)kc z{(#e2L^;nE?i3=@oQ8@Uzb_C~jMtweybKnLg$d>r9meEyhj~A*q0}Xqg$-b`n#JRk z$fnfXfiRYS5l`z@yeSG&Q~-Qn7>G#_BGxzW4_@;;90<(hZg6Y;k~Xc9-pr&C zb1QF(wOma5=_k?HRbEk%$qmXuo8^~8eb-5`RPFhgtgx|zeM-z<`E((UR1VhcdHwK5f(Cpd`)S8cC*XsW6h zg?K$@G-j)?SA@WDpipH~*yW45NjHA4Kw7M@v2uL7PJ*Yt#vqTey$QW1u&wNS2IiFTB4nYXQq`O`1Nt*7o+;^Z)VN+uRxez-8>`c^cY3mmCc#1|0J7L=KU{*y_#{+Clh+dx|M#|OeoJJVS#sWYbn7>Jj zSkzXjycVqbp3J}8BOgz6s;`E*u&}o+UWkOqW_n;v+6^U42r{NBy7hmGl}ggR5tfJK z-6% zVe3lUf-7-5170vJ7xhj0E#8P1JNmYx)H1iVl7CY(J@ZR&&ZT}`&l#wyLW5dgNkujb zzJo%;w@%Y}nBbDY;}kVBKmCy&VkUBbvn#L+rjlPUe(i&*bb`3T`Fs8H(QXta%kwoc zwi|I!6O$DAuO8Y$4`s%=&e5_tI^NTD0W`xgO3;?yX@kFPeanyNtZ2TvUtBjfTbN$mq0zG^hp!eEx>^r0>l*k) zSZDNyf&yzgvzs#k3ar!0fZEx^_~K{U6F7tvq0?~i+JHtEr#P4t3~@o3ozeZ;8U~+j zM!-Xkc6WzyS>IUCJ#w-=T=(Iz{NlGFgNNTDKBIPo#g4kC{nNK8*urn+-L*L@D)jEe zDxI>)VkYcIYZ@QvA8&e~JP$LIPk0_$PhD1yqV2e2gdVYA3D-HbJ`W`dou+dNfoZ~i z{q8k}tekM9@QnzCv@du>KSG=uQLxft_$O0fus7Jr3S*d3L2^NcYPlKyZktI`Q8O#? zI#-cRhkD7-W;_^HxJO<9?cU=p-;6nY23zCo6wCu)PP%Z>A5oAO0=ug?sR_wl|Ck1c z=~t`Ve!BnY@jf#XkN#CbYrI)KLc=v6G?|vp{MV_L%D1|j!mZwy-KmB^h#}f%?q>O9 zS#Sg_X4_aES8D~4`o`Gr>+7@^p!UvY<{pgT?VP&ywclGMCCu$|8zL$m7jkFiRYZ zt1SU4VC7gj;kTrIQ+0aZ9oG*XhaNt|1^XaI=5;9a(peUrlyDp$Z|NsK7YO!wja-U5 zuCYUbOppcdZCft?MIbl|R~VlM(jp93)jVbPy zmNs&T!vFd!+O+@2Kb~Wy{jdMmOvgZdYM~?p(e7tjGLc7#hhg7^41H+seH>t! z(7wa9vO~ry>CBH(C&5$~cp)JZUdaS7-Al$N%lo!i2(+Mq(lOTK* zRm1O$3-4`6@-}-DRBOUtXTe8>9cZ2GdN9Xzg}7;MS)+wPSS<- z2yst2(LK9jwiBITr+=qgoBZdPRPt7@YKny8%Mh*rY*`Z3N;^=`g}In#4e>9nYbOH&Pug}EWx4m~R_QDHYQjYjKQ z_2I>B@rpZ8)ig!jP#1*B^f}VQ``Lx%d;_~I_ogRyk*+ZleYj^dBgf&2clvIDAySi% z=&q9V;l~B3?5`@2j=6L1GPtej1Y9au%#Aar9JA*8VcRd~nzzY1i``3^Uc{j|Uws@= zT<;YcV{#^ZZW8${NT@(1(;`g}1)SoJ0H>4NTtPSdz0)~QmO;OpoP)TotzML$A2#KZ zQ`4TU+0#1i^Mau@{pf%R$e zDu2}6M|I9Nkjl=tmnX-U(gz*a+SRw$1ucs^t%**z zMK06Z8?86T&A`W#w$?Y4x-?5}w>@WyhbzZB&!qMCr&ssPbFY;O>bi_m1~pMze60TWIhe!@s}p7USYyiW7-7w*BoW9 z0wT=sOL;_; zv6&>&kxwg_oO_+w+*PR}GQEnthTN@5@DZ+JA2UL{NjMr6Ro3WsmIy<2JeKjhdNX0U zQVK_I!_n-vwyO}HEp@AFmcWwSMT?5V{<*5_gzUz3ey`?J(tL7vQ0djIwCqsk;>y<4 z_uB!dI-6d-FLiq7GaE1Z=X&Q9*ABMpEG)WHkI7x1IK^dpZ5Msd&E;yzUnwVuqot7g z3X6XSlJDSt@eG#g(b^XF_f&L7e9eoLc}pt$l6FOwCpTCqjRW?jkf+e90D)@;GL!y_ zmHyvvwSJVbQsb?lY&?Q~WIr_)tH~7PQ!dSRf0Hc;=DKpM1<7Z7+546BEoGM;<8zhr zoQLspd`Q(r`OyAFr-0A)Qw0cux%k4ty)luH$M>H+k&2sGcUf=9gb$@yw$&G>r=*b1 zcudBhY*AbkA)u<{wwpg?NYp9_sDN%*4)Po3_sI@b$RTN?(C~4WIDhp@oy|jt5&O)k zgs#CiPIx3%gYg=&G)E2bvx)sOpQ_cHzG{kE_l=@Kpa0PQ8whySRgQ?tEh{kyX}i!3 zela5GxE2E6fD?tpS}nR>Z^3JPtlOU=9*ZYac65*u~zrw`@3w7vv7BF)1O zA`E0yc)pby!VE+CJ4;TNVl6C2VUfj0;^G+8cIJY7AEVh85WJJ%Hm%0^sAQ%zKa3TK z$3%3hi*Wn;Z zQzT-BJ{nUf?CRlWZ-9CdK<^_v7n?%sokH7J;;c=z**3H}txW{K>oa$-#SW(hpPmS_ zI~)5=R)WjlWobxLquD4?*rCW#`F=%!IT15rI!2}zw5y(A5WG2{RJ+NFFT6Kt}N{#Jcl1c#Ypf9FUn zKZvNsvv;_kCjAt!voxaH=OaW-P~RXhZJ43dt@^VQp1Y)Y>8H{O6Jv787mj3#7=|oI zd?E{Z3;&$vM#`zi-CROcY#j1gKl_&}@2-;mTbq*vz7Y(xz%qC$AOBHRMz2F;bhe&3 zVn7RQduhaSPG3BeHpip*3e6!NUYKUrPvm?!+C~DpdT8glk<`H`1Hq3uhO@MM~`#7kFEB~Pog_zX6obKYVTAG)PR+&))QUtO5ttt_QT8nsLP=S!F^9ckCL+l?UDZ9Huv z`HIz+%V>OWlvU$1p7g;eG%Y;0o?P-Y^`<|D1skF0;u2;kq*3w8kF|iuBLRspdaUR8eo2 z;`wX_;*g#79du81%zUH!nm6HjFzKs!C-d@@VM|08Gn-VW~NSLvG zqH@YY&Q>}4SiV!3PG22d8k2At3PW+k&LDIBNbR}EFs^RBNWUUaFAt$=-8?MjP|PZj z#dc)*-bET65sHK}N|d|X+YLUntxSIh1q#bfWq-ClfJsRvCtm2cn3Bh$Ol2N!Ju;bl znnH`<2+N~t9IBH@!tz)x&(!W%W*xZ3eV=-CelMJa_su76cVsL}5^fzZ#+h2vn$qCK zj4T9c<}z(WhxL+H z4C;M!NJ&fn$(d=)_a?r=jOgc(&pWlI(;(S|VGyZfUdzbD6Dcr)-|Gn-g<4}+!Fdez zpXDSBIJ2%hlT!LR2Oo9#SNpgrz43~lJ{)8`IP)P#+-FxMVYu1g8w;8De!H6{%T9=} z&!_dC@fzYPIUrN|K&Bz#>K)Z<*PKswaTmGNJFc{`M$Qb#}sKRd*Em6YxkaKhpG^JxV zNN88T^$JKY$n2zH2s~6oRaZZ9NRZgaxq7ANH#g3@2rdVoh^Y;q4rmOea(aXzLQuP>*4ryzlQCiX>fS`Wj^n z_s}2Q2Os5-JM6I*Y?+qCc;dlzQPB0lo#dfj{04U?(?8=)EeY3I@ACoj zC3##aoFa)O_KHjk@^6#vfs_|WtoB<>+D!)nC)9I%&{B|xep%8Fy`MbF9{7lkSlPYW zhyb_=%-KzW8{0B>=O0yIHla<5n#rjJ>p`*OHU~T5$)P!Xe zme2N=^-ool`EGoc<-s+O^1xZ4|Fkm}LqOcF?kfbk5|aK+d_O)qnrFlZL`Az_@#b>d zf{b+lLZ8K%MRJ9{o3o?LK(b2(|4OfU#&yyj)sR@8=og` z=5!^?|8+Ns<$p*gWuSI4(6fUA$l2@K{kbA)u47~X1yC~42MQ-AS=uV>`_9;_6Hs# zD;*8+sj~m2#TXcwX#bB|>^L3533*^O(7sUato?3H5JHCskH>3&%nn`nh0cgm=;^rZ<-tUHSc$+H$!AaX<^|6O*&ZY_ z(Y~K#s7W4y&sV;yg}?`yjY@l1jEZ8DSJaz^@fP;?Cb)JoEo^>-O+O5LzsXRv>zp5l z0u<6J)?v9qe(-z%-C0t=aN%1Vws9JjJ>e@Sz8}1cjQ{37yYK?8mZfq_4V&dnd*#`j zEr4RuRYhjJGspH#jbqi}x^?kIO91zYHlfx8*w0}zD(C$vNZ96frPMG|;5eG;k+#~8 zZ^lQ><*awM+vLy=-*_lBo@e@8&IBJ1y+boio~9x;uj26c3)66O#$NQ3_QGb`HT9Y zW@#IlK}~IWt=QY8?Zl_7tOTJSEyu zWF=e(lq^L&jt9=nf~2SIQL6Q4YuVEG&2J| zF!Ra#>BL6V6BWO1PT||$fS_(T=#LnbsHB! z#q}P#b}%K)&^n#mOkGMW$bGuW!{fu38GK611~ovK`CqarWkHV3H!p*aLgslhA0v)R zrOBktqx}Vp;PwK_F+!lun(Kux3Er$ck%b5v{Mm`&L=qg5I#{vUy%`O5jk-7SM3`=w zqOhV@YHYvXXT+u=QA9qPaW>YEyUGmR2+9P{gIs)tkNN6;f((_b=!=!touOlhKSouK z9iDnyck~=UZwD59+GQ9nYnCmaW9zE#}2~ij*daF;uFLg7he1XOPsem zj)#qMrgNRU<8AiOqzApcUk5)5e>~R5VxB)tX9AK_k{b@zgfJ$iNHN;xf37ZI-^A@+ zW|`UmrbBRwIq@WS#&g4yIQhiTnQYP2C1FA}-kw{U^PMy6xF#SbJKA8OU0%W$hygLF zdHCbGI|^3R#d)Y;%+(y15*KJwSq3T9U4n_eM1bxEW-0K&JFAV%sR^ayXJph^{S#ax z{0@spkt?<*bZ3tg%=L~iCPngY#Ih>S=oJ&6THnB6>2#aDDJyA_<#X|g-1RryU(?p5#8fyxvxj&bpUJL#mo~mkXpy+ZA5E5}K^d<`WGV zLl3td768NoC60PWePUV3=R?11=c9-6OCjTh(sTw}2!PG471REW;6vrHpxl>7uFkom zQZyu6!N_Fl7}STpl*C`6YjD-<+`;NEWXRs#6mtG{wVk<%qJa#g_)Lp)&sW}JdVQ|| z2C*#^i+PtS-`Ati770gMCK-kUi_n+KHe6ZsqtJap;K~|kC(D-e;Q%8*SYnZNyM?<0 z*k_tRPhVf;c*jCul!oQ2&?DTA-<~`*3|Rp>URw zk1cXJ6|};12APnqHEcg70+_C?NdAD+b97>NNzvvP39a|7PR>WntbLQ^a7`{oo}B%Z3?Zupcc z8@2OPOOAbt1+b7^CAW?qRBj5gu)A?top~uj|9V{bHWWG;0DdZ1T?woyJ|LwCl+J#r zCgJB)ttepbfsgg)(f-c1q z-gTYEas*v}&#Py%tucYbKz6 z<8HzNYtUFE+1dRy!5h-F^X^awZzKVl>XLV0d3 z+-y@|WU0II>GHANo)vYX1{2Gwo{~ngZ3tSXL%9h8QkoWoUm47h=mjU1Dh!;bqEK-9 zDf*_)GDehvLDh_U@+?44&0yRN;U*;R0jqZ6{UWj@l0TX#VO#A$L;av`afdgPCG=J9 zi>V*f?alLA9dwFJZ~WbRjPU_Vyij-A6OBv_Q=-zW9x4+<&!nGrUqgPOB)+83oX}tJ+i*PeF z5X#_q*Jx_2XIZ;7{iT@aH1}8eUgJDEAZC5^)kbq0^@qp#dY>gYurQ&JPnX{jw;Rur zjO|YrM21*~Yu#xk75mGc3hGi)y6X8U+tuw>?*_x)FI$(z+UcnR>s=ZkbU}tcZQHRr zSY+SQQs)QNX_pkv*(bGFi*v0v4>Sjsn<&70Thr2?Z zIA^^{mFr8W(W92_^(LW8m%ikB(O7WMv5os20@WR$$N)7!%D(%sU=*OO`H*GqI~QQG8oN#;?RX(#ISXjUt1yRDf7!i zDRSZ!+-hKDryE><2$8^{CURd&lzFE43kM~iGau6wRTGPo=Oq&#mfi3WaV_duZ5>GJ3Y7U;bF0D!|0NY!^p~;yIO|pRw!m54$iW*NuX2SM6g!+ zWJ@0mSOTs(m-Egx@l%5O%acMm6vykq#ck*caJg`~ZXK8JHHa~997Rxiw$_}Dchq)r zQwm7_F#J}_BexR9kIww&jMVMhB6^pLFZ~8YBmT|kLgDk9?n2Z$DD|gf4B2g8?VuOO zyWD^xQU}-FEqYltRXB6w4Ndv#shB$RHQR}=Qtjr?G-iWhk?xto63b^Rm-bJODp2aC$tN_P1-(I>jl>OE#0yf`)6cQK4K9P9`*#lh4l(4jC z>RIz7t#4SYCYf-Ef#tU>w|d8eu$q@koW1i}frLselqZ9Y)%1}Mk;+HGy(hTBR&9R* zDgf=B1k0Vj%BfNy%}pNg|L`39QI3jIq<6F!dREGIujK!JTRqXKr|Ww6FhQ~7^v@yC zl^atdUDHjZW4ZZZE0<_4`ThLrFgJUSw~}`qP_(RjIXq;L4n4aGTz~Ig*534rcwsMq z5fxoe^LScsgxzd2y>jJ&BIj@sj%G{oRCv!_^5)i8naolzxAMgo`+>p%?9&RZ>yclj ze*Y%=M@|@R3BrH?7X*9740BD;dKIAREY?lO0E~+a?Zct*Fr1P)(tAT*0HReq5ca)%1^+4&dcd&UUGB&DFpht(EXKW9Nig4YE9X<`_QyU_c=Wex_yzb{9*eAyfSpU?H_5%_cP zuU=ea%zH<>M=5`XcJZ*Zu$IVEyh`!D4{5qh@2c>y5C)u}7H_6^*6&RY*eWm>IE~|hX&`k4>kt5^V)A|DXx5Kmn!WGR>u*#5TL9&%NguE>k1aE|KFw(y z3JdC8C65`m9KAJ30)V>DS8(j0_VHK{nDUbo8KpAlT(``yPUkx<=J+nq=q<(HKEIS& zyaCJ3XWdwP)}tM!%uZXbl+#Ns>LWQ8Mo#<5INm>2#G48LRk6yFDr_q2sB~MAL?csl zI3ciUp@%EfUI&$t3Zs)uXvDWowf>oRQ=`PLb7nf()89hf+*od3tNUD0Ejb%+ZaXc1 z#5@KDp zWhT;z+C9HT0NAU{hB}CWRS);&TqH9Cdrn!c$w70z?F6+k*M;C>ZQ)Kj+}4wY6rgfF zlG7vgh5O+_bV^tdR*exR2ok=&?}6ZM-1BsUUh?5Ku~7#a+7TdN9_?{g+R9FS!sA;; zsS2?|t^$Jf0|=iv61@o3Ljg#bR;Ne_lJJ2|K;gKPF*xNIK|QJ&l&gIeqvA<3GIaL;3W3m5m@CwVRXK`i3(sBL7UeufJbKtZf|W6w%dG)hY%x@K3PlCbP95a*Zl2dtPM%`-8(r?1S^45>=O! zvyD(w@BJUs@8>>en|@A5JWf9WxViAg{c?2$d`U^k2$_(GO(_wV7t_lxG8f2&Br;qd z?Vlnw5bsuGK}f?h_1HK8y$^eFy?4&)W*Gp91s|lW+ByCztR!r$uXQYcxXkQpWNx10Q@ z&>oAvd$i4;?VyW!IakJ|5fywoXvHj(ZDr0@OwFj}tPMh@M#rpV6p-P?dN{C&h(bga zgdd*}#{R5VzUw;zyMe^FN4HawYGGYvx1@UxPFuDH&X?Ai%gdh-D) zmnbZYZi99B_inGTR~S9$3ypj~^i& zD<+`ArgO>P@mdR*9Otj!dqjoM<7PVd-3X4cGYnYl$Y}tB0VBS>gKSG0+$O(uPRvCn zmnl3eU0v%vDYb>5I^R1F%7KexZR{VCagpAL*3>nmwb|5gl%162I}@*J5^?RdCz1j- zkd9}n?D?&Qxovb9Q7#GCNn4{9;ho(BCNLsivMLjY#g*wm$f5joUoLK17Brv%s~t$;>%k0AC}e6gq=JRC{eZ zLjlOu!DOYcVxFbg!ayiV<>V;OkP;<69wwh8u&zh^0!ny=!O+QUR|x0CGTHg~J;#9_ z+bW~`)cM8lDw;&=U!yx%v4f41{aaBh#?`{TM%w3h7^9DHch?z;4@zC5{p0=TYl!Pg zwgnwKTS8~-?yNJb?7D%3U(}Q2tQXaKcdLngmus+Vw24)2Rwj*@de+&Rsrjec%c^L` z(J}P>npPj+)IBFC?`yXKs3x_;XV$wIkvbMCl9!)@F!`u2%J{cImV6+dl-U>^Ffuzf zM`R;rX=dfs-tHlBaX}as`AXEi)T1J1GFuSsm~~g`ijdL{tlO8!4=qPP$Tww7Hx>uZ z*2e|PBbx-nJj%h;KV?Tg0kxc?262V@S9?|2`0C7h?ZUpMfpfGWW3()}XI#$yDG(#6 z6|GlTm$PkAzZcwud2Br;rzDFx7X0V~rtE%((2Mh{ri;FCbJT|4`@qZ@WdoEVyO^75 z6{yZ&PWdp-Ts{6TSz+6Pa*7gNN@*fPx$Dn+68fT{m39zmGu^{{E>X4;R#N7*oUD>0$Q1Dl$oS)>>}n1c(~qUfPW}w!O#L+oBkChCW@G;Ue61wsRZ4qA3BCs&OGjftm5Zg34~wec(3S1ZN9- zKb=kZDk%%79yV&PtpSlE=8AMX3MMzBqq?+ZgU z0`2Q-=E`!sZ|^@n@z`5sr9H8(@viC8h_SIzRRELeX2EOVI(P39quCt%;dEWPVfbVh z1cZ!Qd2$C3RldL>>~7%hb{<@lxcO6wf>pRXlna}}Rfj=fd|jv0bh-RleHY2g_}gUh zqy}_Hyofijwgd zE7L6#jqCw_+8;a!lod#&u&KD#jNV5o!Ey2gC4 zh$UO@f2TSa{ji`Jqkj;uJ?KB6FUTz~=wEnB0g+E|98446_q9Jyn;a?bYQ2%^i zGZlImiF#nd{z!Vr#qf{EmQlm0-RDVr|1lf+(@os`v~6lUvy@Ce_fgLuL*IHu@{Su zxK?tbh?eQgbd>m0#NX|<0Zd;tN9^GE|Kof*JOJJFL?}gFDO5Xd_&-TLWj-@fgLWo*^A3a42ltU~nI59%a!9vZ_ zy3V~mo5R0H-YnAP+?4;};zxTden;ezt;<=N=dQn>h(a-J;Ui~2txS>I6TUjV^OjP; z*%@BFKhoj8o7gzzk_?BZ;2$%AbqQi{uS~_@Q?KmUTlVKaCe!KzpCq3$9C|M(Px#j; zm{E?BSwbG1qod(J+V^p4Ep(5lKr^wjRb#; zY9-QP)-_v(!PD?>%UO?z16t*}V?`P<>J~(KrFP?|0R)yV(I>a-^;TIN)If*`1K%~_XRNgMs6`4{6RkVNFH@@ zB-&Ebs#%Y_Uy^e>H1}F-zu}^%s=PCphggPLe~kKC3UIl=cG_m^J!6vz2Yd3MHoE}> zm!`df5V84bp%b^^Xhy_M`HDqe6Cy2i5%X|kLkIC!uWVeVD^t}kLyn(I41c^2bnfbQ z@l*UtHlPJ@8{IIVJ0shWH=GKd&s!VM3Y4DGKs=^iDvlMZ?z{cyTeDNC-|H_Gjjvo zg7XNP^_M-}$l)ja23}GL3uD`nrY}s2xBbCA*fPoAI-!KA#YGKDydFec$6qM=r^i{G z+hXHBLSKeX&92X_%cpJB^>|d_9gmGG)E`OpL10w%YGgC0TFJ-_?KjMm>_Ytz)|2TN zAu{4DnBEus*TkA$yBW$9Um15vP?>AUr*c7|YCVnH@+Xr+xDx}q7Z$*mai3)98)9D) z$s*zDlMvlNwdgbbx@o0J&Riu<*CukbNgBpW_}_xb4+MP^n)Q?{^--m4zI9^5FpBLf zaRkOUjH$)87P2_5w(3YT4uv{+AexlP!f5Q^D_}nHTI|kD+U!l$ykUS{_%8oOPEd!F z#h`p_+j*S6GENgCyn%`jhSJeB)D65q2lTJH zHb@Ge32AKS-_`64dIF`mriMG}pyFDX=RTQv=64CMQ$C^IDZ^S{5OYN@vq|0OHFCuU zYwQ(G%DvuGfCx&@jbPqmJK5__8>EYG9PxrylFEi@Y z=9XJP`zKc4{C6d9*DPC1ou__R>P4-Yr-Zhh=e=}@j5d`zTX@x0nw0W>x%_3V0&tRf zok&3-orTC`@BD3MVwCoz5caA`B$SE8A-)|Nr#T*aIs5HCmhe597S|*1?+Kzi`sCxI znnX(td84iy+nRJkPy; zu8gH{EEv73x+U-8Bm?@o{hqG*?+94Hp`n7m)-hDC!Yxe%a$|9Jz5T*rk&Vo5I5`lj@wt)XiduxLr?hg^s}SD2r`M&3uGu9 zB~7WHnX!4vg3|e{NXYDR<2*9=OEs8I_gmdL0R$Y9t7H6bu`qi(rekg2Z)sVVuhMQc zumVLhpZ4m^*CbpQ@f#=98)eUCCLa0y(o3N*n5>G~sRr4nfAxx2UkhFIG)B5%hO(iR zBA-_*fG@7Fm8RUyAHymVa{D(BGBBS7)>p+y9olDJxVcc5gxA;m(uVy0gsSn`=N^o? z+76b+pEvj;r%~%B*@z`7E^36|%s{oY=7dthvBJ|8={s!9>H?-6%k=h0qhG!@)uSIq zO-^|1yuh1?+WJZ|RlF8($?R$rwj944KR{tQAs{k86TpmvwnCbkv09%&*UAfb1Y_5Y za%OphF-1C!iT(HjojSp>3&`B_iE$1{)=`p1sNPiVpiB}y!vB)KZZ+P7nbxv~)Sq*6 zJitoIQ0pX%?ck0PjFepW_5iuqF~KP1D2`RY+SP0Xx|i`eDzjMVOK0Q>%lu~wVheL$ z%8u#*2y!we<7S8j4J1AhgZGt`5P{k*00}6GzN_oEud{|`m=imu=^yGJV!7+2b#tY{ z_d|=rK#+CEQW}^A0UXkf*pCN$N#ObeT2X#cE6{5(+4Nj}ZZ+==Pl`XQq*D-q11X9o z+je><4B1wdJf;#*%~_Wq-(r8+wCLQzp>uJm1M-N#S0uvetyuFq!}-7LF~v8bHcf%C zyqxdblR|@)be0I4LQ~?~`Ah@nSc8&**HJQdE=+w?49zcX7_f z5w{3u?`*H#Nn3qq+wFIL7)v-yOvr$kfL0P84Ar;|12>;eQ}X zQ(*9IqunGP^I7oE9q_u7+ofC3#SHQ1$if{rzJJgps^w>Gy-=E*>q9gBJKw&S7g``a zk+A}*huNf7Be`*a1eSNX@kk&WI+%MH$IN!!S7x|xkV}xSGdq~265n%Q|c>7<-_aDq?2MmvYF!3Mo{2w>{1D0{niD>_H_zxxj z59%a`9?$*%z3Cq`&B3hr_f!Aj<^PpmXC(kBEV{ad?_04hOQg`>VgEN>(d#9HapfT2(-|a|UmRSFjt?GMU0p4fzxg)eCm$5**>W%c z5+@Tp<;mx%hqNWuCd50%Yc?kaC#)pAIu^lYus56z{%EEN4oZ7@6Kz;vc)TmJnlCmF z9P7KGe|6IPc!A@Y`YW&gO0Pfq>V0gye-+f9uX95Bo4M2YXVRZ7 z3Ft;xSH1;r7jYa_X68R?Iqq!5g;=#Vf%r!U0$gs;*xZZ4+hN-W@!E<^WM_oTG2X`j z1N3^D@XSDH#M}BsHykvs$6J;Dyzd##c6+Mh{m^e$t##MWfbL!4byk<{1BCLi{P(T) z=13cZKO zjuj7Zb5bX}KCL%e=UbhU-6Cq*?QuI!iY-1*!9|LhKjcJ)NN-GM0u+kMt?+wqD7gGH zakii`o^OU?l%8Li@1p&YsE!tVeokHZHorz50i`X_{riIP`+_QowNdp1j)HbG#xkSh zQx+@!=9eB;hljS0}7{Z+i40Tl{|w1cgV)sVJIaF;`S)n6nouQp+6Z)3~nB7TKNM7`QM zyVRq?7UG%omK_)<@Zj!vi%)zcmhk^D@s&|gzF*fWA}J*>NQcreq%=qj-O@2gcXvz2 z&?zC^-8~>3(%s$NNI%2R|GU=vmBl?X_jR4K_t~fZHmz;G^N{O;xoJZ z7bX=_!~IfoHOOswQyfudcVnCABP{2 z%pb_8sT;hDA>jb$?LjQeu0p#Ex&C0}d)XtW95&V>Xl$+Tk@qlG2-6W1D_DnPrJyIX z^ev7P*1DZ8!FfPW_uvmb#?nBwy^t2ambJhbK#{!h)t!2v!&;{DwU1tJ6Yo3N8lnf>cs_N*jOk6#OKy8h^sn3mCOkq zzC2cS9(#XWi!uOHW8g9v+zFrB!7e#A6eK|)4_slYx!=5!JOwng{Cwo!N*eagYKQb ziSg|Tf^Rr>UtOH<%8#IQF?Dx5Cfgs*8TE@04Cg0%F-atA47Aw%7nFlR9_<+9OZpsr zE}@ql9?dAa$Fid(fIpu>TzG~Co|~mVz`=d&(fU}JX*2tE@EN36DsK&T!|9ddRFvgE z!-lr_Hj*MoU`BP2ZeGsIWpnb1p4`wxGRTW){@Q|$1U|Xa>fOHUMLGxYd8u(K|JU`TBo-WVhX+mY8&nQC2|i%To;g zktKdrFlnJ&Ohc>cvzIdJXXRZzB%p?uO=BE6FYAt1M4Ycv;Jn1Q;#0=d$>05Ou{v@+ z@xCAmReY#F_U9|v7?L*vvbl;OI{5#gI)_+8Ye7|u$;lB^aR7#IWQN*f+_nV#{LOBS z>nn#EWIgX4+@p7;dl?DofJ{JhVk}*qzZPaz^Y#WK$d0wU%nT*;n>07At@&G^T?wgW zj-cggm<0+OqyDOJ@WreBS*x4SheN?|5Ly1xC^+Hzu(2_DIoaUPY0&7}d_}ZSui_fL zh?Gev&h^+l@t1eMRN?O-&T6h>ZgQ=4UL;_xZQL<&{fYxDw!V>040x9ss?9`ON2Ipc*`-)nM!DbrS%?8hbn1{V&tKyr z{|<*jtyS#C{ht*w3rS*~zBN2CSp$R$N?d*1(Dz~Pge$tioy z{~D;>|9T0bfvY)Wghcxh(eWp@nVEWkan8_JA04ebkmHx^%5j(V(-4>qp$+&0Y$O+sC zJt{pa`P?n@D^?>He7QZ%frA|IfNdkf02GSf4EnK-f9W#T?FUfsVYi>b3k4__2$$0U z@dX?_Jd}800gK`u*x^8@9_E_dmk07Hk+F58Lz9C_y?0r`qL|><;B%f<3IZ{1cTR|F ztSlUlx|+JuZoA~VS0#Jzv`IML?r9c`YilpxO~txnlHXo!{_guK=Pg&szq34ZBRwRu zX0dBu?&&l{+9Dnt9=mQ|qs2CPflh555nvHAFb3h}4MM=595vyn z(0Q*?zTLDzBN<)xo^n4V%EehNPCpE(^IiRh!tK75a*L)Og;@rS(VcJ06A|Qy!pg^g zJ#pf;pd8nn4D(<9*%9CpaK6{7)DZ1;7k%h_TxwaWvNqC>WiYOX@#(=eId*kjwbiKx z+~gVz@mSFegWa#Uz--<-9%GX5B-p`ml$I&0=4u{lN3LGcRzR#yo>3(>{&@@l%AHSM z&lOf<_D+Q8ap)pW5HT@Uexakld_lb^4R$D!6qVNV!ySyNeJR$8FW>qN`buL5YHdA} zlgPN8&rrdPrAP}Xv~=ovKF~k=93Th06hC^cJaJBLFJ&LhZCC!h;b!J$*3YgmbpqPk zn3x&Xac6xtGJBqMLOKe(`sn0#Vp__=!{YSYX`an|qRsrdQxgr+RV-GvPDeZXCG+T~ zk3NQ2Ju$-+#HoCFDc_!?(sj6p(6W)+f!WdqAMMv7rE5n8(hgechdm6ezh4vUw4(yv zv+fuU)DO%>u~zi{?%EDn;&JdcU)Q{mTTYy*Q_Tl+F8(-%i?HA#$4XCg55-@n8e?k8 zEI7K}S^(kZ=xwFYxjP*CK(D0s>aE(F(91ojUB{NPn){Asn<&s~Jg)76L({;QtCM~l zfzaq#a?Bk@WjI@|8DW3Pz&T#a%bKc|-Q^H>eT2wvD}^cjg~+`< zQ2n_zLs}~yyP!VWKC{VV$JO}7qei3VGp4U#7^Ek^jpScs0<}%@Ip~FMP z6Ro^|0fB)LgB!;WFD^^L7;Rp9l{xw$OGU60mYb^B&9)oVNZVI|j zq;G>XS@e;{Nzz@z@Yl^NbSestLN9ST62D7|dzbc`3%jAW`_MDccjJFr15tn6B?yi+ z!wdqhhRk+Nq%?@RI|*d?s$*01pAzfu!lIQghF*-2UnJ)-FuAqNi(+K z55o>4rF_Qx{NIXLGk!E+tnZs^o1X>e`=O&HxE;^FWk~m=(BvÐLWSKWb~}s6w!X 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

      sYBo|AqS1e}(t%q#6Rppdp>)FxPSkhcOYFMe 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%0A3LhsjfFV(809D$+*dFJZ%@hm?NY-F6# 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

      M}2bKG3lbCHuJ&lWTKBRTC2 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%0D^ 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�yMYC?PK^JCrp;8LS%+HJ80 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

      +7x-}p9G4zhnkq}(d=R2CHCOZAE@I>p@s z^M9u+Pk_@WtzS+cb#CO`B)qOBkCEit>LBuRu&G`z?=HPd^2RNoEu{*LqHV&VP11dj zLpz(}clcrXQ&2B=m;7PmyDTVyCh$7hxubIiBZQbD4^sLn$GWCPh=pYPcWRF)@4L>P zSp2rhMS*yi&8lz@Qftz1uLERlblk$!;ubb62NH+mLWh0Phut$n>o>S*v3#ydrM@_d zstE`?{amWow&WdlsAQp zrfI?EGBHhBvZU2e^^Ov21*V+|cOC6W&4&dWDESw26FSOr4T*g{4DOU!yKv{$>+sp) zX;v7!{MnuW?|DuOdI#CK2025e?Ty@)2a;-m*{(Ws(^U>`qR>HJ_u)} zwp#E$9FUZgxRoTjH0;DUnplIMsH1!?%xAjl-ke<&m-&D;mEIOWDy?YCIgG9*f9ABE zh-LbD)J@QsT*pGKK#g6bA88`TBaD;PL6NOabP*jGErxlS2`GKgs221>UiQ@Lii4|% ztGn#{b-aJ4b^ZFI?xK6k@xJAS1poM#hW9W3weEYqbe6PAHG|u8x>DT?)$-`yhfTJp zzKdE8Q2e`kN20@icii@UW+A&K#B+@`cMtv!1rWz z!~OY+ragC$qbgKGP~;`S#pd-*(|&5?!FRjw^hyUC1De@)J2#gEH+! zN#z9(nVQv$T7RkA^2$Z;MnM&-@}}DMzR9?Wn*F1z#J}}bKZA=|f?whej-wGZ>P#pc9#2C+6mGTV)deRe-r>5HGti2Q`fJLpJi;PL9S z;<~?N*<&5!jOBfojodt0jEal_F(6C9a<=0bu6*4Tn*`<7_=5F8yKV<0aHOni4w)qZ zq)1?oY-ax~&eyV@>o;@V(eDimzd33!cE5P#*F7E^*8lD!XEqjIPU?0MG_VLC+49Nh zF(2!o}WRmYxYk>@3N5K&vI_h$=ijgT8P+s#xHZxnXPxn4 zIGcHY7gc0%{u*dB31^d0^w+;ixYv1`*?rFZsNlTk_Ng60-^gdo^rjCVat<98rNMQ| z3~A{O%v9re1?AET%aaXZCML1+8S)xZM{hWQ8+l=!!#(S0t$6_M$@iCMHQ6H--*!~g zTx^#5C5;Zotcqqvhz<<@Wa9*X8as!tECP#lcnAzpQFR-2{8VCAxQ@@pU5JqbDnnSF z*@8TN-LTsP%f#9(UjnU}6JYQ6}1)+?5<* zrve;2yen}S;b0uZYYFwQJV~3g2mESl-2u@96BNC%)h#XWHmX05vR(2P&@)%hFQVpA zx#UtT7cqd>ZaaU}BvJ>pw;%hLBxk!9cg(0cF9>{MJ$B%7Z5r(*JVT?%Hoq|bim_e* zb@pQpR&#vLPXD&n#Nly@1rSyML7vC6P@-Ql%(gBXH3D~dQmxgUaO?F{>m&V#sPJ^TVY3J`=0U@iWD|ZczpAe|qnv#`>=Bx=3`=j)x@G`XjYNs|FFT4e2+6g4tE> z<*)R*6?3B@_lah%yQcTg8#JQTXP?Rn8LqNJDv#Qx=SZYysi*VjQj1gjPf?wQ9=@AW z><+wszaR9vnSL40(Pn$brWq!59v~Ygbc(y{H)%CPVKNMe8Ib2GoErS9&&aZBX-;CT zy^ZCLXXk`$B@KnX&RtF`#$iR|NaOot97qbS;ZnDyibu?@yZ+*RDmUy&Ix@t*3$}xZG%t0wVwU<@e z_RK84Zc^`isMg)m==%keUF{-^aI<6AC)$Zt3Z}&P4pC`Xu*5xzfC?^D@(Xc46exRT zH+D8@FtQju>oLl^Z*TK4XLOl=jM?3coHE;!KneG$(<9H*XQ9@k@@m(~OJskDmgVXw z9Y4F8LYA*> z^d~QOp9-kc_q`KiyiM2+anSjeshS%5mFfG@`(25|lg6WLm4Q_;+O9qgf_(fE3byg5 zs02#+!ig#~j(B_)Bq@uF0`(HCF*tVT&Knj6k8OfOXC18f1k*eA{1l7n>_Hf1Fy(P_ ze|GYa>$>DD@6e3t=%bkqXr|m#7_>G_i?NF8n`UfhwmE-_rO%3gA1o&?9>bx}Dvky8 zjepXhloAz7<-z-Pxv9&!#FK^i3VHseli2u#%22Xc1Lt8Q=Jwr2td~#i zqKcWIqNX0f;I@(`kBMm=uGF>nf+d^K*1)<-mMIr!qA-KGM8bZk5kEr@y0SLqx^_WP zL23Cr$mL-9U<}fb2*t@|LOYW>j9BWYx*yI&va6hL6V*@lKjT0E*x+EVQ{DpwaY)fj z1xDwXNxsjs%cdWZmGagmdsb{cQR`cd)>2}}t3 zX*6XqXvWDYQ~XuZ+*mT$n!J6-(VaFoxfe{Yy3uXWDchtv)WyXoE?6TH)y_iQ8f{dI ziZ*Ou65Bp%o32k&lcgCtc*?w5u!oNfqElWhGa2)>Vr3+4d*=qGSx7e)WxL7A#IrLB z%pK>8md}|Hg*Ia1noIi^MPe?f2MZ`UM;2a)tHE9Iu%TjnQb5TrDR$3lIK@}$(i&Kr zjkr7_qGZ>em?+%tq<)Yo%+2iR-!%f(_*!*jH?I-doB5+P;wANAlP6%szZ;g2NUTDj zyn8c+SK=F9l04)Hye&*TSh3_nEfByBvblMF&%Z-ArB zOo4)*c_b#JHjGz4wj^NJo$aqzQ;LAxM!bQWcRZB8W{| zN;NfdcG8}dlW_ne9?Zw)y=K=2*H%voQW`d_>`lJ$OLKmAiLm49&yoM-o1ASl5g_^6SMW%-> z>ZFa?_*S|9aYHLT-`oOzP0eGFf=K3s;ws62#`UMq&a1GUepGdG@k(o(y_FQ}nd}d< zGQB#3;%k#mrWYxmgC>V>n5W3ACD`1D)73Koa|2QOj&efftX6wUkCiLg=hj2FkiL5? zyu7471tba0z!)qFZ&&c%K_4*9Pd{5(&T}VECOk7inpXU@p>Kj6_^ItuX0`}hZN-MB)wldt*>G#>+q~F}b zsVjeqqA^ZQZR*V;m__v~ zUV0ons+K4B($?@ANyW3%#$*Rc(4kgz9~gk|VKQ;Jfseg9krxn2w&d!X&}`Ioo^5hs zqu>G!*Jp);1=XobQ7Rq5$`kIvG#}}v*UREc#RJyl=*Z30wS`3rn2|x`BuI6&gA_tj zVA%q(;;T11?+Crroz-B7Q6P`Rym(`D=WK};b=WKiK@O@DICQdcM^G5NUCL$sh>fPM5Uq2<`j9BYckT5d#76aS9Jr~@5Tr!KNiVH1F@xz((k?-1OBdwZi=GLuEY}BDJ!AkjfFrmfVrJsinpoHl64#B@ zhupV&WcPu2!`hIU0waVD3*!>5lV zG0*zTn)p+N8_upl*MljhK~&b|cJtF`zH`#gtoAw-qc`$ZlU{c!BlBOtgCmNjze~}ShpI2K*R3MT9_5j`d;_uaFeuPgI$zK zlDFm8ZVPR_VID+|v4|j(jS9R1Pj_9AJxZFf3Tmw{ZYv$4_Pxw?HHz*|T^6;4g-??1 z&HAfx`*a;#OURk^6CJL*7KO*$ecD;QxMh1~{}f;9Vp}(lq3_r{Yc*PsIB`jg+F<_y zrs7)GpfAYSc~d`iuJc{tRqpd|d+$8v^nOhdJ4#g&YJE?arTfI-a2ww~DN9nZ3mW2) zY#O;NnuS37fRsB>wFfq{NGARZ%5jTU=WD7wXHLKmRho~+^7|dLy&a|!(>OCL7Yk?j zK*gXzd`I+n9NUF7x`30f!!SIj!|F)J+HeygaPmrq*$ld2(KlJlM_=od9AP_|Im;HYU zIQW0(fBq}suk%0K$9#4U|Hy+Sq$NQxu$D5nvZa-ijjOf1_V!fZ-uYIs^K|oZmp^Rn zATxlIaoS>WfR-x1Ap({ zx1w;2U~YF$H!B-2FE>vwZdW&NZciI`Pa7{AS8p3@ZU1$cSexcu)d*#GtL@9O`5`Ow!7;h*$B4EF2!F9{e_@_+jO zzY)Hl|4N(!YykF9pG$d=NUWrI@XO|j!>WKUtCP z0Kgv5bv4==OmsC-V&K}fSX__$asNmZ0pyIzQAH$t>KOpGNC6!QMWTiMt!WuF0@~?d zi8O%>>(dq#7E~B+J{|5y-2qHGO!W59w~8Z7U{2&05vp6l5gNfs{rnnj zdTPK0Dl(S+2&Jei4_|M(lrFrV3O)nxm~}YW233DZ%i&^3oJS*kqgB;{m^+7Ff=KGR z{w-cky+|!JUbL=|MC>@JLwcNOWsh%7sSkVcbr{e9_!_9oXxz@Akp6|%XYj?wDVi!6 zuOrhJjL;duv!qs&U*clQ_RD%MLGKF~`+q(=X)A?+`J_JYxwINIm0EYi^>g;-NM(M1 zH+AHwOKl@mx9EsjLH-jnpHchFn7gwU#d|cRkb-pkrOY>)R)c0Wt`wYzC{|lq zuix3EUSm6VWnc&Vyp^D!e&csdiO&2WB#}3Y9ey(J_1>ovqnk z(Ob7yk93^k;Va5(opx1y(>KLeG?tp^t{~plK|;L#^e*G8Y{}#Yy=t6VNX*0TCh- z5J55l5hN230WtyYE|c$W*>{O1n~{W~}F5S;)2 z3IGTp0#G=fDvIk*UAA`GsCtkFeB zgUCbJ0jEh6*#Q9BBL=+L*FIzO0Yq#70n)Az0Dv+CaDnm|QvZ>IB4FqDSJ3SR1d@1K z67_Tr`$2AygdzY+9x})+A)siG7)qL*p`xveMkl|MSEPmZ_dm=D6o`j%aOw|lA%SOj z*7kG;w#_kYwE=FgM7?c!;H4?QdhWr?+w$akl=D2tj~)#}vM>sIB9fC6i=w1~VQjAB z3-!E|Pw7@P`5AjnQ>8#2!@67dy!@24$vRBrlp#6D!6q zghr`R8iWZ8Z}|xnSDtzF+0Nk&UF+(ef(JkhlF5Yvp{&fvvCQL1nn=lg@Ftn8nZ4b< z$Ow9K4rV2PdtH(vEl#Ygk8>xex_TLH85F{h%zSHTPo9~D-BLM9&<}@E*C2 ztue2+MFhRd5>UlRSV+$WnOs_RLam-?Nqz=ly9aS{a{e@bMFu;|PCQ;Z?C0m_sU_aZ zJgE80w6nFfPESuSi;nH)jb%uw$A&FplOLOP*V zbims>VA9^+ZXO0bq3GOLUMz2c<|Reqm6chP3H4ROX{0E4G=iBE&}Z9*3amdyS~GTO z7KrwOSXzfi<+-N4HR9tkUp$3!e{;^OrLSF8s8UyxKQ~fcKljmCVqy&tDANTr{*ruF zN$nu%dqG~Gi4BQh$Q1gOiqphl@Uh5X;Q-I2rT`;scX)WNz9z@5TcOwkWqxsPW{!Dn z{6|vn-}uN>nJ@oR3(2VA0lcVDqrK=cd?zI+K*ugO?UKP|MntWlDNi8ziIMgqPT9^VSDgX&-SF#h;?3GvB)UN+tnnpd4LvwMw5~hI6%B z)QVNC&BOb7X<{d;@a0mMYh@(aW^b zUUqcI%89PPcxV?Ouvy4NZ`vM4#Bh~w$zz)v7a$`!HkTqWHd-vq)<`}N`UzDD%dogZ zN>{5kZ-%~it^qE0Bj(ZJ0cBgM#iA&#-lyB-P|!78_mN>lg8C&&suX` zIz;8hbe6A?!&J6-k1V8~T1hrf7>T+HyhyQpw@2?PgT1QnjhkrZed_m4Hm#-`CwBHo zvlU$~Z!uz*_qmLMRu<^k-ai!HWI7gL`*@I{<`D|TDO8sDDIX)=#$mqJ4ugsw;>4CX z=vAX;STBSP9S&ke4T<)x%>xr&QyCfLX4pERXO0S}glbpYU9Wu*WR!03Zp+~P^DAP< zCNGw=eY(^xGs5HHv?liM#K(^cr_A{v6|lxD!YmDAg$Iuw=G<7FY&^X=mf;nAO3G_5 zU%1TqR}r6Go5F5e9e?yFffOTe_Zf(u$T+q5p);yqzI@5oO`(Nd{oW0eXPZk%zG_*O zeV?vzf1YX?-OEx<_W>AJ#k9~LjY`lAM~Csa7o|mGBqMxNzsQiE_Y|PD|++;`;;lJ6#u(y+?IfuOYI70;Lnn*Le3w1ED+9NDXL%PZrqi7P<#<9+)-MvwC% z0DC}$zt#(t5Dr1Op7EXXo!m$miA;?CNPd6dfYX9a+n~|yndjrr_8u&X<%^by0a|N> z%MVDUuQPTns7W;IVL zIs^u`m&g+6yjPSL`K5gfeUur_t z53K?RL1EmyKX4e@czQXwxyti?bCGw5%5IjP)`m8&)^48iys9?N&fI?p-*fC#Cjpf> z3Wokr%GU~%BtU=6tmNfo<85GRC(kPm{!>jV_Lg2=4qiXC4(Vzo{x9S)z8G^#4}z4-|Z1U~!nZH0WEZs-?G$JP34H0(uxM0oqB{5Agceh5Pe) z4kb_A(0kihdHZEhrVaMZ`;w2dduD%eiaakI8@{+jYV0XK%Y9LL`{cy`*1@{==fQ z1XSvG)qP)#`|bKN{I_ic|Gcth{r~q>>EF~v@M@y4`T-Z~OFj(hqgP2&fCTT_EhYb^T2G&BFM< zCqD>5@`Dr5C-`>5;lJ(E-$_5zB}qVClG_DJ{e4le=yT)p@DXTVh|x%43ho>jNpO#H*gFh(3=Di=1zhM0c5bm?m&X4fp-IBFd={p z2JH?ccpCV3ZY809C4r75L7pXecPPQrz`NE*2qc3cyF&?{28R5qp&|bf4UKnR3DM9X z0{vSMVGb^s5R(85{lkH-9U6EylK@PJNdSiJuA}iZ@NXPl5P_a9h%i?dObFV6;eS|c z!P9m_J1`+=2bSDjOXF$a-=H0cK(7--nA-^^1ne}V{eKp}+S9YkVxEsdu^cEdXeA$SJ??XIQqG{~=qX7Tp#*Pma)Kya8882W$H z;D`Q4-~_*JND!P5=%|AT^VA`Pm<5nOoDas+AiLH_(4sSBcR0b*Aiwd{K?J($Ai{ig z2qC}>f$k0`cp79kV1^I^%n;Zg*6;DO-vKj$UMPq#Hxxn$Fhk(G!wH@S*$tQ>ga9){ za(6hv(;&YCW&-_C5Mhoegb-kcNc{m$c4&~@fEhvvFhivO04I1SRr*&g4g030r65vL za0w}blr(cQ3XvNcZ z13M@oUn;4Z0iHK?wmn=pVLS@ieI9&ldmJ z^_0Js_#skwY5pIy_~HK%iyuECgjoDw0-bd*Va_^~5Ssw{hh1Vk4Z536042mGfc{~p z7*B)###sjw=&XYYbJk&m05j|lyTy1KY&T$r5dzGxKkOFcX|Ue`Gl5JK}{cp41$ ztCp7h@f4+m)XskKzpth7IQGLS%C9B;TJ&$mkw709OqdT0Bg8C#{b4H>PlN4d7QhHG z3t)fPipA4lzwv>=1p2^W!hB#DA$SM-!)7d=2HOqqV1(cu><^oYL1n=N~*o?)~;J?8;2!W0$gfK@GP6*z?|F9YRm9}ergy0?g z51X-g8vMWU&I74`?VSe@@W1xbgKfTD-e&OgTMyv7zaHV|*B-$CmG>UN|M|rSQonui zfu4=CrMH8x4L9y$<7ySa?PBTe>EO>TBnr}(y6{T>8DcvR`bu_RNwpX_ZoI<_P0ht|5)~KGUKzs z{@(iEXa2cw|C026tQnt8^7r-ZTEE2qTVAF?!0-S5?KeUE`S*V?5DWzQ+xvfE|NH-c z|1079`yU>V)LbPV@!I+Se?P2#`Lf=!IvKnD|Nqic0LTHP08(n_BkwKH2ZJ@90uVq6O!S5iAa zdL{T+Jv-k~v8To*J|p-gu6m-E0AkuCa@q;M(3Jy<=78#AbE1&99~C)!2IWqZ9q+n? ztx0+O1obf4??gzDREkmUsEE;Y>YhWboLsq366gLB$b&`cpTYEX;oOwZ}xJezn!FNKjCnkbVnOe2Ozo+hS{GCnjJ~Qc{4zyoihcqV!EeD9D=H)JD2JlwI075Er zs8^!7!;XZ6C~Z+_#)e&7CTgXnR)w?dnLzq)sl4WC3Eet4$SR9Xttw;$lF0FFLEJ>WDwc)d6R5cOvjtX>TA$F5x&|tZB<#%`zj3Cc`c9B z+$gMRdORDyHqUpap~k$OoeyMvBlFhDK2wH?tLa(Y+Cp?_L!`h?ZXX}<=R=PgQaQkL z4&=kjIv*4Ju9*x6d8&o#)UI>6jLD4N^zJVl4Wg@E;X*Y;XKs`3#C2rrBwKT8@K~vi*zGQbz-16EbIHD91E;#_rhn&5yjChi3Ts zSTTCt(&4w-qrE)-5W+4!muaVByJT)CEpel+?76ENne9^t-b!sW$_1ljQXPv<709~B zsA%XCi8%!9Vlf;BvNRxy**zVe0NtQHo=4qIn7E8TcX6#9cf0IXh^(}@e!q1BJ>+}B zbt$r>w9+}P@p4+iY`|Qh)a}a`^%(nl8BR7nIM(KXy<~sF$e&Wx^ z$LLm`o-XS%9}rCyKyn$bI^D2iJUw2Bek>i>bfByudBe|B)nGAr)PDj#sqkX-#fQcs z*#;M-N|3|L7hF`m_YaBI2VelCMztJ>>q)@a((8$a%e?tET~{CY)Gh|%vNd<3T)AI- zsC^^bkjP$pf3e|a-%7~!QCc8QmLjEI_Wr`X*_Yh-aIL9`YTaV zXZWI2`T<p)yWIrInO;@Cyx!+GdnVeZn?w^>|*PWQ78q=Uzg)_K~>b031Y zAz3iiXjBb`YCPZILOoPgCr5kfe!!ee9t1md=emr!oq+t}6NBE&bkU34)$6Z&vv>wp zQBmM`Db|>-CXp#$_JLI`u!hBq(c>~3?b*K556_(0|M|)zPVTh#Cz{Iz4E-L}J}6^e z#nxnb`M8#zZaU%9ms+YmvSMqLo9?^*u687-zBfJLt?8-scatIvW^u(|+k>dHSF=iK zpo?;oLr^vB)5Fag-V!Gu+OU|rJJ0c19>gJ<2`t)nErG5qZo&(#9MBT%$J{*iGwQ><_|f6m77NE zUNns!rjqN$WLw@l3Mr!|AFcQI^L3GJlyhGLgn1K%$5C3GR1Hr-@>3)xL7ADy34=JMIwz5A>rsk3W`L)ob0pPlpk&m zIXxH(3UAIwFTF>?kqyH*byn94fzVVhqpn$Jq70@DM2U0x7)X`qReA1sSw63AY__SZ z)tTr~DHfz4Vib+9V=d>8uN`t}K{0NqZz91+pFyM>1xXR{2nE}qLp412QPaa_%u$S~ z_rS!RW03pfgJOr%upe?OJuQcrb*uGLVx_h0iyTFkS&%6s>mO1k>irwuk`%Rs$*XNgw2l%oJQ>}X2 zvmW}v#_C5b3biH5E*WoJHC|ulqfk(pzAWbOi52k-xAs57lO%s z{g8-T^(RI#!l70{!$A|PH&wi8&g)!+$RjP}#2#ulC?si3hD2j+uD#}JKadS45y6630ntcm%mQSF7Vt*Ha6(6w&a|&>uZ+&<@Nfr`Mv%k)jT^5=T}9G`o`QyS z6;(t&hL%Zo7ZY)TYK6MYAm*3V&1F`i5-6MvG)Y2&EqdxC*E6>0 z+%A}b#9oHl0+*nOj>8fA!!a(GX4`<5Z!UEr(}Tpu=OZ1U@cE|0TtSpler3-`A4w^4 z)@k`s-axX5_upn_P7-JAjlUBnoKo83Stl;eTJ3U(ZcT-ie!z0C7?oa+Y|>t+q>6X{ z#F}&exa?3R|6Xl;IGRW(xKN+iW>e4F1b z59VpP+9-wtx+5koQp%n*=b4Ybh$Mv`@GcR9_cGo8N<2v{6!%F{>gl`_Ge;&N7?1h+WfVs%}W& zOpmDZIur#I#G`L2ZD5&!VMJETMs2a1GllsGD23ajXY6q8XSu!LdI=$O{M@%&Dbjjqy5$?j_ zxzW*lW4 zzM&y3<7&E#G>x?QP26dB<7j4HCgLK}=dhHL* z@!unjjLKn{7YUzWo}FqKmIAAum$&VaapXOD@-D_5KnmFF)GN5>G723@78X8SIemA!qc(nNY2kYL zGeG*X%rhjo*BzK{D@ED^x{gxA4qLqcKs5L+$TLXMr{@D>vB64#?uY1_t?`>LOwYxn z?(YHR8N*yk9M^_w%f(E#FYRi&bBw8kZ8>r3edqG3F)O zk?zrZ^I<7R?NCjCpNR9Yf%uVr;t(>aTmAvcjFL#XGFZxI}}Y6MxDkNm z&vKvi&EFzkEL#p+tS?jY8EvRA^&amOZ+PA3yzipC*JZMq2MJyljR7^IWKZifo*I^ly) z*kZGp#jREEPVrmMZhQ2mP{)u4NU}x9U1lFTpz|a!uj|$-ib$>OW+#WI?G z`@1Y|Bx)piMC*6m$kLr1_bY3dose6&D6n|bWOmG_EqufkG@2fKxg%tjwO+eZ%)LI* zcn;!AZT3de;>Lv7nyYMkvrdPpV3J431A!S{c;TQ&!dMTkh~sjXFHBDg%-k{|EBkQS zTh}RJHS;}A8s+|O_hQAxjH`vtb^^3swqVLQF2$VTp`p3Nt&7R00vm*?YbFYH>5;LE zDCY57@4e`jFaJ3LCj2_|?TCr5_(1Mm0|PDl*;g5W{eZpn&==%@O`;;s&@<&NVvx7r zr{cHIpbm6U=g2e(z?n>lrgk}d{ehUL-IeE~S5oI_Cwkv5WUUM>-VA#3ey?8(-Ki-# zj9XQL)J%e)ot&3#hqWh*=^F!94z9pQQ4f;l9$Zlf{xGQk2W+Jd`5sEkMFOv2CQcnP zFRY)-%52@TusV{7(f%L}HuHHxp-dmnL-7jtw-Zr5SBnH@obvxzyZrIV^N;1@iVCMv zpMN-eDuw=v;QjKN^?Og7R?pn1h2MKR%6Xck8S$QyF&xO4sGGw;5w1qct7~9GujWN{ zc$kQpm4RM?+u$PxQ5mkGDBRL^c3mK8{7Tj2)_Rct$AdG?Tw5Opki`B8VTp$pSRpL# z&mG)spX$!ndLrdY*yld&Yk#@dwKg8M`m((^P<|x+@%5SYXCs;N<}yuU(KSu-ek<>u z!0RMu=hW+mN?lq^gs8;FECAByCF-U|UEN$i1^2ed`ptDW-6l;f@Hi9v9>D+lOcpjj6ZiFpDKHYAE7#*y%JnovN9Jm!#;Ci?IC1tf8&CB@F%JdQT73|00{vVz)k-sF3V-QEz9HQ z?vOe4)6J^xQ#X41z*D=?@$Ed)EduQvBj&u+!z~uU4O_Inh4EdP8&4%ozxs(;=|V%* zD)U^ri(Ypw(bm~>gGY|c*jCt_e09HRn0)~UGEwQPXCV*I$PdbtAaXw zxR~I=lQ|rC2x?4hoh?P7PS^!aWH0uyG9tQ+Eggg(!% znJ}t@i^>X$7Q--FG}SvZ96ET^;;e-%(ZZf;x>i4;w1b=>Pxm&`wE7dJv4{3k1J<`T z);}K}9it5yqYhmr*~Ib8?%`I*ks<1(@oOqD?m>yopC~b{i%Y#*{k9T&Tara?(33Iu z1cyz@K0a7HLbRj4A0;BbA>!O+j{(<;*lJhkf(Hjt&qUbPXHgH z5V_W^oPf}wM>MT3$XYk%UkNqly&_SRA##@snI#9ThrT0PBLM`ru96gS!b#*>KM>ty zCmIR)5L(1;N=BqG&wcO$EycMI>Np}yihzBrGl1wVV9%%uBh?YRxns?9lZDdnCxf3H z5l@?YuI+Tl$hiA4P4Z5_>>YE=C@fBWS8-C5b?;)q4)M+97BJup64`shUi0I`(AmRQ zRrO;lLCqi5Uzsd7+*%WU_^<^dqo6nj^^T+Ay zddORcUS#KH5TUGyNwZEXi^(NJp-`hPHZaS)V7q#5b)5O>E2tD*~ti>Hz1b4Yx=d>iRx>QJVd9(DY5VQ+fP@ zy0z?*i=xMbXCSk%fam7EZ)#KC)MYg;&$-FE)VMgg1Wh_yaawUW89S-hpv(f-w)d;Z zLihkQG`%^v=(lpWHzF!XEy(Z3HT**|8+-cp?gcC00zd)+-rh?QC1NA0I=!;J%R}7C z5W)!;U->baB-I>?buu1USs6}G>+QW~YYTzEN*%Gc-pwlRQYI2e9#TQv3b(Me*>1r} zVhKQNZ#RGln8-ogN(~qeO;0B3DK}>^^(;MMSoTh`;z=S4&h2WXeHO5VHKpP!%jxMCdV6hctsoHN$Jml`bJd-y$U_+L zjN9!A%_03-8Y7Y@$DW9lsEPz41R%vI+H(NZLY%*~@2^bKK8vkP@AZP~lRsRp{`$#K zzKQr8{NXKt7|9K#1@M0DAqGK9qDWCeoA#}R{luaqw&b?Qaor%kokI%XBT6^;o`(cn z^u1nko8vp3g#zLLPieZpH?M;I60WdBYVr_zzy&4Y+>XjcaY@a;3_iLt zw}IRMkX~TloYUub$w*``3>S{u1;_^(7zy z@p`TgTi>NHt=^ZG*9Rn%?a3sVC`7o{nl=N^O5@6_8 zl8aKUx+Hn$y?$cyVYY7!6lTj##;bk}<16z(%rP2_zal-y_H)pS#R)Tn6gQJeEg&Me zNyN`$Qx8y7ASd3rngsiC15xVq7bf8gwT>~NOOnKNfr>qeJ851a`hR;Nka-tbgM z005-%71p>%^XouRkm4l3D6yRaPzEz3hI}QEoCgvkkN|Wz8(8t{kcKdPwgh6vx0t^i zey{b$^H{(%l0PPRY0o*F*!?y(Hr~1WH=25w8b7Wnb*#bSzMYI8k37cpZltsn*SVUS z9Usie>D!k}O=$`4Vq$_%z|luW&r(vRJ+H0Bduug!*eE~-rzx%vDUqqMz(`s2nGNo% zL71R+5GIttwm_(`*j${3=G_)SY;F-Yx2PV>jctdp=(6bUyLGxK7K;@rVL<7!pmcRn z3@DW9cGSQCwT~9Hlgh%febwELGBE5Usi{e{;~4kR=!sx?<)zl5x|V{Yqr;Xd%d^Oi z;-+3($9~*2J>`ZA=WjoIAl1?CVpvD^EW$;M+7g zxjo%UN;mof7t3xfCWw3+=K|CZVFxGB8do)>w`131&~hK-f?J8+!J4)w2nwbAeSYNT z?Ifw8JiQFmP^y|(5nP|Pfe9xwUf%7fNNlXF2(|=esQnNp0nXSWl1j>%dmrAeeDb>{ z51WsB20!nTCLLSgCZ=7|1=?tk@9kMS+dKg)Ss^{FCKwsLH3Kws))g&79xSNuK*=Ah zS;t7Kc1~#ae^@YiaH%S;4S0U+ZP%?OGeN|KyK;fm6=yHU!YcX43jKog&+>9m9HFd6 zTz+#l=3f0?-y=tR?n%lTn#OC#3QXVVs`oq|8wj6ydz&&|brOAOG+mPa>X6=yjs0d zxU#acYFG8nfTZ%%xw6k213019GSGdlbCb1lp5ChD%L1N$(xDJ=l~#yGSMZ{X8$EBM z=GYuhZ{8!h&d7oev#R`X$z%zH)BF^za@6G8k1fITE#zKT25U#FvT)CY>Df%PH=7sM zgC;()m{wV@*Nrb6Ik?zz(XMIerEQQyR?Cfq@j({w+l)u^6y4eJ%=_#IG~%j6u!Yz& zDAcJr+~}T*YPr}k^ZNZ4O4NTQoWlJD?Wo{GtJ}BR#>Wo94%heX8%NxH#96avfS7>q zx%>en`AiqDoK?ZX=T6>xe|PTWfR$z}7`eQ5*6E$*Qjw6*;XtctRNI-YjR&s&{+pVs zH!kLvV{&qG%JXsnv!u%+LfCgzkKXk>`g}MqenJrUdE@tR`T+yYGAfI{bJV3e=}eKG zDx}8H8)CD+sfygY+DbWkhJu?3q3+1^!af6mDEXMd)*ITjJ6KH+d~{v5j8cHG6vIm@}$w;$bl9+=wut7t2zQviWyv#IXZMn${9K&+xN=2`>XhSVch-KD_s;KgG)FccMrUfC(I7C zNfKHQ+$*>NcafYpBD9saL0L4gji$JJGx2?hTZi|B&F|wMSkt;|wlD6gcU)ktcA7{g+<^TQ ziRUuC7f@yU`N)ec*hhwS#MuW+z2-{YX9Y3Vsc{9fr-~!_nr)6eXBS|i4A_UOaoPqf ztzC@nw)QO47f$X@-=Cl%VgpXsjzM?M;*+jCd$V=;=@F~mtH ziMGvylD8XPhtMYiCxY4hnq9*O9Hd`dZhG;$`;wkulSP*2>Jl^~MgIB8?9oJV-AEMv_Y;qM7M0K}TgzD`L)O=00T5)dg^0B9X`~t#kd5 zFy|F-=4M4y;VAjo$iOBiQ;;%cirgbBB2K74ScO?)^TnQy`pzr+qS}v|(!Xz-pZ0nH znQQnwKSweUuy*d`rWKP8O&$(883Hk< zN##}*1XdL0>ies2a4ipK1vEG_IhZy~dNrRAG@IC;;AJXKg$cxzPa zP*qT1^ofR!`rsUrqrJA!g2uHCbpoFn_8^G0uR8o0EUL_#_-(yO+?=fU)>RAlz}tp{vvakZm!*rdJ&r&s>HNgrC5 zKPBy1CHnYr`HA?M09(84fVrK|3+#U&Y~t*X$!&m`KNYxbdEzi(ZO15)#{t1Ma^TFB z6J@yj?Rew2Tsux|Gk|E_VTzSnhH|ouElQH4zv@f=o>N0JV)soK%nL;qP9rj3cx+am zsE3T%_x z>Xk8FZ&1!r08gH#0r+V-)xq4YoB>uo-j^r|l zw`!R(u(ja1s($Vu)uQ$6!BLcews0D|L@y0Znq^2Kxs-*lWp?$`tA#w*CZ}3ep_f0j zpWC|^L!L#i+eg~2V0_`|@MtH%Kj4htoG&XzQ0%$Txa=E~vk*HGgFAKt=Q7`}&q0L- z>`vT@6+Kmc@xXm(ejd`XDdZkA{lK)qaqTy@Nh-@zJ@1Va9wR$L;&>KVE|7b^d6l>F zZZT*eFaH%+yp5}Qf93FD-jzm2azz^^5x3Q9%trAB&kKOd%|ys@i(8A^@cVQ@cDYSv zRtamF=n}@@NDXt9hl)VJsu#I6O3+bE59_f!UV8YP?2}enppJD+e&ldZpg~j)%Th@( zRcyPGc?y$EY{7;1r-Fkv05sySR)ZFanE0RyuZ0Z`TL)BUAK;QT(o=mllU7|l-J=x@ z6%rC3JtDSdH}_#3YNpPqNRiW0vi5wq<-{P}DLJd*H!bBuPw(WFI!*62dUvIm_jqK% zf}Nh6i54fN^t|~QsmTj(dM@Yfo!tysER2{NmYW+7xZ)SARC;m0+}LgVQHF;QIW7rOusz~V&90txM-^xi`_Gdpt0f+frBS>K z)KWoc3KOevGZ)bEAr+77-6i8E;w=xQv*PZ)9>bk4EEFzGMM}v_TFgrt0|*xuA>FV7^gNlRHek7~d^lC+ zR{e~#&y)Mje)l30tXu8a(Pu(PCW{)MW1kv|ETKwIT(`Vnc+i5YzS(7e)_rRqGt`Oa zr*a!UEwsGG*>o-XuitOr49QQ9*#Asu#{F&Jw8U!Qi3wb^K1K`KsM1Mw5Nqp(r=%d%Vr-`1H7L$2;zHUb%4h2BGod0Qcyy;2O7FCFDPV?5IPDR zr_`zhQv-77kYa*`!*)UG8e9kxvxN@>DMGEHbp+k3jYWaXH zZ=TyX(%h>{73dfEFsep#r#EwUfU}cr@M?xSeHb$^Bq>4mT?^b#Dld})_XoEEU>C_8sJ2V-WeBaHf@EJZy$du>tnr2)xVvHMyqH2xL$ zCea-|tEIz>E!posca_WElpgD|Gk&Z+M~M!(ugOS0S+%rjyWUZL;PHZk?#ub+)*5WZ`MQ%r=RfDIxJ<8e_VwKK&>jfrpvR*JRR? zsEwo_ru5beO0Zeqes}(+w7y00@YZ>yd<_d9B~_<`R&!5uZ*AVLSJ7Xt+;jG@uTd1u zdOh_~at7u71A88yQK+^)-DP?`t?*j6`ulJi*usmDyY(-s^JLo z7~1%l=vu=}JL0hDe!w28K(VERH`^Y#9y8aP>a7)|)8y!hPpmw4aG%lC_yhCBjS+N~F2&H4-Xldoq>9o6sR0ZM zB8W(lrgQ-zDgq)!T0}%T2uhJEU63MGz;Xk)x4H%QmUI4d?|+{&&myd~zL{C`P5I_s zlg#@m1|-#5H?-JBXMQ$lP+vr1ULAjQqyL?I@GX-f2IkR6p2-6)N5~XcJ2t zq~3oxiO!()!Hd#^evfCKQ%+ECxw=@v_29my2*V0o$5ha+>|9#GXpP+SSA$?&dGL|!ISnHaftU&mnN z5cDF{_{8D8?#C?Z-oVH$olmp4@kJ+c=rD8`oy2>g!of~ZUPndJ_Ch+cN#(_pR##ol zRv-Gl#J;}1fk4`xlSIzG6)R6fSjgtpP&q!;k!tftLsCS~C!geMd0J!C6x)8praRIX zSY?VD@&%srA9m`zW3tfn?|Hp7z`eSfZCV`Fb=;}J1}cf(5ExD3OwWc{!daqnH{6Tw z#`);Cgd359CXur1hh92bn=)9NhM29CT`nv=%vFtwsUZn40InuF=Hv z2CQ+`CC=+(B6!dGSShp8T1r0AYL9;Y0&U8tH(iutXk&DqqNboLIZz^2%T|-~c(?$0 zH-mR=f_mZeQ=E>xZrMFja>b7#1=<-4Y3nORn%}>E0FN}5LaYx6&-*q%d^@}P#p&^y zPTTD+L_hw_VAW+xp*ITTbC}2T`-1Cp9v?6^R+;8G@Nn?qA>D#Pcn$A-r@mS~X6Bsa zOnv<70=2Ufv^wu}4Cz~F*<(J+EW-jh-Ktg|mEOAWqrQGQYXiv&vCm^VC-Tba^@lt} z)Xq}GFUX3@n(~FmPj}DhhJL895*CKu={DyJV&FW#BI}g8YHN*Bz;CK>Zx%Lsrj`0; zUhtaf{g3GKaPromO1^;Pqrh6e)*Z~7#g#kEB+Q+MO%$igr%^^{U){sp!;VU_Rq)*5 z!!G+b6tyI4PUo5Q)X_k#-|%TXEJ%!#G+xN`>QP5AvpA7^w^O8fV!TU6pXo?B+<$gp z<$C%GXyxVFQcEWCK+7y_di>tt;@k&mC#FJ_=Q|S``Bljmj3=HQ>|LEz%1u()kU1`M|CN@jRx|2ea`74S<{eQ~tQUZ#nr+Pv7dv zww#$M;Z6@nlLq9pgCMH!czFe*=2Y9G_Nz{PmHWLq`Ab|Psv~6l);<&?Sr|W)OL^!e zYQ7ArEXi4T@^IgbB^keMAmvJLcE_r-K~v#C>ru_mJhQSllf5rNxu|4>1H7z=wWIx& z<%z-6kd~4~_t0v65Bu?!7tc)FhkW*bG_Qjc$uq5u4yB8xJEs*_(c=T*;l%baC>xcS zpc=$wtCkBUXibLqBh@xcO2?W~2b|zzCdi&UD&UdTWXPq3`8wi-g{jxZ)|oa|amq|8 z+zwE*DV0EIpNM=c-ewX%xTOV^T4$+V7lIy5>|z)vF)%#@({4?YV$_t)LR9!u)G zBw|Ewi|&W=1zV?Z3EJQ<)BuyJ&F|Mbf34n z1lMA?Q!vr!Vk^aq_Vf}jT^d%*S}L62p1m|b)A?-Lz1)|)P{OKF$XlY`TV>ew_#VP4 zBIbJ82e&8j=GPtOM$0WT5e{On2Mq}f+Xzql4Tdye)n-CgKO5AJe{k zIi2Dt2UnUQ^MvX#CvG*3aFUeie4l{z31xz9{Xx6D9Yo z9=~$Mk5fM^dJW8#jqXYFn#4B`( z3{chAZ_8JKM&gI3qvgZX3u;xMJS6gw={zJpM0+YmoKLsiBJ#;!;oA7Ns!u)A2a9S+ zzMgcp^v)eWY2TB+%kO;_x}W-d6tsk|Ez5l9@B3JIceavlT?+H*!N8#3#!pO=n}L5N zP}E~S&0{vc-oe8Sudlu%T@%J7n^t!M2CQ-`EMDr@o7dM1& zo6sKbf}d4$b^WRFgD7A0%8 z-44Chy!sOV*qwxAMe}$4iEEv{b-K>eIc2EzyjKOI<@yogMF&<~BUSPfJL|k>U`ZEF z;&tfoB#Aj@WY9flcMY-)ZV}HZTZWOKjDXXwZJaNS*(5Xa#e()TIV`VOE}?GqJ`qdh z@TFbYJFYxXWK7#!!_VPb>{~ab1=BiKdgdma#3q}B$S`MX{5>w8=W+z#ZBk2dw@jMX9*Ss7)*lzoyP z&|Ub~_V6Czy}MG6**GJ?4U0eSg4S9Z?sE7p7*NUjDk!Ltri|2*P$$ylLb=LTC#Q09 z%5$BavzC1;Tq~PDOc#5?7K~g2($%H!afB7d@aP7r?mNN6UudY(cKiOYgx#qdE|P58 zv5aqv=34SS0hS}SMr$qfhnl;FW|C%viqK~Ac}Sy3R#7Vp7xg`9+8;2G?!muA#cXd&Kg^UrrAbTy zTdZ~G6HN_{1y!YRrwbg>YWoBLK370FUE|LW*fp)sQOUXW1Vi>_0Dc7epaIZZ0Wm26 zGJfp!r^=p>s0&vYg+7meIWqf&rRLd(%IJ^!zF$5neW^&kUg`9F{o%m153=iOexEJu z#%#ajvNx`;%qH24MAEo?&RQ{W^c5Q9oy5K`y}>-oymhy9YoO=G-aqn|uXJPaJgy}m|{D)TCPrqf%QGZi*DT{FuC zTIymJ*U0y{E*^)Gie2hE*JoPXH!>(&3a)uu0A4_$zo_|sY=Q0=?s+*tD!3fs*1*|g($v!;B`J&FS*a#GLZOP~R`B2UV^>WQ2s z2T$cnJKnM_{r0^3y^ixPET;a$=X%o@)(t7vGs z2v^Wm@A#JUirH>oGmo`W63a zb?($LWL;e7+;F9+C+?SSs)KUkimWq}(;MsQy!AYpe{*+s9p_>*I1ahio02%(*c&PD zh|8IIa=Imxk-*fDS={AP-ygPeqZn(auv={+^VQJZGQ|PSlJv@h^ZN!q(G5gs9l2HN zI-=L&;XeMFZ*4%3{J8I#GD)MQLWY{-zE)<8_f}^UXBGU=T&)5f!VCj4e_W+6t$x>Dv}sG1B#paHpj5^)a-t zx+Spr#$$!}?z3w<*rwdAJH%gH0X-CwM_02t?weaH!KZOq6iHdg5XTnR#b?A=^Fi1{ z=$I6%owg1G9wiXb;mUSks=`Inhl7hAwP0FGZzbNf(sJQgg;d3=qwzp&7;iz#W#RsT znBq<~D}oOdCxqXG<`;_iH05^`_GFLdymRTi#^^Zu?(N8Xo}5fg$w0|?|KLDl9&7G| zg#$MFU5X)@E;G+3lw3<{PE%TH){3Mo^jwYT%NyBSG0|ypHt~8(@~<6LB1-J z=#i7-Sdrs^J2Fqr@KD+wHonl&k}@aB_;H~(jpZ$*(a58`7*aq;7aSjWCs> zp0XTHgcG(Z(%?7hM(XGz=`@h~=^|A4PlRdjTuQvsC6P^|v>e@jN3%KETDTy4BCyl% zbK;qf?jGHBF8+u28>ghAye8dofb^vF`{t6q1&NN5PR8?Zb6QS}55!jfYqTeRNQ2pE z{f#p^BvSv6yWoY+?9yzHr55w*tiVUH@ZyUwCA>hVlIe-Lfk&iOF^}9^VT*Vw6pH?A zL@n}}N6kr2@N$|s8V)P5MOK6@Bmltbhvn8}P2aMC>me8vQ8~LlW=Jf@n1r0*gG`uf zC5zL|@F7UOLazB9kx`T`LmO)o8yn~G2u`=hm@|UVGkQE%17lub4P=_fWj+det*bSy zys2Q3mU*Ue{^Z#yuRuxe{1Vcf=e|oFp(AMr!|=7ilFlhvghEWU)HFiT`kt0v@ourl z^=my*r^Emyg7MG{GFu-G4z83d{>uyT4Yo$i?cJhCSBcr0zTRP;{Be3z(kjUJtopee z;b8cqK<=LXrl3cP#}r;s&}ptdD}BunlvB0NxD+rO;LVlOb2v=&r0FcYZQb_436R~r zAu~Iv(H`vaPvYaDW?eO}XHjQ;Y%7c;?R*}#ON(`^I~BQ?_^-c#wyAKOlVs^<=|ULz zvQ1XgMe5#qv?g$O(HA*+cF~|>ty0Mpse?GTiU$6j0c^ba8^HCr*F^)J4!)mGvP~Sh z@O)wobyCo@MZ>1ate6Qc~D30YW({JTi>Oz z1>2D)Yq}p%Obo+s9floqq%4oO545c$ik|>35YZQeKW?IOpF+i}XN+kk2g#I6uPodz z?2&T2wr(p^YT4*;|8cXclku8~JJO910sNc8o{xnqOLpqmk zRjwJtNv|i*Cf|>*_U(=NoPb{S|9D}^?@&lOl7ss!;v6*iNF(Gu$d0WPEE@B!vgNAa z643IAkp$H=;vn#i2~M6jQ~e{m%e_7m%Y={`yB61 z-xc27jG&L+50DK?e(3@(c#N70t_p!!#hXv4MrN4>6usfC^5;?monf{;6GE$!7z-Yy zVCrm3$FRH&yvG~l0}mXbnDZ}_nZqtVP)03wod-2DJmssgvB*;RWG;>N`Xn20>uJh9 zyrqxWy{jMt010}#Zf;Id?BRcv?C8bI3i~Qob8|_+%V)<3Q@jDcR>EwW04nA5NN#d- zPyZ-@t}TCTLWtllgjPTP!W;o$j3)q*10UhDZrsCv%?r@p4?<{D8Q2hjVzI_u8QEvn z0+dyp#lT&JYDD3YkNpk#xVZKCf|s7Ql42uR>Z^~y8L=O<-?Cqr2hV|vAv2GB(5>VM z(@)xK*k00Ls3}yhgeduwk8K$VxB`?%i}q{{diW0fngCn9NX5pbeVEnTU;Q$|UiJ#A z18)d2lxTxBCjnQJfa4ex@SxDO&sz2uE}c!G@E-%cD@|cOoe&!WOonN+eYU4+#I*3Lmh^929#A$;GRqHe%Q1p#$xQl7LJ=j-$kjURT1SxcU_1 za^{3{!K{Y>)2uz+gAS9P2pc))NLRdo02_m#v)YtVrCjFt7xZguU3qC58rE4)%ay){ ztN|;O?(67x5O`%4SdmIGm_&%XDi;bRUPiyee7YzblXuG zt}lUwB*179JggO@V9x~P9VnMf**S=OLH;B{1g|554+vomL!Ti?)25?FXWhWhW}9VD z&3Uvp&`JK)9=SFq;bxu}-i`VS&LaD(2CWDc;t0^%1VHX&(4MDXiuEfC2rBuN=7Y#{ z>*;Gjfz(G+B>hh{;$gLEA^2uTTWZxn_n;RwC;ZyDwD}LZBMyY0H3WG8#)hPA(3cR; zeJyoh@@JX1CxM3onSc~JA@g<#ODRd)ps#J)T#(^qU;&)954_+nz64l-R-%as5JnWi z>>|R4~l5;E3Qa<#emNGAbY8E^T9)z^|SF>U1$ZkXkfkp@bD?)_j z5CP}|+bZS9E8Yrk$-Di-h3LsXvmSx(eFqr^n_&<8zoa0F55;0>Ap_(|U!uKz4IbII zBw=OVA-sT3tlpCZl8W(FB+8M&)F?5c@Th9JMs|5M&}%R>xJofyhYg`kJ*d)3;YkZd zvXbAeqCS{=8L=OfWqD*u;V4=P-3%>@p!@tR2VxFgM~o3D$1H0g=0`wvc%on-29Ps! zoeD~ALYzgA(jHDhreL8;Ld&hKtDVh3psgQBpsmY3sJ#z8!u4v5&@ic$i97{<09_q4 z!HAtxC^@(|h8y-m_`3Mg-Pd0=_XDntkc;SKge>6kQZk%bhX5Gy1YwyMmN`v8r|lTn z8HqS8aVe|2_wx zQTPO>Kmc1@bi#?w8k;tTM(l}YndUiqFe+1j9^A8b%3O>YZDE(i1U&6_mO)H{H4sub z+nYv0#l``A2$7dLS)&PkXZqxFua6l^Vg0spQ927s~;Ph2wHkEwSEnlt|)+DNkLUG(^O~i^LTTUU@Qeb zg)^;x9MjBuXJG-ejCbxVYzpE2wdDP)jJR%OP_P18dY+nQmaeOcP6qZ+??oI&uT^H^ z&4lw|`SGCTXgno)VtI~H5P}CTGl)VkovVyf3`jta;NL=@1#xxMQaq(o=%!SuB^!x~ zV@!eL4eF#Y$mU9+2T1@oaKAgqnR^eY2-{1vOoI2xQ~dm-QEWJi(Oz)fgy@ll%dJ5k zmnT@JRqY{I#0THOvj`7RBL%C>)q+H}bbeXDkOC0J4L@eUn%cy0kGv9^k1$1>0fg}L z1Unyosx3q~XpD=(O`(0z9vzAur)X;=2VSEiv2OOgB(6^6Xm>Dac3S$0aa|QY0`Bz# zQrMSdz!}IDM)dp7fH2tU*)z{|Y!)#>mkk<>&{b4;GCV?9sZCdVsai20aT%`@JVJ=p zrpH5C@Ps!B^ZzB!(nXAwZn8oJOZZ3xeCqI`%?m-oNcMbOR-c11%~U)7GGVNH2j{ z>^uB>*yXfA9h~*U&6g=$c^}>cX^fp{!yXU-r!drlIT5nC+=S*TeUuggpm0byjnn;G zF@SXv`hYggJ8&@x9(slm)I`%oI4FXLj(hq<2V~BHZIlxZBmw6J6T=xxu`>bTDvcCV z{!s`ex!swFmSL zH$O0=%?91UzI5n4Ps0gsVr_L+o?S=7Mw{ zNIk9UD?e2x&D=RaJ|3%v{_+8bMncKU`hW?7^wDx}^m4i?J)VdRP$=plGmUN&jv!LG zo3$V9h=?DW@tBtSC zXh@pE2kr+q;1jTO>PL{zn43UaiD7$y)A$9T!SL{?Z~|o}ATkw7jY2Od6FVP~CuXDg z@~k&PlNKtBoj(0~{V)p7Cq`S2#=v zF8&w(SC|k?=)e50|B3J?i@5edp|2hqL|~F4!a^Hd>++{8&ssZL$*6C1g$>H>V=hi^ z&O)r}xVV3KiVzZ!5EcK^=gxO-Ahw*N{ow}Uk7%shCi~{o=tq}o-&|AtL5nW|lZ5{* zcRc*Bsop!tlRM^#fD=uhad+&;OMJetR!+UrFG9DTMt*`~SVe`dumk z+m#ZqZGAcX;rjPiLgBwK?tkaVad)i;-=*U4T`3OV);-4`Zj^o{{MmEb_g)@%sf6&Z zl-S-K-XDGlekJ_gY1y|?{G+47Z=)Ett5FQ!T|W@nWfh9-stQGZHBdLbnMmv)+;YRU zqidC2Y9YESEku7cQem6M2)3g&+G=%??V3<{cTFg^OXbCOrM%d$Mk{P{piAx~-SVC+ zyn`O%yVOH`S9*y5YQVy_Y|@TuZuS6}=nu0!?C)p$t+xN&+5X3g;hUX+@5)Yy?5>kZ z?6PqrcGWl%znsvwx}exj;?0(Y@8ruza+iuo?n)8KUz&=nBOgRtG9K^Xj3!yCTkiC$zU@z(6Sqb|F}gs|O#!mT-NM@+wIs^B}B zD)`nUB(z;yitn;5cMIrXyF+xaU!r&TmiIc*oy1!fPI4z*b_?rZyTf%`)A~*$TzJc0 z>Q2^5c*{J%e!v9qzsCeyv-|I2f*&1Nf3q7RyRsV+yX^`)$o(JBl|4fXGfufAHPnJoxT#9{iW9egIQ{NIbW{0?us!U)^t5+i)KNDsa{qzC`yD&tpw`#ZgB|J4QlUv=3n(u3~~ z>A`=w()iV@{f?^s;Dr9$7#IJ+Bk~W<>31{6ceyAC-z{i_?+!G=f4MHWon!g$#hZ1u zqmOU+Zb2h_cc2me%ca5XT)TfS-b^gE?b0A@murK_7CRT7rsKs06^$Xt9Eq|H5HL+a<+`Zu`I9#a2f#J#HAp^i;TqAqa@ZSP`P=HIrCVS zm%`G~c(VQ8*Y-OoyaZbxaasiYaw%2-zf`r=mz6qd0riIQYHNW4QB@pzsfTHR&k<@> zG{n&=y%a;b*C*kgaD|VQ$difej}&Dg`5bzb8A~sDELu6xvGozE3 z!px_EPQM4Gg?9vHI!Y5qi~7fXo7WSUWv*LxEz8{MUnwu&Jln;k3dd{r#M?8zQYj;& zCvMr_Ox7?m`A|02M$mQO=`F*9lH_;TvJ2f6sw6B@4jQg__keh-;@!>2B^8%A8eKLbx)p|` zYb%!E&NvKv2jn8hBsb(CqPQC>tdYv>$ZJiDxU3#_xo?yuw8V@LyI$&0zO=H*WZStx zA%_~+WQm*g_1z>)$BD|{t%3VjDk?T3t!?tmp{6#4vk$fya2+B|pRBl=dYs*Rkt6B) z-cqs(cPV!%(*-`UzOdD<>C0WG$UDU_<>7Cna(bL@ITZGc^*9u+7WOz);Le?HS;aa} z7rssmKHzwOFaL>^B;QRb)0iQ6r*$dI&38qXg{;#}aOLVNLQhF?hsr_H%@b_yr#n8HaYdG^X>x!vz&5M@5f7SZ=sPYhrV5INjDrPeRsJf-S9*AW7^57 zHr&m>q%|?Z!*p zr+bPVtD|~~&N@6w?dbbXk3SWwW4ruAW&c_GDkkGPgl|j#dV3>Yq{2>>lY00*r(Nbv z++m?|bMquF(q`)f8oznpF8I3$_Y2#U-0tOb-plu6kp&LWXCUjGb6 z@0VdXU+6^xYq<6-hc}_PV>5#q0a08A5$e_KUb%17A3ej}vPrX%A@*q-et4Iz<&kqT z1=F8o~6djPlBv;}cFeQOh>IH?bO9E;5H)8a} z>A>4wpHQ=N39QF`I>1Obl4e4yU1C~!#p(?A(qE~zfYFC4>FDd2r=*h3SeM57c+5WE z?^2h^Z)7ZV#{5}K-BtcV`hupy1|57lBq5lZ7jy3l7KvmJKpKILBecUAvOM@SQROe> zXjw1w#c-+Vq;aa8nh#^S{*CI(njGsyz>w66o{fR(^t0^jt4H|_3tn~v0# z?=ZH$X~}=>RJ?<6q0MG^iP($BD@Ut;kvlDyN{Ln9cr%=NQefl25Pyrbv9T#;BYhS7Mo7DY3lWM&@s}GL>mI`G_kYd()uq!-`DY#S z&5_5!1W0}S5DX>)ghXBfA+?ox^TI7b2nMk~V>Z5qQPJWnDk^PedGY&<6&s)0*jRPP zi&3alt)uNZl%(v8JGLBrzG77kj4NrlG3@-JK~mJYb8kYNE<7UepmHQGR7FMx26Eis z*^YvQcE z#uMoCsP4mJ;&Bq|Ov84=qkITpA`(Hj&Bkb|Z>OdOy&aEgK|P?$*=RfFV$yT*A9 z4|NSq8XkI4nr$w9>v5w0boLw;{00C`qajb1PJH!>`p2RBlgq__bgX?*I3gdm*8+Eh zvbQ@wr2XG@oO>P{r&aL8e8X?t9)gSi(h0=x!Gn>P<&|gEs$Z76#U-dUG^lHGG(3Sx z#Kzvz~i56?wBSQ(nA)i zM{DAg*pNu)5c!ahR9t>D=fl`shSk}_F_>Z{Hl<@XaA&272d|hEzsDui-}pcp5T$cx zVQ{4~8&@9MCm>SALxQ;*pi8UoCC@{0x1>!Xu;H2zu7H>~w1ISt8@ZZnoc$$h&3;_9 zq*boX4xzgWpj3Iv)#a zU!M5jn}4h--LF;uI!VMEU1{E9fy$pi-g~C^prX$cr2FXbCV+=B7I=JUAM3t7tQnR5 zX%OHBfQ0)oQ4XI}plgLaenlQ0zJ4<^YrQPR4Dku$;^oMBOvTiUZ_D$w3zf4K$y!A{ zCmm*|n_Z{l<2U?~eez$1bg`H>HjYb{PdT++tIbQaY`$to8g-|UKdb&?nJ$jL*pK^Tt9 z9qW%r+Su%Rs~@w9MBYV}G#kaoqWYKdi70JsTod}24C*oWPxLjrG&Yv@ujH~KE(r@K zjICfQkjOLrpJOE#Up0=sn{|yLo zRV-(v2-V*=YyW?-7K$AE9zV!fEV`S}7hf5RYBrsf^gum4@oN=UToWD&3#^pCBcf#e zyC%e36EBjiv9T=;dX_t@PXsXvbwP8u(qROV`^}}%L_vGd2HsLgnQ(N|4d1K zuljaq`$vwQlJ{MjU4;cad~bHlEH{mx)M%bcXm(B3n8a*6VzHzpGsjlk7M1YWRv^A1 z(`D+`*jb-{M`<5_#08&^TVcaP93~5c`}h{}korg+{gcTzkaYSR?m6|po0*UEZg}Xt z8n+Rzqc${u#L!m060MjcWyFhjMNuBW0UnWzVk9;=Kis&7u}I!-n^|oX3-Yq{(q| zLmFdB%3m2Y;F@dl$76b>Bx%V2*I{t4(FWyaD;vk`hJ%PDT;IZ-8K8C?s^5pP6{K1J zjdGrIYTat-IIExiQ1qUq#)g&+dFGKDxP|V8<_iVT)Jo7TPq4~-H3Gpjq=`gcw@01AEgJY zs@qc-a)%>UrL1GABnCaldX=qt4iHXgY#dwfAF$%0qPlWXNI8=95_|EXbBgNzMyh+z zjt{Sm9~i!N&cZmbG4G{3j99p?_ZWlS&|m zwQih%zGLG#;ZS7aP}qB}u*bb`(>ta&W}_2%z8|io@HEqN?@UxFsWtf^p^u07AbW(c z(tO>$(y-@bYGJupXXfk09r(sS7?#ZPZaxEv#ic>iZEx6aPK;p*mKl~*At&Tn|DRj$UVTNf!iA3Mf1#^Yz< zXA$e-!Q-JhXu3G%7zvJ)>I+*LQh* zw1QXe^sCKYFF#)OS?|tcRJK*U5j-ZIA9k|-0@GZq%6r|($HAZTjQCO8Iq6a(#JZ<_VEIAsk@sg;$R4d<-YRvwgZGwB zKU9FAWVxUkuFugo@L3X)UaS?I<>0;3Vi0W_Ydx=saSyWUX6SY|d;3D_cvEVYp}z`y z0M9f;A@#}m+EhM1_es;>O9~%QIaBmcF1;BlXSq!iw?OCEY)%g%+(Sx8n_hxAqDF94 ztqNy#d?zHdpf3;KgEl_uX~u#TSs7BfDFw3tf(S*hFuFhqOe!=Cn1oQ1Wc!DTpU%3B zkeAbcRD;&3CPHXKxloK9BJ(X=YcLfzH#eV-qPVIi z1)!~Mcw5p-!iCtMmxP3qo|fJ!GUayE9vW6UAx;{6I7oF5i84C8TWD|(xgcL&fUy7L zTO6Q>AQFPmy#xaO7h}^WT=rW>lexd-Cvs3JP0_z2A=R7^s?NzUS ztjvH;zzVFc1e(|fKMx2i_!EuYst)T`Q{{enEjlZ^;dm1Nvx%DtE-Qz%7|h!)vNp(9 z#hmacN#LTlu4r);cSxF(DN5)m_7c>L={nF}QC{1k03YQ+=N4AYSH%QUCo~?sf$3L^ zNs{T2Uu!LlGCL*6gDhe!dq&~joM~pICrl*-A8~Hn6Q)-&v;JzT=ye;S&eyYcZAmnA z&v-+#+f$Tx-3Scqtbhi(7V$2<<@O5)P{^LJlG$k|+$6pI>O2$H@+lDaw)SN>C~dq)xN2%3zYNn^jn;W-g;7QS+mN%bd?P#7t|}MMXm@WKRPo z@#E;ZZq>VR=gG;*VLl;1uk`lm#gkaP;zZ+xjougG#=mG!&Z!rVOfV3zev}hd@|1y? zm;vu-tHA2(?9=a`mj*(6i5vSHLQw@GM&$bdL@q{N6winWz%RrV4vTl%1S&wFcr z?vC6?XHtvc(w@HjUZn~`x1G!)Kep+{&=zoC;)e`tq|1``)f(SrsvvI&@KFA|Un*RV zSF>?EKjBTAt;{z+G1h5KG<{J4qOZm^yu9?QZgmex(V9|=b)BD|o z{xbsw`QVnB2YzMdMK_U!=`0!;cpxduagbKWBEB0cO(4S|&6OtgWPZ}@+_O$b)p6kc z6ph$k25Y5#C|6+$6}B?M^K#r2vMAe-PDhg_?*SEprPxP$lY(q3Pp2p@K8@q2)S0K? z^C4!OFI<7I^WMNaMX3`|n+AH^+k0gc-XP=u7D_FT;CaKLGRy3f7HMZ$a(N~C7)i!W z7Z4Cq!~22BH6dCApt~7;sD3s>&pj(!A~KL*^6gQ&yVOIs z84tR$p}9nZ;L4b^NEcO?#BN_`Ael2UQ36f38x0?iUAqa5F^?CxDtpm?0`fXo{|h^Z z-YTV%-UlM~?16^oQA61z?=|S;4BTHI6>M9OkU8K)bDbZi$AA)-BDM0HkBq??0m_t^ z9$qb}!tBDnag}Mt(jMq6nMnBvFP2uY%07PyKFR5e> z0Cx^2eR6+4fx}1dwzmxsSO1#BTc>z`;HttN$KoD`Vw{1P-T+)vcLI@(8;|i*USm){<&(LjB0J&+E6I>~i~_6uTh+%pSw_zWU7^qj9Afp8G>67LfSfj&p(ZGs zB_OBMI8}bJ0Kn?A9?u(6u4CPJ5NRmaQ*u57JFm_*W&2_FaPaUH0Gf>-wYaz8&;Fe` z+9y~7vx=34hGUyN9@2&69p??X>)#uL$U9hv^l%26OkSArCYAwY{bORUd+d($#xTLF zXcm%`nhFV)_7-Pb4C|PV5x0ctjOCf6Mf-8N zyQYt6$G*H#NNXKh*!EguEHiU@If>&bP5F#j6iW4kMqJ|3;Cl6d_sEOTLhX%_n9pXPJKag_hJB?wzVMXj35z z7k)|d@SGkC82?844H9fazOoZ~CS+Mir7b+YRF?Tn(mqF|)Xj}A6+TWxv#q4Fs`OXN z&eow+nTv zv`oPva606;5jGs!nABd{zb;iK)#TcqC{vn0{k+Ja3j|!GnkpAV@CG9}BZjPdm{> zbg=_Tr`Jf1)Rgi^dj+9K$ULYu+yZ7@BB}cqM7!;>$B(w2Hoe6khIlvpJm#XI?V-d- z1=7R}d~^2w*fc!RRF^n8c))GeV8J&8mq``F=Nkz4x-hmzw~r|X1YARML9-MNAQdeI zC49O!-k&u3P}l`G z^;TQ*-{9x(pRvPWPS})Jx%z0)-mL0z#$Ymv`1AH9kiUteEw9U-nx4w-kJ+18XDfvT z`lceYm_bjuN~X%YZ!KZLSkMw^eqZ@)OZ)l19ZX=ynVE%zt%m9w_e+-lAjc;?@2*0A zD1d?+eHzUZ|0?ZNywW}PZZ8*n(wIn^Oa5~4@(~nK*Zh$9sih5X;lhWJB84~Eg)-4; zJcNcQysYDUg@H>q!u<=AK6ugGEs}mE-N)0zFi2i3JsNLsPx@w-sGp{&B2wY?9w9t7 zucO3e{*U{_C6kCbpYhst_juXNN-Y&RmSdBEg+bz6;{I#T7>aUEt(m_JsIfALOV zQN1nP*Ld^Fi7(j=jhbI(Vk@4YtSCLBs_S7kf-0WLw9)cNwEl!F9|K%s5> zwTtR-+4l*0mgf^mtE94VhPMS)Xqs8LzePQp4woC!ASM>Me1m`9Wr3zhtzXdoA_etn zWtDW1RHvxexWvb1@Be9`n4zuVQU5K}e+%{BLjC_%C^Cv%V-+OQOYpjw>=iAMN+mjf z?;CVfl(i{qhX)C1pEK%@HWZy8Ph=F};|maZcDOv=xy_Evj)z0_s0uZk_O;8enTF$O z>m#|8D5u)hdW%oRzp%Kh1uM3?*a6o)_IcZ z^++WDa7>VR^)ip>!7||+7)Ap8c6%DHzi#G{Sk&&a69+@Sp zr_!ZScZyYN;?4Q3QZ-T(m9x*M(($HS;#-fjGLgLn6WtX_(M7VRYS8Y{@72gMql7{U zV&P6gwWsCijB11#ZRtDmlKt89o*GI5Z(i9l7(vG)on@zXt%t zk|O}9u*d0Y(R5GCh4P}99^21a?-Cz_2O({Qpiav*)O2D0^S2V<4;1yFFG3J!7D|dX z&>|oWTtGm~rO;l$JOoI_SG_Zr{2omAkvm$e*qz0B{d&R-zSbJ(9b_5!Wc!Rddrlf8 zn-8JlP5uOU10Pvgmcd`JEVJ7|$2rxts$^fP-f4pf;hjRU~X5C{684(=sJ z3qit3K@*^l;9iPI4!!qi3z{zQTpCiAl_G@@SOb!{qcs6vCKz0V zrP4a!adj1qWjVEgzF@d+@d1!kj@HU0UPSu=Tv*~|&|%OzMXvt@@hU>aVNKUDb zI(rE?4_-k}fIit;sR{rne_6y4+)IB^8HXN{PHTo83BywKDq?&PvaF=w6i#3e(gm8q zHI=6##uLMvY{(4aO#);hc#{yT%_-5ESZ`eUJ^-G;JNy|44mLs%Ecyid&__-^9Rt4L zbXiVA%HXFhf+oOd;w8Wrp>+iU$Wlh*{&nGx>gX>5GX6Tqlb;1fLYz}sPlN+d;Qxj2 z_rL$Pb3AWtFDAmj@jGxeO?7@bxE#Ob#s-FeOa%Jt-+#kkqGEsL|AdPOiT?NZ-~WlQ z4gcr2-M9+&xZ1IH(QvY|mXWi!hvWWOHLM++T)Z}KZEa)ufh3ewOHcEZgY};my4LpA zr(CUNgau$i0z&-4aB%@^dvO6z39*x6A~^YRYZq5LCr26fgD_S-4Q*Ea({8Lkw;sBCokjoU|0IoR2IX}URBSi8uGZQR*V z-2Uqg3GqMg$OwrEif&%&ows&&wsW+V5&CJ*^Y1XCe%+zOy;a?Mc2?G#*F3D>SVm!D z;^N|P*tR?2V5};RmblilbH~N|b1&sjyr?2Vl7C75-L|{G=R^H*i<;fp!>Fa&-R!ha?S`X>AfN5Ib{tpBk6 z#eT0=#D1q%ekAhvvHT*xkZrL?Y;PO3m=%P#Hx64=1)|$)D*k(#ivNzLKhhceSSE>I z$hP*-Z*Ls7_LmE9ZydHZY>SHi-2NiJ*ZvZ}S1S^~Q!CpOB7aAAwu5Yol5l(Du*EDU zvb}NG;uZUzLE#?|r|zJs^GaZi26JSDmV{QF(}_j>?v3jyu`0Y!c#+_HJw zn~9y+nZDy@65R#|iv4C!_)Q=P`z<861%qHaG?~P&gj+^(dt0%^B_y)Ft=M7`65AdQ z!hRDE!hQ=7ZbudVtz7V53Ae1@_6B2%ZAWB#gR#Z6Beo4D6#vbh@SC6z_FJg%E92@8 zO(ym$;ZJn4-wU_Q<@N?+8@`!;K-0RDy1xYtzvo*2sa#tuF*^yrV`TkVxMc!&cy0U@ zBg;P|WPxqVv+@%k3v7FumA}%lNbEqe@)tIi4KkJ;I97gSW7&+j1I5Y@WGuLd+cT_u z&%^Q$2v%VKoB37#mG$3$N(AyZ{2$`NB7f!ofD6OL{=5GBp9tUhKg3@?TLqQ(UU>E8 z^FsIP^DoPvX9s{UU%t%YbRh!p0iuH+%#mhm*S+z>fmAuwyBbS3QuRfn512c|0f4i- z9D)?AH`EFM#g2;`89Pq^ApdvZ8*{u)aRG!~DYS&lE%^V3z4riUD%t+WZwMrS^d_AE zp^6xK*MNY84icn^p-S()xS@!EfDi=f0#YL)(u=r3il8*<(iQ1dvDbeH&DlacD=DtSSjS$R4 z=&?ot0EsOoQPS2HL5DBAx@vF^Uyu*MN;)~`JAv|{Poq_izZ8r?0_?UVMW}qZv$Qmw zQ=-TdXBELbHL8RmCs0X3%!zB71uI!02JcG%+6{na9tfm7=7mkZ8jHOFFT(NMkCaJ{ zW`paXgkzg25fl{5l!sP)kA8e62~ZnjJ44XJ&mZ3S)CfPZkV0A%t-pI$jm{X(+XUxD zQATSS#?gw9Yr#L9x#aRO@%^%jb@QhO?lQydt0e(_&Vhm6ttVM}lUFXed+21@KWugy z;ggOi6?VEmAs&cxmuy~j(w)VPLl$1AX9?-c4p^x7k4+qWD-~9_UIBfygE1)^XQhqt%W`gVr{X6CN=|=lckRK zYq^T0`q#&$B$Aq!>~bT!;nzxCD|&lI75(*dGgI+?d)#dLI()^cG9g6fI25EW%CXBT zOOzp@E#0yjwMYX5PIQ=cky@&_G0hG$jH*c!#*lg z#4B9^FKPlCeO|L$thH1e%Ib&3fDVVA%CM?S+FESv@(%afoPGRY+S&Djka?2ZxRjy{ zJhi2zC^Id-w&L>8^-QzA$r+pp+HeMAf-VtZT>&e0UrVp**nkLReM#GwTACP(l3r7^pp;1Mk_lNOv-cLY|) zdXy-oT}zXPM9vv2rF|h!nLDOY=C;&TX9he-gE28_rv`ewLK&MsY?jkpRg}|QcT1PE zk8YFpNNs7BbJ0MS4b9xg6_txG2cF(YEkL3IMYVBTCTRjFCQ5X_xJxQwGooc$AvE#u1R(mrdc5)cOWgkOcLfk;w%Edlif$*p zP&Ku9braF#$~E)AJK@Q@$5XBCR~m=b9J;-QkQYUdxK69R>*0EoE9pDqTMyaxChBX; z&4KV29xC+8{L>je4^|I4(v_8p)0mowXCLs*^t(M{qcM`-UY-3Qzez$o^7LZ$R=V6t zmX%!Ds-<Q8D-nSlVMmQ=+8A7^nNnipnxqcUW+tM|#7kPtK9TG5a*V z^fS^SbSV-bS=L^QI-=JT{_r8iOlzxH&N!FYaQs5urn~i~-Dp?~dF=Czo4)aPP9CZ` zq-4ufYc#A@T^Og|S|e92{ZJA%Cgv-7!TM=@^g8amh2cSWCv`Vl;W{-N`X*&PhNzp} z>eP~qmT7f9TMZt?r(b)EkEet38OX>QqL*X@p{tmy)ME67MCm!pFrA zR^Q?;ThfZzY70PSmyg#9G*btK6x=>#T7<%#Ii(+1>`>GLGrD%ddHT@>3LP^`S&xNK z8PnJP?0jTyMqBswx+e5)C-j;vbP}nNqr5xwKKuERvlayqJhn$KFo&l_;@xw2^?fI}688>X*fI zOx}hRc@NL&QxhF#WKg$@x~u=t&pp5sF#eakfMyN zJ*{z$NJodkS!%*_@CGBSdu8-uLBZBx&tgqr4e+}ft~G&IyR zXFTD&87Lh$qN1KEzA*M`sF$Wm{h&uvbJjFMfz4LMr#Hj-B2UI<^esjSUS9qD9)Yrx zXOD9PI%nBW2OfUJ>8tlB(!8Wa_=~diJ-{oc7V>ZIYm5E;jr;u*=MOXa4OWyDp1kSS zw~^?;$VY8^PfFN-ORG%3Nf=!W3K)yl?BcsP0!NI!n{3h zqK&f1zCt(!O=_hTIqY2ecr;*xkN-h+Yrp8*0Oi8n&~5q9)%%K0rY1%r(7ovLSHuJ;?< zcd5t~&FHkAo<-7~U@}1}+Ai6w&dx063B{ro%j;{j-)4{m^mgYQB&?7K=i{3)r==8f6$7nRpWG3()@$B)n~A-kB}uNz zuY`rg^2e7zy?P(d&OGHll73*RceV2V7xugo4`?#T8?Q$eVgeEUT$>{cPl8exTau7*jm(CuS${bgG+8XG>b^UZetJGjGf2D0>Vhpjla9KPikgA_; zWZfuWa{RPwz~pOMq-1-gFtITZ`6Rw@o{OsAX4JZ4AYf)@1|Lpr3tPhrr(^+7@bRKp zVpE$D?ng4?0aF&`XS`lWkt;rlY_cf<#|sOOicr^8m_X`^J$j>It)Q1 zz_q6UUC_#5)qGG(u_%6IZ{tGU{${nkY%{>rqP=&bA$r5mgld$`JRjJ)yQq3PZ5QM) zz68cdP{hafokpS~Fk#4i9v;WKmtodxKl(DCYg65$ooBaY8h_w8r+TBLLG@?ac~;BB zo$HY`qc|heO!+IK)o;-A1g(y(-k2BuHKCa`{Gb>a@W=UZo(I~+#$|=^!hbr60g!%i zkuig^o?ZKQ36WRV&mR1lm|mui8JMe_Wny}nWA!tg+$*zxnS650`xn};My#%CVBXnz zOlMW;!a2?Cn9XZ3TiL%&t0j+HoQ^^s&=Rgz8IYd8FmC|Mqfm(qg1@4ePug@@)%hzJ^-Nt}$x4FI!) z*1*=%3kjIEs8l?N>%Z|W23K{(?u;MM>D;u zN@g%YzL~+Pc^>~%t8U;4*k#c+W>!rY)<%D@V3BXkJrMLY+> zVWETIv4j1{9Me9Bh==BYqWpc7<7M!nDsEKX3DrA6w=nmrai5?yJsPeIDM>bBb^*`kmxV7V+=fyh}}% z1~UN%*I%D9u%AnFJ@H^J_1P@#_(z4n#b?G_f$yKk!sw;16bOV12*M1`q$ui^~n{3rX@V3lSg+2$e^&M~qyv z2kQ1D*BzmY+hGPVx81|p@%Wp^ly-Y}XXcJ>Z6iSFu+cLzr}~x^;EA;@#90qmvbh23 zB0<75WY$Cs!qlz8n>zeuH|+aq3rqGlkMp$&opLN$~}Lxx7`AqK#E1GsYY=War{}%-z3KW%E~c#!hW~O z#ROP4h8Y?;di(058W5vq^j}$AVJUmRJdNPMi z(oPzwq4#u|sN(_@Xz5WjQK?Nv>Q161q=||@MAUa;p`OX;sWAY0nS|DmT)A!=PJU!0 z7?k0V7ZzqbEPac3Rqwb6`mmG^6Om6svB{_mT5KfEco=;WErT}FlQHQ-p-pa~WhBsN zEYE?b8~1kumVJrw5&QM{a&lXWs(5cpVS;E0-nrbR2%iEt4yaZn^TJu)wZLd(PsX5JYiD4Ab@{lO9G9yLS?8OqAfT3~}9}(M-c= z-H|l34)e*A%xLYOW!M)e{^!6WWf$3EjQ28K+#oE52ZDh>t@bydZYzDg^V-qgKViHLt0hf_R?ddn28oWP`ZlokgD%Od%#F;2R ziPm8sy`{lwqJ~tB{9*BK=*H6P=7#Oo&D81Fp|!#DyBG3k<%8#+(URJ*h99$g>8t#V z-iUcG!rESpH6x?Fota-FuodP2cl%z4#oKG12<}J?CRh!eRA*sis!y9! zSQIjMQRgngEi;C^y*Cx+N%nl~cA(p`_OPyN(8J;Dq>^{P^g@n(x}GMgO^F7$StoVBRc7q;+`CaU`iCEiS6dGbecCoJiGSRU{}#Ib zgm`okd7K{o5)kCxCGM}I=0H58#|sv<*IQ>sht{f+qgjJa#jk@NWX<@O*H=&COR`-L zmrOoz!DqQw)D!as*DXfsC8RQ9bR~?d_55N!QI3^kwUHl+@iXkjm({lai25&}egZcCxTABfhI~fBGRR z?m@&T!Cf||!8K#vwkaZpBI!Vk;K^8|wE(tFJ9)-tR#tgIN;d4&o> z8Nrtk473q^&Ci=vVr(Mq;+JYT=zEhmX@p3}sJf!>vL2_1w55VDk`rvHG%2EwMV{N3 z($$4`Q3=w=Q0by1V%s9^ApE555J7lGhu4skp0u; zcEr`ajXzW2UvjbzW|`^16xIzGLr3Q`&O?K6AN3Oeq6N@U`k zSud&$4b9iqR(%rFJo&tr9QGI`Hd_Qf zmV5$nfe8n@C;wPG4!?8ywCDt*rkX~a5b1mdR^J&Ooh@0cVfd&izIDV-LliAq;Fxl1 zOzIuhG2qE4gX!j|aIuK7g=e#)vk@O%fm{K6C6}=zD?*YYC1sH3$8q$J4@(D>Gh^u~ z-@LtWO(E1#$uUYnJR^1z7rMHA`w43Ih05`<4o^7)y%SSn#=D(d!w=|tb51_QO)<$l zd6&dHrjt7?vn75}C2)>bJVfQGc8_*)6KC>WJ^`tuM(cRx=pg0YE{d~o`kUeSo7WF1 zpLP3m*u2ZHKX}=rarw-`XC%)MR79rqpl27P2Sjd(1=abM#@ znG+97Ytgl>%F5N_x23wa??5tz%C@RQmAR5JLiN!qMH875G==0mbB`C~%F!Zd?Q&y3 z1Ga@a&0u+-9aU3mPPEZU31dtQTM{%Rz@oi|4tC~5I5>o<46meg58z4~!Q(EYOlbG=FSiPcvB=NUz@vI;4Bad6>UvH(J65P42vE-W^5RvkbkW41 z8OR;hsfH`MTCu8Vbic39Yt^g%o_f-%&OEii5BYB|41R!r)IbNGYsfp2=TTTXGM8?u zE*O3~>cnYA?|Z?=FPQ1%82O*bi@QftQaF&=p*WGaES0cLV=E~3iIjnBZ@ty zO^4vA^w3^hN}_a%j$U$&wg$th!$B&!Am`v4ev{=0GB{;XTViH}b9cdD0OxY%*+%4Z+dj3>csQ-XRi=7qG#Jdl0Jj;3Y z2DAb0rkw&mf!YQso=J3ro(_7oGdCXMn(IHVdscD1@|(^!gF>{}I>`vla zt~dY4jXtNUJ{K9RE!Zu>7-T5ak!Sx&h0*H9s+H~H$TGeh(F89n7j2#@Vy`cDwghE+ zmb}G_dWi59*=C2q_|MUWzFY!_mNJx*9VinsRc@GpO6on;(2gx4u(?`J`IR*bB)&Lp z>PYa2@@u}#Y)tJW%2u1&qs8w&iYhYkDoU5Ak6(!9s_9LQk3}C6)w*23C!&?2Nh5#R ztIP^5!CbN;qhpMsG`akYBh7g|80Qnq-%#RnQR%?tB-j&PW zXwD9v-l9=3?hkWw5mDf8T5iF=!I?eJtv=iTP9$}vVL-oNWW+K@zj|8vsS&1F6^`#w zc|G%LB(uG?aEC=FY*af%#7*AQ_yc7zm zDOn0=y`Hh!iWtL-k^07}kSS*QoSv}9MJ`j9Ir_^t?xVc5_zKem#ZlrKu=o`BAiT$t zf-`5op$ErW^=U2R6p_}RgIXW;TYx7n%a!o@lyNPE3uu}C^;E}1A*bVqU#pG zYq@m5K)`@R=V?)VcID`s-9B2ypm37LCxvx3#!oLEA_UO8(r7?g9qfZ2H0-WDvxaqH^Ov?Z3u)x>!gd+);JoQVNLzA{I- z7nf1fjgVWVR_-CLiT>j*a}8|y^58;~XxK9GrTIon4-fZ+(pGsnCG4Mf)`AuKeRG!g zKIG%=lyF*2z11#JF}ozFHK7QJ!t*9vs|eCH|6b>DK)+^)>inj*X;-zo7EWbqD@sZa z_jD!>e&RxSy=u3oXm-~pRxJwoIJgsJ*q(z=_nOv}IXtDZOh$I6TuyVf#qVyRdcYHK zG>2NabZRE&7H1<4#jzFTTzj6WVv>AZ5@LAP$_AQ2)vZR|i=bM3p&&nTY9OE}J22qR z(W8>)uhr<8rud3G?_9}^I>VsvV(OcH?MfJZXWFcn6J|17oq9 z`)UMdB3wwXeqEVbS=RY1zd-wW>HA{!m+ZoJuPxoN4$Z)@zFk%~(albW1Rd@3l_9zN(cT(`+FM2%BLOxd&ERUdN1r)g!^Ci;|= ziL-9D&K^i_Vpx0-dGN3^tolKe(`>S5a3aqOa1x!9CzrXaOM--;ARHAJ1tGp;+KNA| z#rvN~g4cFW*>jYvVuN>2Eo$9-=w2vadheXo+q@&$C9&~w_2x#(4qOztnf9bO=k-Z4 ztK~bfPkILAQ@11Tv6I2Pd3hNe(1)L$sMjis+fL%+6CCq4IxiGc&O%L5%$6Jp}RcfhPvPlEC})*!Ewg8Jp=e$XbqxhTg6V83O)K*TlGSNu}Mq}T-2K=*L0Ox7doM6NpL zNGhtxDk1@4v1K06h(}$3N~fVXn_`lJRjaZe!Y5OtggB+k%KhSQrzSXb_0t)#lEl=V z>@liOX`m6^T0^Tp%*b)6q{9rwUsiZbmRn6m$*OX#SG=q=c?n|pwqc93C6?ouA8lAP zY|g`B^z`Y9a{X11Kxe1M3IDrKe|)<7Jo#AmCxhN|;y*lnGwmvQ_m23ZU4x61bOxoI ztK;mwRh0q#Id`KOSMMqMch!g;%B?9y6l=Y+%vD@4PiO9bG@M~v6n?lr*Sq2Y<+9sq zuZZ!{^kx0VF^BWM^?plC- zedqlPQ(@JkIlp4_N3#8U8vc>sY5c1me(Q;jW~Y?S>f30iylD6pQ&foepB$V2e5d|= z!~gN5{^8jC@0#MjZTRN}|Mw`o+JVofu1dW5sI|MQ{Pq)gxy_${Y6BN4vMp;ifffq~oEWZY4WI+2u55R)mqaNfSuOiG8avz`%w^cc zZ*%XqEC=^Iv(z^%V5sj4HYusSU*t}Tqkz3Z@pg0=8EJH!V7dpQH=(D$caYx7i1=uw zC)#486Py}Gr0N>ps>~oSZ;Q$WE72xNnq73sAjQ3qfWug#VmBr_vpl-9J(8=ig6dsZuxuH=d8+HbC50O zWWOaxoU4_`8Of@h&a_l(>_>8G=pI+vFFEoEzfoDpd^j$C%bFv*4@Vc3#JG||+S!HE zj>nx*mR~-2Q1`kbp+i)FUdvbjC1<6Tj*Al&l$mrD95rk5N5@pG^IO5IO(@ig1Wuq} zktJC(C#V`rEK-}mZh8vM0VGM|10HYtr`AiFJ(jj_3O#s*1xNwlC=fgyYcRd__L+`L z^|y^55QKkzzxn2oBjRgx?5y_DV8qD3c5)%@9M;Q()TJQfm?HQF>l5? zW7yzunB4kBnMLaat20OY!8G&VaD(`QGav(G`Nvx zk;G^R{1%%9dKvLy-X6LOdQK9C%>k7$LbAL_s|0}&inquKihRz90#Yw%K6fK88EAsm zkQ;Mmr2s~aByfPXz#oui+<+4VnST^}bdU|)4Yf9=iyDKzCG21Wi@*d*F!pE+!2?=B zjcufuhYpc})=01)$Lx8@P#9%G9>!n=JkZD(h_t88r!^*hjeSb`2`h;FJi$)v20)Ys z&I{euQlln#k$%b-gJQV|RmV*Hz=p!K$t)1)3KPXA`d8G*AkfAN<<;BJHA4mgUUEc4 zH;ofXHs~4H>lhsyj+70&1fGXx!9ixoEP%kBuK=Ee4*gg~4GdCaw@3+WBm^^Vma%B&3ryfw#l+Ri=R*5_<{+G=qsO0xL{I2+x-$2>^Fcg0-j#WiCM=j1r2321ta1FsXu zgdhv{ItpMYL30d{G!UOj5iglO!HF~gjaVG;I=T@Jo2JUecC(QfGLb&iVu4@-!Ijvz zt-xzg6(doGUJ3#eB;Smgm;BhlSCh!7o!8)z>7ugw)06Gp^uB zS-`L$VA(Ode{ly+x8UXZwZcgkNc$3(J4${}Rk*`3NQa{2n@%g|O5LoU!D&!xvgh2U9| zGdFn2j{-gp%j7ff)F@C9pPt6Hwe_o6&mbo zq(L$_;710$Bo1CaQFRey0D%d-9ic!%SfNJF)7C<;;YdRsIvQ*@bP(!=fMR4oNC8k4 zHxLR066=k;pX`CZ0DEzQ2nWC`;Cum~jD(UTnHF&r7A#9r#0w#aQ4)tFnFq-NaY=mHB9fSpdCm@0Z{do+n{G=Gg3*rQOi5&n4 zJiyUpFiJs|m-0CB+qMD-@BVkl^uHiKdXT0s`^lr*1v zUJ+)1O2_I($buYzMc^f9n%WQCLxQ!Z1kFbv$RhGtpxMh{2D+$fWE9~5f#xo`ED2E+ zp~>8{*cE6#3k2DH5JQ|OE?YG?7xqPOw3Y;%f!2%$IY>)fm_&`-CGm?;CNBOm8X%ES zB@OPSikK(efFj+9g9*h_6EcZY$A(k_$$=IPNiWn=Bde6LH|azP8Hp+@v{#>lK6b-T zyji0&Xh4x?&P_vS@(@)j^C3VOau-9Jih`-GKw=rN(!^1~2!J+-cR1?l#f=Te7;?h` zK(s;ZAk6V977+Hx9qc)xK>)(A`P@4~6_nsLkVqrrLb4!mRV$Jf!+?E>%{&ZKeFa)k zrM(lucj9yBbc#L`ocg82IVA9%{xN;~{*ROT$E6QD1>5>K+aGrKwG(&n2>2)W_~ZQ_ zdsqK%|A(CHcl_7?2x*Ej3cy{q4`q5qrc zudn}q9tG^5#Q&0(k&^t)`j?WCmi)f{{}c3k@xLTxh;&In*9d_4WV5W-)_@@oXIFCs`0m0wO${->Z{u)Xp9RTQn?1}fX%Oe~2| zkdu&+{L@jt{>LH6erYJIcU;|ARc}x9{f)4YTn7c2l_uI|g_fTu!L#=%ewe~wb{Vxu+ z_VizcmT%!A{f}h%(sG~6*X*yjNdAV4%s-Olo4CmS16jVd+~e|7 z_E%h_e#1rXAIS1gx%?jq@%V@I*ZqIKp8h^|4u5oyf9n4yzG42x|0gZ?9slP)LVq~F zKSlWb?(+YyrN6ZP|0Dv~KlA@fN=f|P|NqE*kN^4~q3{0xf4l$xkD?>_wRKK$=K{O>;e|A-I&4@{fnzuvTc_tJm& z(tr2TfA`Y=O0NHem;MiooYcSG$bI+2fA_=xMy~IE`0sxB{~AC1{~I88zwd|t54qQM zrC@*2wf?&tzR9h=&*3k*)PI-5H@VaIIs7G8`tNf1CO7&%hri@P|B1tYgZupdJpDEQ z-=9N({A2&0l!TIs`Zmk4-MRmh##GgdBWWPffQ1QUy_v0T`;%zE&^{Alcd303Z%kRB-J$(w-Us6(mc8M?lGglUR08K6kzfvaFDVjv{|3uOPDg-BoMVfK;ZGF^zzv)Ohpd-&9UAfZc#tA7sLV1O0H zUZ9}E0fiE_w)Z*JSV%uTY&sp@oiE=!FJ6$61TQtau2x>Kc@G~ z>d*ROIy37;J^ChG^>U{KUnz($d#TH5JhW}Y>oP+NJqjrlBAxJAC4{JJbj=iOQFJq` zS?SJg#dgdGqUaha4(J73F8tRZLQ+o;w`57$6S>q=XG8k1w^3r#LC*x@4`sIatkl@u z%fb=c{&Y3Uu{}F>$%;*qI-9`~j@v6rXe^13NU_Cu*oklLN>PcwMy^ncTPzg2i#G&L zhO9T5nq~%Os9axXneGLj;_9EYuq$>y;@^8`c>HvGQ*iC+C0dtvotdJgsDu{bt$aV~ z;s;iKH!AwNCgp2<9T1y|J>D!;juhT*GPZK9p|eXhfq}kKQh}k5M$IZWY_HGuw*-p6 z4sgMrpDK_G3=D9eu3K$tk&{ArY;A3szH(>R-&#-TU}UPWb?ms@C>I!j65J|cam4iY z%{**rDJN^52yCfAn~2X)w6wI;cr4!3>wAPJ-Xl(VVeg^(oN4!K z7v*G6(o9TWp?8Hi_LSP(i*lNnqSbU(DAnAowGdAndvqjlA0KjMMu>R0og}U-*Bv)zvg<4}(@wQC6@dfxPVtXgh`5GJ7JzOL^4 zb(3xDH)aN#nqpqLYoo-2IkByw8Ls1r8nKQKGUGS1QgEZ(rOd(Ub^0xkUK(n(`4m%M zhX!A+{Sho4+j?(sI*?{@<;w`;0kYG@4}7T)3D0abu2b8-r_`ps$s3`rx7#LrAGOQ|_v=lh_ion7bfwaYawO^} zSB_me>zKw)8JaX=<>Gf2w(^ba64*gPwkI^~_o3zz{i&*3jFJXYaDr zGuD`BO&}a;ZbsiO$o8`EXm{hAq>-!x^*E0DyTF4%e zc$8WXrmx5ebjvoW(~2*SHe<3S`p6eYTk7N2|HU|x;yv8myo$3AizYT-t>0eP+$xED zf<6@9TxU_SrYnn!y-~Cl>*n6sB$?0?#nL)h*98xi3-mQ>!nBaUM;0buy3S0ICOJiz zWgD{=);G6@bXnR7i?$=m4rz?Udh;DXT{e0MnVEFVl;cK~+9o--Aatb19hhow3F5j^ z_O4(;sr6T;wKt2V$`2JyIl~v+;U#r94yaUDM_7=vAU%r1M{N1 zqhIOE7+qggZdRe@bnE7_f1E`BgY~gzPXBfsNyoQ^Gje?X%_mIjT*i)`I#oc=Z4sxm z2+yb^Pd3`JkRoGot>taHB784p&D(>j&|bB|Y{`M9wTGEvT!6ARUwm>fcA~?`CHgME zPf(Ts)Y@IvWyqqA^S$yKX!xqkY}ac~48=NMO&4GM*(j+Ct)VH|awZ(E7IivR1OxL- z8{sIM4GUEra4@9iCHz(THUr@%+@Oq z+!VYarM-Q<-xr8x>eSmX#Yr5<(T%W-LV@FO0-5 zovrF!3VODw9ObfUJUuyFKI=%r4eRD5O?U-F!jeQYxFtAy zc{P&cx<2h)B;um;Wf|PPMCpU&H)T^>Ebf_J*PEpTPE<(3=~??6ZG{{0;*LR53VFW$ zI?EPi{-(K#m6?OR{QVB~=ne;Rg-dbhh2w~* ze&Ivu>4N^vJHs_0lz_1I%tT9HNYIHodwR#p;ogg;3<1Y)dPWyz|_ z3W|)@xLjoeZ=>hKs66~Yz*EBWc8(Beu{^h_eEC6b8{(fZsxo!Y<^|F>@4Y#k&#g~?lpSDud_cnW@}~>@_(X@ zDJLc#Zcld4y@Mq37m8ZwThOZt3%>1KPx-eLR?#*=GcO1JRCSE!?b_&dG?S6WpH3J+ zM!vB$^Jt7gs?cD!$g7Gczfi9Ix{$eIzp%)!@g()D{ZlJ)?U~l)8-J!!Vl9y|{c1}8 z9IKO8k&oxtWn$`_yvAx>2~)IxlO}B5aOm=Y9WKlpVDcyq&=PVZgWwZiFdyH`e?fbE zm;4jl%Cl87`M`!lLK*#LnRjBcGC%S*30#jsMPWK7Z||3e*P>{1(?cJSXPj< zU-9s=^DQWEYiqm5;Tht2=O{KD@SDr^&AaC@Qz|7T=`pi9iGoJ}y*QL_d^9cy#hH3j zKUdLj#V`0GbUb7?u#EU;1r$qsR|}o_Lia*)Q*?=?SOA*O4FrG};i-nw*p|n`^|}5H zbB|uVK0m60za17hAQ4VE(-OAZ_bBhclDKu&7PMdmC43nhr>@3>NFk#Ts(@$0BX#JG zvA}I$c0W?4tI@bQ4t&^3Exgf2uj0&c-6ip`w!ti!6oYxH>qUO%!*vpTJdFpc>C!4t zYGNpiMw}=-==Gc6<)7gq_CH>u1ONb@Qa|N^;&-o~+5x~G;Z*?0J-=b+&cUuX^-Cp_ z?)7uks8*}|ddq&PoX?B7(!=|$3AC|1Fcsv7{4n4x=tI6etrs`o1|5OI!htPtJ`e2Z zybKt5G+!Bb2?hc{BeX9f8o7Z$Vy2NcnHx}y_}tA+2nB6}4HYA1p|@$JmJgpmXB6Tk z5_C@7NV)2!E0#G--k)(e2^mUQCo-hjkpn*gW0XKop)d>$@OgzcmNOz*8T%ed;KrQW zQ9L0j;I{2pCa}?hHz$`n{>?}|844ufzi%8Ek^8-PZ5075qvaLPMNE(UJP@Yua~Cv z`wx3bb_IrK%vrwjts7ul@E?98HG|ANC%`r*yP#LGBfj4-Qg(|@c6=L{GMhL zHC~$m?~KP2RlL01r37#5Ok4(g+D|OZs<5(S?NR}Pk+5A5G=0i_-%>tNgDoV<6Vr0< z3ljB?)!`Be4+(GY^YO&iE^ON6&RJ%A%g8~rq#R%FScFf{BHjs)k9WqGxM<^x={nz8mNzgv7BmO!o`deUXi76ZgybFH*FNVoH z>Ar7(yb}57q0y1B2}Qr~=2zQuH{%+nI?G70tP;1PI9ebpcA+Itv-=7hdfP2+_KL}S zz$DtXCNf`)!`>8E(NO>hJ3EM6z)ujiY7a7F>e~(fNwIIv_JHEDviAV{YAJ{JkIGvq z3R*cuy8PtrwAVI{UY810H_>IF+JKHo=> zaT!b!*$%y`S~pwkq;8^T?x6ncvLB;BDu?gyv{hXIMAh4=P_e&&b&2Ha-%>+A)Ruo5c0>OUJg-;#)vEarE zmEIkp(&2L{DuAN@s*2)^JkAinZ@ADlgm?x#EFmWD(WVbid2ZgQpSqURxLcoTr;x|B zEZ-l-b8#SMVxi?W4t4aHf#ra~$((`4cfD_ajN3i;`kBYs{(-x1N1s`aU#U5HQ}GV2 z{pN+jFolpG*_K@&y~tL4wPSWxv5vawf!>RS?8V%ssUJuJgpzlJ3XUFMd<6QC7nr(= z55V8C$Dv;F9GZLd?uQExsyjn$MZXEH>n$7?EQ*5TaVYrifb#CZS9Hw)6g)S$dt|$| z9~AMUDg*4{To`K;HOJ|R7Gn3Ye(OW~eP10fdO^%mXP?fv!>*)Z@vuS<711Uq1Wufn zJx|X^JvDtR&^^$0ZEUS`^!nW(?_Z&7&gsxX{G{4_-1NFW&NUr7v-6p{*m$BAZ^1+*hiNguB~~(etr9#=RS*^ z{l-2^3iZA;RyjGPBKH**(&~Cs^YpE*W%j0C;e6nV^Le`1z2u`GfiAF!Q*ugQRX-@_h$3s z_V!%vw-dXjAldyuP&a{CB9$tZARwTv!^|uqby2(cma|Fy;S{OtpK`~}e*CQT{Kw-f z;k3nXrIvS>cN9pDM=z6mMMpnY04KxceRFtuDQFnH;52GpsS(`_oC^J}6~rGI!IX@< zth$1*yEX`(o(!{e@&IKvg7s619O2nglw3hCrEqLS2WgL_ZlpR7RuF|d2VgK^AcQXC z4rv?0fIvk>OR(c9LJwzk;W|1z?_m&&eD!hiqH=~F`CEuYLYI4LIvkf?++wF%l29#G zZ%)ZX0|iIN6^NpY&B;Z?a4aYz?G&-`mxwuCLm{epipm6#M0TDHjc*)-X2LQ;YxTwW zX>!3wwKWmOVhLlDsUdplE({`v;rc~ux{{>j_7tWldQ-k~1{jz@SOmfcE>5mXjZ82@ zi2D}mm}{CYQ!{jlAQT>63?3)YOf|GTqHr0R6>}?>pxW+CYA{n*O_41`jpU+Q^stvl z7>&x>B$D#aZG}AQ^y`v})ssQYk=OCiggxd_DU!i6-{WMDoeRz1&2ijZ8J>NA`-x7a zk4Op|Q*ghb=z#p$@P4kd)Nnp2cxuLCf2g2?pk)ZfVETv3#`jrElL_z=pY!Bt^{)4e zWlGQqXCU!oU1SUzH&9JU(e$O4WEUzKuF}%B+c-jRR=y7jDbY?tE1XQTYF<`4S$99p z;}F{?g9Y$Mm>;UsGvQb*^woR+DUX>u?&*hy>Awl!^HdK!wZ|AGV1h#ly+@-1n&Ju#`H;gJs>>FpxTMlJw={hfsHlR=9z&m!6_E@?H?`cn$`BjwzZi zvoGC_%0G}b>6YJhFZ!ZJN)On)SNC#4#d=`=2wXE^(HL0pUPfa2a|&?2{1C$GK~o>zm^o9Thjz^`!eR7WF&&bev{5igdqjR`TANOF^~P zODmmg0;(IgXzNjC&j5Qa0q;XSPV&u6GIUz1xy-8d8uUCM_vLH@*GA1LIfYtx*(*mA zKRgZ_i+*@r2!&b5DqNO!KC0UgD(~9rPyBm{lPTOG-eT$Hj0aIgxP0RTn+R6@CDAO5 zOm*7pVKYLRF6umR+%lte;Jy0#GK#p%1@4wqmlz`j>qsRQXX0q-$mlFmq(366MGi2S z^O-Y5E-+|Ph{21}_{?z0jdzPdw%0%yFq3VBh$1k zJvaGseM;%9`|G)LInVl=UyVP7_*KstDkDG9sbDwsmmQV1<~;{gKF)l27f5ea^-XGo z4#T08)8IHXiulA@CMweYt4-xsHPW(b16-#Z>)3cA7eiT_+piU7PUqF2%U% zEz9*AYrLF3Q68sG+DIAeF6LP2T8@jIrD8!}P>w*bkA4ydl2kSGkePoxj|OM5;dyDYZ0Qwx8&|ZD4a#j z>MaiP>Z073)v`rx)jH#hgTzwgU3CQ6H>;oBrAn>b>@w_P(A7|7u|r=M^_DVElpptF zM-)4u5H=H3(VDtd(LU8Es!U8f<=tLH7h_OgLYLgoR+M0tFo)DZF;om|j3A4xKmsBq zww)fz7GvHQm*Eh7(p6T~YJ@N1OpGBW^O_>?4D2OGf*r&1T<$FrzQ(YL4d<-kqWVMXWa zx7({5DEOrw;soOYS_QVVm-DV_Ol$bGeVc;JdTed2eR->?^a(k|-yh&Pgi?aPD(6?A zo;c8v3f7=|$qlApG)GnF$~eH=j2~W>?BFlP@j6`8P%B{2NHb+IIgeJ86#&X=bx~$< zUKg1<;!`9J93ri!r}G~J{lu)D-AV5G60-+Z}mCy_&NK@(3i*zZ5-jSws z3{?n4M5=;@4g!LJi1enQB1J{8|LD2*o^sDQ_j>;C`=0-M{=1Uwy`L#-&#YN{GPBpr zyA+wsSL?9L&!FqfXAo~ne7XnAEEas|Wd*!)`#ij#@!LI+@OLUG5cew77{1~%xaR^d z(h+dzlBviLacN+6(J472RbWzU0|)n#iOa`4X}^k;qC> zSk6jig_C@gq7{2lR{u%XY-T0WW&MmVUB#gC}k%ts2~Fp1ri%r?Bl3T|RZ{)H$zoGn;e1|K?f*;0p04zl|Zj3eR!I#0%c}gBN@Y)`Dm3 zgf`@CgjY*=R)R85ojj)}gf~EPnsVQq5wqggdBJJHdUfO?;ntpMLQlROj@S%ejSqC8 z`;Z`TbD{)d-6mV*dh)n!Rx{(#iBtx69&5}fM9d;Fp(j&a2R;r@Cvc98c|q(Atmf=l zt(dYIrGfIxls6ac<5%6xZUA3EpufeW&C?F(yy^iTQ4UBAHayShlx)GRh>->=Jf*C6 zuVM&sPJ17XuCvC*$4JackeTf2PC8)lQA%eaM&#(wu7?9ZVk4EHa1*H|~M z$75106u6M+@X@SgVjvimiDQPlg7ZE z0AMu7CN7=xQaP4cu)i3wdN&m3M6v(xu9x8vt^9rlw{Mr@yfgC^MuQcE z6%^o~Zr`1Q?dq4_xNiD*M7H*=mT1^Q@3|7_08Nogj%`*g_p zgeF~NLOe3zSlz>%GUp2ZCA!Rtr)KGX&DvkM6=9mK*E+P#7&ZxUA%6CcIsWvB*oJS=>csox?ZKjge^>z%f*vg|87 zzmYeR-%t>(tsNs|DeL|qz=2=%tW@F~+g+BcqU_!74QcmLCAIkr`7_rowY=P{{a0P9 z6H2c9!`11qmZ=saxwq+QMkAwM25TG_%SlEf3UZuL&*2w|J8V2=3Y-z+>7!h@Z=Uuv zaV$r{NFyyxoRQkFb}g>Cw%YCkZ~>I2LJcpn+Fpw;DnHk)683>rqyZ!JKD+4i+PV~a zjE=@*mKw}HY8WOvaosTF0OTRdJoIliAt;DQ_5&8@8- zrybbT3^Tp50~i;Bc^#PAQb}-0npLmK9*j zdaerzJA3cM1jUulk11Nj%7?B_nSh$Z*mwSW{Dc0PC)NMQJYxPAxqxNP{%dYF{}=fO z{mZiXU+V()zeYBHUbayBrIc^;$i?R<=;1Wr>*Mu@C&0Z23sB_`A3pMrBj54yV#(LQ zs-w+4-VazK9qcVPoS)p}Vm>nM(oD6d`Z$+=N$kT+UX?j$(-o}b>m=5iZ129#mf_)M zc_XfW>w?8rBqQ^qbmNtUkVR+NUHDeUt%9kzI4P_Z)D3W$CqF=)3pX; zDQe%$H)iOjEV#KeTXl4s-F_2pF)--8Y#@~+URtSuVjH#!&7*>giXw>eIfPhFWP5FcN`Pb4O#B1)3tf6kf{ zpST)davUMVpO|7LTGOPur1T)a@V3vafnQ(lctkP0DC@(;kLQHtgO~Rf&)+D1{(4A~ zw*CkIJOR2_?pNUkrA}QsYq-v>-=s6IzC_E!BX*1Lie@!*YDffUrhh&4d0#t6eadXO z`+(EXg0*J$NvyMM;w6ZsqFL0Ab zxmPYnU2N7ZZwcX0i}HARiVl*WmJXKJ$q#c@KW$*2#A@MIAvBgF^E^8^CE)R;hsik6 z)MPtDu`@ov6=2;u3Fjcr}J!e(BPnN1y@h! z@%DkyC%mC~zyneq@GF29%YpxbRVH1-GNs9qIXozcKrq4F$v-c7l8@2hoz=J^-hdv# zHJRy1!N9SKlOHZi%IHA#uQ@M40Piyiyl9mr8+ryAkPU+Og(}*clH_2x3%-=26E#V{ z3tR>43Zj)r1V7LVPcXn;1^p!gFU6+}_y{0e1foBTe&8gJ7s~~{Am1YkA?>{;yRZeq zojw8V-(_rVrv~`$Tf4#Jhv>OfXkUfDJuB0n`IQ=aCp}sPITSLioing8L++kDZXkJJ6xO z;8jQ=_)SUxL6?$nNr%Z!vn;__P$w%50`K781NS3TZGzI`mGCb@ z?`toG%p8hu4BSf93Lc17yNOO$B}h>cPTf1yoDkCRse9X-;2H7*Ao^M(TrEwNpoqWr z7=)JxZGzsWUXtgESRsp80zKpa;-x6RdAj_B4~}@>J)I#8O9vn70bC8Qvg8fIB6t~4 zKvlF21sUEn0#0IjMoBpTjz0~4O30JYKr=IG*?TB$0j$-*4?X#tb8 zJOIU4dd4%*$;KviD`!@W5MYvCQpF}646f%!?|>M-fa-bd+aYTFw4pp`okH|OGK09Q zA^0(>dR`I~_VpZE;BF9bj2?Z$NrK)Zi5r{03O<`f6ORNFN=^06zyIc>(ti^%%|cWCaW} zI2@lJ7JBEz4em?Y_agT2*V5<#T%#~0{663yg1|!xDPyEWPj_-gL=_Q&A{68G0k1*R z)bEQl9{a91M#2m{@j3| zhy`#ZGaX=ndzqg$Vv;Hqy)W=^T@N0Kq7>al<R_UC;t0U}|y_ zVk1QGq{OS%5e)Djo#_cYeWX*Hbm$H8B?xJQ5`97p3Y(;#uOtO2ScRkj0yowDHq)-$FdIDrG)B%8zg zBHtANpMlrNLV(XefM6hkK8HJ=X~uPos*=f@4MA54&f$T15O{Q$DG6Ba4JO#3&`3O& z6J8)V$m5mD7{Nho19ThFY9v-Q2Af0u{fyrPtx*CdA?Q9pBLvV{wO`mXkfEbQ+Kyd@ zN5SDybD&BN;4=y`e-MEOuPf|8bvQ{>CaoP=q6HoXxPrZz4%L5-KAxFwi3=zLYNdOH zmOO1E3{b8C^6h}Is-yuP^f>^6#H8~^_N{6>ef424yhxtTfsOt&1=oCB1o-r(iw(2} zPP+!6&tY?*ze$LXTKeYA)tStla!D6l<4p!&k= z%**O%FK7Bzz<=n!i2l|7FL_%J2U(Oj%2Uez-$Z--XZjcTuQDhpxnJ-9LdwaaB>%Jj z>wkiN2mkS~2_)sEP?CD;zlL`Fw&(MYpcG{fTTVvdZ%~Rq;UV&C`rEpTf8TtpW}pc> zX?}uuF{0lWf{%}ox4|ecp{KVe?ZvK?` z7Y!#Tg_Qj-(h}safZ=}T{o9-UR<=@qMYd9ZLAFvqEL*8R(h{j(2>qWC%6_OO(tn{Q z(mz}i=|9pE>3@K@{j4QF;WqyFXo=LXFt+}EEkXSi*`oe}Y*9ZfTht$E3F;Rhm;Vg* z^g}g~`3p6X`Qe(#{E?Q(`~%ePXD#^&_42<*OQe4VQuOa@iR@pIt?XZrt?UoWR`!py zMD`a5q5q7L^FuX}`wKOZ`{A0%{gIaZ9W3y#qr9O0J(QO}fN%L7l$YN}Z}|<(i~Jvg zxBMFAMgI4(TYd%bBL6R;TTs6X-D2$MZtLd~;0QZBIeOX$!#r&LF1Q525a01zzU9#W zTZEg7rvpqz1ZL;x7wG8d`3ru&FvQ>Qa~K_b`1qW6IedU%hZ!7$9DNn3f4cf!PRYMD z%Quqxew3#EIRg3pDD|r&_0Kt^ekT$2&#Zo#5BaNT>3?SXQ=A)HRu=hB^FJ9`)PLrG{}c2x{zt5!NIyU`^HS~C1F)IV_SbhRUJLlI+lxCuv^oF) zBnR*x*sy$6y}SEvt%Fj);7M_iI7bNH8Nf`zA_#A%`8z`{2x>yDxVSi-zz%SBhM*h( zfG#_bx=2FH3t~mwhbjUH4FG)m0ltB9OeYWt0G^7Jzvl++sfj%2cM;0ucbL$}|2=e! zKTGF3zz1b48kqL&LR3c$#Yh-aM_q5co_9U*Vy+a2l!pd~&}F0NDnj~`HrI;a0&f!z zdcK@XyF|K%ywiR`CeuH{<@O@?+mM@pNTYuzMwXJnQr z(_#ZaDXx%XPhO;g8Z?h)Ugj}h=tG(}T}iyJHtr#C-36@koI8E!!d@h%1|yRo`k<*= zx!Uqp;#AE_Q?+~<`F$rRCtR)C#r4o_Da-wi!COjGj(RiA3DE-bIXUW6O(L#Fx*}SL za^?~zp>M>1XOhO@A`OwrcJ)r~KX%_6D)JtgwW%i_WsRiQ7h0u=EpN((zIN2rlIDYt%-#7$85p>UE1({c zWr-+B6gB6JFrYrX5J%|0t~Aw*>#oN|V(dz&qsh}5)hU?Sw6)^#G4V%Y`4USi%UPIl zjC@+;l~|&nZX}Buj-Od6?gcm4e2dq7ct3^rOp-WZmmb-AX`nb?h2p9;j`}TxQvE$m z(q$dO>yOt0NBbMAPwF%}vLUq*y=;Brm7Vn=_%Nk!ivnx^wovfAZTU|maXyCDZmh4I zR`KC(*-%OoRlt;(wT7zhk=%Q>ML$92ZC)r@z zy3binu}RO*yT5yE2pUtwR0O|rTlh@jH53ry(#gz%-ZEbv z5Z|yg&%tN)Zo+4K+c7!%P-}1Y6pH?wcaW2e&!o6*E8o&my^Ovb>Mka1^HEdBFFvh) zmlE(2s6?!q_Qb#s+dD(&Eq)!u*6;6TIm21l_tL2D;p10T25iYUlkM61{-h_MK4v-i zoq;lmtDFLu8i961(3Vq9Mlt{G6Kmm^%?4-dLk?3InRm5je7_w=NUo%s4_B}*=Sn12 z+vxnn0wX|zJYXNng-1t6XJFV_a5ytyfg|HpBMwGJc1K1eW5|56{b8q4`)$8@t(yhN zMg~nRA(nwI_+I@YD7ZpfBazR}Gys42X2f5RIB9SQ)TS4tjqGI=%@-{n$ z6w+WZ(~$RjFZS+rAIhGs_m!JBPv_zjsJVHuE=5U{L5TEWVUCMp;AuPYY44MG@fUdU zry9c48hd%3iIi#P4m^%rxhpNeo)T8!ZO zbZ5=D0?oL=ozcV$*z(rtP9=XU!CGBnId+O)J?X~X9gX)r1cYVh(fL9e%k##X>@;Wl z8ePJsBm69)?k-w%az|OU>KWA>HFMvpkbUH_O=Bn`VEt0pRb|y*Gkd@PRx-xcE(XDx zNZWj3410M)rhrdPy>%D0DqS>wQc6?muH(MitI7--x&S5FC&MZ&cgHIiq~C%c_AfAFex{h-$4J%%9wBJBLw%X$8a zY5JY$8_Bh=4lq8(C2$cpz0p{MC+ zBH9wh?(evKZLdeiZ}aYRxgbxj)L9ylnr!n2UM>T-Y5@NF=Zm$tJ|65Qh=@wHHR+_e z@2tAlPB+Cm>pE2XJ-5f;i0n{z z%8p#S?#RkICu_H$Lz9VOZw71$;X0(s0r~XyuAAAW<(@_)_55AC*?_0c0asG3)SPY^ zKXImQASTsJVFKFUG0~WC-C=frY$DT~;g(Zq`}p!^eA=9$f&658<$1Z22wB!4%k&Cg zwo-Z4ajwRo?7T$z)+ z&j$%lh$2_)mN1$woZ@W|mq62Mwx?&h_#9hM=WS6#a9j)$>MO=&D3c4{3+V?GAR$cr^Xipd=AG6EeRKFhM(Zf3N6TC z=&xGq3f+*hC0SF4t0`BnPKY(Wg$OpAYRAi16;xkhJ^(l$FzmnValY+d?VxRZZ70C> z3v-Udu@xw94)z-D2XK$jl4|-#iqYm1&KF|_-!WeT)i1OT8|A#Ah&!M!5X05<EzpD!oQSeLfTBa zqqyQKZT5SbqC2JH(G7Nprz;u1(ZG=(cp(va?ljC?uzJ*@-QfjsJRvAaDAskT#4HbfEm&H8D*$QsTS z3sf`A#g!jo zqZ<9G)YBQTm9dl$q0Ews^gs>1h)BJ}No$^iEg7aIHfd;F+84nGlc8PRBvZ}U5?{g2 z=TUY1>QS&UtYUIx3{4OppC+SvkhOV`xq~z_BBbAWe+4cBjZzci5%AWd@{yt}QSR^I zKFOHopJ20LbJ#~m@wLO{X?y$L!Vy><2Ww|fW^C)4GNt-z!kAG`<&m*sxD<+u(rGy& zCzqaaP7o5kbmG8Opf!L_pkBXkr+5Y7brhPSxfGo?r&0>~(#JQci^#0`f`syrz8JxR zbxn;iuh{7XTA$JLVRd|u7Dp&)#oE{FMybsyKsxCnqY>EFy_o22rWyyH;-g|hyJEuR za0M!jF=(VlyMJ_8V*=IJl`Wm?)KG?=a``2||1|x}`M;xwEXq$@%2&$XR?1%7&j0-R zU{8M!+aECo|BLxQ3MGsBE&ivJ4Dvto|Nja49s948q=Kxh{I|EWng$r`1uqAG`=6Zd zsk!^P1et3|OG*AB=I;*t{ucQyM%~Nyg2UhZ>6sY(Bjh^|b2-h^rs5bw?O!DPi2?Gs zB=R4DYQDaXex|nPRlbF2INSRAy7>N`<4MeMjZ+4{h%gQIc2q(BD&=`W1T%HCclP}Dg3!g$7p8Bj`HO@<@jfnT z2l;!Lrmdf&ilnrJ6iPx$Qd0g~uu1T5%lm6LiQkVJ=f8OqR*?{){$um^&#m#B*7;p? z{Li+K?;Z>h#v(9tM=#HB=fkL<-+RNfWKeQaFc=ypeOyxVq|QbDKeDCEB2mBpq8{}p zwsh&=^%Nohr?&KendirB>Hn4+zCSA$@`uay=azA)KeF-vkc6fFLQSN8xF)~nNbhGm zH0n>R%0E&r=^rlF?>WBv*{Ur2yK4{r>mCWIztUi+zaSXY4-4kcO~S}OG4TFKxnzF0 zTz_uhmHwjz4L>Ad*}qT|*&nWn>>oW6vj14n@SAeU{e^PL{cySD{^*hTzc-Fb{o5`u z{`VS3k-uvk{r|@}_?O53KVS^}^YOpb;rL(rx8r}L+<)wU|0DFX{cjCY!we|3`r7;T z>%!M>bm{9N>Ff5_9RM8wNU0uvV56e?erw-JSy|@DhmWMEidzhwvp2Y3Zr@c2EWQ!N z1yj8iwjb~C^PB9i+@IXunn!{16+P$QapB2t z*gw|1@{qtl$;P+{O9Pgo$+AH16o8*BeLwAdqsXCz<}r}NkBn8^=gBk~mjaA&fY3k! z00Kav4pUX+T+A>nV&=i_eM`;pk7~I@BPz6{ib~Pnn1T3y+P@4Kqy27OL}h)}&J-F? z;kcL!0HG;=GCm&W1*uVIQQPZYEHXglfhz$nFTV2wR^+RFFN~-TK99_$ShAD>K7x`t zWk80ajMB!VKn5HxX|(vk=z;eDRSNnnpXkm#*c-rwHBbu~I7d>8Vmf?=RZtKkSQ$vo z+d`xgQ2H{KtMP?d0*mB~)p+M@ANj6d`~!-BcmXhPxndTyU-b6lTE|DPC5*C#a0>iD zDpcqTXPo~A=%8f|92msycRT!CRs4%gUE_#1 zLKRidoOrljxo*nsJReh_vu?ZabSV3{bu$-_z~@glgfAmUTRi9Q1iTvE`w1R&-0L#M zbJZL0fP6I=KT&vMUDp&Gcve+%fh4sFzZfG@EO+b1$V1$C7}8K}hpVkAX@mq{_pU#Wg9UwS9P_qKfD?;bs6I$!mMaQS+)~%fHs+ zCbFs?0H?KQ)1%tS&6T#za21LyaS?J6auz+jI6S~}T!k|7s9p0o65%l>Uzn%SEO4Md ziJDm(*hisBs?6uFgyl6HNueI*+I@)5@~9(uFxvI&bDg;!*b*3$+q&;7ZJ%8&?OziC z7CY-1sdviztUJDmvKQE>mhp6`Z(*U)a%g;J$THL7;_Q&6wVRa}?qvYaNR)=|zO+N+ z*0QuwK~)C7?s=}{nqum-BTm7|4P|>wa&*HDXPTSY+p=?|cFR-BYrlQoq|Xh~7o=|E z7|N-!l?*Z2IL%4nAPc^{;%oeYN3<>aL$d&oD^gE*k&-`|JhjZ60fKWZsLMDUrSI{r zM_PQ+BEeN9L=%%$DNRSk`}r6#q#p%tnOg6TN3)(sOWuP`kLJxmInS--47u9Yh387O z&9j0na{e7s+OuB1tj)8|jkEc8Vs&Oc?pR36c5^y1Mp6p(Q3@r~8XSJv*zzQW3fYG{ z6_1P2y({#vIcjBLb^4AY$Qp+Q96>;}AhFKyB)x$QS`qbfYHD3Xm9vrk397_|$tZ>x z8cm$3G1_?G7K>?(6fFgF4Z(m4Z6a+tVL$=Z5F2N1=w=w!m&7u3(^A1qB`LH-;Xosu zXlX%BBtipbDuYD{3bJf<$h1vB=5-KU??jE%{1Dd_sNne+A%~ncc!rksn3;NJx`pk4 z6diwJLDE%3)v!ERG&&JcQmSTwXm0K4gK?(Px^8e>$ZhlKZ0_Y;y&&XA$1_m1_nG~9V5lDgL1A>^<8Ol20Jxm}t{D?j@K2042jesVj zjYRp?$Hbw;Q;3kbEgH-~Xz8>gZ4cpNGV!vNxT%$q|BJUV#2KoPg{h|g`;y&D$oJsN z;#7HaYwM6+FyH(KuWgedVBEEoSFg6-d<8MSD$Qp2pnPNEr8lqJ3+b+RIep0F_7e{D z5)=EEP6!?<$&fZO6B(A8i7cb-F3d}5^UN>cAkdi}6Y@A8X75fdE=eQp zX+)`40p-`e4m0JV3vtmVg>ib4iT2Q1DeF~MRaRDcJ-%7&YH`5jI1pE=cq?dU)_>Pafv*B9#?YQ z*obv?x%j1+6R+6}$IATM?W+}W7v7$kU&jar5+CseDKHgyNnTKR`q~SH1{8pLp!mDK zASixFHu@=GR+@2^UCPruPtsHCY0_-Kfku%{=v~XXtf-;BeF=%IC3*O&+Il1K4)EN} zNT{A727VXDaL(`g(fL?a8_1kAuW1xB0uMzT>k-tbVPFwt<4zNPMV+C3zxee9?smB^ z>yH8r3qx*y44?YiS@rgv8oV)RJe8PWO0-ek`54*#r6hWPv`b3*gy{I>de(Cv*T9*1 z*ZB|jr*F*9E&9AZN50DDTv7>Ar81?Q>MF&>-E!-=uzYc9s@k>@GcD|SKJbZiAAHPz zn`8}1bTK-YU9!{Eey8{`_sUNBsC!ORNrJKUbx`K&lZ87AtZ#J%q4oWNaY5hfF2qfD>i)Y|>^>ij6wANosb}XO>dbj}+ll?2 z-(hcAS|`}Qo1CXPF^4!7w0nlzFcn>qnanM0o1gksZ2mKk>{jih`lfylbRYI*X7t)7 z@Emry`-0z4KPuBxf4^OJrCZO^tkARY%Gfm)o z@~DFzdBsoiQFKd?%)Oy4uPuFgQvfqaOH0Q@S#wPGtm|b1LEz~?2aN&F=lrnxZ~NTA zfft+ueCbK`FiN`HB|vMQkcM;m`V&?_a@hT_pmL^`x(L8Z_kG8uwOR9Ka*vn z>sslCL|qnTqXk!PsHRVcP`!btE7594pIBjocS#_KmBrWwHtM3mje^wvl8eIO4Q~3A zHp*qSuD3BY*@H3H#A~D61J;E@i%LWD^FtHFa^D;;=!-X)ODgxfq28fg$x+>`QGdr+ zBZEr7bT0D?W;0S}Z)^7&SgxHA!$&{GNM}VSvOmMK3TDnS(6Fl}@n#(x0<}{%y!y6Y zBfWRlXDcF2m4SidoZ?h-)4fxL-&SU{boQry{`Bcu?4yuVJzsh^-+p@3b2BEo_2!`1 z1vk!W{T5@L<>h6GxVY&5ivcJ|kLHrUEL6`U-~HQI%)6aAhb%EJ-@%LL z0u6)H84sDhy@&?%+tuCQ{N|M4<{`^7SDHn?0}T^vPRHQvS#Y>y9PV_C$9IgpKGEtf zBC)ym+r90(zJ=U84Bz@Gr$uhQ3=S9YT_V8F=-c}C37+2G$F-5IoA(>5b^rE_Qzbn| z|NP;01}+j6eVS)4ET+mF-t06Wu&gg|F+Ak;+UuWI=VYjiNf#|)i%y?Q$E8Vu2Wo)x zFZMuThQaII-zfFexyq^UDaC>O4LTUOt$;v&(_wMyky8O1FQ<;A z{SHj4{E_O+p$z`9G!O870S}fs!bZw@7i15VoocFi@!&g8dAjY>7pIyJzVu(?k*j?* z71-ewGWDK~()Dg!@p?9iGLM z0iY=!V%E)h==>y%g-)MO(zAU0wCI8^vp~_+$9kISlub;0h(xCmTkh9lV*ta@@NLe1h8w)# zvk${1dab1S@AA|xNarL}Ht-O)M2OY?E9XuF89AhJvL)`0UgVD#hXmI;1;@imM_XB0 z#WA*6OVLhK!D98vC;D^z1-g3KyiKcy^?)8rn9r<$$74a_r}~_0xRB1 zJze7Qev>7mV8_)E7X4LI*nnHnea3_H^vg??LF27g4#d_zg+8!d22wS`M74|6rtNRT!>Xm}K0Xn4+&tq^SffH)F9V4p2v#RHVpZkN`=UG>{29jHb!;V^fB#!QSocSsOnq=367ejQS&pTOsun zxTDz-gL%24s|*o?O4V6KmvOQ|Yx$oWGM=ICSoVv2K+@D!Udp zjGaLDrhX)&vCID;BiL)>)D2=<>M^dN*fuhq(MWyE@WAJ8QCHiu6l@*_3mx^W;B$_? zQ(04Ij(BstNae@LabssSOG~h}2$zWH<#UU6G-cN^OU1L-O|MgAj}OfX z@!q*($~X4Fzrd}>hCSzXM@pMBti2Ngx#$$bk+LXLtX*nmTKLH>Hq#KQB&ui_f;`V@P{YoA>+pC}#uQq(=Z`}tMpN{GY)o_Td4ar!3NI~5^ z)obd$@M6ZL;*(oRBr%nsjGb!A+w!aStC&jC3$PTRgK%BQSQo77m=o>}2==9^EEdXm z7%swox%2^Ni;4#9)0nk?OWW9j|-+OVSn@9&72r3!lSp0P8X^XXxK`TlV;B zWMnBR?b*K6dH3=uFOxI{(r%Znm+=^?BsDdT;SqIE*`AqOwo+Qf)!qv$K|$A>(CSF^ zGjWPD45~xw^=W%ExSJS@6t7#IJH8e4pdrh`+Bb|(Bp<~mty*@@`fWWeUen;rqQEgh zaxs109VX2;SiRDaV-mUj)QOR?A9EMkZ3E%;Ol3tZYjr*KQ(IV2XV-9@k1knB-5G#% z+PkYB6vY$s+zWUX=jj`#P+{8xu8stv(`_d>&DGxf1gdHnbtIV#J^9hcq91Q3Qy&?r zmzR5hykZ%9`88Dc$o=TvM*wA6Ug&VAIOBZ@G_C0|4b!U~D(+L%7Ed1a*BfkU zIF)nPr+WP4ZA0qJL|C*l06~Y*-EOjj3DTtGG=wKSta5WjmK;MBfk7$K4$LYKFVe zox*9)#%~3f3mAoWE}Fvfd~kA)PaN0npX7_CQ)uU>P?OIEb1_0J0W0Yb+)hc-yv=B^ zzoK@++`TkMOuIM4i@|8@{V~BzUB)|m7aYoH{8KphlxE&NG4RsIL6@%hGmv4Zq{W=8 zq&hx-@#(bZ;_TB1q@EZD%di}y$KI?N4#0KrXKW3xKI1szle^HE*j94&I;O7c9zCsJ z?wimXfnnADA$(Lx2u1Cqrhqykvsc$C?6DSg}7O~BwCz6hBqo1gKkAklasMMi#^BaYV0CGZ|%5Ld;hI{fluh0P<~Ho zck?_B$a@e+?@BkJI8Z(Ut7O)+R5l-)GSl`N1259*2Zjh)2Z@preL$7WW$M` zy_)%j*(BDBXr(7FN*_zt(OM;%-YtqZR9lp9j&Y|(IOL(v(Ibd6-IPUTPE?lN;~!Y- zmQGW$p!V)5mi4}n))J>3W=FC}6#7Wy0iT1OE*<`UCUv!%8fnQ~z+cPb*fFUCH4lC8N)@snolXkq8vuot6^K@jPE#3sk{{|5cx--!Q8_ ze4^*J!G;^K#N&~rEu-vI62oeu2abh*Za2i>T!9|#)LtCLllEDIG8PgbLg@QLa3^uM zH>z&SwvWxp-m%*AB=LA9|JFvz^kAOW#ZG;NOcZP!BV0r_Wqu(L%I(Fbwas*e0KI6lV zCm5RzbGaRT7rVx?CD)C2+P6%aRIVN2@q2mmv44ewlEcO{XXKl#i+Lz_&h!I~}sj)>zR)Q$8OsV$W+Uc!{guXC-Z zD;w|>LryM%t%HNnc100#JQmn}T! zs86`h)pfnA2JFYGLurS*&G^r3rt=xX{h+4uy6plGS_#7G;8OutdZ3oXfD%b~GK^y~ z404g0jU%`(QMQpIq;b8FZH@9Y*Sqet&Qt|9NZnRqIT7egRC$$dFH>CsOA=$5s+>f_ zNsdh?OE=25eZ?F~wPXshU^I1Uy}nAj-3xfA{D6;2X8yzKD-YNQZnq~(4)Z%IkL){Pp4@rJ0d zSV}s+yl07RNxhCYB4!w$UwHabkI?&oVlVbtmPL!g>KUH`N2i0{-GZl=(G>1U1*$E& z979=EbmBz`{Va2z#>6N{Gxv3$4{7R}P;*cmUmNPtFP_L=dwT1Bt-{vnwX4cXOB=+n z%lT(%uSoc-?M3DED)uH%XqS8vtK)iNcbc`gD5;ubQF;7^&E?~wZr11RZ$BaopkG@w zO1rle7++iskSmdWCq3EmMxR5zJM-dhzxgp;zo6@sR*`yZ^xKP{!__~5N57<1e-7q3 z_vK@e8RTts+}FIr2ibH^R?UsCOl>f@2w@!fD&;aH(=MB|mG{<;!N&EA>}kED zLIkLe92l-s^mf~DpfceN43odkrg!AG*)n)Ft7D2A&h7Xy3ckm_nYi>EpE*dwKUPGxGr&t$gPV z<%Y|dbGec$l)F>S#6FUayEE}o-FSUkeGfdkr19IU9)Da?FUb=-p*5y^@QN(OI51@b zWp0UlY<@`@!~NRz((vau=}U;7;%DF&T-X;A3EeXT7h!Bi`M1T6+sxgWNQ$g)8}8Ti zlt>IaR&YiI!Fm48i?DwCTwSuvAlWz*S_yO&GlOo~N1r*RD&PTh|$r zFrxSBPBbE3!dqWLzM3k8^ta|h=8J6|sf$kqeHG#D`>ff`P)=vxZtem5cyj6}JGPVm zM8bK}!O~@cd_5X=NUqFn(Tuks2F{SuOc<2XoHfGvZ{MsZ@<3!3B$|$c;kYl5bg5CU z+bz{eTRqFA7GtVfX*ovB+>A|Y|6;mh$T0YM;#sWs+r8r5FKW$EXcMiLb9e%JXq0$*>#YmVJ!w~?e~qglVS z(6tJ5CyQGt9yVo9WCG`0yDAhFlqFBwCuJjKH+M`-1DNkltdnBDbfoyWkX=2q9E3=$ zqBgC<=F&OFt#aOD4I$oWs`cczVP#KbrlIWW>DfC-*(E!#zdDeEMm*1oV^ho7oP(7gm65p5+ zgvAE6(65keC z-(u8ys+>IiUZfA?RXTrkKqpUEjXZr6ZSVTB8r+8`)v7Bc?(oX0D-$CcuvIv=PdkR; zI;jTFlIDyy&4?x4-5E1gjz#hdAQV2vR&Hxj){)kMW56r4Mzm?s4Ycqzek5Pcv^Og| z2q;tR^Tj`xnxfx!UTDLTCzvWjQ_vK01O*$5QvZGed0(+LVmXVW13bxDp1vO62aRR; zbi|m2ny*e;+aB*SsmnGtj3Y8)5uVHngXqu-`WWcB^+qJtfQ5#G;;NF2ub&ssa)~xS z<~Rb*)wbva%!dr^pSRV~NtPal=XbM<6a1yQ5@DNn7#3tRI|U3lLEg(BNf4}c9NCd2;-s(TY#%iqaAh$ne* z_InS6cE>LvJo(xnul;8PO|v;56tz0#kr*R*%p(vID{gC+p+{|DjIq@dr9jY!98IfI zc;Yc-j*BUFXjIS;Gd8)pJ4h(eUUk}SMY4$rjSV;-@6%>sCgO~(Gucprql8?#Y6ZR^{|~3 z20k5>^l~g5yE|g1B*_zbE+A}Eb3=%#{kU+%33V3QFHSn}%SF$Hk7TN8O#1TT^~$8L z%aCtX@oB~<_olrvEiX4cyP&>7oJY^#cOvAJ1FG-et|TAFRI1V(rYIJn60RgUKSLe8 zm@tjaNo@=5b`MVJ3X8|SEq6v(Mh$XLr6Tx}i?VIj6g-4)w}sV(m`oJZm{C^v0=HLY6?m zKl4M0Y8SHt{GEK)hRF)MxcMbz@8-<0Otcc;9r!E)w8srCX!Rfx#dShRAO{nK$tJ0w zfRcE_6h#VYIWS^rhD73nO_`yU^#n7(_%rA&3jSg=wFUO=1G12ZQ2-N%Wi2Axn3IBEXggJ?IQb zJba)kV=M-mxP*gb!+<4|aljeB?xUnhhBX*yPr|5bpLDHf;em@xAiuiu1AfuOfCFZc z%wm~HJG(Z>fb5k!66ojQ8k|v3f7x0Fm>boTyvS`txnli9OSyu3?m#*KGzIinIs|_w zZ#C!ou-XrlB!q<_K&V4|W}gC{BgcI$Qm_slP@{*x0k`#&nyU0;AN1oh_$%PMNOygs zm!b*|KaHR=T2&jF%+LZ&I)X4- zDz&?>4DL9a1ac7+F}Mh`mh6x&d+3O4)yt#@R2{Y~n8XNytR(e?Yb2vetzJqcUGNbt z)}Uit{9@(;`G<^B5_b`b0+S*=`xWJUghd*&cJLYa2Yr4eep7Lz^D+3C_lUPOBM~)& z62lF@l1Omk@_Ba%;DD(CUH7G@w@kNlO-)R$6gV2{HE3QmdYXgz0PV17=d;c^z;2=7wTHaRoY%IM@W zjv@xt!rpMdp`**s3RbMewpA!k!$N91+7!BQi{O5by>3-(37q)mL!l zs+kxc2Bm#&uY{ z&q+uGaZ9tqR!gAABs2kJN^Vi4vdACGv*?`*6b0MFov}L$Kylp&CeDizQi{+$VCbSC z7Wv?cthKs{O6an1LO`KD0WV==PUtBvtIgaP%dk?beup=(H@vO*=$>zUHv-q&s)`5` zJ8aZ7YZt0IRTa-KqIrm+GhJ_RQHlKlHMuE%llEn0| z*Ixt|C`Kw1;Z(U{3+YLC5N>hSXbI35yc`RtQymTH?`AMQjtIODx|w%k#o{bXH9K&jWhFQw6AraavNgvm8r7_Vv3c@Yq(9mI`qqlM9dvzxG;VHrHSuf$YFDs;)hjkDR>%bSZ~Cu*=6qx9PHuP zShZdkqKMe*14ewtB5z@(q2zVyuEiiqIb>*+l}jA3-DUb{?Rn4k76;lAN(VFr!P=NH zUZtmVE(?QhAdMDm%0T!LLpE3f;ru*_E(whG?VhWg5ES+kN%H@t_+$LvKW72^FZF-C zkYDkCxq0{m|Kk7tC*pVXe?Q#rc({L3ApA-INC$QDvT&6%x3U272=jB({f-Rq*ZMy? zSqpo6kdmVrC*3~^0lC#Qd4za=qXLxT=Kgm?fWO-9FNJ_SyuYIa{5|#Gucd##s_8GZ zemtDKoREJM`|)w{2>*`Q@0UCIjd|{W=WzRThyVH$_+J(I@$&KiP&9pS0PlY%^5f$c z7Wl)4xqpfL{-IuwUr6JAEAsn8J^X)z$dBj$RgvGnI3;-g%m?3Q7;IBh-K z{&vCYJNoR~`LpA19p8>uE)W3#NjwAqI)GO6#+d5s=M^t!9Ds<2Ou5Jfb;#0*U&vC+ zG5*DML`G>OPHp8IJ2v)g>(*5+zmETD^9cZ;Tg%8=KYV9xp8Zf<(WZzV&n7Ae08|AG zK=@E?#mPZP-!8R^B$4Q)U;sV@IBM44wz7$w$V!>8&I0g_@c}N8CV=6AgKz)%GXst++@C3Np9SJ*Y(Xv9=U$&dK_mM)!W7Ows{sO{$@AAh3!6$ zqU3#Q%;@qMy6^KqHG5#EE|u(1+_)4eEQXdKQ4urHBMJljR7)8#4B=eDDf+f!YBqpf zg1%Cr-b+W2{&|^fWK3jiE}N(9lFmf)UUeC1Jg=6f@=Y|IeV}AtB%c&&TjC(&AUKgtX?bK4wy0$L(vd0*5cPEG-3@*3>}6(oK$Nkq0shb|RajBE-ckxMj}LI;K7Nt5BGyjRuLN;AuWl-TfW z^WtsxscdDUGFywNm=0XE2^$Hh5?Ul@?h_EK;?TuclD*JQhS6`k5?@(&#@7Pie79Hjt+FMV4JMt0hD4kOq?U0L76(+!LCTa-_`kcp8Yj zcyfx>h{2#YiqewCg;D6-lK8=3BJ^N9m?nWiExwW%VTab&0!?>nnPKyMk2sCfiIT^G zoj@T)ofC{$vkfGWm2kr*)@^J=)eyTq_dV*ako1@O+m8uv+1^>)HKm7NT3%Y7Tb@6A zxtDU=iogY@{8X_2I`#GkY5sKoGoJp&57*2K(euX_*Dn@JEqF3jUaL9Lbw zq2+v2e3)1A(jWE2f@sv^Nvrasl;?x%e7Ue%q{>P6kr5h1x6 zI$?!we!W)c?O@_OZsckqRH0ovZJpMI?R1RZa$QQDtuER52wU=|uLG}1Loi-)aM6{B zXvG+h=VSLlJ|kvEtDAO1wz#7rPpOe0-&`^pJM{d!KZO?sp4}r7L%T@WrA7>(g&&bn zqK0H#ew^HWaP#=9U|Uy1+9BPzic#7jQRT=|y+TdPnItt7sgX(nu*XkLe;jXy&uo6b z+>?ZcR;JaNEWT^Q#ATCHG~5iqLs+W=0tK3FgD$8!}T#NmYq#6EsW6< zfJF3?0idm|EmB(Qw|w3DFD}nN2~H-Xe-?85y-zp#9a}v89{p6u zg(pz{%8eZ&;fUz(-^30Mhx&<$i3Nv>ACeY5(_lui3FLmtADhJgB*Mza`=H7U zZxG~VtYZ0qFjz?S5EalA71UX>hZ15si{at$hM@Ni1p`Sr@V2qERaSr2;O0ib1J>$^25ZQ6KM|;p+mC9C0u{#w z21cMD7a-%;-@s!L6~uabm#uV+oVqenln6Sd@dZchz=`IG<_L<45{ulDfp8);Y4zsw z@B#ERY3UM7qGcQ*36jL6t@yARg_fMdIo`ljeM>#`Wva#bROVER`s zNRKF~$ZF)8+F3bC=>QkzsvmZ}e#VpVh%8$19xniEy9e~-LO6r13j%{`qd-}SD7{^D zXK4)Id)qxmX?%EdXxn{eFvVu$a6Pwt7;Dlj&A|8Wy=T=l8{0N1DW+e4QfAw_1^;1Xg??5!oA{%4Qq#2I`U zxj!*g6z{9p&R?}@alht~4875JrW(E5-?pEp;#NHd=;CRfy$YsMoi_3%pUrcoo&L03 zpJ6?QP@}7tnkyp!O&bEw^d7HO*raTCPGc`rVGR2k0};wsF&vOcNBSt9WE_T*tz7`} zeBVEAam!n7AcbQ}^1nI2C<3W~pla+Ge&le$ zc;&25!bJ8}_VG;W*++nu9>UxQBK-Ym^ouZLhhE5<{YBl84^xO5x8;kR=?Bgt9?=^( zi^b>(fn9}iW%o&kt%j#dXBOtGR=P{Bvn6;772R?-#3ULvBVwJpn|)u6hwW#y33uM46e5&{rh&PA1}k7_)fLEi&YWY=X(q_+NIUm*vV`2Zq;|MJs9j- zMM<`Q^;(7^dzA*ALdaoSa5uOFlQ<8#GF{Zt@A;zI<&6E9B&FC>5Byeof%CL&olT|8 zoV{b;x}iZ30vXc0$|ZZ!gaKXmYF}B62Gv=Fl#E5OU20W#{le7lkmyupn+104Nh$%i z6@Pb5{nH494(LdBZkfS`=8b-YMXT+tN8MBa26_$%IijHK=;B6r5+^Is31sROU|%a( zwjGU44@bRP*uv04lhxp!012QY9xdAmM~tt5q+Ri_t#Ia#g?v>-;zog_VZB}YaTT_G zcZVrb>kb<1-XbGjmTZuh5$p}SX?+`fi7&|XX$e&ux7RS!OWk^3B&Zu@BMMIy#rk?@ zAPT>;p}cO_=X*;^qe9lxrg+qMJA5@G9IjGdeer^{hnh*sdrJTnCh8%BjdwfLo>(+Z z(E@*Al%xznG7C-)b&rhxh;Pr4Y7tMhb1X>I5j}bY;@^m4mv!2r1Dot0& z{@t6}_mQzOMo+`Cd!Ky?%Soh;+q%%M&C`ZMeagVQiBt)LAh= zIVrS1-U*U+zYay1vHLhRz-6VZh!;;O@%V8-D_PZAdsdBW=?dJWaw_Y(!nOYh7_M#b zz{dP_bZQ{%p`?5$p@?TVOQX<8*C(?`-Oim7Fe&fX@|Oo4n~hI~DoF0Xa=m7w1f^#X z?)1p0za4UUFX{QuZoXL>Q=n^wpX%ZJD^!(`TSTH^pJjg!B8~fP9 z4QQ{_%jK2s)9Sv@)kgM4G|{!0YKPL#@jq?#bX9^HGS;)G*`?6H(i;(bnmQ?=`uG8F^yNRL(pG z;`P=UJw;uIyx>SzK&`JMCPBY+aP8nnF887420$Vhur+w=2@DYr!}cdXaK~~WN#XQ0 zeT)EYyu)pfuYbi^Yb-&3@KlU(;?RLRcJK=GnQ*fBTOthFQ?>1LiJFmPeG4(__qyTj zh3#bb-=2Rv{?hbH+sK6J8q266tnL1()j~&pGv~XS{AywKx{OR$e?z_l2uVe%wtB|X zkQ=Vx(vs`A{tm;ZNR#XWU%s{3bCa!3U+TWH@MlOA`VxY5Jf~@8xzb0?yLvcMKlQ|R zy7Qq|n^*SxrCWJlcS>@e5A>`hPwy8oIwH<|TTPP-*6um`GJY!@v*wEn`+^&oAE+u{ z2wl`u5v=fRZ?yVS7}}Ul(Pb=J)mKyRhY?sc427GHFX9^7h6h8rTL zo6CW$_|v>D`v46IL>DX+Od5e|HLj(v-UCR;ozDV8n(Iez__t;$Y?Cvm>Gij8MuC3%@pywBv z*+-PD-p9*4O+xOm5SwDumO=L*qjQ2uT<5@;ate^vh3{mKh#0%R#i)pPpU@}{1-esO z0p-`ja2vZQTf>9~gNbF=VNre5QRrzDGKvr)hMrv6VgTpq>C~DFGr0 z^wcFDDlfuldVDGI;vjZnL7XGtE3HyZ4J}PWL$@Rjn^mENd>6OvEz$UAWl7SE>nQXl zQap8T6swdw>R?+Y7pV~*XdPXEAZ*Nrz+HC#z>TEf!Sns+bS{LD3>`5q816`;8iQnuvEP2` zIwjO_*>Gv>E9iL?(k|n6+RzP45#*-~FG?hji9lIfn{VuL6!L!Wu6M;sgU`XfDe4_i z&46#*ag6acTAHz2g9)A|t%5do47L~TN3NPD2ljU;9f^j8g?oooVA<5JHs);>Y)szg zm4a_HPSJc!-N!h*QSff@EPIeZyT>}o5c-8#nY@x+IGQSGlpF(A^(iC4IhoNk%X-!a z6+fZ9z-+*l4EwHE8VXO6!&G8Ixgq?1?i_H6qtPz1bKZuj$VqFP@{`MUcw8>rTL{?=nm2yQ;%@A80JLr~r|Y*>*W4SGx#Rc^+Ej zLPCz*X?#gUfqcXr6BU_-TFZ^r_|z;93BQ#ggx0T_6h*{F+PufEyL^4liXGj+vBW(6B3E9-`5J$|sprX?zhJR2ikkM?>L=K6lK2vzMV-k&f_d?o-C5)t=aQ*G=nm(NTZ}SSEoii zmUQh!-M@E%3&m|j;3k0p5g1xrp95nFk#Sv16uCG^th*CgD7p~g zXa34h5BYu>|Mv4=J~Iw$iysN~tSlTYoIKqA02Sn4@IQD3ApF1ff8+lv|L=b${^Ec9 zf5`v%!(5I(!{qpTAN@#w&2so1hQmMM9sD<(gFnUU_|MQ?{y690Kf^ZpKhHVf{r5Nr z{QoBBfd4Pf!EfWwkN^ICD!{+O|M_@-#UimHlPe~(~Z)}W{c(7k9jE&^K?G>NzRbS?@(XZNIR=HI(OOmW)^NM;6dAaj93;HYJ73ab&3K4<~u}5Q?PWfG$2H zbaQMTY}CL@JltSQonH{HHNNn%Dy!EMN$eOCqeLv;H5G?G?O4qJsF5oBRH|gYLl3EF#~xv3 z%69_b`z2j>W?HYvL5fc*qQIwFu3d~7{jRhyExNF>dJ3N*DG5E1 zj1Ei$MM)%(ON@=7D^#qeQ;ebm|6n})^h=)fB42umM%u(++BFA{VQ~Qv4Z}_=fw+D@ z`~^l*@zk|(m>yrrde%dt`Lt+Wbjt^Wl6px6z+u)m>FL^LTnq$;i5fbr;0)FZlO@NS zkwYKr#U%XGI(;x*eN1^Gz7j1EQBnSZtQLtRR8||LM2|wGh=iO-N>3L^D@lZmr4{*H zn&<(FXmX?09b)m87+U0FzIdF*hDB+NC1=dkE=id=!|^lxz-}OilhiZ(M&Izm*;!*w zamfyTr^9UO?a}KOUl;^U1eLmq*EC%&eTylD1LdJJDWX2Sn>MATHkEDdt@<-`rLPM< z=n+dF2i4eq*ts$B_yOKi+1*OVdCI{%4-~X9B@=5>Sc9uMm>k12iAoIUJ(6mptr(tA zK4O01CUz)ejo+F9esG=M%-0bRcRRTv#5cR7k~tC1Yiv$Sr%@$ zM{x7Y6hs)iN3u9;%k`15d3j1(`*Ej3%?y?60`1^%5();!P7=N}4ov-+7`*Qp;*RIz z<7k8FTe0H(S&VHc-L655g+K|M!NO3Av7m&vq1cyOhoxoFOPK8au~sASsGTCRGV6Kj zV}YP};b}G_?WyGI?l#XgOZ4)#Dz4^0&9okYqe&AB7yWy*AEo&T6?NZChsQrL*R@yT z&O9AGV-3kwtOw3H&6?3Pv%rckNyu>VLsb;KkH~P($*^KkA{y@l#+;}T*CU)iZyd+3 z-h`V~={b?b%e+sJ6t6=$(mc_WocAoxl8?UUo|?sYRC&ls<=kEC+jlzVgcBmQECJhu zU{XY^QOQMAK@TbVWJ($*4ZX4AJ7FDq&_!}AphDoXXhdM%EBqc~9vXXY5^fH9geUpn zD5jtTp_B`ebU&=>110o};bUof>~8mW3h*8mGKaX*A2x=vGFw4>giNB47TeFB*Iu5k z0_1ar$0W*dt2Bd$kF!9@!N0t8-uqz^=|lN982vZ%mPw%!ILXeJ${n?;8%z6dnNE$6 zcZ544WEF)!@(e{#p1(%|C*c`(K&_KV5#@P1*YNSyDW!GQmZWVTWNK><@@vn$e%$80 zLg}LVL$&yD7H9^)!o=2}D6Ndr*5c!v(&kq#tyOCZLL^h7MI!D0Q6JCm%`lj8M)=9U z2>i1Po9;Dk_1n^0s*L2xhdB-WF`R^Z6R?vpS@Gx|y-Q zE}EKUNVF&&SC-RC8Y^}k)vayf?N!dn8QSQ;snf=tE^5$j8Fb5fX*mJw2YJCJ+J9e%aH;Oh%A}reS`elwHSjVtd zoIMv&1+1Yl>Iq`x=5Zf+jJMxo-JqfUM@I3Ynv)z4HddVvC$jsW0VRuNC4;%B5WA!y zPl;gh(1uPv|NCnGLOd490@`sh$S}}`LGL?brQ;-IOgwNO<8j`nfhFk_BB*Y!ac_zl zy1cbN9VdtZK|Cv*5B_pE=#mk ze9W{T4pAeN$qX4?8_A`z+%K4$?dMv`U$j2ON$T6c!yi^$?dVInhsYe-BS2dvBiW;B z6>F6^Pq54O2EXUFNyh8m>d;&hEo<8(I^I03ekk&3Fi!~Pbc6A@L$chbkC8nfIcH)Z z37dwXKgEVVzqY!>m+p9fX@}e%7~b8j>FW+M`@qgjeiI+jm&$V_CA#9KbG4`+GgqFE z&B>E0KetfYCWu`RkB-0M&KJi}o12<6sZ;X!0t63NJgi9XKy9K+SBrS_KF#yN9`S>Wpx7%hAh3F6AC38C6^C4(u{VT zD|qaUd0H~A@(5wEptv)5rWB9=>4Hd2EVZU0-i3e?B1LGjkr3x0`%%|M z^rP5Us@jJ`BsFPAyxGeHYFB(QRHKXawrsTdUK|Ub1#Rtl2*sGl(^Ui{E9PYK(o8$;``%=9L&`U|vVX>{$oqTIZocfq_Upvn9$U*ry=mbHWvpmc%6g!wg zb;*V(tFaA(V{8v)xYLrk28%M;a&OD>)Gky>Yp=$eEe+5~dc1@3h^!I4(qPLu>rq?W zuqWnoEH2wuh0}G_A4l#ay+bky%}-SK3+jpOu8!Zbd)o_j8hXvyEm|k>4#^*!*S^bu zcd}*`7Fr3WwcERvVcEI7k1f5RWyi8x=E#+4M(3?Dcy*p6%|7!CApyt1%0qXzjW)n% z5(X0r0nw^N1&;vuD$4tM8lO`r%mzmg@2Obtl? zeoj7?hN;|`fSc0X1PwUe6|mSJlZd|Q8w-6%{G865^aD#$S%LhHZSShikbQKg%h*su^?eiPUX&ct=Juh(b ziho0!*`3bBxw!tLG}TDQ1HE+cTv@SOFp69T~>ihv#f1AIlJp$e8jn(b3xVq>a-?sTj+j#F400X6y})YPhg=> z>5<+dC1x#y7;gec(4PdAW1LRgL zUJkX>7#lUewRXw!FAwp$SHCi8f~~Es?i@gSwt}Lqafod;%_%;4E*Ej)H`BP}=~deH zfNh37>g{PP*K2L1)cjGZ57Wo%ALKtH%l5q%mW|u+Oa6jj(Hs_K^T?Li0WE6%xk;k%6j-PfI$0|!Jl{;DoEztXXqKeYIz!M7J#%Jg zMhzxK>!H1kZJqxGEH0KFdYErK4l|0irb&b)iaW&~Q7NP;4T~u_FADgy$j0VOUZ}0=eDr0#6oN5*l{TkSbyQLmXJnOf>c<9vYzg zm`LZ|P==ohZvB`k^}M3Od@d4b3YtP6kH5%I+-U0rj2KA5-&DI5lF1me2S*c;A(4}H zvxnV}H2Hq%!YN|jj3N|6!fWCX%II>Tz+UfKlV0!AgD&AfFV`9IXtjb%lnYpszg@~y!ykG-^rAx3i0nvOFQ(W` z#12-N&qTRSVY<6mR7JBM(%_eXUPfS$$jLD^6=$$~jH}pRBq80WGk8mFx&d!oWhYHA zzQje4>9AEnF;jdVEQgB3kBWF4+Yn%jV>2xh87IKtEzT>z~jM_QJ2(6kQ}8EoV*BHTcYO2 zO%s$zv@kndQ$+>ZI-d{-5iYg7beJkCQqJknvTsi|8l=&M3MKp^5eriZ{btOx)+Nn7 z`Y9nY>ib?d5J0M{=hLo>{dBxD4bS0N&fOW*&G&E&M6jw zKg-T}jiMqar5!nDMToFS#MDmhs3LVyM1|y+(YP>RM!&^j&n!x`-z+^yONkT%f4)g4 zghpgSW@+Pm2`nYzSx>@uaW1H;%B^ekL+K3;!&(>$LzfG!Rg{~My)Or*E40ycIX<8i zI>oXlJ<3>~hHrOpQ*+X1zzZ%YMf=>|fa%?<^n|d0oxz=3%>4MXCij3c+!Nu5zPOdb z#t;f=JwdFc5e*Vjps}7$g-o=fyvT_X-Z~_qV!anHP7WODgi0@}Z%f|j3`B!1N@OW2 z=$P@RJ zp#Op+{}G0i1pUn+5qWE-VMLR=6}D4_a76y{svS2LyhJ6Q;p^M6OH{ndxu}5>AzpZ{|k=7?}_&RP-A)j zRAYJnL}P!?Gvaq)^nWP&Uq`Yb{~nSJ`LBz}&#MXiE|UFEME1W1vibfQ;QcEgo9~|j z-v0<@^Zh>H{qstKKdtm<0q-A|X*(N7^Y0x9vaqzYF|)C7H1h#*gUp;g+$`Kd+}?k? zVOm1IA64Gf!o}l9xvGh`s-iDQ9K<8cBlwq4|9@lrk@4T368{7K)%cH(kDH(GH{(AD z?_cA;|3v&9|F7r(djJ-Up1uBdh5Pl%w{O?aj=z2V_U+pR067?dhX6ptmi%^OY)1Wg zx6B`a0tWyNO|}MTP6!m+H42`n~M(YTIt`UM1GHt<=q#4i}Z&j}hIgt1~sV?>UD z@W#e4#27<+Y<+F`;?&>S)G@vK1V_!t@|F6evBzT#3`AtvD-96*S{h4?i8RUgz1Oh+ z&Tha~N7kf$Rhq!EoAOf*;vdBTgzw#hO-)2#Lx+z(rplwD3jV^FJP#c|El|%xkTjT?@O&p1p^89*AS^mn^A+@d2WIFq zW9}*wDURE9TV`@7fBz#x$CB(9JbD2MAFcylXK&xFym@;%yp5@eF*l<4!0Y9D*_GBh zAken33M~aZ(?o}1F8e@QxmZ@21QZ33Jwb#Qx<)fe5o^&3(SAkkfB{U#Yv%H1#B+81 z9&^=gP;*@8W~PAnzQ@xSkZ7|>mFZI&&dl~4t26V7K}`Y$qw{Gv2sdtKU2X}+ zm@U5JsGkp8%xs>T(i<7f*m{&!qSKo$a8zAVjY;vSrSY1VI%muxi(_QS+MvpMsWZgu zv0O_$i^J;&GmgVeF^GGPmtN0vjfWiOyLv6f$kRfRLDtNe)}&V_%XmpL;H3dU4!ySa>LO?io|RAUEVW?zvQJ)ZjV?&Q@))oVUj_PK%>x zp@M|EOt~;5S2{cMGS18xc?j`O>nx}Uw+JecWqEm0gj(7x&N||!tM(F6Q=eLK@QM?DL8o#g`-n+LQH zSsWPYUMQ0cva)N*V=8xQkiwr6rJBY(ur7@XN2Tkfbg0tOH)n;FF-C$RH?&NB;r)^XKfac6RR*otI|1GQQ6;VPUIVM@A3Ld?8u-c9;6I6hhKP3s-oe?f(N_U zR$n5fQr2f@E0L|FQobRLnyPIrdC{23#mc3?uvDwx*)tx4ZEH*05RTBPKYK^|q^I$`L}wQnji#YJPJqr3ER7sK%J722G^ z5@ICc-kdnPUJ(*zZA;|CU#DAp3-lcJci<5%}4;e{b5NueS~ zBkO~(P=X`7l+dF&_cEk$T?%YNLoqvkF!wu7;PJw}H4@ zvin~QeF|UaFz#-s9KAn5YWX}D_{28o#_i~UE|S)6<*ob5NRhnb^EBLHpP_bqU#6@C zt+f#HX|!94C|TKF?-WoGhHC4>GUG#X-mYU+MOIOUV>GP+k`=&L;B5iZR#jH)hQfqAQlHc@7 z=C82e2F+X+-+1|4&C{eXZrVX5v2v^VIR|UeWhGe|Rp!LbBlIW!a{XjoO#);aepd8+4x+rl<8NxDOSzGG z8RZvvJ>m`LqeGXHqgbu-;uWQcG<-59m_I%UBhx%JJ>=vr!@Y|&^TXBZPK;nREp&cY zHF*($X$DEnvpKQ!ZEM=S;G1|l`nN+m@&ELudxTKoAL#SN)c}Qmx$d#@1?y`C;^r8o zd%cwiYU%(G3h}hm`Sy%izv^hyos<6)vz6qH1Z$3ju8T$KmBZY*xzC70qUaXllw3@GBPq;xi*~ye?hxWk>Fu8 z^Fs0SHRZZYH|2JE+%rC4OAwr+Fq%0`!thqT;h7pL@%LsKys6n);>>dkS4i#rw1dVm z8$U-7Qh_)$^>c^oUaHq@u3VqpeY-z%d=P*%w3A23beJ5u*73ppIg2Bc@Fig4jlK@V zdLpqXhBKSBcZ2!^j+)#_Di#He)60dLh!+Os)k91|(s(%=@dj-6&&wX}hU10JnuJM= z8VeavEv8V~44cnBEkf@qsFPn`cl+iO4AC)>RJ@Dtw|Cg6KeAzEs@c_kn48*cSlY!1 zlMSm`c^QH2dF|o>T9CxU+uhoKU{4wN0-dIxF$XlgmXMDdZ$myGta%})0jSiHe1|LM z7L^l5JRDVr{p!;bp4zuGxbz#d?yMHOCB%S;!CT>klCgjRv{`>JD1SS7tbM$iP2rt+ zsg@$rAX&eb-a`m7U!IvI}WouqWuibc*|48jyTKbjk8F6WQ{m0VJV2Rr59|U9g>-p|7GSNHD{TROwO=(|NB&L7&i80#4 z&AfsDv9I}tmyVOJDv$bYWuoykNj!SdCG{vL*obIxEZ$so9#00}GKWpsGLz_gFqepb zIrqi&ZxDVj6CmjYO?2pd;}zIi$mAtpDptEC4%}~Y7#=>yNf*}b>1WlDNVS zXt}`uLjBa3I2z<`*-jbArO;$gzhL^MQV~|y?TvBl>hDMVTFT-QM8h>`B^2|~Vu=RL z&i4govm$|{Mll0cQfiB;jq>QV_}$z4{5FI43CAF%&yWJin7GDGYLQQP_;o~usYXGpk$$eT zqSoH(vo)9o8vT*qP`%zBsl31AMb&W6Vn?;m@#1(yjMDzISlZ;`!CN_eiG(os%8wtPD8DZ%8~GxFK&PawJ8w8@ zX{qDJn=|@U#*`7pkGr&sP>&g99AWWw8zgqtyJ*uatAG%FssqTevdcNA#d=HXuJa~2 zl<@7C6x&99rltg(w%h(nSrXO*%uGRHlqi;VRzZ(eIhpd@pq+yc|DR(k}|4 zo^a6RX19|23?ffCWQSsP#C3LH0AxU$zfT%eqbY$~lj=f0cTB<$a3 zDZMwOrR^~Bd+qUJ9Y>O!OmDdY=BT%W4N5MDjHyq!oCXUQmz@h<-C%1>*a}?Yrt|ju z-TKQ!DhC^509GZMPOT22y4o+0@1F99zYe4rp`&X?>94RaXqKUlKmAND)+*xZC)4@f z?e>|7>SEPL^~$vE66cz|-C3>^a$Kp?r@==9YOH(jvD9uj+qtM8f6L#!`Xu0Rb+hqe z!J&R$Gvzr~d&A1p>+kc#=i}xIgZ8?L)E`7xbthdXI*R7}frSQ;Pefw>DD;a=1j5@m z>B#WD&83#7SyABPZe9l9MXn#Kxu*4dVP#D`mD6SosCc;n`TtccKefqZ#Pq4J>`d_qIRY^7&IRyHJVR*!2gg(dRF-q%-xrP~b5|v*L_<{L-ih$ALeIX%Q_FXHjB7 zt_hd=J^oPq@#28(L_6(jWm%!4`rtSMJ@tbF;u#IosM|ZvlDui8Kq<5{LwZ_*s7 zlxWR`$HLf(7d9PZhXf`PqCzGHX71a7T!|Zbd6d>BI;-nD_Wo$ferA%82?k$p!Knc{ z|1B%*r3NP@2~0{p||Froe%Gk#}_Pe-}^-Tw(~aACr)AX zeuQqwlKRCn_Xz!kqvR6T+dJBKXH{3g*V>F1at#GbuwWV%RT>V*wyoK~4fsBl6?UtV z(xbr*!~F6QOR_~vBvSgSl}o?XOwgP_twQQGtWNil&8KDyB<8$+!Lo$X_T-5-W8JEF%9Ee29c_QTd@bgac|6uPd!`j%^z8?tgUc6Xwin|mGE&)PumqID-+TiZ) z?(XhVDDGCgxD_c-pzYi4efH7)oO9lOct5-_OAV9F;mX|9#ZtZ;HMgl z#-P;8KH~GWm^@m94_e=<8?oWAVslBs+rfB(oyaF~vT_Vp^D=cw)g9j?_C>xJI3YRq zPF7b}J+@rL6Ap0Pp!ZUN1x3cHGf{abud`1{{l&cF!?c)brCv_U)>mtV8gV9 z+K%;==qzZAeLd|ww>s{9Xe;gSSN5@QV14?UJUZGA3riUe`1bbM49mQ!Yn#K-V;l6# zr6hYUGycTNM`ii9fU8@)V5&!>#Bp%~nKm{mgqLhdREj~wCuIg+MlcFBX8veA+H2OAjr0XQx99|+NvG+Y zbw4ktpa1Qm_Ns=RQaLp}=SruL2(zTM_J^fP=Y_e!bFZsH21VyZo$bcok{K^HHvhZ~ z->lNQr9<+~dz+tE$v34dY!HqT4zWj=JQ-w=`_Y#$fV%#Yp{=3t=bD0j{-3c4<$ak| z-}gCA&J>YEnGVB>ma*odBP=DtCZoX9_!AvJciL7e55)=g7joi+fy0YC)zB+tRECc@ zb(FpKc^$Z?NxHh4XR@-qOB02+Ie`%QNp4=hBlJ1a4+pG@gvwC`pGvA}Ft0h;J2j^u zw-;YO#{}Ww>Co4ipRIuEW~>WzSh#dpXjiQZmaUsUj8!>i4#5GwUgN{kn2>4g2Xsx0 zKRl66?GW!_JECrQhj6nr>i^bX37u;;FOqAz*lKo2<>RHh)XH&Tr8e}xIyDUZc|U=x zPqKeiw5-$W&+=(kKuuq#fWsJ#AhqW`VliSgSh8?9l47w~rjkV1h=hZUi+a|--RNMY zJtO;1cOU%YQ*mu=?KsnUQO|i%^zVwavf}})HT-;wb~Oed`F#^G7(2m=AT%UQ5=0fx z&d$ls&K?abnsVpqWW7rO%MoEhS+m@z8Wxfow%g1x&x!wjJ2f?pd&b(OT@6jQX*)HD z(4zn&lox0|FA34}-Ju{#-Tz^$^BeUm>&vOBNv%;jKNhK3HGDfz-o_vEu1!on+gVKd zS2IHUSU^9_@zdfuy>#n_aI=C{nWj~)rX)wCk6RZaUTfqRleM}zb{Gj64R2Gi?ZZs9HgU+%1QD5u1q_Cd$?GRH zFohu*s=$nZV0{(jV}jxUp%iIQIA4JW^0pse#K7%|-A*Htiy_Zn?n|*L9>?)W<0THzc(vge>NGCk>`)-Et`@1jLCu;YD7%Q+OA2 zzK0v~p2q>fT294KJ#(N)WLO_;4lW9r3;Np8=reoLmn%*I!Gn->4q*ov5lX!Ygxku& zzpJy!kYLAKCE~WPog(xQ$MPcP_mD?w{p6$8HbtQnFD@gCOmWRA0mm2!HpO4yDz`e6 zTaaWaeCPCCFbc!^bZ4uQv8=Ot-peDn1t|Q2DA<6A5|B9_paYR#W?E zJ+xzA^MP>fczBotH5HCSfCI?Dg_powm=q|uY{tSc8Kpe>SVvmy?jp{iB8&ahC+EZyCCncR^vO z$(m}qB^?CO%~ux!6(2v8HKm<#Eh3B{`LHRNhQ=8N3NUC(m4w(a@Po^slsI)#ewThB z$XU;8(L_Zkyl9Sh=$KM{P>=PrS9ZB4hRmHZ1yB1trYTaZZ0T9#xO= za2=3hghG}&)3C~XynJP8weY!39C{;IW`rh&88Dri;BwF!hw^d(UXft%LKVNVp=F*5 zS;47TsllPZW}mfP15$avNM5w;JK~u5LDSkInruapG>g8u5nJyQgw<10vazuPY2|KR zhQ)8%gNk`GOx02cXQ*O6-$WY&r3{%KGZjb6ApR_KI51*dG;HSG^B(pQRxWy!lDIqb zCAt*An9=#hzA)u{ao8(6}1 zMDr`8Ze~T1^-y&rQQ*(zXM9y9p7He_Bia#tvhJEoSd$NEiX|t&StSgs6kXL_`#{T8 z1e-8JooPezN+*4J9Zn=8=A3&+LG7!6Hfkb$Zbn=7#83iFgKCMh9;qX^4MF5~t&F87 znmrDdq&G#TmX0kCdoYGWZ>|)VA~UJXli{R#r(amszpp&lW&6Wx+OK4zb;He(;w9+F zm56AV3Cr~!7_~n-K}FYPxBn^MDY4NBV{55kH;c$4&AJR$G>lhL(N`R_7cDEKB%nOq}v%3^~v z8;xFq8r?+dzRnCFRRNU!LWH6rBn!)j8L>#cFhiXtRIv-^-J39O*#%5VXPrS5PG>&p zjK0PQo}`}^wo7nlA9B>rR#|U-udN>iuXfvq;hrR|$U^$1-RN^=gYXUJG_>RE#jY_G z@R4c?; zBTn1o2t z05e$VdnCusu?&mSp(^Sp60XyEfx&*r?>ICW)jz|q!G7YqTK}l-uB1Ejs^=byoXDgL z*aVWwK`9ut8rRK*}cekeYZ-^sf z8zCaX?RQ`82z9srXsjBM+MzNb)NGA4xKAcHR}g2eZFeJwm>~$hwD$aRD?b48$ zd+ji8aj0|k;rZwLd3AM-8nV{4(;0ZtPv`ae^6#n$2h#G;-I1>GyJt1?l2|Gd#iN|D znBW8BTf|?AxZrKZiBfl5PJDf{F$3azf%x=~mhOsvG`t=bwnZ zR#jQ1;U%McwTIh)8^+Wtqe{G8HPif5OwjSUfIRED_3T{{egHW z9*0AtQzZw`#r~w36KaOT+KFM5=yXKq5_{g+4<=lKUEE43_Ab@%H=}f62^|$X!ZjFR zRBX!;pis`GK|9fw&ngSAY&naxv#!n1REH}6+F7ju0zf!gTBTCn+Ea+0x}*T=6yIxx z+PY100VTOHz@(q72Ea}rd&N=pn9I`-Ki`ItLdL5YW@xv5y=i9^zP`Y2yj{>n!49Cfb%Y zhPqdu9|bc$U)Y5pg!ETc3_V=TT91L+PoG&{^wJIgsIKS|bS!vzOrG;(HJ@~Mu_Sm4{ z5x)&S_zWW~7wlsiD-ru#8(T(55)1D14G(*n`Jwpk-VjoMGNnU7NJS@nmsXH5jggiK zj=$^pzU>oIHzhKG1)n3Cff&L#NlB`2Oc8)>tmXK_qf@&t+s0Q;aah%)hP7fL_Vs3Y zNHUf~qTCdxB5zZgS1$|gcitr+BS6_v_ZwrBW)|Dk&>P_421dTURDpzr<#CjSELwfZ zOak0socybQ2tM*zyVW%hJq8Phe=6>KDakj1FCOc#^1EQUrOKa zv4UFQfjjexRoDG01$p{~4CYhFzPA!x*~B-JAAKcw78b*wgK&g2Z6T5p4?8xDH94=} zWT${|Sl>%@k`0gsc(mp4xScvDh^TB*s5+%a?6k#Oc!3Eskx#FF%$9QGCQeqA zc)*@eS<2q9vhp;&nX;<8JmM2u;?-62Cd4FBnwSm`4^vM4GBv$6e)n-B=Sr*e)lrP6 zF=!|IR+L@CF6Xj@6f5X@ zoZr`)xhuShTZAJ}C?ONr=8TV3f%Qwy6X-wl+7TeaWh@Nz>fot-1=ZGXjJaT#JSN|s z$?!NV%^Q&X-3+PV3z?LLQ;Y&sjzk~dD(5eG3FvRMZpmZjN-9!jv^7e}@mDU(=7=d) z+lRHnP`!(*9s3B+s73!#Jefdj09!60hdic291TR#BQC`T3UW8ncmLKK5{+lQ>Ruo=g!`H! zy`CdXI@AnCr8+(6!>payF0Ev-$o;}#SV#`osvhH{TCKAn<0_>!eSYepCX0euTn7K) z(N--mSg`nIx9afKhIOdyba$GG93?UL5mJD-9ED=Cv1P03(Km}()fkXicz!C=qz!^#!!J<;JNl9Y% zAdtBzRT@~}U=h^>DHX<8hJ&mKof`wN(UZ6|X)wTX&{&UF{eHG;F9a+kB8!`SDtTPw z!%iSW1RZ^-d+9M)xN1 z&StTnByN2c?$wMq%nQpn9HsqsjiLKFjkT5ipb6dfo%AlUouQ$0`B*&d_q`N6ST4nV z?lrhAK@56y$nS7)l)GS5B}JvZyhQCgj&5Lv%?GX0Unrhc94!h{W!Wx!%E6GH;|h|~ zEwrEXE5UR$Nv%ZpV({4Ztrie;z<(ougN60l$=G4CR0XD*9^RJqo zkJ&>`y8-OBEN8o#ztwDr4X{*kc~oL1i@?)p5%AczG_5o^P;;R^rwws5U1c>QrEr z5aIXfIjYbruVmE6&O`e331H zlL*oR)l`%#Q^uUwwP$I2G>=qy@l2%5iscyT_D2LsAB3i7!_;YN)|EsT0DQD9v7wby zOcpo@uVl4vMYg`1TH5bZkb*9sisBEm5tNmOg_@MbU*y-$a$}`B{g`{PSg*ih1(t-u z%7hKGy0tsyj1}GIc5;z9144(oFrGxLmM2135_wFK9Gj6*cO%SveG@IC@Tx2FG~92p z+_{h@suAfd905CG6AC>e2!#PG5!QJatE6u{w<@m&q=*-ZZ(P<}5Ry1J^f{k39J5bU z?(G!yptl(?m_4g?Im51_nbf<5muMNo-z`zEAMEQjm`|W7yc&RYF?qp1j!!x>q`@AzQ?h%N($3 zvsHXDp&7YxT;VPuVl-l}XVXe&1LKB+j`k7ID79U+OrF(RuV3D>#h4&t#04{7UwrI% z__D1X-HrGR9j0&uT`ynK$9_N-A$g7IRqnN21dZQ0DlBIQ><$Xv(x5q%^(7`A7WU1N zu2|U@c^#Y!av$F0QS5Uwd7MuZip1uqP)kN)1QOuDnzPrLirbKR1&9G` zZG(F|Hp%3efO?!I7T}r2DX#agOti-`M7PlE2?dJA&$D<_(QjfpA8@luS?TRhcqXKX zHb|_jS9blJ^!8Z3Dt0$Or z&D}5ZmX~gP&cF}t=KxGV=Y(@dut~qSvqu%_9Na75dq>mcp(ho$_FIcRUM;dwQ(UYS z?8qNp(+Pjm=Pqm|Mrl`LV~Q*c2pmR&=FsCdFIx&*z`c!7xo%q=3(A$|gll`Q-SS!>0Zfxul zHNt~)D_C57eTEp^T<5TZD^#a@$?EDNE`%TVd0TDgU2@cNriYFBs~BCA>8und8kV{r z2@7_IXx%@ye&}3VM!IIAOV*FeRu12}aT&Wfxf~n2LXGew`fM~6)7%i0z;cq&GBBx| zEF5@t_J!&6^#OAOciJ;}>AE!hLWR1iyXWCndG=9S%Y;L`Xi=OF2X;S-IHfE^^`v{w z&bjz(lIqsgEAgh$3GMH)9j9-$uIla+jxtdb4o$}nDQWQ8(U2ZV$PrxsER5*6E32z( zTQ_@oj>kyFdoaY4A+Dhmwbttiv0lUuk%_4Z;R*-e;QI<@WMqMunZVAUMNK}N*gZSD z)mYRJ{d}}wLeD6iFsKcwbL&Elinz)!NpcxtkL;(8_)vDl!YVcPcEyZ^Pa*gPe9(zC-bcvd*iREpdabSDl+xlFFr}_g+7C;4`@i?EO-I(=A-MTPhcSmh#A*S2e$tDk1H7A2fM-cV8gfje@g+ zvw9qyXW+Vb`B;4ODtjI0DfS`53ZN(Ud#R06Sy|c0GgQ)re5-R@j|987mXn4e=_$iC ziT-{vx>Rc3rG2Dp4=cbN0isvoIhd~HcVD|l+kK`MgObVlY>thb#k4qE^wh0T^fn-2 z($2@wbIxY{4%VeK*PSPBkFsh=qOspJN2BegN=x$3j`|DaDidZK1 z!R|rUk|>E4=S6%&lY;cxz)1~b3XEBBsF5et6TJ@fSNBbJJ>uHL3mO97;B-Z>&CN`* zjp^9iNbIw^9_~K-5olC{@-XNbIr50lOvTclIer)$V?zT{vE^nGoFC6m)1Sf!K0WQ0 za)yvr8G#HV>E&ghS&_Z~;SL=8KpH6+9e^x0O+!IQOp>oGHlQgWO@&fbatJF&Ta)F^ zZ435mT?q1IZK~-4eS5dRyM$U?avBz*q=$13McMq;shDKLH; zZ!8_q7qX9uxp3bSV3KFDZttO!)^cpMS7{vpk-TrAvIX>-K++4WqdTtb@Dj|a^E+g~ z;`OG_+w@3T8XEE?#7w*vJcSpRRMF&a;LVrcvT>D3MHjk6nIeT+D{BI9U}&NekPtM% zH%rC#s0tpHHZL0znS2~m76OBBP*G9vm=WKN`UDS{o_u-&eF09zLdqLKDs^)YuP$?t;hJVovf0Wzi(m+uR@X@rsWITcO%yAFDM>&x-j1O=c$d<%O9( z7ALnq6<+r{ok=LmD@!E5DEYiX;4w%#Ls~c5zx6g%(OK5?u7GHlf2eo1T#!R?a7)dn zH{3{jEbP8*`Kh~nI=67I*C5m@>J!extn34oQ_mDIylyr9Hq0^etv$>&5MAD{@$qZ# zJ$bavjO^+xd~Z$Wh;Uu#-leN*UP7wyI>Curuk0ZPf%kQ^H(FU)qOw7Q!7%~&I0^F= zH_kkKtUV*8nJk0#Cx&O6=;CTD44Nt8BhcsA___F|0aWjtML*5qh_wiUCDsLx=6W$1 zV;5MPhdymKaER_`&ylJsM}$4L^y?av!Mn90*Aoz{fXlu}7d(&Aj}?i%3WLWu#?))S zz~{)TJeJnKuu#TnF!r0An%SIa3pPWmx-sOf5cXU0$h{?yD<#eJ82s?);-=xV*lpb) zyFQt+m?2%3=k`g9QY}+vHL8XpSH$S-*n)k|%jj*nBz~Xk zfW#2dj_T88uTXEev0zft!D_O1IpYchjElG|A1=3@aX#X^Wq!VxB45Ao_@WTj9Uq&+ zKvgEH_S`ch;gG)!xX^I`PEQbBDH2-SX04G2zDM8A$Q7qr^!ert?2=XO z40_(V{;;!s6FI_`ZR`47M8-2)3+-P2p>_^M1)X0BmHYq`H!p%jXABh(I1b?KsQphLZ$>lkEsJh0X+(npk~EHKI}wc&8AYo(k;f+IN%Gc0G)4dEYLVVsDbU+1?9@XyiT3 zlYje}uJhHb@_{#5{}&J7ee8ENq{(scH{EHpnB$Qb!(5V|_a9xC&62dt)EVSVGZ1Pk zcSI8lD~QoAj|x>|L3paLz|6tO`4RmL%{BMO%IL^TT|)aChoE%#XZrMM26m4oiyG&CBA!f@j;?Xp6A@sot3OA?TV$RP~72neGdJLPNbL+{JUIzzQ4hqT`(OLNx9#6I zcll;b@~TVTgCuCF$L+J23f*fExKS|5&A*%;FpYsDc}gM{gN4mLDj9Tr;B~m#LAuBs z5s(!e*ccpTtw*vgume%C_;QpQ1>w+~jo7#*na2}m!5k3~)e_T)3EXZAy5GC7Z^kqE zdaO!4rqr!Q%Gz1eY|Il$9f03gd?G27YIgq|%$wlhxqQ%lOWT|S-c={H`#97HK z8HE)TlG=Qrk^^YO$#jSZ!`0v)q|d3R)|&E7Q$Hre7332y=5Vb-ONvpBK1uevPm^OW zD>0DVQSZpHtOJaeH=eJXc|N*h$-qiNU@0mnVML_S``f?upSV=ijWXAziL?|~F}^Qk z^sd4IwNJ(tJYB1%YZ@!6)zUk~X92GWi?jO(3m6!T#ljWcEke?@K>77oLT0rX3aVn_ z44Jc6kH(WvrqkH^o`Pu3$Sa;d{}$}L>25+LFSA|ZgjnC!F>lk&a$Y*0bN0pEhK(?H ze|)DJ7L>2Y`_#|mGt=z;piX^IMvHk_og_}z>v)h)g@*=F#p^aQ$}Nnu`$8eaJ*;r7 zn)x(Y#=w0yxol>F;f|?2?=NTHf+HaVS?JhEF>oD-rCB*RgbZ-tBOvWq!9x#c5DpAe zZ1rWIU;*3#{Q-ll_@yI{zEL%iD7cp}fsG#F{ejOJ{p!85~ z$;Hfftg$D-gOq`_^_uj2g>Q1{9m6f2Q3ZqdM`-MW4~H%A#i01Al47x9G+M+?cRYSMhsrO66@0-0n^B(3G<^;vMRH*|+ z8!Vq-P(Y=@qI~xZXrKTr!iaR^a6CLb&77RFGJ4jD_oWPyW~!`7`j412v2)Q9Dnav1 zR_f&VcJNs|QL5K*#2mw*3q&Z}4(0HDkBo|M37v~*CLeT?yq_WhP82F5X;Ec|ll9=b zcD_0k=r2 zW2lfH2@E&3DHTnGJR4p9(COmACm68^nL(T-(}US|?3sYFVJf_&41*u}ds z3{kgGs5(9)q%3!%PuU?E32Lk3BtW zUZH@P;lP?WR<9^k>D5tkA#|Orn2URl)oTYgF<-}S-q18#)Wq-VZ*R*Hr|bVBs|c^`JdX;>)txd|LieR9|QfRoQhMhHOUzEb%H&o?irwjyAt&ZEhb) zr{phW5HHIeb&WB~PvJ!&-If(Mqi5W%0&UBY%9}myrVMJ`i_TP+!^eT!_$1@!JzXGk zmm7angwGvJ=yHuXPcn^i1V8O#;?%#;uNSC>R&8(9Z6dq-9;bh;dILG=OmWAkud^f# z!8XQ-3X@8OU%CcA+Do0jAf!=vI4_L;$Fty$9a1n@F=a2oIy*a0DDf^xPP{>&bBB$cns5s4Ypp)?vfDjQRY!@VTaL{f+x9ENvI-L<|N%f z5QJ|+gIsmtZ2;KU6m}PG>dK~o&uSmvY3mPUvyNAI~WZ9R%!DJdm@nsO$M^ccg!iTf`Z6SNs^MW8uP8L{LR*i>*Ajw7Ds8Hq` zrJr!2sUqSt@|C<*=c@nBuqE6y5@WaQc}OLa(mQ_jcR2nga2LnRLEj;<7l5*%A2NQ-QAv5_w$X?C|cx-2WO^@v@x3CQsgww2$sUjjW{W+ zy;!*13WZYcq5WfgTnHN;qu&_t%`}}?e7#*WAFJ6^0Si@pP&^V+uol*iH4SYj|HU+_*pt43DT_i&Qx2II%FSH_ z0rGa?aJX2bJ=xW7?OaI1RAh2;eAf7YT6W0SRB^;W>G}!2>PTObJ`)$yQ09m4m9-c( zr8GMq=d1!UrXHySl-SHp&d3lGY&Xg3gyUG>?s^L4T??xVf?AxcJ4Da?qF0wxVEPOZ z(N%hll91MiBr`;#kRmBR@C6pdsZQl^eW`vem7bd@?2<(G?dy^Y6Xl@8c?Tp#2encY zytRm4(}zoZR`6`jc$S4NzT-7pmvOnm+4_4~Oc3(m4oc{U@Urlmy!f`Qh`4JeY@Za= z8C{C-dG%@ar5Hj0)-zxhi_ilnxnkF4$H?&lzKXK(n#sku(<>Tz2GTty19L3-dr5g$ zccIyCo<;d_B9qt6x}5QIdNhkQ1R-;rn`p+CTHf*gQ7|a;F44rTb18ySJVw?xvSjGsP|%u& z#K<(hvVC`BKnW*Ni>MXIM{AnihNu`j6g(6QcN#3LoPr^2!cXfLvPM(#k(!55qKJ?S zc@o1xL6z0g__eI)H^xc?lSB~wp3nn#C%*G;3X@M$wsuJ?;bH;C8)v*7I3tqmykKQ3 zK7c8!fvxUr1!0hLUO+`*hF>jSGztxJx=(U1?_(g^n9`yj>Y235* z<(E870@`eGvG(NSwoo^+{m_ayM|f~Gv?4#B<2S+Wgj{H z$m=|NFeseYT28zhKL8r#@-tDWVMPnH;lPYE)7p}%?->(dk+NV5u~Z8oiHwp0BMZDQ zvI$3JEhn346eJ*$ytpZK)a^?G()Ys->+h*6@j1b{lZh`&@Jk{}GN4}$ic#NOrVS}P z80sC~WHUWiwTq~H65WWKJAvBTvZ$6&Do~`k-Q$cp@Sd(gy_5)^6R))ejtfEl89X&W zcF5KRZU!L-pUTzi^I{8_bK(i9cW_7SS7z%i=c=T&z?!69GgQ;s(I=x$va9GS?wER< z?$fWsva@ou#XWj2*QYf$!`_?_+uPygG2CZVdg{Pys-hxfg_Eq|&cSnR9>l_Z*_zVB zaXm*kaLDMZ@R##oP6AJ11YT{T(ciwog71gu(<6c}U^h7A$~q}4;pPY#ulw?*Sn!&+ z?X&1OloNtSDe%7EJ}pH9oM19YlqqaoY-fb67nY=I(KH;9SM8ev-(}x?)zzD7$SQPe zBt+&Xo)DCVt`tNYIP^`67bwEBm&-54^jpv^XFlU51DDFOhoM_o@P3u`J$gTqfioRj zaq&D4hRW9hs8$i<5wm0RdG4StoRjsu(A!_fk}bF`*3_avDe4vyr|EH58}MoWMVC=P zG@p8qe!xYFMVxycQv=!iIF=O!y!c(;j{*-q_*WjXR!lTXz4o5Fg)6&WuMoMb&bQo_ ztO#URve^zPlQfY%bp}J&;=IlZ16Pem~FfVsxsE70QAW1VFtWj`jV_aB$CJVQ|pp6&6*g{HuZwc!hjh{@1HB;!CR z0kOg{E=umAAEjPWzVJSYd+oE~Tpxjh$AB>x087aPi{d$?eyd$p2E+vUs-jdxl;HV= z3yE3+Jdpa-#Ytg4phl#?!i5{pZcql>Frzu`s2F)pu_)F(R32^0EBUA@wb)4YGQ4gQ zYPU%1kNdWWvnum(&RGiE3pYuDUEPAnfYUfJCR4DV8Ap3Q(=}? zQ*jNM9C~zS|uiQNBgDgsvVuaOn^e0C%Nl!+tr*6<1S|;!_SI`K@flGGih|o=HEQ)IbkW7x)0Uf;hc<4a{%K4hD z!!`dQ1dPa)Lk~<)uvaZ(^;pJjOk!785j{9v?3gDK*`RR06@=<-zJuGR0P|VXlw9f4 zERpnM6Jt`EJs~eF#1D-9HonLGB7tj@(HX<<@)k7=V*#5ZX26Kfq#V(hbR4j01cE6m zR6#KYZ-;s(`LP}3hvm+ULFpFYnirlEBLhcXppwfBsJzOS_BGH);y{=7F`%5ir zKA@*1cjh>O6!hq$9K1uycwQtNxd*op)&MH93uC8z)=**v*4SiQtYH;p}zU@ zz{?-uv!*wXoV=l1D&tYUlvy}M3*OgDFF>kMU`vl`p6`wi_hG0 zYK;(fY!-WKhR?+**KA{m$P_?S%dDmKp5D-iF>+RmR+N#xbqmGxhD|7CEJ0NGK=I)Q z5-jN4Mw)wy976{Xu{EsGZl~)zm$s$eF~bXeM@e= z<;v?es_;D_98Ogd45Ds;#2SXlis559KtO{^us5bzq%=m*G4CXqIy&rr_=_h9JzEzT zr?sIP3WQt2qs#gy9Zr=O3E1s#YV!2V=|7-u>*?;7JSsL+h zv2fUMIC7Z$DggFB@Lze^Iobc2|HaF}{lEOL{}=Wr{8!E&#?HgV_s;;>pIks`2U}-5 zw%_5Pf5a-~=H}x1BUb6Z3v&8LI*LEf_|IWZ|H`2J7yK$e2m3!jDA_sqerH4S{~d*r z!}LE8SpS;qA32m9|AJFxXXD`d&l&%e-^$MOUmz_1l;Qec=KK#F*WYwi|2LAd|C*%i zzbGmDuS?4Q%aXGHqNIOLi~Xyle;;M`pW~uPiSvf3QK zs5ZyHci?~I^Zrdz&R>(1^A{!M{B=n=e_2w_UzC*d-#hT%n7M!L)!F~ntMmRCgMSwI zFTMI-A_V^}boKA)DE>U--&)4+JYsI1f2~8VU#ml|U#vr}U#~;1U#>&0U#vr}f8Q*) z{t?9eS4p{lO;YY(l$86|CFTBQNx6SfQtp4>EdHK={WtIB{7b*i$HV)tYV-V>+C0Cg zHqWoC&GXA@^ZcUPJpbN-dHxZu{#QwPe@#-}UzC*h*CplsWl4E|QBvN2@4)|tYW`ny z&40$|{>!NF2h5w}Ps!##>EVBdK>ruE`A>xSpF+_8nQs1DLJreE zmOn;riXR!w+{_#WP=0^++flRq?jk6E`@sJDk{jhO&hy)c-#7d(mi_++`@cH>^NRrZ z|8V|?hwY!^zq9l5aQ$!m_x~sMH~#yMU{okT)ADWM_a)efo#gM|oX;nq-_JKb!2lJjyg;`X zmi!U-5_5v?0Qa=lAVc8;?an6dSK@AYl@b57+b-74yKl-{U)%}WFLy_y$#tXfDTk$~ zT*>K6%@{kw%6iP6g|fnkDYmuUTh12?3sjZLDCB!IHH5DXRvnePYPig4Z!bDS+Dqn- zu4fgwX0QU4bkDF#_0JZFQd3hF8aYcd6^hgt65d08LZpg$OXgli+K(4`}97b$Ia^|Op z+Y~6PmVe!;y{D@%){i#E_G3}V!eEWJ84!%Gf?ie@F!fV?f>kyVy>Zg{@W~h`iQe6&w(okeVlLg@Z=@dYBFR0Zdi;OltM8HxUNFjWpmakZHFPty zwG5k|J1<|;;`XmDS3&Ky;ZU>0e@DUQF_s@(ZPKN4PTSD(Z4=q3k@7=jJQFJTK=RNB zzk9JdyZ!XT;%GhRou<{laIa#Yt+hbW+2BUG#*R!{x`u}A&o5!!$tK~|)ztn=WoU#SN4b150HgE>u-|h`0WuTYyR8Ave}sfFc$)Jid~hJc{P3y+}i$cc%&lFWMAPl1=57DKUEpBq+25!a)ncxY-d_S~NPGVPI6 z_~>q}s6|=&spH;k@nF$IgKhKVx1HI&DdQq^0yM*h6ms0LAx?n@p|X*Il_g zXlUdQhfihhC6`2MKZkzq%H_qZ5C|G0js)d2pkXw|VY5J{t3A z??Hq(keCDMR8c*SHmNfq9Gf+3fYkCdnGj`-9~CyB#`K~QAE0`=m~~$At}M;IQD@y- z8ztV(<|T=ofNmlXyTPXOTKlFgpWN^*_L3{`zchSKSrIFNNDGU`EN*VuAW2yFW2E^6 zK(NRTd1oomS#XQlxtcSmK+H_oYstoM5aE3l{QR84g2d~C2c07>RP}6ZTC!d&Y3lg` ziF443^WnDZjaO&hPP0{&yB1GLvPjMDGCqr2s~uwe&J-s3!zT>B>yL-sFGe}Lba@cL z7!4a0AK^<<`{2!6EVc&690VRCGleF)Y2CCwERyY$EVnxu#sh6R`9{++XeYsN;%38K z=y0b(h=vYF^)>F&HfWGu4nt=rcT9pvA5^_#kYr7?1=^UlIc?jvr)}G|ZQDI<+qP}n zwmt2x*WbPI-i!O^M4lbF*IK#r)TxTB%vg5)!X7#eAFHQQ-kxuC9xbxDN2+iV;!Qg3 zRj)gDb|sDL=!H@yP=lIpV$#-cZVk&A7HUPeWLTN-mcU65-ObIqmPqjfVyBE3_v0J zS5vL;M%X-2uRycCQ$0$$(-p>TLQcW__yNos0QKjVbIU!U>swN+d;?%-2 zGr!WM6mkq#*eqb%tk703j#b6&cGb5aNKL2^88=Bcs$)mr#(RnAr{qUrU!Ctb+n{MO zm!!?{a1ALMsZPg@ z*riW#8Itc_^%;Dal+JB;n(0!?Gt+nfy~Nb{)WR8n(eh)3GkHfU*+bBnSGj?9KyZo| z4s8&O%B{Txq3ndIZak3SD5)U9G4CN&ZSSEawBuDV@D22Pv^#o5wX%ds^6ES18>FRX z#lNsGbX)lS1Hu+<}_Cvd? zonmQs$Y6sYNMu!$@RT(@hTUt1o$}My5fkm z*7ZxF_6rO+ibyd;gw;EhXpE4Z3W1JNuhM21^}y}@1Y4OsJ+7G7$~hYCzT;e<_1Z5@C^ zOLKd+yMj3tvUKdH07;s9j=cL|V8R&zT6KCQ}!6dE85; zex-Yu`=gO{9Yf34NG;CikIlXc)e5gC58*K*#Nl@ZhF1jUAplw9)>~z-{>$s)dL<#X z8nMVJs(;of;wiH!^Y^5u({#GGICv!WR{K*t>PS=F@V2MJ@zxWU4q9OkFFV;dNH+8Y z+@yeBsB7WmDgI$w;frFqndZx>&1s9jjzbXosWcY7h>o9Hr49;R$K>s;z-o`QQzC2R&fD z#*@K{iWkP1fsQ;zwJoqqM2B<_Mq(~7VkRm{Y5~H!*#k-~VLnD%8J$WRX?`+b}bi4Jw`0)46 z0-REfa=Tv|S2t#TS2kwfYEC^?G}GiKSys5c-awetS4`e5u)9dKE^RzJZM}+{0IV*t zn>-WjJZxO#RgG|5`C}O)6##+rkpwHR*BVTv3Kem-+nEzA^QV_*yHsvaKrsMN+Pe-Y zefsXF2m1W|X+U z<0HW7%OCoRn?GHpTRJCGL7jlH0D-R8F^k?K4fScDz4z}vM-1$Aca#n&ii>C@xrzhj zO_tK}4B%`}qIJED8z z6hJ2|o+u<+bSy}V-}LdyFk<+=d-eAznolrHng0X>7I|G-Ll*2}eVr*-x`ku6lO4 z6;#HO4~+0pn-U;}FAHWaI(NupTly~hnO0S1H{fGVXm;X9ifd+mA|({F{)=3_YGCV& zdSh9kE2YF|;}`Au+n-NcmX%ggyMHwHqvhFHaqbe`{;1m;d3>%!RvQOBXo0w|0|)vy zwQCl!!k!9TvD54`uEJfql>Mz|CL_Ukz^ACBI8nVck@T)o7zjFLAB)-@>7||RKdUFi zqfa-pv@`6fMy`!86f zL8jP}>@lI+E-)Z*4IS#K=GlT3N}P!vmP*N`L{M3`DDUew0u|;TG`1;|Fzl5+gv`=- z)@PFlMzaWxpgO-8pWP+S3S5&nsLt7~^a~B@XQCr82AwK(hx3?7!;y=%cUdRcX)ab} zKUh$@7dim1xk@)QRqL#d$%Yrgf_T;F#D$I}!+)IkXKt^HL$P&r5b77vfHBrWyXVY* zW^EXA)d{?vUQ{HB54>$R2aghF8&cLh)L_|^YO;HV7|yVX<s^`=gc{ddiX~GL=o_!7H)&-<>6{s1qKOQ8P({COA`U855t3RQp9Ho44D@ zxnRVOZpV1uF)9PcCY1esJ5HLPM=f#q=LL>m^u>c(LywA6IB9z^mou)Ik}oxEe&4)s zxN9P}vW|X6&6TCXZHb@C{HX}rxnrgtA9mK3V)>er!gs>upMdXoR+kiR>ngVLsTtd} ztNPqnDK27`YZ1Jr>*@&rm9d`&9dWdoQ&H$lSmSgwx1PXKgA1RYFXj7Ql)LqQscA~< zRpwc=E0Z_eP3i+DD^7*Ekqt%R^=S9uH1TotA8r{tQ?!|`#|9OQ4ktdycGu6yhS}C< z6;MoHyAk@_P%a9-G`CMI4kib^S7q`=eXI4JRXid*2^A23Eo*mN=tcmNnaiC!qW}dq z89h9YOfJ4X_S>t2r9D$qtOCxo;OH36y{k=0aTsFeLxLGL^~<<~$uk~hy;?kL zQe{U?0W1vzV^b7Xa97M4CLR1TF1ATTdxr0|bGpTD{8K6p_HA?B!lzNiZ-iK}4L$WX zGb_?=xeW0oafuNLQxH%f$KWqpG0Ci@oT9U$m2`Hw0y`V;oFrMI7d28jSZiDwa!)ek2mFr z62j67TlUAhpK}MDWg~~XP&cwk%(Rsp|ISiMYv`c7REz9-HI0n zlV=u_&)(M;V+H&n8D`!1E#h8se&@u-D9N~mT|LEGIUYe>KW6v67i96~cr8BG)EAp6 zLj?^(KB#KCI@g`uZFq~;;3t~sS+~u6i904Kx<8l=E1GX{8q}zTr`_K_sz4NI?Na+a zcK1?yA`t07@%?_;^EsQ&7a*1ac5(f^E*|6y10}X&&?bd99(tP#@J+iH;^W#5ACAt;jwUE z)UPOVHgSKxvC&iEH!t74L-2w9YHGR4JYUVi(stR_Us|(bXIFa~c#Qu!Gg{4^sdvik zWN&Q|C~<9(;=j3J{1=k2)0!PI0#_`C-$B$7a>9?(nctYLko%IDg_f1|xyGhu@O(N+ z&lRo9Ln-Ahj^Cz;5FOHs zubw^wXzg=^aO*0!G9Q|as;FPpbK09b+YW~+iX+)18Fl@{x5Qnh{nX%P$fGqjPi;M` zSMDmi3||pe1TV?VBtNaaTqKN3|H}KE+H!RHryZw+?2%gL^A75Ew~2`&>(PFiuV7rS zP0!PEj}mz>UMrLy3e*ypw=5vg=j-x)#(t)fbheh-Ewu4eIv>yDcvo+dX*8tj#hoZj z*1~p)-TH%sXP3jE=Ipj>KYwrjEQas2@qG?-7(EuvV&0cKl=NHMH@*xG?7BT!N> z_qz#L8}0rsd@F<2RWH32>={cP2-c zN>`mof3F}PL}U(lZjBacBfU{#-H5z6qUM!@D@gE(Zz7qw8x4Qs0zX@^k=U8fd)#~x ztVF80--FczHOJk@WaQX7J=A}Wq&jCSg3850+OS9Ds0C4t%43m9O&uveihd3{)9IOY zrp6)^6PZwse$8FU0j9nUxmboV3I%28u zJvbP-f2ZOgd5Zs9?n06rl7Wf2PL^RXpSR#+9)OwZ!4TWkA3`sU^>NQ>RaYVE46S`C z7Vz9krwwc7((S@K&o=5&z1*wbJB>kgc{x|R5>NK^2qwO}S`Iq#uvlcB!&t2Uh53CI zt`1U8(IP+YDD6w_`JKP()bPUS79+o6mUguTiTQ1Fm6&DR)6pROM+|92ANYKmNE$mn zW@5}|^q`6A@_OJVa)car7j`Mx7uhA}UlXq;L*wRPS)8!^zGuSo_9hb+B z@$q=VEaLsH-Pg2`BMOV}1(w=G6_EnXFqz$K+H9Cv`kUmB4hIOPl*4SkH%K>*kEO>U zEPB!ar682d_4US_kES(k_ehK0Twh|BwgSTY9%290Hi502*9~sVIb0WrMGiA`JkDa7 zqf))(-b%ASf8$te39M5b{bn+Zl0E2`TiW$2tD_{p^VQ5>bsw>MV@U!aM zAGH9%oa5%>?499|*qH2OOF&CstgB8aaXAo;`Dww$wES;aC%F8vJND!W;`PSoIjU{l ztv2@x#PDd>md28gC9K8{4TuPgzl5*WjVSo9NhvLNGkWuqjV-{n`n6KKYf5%H zU`mBeT$q~Oxz4j)AmBEO_l*7)-a{2v!d_3QP zIO!DsgE5y?7J+Znm#$u*DDqQ=S>UMh`t>zLEr_^JN5eZo-2n3u<)2m`A!On=x_+|% z7s(@AVJ@Hjr!wHY$W5p7f{0CI91A0)CzB7CfuSAnbzVA17aH|rJ{vdXr5iUof_>p_ znG+Q+cIDZ4xpaOy>OnG5#jc(6N^`c^b=nj>x3xM*yjuIjZ7`Nv!N<0k%Wb!8bjWer zYGYA9B<3Z<2VeD8;bFAnoyEV9dAKI+(tqxjwHrH)V^^WzdHZFce>H8m6mWAlRaBJe zG~c6_dp)t`z{Xm%O-~SRqBJwGW4l;;ASSbHE0u{SQ-!?0#G_U3bkt?Jr$+4yv08l` zgcGPW88$JWD+|UZ8rn?XAztiRKNVglahtO-grI%LFX!l^_~yj3{vNuva@x02q*W9YZgCJA0X`*^NcHlIFu za`)pr$Sg)^rH7BSXSkYkokZS)Hiwy3IQHxt@hTyA=1xss&s!$aLeI}{3IC9!+V$&+<>JaTOPIP(i6qq>k{cTYS)2@ew&eMkCPq7D zMUzP0MU+@LHvkE7s&_1<&K!Olooyv%sq%D0Hmg4WgtJw=_Q|HoWp95$;S2IZde=L3 zIoik0VFW-bz*^<%jAC#hjypE+tx39HhnXkX^F=r$q|Pq~U^gRFs0l1(R)dJ4s&B?^ zE1}&!>{ybUC1YX^yDLIa{p<@~us60YRd1R+&7-Ic#EL@GbX;{8g#{H$TaF zmP1NfLzZ4@idgy1$(MHo_W7UBwW7Rv6H}p+S1Io3Mrii##J`k>@D~p8EW~0p+Y+xM zv!RLP=TH}+V5N`jGlREQD|DX%H=pLGC@3=&(+Ie%lT|K6CcHv`gVSbsqO06&M5K%r zN+L$bK%vl<@D0=bmXU`1Ze{*r0cxT_(_6XTUX^)n(}zj2IZ>Q@X)acZ%3Eks@T+oa zv7F#c{#7?uEd%!NrKKDG_4$$jIIp~fVus5CjN<#X!|K2=hRaDl)%&SvoqnABSx9XX zkrC^B28i$!GGSk87N6-V^QCpUt6|p6&J(sAq=SW7*O#@|>yj68nVb+W!F?rc7XsKqaU(LfkM0xcPh%5DLYN1tB+Z;kRwG~fin}v0M_5JZ zFQ&X|G36&RLf%8MWFz@3k~q-W%AJ|7bY4NIS7htUDw@{oz#-;UL)5VpD?)7>d_rlj zf>fOxH`dL#4IYr0r&q7A3u%q&6{bV7@p$y0=^b}V5n|%Fk+9=XavgSF)t~wq5>Jy6 zrDWGx^ReZvk2J0qJh97YE;ll17}cl>n=_z^eKb9JH1qJ`BauXQ?sy#I#cf|=5iM#O zmnKxry&_{A@#j%t@v6KgsGSRf?yXl+EpaJQ(s@1%ydZ_Edvf0zHvRzv!{I_4iJFd# ze1W;~gbW*A*y%5CcCQT4beLBbH5iVNBz9|*Ogx>C+^~sahy9sl^0vxp+4oRFyo1Ku zSzEwzcK#Ob#9m#r(xYgj+@p4T)pSsZKri0lzCbhqkKhVcmsT@YAIz-)R1Rla^Y4Z{7DTV7)FuF~=cbU(dZ^^O7hukihN zzd_*v!{1TD0JHyDKpgfPBd#;A0{O%r_WMluSv^z@2MF}Xp8@@j(j$34me8&uVq}3?!C1zyRyFYFj8zwK#DIKfCERfP?0YhEmVy4 z0)cUKFx3`{_y&=HMA{2_qh>^Y7$i8+aC3Pf;UF|3tRlquyx{PXWdT4;8r#usw8h}( zbQ;^#Zp=^P`u}Zg|1abK)q2F+-RL{y9jqewcEj-X*>{)SjGTQl zHxTcxfBNHM1XRbCG`<%V|8#4zh=yu;<5jH_m--#Jnj^h(n0LrgNk=+tSYA`SPz^?L z)lF!DQP{Q0z^@LbzXy&t1Ox<1o!GV--dv{zrr%T~rU^nB2yaj5k@70UEo*}2DYXLR zFDDc^4?Y6>3ri3~NyEtLiG;;F9#bT#uly6ooof4tj`(%Mhj&!mw{&yxZ70M>VbkPJ z#s#IWRd!KS$S~{l@Kf8!?`%00|Eu;EUyEn@vjJ{io_m`ix4gfm9C^fZA&oQ)Y1h(x zpaR7fkq>JUR8ToWd&Y8R++CeBgn!kXh?|zKkJ=pBsZg=agf^_8bza5C3T3g7Qk0VY z_u*JO;wFTmPV`UmTyzm;DJi+{;Er()});YX+{Z-jPMYL^83?- zZ5{6jv`lAXXA4nt<*2Hux!X*Si{q)Rrd|hT#b(l#ZXnFIjqhwDZTS&r2c5Yb&Cp-9 z2T`_KNO<=l*DbB$Kt`ntu-=mV;<0G!a-oPq4eDN?%#t+AH`PBepvPVt=_V$~UXsc& z_n#k4X9GknmJ+8_#sleui0e*sn*s*vQLOiSA2ZVrUq$2JlNac%gG!0jiZiz2Es?X6 zn56QD%cnUP2tHKv*GGn*?vpu z&8Y;6IUTV`&GzzM7Z}&I!1k%vfcYEQIXYSzAL!{dV)m~oJ7fiv#uamuZM-D&HjPos zb(zo|HhrQY%q4e$rYVZ-+0|&KiYCwQ6<;SsM=rfAk(@!}UK3(EPbSOu;KX|sd$A3J z=C-aG%x;mlKbKvex@@JMt>f1p%|+1lwHcM_erQL^c0=Cb+^i98Y z!DH0TrH@3%g4>h|isAnfe!55H^d9>d|q@dwwCq>;o!ILAbv)37vA*+~d|KarcUjiNjb z>QzNX1544Ro71Ip+H1#f@q?z9<*)jBNp((R7SKgB_1W*t*>Cq~*TCAe6rbapl1app zHiW+V#Iw=T+C;_QZ5|J+)uyacB{s16zA*_IoV|{-BAea4`m}VrckT4kO1uU!k!nRk zvAR`Azb`fiX}E{rvlB3dtBh`Uw(ittZ~IhxT~-q*iYUN{82>Y@x0Cx-iQn$hke6EI zGr`~SbUFNj-TO2y07nJ;pe|PiFWZ$NJtJ?17R5@|5Xp2wBJJ(_tw2lBH1lE#Dtk^V zc2<}zQ*g^Df{c|*?(C?uiWy_d@AdDhPh@fgG#1}Y({X2*PWaBRntA!q=2c7cJgZhdfZ$#tj^n2j0kgPt_#X~L>?X=XET%ki=SVyB} z_*LN>nKJ>%1e~%`_9roiqz*1D8{@9xLf$g9swuJ{4a|-gZ4Y7 z(Whj1K#Y(dGWgKc-+Zh;8A9FZRAo(LXhdltqq;neQewMeOv-df7oIEDXt#;hf3mk$P*IR&kAOhEgI)-7@;DqCtr>2aYyzVFYVun(GB@rx-!$J${o1 z>6d>`qW_mRU^QIXb5%`CkLbeqaII~Ucpj|myWg`-^luv$ORuHZuX(GhkkZZjH9U)9 z!M{G=Ew;Q-pFf@m=Cz56onCCujqpAR;0Q$X@rNe#R-H3s_y&81?@6Vei_{(dp zrYpMA?j(7Ezr%0fSdEY15Vi^mV4&oW9J?7DR$H2=E?fdHZ(yKmY#o_NAWjiLZAI~B z6o>$Jirym#p3QL5NxTpZAGSPxz654TVohvSdgqy{chyM~n~Qkb+DbfL3Ln=NfQ9Q^ zq}$%7TZSxG4rUN9;TMm^>sEZXX0Xy^2VN-R1aT9^HumU()DXzrt%0qPTQk^}Vr{|c ztPN)gZVfNsO_qtrbu6}*5wHcvz09|8wm$+wxw7sjH^7r-rS?5^5p+;fW}!^iqBhry*T@J3nq7m2$N2j@cLG@+&AsZL==YY+LbI6< zZAFodRF+o=+)V6c&rft#RURmk#OULo7XDY}<1qvY_7#PXTrfx)T} zt)x_1+w(`lvNkx1#+dBZ(G7t&Cb)KSimFN*6)K~kj2yX9htxB(s~q+{A>4-@P5=6$ zV&Dp_Se@DBeUT7C&x+WhyTjBrg$JMe!se242Mp2NC%RZ+bqizENPt!$TIpq4Dc;vVh z4y*AB6M`2L4%Btat1=5$Yk!l^7b?G*iY$1r>!I;w_Bb`fneBgZry!L6A<8r2`NG;y zKRsnPn9Nc2zh(1 zTH&??IeNP5Ofr{Y>6BLaoWQEH+a<^lmc??@XT}JO_f#O+*$+7 zt{@4&Wx!xTEV8`#i;cKh5!^vI+UMB4-wi~`Hb6-rPoDqHZ~wu3$?p&VkXwNM)&t`J zj}X;o9NYG@1BU#CLx!LfFZO*5jp(OM(IUB$`#HqG=mOe>S4=@}68=xYERIyvVdh3G zyC}vuMclBL1dXu`2fDcW5cF*uI`VZHCaRA>jfr7Eo8YauD`c}8EMa%4E={T%3Obs01oz# zl9{2e2d(cB8cjt&KoBbfjZAjL7asYul}(=jw!of#02~fZUBKkxm5)-uw52>gJo;K+ zKQJ~&bjrfd=%^2TFx<5u&5a<%tst{fR(?X2`MwMe;(o|BVaUlHjxQihGT^}Ingo4wqAD;r9s4-_y#JgFpWxrurea zN8AH~4=gE-kQAv}0Tb{Ca}5pK2B29V2sIkg0&^^qe!7LV5Ud2ax!WHmDzM7F^jqN@`aieS({^@%s5-$T&>` z3r}1=r8Pg&0z=Tn?dL!w7B7X16-&R~wtb-i-2WDDd%O|Qh)gMZa-?Rx7chiPssa#<7HVHVI#`D64^*?}ix4o4wE_@?7OFW{bD1*g ziP>=b=YjrzbqD*YyH*%#Um!V{{hmZX$>Gm%YfdhefpA@5nXc0QyH`DIQSyue5D3G3c_m(`LiMB_Zi}#azqCeoO=~0qNzGb6#U;nw5zZ` z+jQRl4PJu%pMV1OKM=$`8D@&QGY~L%ojmjRoHFGl%Wfc4b>{$(Fgke_A30^J_f-R# zrI(9c+(#%-?gpsOIkGvUOaXY?0^W`YXeZT2$%4LtA1P@+QhfiD0_!R4-;$U2e}k8h z|0ke8?fMHbkCwvxhZ*jN*`g!&KW1EDmLF#DFuFOG?H^{(H?a5Z$jDc2)ur3{FM_JF zrF{N6KQ|UM*du$YU*^n6STw;xK|%8789P4{)=kx@Pl$?z6D+j&WUEkqmi+TU4*-Wl z7s~G!q+pS`{h4Tu>ZAa0nEbgt0@REWw@iF5ju1GF)*3MPLX0m)l1_% zL4;{=PPWYd>GRE0a`7QB?B}NZ!&~>mEA{{L%2NFBX6&N;e=Ovv$&tE@Pe@Qd?^|G) ze1;#U&=Qo$AEuS@KK~GT40}ZAKZ{WR(d0+~|L6ln*U|6Ghk=#(FY`Zrz)^Gzdvjp_ zn?>Y1pS>hF1Gsr5#~1^a7oSTZf>loo0)}v6VEK~&sSxW62{_GEzkd)XMuzWyVho>% zk^cwwM8B^e2UdpvKiFiAItB<(_!E8e_xv*DsR=vCR||82**~C;L|Ffm)~P85^#3XO zFXhVwXz7LX_xCoTJVU%uUVI*{i24r(%nydee;7}ec#i$>BFpxNjIWaW) zkD9!#ez&wuJIZ`@upz=W9}o%k(!mS2+YhS*`)c4oM!a={eR-he=dOYe z6byZz90*LReOE6BP^f*!9RFM~KbPMH#?V$Fn7A&Ck8N)~l%pS9mfpf!G5ROAm%oeB zni|pe&m3cUccEhc&9E6lGa0UkZFk4wxqRpIurr?T+6ohTMRDTtoB9Pix=Dr>lE-yW zHYmKLw5I@c&!wPxx!e$Ll=MZSwM7fzW!P6sh?{O>6h@W4j^A%3XLE{ap*YOY<0L*+wGZto5lMv z;JO~iAs6Uv0zu3k@{;O}f@OZB0xAUFHYf!W5Rvvgyjy(A?AyvWbPZ1!obE6nZ5(#C zp+G7XM2%KZQ33WB_1~sGU?6&hk}j?{h&MQD{b;BfM@0f{%gvg?13oLsu?CT!U9TFP z4JMPAgsR@$I7NejJV=w+C{5X;egTpP+E6|#1OXbVc#}j6w)3=#Pey-=pO4S)t zMK2@zynDaSHh?#+Z86G3bY&n|`|xpC?WXj$Z*aasd5V!+GkSYT$)lp|%oZL*j-OX( zeFl^{VobofPG}U=ppZ}_*VK=Y9?XHn0aoZPd$a)D`2O->zg|xQ0jjDz18TC2A?r^^ zt&}bqfbq0;*8oi^em3tjCG1)d81J8rs0aykweoLabkuyUn4lRZpbf7`PCKpvx^bf1 zJ6+-pD3=$L^RE)62$-E*E3=Q220wx}!l(~?bejJTj? zkFF5_5skEwy65;36BqPi?0_SyU3i&&D;-dKg;dT za@*Y!U>N}ITU7s1_+TvDD56^^9l421PZYN%pn%g#^PbcZM1>|{{zn<-=V_PO*D z-&(~vn~F6f^6~mDP4!})JKh;_mXn?NWviNo4Do5ny}Q$IkSrma zxnLDxWt$k8jZ;j`LXO`(BgdCe^RhuzCH5`Ip*(EodGrpK5!U@>r?^_hVGCQL_~2&K z!I0dP)eQYl?LVFw1Of(IWrgUU_tpe)FU%bf*|{f1q^StDf9qsth*gsuT`m!Vn_KSB zx3@d-zRt))h}2V9DuRikV=0PpX!6$?*?Ac!Y#S51r5nA^sVg@GqQ693B#6`YG2C{L z!EkY=wN$gw&5`EB$5%=SK5t9B!UKN}R2r%h?BPUMOAK<&1eqInf z*BGPUMEy0fvd^@~{hH#|b|Rz&dT)iGD&Ur965teCjdkpxRCdt{OCAkZ0+ zDBYXCFsKd#-rDaBwoS)-+d#T~+nV1PJq@88_ zUg!7?%+19Fe;3=!b)8;D5YCGX6r65;wbjJ2tx6(TPNM(DKw%|A@G>~2so-^$zX=a3 z`Gb;pV0}AXRO%(}0t>gYqN=mx_jY4xBQssZjYQtbq^9GJ^Mp`?S4zUkvvngvx#-d) zmC=CNkxjxrNO8mE$-OGCRMX1f_2inEx+OS^JdsXvUKMf9V`5?=@)EJ%I)btd_J00% zd#8BnuQfVrTk(&NT>WGxxzt5{q^>8fydh&qOibq@1O(3$dN&2m(6ORACRPDY^Y_#l z^6x*Wx}jzz@@W5p(4ye!A-0@$r}mv$i&>N1pENpyj5A)vh_qQ4<6-{(!OZ4K0U7a` zB-itfUe@EY$LHk!C2>6ek=>BDCA3XAB8Ksq;+F1d*j{(Mz!)FB%fzEord2X}iWPG8 z@d(!$v}fhI_GtFyaPiV93|?dJ*lsUUdJ93$t|z+f>M!fOsz_2?MbVf}M8Avm62Ya* zHv#ozFDm-$<{}Ywbrs!Qh`y~iy-!+N`fsXgMpAERn644RZ0kmxsGYd;7_IttNtB$3k;U{t5}VP{u=fIvaMk zPN#M@!{y4R1lKweQx0jyUuZrK_3L>(iEW4M3TJ6eOP)z#-@#&6|J08iJb2GH1=pLM zyUh*9VNT+ILpWb|n>`guQ?xzo?%=~AVxnKAI9NNXc<=X*HA7ti+B{aVfNQ6%C;`up zl&5>6T7=_A-|p1Ivnn&d@t`Tc_f(kWM`ZVVq}fg)-!eDLlqc!($J4vwKixXm$}GQr zrp7MDL@m_CcjX4ZGT-)JFN97ar-{x@@< zCy(?Ax)q$PS=ijyrh(1dA+E-J7@B;P8&SS_oR5Exp`up2nsEt{S1qmVcFbjB%MBV4 z;bS>nY*I5#y7EunNs(gviQ*tz6xa&b?SXiYcUfCSlxhOc+~;TyCnI2#QstHOf*lYUG|Fa*N6d~Q%xT+FTY3leU~a`Y9iI)#h79HSzb zlm46x>*fsebq7n!m|qpQP|w=CkPqnhcOg#4*TodMMFmfe@_y_-XSzq~X25p7xXag3 zDvnXp)dc45B9>B)Hx)K|wN_M+WnbKsl&st={Wh{yr)hZ~;5GXyK1$o~@?$R0cgwj{ zXZ~*LTB0$#u)s;Uq@% zlx6p@3MzW~-F+=6_t`^TQsZ$~+{O)3q-SJNIH4nWxLMeQLEK0jPwp{L6z_k}t5Vvt z9$xK87yRkolsj&SLS-0qm_53Nro9ZzDJ5b(?(F<7Y-;p=3VUn)2lkN%tceM8o2K72 zXU%fSwb(p23N^eU2x&_15hYq7N!xTp)*=`tM5g~W9?x(6h#@;_P8PkK z{TZlM7*U5*u(whOi*rUOFZ$c&gj(lYwMLnP%G&f-T2it6@f682WyskcC2n24ijM)Z zw#vhIsfM){-QDZ;9E2bh0G8t}(F$sKA3WavjGM2zUmz=(X zpDaR1ei<+C>fXx&^{Le-T>dNq9OwLF}`$L*T(EnI>6F(Kb^WvW3A|wxxcIKJX$rE!D5OsWx~h zyKY;@qrg!AiZNqy{mkG3)gZHwlKyYRX#Bi7Ly8-hUWyhW`>?JY*?!u-6$%Szhjf|dKeP`TSP*hJ?U zMn_Hg@$p&peQ<0ncT}8M*D4bWpG_>LLq9k(Io46K8o#+XM2W1bv_>PU`LYYj*41OB z7Jgl@nZ=li1ZplLB__l1nG0hjE}rMuN^_r97r#TvQND4d0Z309-KzL%Cd*OnN5+P$ z{?Xe;w^2E~Z;0FH!PW0Y7@GqGtPG)eu)!)=7tXLUIE? zy59O#R*}D&1WsM-vImLj{PHruY+C8UR4+aj5-K24iXwLBGM{CDDgarBtroa)G>(Te zs2U{*IVf;p7ZtBSI%F8tJtWB>a*p(HP;`oSw1V7L!U^CmiCIt9>mGzz_?-HwogtaBy(6kVO(%l{&}MZEww}#diGw$U^2&t6osyp;^&jNq`gzkt$!3jyw^z#5S zW-cr5=tES}rljYc?(7NRJu_^|?FT7pOB6G9Pk{R#)K_-NjFNn%;tx-Gx1zkU1vHsh z5rh^?7*T2rzG8x+wYDrJn8s4;4xE;zOh#G&|K*~*Xl5sd9LE~ zpYZH*X!n#CbHt_*`6jr)@R_QizHg3ezq|RxU#qn$Hl|-es(_( z%a&un4>}Am91>=rlPk2+t9w0*qM!!+%cOT_hdX|H3p!?IhjN7r_bACcP8#v$ zk;v5^i$9D(eGj~1ntDg(e*(+}%(bP!vm=~i^Rf>F-7nk{ZN!eZJ60w|1+2~=G2dAv zvegTArD8x!o^V1WL86FV|2wXgZX|haV*`(OQ`~fdCwg5Hu+Q>-zLAOVTJF8R?7`S7 zxXAzC8Hvk)0~bA^yT9AC_y%E}sNyFhM?`_gJGOX(&oI@lNCvBfsdv3P9QAkdNe?D6 zyeNwHtAT2(wXIN^dk*Xc3rP7Es_BU_0!_92PP`spozf$5uYM`;y}okqX6IN0NIE^T zuGv*&S_8d+Q9iieIqT%IQ%n;NJ5H{sJpqn|&-d3eOG-_$(7f^=6Q)7&I)IvjZH1(- zl?7YxPMQ3-+mBekogi$xx5xEEZoSqGn#ksjcnBhU&A|O9t2d))gOUc=Pexn@-IYuO z##`{2b=ZVlr0I;+;dqD`*VOE;zruJdsTnl~_xgP&vY1q{lHE(%XoQ^M31;lQ6 zoZ2{qW$Kq`X;>BFAnNS0}$2|a$c zJ2=|C5_j3w#0jj5Klrh_sb0@;F zMhSIp~lpdp3g+r5!7-0}ZI)i*}R)-~P6 zc5-6dwsB&g*!GES+qP}nwr$&Xa`Qaz`+fJ`KRvp8tgf1C&Z-`J?7gZ=7S1HjuVk-J zUqs!q45IST$*@QtUC2xlfdbI9pUaE~^~%>asH-*}-Cy*mdb6jvYqSMD5U7wNI@ zFBx40(jKKyLB3ut0}aS`)F_WBa?9sSWgEpZcyV|ZuY2RKBrDHO@5`VGp#b>zYHcN2 ztNX`HqAM>-q8gudFIWV9w7>WbOF(&m7DGn&vWjXjbiCFj?;GB_e`~4xreNKzrFR%E z0ukv>eW49#?+Eu-xHQL5K6hSkI^xzFr;AZCOo~v?i%pC@JuQNRO;F3t&x?JX0r{{$ zWeA;jKlrTLtOO&hnG+2g<+aiyi=nyLq&`ra8mBp^>5e`;8FrCpN5UtE+6G}ujC z`wJzFCU&pWFBo{A28+z9S8BBi!0&?4NO>bQ3HW51gL(D!uJ#YN`ttHVUT;p9t9dMB z)#lm@gUI2yBG22Kp&P{eKtNia^DNT)LlBSuuP<&a^-&r_Vdwqc)s~UBfetK zx1hGDLX0K_8d_&-DHjI2H_0bnl;SygREg?6sf zHq&V}e^d09@I~7V!Rs1vQ1rLNBMy^Vu(;s!k#Ii*IF?l|3@!DP&H8RRQo>lx_&lY= zjM$h4SQAP5-~rS^LS=3-s|K}PO5@V+&p{$+GlI;Y*8s?k!vX9VM*spSGt{o=k{>oe zRYL*rhnC2^#C4`1x`4!55z=Z!=lKIYutOHZj&}jO^+4H##WaV*B3fv&QqPOipUYK6 z7o=sg0Z>PBb@L;CF4|}W2LS{n4{PwQd2=YHkHSGDFd*4V0Sb;VcBRiwG$n0ytv^3^ zoqO|nzX7z%xNQU_7`DBgE=l$P=D+~J%^a502wGaw zq@tCBjGa)Qz5@`-R740+#eN-p{PYg*xoJ1?>`@*YOqlfV@PR3ehXC=Z>Q=_!*8>1p z0W9b|JTjG!;)=|upIWCr#YzPNcoUH!03f?v4@?8V%IPx&_;4r|@tKO_fbtnCDgc3i zhfkBYs{`(ty9fA9qoJ|Wat$duM$-h8FgYDT$MZt6BS1=o=o@2lgTpS$A!-5%fHDN^ z;&?Tqd&E|Cd6E;$$F~JPD8Djk2tuCmJphA~P;&Mnd6iiB4jrEW)TCA?7<$ny))|Wi z{_7>tm0aFry_&I4z+l45qlB@IWQlxH`8EH7+SLKjYfQ~_Ae&fLZ}}p*odz=J?&o!M z;da`YOH4Znzj3$r`!N4=+A653ddl#l5=8g?8EFYwBFWI+tdx}cbX(5CZ>qiddY1QZHu@>)X`;HO=y*8U|xb%!*%76#QJ?12*E*VhxH93}#s&D+QnGZ;Tj02{I4({vD(?%=I7Mv+?l?u#sx%0@E!G zngP_kE3S>audpj*gF2Y6aM`z0WImqff!zQlu-}>~Sb?n^3qXPZnO;Z3a{LwY=ru&Q%1Qx&RV-Ve&D)N_{dbL3tKFx;^3~T-@9iqyI~jke{aXqX}5u0a|YFv!DTqj7YR(6AWVKceN1sVX>H) zi4TXAHUa{C*lf+NfvD3U=zkIAb~ zHll70v?!ZGt0C9$_h4Xwet{G8W95>IZ zX{Ywn*VEPW;v(|pxAiqnZSpIW_)#nwDqgD~GM*0VcDeeT-)|mDt#!U~-=uInHK`XK zc)@l;_#Z)lKNO8%jJ*-&7>um#afd2Q+nWpS$e8 z&xi*;iVQ(lZ{o`rS9F7OpAp*w0+23GL$5}LSl8(xw=2k{Pw63_a&Jlu+Ba`)rlXOc zo2}|8l(}n_#SWAl_WJk6e@!=`plJT7yJt}RwPf^^{;+C#&PreQaFJD_pxmKeyJ6ti zDtfa30yPsdmq?~-j|RoZ%h*i&(20bUNLI>hlOptRnZ(&E%7by1`2sj8wT@ZI8?9Ct z$l2{@S|zk@kfV{y;KO{4x?jhi&JBFX15~JVj-z!@Jv=@E1BUD2UOf?Cm4NVQYd*~2 z43dyHi52w5jR&=8dW}>PK@LD{X zOI;ED9!@2zkXCf8(H*}(`%Zh^zIk7T_(Em|E4&9>KvJ-N&L3-CIo$6rnLSnbtTLD` z_~60gS<|wGD4WJY7|ZL*Y1IjfHaG69i)=APX;a37`84q-i%!ZXG7^?FZ*qQ)d%HF` zWe4qcYn`CK0>9R@0YVO0@qqm~X)sDgD)4-Z=d*ppipTI7SHN}LcfWa^PUwsfwW)!d z%QtklLsI;}cmIHROAs!^ z=wq@1?+LXtd#y&6UgwKH+z32h8lha3J)K`JghC;L%FnYuOQXqs{W5?~1j@R7-Ck?r zFzu;cVedL$gY}H;B)kSZbJoZpZfeeGJ|Ss$npbGm(703>U5*tcECSKUV2GH;(t%Y@ zMJ3)Y6+3+#(vr4o2VXWik~3RK$L8>wPoH8SDEX%loD~YH;4dLLD7x^B5xB&-jY%+d zVn>vq;r{eEa~S=UOpoS_qb+;V7~-DJx4Aez5*?E zrkuU0rTmb|?8I)K*B5CIZHIyHhpnu6i=*EXk(@d0%aJn#%kdXY)s@pPgOu5E4`nF+e#kONf^3(%J zdHRz`MCc$UJAvYIyc_J==mr;eX!SA$Mp(f{Sk%9L-d4*B>;E#D`}gz_R+519Cq=ag z`IROW)I@Fb0xF&($rcPD;`X9Oie)AhMpM!OH;eE?N25o~s`{yYK^zKAPf^n;I~`o0 z`T~o>hd>X8H#(zNBaT_5(YD_g&a_`jb7WoRCgU5gvl&|&E;dGCiCS7^aB*a$xD?m8 zT%C}Jo#v}TU-E}0uWsQWu?D4yv`zHtuyKHpEa>Ks=p7-UR^Mohv_Zy7fwb#!Yu!n% z2Ohs1a9K8`^SD>@NFc|2DJu`*bvV@ zR$K-d9uGUp1YKEI2c=6c;73OMB^F{FbGoX&zgkh7v`*zl56&N+>_CumH@qB?p-UUZ zQeei))N|`?#n5}-5OMm55H2Ul=mU;+)6)e8CMeH(hO%Ezw+Q;ibKeGpUv6&XF@Hc} zi42u#m=%T~RBtey<(d__rV)b>%nMJ#Z##)NAvS-&6_FHpfS4uO);-AHNawur?7n_} z-(pHhwO>+yU$wZryRdKSoGo&uZv&K0Yd|+{p=yF9+eilJkW3`Q4AqjfmgDge$r$4+ zrnPu&AeU}bH1#+Z$^i8@uQ7&*0=3lx_+@4&Rj9cbiSWH+&M|-fmIn0j401249kSbtJ+^y~sz@a8VV9~{r!UAN)5^H^Z$xWp{{8YVMVW3O zQi|e$&2xcB9#FNhjT3JUJUrIEhXslfW0t9;)1j5cDVXF+vuHUO*Jg72H@{_fGCUFY9TJrSKU+PfewbNK71_oeu^zVTf@pE7(C?{{%+HerR zqgBmY@7U96snvrCatPMCwO z&H0wOW5v2d2@u&-7MYl2IF(EXy__O`qo-osKMn@M?>^>^wT(3EI714gE)NYCo|0Rg zmjcunF}Fi;39Mi^$^6kqfi=BCDaSdxT6W#up5WFxvD^1z`fc^+jYh~=I&%a(SJH`P z;EtIXU?WqsXcZuCnd*S7aLZ;1X%)X!!J$gYM1*!K)*-WWA&((11_ctfO0>y4J>X%B z*TUA*6_HA-_-DY`SH+N$J_dQL-pw2A(m`Ug_PFJ~YbslYu>SctryEeyVFzM4D`SyVF zY_*6P>$FcWCENYgWy+JL+WqJizF)%*-JbTj^>q~f*!p;YzXA(l?|<)gWkE^cN{F4v z8#6y!${CrThkyv!%*`*<`Icta)EAU3fTv4{%Y|B}i_<)sIr-RS>T(7b zY2Ddb4+!on+(kU`lsCr*(}KUSk>HdEG}wCIPm2nT@pK0PY@>~hH4tCTq<*p^DR%K)y{>ToA^7ump9|%AA?N# zgqyyejYOHW-Xg$;2(k$<+*+Fm^<8UxBuR1DYiC#e6GW&)R8u2xxFM0ADOIxud+)ur zyk^>Evw zX4W+_#m(}dK-pFFl7#YwFLGM=)@Y}$Va*oTDpH`9I2LxQv~fg9slws(!f@QT{Mnw^ zt{|yGHj~BKr15b3eKG1lLKg)Wd4XalJTYheEBL8KC9XE@fb4e#w;Z;qMYt6`PCbG1 zw7lWHi1NR)VsEPp41jq+YL!uz4nT+N#e}G0avJ!R%m+Mr8GFq@;i{Ut?Z;> z8Z7doo#QJQU`{xUwj2nWnAmDhk{Y)2 z5UsHa3_G^UsnwK>Krl}5DNt%7$!>}0YnsOxrDh5dVrG`sp&RvpNJSY1wsgA#z`3nj z#w-cX2+fBIEsxj*GF%{srz>k;pM3Hb^&uMQJ{KS8Ql>$h?_SDiv-Yf~xn-${v*>J1 z>>qm^@AI;ARs)Jp`Q7rb?d5FDX?DizpaXCnBAX<&)2>b*rF{jjv97S7D-AOxdW!CI z^)2k(%ajD+pl7E7TtO-mc&DxfMZqs{wByrn>Df{ONX!RR;>bfiY9+Y2-a2}FTDU9y z`sD`Pi_>>y7lpD}>XPl@NOF+csP z{)zThdryB?qAh>;YKtCTm`RWz*>);#+)=W8h1@eINC`>*b5YVhWgqL0q7vDku{xZL zLPRG0o`=8ldp*7(KC&<}8=%)zQQy2|>vH)c_Ej4ks4))~7eCryWvO`fr!se7ZzCU9 zzW~}hYEUuyNMl1M;r#}e;qDZE>6b4Ro6iV}`jo#D1!_@NEG0n3Ymo8fizy#OIG|a8 zN%5juBv!+iImPKwV0AEFdpAB(ILan|bTk>~;C-1Lfl>uN3!UP z3v{DbG7!&~`7I&MpEm(m=!&!9_p+GPn*RLE1di5rTPI13|L$=Dtx5 zKb$mWf7m~ZRHO{O#?@Y>qL})+;9VecR~;*cI^{Du@laR>H6$&tZ5^b~s zj?1c0@nPLVZS^0Q1_IELRz2IeDXpkAU3aG)L%POsvVlfY^h~8<7&V8!*K4A)Tdt+a zoC#=Y9I}I8&Cf0?e=&7Bt0)Df22mbbPeF!4msKaumX#Ji7BKyc6AjH$TMkwnhnCns zK57@#9Z4N4N^d!=HCO}5;X|9!HBVEVj6%-FMlO}XY8>IGVPILuTl|d#p&!-6GS$Om z^x5H~LEzxcGS$PqhUegx3{YhtiXo4CuJTOs+Ueq7PCS+&7Z=n6nlP;=(ysdQwrpoJ=}B=Oycl~ixVs-`wnv0!hmi;H;WygXqjNE zUNhNs>HfO?qrzKjP+>z$f}BG~iu&HWiefg~(Uc8`5&xs&C?m&!sxVFPqDLY=?X)yHQW^5EDV-B12v_RMK*>C9a|y_iMM}mfDiz}Xm3Ykl|B#@tGuaV zbeK~2a22ggUJ;&Uo?Y=32^SofDE<4mU+^1m7w(qN+ao>(+a$s|YQy2sB=>Qm3w?#a zcqbxJjpIB=p5kFpVyEZ@mTP4CQ^E%O6UliwK>ian48E0OfL{tOn*}waCbGEzkD==1F#YgeYs_P{r0QxzT_@!9;c( zEX%q;LqS0xp$zkAfhKfNrD4&I1I@cQq@!KjakW}2Z5^UCCR8+A;l7D|yd?DEHB4kA zvj;F1!qjj;$sQ*waHHj%)++y9FA6<& zU-eh12N+D}S42E2r0Bic&v?x3b~^g;a>lf&1>K4SuRu-9*6aipGmoWH*gHGdK4WWL zf`VF|CTxE3e4rkx>{x)wOl)e%SyN4BCMNpS$z$BEoEXO9j8UMeX)$fCbW}9)kv%lK z$Qk%0inuuQx<$n?GrK5@4v&F%Muo=tR-MJI(w5Zgt(hFoTAa#HP^SCf(q-4Mjfo+S z+Ms+FtuQqmTjmltUElo3*8HkIb)s=JHLx)X-u-i_Od`}g65Sy3AmU~7Xxrz?7& zLZ+0iYF0y14o6_?d5dmLn_~tSrA3!&ts|&bx|$&@BXtNHL64uhSLNmI72aLtf#Hvj zvBU`VF?Z{nq~z~$BkAG$`AFp^Wr{)O%V@1#5_#NM;akWg3O7qLLqJnWd$0n2Tc^8q zZPybsvb^do;J3?-r5o)j*pu-Ur=N2x_t;C=0b*RuCv;w7M}tWi1oH7HS zpJ<>?QW?K+u93hn&`U}W5!{-wrAT7Mq8Sq%e`C2VUGb$u@%(}^^4qy@JD#IT)>E;a zFH9=fMx{EX>%>H@f+IBg8QvpzVBFV@q1mf|$x;zIXH&!w@xb$X-rR4bZJ_qiJXx*R zNSPnrq~OTgR>2toE+@o9_)Es~L}{1!X^TQa)w-#2j$U>N1I9@qVGa!~KX?XtA4`~s zLf?RVXD%Cbo=O<;lxbV&ZpqcEuTF^`4uU-p+b5q=K}Af;W|Pc^CoX0Kt)R!_>w|2R zcz&lG1Zueyn1Out^lI+++v%?uLh)K1)Vu-?Z@d`dhq>f3nGDK2Rm{}=JZ5(URB1hQ zO1E-9Ykxr~D9Sc?WD$N$$}@4t2*JLBB>KNQ_M+(~kGvJKQo+!_{ZdP_Z@OVT+~?W2 z{#=n~akKpG<-~N~U6rTAWzmej zzUG`>_((23Dy)cY6D)Z)D8W7y@-ZzY&VwDM?^c>UYf< z-YfZbk}*^tHl^X0JoLnC+McLut@xL`jkCfrjGaC#@~`hlh@WLUATUhml!7C<{Z2*1 zQYz=M_Hu{pwGi)QhyLIb4o%5f!l;K-m*!F7VcX@A@m*_uMSq*wJBjX?s~}Od^Rl5$ zs`uWkH(k4rH~_A0^U`&aXr#)-kMP^9%3q;g*~e&=RN{l=H0WWn&wK%2<9cNVjI1C&k~Zqk3e-qr ztwC8y_z94T;J!`Q5lLs$Jp0IC&JAS}38e8O4bXjCUEj_kb@m0F%P+&=iBo%ag2B!EjaPlJG7vW zWnt*FrW1HY6pif1u9hW&^p3U4qUO7ay))UsOcT>~>n}RG-_RG|;<`uj-(V3Mm;$=e zYTs~Duiv1$e0MAGK1NhT=wo;QT$xXJFo*Cyu=E5cwRix~^1qoAyuo1fqCcB`2`(50 zpufG5(CfjqCR4yqdbf7(=>_OqgX_TH_t(UHmVr+QjofRTP;;|S?o}EDCzN>>}n z_B{6ci~%schISd~iM=UO<`zgD2RfF;XELx+CRjXsV6s`}ILI%`8M29vspe>n>H@5e zpo?5DnwS-ck%y7QooCbPqLMSS-OaFa0}XI-2nvON5@rV&NDIGox{?CCA#+QLyFlYW zYIYF5h3+p&0;wKZpTxH`{GZjG-bgAmRW>9Ahu)>g>f=Kd;eK#imTnBMWs0R8% zx0fx*a^9D9V!HymLcadd0$lZTKzhC^5(JHti~&|(38Xwkh8h5MY%`~JY>Zn07V~n5 zxG0S@XJmZ1bTgbDi9z-d6+bs$99fD%s}XWsT}4Tm%_7tyVjw9L(tbM$lcBg5EIj~L ze|>3fv!lHLQue`Qy*PfF$QNIlx=W8mhF3_6(eyZHj%`n^hu{upyq$LdSR52z5vLZ* z5?|wO`ZUb_TWaWg?gP|t_w+Zx=-CbJpi>SqU8-YomQ;>fvXjJ#FBJ#_zgUA~5?PL8 z!LP&bXz~o!)x&yF!Dr4;zljRT9m5sW)q=dnr?JWh<@J{unNz78HEXcul3+p&uNqOj zGh4Y0Mw&CEGD{9vV^js^eIJ%KG1mo{m8U7-4;vFB?5(ux^}qQ(aFjZe z+!cjbB(tUZ6=1=d>Ms{RoorP3AbEg0MRvWVHnCCQ+oV4lIgDPxgEA|Uzmw#SoHY*C z3F+dm^b+BkNE#3c7;8?D&q6y`4vpY(C8SGG2Lu%qTUrg@OVwT8A_GyidvZ>tQ$v2I z@g1&~;=`BEQ-tLX3*;O*Ykc3T%QgqC>MG1iwKMC=R}FV1+(-c6@MbnabV1n5G`T5Y z*}3_OBSTGSRxi*--$N92=w#3@RJkTDLjX%+c>YtWKm4&wIZz>IP*hDk=dz8(UeuWdK&pnZ z+<{b{+yH<1we*U?zSGgc> z_&h(XKG8fSB`r)0h?@2bdZ(tQ#>e05A9dimeOlQ0H#WF8IsH-?hJ_pJ{j~@ zPS5mz*ID}BJpiixzJBBTMjl>PnnEdA-E|kR>D}uc9JiN7At$9O)HSg@Fg?L9hG#`B z_+vNI%sAJ~1VpI`$e3blTN_>uNC)t%pkN`z7vIYZSES5ZQ8DuJVzQzV#1cmBNmyD_ zm0eBX=jmq3+4_3=YB{C`hT1x$b~k1D-K3h43YJ0d^`Muf$iUXtih$a8(asl#JcTPs zix!E&=cn~|1`ji^KB#R?UA<4#RQM?uI&__VZLR+b`-*_(dvT&>cRy*FwJG2`C3(FL zo)5Tp^~Q$Iy>tvLd9}k%O26ctMA%T$(A(3H-$unn4f6$ztM50llrSt1w_rwULz`sck57eQ@Y#|Jq#t{LI=MXuRmF z-Ko6qiigoJ%LD!kY!8o|PnNqX@{*o=0G;Q1-PP&O`Moz?CP@_z(Hh^{O#JC(P{HrZ z0Q^OPE2YT`Z0tvPW?z|LH9)%>JDr?0zWf8-zXk@zjtU4}C%GxB-2!`C)hpbh?O`76 z87J_AKHgnDC(EC*E74DUyE{j_`#bMsm7n`R_w#okajksqh@n4P&-l)n`dHv|Y-;cC zKj7BB0CoIthN;55>dE(-o4##a`>&Toev9FCf$UlL;?OdLv9kv}?CyMdy3Tt8-BoUO z!;D0$NPm(}-+T@sPB96--Ee=qw9Z@i^fuoLpkoWZ+1Pxyb(}6kLA(_M-PwKR0rllO zDFVV9`SPiJ8pqFDd%PvzepO1st1t_16hfThS;~L)FDiC#K0WAyDh%`z6nHm`o_1Ge zy-jKpZYSjb>u>ba3BJJ}wiRLe$Dt@!7S72R&_*xRNk@pkkl42=T`cgXb-TJtC z-A7CLXD&LS7R@l;l7owP%s00E)#E(D?GJ9uL3Jv`OE zv&Q$QlF>&K$>;dW{YTaMXImxyUX<`eU#!9ITDPA|gFD(D0%E-l2x8Ue{*K3b{D+Z^ zi}y09_oh4eZ3dC?F8Q&|rH%mi+8&T?NQfG{AH?#P7yFl%EVRDK@!tMNHxKslOS0{g zEIUxgI4`g0&Rf4R28T??>{(gkPm+1IJvHZ_T%WpHVC} z*iQt*t zCf^|qz}pP>-83fH-RJonaL#tTU|hm8eewwZGB^`rhwY#Fv$=m*C%b*MQoU=w-TlyF zo3v$r;Q|X5{8@SQ@5&xM_Nd-mgob~~_CFhaZ*=Q3M_-;UC-e9KugS)K_2bHw-+(<@Apghq12$yU zCsjzW<~}+zlmN8o56Er!t8Og9`+FO^ZyoQ2sYeq7_ZPYM7X$Y$z5=)#L{7qm-S*l0 z?Ih2vZF%r1e{?%s|Ga<1(*0Mgm=m010y=%vDEuD`NZHp`I3JcCF5aRz?C@cf#|$Mn zeyCB5@XKGn2KvFC&==tT>%&`>XZP6@p)_lIlkau?=KeE^(*{>jcglcX^hdB) z)PHfZO-J`)BmRez_!kf7`xEQ^{%?&l8w7zV139jrg+{plE=*+yYZRL4L;T(H)V#_3 z>`dfA%iD$LJb!~_{f}7E{wv=OB2%-lT)&SFJe=t+txXO;oX#+oeL2eTLYx z-oIa8_1*x734ce2f&UTdKK(!8`)-Hlzx!XuqAU-x#owNuEB<1zpI00c+etp#Q-BA& zrra&jy#zn@|GO`j=y!B%r2i@%I_(Uf`^C!Joe4JLIWzQMbL98`{%>G2;~nb||1k0o z5=)cG_e+~>tbx(~{>S_&%rAgzcZLAYbG}Tw=f_?=Lg`-T>4UGPl24~CoM!=pUQd|1 zupfrl{|$b8-Hl=V^8d@FJO1lGTrO~3`9u8p{D-^$`WyjyW*GTL#(yGKQK&oBeYk&g z^!^^x?cwD4+`AN44A{HsWAfY3^I7r9`kU&!x&GP(j@TtiVELZ}s#g0Kd5$FaaE`_Q zPH>4@VaD?_~~BVM;$7zj7#<`8gItV2EiaOZMJ51GWv z%juvtz5XG15_TR`qs~1LQ2}roK|%~u;oA~8u|O@v9T3#bK(c*Ah4nO zO>9FxcB}Im{wNE_{uLgIL)w2^jmH0-XvpsEf$@MR6LhX3nDed5xY3OU`UxJl`>Fss zQycfw1d0X0Z}f)15Ak7n^oHmtj87H@nt|-YQa^aqCn|m78i`9PXrC{BVjB79%{^c0 zMD#!3obzQ*Jpbe5b6etwoPpZN0?R^G=NPJ?&IurGMa|zAuE_X_-(AHW+<+c+$22bDQF6tfV%LYn0w;47vMqoM50B77GI^YYe3d<%}Pk`p*>UyIs z6|e_UqwZM9cyq<&<*&O>Q|ndLsCEhiP^M!*#^EH z8~1#8x-QAb#anwZOz^+I9Y*y4+N6g8uR_%UuoKG30WR%XM-q@cuVXz~&!(jRXukOr z3_J6k@yxmJVJ47l5fU>~kOB$!9n(O?UeYn$cDKQsSyF_Qu*^SmDup>SieOq%*Ago9 zT&9~@HQiZ7 zSB!}_Q&%ap(8p`~SOEZNz0B}7?`XDk=o@}xfUz|@thNTH8P^64Sau_3)UOqz4g)hcH-rmQPKH7{2OKU0jl zvNHy0)RnRBq%aRvaeiF25jH>q-)~HkNtL+VEN&gX7D31$0rJmZ1DJV-Q5NgMYglh0 z!F{T+%u!fu>chFSY(tPl@>G@5s6(Toesu(GFn5-BIAxLd-DHz^dz8!e``;ECwZ_$h z!j0y_j-mw_{cfG-L94q9To~Lj$ZOmDeuoIpdo*dk?HwTqa2R*|6r<2|znAjG8heO*^;f!U zaMc+t#^lzK@noAha|CiWZ8}vBH3PMF?=-o!RZv^Ic+GA_R##LsZnXq%w|#`fo&CAk zk6+d{Hu2U}Ukl7M(Nec6r-qF7ba|hj$RAHuZl}Hct233qX?{b3K>% zGIR5P)Bs61A%&(*ZyLycTvR5h_Ks9>WvCu82> zqF!y}12_OGTd^)7&VFQdGF{csNOqV9)|l6`Er$);Xl@Wefir{P9n*J&WLor>23Dj$ z3w-hsFAs}ax-BvQCwO8qf`*D;{&23bLkysa&FNg);7d@wEqB9&wE1eM-O8ChmHlt4 z(ka5<^N^H-=bAM9^4CY$eM#s~6PX1UYb9q>^`MJt(}mEl26Fyk&Cbw`COL_Vn)@O%ZOj}F!o*3xg{5>zvTU?) z$dXoBaxWP&K{4l~E>TuVzQocG(CP$lZ)-3u_jKG>tE%7c>k4>VK@cBr9phca@K1cb zb$pJ3Dy}_DSCYFJw3nyj+$3k6yEzLUT24qpv5J6H)Uu?pJTH(uWk@iY&sk}~JK{aZ zt^I7!4BK9$Rnn4O5*1$cn~E;bjha~Y)Fk_xKd@*THS*9l>&n&Z9PX@^m|R$2-+w9$ zPRL|ppkJYQK~30L#!I)A&<=ORHsQ1I{G>71rdkuyQf4XzSz8hllC?*xel})w=C(4} zz$MSa!jx(IGZW}zE(>biATsA{_!(LB`QfT~_Bu+(-L=h>HroE6u$?#;fvFp9ZI=I#y+OcJ{P8Og<=Jedv}y_y!9 zrj-`V8baF9_TKE0m9FzI*5!?%+GfvHy;E4Pok)LjP5&}`>pW{0D>K?hUgWa*nFDI+tg;gE)`t>02_Qm({dC0UJ(V28qj}7_GUTxcguRa4_ zxNUbYk)-o=spWxclJ!@SjH@tARIg3MVHkX?A3OTUG{@#89khYVWSJqg2k5YWid}~v zd38<@K<+6FwQ~a4hPT+P^4&J}>xz!``^!b=Go5j;xsMO6FnKSrbc&;bIZYB)SCo?2 z^GhSE?<^s*ikiH)>XG}~sM+Q_W3!VqJ16!87SbOmQfc;QU));gm^)_{p+og6t$&Uo ztU(WQIAiCL?tx}#+gD{VrEBOoA-dR|^){#8BC$I=Wmc+psc{ERrJ_D}+~oxc&Jy}V z2x&}}nno$Xk#;R{JVRZ+mJE!=jpafEO&wE~n}C|Uu0UCHD%Ep>7wAnb?XPL8lA;qP z5XALARK%@9)IexPG?2%7HxS+^dMVxxAzi*f-Ga9oX*3n5<%31!MRXN!)4#3JWlrZm zdenc*n<#3s+ulx2Qo4GbpLs;ajEYK^S4)__w^eKw{_gQKSK8Y1w39b+si@?&Qq6-y z`b8QZrE)2^(X1%D!agCAXKz1rFw`me{%hsz(9Hd*^<^DIk&G@ShLt`_#4gfobV`PX z1e)f#oW$iv1pxqK<>JBL?(tclzy&p1FXGcayb_^cKk&(vz!8 zvFv8ukUgvCp&!+^)K<{0OS3!J+h6fnE%0h#-mUTo42~!IUUT zNY=_ad8+v*Lf(9Oi<+4Y1i|Y>G{MbJ*5adD3mQpeo31;w*MuvYnQ1Li(N?VuwTce4r**a5M4D$dc-R2VSbPjAv;w)POax)l z##Vg4gf7rhw3IM}J9@czjV>qJsNIPwD(pIB^_!S#-R}0^aGq~nN*cEr0Z#jy`N#&_ z0k?egg6B+LG26%7C57@~uJY~t#-|p?;Sfth$FD5+&*iis5(<$rFu|2D{9&vr&;BYZ zGe$=%J&mem*Nnnup)wA^o%Z-F68a;m8$K|+%{BgrL=*aoC2_j8_-I*VYE`5QBqD-*N68lJ$=vRV1{ZBcTCwIchHoH=wF7kpu2tKFEz zhMEKjbc8B-=VJ{muBxJR>)`YIYU@qzQpdCr6qnV&0j4*TCE#TT9Md@G3p_=V$? ziqe1zM3ik?tJD0HM`mN?rc=bQ6u(QmFi21b##*@v26&}r zc?u&aU}Oym`FqPK3Cfl|*K3r5Sz6}NOT_aRdY2_EUDD)3 zM)1;ZwQ48FvKY7RL4=f-xoe4H3K|^jYzHv|e(fzKAl+p%LwDd@bsUuOzMnpwRf5O4 zyScmEP2H(qXQVDSVR0$D-(oGXYEs>Z+P@u*x^QK6J}zj^rL}x0TKFAXLQu;L>g5mC zPytyUwKCNm{b8$o;R>cDHP7hpbiU_QDdSpBJJ;=#`H-T+rR%D{=O244E7X%NM?(=Z zC%OzmST*g0VOx(3Hb^8MiX?y)hLde${NaA-0A%kHVOO!iM@GPT$m%c#U+ zFIg^_oH}KqyGg%}j+b7SwYF)irn&Uy;$mW+m^2Q&>qIF} znE&e;hU7YunDDO#^ygeKI@#3&$KDYS0RyzjmdD%ZiT!#hEQVuN#w^gKw&vGJuA@$k zm{Paei>=iJ9+9N%?*k(>Y?SNGS4NY`;sO|wWh=vE0|^m~Vz%s7I}Q2AI8mi-ZcEkq zcjP&1+4UqR#}SNIpQ_#C(W@ulR2};ULAalHLqwrL@`Dk)zfOIi8vMqXrXZnhBGlq{ydS~HE!7D2F(Vpr3U9x)vcv0W=*N8 z!DwX%sCq)1pbEg`#zE_@eyq7Xgcg(>;XkmXFqlK+g$+r)4?on#d)ZcI?$uy3|w{8mytv6aOwlXv-56tUO2?nv1F|9~j3wXB#09mn|(IRWNQVDg0fWn#K6?cmq32ZAs*Tzi^vC+d;Sx0y!$I%Rh%dmS$r_&jKc_KCW!2EBShE$vDRdOJWj*`2e{nA|Rrzxe^ejd@HQ zrPB67PFM=#mLDQGzqhMcCm_bj9B_?~A(yC}KCs$^^>KTmTIJgE~_fVv5sZ8Wh@;L76{!%Y#nDxja9b&2`*l zkU$x*R{U<7ENx-4LRdtDJ@Is-Br;tTsVKf7Lu_7UUdzy=y|E_!k;BJRHe%8G~AA?s+N;WZpYNkalzmHykB&0sREeXO0m@ zg0ELEq03LiL#tdReIn&Ts!Y5Gxe<3i7`~c{3Q;>*%hDdF=P+r}cp@}xIpyg(i;0-p zde7T^Y)qJc>IsyFVN`8NMa_0sWXP6M!hr-KW4>U6L#jAD2m^)MG*oRk@07DgMs3V2 zXVBPcxMbitkntoZ1JZ6%n(Gwh56B>8b)` zk@~*^%c)jvwdO47ze``h)cEEu!m8AdJlU;Q*bTlYwDRj$I9@^%pBmi;6^+s*{Pjnj zkPQ-7G?RLICgOUz4_oZUN65_`Ne^|OCKeRG9vtMv_Q;E$Bg*>sfVMTP&)QXL zjm20nMvcWK51FTH<=sFVQMY5x$>kgFG#R=YWAI*!x}d1Bu3Q_f!#)Ij>ROn-ap73~ zeWvLYhR!v06KWD^73l_LC6ABej#rd4(nhN_7A>W z&)X+jCk2DCU1VqkAPUVN?N5hwE zTtyueQ}%R);%>gRwY=m|>O1hMxI!@4+2*YJ4X5P$yM?=2d~w362257mXjjCt^QZ^x z6KMJDR5X~b^Cf2n+om_h(Id;+`kS=ewpFotdq$-cb%>bH+cwjR!B*kzRn_NDz&2TY zDh#$hQVEj52I!u1cQ@)WgndODKpTKDHnecrtE(TSsH8Y1_xW6ZxKu2h$LZl1lHDr6LLsl*KWZCJ0B-WX zB5z_{s%s%f+7wQrv>sd847gRj@tLA_u6*-WEt>XBt3w)zbS7O&9@AdT%P(yC zclkX(8xF-koZ$s^n&di#88_TxJIS0cB4F<@o;ue`&w5t{^Qr7o-ba7)lkcbfOf0ya z8>1ibYsm{NS!Z}&AZ1o7G-$l{uWy$7?~zdw3Ad)6i+r{_m47YmbCu%U>@6pIE0B7< z!IRqV(@X+dm}`c2wmHrx7oATo?rjtjWLA13%J@O>4f91(CV{tfAD1A#GbTMxL8m+8 z#f#c2{1&UsY&qJ?h?v{#!B5l-xD(?Wv?Wk>b-g^x`tx0fv`rj`)Ds;CZ>l?z?7xg! z?WX!w4qkjiXD#k?H+&Ew1KteEG_t7!jJ z?lwV5X)@J07A{2-uHz1k5paTikfI%5ho6(8ovALjFEiTztX0m-7GvDn>X9?*?rtYF zeom#n%SuY%Mb*3Tv+M67ssv_Vwz0CbQH{J&H?C_nj#k3?sMyBJ?tG2;S^XGu(c33R zMQv>2`(KAEsYYg*i{7-w!@d;Fz|P-qf+^_Ibj}*bpwLFE%WxK{8#mi~z%DOYwLl8@ zWuql4_s=$UgtswQw~y?9+C16Dif#)tjTQ!0M+uso`n>0%0$zva%egyEeRM9PG35Ge zJtyit@kXpqeme103Hlc^BH7Dvu4;N`dgNUMQ^AZ&2-2e{#kMIld*a=@ zsSJ8cL5c@#60BO~#x2`8?9Xx7U*IU{`;&*hfPEq**ALh~!QO;Ue%_xPcG~a?(*8R^ z(p4N-<~CNCDEn)38@typ@U%HzSeDzg$(_w@?YoOxVK)UK zXKxC|0XBu4W-#qZ5l1EOd2)pqW{pNN^foLRVlLDASeq$-t&27g;um;lxk`gkP%yw}an$PkLooEH{LsmhlhHZd z)7WfZL?=A6nQcoychMoC=;df`OHXnzF|#l%*D$Aml3_^DLrzb%rH_^?#lZXq%X!59 zyWLb@hTNu;)8bvLu}Y`KwlsdbskRta?R~fDhv2C7BnR$0lIAwdgR^}ZxE1>KRtXoK zA!8+rF;xA1(zw8GM$U zJzEurwBE0`KnWcOBz;SPm~+CVX+vdpR%NC)hkSN`S9wgiz0FZ}fLDc+V@wJ5!3J>R z&6X)x1uTqBMes39!9dke~(`&))otJvyDf4Xn*-^{PO3oE*5V$4IPe00)MDsN7*zz5(>Z@LtH$Km@ z;^856dU{F-KK4ql)^#$%s-ZG^9fdMyE;M^rH0pIi+neg@Oz%~>AXKf6k)k>N)=QH~ zE@+Q%0!Rqy)=Mu2f~Vw)42}2|w(c}^`YCX-UyI?miM{K6565oZnVDZ|{v1J3M1*J!$CabC-XZY!QP987HH3B&3C`E1^(D zMIAXU$Jx9gXPQ;Q1h*Ne%h}j~HErZqxVtk0Ad#uUf9knHBR_b;p70A=oAQd{0NeOf zfAhI7taLXmytJ+{DJoDz0TUc&Cu%qs%kzxeO54XeS+$lsFL|AlQO+7`Q(jfdU(;H9 z#2r`xOvy+aonE@Z6P=pTa;9P2%LpmZ({^!)Bzt&K$>9+rx5835=74lokl3j=Uh~sI zHkT+=XGKkjSrQ3P*`8oyGmk#2l!aS}F&4jaGhq^7RBV64!%h43d9P;x!1jj|p@Nt+ zG24LM#~A?EFMWG9g2Eq8%zi=vc+ro&UOMrq?h{Hk{({eL-7RuT1upbjiT8WAT9dd= zd_>w3p6JH&-u8K%Q9I~$rXtJlEfIew=w2I%YIc5Ou)~R0uvaKEKHzdUnj6xtu$xaE zF?yZdiCGj6q&1XflqD2}4mhkSY1Dc68is(Vyxv;9QlLW)1urJyhdEE0&XJgxF;ezAq)sWhuPo z)CVsm-cyfDj7oeAgI<34AoOlBUW?O}BFg2^*TY!ysDhH3t@x-ylJ22B_;wWUE)fjl zX%W2hZ!z-6a3}ac-7b-Ne~$7**A~m`#FJw?k9hkxx4hW;s5cd}v%XNSXC^qkt*Xe5 z%+gv7EPi`SAIGlNUZdJ;duu{1brFfF^_~7#7Q1esg9uwufTY`=)4}Tb5fm$d^d8J=L3N(U9 z8u?3I>JOJc@7++ONyBl4=8?G+eQ2G5I!pMe^WpN`G!ZR&Am->+oX}SKxNxa=?Bvnc zjQk~yB08jKJ}xaSz5c3a+RbGZQ6bqY{;yhgPWhb9oF}E1tRP@8xe~YuDdivQZ7?G2 zk8-lrGPD&Z-1UiYPlenpwbbc<#}rYrsyWu)5MCLd8?Skz&|&EV?&;R2G-gL2*}GZ7 z$!WtePyZ`Oa-3_lMOSDzq^48DU2)K9!-vm@pQ2e+l)Cg!x>+=jVBWxC-)uEHiNKd| zNf=sIm^a9AB=zq$U84yX583avc;nO^Cp7>3)%uzDB?vH zn5Vy%04{7Je@r7^@!yqzpVx;gI6@riM}c6Dh6N&A>ZqvUa7g`A)DFY{|CBcd)RS0@ zCOvu`Lgm`q$N2R?BKL4OuK8k6!#(hA889k1D$oDcA~3VJ(*CYR`18v46IVZeaEl(F zkADqm`_jyb%KIiJM(x6}VFXwJf|jOkRB{aJP|Q;w_)@JvgbgD?=&eXNdMyEU00535 z`QfhSpan7cmVl5Jp)W5SkeO7U_HTz+=;3M_s=n&YO@X~2L6C6R@8N5NY5xT^)Od9u z!3_@4)I(8yH2?t&KyWqnXmTM?(;WBz#%+D;1gE zh5-_XfsDM_m&coX_6cu4;N4qG{1DbFv0tQUm;SJ6?;6@j*sa6w@C`t{e-i1^R0YIk z>;vhmYuGGTNu;hx4~S8vA&gCA)kYkwF3XdG7G=NMZmv2tU_s(RhXLu}pu_ zO&^*q-2&Ivl0t83Z|`|Ie)y9qdmLiOVO)UoVIfHv>;&Sd`!ys<97NdE^Wnfg6?`fq zzH1%o_KB3Ik3DJJ4(coIlKb5Ib0od)y%JLA_KOGWOw}Z^2TENPeHSLh$xDYgtoFQW zFK!;Cb&3i}GVW__L`DtXJgY!W9`M%milLFWFUooHpTp_)Z)!zCMHfASGc-Z-KzL0h zVmbAJ)Ip@GyF4B84yt_Uj{~${<5AJY#Nm%hw|Cx!ZC_g}i{JB#hk0%a@_APiyyras zX=|wNcRoW0J!o9P+6uMtjNLZ(2q3y_`S$(lbar-j6b6BJE0qcImUR-c3{co8>^$bU zKa8!Nhd^QF9DsY0{XUO3zE25|Jm5s#sNUO?gfwz|j8tGsjLkdOgGJ8}96;MI?VcVk zNav9WPSMEJ>0GcTDRTpygI2ojxvR`{=Fi?zzoof7AtzL(o>N&-Wk|j~|2U(ot5+-x zWn{C1j;E)uDNH?&_vYe#vLTO);7FksaCV@og2mtRHZ3Z%2#!ssoRj z?)iV(T3nQ;uqGMa;hjFAj&rgVHAISL)jZ2PE8=MgjoD$t@IrY0Jlp_Sg`I@MF)THN zKAw})VamIaLx%v?#!LQO4&M076`lHrgI#RVi@VBbaBVSrRw0EUsFDKZW!p%1dS2Oa}qu$XPh`NAS$5v0)I!(gFoOn8J} zHmWtQnpoW7sWqv7;qJ2Xw)w#W-O3%^n=@XIwm*AK(f~zKXaXN%Lnl%10EI;*L%o-U zQL0Z$(S+;iVsc*A*&82AQ0I*axcPr*`wFnOmabi-h0;c!GjcccfYjfobNy9zu$B3{lDkA*|R6JS7v6dS+i!=JDI%` zF-p{Cl%L5GA~o4PV6~iTdrydSk*P*q_ROrMpqdc>XP4C_>#}5J`}IC2cFWZyuk#XC zdXr6ZueU7469q*w305G2VKz&a-Ef}mT>Tvl&_)6k?xxx#k=76q@ zZ?5fb{)geKhZg16H7@$z>R#6Lr0GGo?j48zp>S_x^?G0p0DxYsv`Z^z|SnaUf8q20z>rf>NN)|MZRo?O@+{27ZV+=Z69n^D0{+jaJ z67QmI8vet@{{12q8qk`f3cII%S;&VOp;7-3g4&=_Wj7GBtXoY{4Lptm^Q@`ihQ2BF z_&D5PZ}&6jjfk>y#t%4UmgocTEJ>E9U5R>%fNC_oLqMMb3q9om--+uh~uerkl{lLKK2 zW09{g(GGzWI9z=VR#Cd1k$i#&5U|<1vUXI|j1W92T>V(t%1v0JJfrEZ&#CEd&0kPk zmxcmeOhVziKCbZ0kN0AQRvw;EiEZ9mA9%BzQgvP{FW&I07=E+vXd(kLGs(+?zsLvQ zcpsh(co$qW`JXkV-S~gzU;NC^&;Jwm+*y1EUHk{iOkZC!2ln^)zJWKS1K0z$t)I!s zCGBMtfgEv)^!FAS$oMDTkT%~x@WV&B&AfO%apUC8?=^lchCISOMzP{+h59sG`})kG zqkbj9MtS!5EAkD;Gt~XBRL>SsKV!67@l9acn2}+i`n)CsW(}M3Bq(8xEt=}eV(KPS zNc6_yJhPw@TfMlRv)?WGeoD0r_qe3&%$?a3TZed?UNs?`T5gEI%FAM7VoB%c=b{#= z1S^fosj2aYkln*WZ}w=gK11+=%UKFT=#;y#6Vm$0g%_p1Z1j?q%egB#rSkJ{`Vvc& zvazvWmL``D2J;UO4@E5+ZoI6Q58%NE9;pn2ednUas(a^fYciL!*_UAzoBR9K_4?e# z!sd(01fA^*9`IB#hCWd*1MZdlJC=?H>~Zjj^T0k)W&dgSlx`7aiKPPcPR(W+!}D% z+3}Up+eB|KZ&z-4Zh0;}y(Uj?aQiMB^iGcxyfBB3#I#Op9mmykLCF*pf{sHYpObL{ zWhD^l<9dP)>qA3`Ts=@AC^K(uLlzWSoD4+dZ3qemf*_abg;(+1+uC82Tk*Mg@7q6-cW2 z?7BQCJfK^1XEi4MKy!1W1s4GJgS$L7ZyFybr}keoiK*bW`hR^}iTuIsZz#55h0$#F z7~KWsjnw;{ovR-&ecL?vcWdVC8&_okD|&~$DY^%T-93V}1`HT|KrUmhc*WqTO<5hm zpZh~26bhUOY_spt&5X~&FK+cN=8k0jS3RzT=GVgeE}ujtYb zA~^6F>i>1W<^w>o=Xb3fr%O`ZGe zR6*w=pIzarDXyPEAmtK0B3V5O2SJ?A{wWqUt10gyBO_Cc!K?9uTy~#9M)p1VgKVxK z)$Tt2XFTTgM)CCOOkcPd1erfO**7oXfF#ew>|B78vpdeRuWt<2Z`H?7y<#`6o%e2T zuME0QZW&@>_1^slCDkQkjb^6rDNeQz)q)gMMjbG0%j@q1g0Wo30>-;f9r`lmHB#$fxsAi?;k%<=L& zx$trz8hm|XK#z2&y=8#3mDLDa-c}yWZzK=z5wgqV2tSg$e6Sji_w&MFh5Y5Q9@Wv0 z?Vq770#fioyfeX*TE^a1yDqzdQ?t;Vm9bY*lI}y;JVQn5z=y5)%Wnd3EuKmm8S>Y% z_16i?tvTTZ(5mCbg&7L82+-oiPqo>|&?d>EagxX|8FGXf_w@9xZO3X&?^sQ3tR~hC zwBsz->)#*ScB!Aa((5_Yr$2BS>KUibk1{W869EDe5&|mV#-Tl#$x_?_W<};&L`?C~ z@^`CbLr(cPL#1KGu3lDCqnCDh@K3J*Fop6`s-^yj!&j67GJ5=tjj=AZkQsHpw;6B< zQEa$dnXjl98D*ri|c~J95!^a^?`M~}`wt-+-G8i`y?W<(_XIJ%vasE{vxT#zGi#z;S z#ux2cP*|##5dS>jYg=T^l+zQXG8>=DMo%t$!F)8{IyBJPfSj&khdp;v8#qsmJ01+@ zwp4g7^9>?DX#I46O>cVk8~01K5OAU5m@z~J7^5x|3!QH0f;Qr zS1=`2*G@1eiyO%{j;PNYD<45L^z)3g19R--mqU3zaxra!Z0``Qr9h)VJ-Fya{Q;A+ zD=D6vYu$U7U>0j)=t^;c6t_K_b3lc8k$J$9g;q{QKpGrK7E6YBZT>t1p;bvlqE`A2 zos2a}tt^~={j8~a|vGnc6reoI)$`v45? zsCU5?Ib_pJ7(KF^uD3!Kz6dZXFt(eJ(p%82c+z5+PHuyU<+V>AnE&33*Hi2?-;38j zkV|UY8bg~LJYe^u)A|+p5Kbx5KJ3Xcx`LF88wZFmwN6T~m1+3kRVbqt&XQjSG4;(g z3@cdeZniaf&|~|9yeR;Sd)fW)Y>;CMJo`S~Z+DkO67a-Dj=^tkg<-W2l0$GX>cFF3 z8g$s8tFIr}xE`D6dOq56@TpZ%sY_Wb6V@0i+q%4ahxc}Q&Wji9MUz{OYX%E=^f6FPjo+JZiDaF@hFIq!zyE1|{^#?n zitaRc55yOhnz{l<_;F}dq<#ep-@tu$1m&6%uJ`C zux;zz%5Ge#xNhzGxVVUt>{_zC7to>dU8O!uv9gan^03L0NFZ*%6kA52ntl^_y+E~f z?LFg3W#r$a9A4PL>HO>E^xUlcx!Es-caQby2iD(9f{z(LKBoOjJSo?HQvRFtcvDTW z4+S++8>V4W0VwP)0&;WHD83_+;|#qMW}do(GZ=$26d&8^_k`d zx4uAd^lKURlT0Z9vnF{G>3ex2=@PLz*m@|Dyg0!|E%S*J2^5A`!!UQ|-kY8RN$JOe)#aN%Ikr4_dMDu_ax(=4Wjd0>GG< zg$a&dC44WuWP={yp~=CN?BpNVb@Pla915EwO))?88@Q(?7%JJ5f0HK6h-OlY%4XU$ zPs(IVHsesURO3K6B}CF&$hy9j6t}=iT z$l=WUFw%;cli|~s7*XD_(nMYPseL-R4ifieJC%Xg-htb40GO9{gf$mmbx|$VY>sxY z%xk~Bkg?Y$V;7XEI<;{}_S<$Nh4!L3-z;G(^6iSu%n3OKwX-*+Qjy{5y}g05!zLvI zw&l&RH!l0Vk9$}ZO|f-bxkJ^9isZ9&v|6>R+C`(tmDjOYt+l_?lPhQIv?@F2w$Hd- z_KcP|JBBLjdYpUgzIfErz>jFM9mF;pSFKyPfa3b+q=Yye6R$e}QYh!?$Cz!+g1%W3J^|=NJ7*EQ&+?PRTYg3-|jYf)cX63|uhp#%&PW z6^m?>u?&hy4fqSUFfn5UxL(}LFB)WS=&w2%7_P7O%zj3kvYAc3tYdz?a~gB1oryVX z8CtJgE3N12+^PgTx*U?}7Nr_2%D+N@%9p1Rm(@=uuyPXKDY`n_i1FWe^A#vh&ABUQ z6^6-dS2iWvUb#rq_0~Bw>?N&LO%?Py{`5+o)jz(R4nQccAiNnY@p0X1mqHARZdJR^xzH=3B}cuaQ}catQNbqAGNnJ9wWIyB@<3%^!?%_=$5 zvkK!gu{t7m1%ztYw}A}rDQcZA4Vt$>6cn{~NNho_bp$BRVI2|6@>YI6lC{R}{O%%c z4;Rz_`%ej6%yl1ho1K}_nHl&`w1u7BbLsfc$e*|&&Z48DMle>bz!MY{Y&Rg~O*6`w zTg1up1viEkJD9TwLm`mB&QE!5EGubySsdkoHtPfJ-``t3l1_j0`$^M(Gv%W5=F^*~ z`CuoE0DVupnNU3s`CEj(wCh?wS``q8PH?%$xY#*#onkcn0?I!sT{|0 z;FUBdz zQ)3kP6ITqwa&&7fNa3n6v9F4pIL z>d;no$d`vPC61010mB9=n+-Fxvnr^|G#rb)O?~N<-qHCdKMkZe_ zDnfoNLL;LYn6(2H-5{!sZ1(iz%TP|+*T7-NAX|7LxQ4IY@)#iJCZo+1zt-+DtO7Ib z^l$B6tz!%08E*Ytdq8<`6fFTZR)<5}%Vfu%rS0aqI+&Cas) zD46=0iB!SNSz%L4r1^lV#L%~zKufg+C89#1o=K+Q`%It)OJF}``Rb?ou1Tug9Vx5Pd{< zj6Q`3_Ib;PNIlJzbK{m-z^t+L3)nm6;dr|Q#*BdYctc|_omyNSThCF2At}yL0j(tyQwD0UxEUj2)vbo*-r%K^ z9+~}ln@iqh{juOi3x)K)o+RgH&&S8s&54rdU5V-o%89D_@XEQKQO#J7Dci0y)ymW^ z^!mjCQKg*G*d8-LH+|afP&SL2vgVG^3_UcDF?e>T;h=N&z*`~F+U9YC(CqsXH_u6< zVQ5prdENA-X&SZos>~R)$ns_Bb1~t23GFvn!G3(nO2KOhJnGVGL#H&L@zorVDnrUxtMKs-+iNQ8`mNiE3ZDbyo%Sj$XO7UHA8T|0|T<6}e+6uDe~w zS~-SvLRxL#RW*kEx0!#1*~_IUq0hE*vo`{{$7fIH0QtOkD?F4tBt1dCJTo)% z*#`9vnnUhhcMd(m+I{x42IJQjAAq>X(tWI=$fE51pH+z5G5k~Z!8_TvfAhKX8ozSS zdB7}B?f2e|p0E=(corla74Oya?dx@fiRwq?sbvi~cdjPr%=b?3tJ^nUb+>-ZT~&V7 zkv?ZQ#!^{Fo|M4RSHMg9Wq!!veV}|?cXV6_q=P89!$?^%l&87uoIQ z^H`Q2yHIaD!^wCp_kD_%n{2kwH^6jqA9P7#ARyj##K(lxIC+D{RE;S+V|x}b!`;B0 zkk4Gk9nWFPEnt|fmQ=vTYZ2W89$+I5Ue_`&j#g7-)pS_Tm33k0`oWJ`uPv+VyY?wd z=vA~nwd{G?|u=IkQnmNIr=aeOh0(&^By##PvLR%C7H zM7h|3_ z`|@r5y1V$-j>*jV4d9&(2v8vw-oBA?2zthpTh=@LuD^+a^ymEf`{$h%PCt7C-!Jd3 zZ|+i$%F(-*sLoF!hUQ0FstdOQ*|}FBnz~mW&PC67d7X6|J$k7RMDJRhqRshrK!)_G z6b%509GuYQHR{jl=MGb!PESr__6iH7+;!;k`Q!t;UlZSWDvOxkV$ba0p5#nz&J zd~ju0s6Le`>R@|2Ha9>`O9QDlv&;Zf*v;)-g2`__7iB5qE#v4lDdP>`R2w#r&JKnd zE6Bvin@p<0R3o)2wR^tNvj&7Bw3SGN8gWFxLXSfGCeml(6KM`~g$GXkW8d{HpXo7G zCgoQJ%7VZMP_m%IeC4EZYbf6!=rf7Ua&Imu(E*V;gRJ1`O6&CZL3vhpDF}zCLLizl z4{WGs@v+DnDc*%_RChL>IXmhsVRH*z>wn;XK7^xgZ;M5(W@0O1`e6x&ZCMWjLBT@# zwXq+8b$6nP1MZRlv?nNcR1}m4;(&+<+~`5`-EIDvE!{~32|U|w)#77s65m>{47rHD zewp%1)E)(V<@}Lk&nBp$VdJsjW|sdHMT3av^yR#KFMrnFA}^%D8N$4fOIA`N#Dk2P z!wt-A7hzU`*>}#_0r9Urg}U#3=l~Bqkf^Z4zKCrs@3$~c(l~~!Xc;f=_F7dQxrsb> ztxIxAF?m`#)tvX0GwKa?ceB9^r>&egb~%z}O3W$nHrTQqBj&D1OBPr1;D$uYf2wGSwIy|^Z*YXHhwF5hlFiy`thZZi6of>>0ViLCNgd{M*-gu) zjMtwcr;bKou^Q9;RpeC_y&gzRxmxCgw+NhM!DQ1=YTGH|?L{tg&~#G0u&~g}{>yiR zN?l^YujD9)u&6B#&qCmbtNM+On+1!n=g1Z+-Q>`Y=1<7q2tH~A3aCX?5Q|HX(0mDs zgS_fXct@UeRns}k^q_8f`f#rv^rcJC?b~U?s^VbDXXk;ca9d!XHamX%QpdC!Ba&Qw zwt`14+5A-Wba2#B+(2Nlo?W+=py24FS`vDdPnylvo6`8%d~1~T6djt=k*K6#0kPfq zfl#W9IgVy-*flT@7$KB8tt$~3s2Y-z|1tALAJ3@2JJHI|u)zLFX4X-ve1>6&`O1UU z<%WY30*e01xi?g~?lld4=Z`CEcI)Oe3mw}^Co@-wg+Jz*F0eX_F~`nPdBA{d@=hv4 z;PYtJsoEK~Dsu7uz#jR6b_FjgTv9~zP?C^PCgD@ICDQ=6&Q2heQZ*9?eiue$jZknS14gF z8ORL(=PMoZ8^W+a$B=&_iGMlpzaY%}f2IG#C3Wx7t^U9z<%w1pf5#T?cd=>Z)Ex?e z{sD+eD`%j8;gXZTSB3n8%OAku&)T9ZH=%z*D$`%k=?^g`xBm@@afgOLi~0V%q~?2% z{NFQF-U;yMS|N0 zJ0Q$i^Xh}V8skK4o5ZiJ2R`*{$MGO~d;7*6cUkfUE4r46*@*8KE4mJ7$*Vzti8T~^ zHT5pSI~4=GR!Z^%CfuL8_k~z*aXl%xV)@0 zRYqaQi}QWthe~r#7GqC{V>w2tfs&q5Aovxq7g7!{Fc2`AJ{`1MgIn0-*l5QlwCsNf zN>MKZk@DMZFBmW2DN8gpDaMP0_68y4MWSJR*cE1s84xci5xk%)K-OIg_`7GEnfotzrW z6o0&XeZ7&I?5QBS-DXtMwZ2MKx>oN}$iUUaySTn~E`LKMmnfHEy@DtiJ^5UTIJfL~ zwstwBT=n2Va#3lN9ZR34689XNTei67cGmUsVTz2BR~aFpSA4enLeogm!P$-6w2o~| zoBoQ+IhkvQY}?L*7h(KZwHu$BKVc|!2j`4u1Otha-a)^Zyr|o182p(JoX$$BZwxVx zTq`&YE$b*DiPs=X7%eWXXWK&voBF^yvFK!@=^T1yO7OXgb2MGEJCX<^M|yMggdEQ7 zwqs_>*AdL>xu6(it|G_O6ciDt$g|#pG_C?^nRoZbP!1%RBdb&>EcM(iwa3bR#^41W zP_t=!YKYX3w?jAVl^+0{hJxNsk2H~U$BPNpI)NhFCsNn8g>DEWtYdOM?TdP#vkz1|c7$a#IV zlC7mJlZ9IL7*}7;L4AvO1)0-^q2ivYr+sy7;n4Fr`Z9A`_xjlijI4pee)W%zx(tN2 zWyFx6d~Q}I%R6q-QR^eEy_J#W_v8%1y1Lu%K79&nTaa+HCxnMQ(dpZ5S5jM>S#*risNn?HxT|q>l<_{1 zHIwRQT9xK(0D^}OxvfdN$<9d{B%7pT6|T{o9@}h6>%3v> zk0R-G>!j%`E-ga62Tqizha&Vt!y`vtiklMk=!1;*lfxv>m(UF?j&eG{0Ts_ZIckH@6MEb+^5v%mxI0M zZ&&of&R+XGuiZ5`K4g>?mFc+rI|-`CZ=Pzx)3?x{lVLe9_Wa|A7q@%%1xG11oizx;p@yTX6_nLmkT0k|6T5KB9`;R>5-)L_Lj!u%NtkN!C{*HR?qt5U|b9 zC(9?|_Q&!k?Q64Gv5se}NSZ8Kef%;Z4z^dJq}T@m>jo2O>40KaGUb(Q!^wg9`C}&| zKr)M$Ng1SE@9^sTax}E{3gNLyZ=Y@)jJbrp%y|hLDkNqKW`mcvq=dh0U#M_VBQ6OU zon3zt%L`wrxyQg_S3^(xl6#aQ)P!x^b+1!*5f#AeLAS7b^oQrlQ}D5x$G9R38I|E&GIt+A%{p=kgdY$+J6 z)dznJwq!LWm7BpaBB~$GDTah-FU<$AJV0_7f=ZHK20P3ULzEQiq0I5+v-u&ldd%6c zfwlnoUL~gC@j!xrjyHv6+`hpJH<@?7GbF`97t%jV@|xW zOOVHiVLEkaGTg!o&;RP*H@1XfQv;1|l(M{ymED7#jK3o`= zP3$IeHjJjp{G@#q#<$e9szXw3y_ zR4ED?QFnNL9<=~66G0#h34B{`TDv1fLGN`9qE<|%Vw?QW&grwJ6C&#qU}rDIQJ$2` zXR$t1`L#ILrc-3xYX!Z z9O)kJF2L(nbn`9EL5I;K#sk$z^UCp$ByVT6xQyGE0&c7V`V#dHS>x|>WW;MYyUH7D zRTALn?8na~MYJBF?%zz^?oW5$%)VPRZW>*6zP>yiv#vCKD_k)r>Z~_o+PZn^DU~oX zGBOJ(&vr5M4@G~&hn7LLe%a)#Ka88@zanvVyC)~cEoOO6E`~YRDm(xDY!|l;u@`av zd`)uUmbhh9`H+3P`I@5|Mamm?1HEA0iLScBx*Iqeqh(U()a zuJB#Uy2&Gt8)4t!CL3H&+zFYcgewQpg36O0SK?kXxMWn?fk`;yi$CFw`&6Il&b{N{ zwcY{{XE9?O@!hneo2o52K@*euE|$#)iR1g8S)!3C?(MDdc5izDHxmzcIsPlM8{D7Q zH@6?rPrB%+DkWA&sSoGGU=p8wracq~7d|KfC{GtJZ`0PdVdUO9D(i!Sm}mho{4GDR zy6|n(6V1&ZR4!CDWUD2|x0+7N(rK=!?Krzh=~wr0HuP<^D+r(}ZsJD{57$(=JA^W5 zAYB}CLIBcY726Dn*mw+~pMggH5BU5d)YP2!N4x1((9x1UI*e)(@;;V?ev>2=a%Z$b z>l<(Op+dI#`|wZi3-jz>d6mJWA8k2##)f<a|X9Oij6JE69FIj_lq#8){%>Oz{A*IoG=kKG;sKBVe7#j4+(vW6sqN4JTh=vvV zNyqRm4!XNwEeg7O`%U@vA+65qpnz_Tp1Y&1xFK~sedYKe1?tFR1P5l;D>*_8UI6|2 zb9M*GrZ*xCd&gRk#zP48*^M^R!3JoCE35tky`(aqiz1G0=hWujN|eZ~&S&u>-)Qn> ze%ftYnzS2IBFycRf!Xl(x@3{pDu)rtD2vHi987zABbN>s0D_5!e$t+)FTcul;S3X$ zQ0f#bNvk++Yyg2hpJqPpp1C-wcyWl9e8quNzMI@mzy49E!2+RDWf(dae7ID|0z`bY z)zV8kliy{TU8pW$mmpg;2uGuR~|Z zHB$JVXB_$=3dVQ;A=(EEH!mE^M~&Q#l!la9f+Jw#9Za|u9{&Nv?O<7gA4-!>D_c)xV1f$i7T{+?)s5?>Jyk$bKcoc zVD|^KP&>g=%3y!T!-HAJt_b6w_-x7(n@5*z{^BYW;y-c8?zA*xw)9~(p^51LV+khp z@cJOeQ@ngeel0xHFVGlQ3*P}oQ8R^pfl}=A^D&Sd_0%^A2S9~+H3U zlb^yzdH+SYys{hacjc*z-PV(va5~um3@V2Z{~=rHS(P*25GrGw)X1CLJ#U$1#Ig7C zbBA>?S*h`YP$6J7rVqP z{egF?4)Y(pu*U27NA$QiC_RODJscZUqY8qW|yPvDzT)%mW&`zsz_I#FAl<8J^LqtWmVt4ug5Fht+PUb)%$uA}U<>aGFm=Gc04t!xbeXpS&UUXR!W5 zSP+}K!>7qU3$`SVa6iYL0bXLoi@;Q&z!LXATPePUYrmvqxAD|Iq8% zAB|ib5x&@_teV*fEl$ZJMZ)buVv znZ7zOwCOpU*R#Ii8$s=aS^b9Xw-Nkmq$tz$i09UMN?z^3-xMpgIg@mkaJy5iY|*J( zCd;p8`c6>J`_%mIOHK^bxZmbew(@VSz;=Vu<8RHxl{+O=w9EX0z$?A$5zc+kO6IO< z-@mnjI|ZFjiCF(-1(aWQ7~}pU1^vxrgE+7|+l62}VI{@w>UJAaR_ zl=Ri{|KspFUaG%PbzIWTStl-w8`0x`OZA7{fkY$+i~pwBqi|cPPG$iL&S&)0&D?(s z5|2T!o+~j^t@PH)T>%o=jDM9(&K$e^-^b-$ml%1d{u(5QBC3uP|Nj(wH@xmjrs4Gc zrJjWFhE(oD!vsg^SM_r%42 zj4SFCuCw#!EQ0=3q!sl)Z6@~p|G)|;d{?B1dOl0Vg~Bq7aFI>5Gt}2{1m84-dqntn)kf)jNzcVYg^Tglq{;cUa`^=gh~hJY=|=LryOkzV=dYd&LH}{He&KIUWV747WJ*McPsUckHB@B*w;6> zK8%l@^>0z!ZVRq*FC1^EwvdGSA{8SrgNYO$kK6EB^gcO881Q7Vivov6NnQSWgIxJt z3qHKg=kOj75QAAwas!ste;|PV^@VR65d9}64}hG~4B%%JVfD!L%4^C0Qi}4YBgw-{ z&RZQmOt@U&89(~Sqx|m%&n^{WsolNURV7Dgc2T2gBafKDaoTveJ-RXJI+G`}2f?hp9>)#A;__YXgD=_E4}q$T!|s23v!($rUTToSuKah1yh zPx<3~+J^20o(R2yXo}j&gB~2Be#FfkC%;BH{DyUkIthqe^hP{^Vc6%N3~B*@YM97% z0rd47#EL{m^DPSL(jv9Pm*@6}je|CV07`KuM@DBsA~rZldYh`pg=9X&(}0R$n3^+)iPvEwDhkUvBkdQK+q2}?tV1!QRQYwm#oR~pY zdKb=Oo~#%C8(wr0*t#Tspc$q0QHr45thgP@n>tV@7t9@Xsg!0i=b zlx^-~^y|THTETIBKT=iduc901M_nS~t6nX1kd3d=5P0-vvq!UgHTT!R!#03#;HGlR z1o^7>&VbL!F?#R8(UD_D!6&rjrKkjdJlnbE^iB3H+vnYox5Q~UV8JUlB3X(k(KP-e zm2)Nr({$ymSo#KK~f)qd9ccWk@ zWt$6=ydT8yBtM1VqKGn!%2SDx!EDmne~g^p#}%WvzFCupUx~YBOZ-&X1vG4=UDSzR z%_L5Q2=`mddhZZv<^-xKRO52Ms~yo1%s98a>ndN#(5cmE6s>;*r3`i6=HC~)If=|5 zXoDE|tTtRqO6N0k73?XRJ~?Pi{DbeCmI?dNw%ErJwoyAi>TGdcy(FJEz?F zD&inAUY9`j{NT=(&Yh{>h>G*0`3zuDD?dE7dRQvaSW>mUwkJvHWh?n)7j^$a z&KlQoiqX5um2$~le>ZXcm{4?&-{%CK+D#zBenH~)JR4UU7wzP{uA6GxquEw}Sm7{Q z^Q@;}W$g@bx*Ob?S&b_dZuz7w_G|hudN%GeXsz?8@^F0i?!U6SKg0N3CD1O)-NSteObHXlV%NLpyLR6>s1NE7e7Kj(cGm?P{sT?>m}Tyy2|LHG9tVTiL%{Xg4dw`Twm;@io@-| zH0AY-C*#Xzd>N!^S@MR8LGY3@Frle(ssxBpat*pxh!47(8b3ZPQK1047~m_c9d!jc z{ZQehP7|9(hvD{M!azQUd(47^PO+$Z3y;>e86D9_CD)Il_?h+EagBFVv5rsOgW1(R z(%k9fPkg(vexz?69HErbcs9S6Sd-&K{(P7wf}&YfjZ+AudlT{QM}(&sDK27I3J+I> z@`IRppa16eRn+xiH{E%?sF;A{h3s&SDWf3D5sO@&Xeee6#wqG|$!uK6-r?!tF-(vD ziFRZu(A~&7*GA>s%!1P5b&>YB$CXEF;hGQGc}B^poxU*Kw$r3uATRwwwHFqNFnFMY zV`A4G-!;XyM`U+zQ*IN&&)2vU`$^LVta(iQ1?q>ACQQm??B6EzllBK#@|gHlYDAj@ zgbX2B(N1jzK<4dWjQ~r5G9HrtmCzriFB7;Wl4i~NG3;G4c}V{vsoX`(!*cH~YKIlB zq1^K2u)9jU0fEr?w0=`Q6Mvp|UahpT67X++3D_%#GG_l0!LL&D_)mUjmV(3bTH26w zL@os-Zit*f#Vy*xvhk?Z7KJF-2$vz%FwwIRubPUHR!)k8g!)h+RSs5>I zrzNQj>QtZi)*oSRjibCSz5<@5dBv;Pc1z}I#sKQ71=2?zO=DUyEnxQ2r0p_5|ichU{^ZQT64sUPIZ<}rh@6MJv;$P2qp^!bG zre>a-_jB^V_26w)@VU3Ji$W=mf`b0*3*$G=(Kz$3;MCdj;53*|HsG-|V>DQe1~?qj z^W)dk3;jQzeKDz#Llwbf@PB8WJm>m**O}4=rCHcM(DA!G-b1EfYjIO<_Bi4&lw4%1 z3+mA9#tB*!s*{EfK26ByxbHcoI}IbaXdY-=KT)U{5E9v#&1|5Ry~ii-FLFFT>Y&u| z(5`E-6cAU2O%y?4+k@h}*e7S0<3hs;(M$~w&xupAH+zfp2OU*s$|(h_?49lN1?i7p zRSV4wM}ayzr1nspaWMPr1FZdEwSazWHudGNz@aaHk;;?YF+ zm|wvGKQWB_l~A*JfcJhVVg1@(?`lIqA-mIu848BaW1hZ93p_q^UNv}v*^kFu7y&*c ziche`$xtJo4Eb_lqoH6>x0$u!2_LHhc{!C;j{n+;kNAsY)RCN;1XD(8h7Ss6o*7?` z&yU|^^PFGX`xt%}FnZqyc#%pn>If-<@AM-_7H-N+8)Q5pvRU1kBd&`6GVvlxze^Ai z;@v~LhxI{GafH#$&}gLpd4dvO@OoBPTX)3J2AA1y*5+5r$ILI(3SVfwC{=4$%LfPF zpyGeiC{iRqqm#;i1kkRq$d0DkkxN}-IJNsGU-0xrX*)9sl&Zl(a0JVu_r{&+331c(t= zc6fWqx1dY%@&ynxsDgg(6IKoV(QHz>POF<)wE09rYE208q$;FX{iIwFSl&>&4IO?_ zS`}FV%zr7Tx-v^|oP5~Aa4)PsK0f&7UW@&=B3dbkYmP!LleeXLTM{t8t-gW46f~u1 zg7S|4Z6yi++ZWGH^>6)e$h`oA3!`2;yQi_<4NY@ku@Y}ze|L<>YZ#9=nn+EVc4cF)C4P;j_0 zvC;kRe|hk+K%=L^sz9SCO4XL|F6c_%1!BBkp-uHJ{LhHQg#T%AUDf|a?7M^45LIba zFoX!K3c&+I2q8o=NOP#T7y^I`1o-a+!SGcsu+XZ5Ur0s7c)mHoV+ME2e8`%Lj$&+K zJpJKktD(*UU{>2HcvA72D@L(^mdU6z?ls4^*CEV|d3ZF+Sx&E_eE}xet&979CpS`J z^;gXLD`6uZ`p~UsRh;jbH?q1JG1iSDePV!u-GG>*@Am6P-9kFO61JU z%s6W$^1TjpXJ=>A3I^l`_gvH&&Cz+GErW2(+U5sFYS??YJQ$e6nT zOcDz#61Zl|Dj5fMR6#?|8Zwrfa{Zu5t&*zuJJ5DcMNOi1`mLG7oUNID1rxIimX zXp!%>C&$@N8XS5XikzLEAwMP0;;gL9+|z2v_+PZWcUTi$(=d(=MF9l?=?a7*0s^5o z3q?XxO6VODq<2CQML>E-N~lUF^cG40rMFO|Lr4%Q0fA7Ziq9|TbKg&SzxVoG-yh%E zT)T7j%*>f{=A7A?&F)!(e@p&yH};PE=H^|xO+UZr<$mnC+d+4c!w^BtUatXDVaC!@ z@zVJv`{pKcgFr|(gGttX^T2_PP(_&~(Hkw;mgX{)sGie7Wg6m3R7Ikjr=RgtQJALU zPFoker|n$#6}H3X8ZM^vZnV5 zb-=_?9hNCc-VGR!<$6ZbSLSra=Q)B#eow*+lYEQ5INH~jXi()ki-d^q&bmYkSZUCf zuN%5Vo7UyNOHWfu<(rVIbu_4Rx4$D6{y?QFpME6Q&a_NIDf58|=gW0N;}be!KQ~sv zSh#hpR0}0%o|c1>XRa3nYq(~()bajXYcBPTjp~$U~lTvvwYQVS4D9Mts45w2^F`M_4sm@uy#0_B> zvS~EQJ6EKEmKhAY4Tc>pbhuPKpCT%mE&DM5() zXpM{82-(AFJeQAsDUd`1+I@^pB(2Y3Z z5SIGt$`(J1F(y8-qMW*t7}e=gOcEN-i5qfLOH3GQ$xQHsa}$jViWV-cij5drt~7~7 zNdq<-i5RYY$od%1xn_d|4>+f))P6%5VQ5hR1YKT4(S}1B3`vZhXC3ez@96G=vzd=G z7-mphUdrh{yhCnyQZJ{zlxoa42{Mt90u(Y^$)&Ef}G z?Bf8Z1dL-nQM;uHAjd|>dasE#mf5Kbs2&~)7*_*ekoT>$G3^x{br%@4p+RU*-G%9X z|5dr!sf&b~B$67$MVD$pu9dbIgXy6z_Z^m>?87HRMI}pAdU)U37CmM%whvVCc=13x z?Se6`B(FsDI{8DT56VUZZ+|3xxFbC_mBo}k(``C1TsssOT$y^!n zKT{>(cbS<<0?g<4140_^e?2TD2Zdf8Aq_AOxP?aF9LeXoube@BbrC@Ekq2yyTL_cW|Zxkx1(!YP000S9$8@P4wc0USynMVCaw z8=)9y7=ezWH*!?txY(&vMU%`y#l@%Uh@4fS4-}HW)}=yEu8^G?Cn>}C70HjBM)FGO zxMows!dM|_ zD8wCG0EPKDhQ4y!jDGikgukg4kCMG(0d;7{)XY zf@xoi*bp*aAX7^H;B!%ylE+t3u9TH*rMMU z(m5;;5m8jF>Q$y%G9tQ6*D)CG6#BMhOg)h-XRb%&@_WJOo>f63U80B986Qw1hEq0j z!dJ6x%l5sQBsoY?C42=`Q5k+*xUEM$V)R#jsSSvv#P zoRihmbGcFC?uDg)Pq!|vmlkAc=kPK;16%D{!8YU=CDCOfCXn__$$s8FFrDB!h7HC` zmbcaWkTpAijNBr=?=;lgMXwJ!RfzxwdnuF-_~LArBbpox`5E+eVx~1JEoKZK>LrV` zXoH%PHhD$!rlJVgy``A8^2y1T4ryr$o~-ehMk(psu0~-_q+?MoCc{6yOlqD(GAZ`W_ zN8w+~Mq>n*Hvj?9}9 zID@(2`UdR0`Th*zb=Y!L=8}raIT-7mZc=#Pp$dv}_BIvSSaeu$%o??OkiI6~ zJ+m?@DzY{<_VkuQE6!lide6bmWo@J-(J#oP?Asi$rV199B9?B$1PJTqf3Z#Wa%M^7 zhMT;py6EwfF#Qus&Y_!rs5%TsS5cDgX&M|hhV-71z%Z@hJ7qHjVWaNdqprwv{^%7S zmGe0_J5}K2#VyZrKILX7i9_BtBx~aB17a@~Y~^i5*F>)*4^F#>-har2U9a}^$m4ZW z?y&OlGN?B3L)q~Ah&sefBV49y4TURKlJF08#g|F97US=G82bb@GuNM84qQ)Tk14uT-53=ypl7B@)0m zJxN###Cq34EVQI8q}oCuFDI?m>c5A$DEx}y)$>mvxeM?JSW0|&b(1FGm5diN zC%YfMBfUe0mhApDug7XT0z-_BlJV%YnPgpt`gy}e868v12aw;iG^LV2*7 zCc097i5%zhw$qMnKDOPdT(wbL%j+vimShd8uAgI4v}Y%UZ9VO4=2ra zZRku#T#IgN`@H(r@r8FxcXDW?Cx6Lva6C31T=G|X8qy9;_!ce-lCb6!?smQht#6Q>vy!C%wLXtx+#u=2LZNn-i} zW`L;LYN=JK-Fk92QFzOnO5^8|ySGh%W1t|j%yS3)b$x}ej@LCme+cc>8Q=p9s8^;# zbQZphEEM$h>Kd4TEscm#6COo=37*mUJRr}d5~4__u=dVU$?k!%L$H7zbqx3GSJKV$ z8QvP|)(cr^u$tl(V<2O=rKBajd_L$y7$qxb!H1W&C4~}C-+z6Kzqioap~!=a$mJ_V z4zQ(0@Z`KNQpY%pN98IPVKv-arQFtFA>IS(Ym3)R&}vUqEM%eX6zFNN6swvSgYv%G z{fNkz3opXym1IB(+vOMS$~1gWArCHgj%RuJ_^($~46fi8>eChn(p!Cg zzL%XJZkF~t6A(H+7Sio1iJ~vr{&+SLhK^4_*TwfSFvll84rBaE2{T{{aP1IWhr``7 ztY1PE2%Exn$H$A#8$Vv(@lDPzwln;_OA=Dkrs?|Ejv-MPs@4Ywa#@=m7W(JC?pc?A zH4masJm7sk#V3aP8MVY^svbPR8Qh=L4sc0F-JCLkqNCrbAZdAL52n?s_0^iw$&wxf zuWU$~)LYcyaPs!Z4Y8&{I8$F`YK-CTZiRVJgsRH!vX|7Y>K*g-Mf*G*;8K>aNf*07Vd!0A^q)WpMi$rYPTa2pStkbi&%8Wsw z9Kq91dc+6>4A|?IYp;>lY)NHM%u@_Yq_TosdjI_cWHplg@-=(_AfZ_5_RV?Xpl8*7yJq_(_UA<7ZX}wq7 z(GhSlrSNIKv7E`*&`y};H>Hk%D_^D+#@QMlTC%HYH7OVQ*9f^dSrSx8F1qe3r*$s1 ztdCn^xxFJA(wUNwqPYCdv9~nF29%FUXrS8Ihylz12}w1!-%rt4z3D3N?gvE~EfP{S z04h2P2nnFSck4j6^Ltfld=$G{b5UfV6%RYdH7rjL7ajY z-c8`zUQOI!S9@TT%x63ZnOin~@i9>(+FEo>W-V=HZ>Sp2yjPq)e1Y}C>WzD!ElU;O zh2_)HBvddWf^OyF!5mY&QwwLU7EgQ;ej~pGUj@Fi23}oxo_06y?qjzR7aE>N;K~(i zk(&*|ck>uY13P1OWxcjBZS&3P9^tani=s?dWqlWGt~wq&K%{W5JjY$y<>+eXA)%ktDNt@GjkuPH5JoaqWL~(rXM9 zUCkV=)=IeX-3jL&MMb44v9e2LogHuqC^yoUCj7wza%I(J<*PSIgNQlxGtMCK7l4zu z8aSKHL*lqbY(#7s8d;V^la)#5`lp3glb_Q znmJR68n{w1wRoaX#hfTqO`XDox`KieAuq3)Kyc{X1YZ`qJ{}WY#wf1veJpq9`);w- z_|O6_%SDbtRU8WYej$}a9BiiVv|iHky>i2N5@5S;=SlhvqIt-m)>Ht0RN^sOl@ zti`BFgRr5XMA+)tX`!rv`4I*cy`;AaP9}%)$Hs^Ceeo*lIrW9J>$!PPY4+0IccV3y z*Xpj{hoTbi5bcQ;b`%D)WEY3QKv-;87#8~#c9mf77A0d+tiqkk$zIoJy!zb31JTri1HvKmOk8eLx>OYW{a(qcESN(ae1TS7OWo9YC>o)!+o z#B<{nviT zIU;|$EyZfd7HxVxt78rJ(_AMW#{H;{m5<_QKbhPWW#!q3>D`E(dS(rKmLNkl!y4@K zrAcOWFSlCa*|n7zqP1(O%pbNNR*{{pR z_dZfU|Gp(3jjoPRU}xTaRR`oCxj4)Niyec(p3ew%w!Y8SP%lWcGZWCSt{$M{v*HPO za{1Pi%L&Q?38q^_=ecCzpw-N#wP~#z)ylsxmSN;fIaQ&N@#{^`soa}%+~XJ<+rY=` z0L5_ev7?sD^0kNCVIF%iIPuAuuf8o0Tf`vk7Sx*jkIfai&<$$rDx5{+*Yajk$bvx% zbr;^!qzf+yhVvwU5M)n;8go%`Qje2f)^ZqtdH;oa(IPCz;6D*T`61s6c`NRNITNX9 z-9_2~U-%#E6WQ0pg4+Q(h5?@=9&^!0aK_P7focS9UrPwLyL9os7$mHVn>Qb9n6Hzp zrXV{vb}fh~fW;ra8aH127xMqF(C};V3P^Tphk@XBYj#EI>99ZKw>A00g8!@hT&B*a z>Tsv6KMcZx1Js0QRPPDh`n%2S)V3m(Se<3?GH+hBC3`tERUwVD=!ODdCYi9Es_Pu8)e@SP_#)Yn;&s)|(l;|K5`ocm{X%@E>MX4u$%R&|xPNRB`LTrGt z`ronykNs&Ra!Rlzc9r%b%M5t0!K3Rc8RG{;yqu#r=g#l4{A5{GWX`YHQI{ z++WfU23dD18V?GFi>SV!Bl73R{-w=0vJm!g>)%TMOMB{YOCeByF<7_wT*EhEBJKD7 zsbL~t?ZEN>LjFHX{onfgXG?!~|6gP2KNRrqEdSEfTbln@nu4cU=vc?|zYP9+{Du83 z|9{f`k52!W{Qos+{%^bFoaN>;bL5%=JuECN>`E2n!EHJf#S}i8D!S_rcc!54IxKH070+AQ~ zn5-jw4*ZRr3V$E+50uCL9E*jR2Lh2$C=XQWD4xjkd=t&6 z0V2iJRv=)ouIH2y3ROq6uBcB`Tl*v=q)=yXbF|Ffu*@#ezzxgnWphE9@ys3sf(C^K zNKC?4RW=p)YJ;IbPvh*iw1zrZC35VG%C7(t)`PrJMGDSJ%Ft(d0}mS~b9ij|&DjdI z`5M##%D)E;9I~;lNh6Y6d26gV--0#ZLK>&ZDHsff{+J{XHi@zj2>-W7i+e(@YI3bf zMt}q*5Fl9j=~Lkc_j;?zE!ZoSL4X8R;(rm^_p+_Vn-_I~D*Wu;PlF0LW-@G{pUIZd1hMo6}-sVe)AxLm!SdCglRsVd5 zN^TvKpmCpEBv9Yk?~z14zEY{FpTPG%-mOig~--gaRW-m?!OxaECaUG2%p9HOv;|?y4$^uW@56!b6k)gMLSG&BKiHwBD*O`~fdl_u-IrQY+r|Brw>Z#UnE>^4f1X2Oehl&Jky0 zSb*Y(i_<)%AUYN0M)Q1dU_^h2P^3@_eVgJ%eiFJiMN8#sEyaN=yrt)t_9%m>hHiFN z;`Te~1J%&;#2!yE{^pgy$00feACoFHvoeV(&&(Rcn`siA1M{3JfWdwC<-jD}f1m5( zrIYn7TZJ|mc*(9QiOhFj6p(MNC=1Z7#LoL?`1|jxL0qcCPC~sO>1~iQgxr-oUoM6x z0+EB@`Nm#R^Ocw*>YX=&m@7jd5g5l}3kakdW7)>2n9#23)}~5jo>ToHGEyk&yk;^0 z7)*4&!HPPXor;DQar7cj03GsN$91hP=oxtC>30O8#joYp8P+9po^ErP9*JXd*2t9H zKMY#A07%`XVh8$~5AKnmN1OHuzF}bm=-oDa)`tY}km|K47sCK#``@-w_-|uq^~ZqT zZ?n6^K)jSKvIwRLD<^mV>q>Ku+AU=vLNwJ;|FWySziqJ!k?U{N9yPA01kS4XzpX99 zzr2dxzs+{^&hefs;nyeJaK(8)5vK&=cRxh|Lm2GJ`YDh|;za)9K%)zY5op}6l|!Iy!*|85E- zI&j1)h!gH~jc9x{!L-EPGb&m~aGhRg>p!GmHF*4Y>!-c_sy`gipMgM%3-2_%+x6o% zv`|yIj6=%-^DGrG%XCI;8=wvbgY+{A6AbI2X|@#AREz?*0nf7ly7u-c*#R9>v8T0m zCb2$4R@IUZ?=RvqB+2!i42k57NS>%P zpyMO%^{e}hsLS$+Maf|P+V@qEi2P)p65V`NyJ@~;UL)N$O-Dmj%TgU8WSuaJG&BS! zL8_g^8n;{nP?2+St z{-OAWXniWPA-i>?{ zQS96GFv}P$3%Q1P4aN*&x)||wP{XX_@gE@B2Xm!EPY2f=2^-LSlwZp;BdjyOMmHa> zn0w$RP}2Y|8SAMlcj4v-7piV^GANg-|6Mxr@h|&dj($zG2z0qrFF6MMSHHj1S@?wj3M2^`i5Nw|f0SN1@S74ma3T;g=l*;S=sFSp zj%X1?Cmf=tGCP17INK0wyrd5<6+*ycXEqMAVRBzDfS5D0hJ6m*30pSJr;UeRHZ?f^ zLfG%+<47)&I9w)~K0gpM8wY;FsGQC3)4&? z7%%J0{OnKGXoimX8SZc+z#7&ev9l~~vPQ6GPyUP5o!Oj{Ewg;6ft66g8Q{}k=Rf3h zs(<}sTkBC^nc>+Q+Zk;{zV<8smb!_PyBTOGkb#45IX+P+wT}S^6jnpSg%b-3w;Yd- z{P8^a=+)(c6pl*{k37zOhZpkPZsYCsXa;0)$g9HVMm2qrzpPx?eFXR zXL19q*^0hfh_k!cdA1)9_Dbr!1P1B^dR}_Pe3^YR9nk7< zsb-})YQ185rKzT4V^NJ*tTbwfK-hs5`g)c3Z=jyp&az}CnZ!#2HWD`o2Qr*BYguAP zxhuP`3e%=i_Rr}3o%NCO6RbsN9hga3|L2c5KE(!av&7nH&uqwM_0*sc&n-5jWi_^H z=(BnvJNc-2()k(LdeWZ)gb^s~A~h?(Q9bqqn=g(DAn81Vhx9wUel*sI)_R zO1T6vEpQEV%QSj>yw<4b_Kdqns9qxDynHL*;`PAF%6qp-GCpO!7N1y`bLMWmE9~?7 z?oH>8qC=vh@yr}loh}O<8UhdW?%a6Sj&*5BPPq|!hhol{-&li^lH=J`vY@a-x8;E> zTC~MLCJ_k9NOi-f2pDgdt4Vr;juZ1jjra|>4_VBf?M5qwjoXPRr7@1lYvzbDMpG5% z*x9{I69s(91<8sLyJ~UZ`|4`!oYcPL;xj$XiHUJfO!4RSfr@8O#*aUNSZ#m!|61}J zTRXeoF}2NFa7aOHr9(91nAS^MMk4Poch?-n#l>%1j}ZCEo#mYz8SX6atY%W}NO9z5 zNr-t!39m}sL~>NzF!AwR&Ah5z^y}t&^P378D_pF?r^G&1&{8bm;MsIqHgi_a4^@z* zX&y4gu?EPqDb^2FmvBKI=HpxzV4h~FCo?BS;}ZsIH>b|(cezAH5&5bflgW{9Y>scd zL*_S27(lf8lgD%SJKvT|>TQ(Z6sAeD|aGc;?&u{MlKT$8JN{U{u8*;7|FVP>Aw^3bHW(u!^=JhCXQ*os# z)nQ)X$;Hy0^$hhBJ*6QMGu=DZqM~|2$v)vimKOno2^^ZRn&^hajID%m*2EcEnpQ4` zG{|Ve*D)1q_}+boHP35fYH1a$jo)s$Ek?iW0z|%`uuZO2NThpWN3B%nE*h<@jJdVu zS;bWPy~+MHe6V!V==(xy>3nnp#wmT1{|f@|T#b@K&-_#WN-dfb`~Zh*edu2z?c6G;hz zhtM-*o1YFi&Gnl!!sR_um9>SJ`&Ae|Fr>lYl{kHNuK6?@%}(8wp;0ai@>Bm6h7|dh z<0i`F?KUAU6JQsJk|_i;%2lgwuaw4+UtoCq;_ZivnZqt_%?+v)qwpng7d_4rb0ol! z)EN3$O-`Q68ZL-(WSp(hshvPhsKZIc>>5{9W#3)DE+#C?<4Q$CW2#{*w!pQ>S54l& zoT1?nFO($M&90_QFBDZ|`(mOXFOizF)TsN33k^@ls72~mS~loi#SY+Nh^0o(>U+V2 zySE;i1H~o-gG0#2^?}-?km2a~OaW#5Fy66yW+2$y2Cb!nIPk;}s_OdM*dI7{M=`wI*GBjf}1qJ4V&aq2ktBy86g zO)={s_Xf``aRH5T?vMPn4iWCvhyIeo?n5WHl(?ylFq=Ri67Cc_bHX|LK1iJ|?02 z=Ogt0%jvb!$tHJUI}jj!o<`+-;VWW{gV^p6RvqZ^39-hmWDR?#1K=AwVj$qm)@|!( zcSg+rmO#ww=>;_a@vTy8zHoVmiI_jS(WFK*HH>aZ$vLw8;B#j4EBvd3yV%?SeuS|$U3qtJiS;S zn_TBwP*6K?r)^(jRpObOXVYGJamWz=nW+)R%_WPjP&(Nd>6Xl7ddN8zW2}}bDkYZH zT92mI+;aoqQ}HP+(v6>Pa0D-gGR6BWPHii~ver8sp1qYaam5E8_=;njk#&wSm|^-u{o{s3 zj%0V43Z8DDTA@$yzNw0HFi1F!OjhnW^atIEN2ifbk1#ZOa?-g!rY2gXPS+-Ck>T5r z?65TmU(o@>$hOF(`_$(pYIig|UcI-k6YK6*?-Gm|Hnath+Ekz%F||*{yp0@|XQ<7x zzsBNa{HDhZeQ!M*j|^1WvKxBYdS*0Pu% zF&i?8y3@!tm>GF2&!QpH$hh@!iA|NH^;-ji=__KWe}&YXUi9=dae(&|la5iood&5I_C4_xmg$CnMKV5uNlWupF8k=ZAv=;RzRu0%imQa zBesI&u2Y1PpkkNLHG#cyuDz^GdKi#7A@ex^bxV5)Yo#r&0*#9+KAA|j$F0 K``qVcO(+S ztBHd<)7FWtzU5JrB;V^-d2{W#aO#9quaI!H)C+7W0wgpIMsICXWSwYw-4>MMw-0^r z*{^)&t=Aj4W0pQyeYqTZp|etSDG<~bmewOZnLo4~N`W!CU(@L}5x6_+=^?rQv0x8mbf2Zh1AC7@Q9XEL+N z)O6PJ{DOpScM0E z*UxOIH{4cDz42Xj6HLR><(u8zlvU3YI8i0*qvIXWHhld@=IxzEZ1~0y2Sfg30V$8EAlvXYeMEi_tIU?$3}=;{Loz7x zhIR13z|arLn(l)QZ(Lu9eUv?59Ii1IrElTM3+xfYZuK9!t6!Ly1PNIhL@BiAbg6R2 z+iCIXN7BR>sG$R{GdMV)FGk-&^IlvrM%)#*P3?x#LNBBiH)HJ*7Qf7Qh<)91^xU4( z!pz=zHz^2@>XvrbN!HA4oGREU_gkl(s0?jdPKg1rW&G&pxN~#D^OQhuGql!5c}rac zk7=Bu+(7hYSYyLRq0t^`VK&PxKC+Zj>#UE0+Hfn~_jiBv7)XctsV zr?DKw`3B@z47b{!{4>33GpJ>I)IIH~GHP9OZ)VwhD}QvNx>{8dtCa=4zZgE`?5aN6 zF+)cB65oY)0xjZxOdsy)>$M%$Z{D2XftTvcAPW zdN03SIP6&;HK;583T9qNa5bH|pG&}Dr!V8Q7w)Gav@;*tlUpwzvzHJ$oGp!S^?p8P zoh^mPVb5XbMezP!>%8Q|0xpRD#~t!vn$sM$Q?KBt&Qu^B#x1q$eC^LNL3Bc&3%WQ2 zf=ng;phh6hc%mBONC{S39YH`WpT^Dg`V&>p({ z<>a%RPjYkY2(uTe61c335&^~-?d zV((Zm7^kAHsC6|XNBrk`DlTqK!1u*0hO^urN|5-Ce43lVHhcKE+u2pYD z6+{;1X3?JPXYL1Mk?7?EeI69fDnP2f+DODmczC%@Hi_7EHcp@iA4s;n5@LM_TiROL zSYO&pxg$1r=nb1lZgwiU9Cd5+(H$Co>xTi1+)W{yE%rcC@=Idj7HR)@W5D|EZRIn2 z`L>UjMsnHP?qv!n0heytE?F5n(|b{?`{D~jJ-P*t9+a47HHFL64Z@o3d%DMGKlbmL zNaq&JD$VYD;C*`ZZ4g`mVSQ?#E9A0+lk@?Zrj|YP- z{sNmUM>^v_!a2Xedc6FCz2)kYsbY?I?s9Mdyr)_*Ummfxlshz{P)R?+LQ2!>c0E72 zBM`p1m|0CzV6-}}uXTCe%r9$;)jeZo>t!RLw~(JNf~xC|$X1oBLTOjm;7fUwO4-uH zZt>a`YbIO2>(iSXhb62T4`r)nK+uPN(mkQ_6@HmbiBg0<5q62lpmj;SL#2k2jey1> zrlkkBRRbh{n|fjKDo{8Orzm^eUz-2UKuEAO-clz*)zN@G(lXxw0#Ye~@D%eUC-V;6 z7aHUHIHtcBE|>sClqHJthc_YW*t)<*x54~@zU0T!Rnpj>nnd>V{gDmZN-K7Ix(^vM(A-PfrjJ1Pgsm zf(4;FLE=$~HZQ0_n()3=AHVvR(>4Ng(_oFv+-XM zdY(eCjU@D`GF%rWIPc&(i(Y3wm}GXH#BL9|#`wV`U_UG-^0uj;Uw!sE)=w#Vbm4eT zL|mltsr5T#+!Hq8sYh9_7GE3V`wFt|z$kvW4AW<;Ws#=oX#y6@qXc_YPT19D>dU^b zMMIW8=|#ogN*oaH!%xQ#EE?@U-s#;?#V(KVwWR_{Z~^sIuK2O_9#i9;k{&l$So}{%zWN8_dP<_y{r_x&C#QF!)l+|@9O7$Iew07OW!Vo>0>=8JLMWI zu2yw3KDQEFjgLC8=wX=Rvw6zRs^v+ok;zNfV(+s_jyuk}{zZq&t{HJ_;WOVo>Fc}l z7Y>{x_)|oqo9z}`%A|H|m?ew>&LfG&dSoV!S^lCY3^?lt1*AgVZo@2wnWaoPhWzp^ z7iOIn8v*4Cb<=gmwt!U<^cVP#GuO>wa}wxtoegu4C~6Ancf8&+mTv0Gef$BCcn^@6 z%|9gB^Xi+k_t4=qwFdKps%1z`asB$;#I;HHgvfQxR*5+AbaA!KOvV{h!M9G8 zvpV%l66!vV8iSBKmH3i}G9J5A+QqUs7_xW67tFk8Cc{mE2fp`f{=w-pZ$GbSoIs~| zgMEh5p~r$bW9!!Tw`Qo=GudjR@k34+E=WH%m$Nh?;(D$RrY3Jg+^sIHI*)>o)LHLB zFn;DoyO{C<6`9v+AE@o$cLEhL#K4hY#a%9wRa&K=CZWiEO<@cvh+sZ`W#PGV~j##`OE|-OcHP zT+GdbLV7Mw0?G9Q@I@icB=2RMW5-zMZOUcOWLRQ_0Nb{#uQ!&m?jU=|ghV~p8^r9m z2x{F_+x<|8D6)3c9$8m3WD`*Pvl-XU^l|F*E2F~QcO*_Tb8l&_<*o32l}7I4pF5^G zHw?Xp>9@yvszPHKw&0vEXc!UD&;hI!P|$~eLl*aL<&nrurK{zsItD%ooKMC#rQIp< zcgC_P1|m>RPK+_Af`xZXc^9*vZ6?C5`3v@}7cNfj1u5;{EoYT9=g?Loqj0{0?Uru- z>_9>?>eD-UuwQ-#ex*sg3rk+=M&O04Dz|VVNulqP`tkv}7 zw6XQ+$%CF`2d?K{%nN-O|5BTV`W_zp~o~-qS73H9qRtsppavjjN;#W0w#3 z`ZWg%)s~y=Gkcz2c2xORiR`!;X2I5mkvQNjfuMckJ7_h5tNdg^qOCuMi-fz8QJk*t zs&5q=Fch>whr(u9sCr#Z=9aO`^~uol1WEXP6Y=~$VgxVyA1H^XDB=$kmXq_(2~u)t z$Pj_3{UA|2NxT*)o?j3Y|NKR40C--$6{;w0fa09!v9pL$0~Ijai(O;2m>c&|*}+rd zvW%LxkW!#;fHV*9ohL+-EmmPRR~YANR%OF-hJkHH(-MDXZ(<=nl1&weav;u}@iF9b*V`P!i9hw@06h#J5zm)H{S0 zlnXoF_qH>@s~dd*))9Q&1m@a~P)GBxB5K+bgy{&^sanpAQ`h10QNcvh{&6 zI)H{pm4u1;@lkR2H{-V|sckN{z13_h`sLo8F&xoib56eTF+x?Iz`&#EAFEl9|G5c^Pd%{i~_B4LHlbg%wNRWIL3<*`4d*v}Gt1x%}_ z1=F`aq_`aX4YAz!pxa3=(ObJ;+i{ZH zBH%ZGk%VzfSu~(9bo{$f>3u6Mu$rJT<=tCro&M`?n5XWA+3XPxOO2?pbW+wtuZekg zXURg{z64cHlen33{TW@+E-}C2^~Ee>ji*L05m`&E^Pts3gzPHXBgJFhTHHVIE+C6g z;~?ym+Vxhb%{h8P&!&D5DA*6Bq$hPRi8z1KN-I(qfhg6qLnPVttLo%*DMs)c)`4{p zbt?S&IqwbY?7Ha6h%-t*XM!i6u2_+GqC_`BbCcS&#Utc&4X!EmlM3@}^h&Hl(T%E) zC(-E0L@RPyaWS^F4L?m0A=YcFv0~r(ge_};K%g-CJazdr`0s5U$`Sf*v)OLDH!HU3 z+>Z;N(&PdTlkWj^-BZK*3TmiQhstU0fBR~T%^%3?@Ve`Ia22z#eT=;St?fw7IR6LN z%V#uqXdxYfK)F-Au=`9z42MwF18_4T_Pb*+_GCP-lGeueQYdGJzUt$!I0-)TU+vZwvT@9HC4( zqC*b7I&6{R^jud3xXv)9;A0^SiqZ8ANBc}jIWG&WJj3VR${S1DCc(SpFf){7RR!ATyLhx z`7+^7Z!|nU@B~hg_YS2pzymcrhV71PBpPdIBi79%0GY1y^qBhlvm*h4?G-@)lSL72 z35jU~Y)8j9s%XCj>gjPa5SZY-79{-mi_5orkBeN`d2|J#1+@Il)FU0~Onjt^6Vifl z^juvQVe&u|sNOg0g`uri7P7NyS!@8hN^}RaAo={YcKCbBBmz8Ma6=phREKA<1C(va zFFy`(JScGLAx1vp1>_{Q^wOJWwaO=jPrAu*J(GieW~JtX>r-?;<$T=lz&tJmyu5xf z;5dlXv0zJzK}F3h_Qgcqf)2)I-RtV;Lp*s;wwav6q^@IFe#pS50aMldsdojNzr>j5 z;-vXkJkv?J2^s9Z1=%$~phciL5xhN< z4v4$>Cr(i&`R7UoB=`OYiF$%^)z1^klZUhT?>`g2%SFjeQSu#ZpuX>5d!}9)n%-qb z&6Q}fUHnVXJScs#YWtO= z-sP9mc^F0l9c(_nS@aeLgSC#2GX{x~ejcN~)Ij<;Hn*Fwr8#j&Wc*lT-*kn{p45$u zis~vF_(%e343w)x|2%_jSO4{~mbiFp;vQh|JFEEDvJ7<8=egiN*}p#PqO5#QMa}m+ z%ic#k0V2}r|Be6jFMeM{i4l@rWXry0ODMbSvJ;YhkC5J>^{H;p z-TmD6^Zwt@`<%}#*E#3+JHPL5Ip;d(T-VIyS>cf#dxLu&M+u~-?_-)Bca1O5ee;Eh zuArh`Y*C-5RE$`jXnWeujUjTxDYb}undg&|(sxhMwM3t6*}GT6s}OySnmuN=BJ|Uo z;SI6fNtL=wj{$pEDMCW;zb3w3W5NnJrxDXI#-hCJ%vPGSb%pnG(4`~RG7u*|yfN0Y z3-{UET4X`q>6Mj- zgsy$&R*n_#o4Z*=R$@rH%B0MpAenLh0skq4mQK3BZooFq zj_gRYr1I0n#>hD*xf-f~J9Q8>mRN1HEYXlsGeftxcWM|}G-Gf|C_Hm0~|a{85jRGGWLp5h0M z`+H4!q$<0e-uXSn7uheKJVQT}h+m72NAH&oo3<@iT|O8ec;zCp#MhfmmM)XjU==PJ zr@ytVWwN-U~2DW>Pb!=VBK$M41A11`F^0- zr9eU1I4pUVlW>0gfG7qfOl12jDAf_iH=us*lMVaU49yvE8_!hS}l)gGp@~(IbBZMjNBnO-$87>=E zE#!pnZ(Hpq708?-t`1a*{V2;bj{=3P z6I@Ry6ikwN?uEI2)uSKxL19KXf>l*5{XDB&3PLU^BVAP^?L&lnS70mc=jYa^g1ef=3qhLfgV_A~LVMDv*Lt5|Ap8FxOGf zmLb$FvgR|kb11W}y?pa94Sa1pL3!fF1^~`nn0um;^om55T0inue$T`!2%~{vf3+hC z6JedKo1YPV4g=^FE@<_-L#m!cRhZEB?>Qbinz z1DTOxNePkh?l}>muU%YwY-D>%1T*LTV+d!?pdPHs1}Cb5+}lz0by%n?%9h8kJT7k5 ze14H$gi5wfN9OAB_H@Uo@Xe6JyiKRP&+nN|SMSt$&3-JIs?>TD4ZU}qA^l9od0a6M8!M_|_bjn^ z#+=Gt2W(i3M>ef|knLDrwiI`{BmF3_xeh0CF=+|3r=|Mjz1pU(NZn$0tZG#Lrp`8K zi{3&tn#(Em361;EwBW#{$fohh(t1Ky88pj$~Rbb>oE8#*vK3*A@wh9WT4Vd5OXS zn+vp-rrqd~! zUE|GL%AUamPdu{YUb|Q*rL~|ryhvR?#Z%5uaK#j@^@{!Fv;L?FYW|4>8&^*X?aTFF zHTVKK^-pPwjwf3I!hJ&-d3yv8hK=hc)oZjrhV4j$Xo%S1=h+~YTdru>_igd@qv>#3cB-{{1~ z9j`hU89>4{EUgFM=(cwMLFThhR`QK6-}er!{A2V$;S}3EZ1<-e3wixuIR56yUkSxETGlMIrG7u2t`Cpe ze6U?qKIg)TPwo}y6nF!}y8TW;Hc*Q~;8C`^1g|JW?f4A^b0kcub(n~LA4-uEaV4xWP zJE@4>uGaDKI6Few<#$rF&0bxjx^XXc-%TV7iG*&D(RGVyT~^(`i!LZ6dRjW~x8q+` zE)rM1P;chG*6?t$+#9kMM~DA@TC$OrE>6g2)N!-Vw4l$cbcXO{p@(|}o#XqLME-HE z69I1XD-(Y2L^k^8H%6@mC96Ite8lYXLo*Wzuhh%BO^1m@(CL3BP8MFPuUDcr5aXJD zzVk6M_T%jc=*LZgr9G|{y^b^EAIA0!H(x6cNUlu;>~QZu*UoNHt4v9+k3`Pwd2O?V z)iG|5C4SI*+7x*9eXbd0VuDIN*U7nOw5+5C*ZYT5b5rlR~Pb zpm1R_0nH>)jO0Oi z6et+UtvUmAHuPLmC4zBuw<@wGnPpB+**$dG5uqfP#l$?aF1Nmk3n9b(P_5h~OFJ1> zUl$y5qVl{}^K8nQhSkvQt;~S%CAKPVMm-RD-Ha+s-=@SNYj)Vs|kpbsoQ!DMmqgZ=sFol*Wgt zQpVWL4le;)He#rPYY(;sK1qsDyzMf;aZn4OFl~JC z^d%y3znT!?*UBLxW8UIt(n%Q?wmb!nXw&g#BD9JJLOaNBKY=P38{==l^)fQe$#zx3 zw|($F#J_$ynz*Zh>1;viW8EsLLeQUPT}|LbAkJr!n0C}f-vT3ho?wp}FwrJH4aBCk z$0j~rpwfM$sMQJ3cd1W>zzKcO-QA}`Xm9tgJmNfQ8b^wb=VIzgs^E3AVU+WHu9u5J zv&LLYJ64{{1L$);_KI%Fe~0+$qbL$Jg>>?OOlAdA0a5|5Y~4A=Fv?M2l#aiQg!!e{%9Pq#Ni^R!g z=3-@I$N}Z#fc?pEf<#P%O%37C|HP5RloKsPOE6H3|QkFV@SyBa|eqKXe1cGPmYHMTf z2>kOrc%MkoIeEB}l=@}Ga~Gu5&a3{|)Q|Oefd8fcQu_V=Z)59dZe#868#4Y~{|7_3 zf9(H!5T5__|Nlnfa0YU4*q8uakyiifb^kw1f1&?7Iodio{*H{p`#%(l?)g9Ve;z*Q z|N8%bBMFP4dp^+F*xms>sEaT_IKd1+V{1bjBXet05e9^YGzUL}m?)kwy_B+~hPKLi zprehgjg^h58&F+aUE{nWkl`R&pqxgIMhs}Wuhn0hgrb`i#RCF`ZLU}t8#)3V-E56T z7!(Z*&CIQh8Gtqpm(8t>j9o<-(2~(H=3wlIK6C|x4{oY7L6_MeZLQD|c==bA23A%! zF2+W`th2T;GX7e)pJ3m&_RHEY&Hbu!Uk9`n=GG=QKx+deS_cUOLrY_8BL<+eft3?F zudv@^7`Q$Y{)@UQXi@{y!_);I0RIDZzf}H&3(R+zO6b~8V19%nV{hYR`?GxTVe-L$ zNj}gLtu8vQ&?k8Ypo7zuPg(F+Tt6aHLMWb7Lbvn1rJ#QcQtm^MqHED%Y+!X6X^gb7 zciTtI2jk<0@I$%3!-__0i+1DXeXKwSb9XdgZmCh=lZ1H zAL;vRPk;~85BzKWcn;N%=TCUz&-eoTw_t@FiWTxFeewI=_?16?)LPQU{@-d0J4|EP zU-8Zldj0F*f%tcLAcx_B{1rT0e;yFz7l5FL0fPR=fPUYLzXEA^7)Zl^){D?z;Ndmw#~%f*qp5LFM-#{{Z_R&h7uzfd*J_rh5D~16+C|j9w_)QJo~kOVp8#Y6N=yK z5I=<^41CD=3j2#%{<-*s{4`QR4g&-Ei(vj_Z-M+YRzMF!1N~3Y{GQ)_>dS_QfiwJP z{r1y2hWjuu-2brOemdpwABKkipY_`>mQn{}#UGC(VDMiX+5V0#K<>W-DdbSoLBRhn zZ2|t+gMM7Hzz)&%OXbgYKU7!PVGG$GqV~su7;+dK$X|uS^{4UtIKV&;!vp;r@cgd- zeq7-h9tP0xANSvn;lzCy9PWSKe?OXs|1doK{{{d3Y9s_7Hok!W2-JT*68@R75cYRq z1s{razxMyorqYkgf7oFv!~U{+eq;Cc2SAX+073pTpx@Y!fc~&bfgXkk`u8CE3y%B& zrQu;H4gVXC{9$I#eHb9_|B54j=-&K?A>#k19C`T0()YQ4IW{tPa5S(sGz48Q{`9Nc?gzo8NAcQu0Y{EkLY824`|Wby|t`bQP| zJs15-Az`jBHw20P@Aks~i|P08|8q33=e*(${S6u5!|(s)hC=v$y8rKg_y7KPl7x<# z0OXuDv$}S6IoTLM#PzEG#}G_m58IDh#4s$t$EA<904x9w0Ef&~pMZ}126qiuLBTJI zk`j=@0F;VKQErM$y(yeJ8^ulg2zS<9F>SrOOC}Ao`-9vL9AEj#W%oRYSkHyW3W~Rv ztS;wyvF-FS)l^p0HA!eR5tu^HO*45ZzBDh$VE zUY#SUcTox}FV|S?qeISz*-fHohTaWUd33Te1-L|ke9=|q$tY6A!LTPK!?++{5DM;M z59d?4!{-bK3FQGMp4Xgl;NQDBwrw_5=x-WA-2=`imB`3 zblgz74hUjE|0=`ziSklzs$WavD&tHy1U7uxe=$LafFL6+q3RluCJ-Pq;-aWDS}>D1cEsZfSen zuCMKo!RieD)gfKyK~2&TOhg^fsv&nx@_|##!Aj(MaKlrtFv)~l zAWu2R4%}dgDoK9K+@IeA<|?(tc615KQnB?Le>}*fQc3E+1Oh)*>(_W6%WNE_9h#_U z?lL#(wZ|3ctX5^`#kS#1sWe>S($+R~-!-|@oZoKZ#Ze#3)1wRV*&kd{ilLxr9vHL9 zJ(P*%@REGzdgYSGHGKd!i%J4u@u<&Pt*o|W=6ZLm#d>z0>d>!n61g2(Mg1mO13 zQ!qb+cKpO}1w5AHctS0LSElW$h9gZPiubheugH(If-2=6JQ_eKC|?;JOesc-mf3&m zV}~ievD{47WG|e_C{F5zps7~e`fQ8?a5R%F`m~VcqdlgW^ruywrU;K33^z;TjJ&GH zQwrHZYzUs4+UGMeNLk@pA(|l!zPGX^iVeYK_@@b}1JR_`Q_8AlIm11@d83l{A!>ZCrKQCK%kafo zy%Le&jp#Yf=JGro38BYzD47QjXs?~Srt?5H4}%$TnV>X<&*Pp-Y*$*Id$>}F+MuFC zVt97%ecOyuJgi&iALU&c>gkxxy0F3i#3PL@Bd9N<Z3z#CXK8~Qa zA~j9&anQYHPKx^QlM|k%aSjRYoazb_u^Xd!8)`z(nXV{}!D3GS@!l-+m=a6m+l#SM zsGDwp44&Cj1Cbu%?BVH#%`5%oxl9@_;Kg!Ha{W9D^=3yidI2xhjgwI{r{nGJo3M`+ z9C?c;GQxep8 zpB_bcOzGi5IQf@}D^~gihZ|B_@w(_69=9YsI(gmi2wuj>gOrQ<0E|q^TBoJ+D}|jJ z-S-NlA8838%UZ~vqeeEXV6Z!uGDGvdsO0A_lq2PS_@cYnveK*i>&`EPPyB1OQ{LU9#d`}pw{2V$uM7@% zT`1mk?B%Q^|0TH#Yy9Z?J=ITtX86#2CNC9U<&IoadwYC>+2c+juD0i%E)1zj+(OaN6GhFQPIwxi z_e@inTXKLM$9}H{b@kJabZ09ng1h=k>=Lsj^+lAHuer25Nlhg;aT*j z?O9XvKlN*%e>eZ<GSV!fGjGEV4$Ooqk)wOM1ThZgK+Z-@XAX7 zKmW!>VLjn2B?7M{;mlDK5ia<2$&y?Zb4E7p=e`dY$d_~ zw{|qPVo_rSUNE+?-v5@du`&YkLSf*2BA_@B$_W9>$htGI9_%=L**iox4&85@@6#m- z5k5YCFgFY)07W(^aWv{FA7ex`){it?Zk@&jPVSHJ>b0Wgf4|CfLd zSb4ty{z?h_Bi7F_pud7~P{{oQCG1y}2ZcQU8V8@0_-ZL$J{XJ_!uvPH0nb6>;4gu| z4~B4qdAPa11;TeF{}Kq0p8^5;Ef9FPp;{MK)U#)de z2>pSQ=U0>mg|Ht0!@dgy9tarv>&QJ2BJeE`K2rk!i1jlJ-e18uDCGTtlJ8fP2ZemB zct*yyj%GlxAn;p)0KX0~2Nwwsg6I<+YG;p*xcLlQS?~MY#yO?osodd|j3cOtpyfiqd{Cf?y$$m7raSQKWpH$#`*!AF#rt8%J(L$c zn0@1g{J;xE^YZcYa&!Nhb$`_Pc4Ga37xr&38-6Dj`U5Zb;k<_5V}|{}%X27ZL&NVe zqxJpSDX`B@`P@CexP&x49OO>&L;Tjs6(WY6IrpU+qJ0py5p7TCGsj6d+D5-5OT>;6esY#{9c<#JpVp{DC z*zUab+-;gxBb_u{*(A?nYMP!^Es%94henw zYX!`APMu;ps=^|rf^$Rh=-Jo}4=>T2qG^!I5pgyN#5oBc09Jrc0sYYMb^Lk?gB%t7QFnVgrg+^kX&(RplM#S} zso(>kL~~%A5^E(vD9fGMPBNbbG+@#vkl&#|Gl#ST0LO4cIzlJ`7zr4uvv7v01E!iE_lQ|qoVz15pvyu; zAzJm(9ZKZ61ONd5Q#>6gfrZt8g@GFgHBc6}a93#P?&`J*6YnyobiW^$iZa6N-f!Eh zd|h60hwsE2`|Jl#wh6ce#U4&h@*4`+!>yI%Ga)b*fNb?x|hSDt$6lrK~sdHwa<3hHo9&JTmn_EMJ~&kE@sPt1I{6ABD$%Bk)5wexGu z5O|M3XvJn}6lGK_u7Sf zykNa(;?eW=$UGk4_*3}l+3rd=WZ0ce=EXs{$nZu<)EzdrJH;c5bJj~Rp>ovX63y^X z#H=+ z%*iNr30$k>Ah0crXFcQG7nk84t)n>i#5!2{vNF-diN4+uEivV}lQj_=q|4Q#mKqDr zdAHW5+9tH3&GDxD3!b^4!kfJW#g~fB`qep~G*dt;0g_)65OP6-sn z7Cur;XA;PVVa!`f(g=YUs$`qBV5J)sBS1s;;l=B=>jQ*Mh&2%`s9Z+pMeC0nH2CN8c1?tumQ43-2&yUx=8wK&&khZ1!5V z<4O0;&felU9pc5RK|j({Gs1Mb!gG&K-m|$>fj8%>@mxu#ys7LJ?mY|LGx^Um>#}Wh zc+FJggwF~w`zW}?K8oD- zNo-2%qWcpLNj>}l(e9jWaty(4W)%Ir-`gKyg$Vip5j=(Z=K4I=2+ zU;2{`^p@~aOvz<}jNxq(@b>czq)A-f7+i66A+)`$%SMj?m=p7(1fKIF?W4RYRc=x7 z85WC6I=w}Yifi#(`dnOGErU(4OJ&8iNRQ%CvsEuh2Apc}IU+J-nWsv5)WI>3xtxY1 zLCY|Scj#_`8D)=q*}B@&*{(dj5*3#dh1OMeGv!lAc$4G!e2Uf!`pNXXIZgY=(IvNW zp6SZn9H!TGwz+G4LjJs6VuD|NY@joTXQxid130$8aO^O8H1g`nybdQ^C@(J`(8v!r z(bQDU%4*_?3bzPH>aq=#A&ML`EoL-3=7gerU-9}(x#?+z&v%z=rY1x@?vCrlwa;1H=(9@yMQ+T>riceob#Y|`jcTkzG`jU$?Ezl zoDPGEM>dLmP9O^bvB(4(4U~^laXV)5ptwJ>T>P3wE)I2ykGN|;!4Z2DHC7MMP981y zlq?43Js)BLtDAtSPR%i-b30%P1UN2n@I|O5{=?UsN2?(tV?46f%fy}c0Jm1Eu`Z?p zNUUQ3N{fIaF18p)hpVx=OMD1Ezy01`Oi)^s#j%bFIpJ~*$oJ{ZK$Ut#YIqFm&hXe# z=9y|d=Vbsf4!~Zw0$_3R;Elz@!H-+6C5ttjnS8{$r}K14K(gQB%E^%75$+1Ix0K0z zt^{gS6~{8`_hn<@I9u1PQrTkWnuAbU#vad1S}TW`Q9ZI@SIX|N4<-{>FIS%Ae=C@o z@8>j+%S_xlB@`92>U`1a)qJIHid*kB5%`JfppzwzS5C`tsqtH97wUy__fy5*(C*h| zx^wol;&dk2DJ(@^>1q95XDzs)?3}a8ViYJ06ozj|UQ7N0QXvV&3+_g}688!q)M%i* zUO^C>z1Lc%o-kA1=3vX&nuXsu5Xk1n&}=MEc9~PDzc0oiChNY7MzTx4N~AWEvlDmo zS&s8f=y|ZML`PbB`n`x?3jX_dlYDU3U#3z>%Qh0Wu(d!NNW!qVdw8!D01Fdj39+7S zt;Ck3-X$;%T8^NyA>4{m%H*g885V#dpeCeFnWMVprV7qW0|Lm(nH$v6<%2OwO6N#O zqS9tpi=#RFQEP5}$jWl1enDPSILOrc8uE!rNKj)GSxZQ0AbBXTOUERU z%+EgC?(sPP1RujxYfMVBLnM<)VN(HxvG$`V&B9iBN~=fQ1LR%YMUM;~TXI-h>h$*U zbj9#DQx=(Zq&$>l_S1ZbNN#FxZ)j@o?lF6wiC@@HUL%mN6l0iq#;DiC(3*spvB*zK zp)M$@L>1Xwz}(sBr{Ejq8^zwZLHZ8hM)N=^D_GXVc(9K@w)cfUHXqH+2eFHi$%7`y z{Nn79LJQ~A6V~_M-brqZP8O7eC6^ad6w?fsElp&wCr4Ducev(<4B#*q+`fED^;YnO z!IGHX&f6DyQ{7@B4LX|a!7anZoI25&$6sZ=ex<|Vo>6!^ngo=uRA5vFz;u4qQm448 zOvLFBBM@vVF!r|Tdch-{OgYk3U2Hi=@y=VRTE~5w@*H0eG+Py$-LQR9OHiz7d6CjD zdlfM*rDk+y zS-R_Jzkd3n=$+?TD;tD+M$uE6?s#aEYclin*e?5%+!Ti1*|+fyE6ipY=JE(=k5kHr z2*HzyF;_=fX$e~!=IT$aJLKq@7#A4wrp-kbHb%kdyO4!Xx!uo(wOl?bLaR=2@8PqN zH#@Pqx+S)$gw#T>4E(60RIX7G`h zia-woi%xzsxdaF$PaME5!6E^r$C2P>Xr|7uX=cxtq9;UWiG3N+$Ia{##5Kge^rZB+ z1thTeed(!qU7k^q_ZOJ72IR}5>v`#)`4juI=ix|@ND#kxXSH7wO_D1?d>sdP4d;A> zwlVq@Ai+(KBQ3Qrppo0GK-!-jlwVJtUq>IvEn4_C%IejUi9CD5i(4dU;$yd{uh%k? z37Gg1-@ysJO&naTD&4?hhttUH%W$L_ghqsxYv0UXaD{|{IDpt!8_k;E5^=$ok%8Ek zQDPtRK5CL9=*G;F{8*B1u_QII9~9r>OR8xNXz;b_&#!}^MV-gVuSZvKGlHTdRZ%Sw zWU5-J+SE6shy{{lp!5_V)NOLK8R&8Hj_iL*kW^9;MDtp8?CX9|E<=)c2VH}zkv2wqX5;I}Pc;60Z|^*-p-(|}1s0zVVZyB9VI z!<{T1_h@GnAWSk^5f3tXH21UjTruPMwOU*@mTPNza-RtAKial7p_r^DXZ>!1wnPO_ zJf-M7e>!w|oSznnKwaqRaa;11f zul1=5QGw<=O)pQjN#QfTs0N`u5l?6GX0vKKHrC2Jh9sWO*9QgezhG2Hn}#Q~jcPSm zR-hpew3oYVJ(+!mX)a1?Otmd#HcO+efDuKQRnl5y9WOgV(5}CmIG-Hz*6)$zAa!^h z#1D)KfcS{TVdwPB&5Zi3ug%P&G^0Q$xv56bu|^I7uA*j?5*gqQ|7>QVRVhj*BI0)`%9-0J%YOX>;;Rv0=Mke0yM{*KF z_LE^ZeU7W4*K(j(uk1@G+q|r^nFk=dKq$B~b}5m*NVTUAxP806!t)q*o#(h-#~T*? zOILB)KLQ4;9VqE!2XjA=ycLawjE@Ex=9r#qG17Ov>$*r+PZf-PzuHRJ?>td$PI<*u zA6o&!ht-bM&u`-2qN9I*!@6|WmFBg7!rs=rF!n1xN?NcRk^WmD|J)0Xl(Ze~)}l}8 zkhfB6`YPY%WaoIij_5TpihwaI6u-GxHYMP^=Jqg@KdQX-&3qsG)?w7dhu&($s2C|wqqBZh=5}rGOo}4{A#PcIhSnTfJLNhUkmuF z+PxJxPNZ)udZhM^&11;kX&LPnC@5$qu7#?s5blX7&u?td$zYUj648gwg1H5WT(^iGdmQs!q4ukpkZe$S zf5&$xWHtC2x)fOk3S~S-I`TmEHzribK8h_hKJ{o`3ZYLV)TE^V=A#{mByEPxxoqCAf zHHnF9Ee<}nP`$vAY}6ct;n#J(q`(5Ww+h>Cc|Uo78VyMHSsh9 zh}y&Hw_puT{ZDP~VSZ$)s(n?wvAlO8imS*p4|jR$>52Z~;nlU4HDvFOs6%Z`@z(JZ z$=aUB6?&WE>(T(Dn!A# zXmXzJxV;>wU8-eVzq4&3cJ!(GiWt_sL+iSCOnl}lN;aew$U}Svi?nzHowi@5Z%|qJ zMK_OOTffCD#fTlQDfhwn?x`1FUo=CN+Anl-rni1m{5l8sZ2*GARgjwiK{tZ)Xre{ROI?>b8w z`}$MT0KM~RTSs4vyp`Q-q;G!NKeeB7=)~d&-+2|83&(T}7SZ&mJ1`Uw@yV2WL&_@` zXCogX6jS)?t}h8iznYmiNVWb`jxIZUW^pvHMNOx*v8ILxORSf?i|ju=8x;T`g@d*Z zjsbv!67j_`cqe>$|4@0FWlt}A%m*JI%Lj0U7=RHV*|YJXFbcO%Jx9HJLwN5hU-Zkl zZSTin%nEHE$s7TA34kMM06+!+z~=LF=GL!^zhzkdko8lB<&Rhw0em&B0Kh46z_Fsw z#lir9#rH&K+ddx%T8aaXssJ!F006`R%TJjsvwwqwC+pXYUo&4(d|_nSm<;QiTnTGk ze7rvSMwYX=e@0n&rHH*lu2miyC=VNb+mx(8Q(Ar$j!(w!8)zEoG^`V;KDfH>#3OSt z5^o~-Wa$JdlJgSYCA*qPYTJ}W_fsB3m{Yno!b??`tFc9>kGW0-)xz-ipL|^_SGg2_ zrok76|D^!!S9*LX+M&ds4r{?JwJ>x7?>{wH5+CjAABq1h1=Z#U{#x3PcOUw`!kwCY zH}Ba=a_6N>nfvMf+JeG@uKuZs9A#zGl%f}9Cj+P6;xf3h7s&-A4<2)CJi6#2 zgzgi_ph0B*;$n98((Ib(WvAyg`ku{eLVKfNA$M z>+RdB;IOjyNjOq&8!qpxntM_iW>P83nxgn(60%!`SipC~ zL@x?0V^5f>z~=6$mp3xog{eNSkj@J(y29s?Z?dJ0{Ytd&RX4k0%Yev9K|$P0cT#k- zSoL^rH6EY4EBSh%v@dS3pQmNU$t_(KTNcgp-GF){%%K!GfNhf+Rrbd2tb5 zNB~ZtLZA--BPuF7=f&lsT^r5at8{l?^i6mlOT8NMQ0NMN$)bb0^Qe7lw4dHi)lR+J zFw!YorqBD~Qn|yZ%c$#;P*!%)Nangr4pQt(wqbjz+iTO>V{vDRX4-!DC_&H0-Lksne^|t9QDx zwK4f>%LQQUZcCmW%vQ{t01#p+lv>TaR56k zv#-NJT?E|Cp)ZPyE?7GA2@vHI`?=W=V@%jkoLP3@+>c^N(Tav(Z&x~;3+F)pWTD<^RK>d}pgkEatC^{(j9QQ|<24 z>B6|T);pVCVp{L!=Jzh=_fF5txQOm9v_b;%44&2I(@_m5`=`JAs5K&j*hFlauUFxC zow0ejfNgqWC%a>9*KVz4UR7pdk8aA_W>&0cadG(R%Eq>kyZ6V}?<>vUiD|gk56;Yc zr~1E59o{?rPVC~8tG4mVDfL;c$@8~smr!J&yHyO#%5B^p6m1FN2pU~I!+FRq$!wLb zg7_;d?Z?t7YPpRP7nG;)v3tlxx%$r8(vbS*=G5C>(7!7BdSa~Aw>}%niMpwr9k^qt zwD{2FXmz#0%}Zll*O;#RCM2F@k(}P4_U7c9dZ|5#v_$4tUJebq(x`sSMjO%HOfXt1 zaL4aCyFkDmvhOs_TS86JoXksSk0%|+Z6hSqkDVhjxY>edl{@ES6VZP#7dY$`9P3{LABr&mT^DvIpI<%YIS z26cz4$)!`lyOpwIPnZm9n%VW&(eUEq*Fvt{PdIvUs<)3bd(nDvIc1s?B3RVLteqca zTyBtha2RT-vf{SKrbj^e!Un=aI$gmd$>- zg;AiI0d@RR3uH}V>5z?u;^RsdB-WEO*4qZLEwvGsOv&*@0WZ=yEHap*6pJKsGA*4e z*32~96XjA6XUC^B7c6V7M)nBp?K~qaT$-uT!!^n zwOn{yP(VXwsVjEp+)3}}7U8GhibP+yq!L8rbF~(;+LR+QHC4GjSlT@}mRZ?GMeN?TAbLyoBE;DbTRef}qrXKsid{-DROVSBl zlN)e#r)q;4>V;Z-n}Ls1TfmfNttHPxS2vsEeZ$i`)6!+L>lYhPo_llk_l{={XGA(iGcblH-JhSNa`5 zQ+yXPpShDISAG;tN-vTfLLqNcBs~@Me_cQB-45118pMAWL=y+^m$^~xtD4^$4MHiR zm;Fg_EEPX)h;an`n6K)2VtO+8d9n+>7bYSu1aNzEkYfAB+Pq9iQIflLn+&g5I<9~~yz+WSeE$v^X}AQ0ElMC(&Ea;o zbzs-Sz&2j1*A91LlXBjmiMf)ws~2^rPgqmq$)_6(>Iy&Tl8g_h zFpiKu(b(+I&%7{LHEiG?`CzVa>V&Sg(bk7`lDqoCJ2nH`)4Ds`a^0D5fgD$T{N;xQ ziv9d9v;)z1I$C=g^XH&KaTTjggInW%!Ym8w_#EdKuB2;tn^5WA<+PX9DnzZXY^=v- z=C#4VCYna2V+MCGi_v~?U#=1()E$uP)PuQKv$*pH2SCmGTc-sF$@?@1^SX68Zst~( zeE=`jwA^NEGMUqrta?6dRh`rwiM*X=aUq=*{K%Fasd|%>H*be_iCW*7KDNHI!bNvz%phW%`mmaSd*95qKdg0u*;0#mGMHR*^*2DHVmBKH2q> zMUsu@4kZu(6(AH?+~o3H{jm2TQw|Br6kHQnhQ95>FST9ar;f545a0x-k}Gi5zGnAuhQTXzR<-h$0KGckS(ap(Pd}M@?fg34Kq@LBpSi=N9 zq^e?TO=~)`JX1>(b)Q)dcJ$;MK8Gu9r`>f;$P8S{=Caqzn$!o4gTS>kZfmc1-_NzZ zL206Nc+CooBeW;6te3To1s=bAK0USA|4382VQbi>Cc-Wy(!|7bFUKY|pY^?1)O*9J zZNmw=Qz}}$nE>+I$l~{-{X3hxPldf~vM5}g;aOd&N{JGhVUJryhK0&p92ds{$6Oeb zaaA@(;8b@$h}{yyk`YO=>{>2v8Mv-cQsLx6)43MdG|U_1Ks@3vJH;22jm$Ngei*1e z@jBh3YsA~r+swu@TH>v3*R&R8N6Da4ercci>R@+<7HGwG1q6#DcZ%iBs(CJDJA9jt z4}&$dFv=InN_C+WRdVr$224oWX;gn$K$DvT@hUC4IfpIN@+N|EVQRR~S}htg`%;tA zeFrvWFMWLFVhKrFEVF_uAe6J}`FpBk`AsAbr2~k4#c#2MHi=4_C`RyG_2*IX(&Oas zum9N32h)=Y7*Vi~r)brfWIQ3#^C*GdSjD$)v&iC5OUX!g&+>Y>N<{zu|6%Vvz?w{= ze_`8N5W%&g6kj1qk zbQJ_EV#Dr!GjB;p-T!^=eZKFz%dRkU&Tr1NGc#w(J5zqoF`L=opn1{4e(9f&Cm?5P z-!99immX-^J<5beKkg*{_-%S?dFzUT?WDu2hpuC9p1uCZ%?;-rto3V-+a_txGM~FK z&W<4 z?sc8{&xqKF^mlFVUYyb1PA7e-YbbuT{P6ri6YF_3V8Rl$$tL~JjF|EJ`?ITiF0k*F z7~kJ*0JXned-rAb`MtGRRcqf}IQ6-)E|gAsJs@JmmnP22kl@4IRW>h=^IqCpUs(~j z?=7vqb^guPMWs5MSIxJ0vUks-%_%&AXMf8bmECtBtX|$#^XuoA-I{WA((?HI1J_pf zw|84(NB?7x=McC29vYTA&0jT_J-wb+sTHjy)Je)RSXJ*3nS7Kx=19TR_j{dI!5LM2 z*jNJ_-QpvY~6Y-;cQSI4gqD*R1B~P0Os}n@h{HES@dD@9tT?c5?N)b#rX4 zwxo~<%1 zUNvdx6z@G(z3FB&V-$Am3kGH%D(_yHk3muNfz zMZCzla>1~y>sxy1h#pOK`urZ)|JQ<2cI0~p?d!0y`1tu$^c@RI>)hxu{WjT;8P2_+ zeynM1Z|)A`WRoTK{987h?ZJ!IhO1j#9&oJv_J@Nda3$tHGiS{1ssO?#4Ww37@6 zUvarQ*{r11fu%P2(B)ADNt~P8%?>|e_nD^qc=qL&#b5vEOGoG~QArh5M=JKNKN$c1 zw3B<8!PFUsiPa`6z?`#s+^+fSp2V7rbo08(iM8L?I&L`K(INOi&{&(I?{-cJ{Lcob z+}=I@I+nqI@o8*n5vMHjp8M24ry2>gmJFn)i_M$GLqXg;{!( zHkE4l>8@*76`wU+#NBbVV!>hec?SBXZi6P~^{$=W+ok`~q{A_n|Kt=*q-mQTT(ZCg zarf1+z9G76c40B{t?L6jtzp`lm&PB=yCc-iX3jpdbx>gJ>h`e4uem##a)E?x1f@-SMLqEQt(Wl<8lsIvRP8+-Tes=2Fv zF`OP6${8D(G}0?3f7hNMviZZ5;zR52e@rSmRhrVcZ9i#w-Oh2k5nANp%1wD!bgb#4 zE3-$NuD(n+Fl|gee$e9da#Px^`Nik!Lmt0imKm6ui%UljHPDKT-?MsHaScnomQp^@ zBy`Z#&nHVmrqx}1$Nw^A`2BIg>-!#yyt4D`#pVY!C55%GZ}hzowtkY%*x)^TIM*io z95%@07W(Y9^dWO|$dAH;GrzW-x-`EaaGiN>+mH43uUebWVp%8p$- zyxZ!7@5ko&^ygM0uSx8y&UZ(o+Z~~l53*lV-F;YF?=h#jDaRkQ>>qPvMGP;xySthm zCvwU5$f>n^#7jdfl10z&HAYeb?rDc_8(zJty2tdly)QQDMTqKcn<_q3zpffQ<<_Grad)>Y={nla&aQk|(zT08m0HX!EoN@=&4&)H;UUvn>ipui_~z?V zwp$$ZTX)~0yn?eavLI-Bn3wR-jYLGNXP1w&pJnGhT>9wSgzRVE&hV?P{0<#iyeOes zV99^h_N=t$xh;B@!aC8Wx%s6o?)L?)<9ghlH1={?$K}GZ`eQ)?M~D3}b$QKqXWv~= zmT5Wg&y`&r*5*cJwmdKRJpW|D$2DDZOr}pMBcvjtkmoHC9R?o zFpM)x_fh7I-S_H+U&o4t9@H_~7y9aeq1z|vM8oiw%h44&EgOwX_m_DW4c>qC3O&a3 z*qwWh%N#YDpFa!SdoZEoRh7-Nn=Rp6^Dp^qS>w!a9#>T}BC=+NUH_JaPD9cSw=8lX zJw0@pL>n~G<D%tfs`SypjrYJ-d;?E4~* zznWe-RuyE6f^L7}=cm|2Fe zPPE%q7B_8hty+@AaD1^Mzx2q8;Z@p4_oiG=F>#$<7_q%kD=P7_X5v*XFl^PIQMah5 zkG%B4c(J+n0Z!PBy9;I?Ec(#2?c{?xul-ZP=2oWEGqmmr;Dma z??_x&ei*65`<2gC^GP<5t3vEJ$ps4z+eYS?RgzYp|DIO&W$lf=`5z;zhF#q3x@T`m zNl{Tz_8I*j&iVNXqZ`%k4K@nVqdb1%rfvFgTYrmkb?>!E(!$E_8g}LCmK{1mi=O7E z1xFv+h9n22^5d!xyKs|@UwtquS+U*NzpwrF+kq>}3KnSY>vB)?Fmw5}1oMWprNe`o zuB2sUCwpyJ?^K;n7g_PI+%5T-0;cTUyYxNLN*4`xtnJ>BR=t56;-plAoP4 zJ<@C7w1C_<9qJL>>Z|>kx~D#BKO3~-Q*2bwmSNcs6591oMZ1&y_%XCJ%$bT89p*Xygod%egzUeCPYdn|7M z(e3PuE9lfuB~EWj@0&#I4NE;dDLO2tN6z6uZg}*Cvi(DkZu49f>>Sg+%{q9i@BO07 zennTcPug(HW3CRc6Bn90zl9JQrC_gsras`9Ghs=kk4ux8E*) z@ipV>{92x=?Qrd-tG`q+nXT0xXWxD?8n9A-TT|&qzp3M$z85B(PCoYa_4>mPx5tko zm62zx^;|f15Osj@_Iv5Z?THUFxjVN${p$YebLFem(I2V9#x7r9J=$lPTk{;9nm>Cb z+I>p8rrVeres53d$_p!7xqZTD-iS6BnoAU2gmp#y8COem=r}Qb9S}?;l z%q!WxzQ}WAl@@RMxu-vlZe)xfe5>YGnbXIbt3jKC-0H;&T3)#HKjTkyl}{7R@)*qetCmu4@^_j59rSvF7qX?t#%WDHH@C;w z6^Ye`eJYo%O6xixu7I>>U(}ZMU*f0a^KYzgyD{YgxisdAWj^onT+ zqeIIF4uCWM=6qVC?Pb$y(sJ_%%al6reMc@`3Jdd|X#Q|T!jZz5jhR-b4ww|3s%NLI zxLdGpsh(-|olBEWqtJTvH-TQm?+;`f-sOd+zT3@QRt& z{-Enx|%H#e^4sQ=1;=Y@Hev-|~C3U05RIXgI z!=}O4{qK600ME=TeiIG(3+)T;2JTt0=VtV9^4@#f8RLzoSv*~*Mbk)O-;K#4UC+;1 zVL+~!()n`pKW-zW4q0c_mdinYC#WrI`Gsbq*eLG&9EVkp^yKHkf|Al>6i`jXLXdPX<_SS5jeILt`@0~1NTUvUXzDB*r zm90hA4jXTMmYU-_Pt zxBX^hflgz@C-qOV7 zM(bEw`IVKHIjmu%s6(2rte4j1EOncnJvSzGfBJrob+hH^ohu{OH#9zf-u8CljYo5i zYO-bXN~qW4Rfg z#7dku)wh2Hy=%d+taA0qO~un}j^vl@Ei5hlI;CHawKfwpx0=t&ubE-W;`N;VqU8Ci zL5(jGIv!@MwkY44m2)E_Y_xsvhSXO*W{v0B#3$9fb13qgUelVs>ZXIwdgpEV^!*R` zFWa6q-Y5kcZFkk%y?RO5ooAtA zj%}@+C5rX*T7E))EmE+94XEbzSV{7CaEm65j7~w$bKZ&- z&#pE&-cDUpv(Vwn)g2&{tcabwIeVVvo9la)sc6XxGO_+ZU3 z_0u}3qR+Way5!r_8>j7=Hm%@@F7u#fk0yh&%xo>At#0e}`gR?bs@t%dd0A_AI~bp; zq78V!o)FsBTr=5mI4F4I=)ymZE6y(-J>P2k5N5W`Lt4(LJ@PIad>7 z9cJ*Xn|EBXZfQuo{dAezz2`xucas}BR!4I8h_{tDFIci+VCHW6D(@~VEuBZBH*|e> zKznUl+n%*yk^O}4|i`f9$K=h>KO)uwm zT|)Mqdb_A?&&P)aUyf837oY!cEijaMFgy_>AXyncs!V<+u)*>V%(yQb^De0X?Z z#>eSfErlLo+Ojoxzh4S{ zscmekU)%adZ2#M?m7cn*<-)w8Z>EQiY-KxNeVn}G&a>K_tI5JkTV7s2AAHb3YnE>G z086ien^6S~wx@EQKUClMKy$p0n0@{5{Gl6i7aDExyAZY&o>ttFb)D9I0bD>tPb|{) zN%?f6+If?k)>s*MERVe~+2Z2(>&1_Ph7_$j`h0)<-svT`E26|hb+SCVKiAfn+x{c# z^#HfmPcG|xYC2Gm`fx^Mf*bHTGW}rX$MjmA>vnU1)Nu zZE9lw{sx<@?aGJPwVtffDj!UtE}ea;HRRU&9Yrl|ZR%M*g$A2Q=M1{~h__}Iwhjhe zaAUL8Fsrcg)#qrIODrqZSUQiNTpN7lR%7D>m+qroa&@ka=*l`c_laMR^~twei^Mzl zEk$iZCzhIU4$p5a-}R_&!#&|Mrr`8dp}Ixd^Yq8xBA@eH+Fo7Ms?PVD^_jA@hZgH9 z`KslTw}ug|<{_aWU|f!>&eQ4Ut8Upn*J4nm^W%r(bc&K9BO44`)ql zD|`3Tm|k4tu65C3l*A(Q*5E zEBDfG>}0QT+_fOAZT(@lTEl^k`EB;s-CTK<_XSU$b(!=y<`|=FQo7YVNWe9_Er|{pjpe=IhS?Mrs&R!TN8e3>dnT6Ta72XE+3_B(__W3yem1Z z90Nbc?kvY^=AoBwHQtJR;Hg!;+(V6q@Z9*7?-oXprDq#{Yal)=IM?tErNlgJYT*d zUzYrL_E3ZFN!#6=<&>TSAH2Ql@^Mqw6ocKxpfz3a&-u91X-n6KXCi&?4_x5sGOTc2 zDVTUHt1jt!?CR0KU)+D!Qcb*L?SN$t_`v`J~Aq-#uD)pYtBSy>h}8 z-koo(<8PPg&Al_e`_1w1r)Te*UX}jG>ofZp#b5rJH+4eU&3lETD-NZP@UNxLJo_no zb$YMW=}V7f^eW~#RgngM|J*Glui@fTd(9IfovMj9#o9~Gxy;FK-{i;ISpVj5)8^v8 zQ*=Eh-b^0xYT)ws!2$1&w5@dA^mn3D)yP`5$GIQ(KP`Og;Fy&?t6kT_vWD&2?DtIf zeI7$UGj_l0hH~nGvmb7C>C*eK;aEcht6_N?9@F2w^|$KV;k~ul?CM=!xJG;V?RPgv zoqw@+T4E3)HqY90deuG3_X|B2y#MRZ9$&Oi=;S9&KvqrN?3K56c0$#a_>12(`yk$V zduAWerpo;9ea}4T>+6!4!)Xs+RkwK8-LRb1#fn|{!mCS{fp^VoG)u;RI_>iL^he^n z->1?=OZ^)*9n3IX9J*}&$>kk;`aWCbw-j>yl<}sLPzpit7+r^ zZqVi5d8WB)_q}n9vKOw!f2n=@vuTR@^uFrxg9ne;Rp8~9dglGB#SiMeUxDPDykdR1 zDAA(*O+|xU_QbrirJ?aZ!!y`|pL&B248>K%Ng8Mk7gPwo3p zdOL%oW(*odnliC#!GKU6~II&kx*H-t_nTrCnY$ywS`LSapBJs7E7480P5R z?oHD?Fye7kTF<$0u~B>PIQ6$2Y$9jTp`-M6p0=Ew%yc0Dzne&<)%YIc3>{N10O-?RJ#JAJu^quP*& zoG;zC2XAjRay<9)tM%&}i|nuI%wS&d$T+hsy-#lND5Ly^&8~&6%UX zxV7l9y61Df&)>T?7N1Sd%%1g+cm}Iks5eQs*FM*?Y@^9ueGN9P?^XK7c<>*dyLICy zFsc{oy=p!avNKG_P%W_Pjn|$Bdrl2K8f;``ZaLLaTqE9X>zQxA^qP*k=4E)m`q7P7 zI+X{eXluOLOsyT=<7JEC%s>2EI(ljcb_}gL|7_FVix%zuyg#iz;gq@S!+Raqp1T7- zaUc8J8dO~;N7pq!=m%QZo-IGRuf87_V&b^E+ObMJYNh_>iE5(;_V=67R8zR*_~7E= zXC?G$4qKuk#GIbZ`>7`M;zR0NY;~@8^qbcZJ+tfCZGQXuReyOL%s&yGL|Qk|(`fFl zk7;!KdS1-}f47t7d%7@3)wJ;PNX&cmt1eN&*$oe;?adXBbT0e4NN4_hO|3!07EGmk zJux5ocwzx*i1}_)a*$odIOv`w-EufzBI^t{?rL$m_#0OHaIn#g z)7@^EP7p3+hn@R24!m2MFzwZ`#zW}8qyM~J)`zuEFDn{Y7@qXts_XVSh0lnriFWuk2^Ss}&k|xppV-HG-O8A0P@6t{i*B_p- zGj{Cgv_t*|PE#lOj~L&&)I8qV?amv&`;ke9zL+{ZFL{2z{Kn21skbv;J)E*H!7Vj- z{d?iI_1}{n-|+7KQ)XkgJ|VfXwX~x{w=^`;*7i!vduNTZp|vlYYw`tw{w;OX3b&pZg_I;<*0tetP1Bt^wyJ2 z$M=qNHrLi@+-*_WI2SPyK*XT7>M z>HFz*ZCAL*DjPj+jfk4*`p#p=*Y3wB3~XNkI3UQ#yY`TNB7ExQ8)c3YU44)5EqV*WyhkbtwbKenh} zYhC!ZP4~ks!{qFp_MZ#;d>f#-;7(lDg?#_^#DzWl=8n+bx_a};Q;TnB_4;d5amUh_ zZOcgST^tZIvootB0ydnk2uaQL*fg*B!`T#j&F2&Htc(hflXZ2@v@3HmCJrFA>(0+! z9c!h#o=z%0WH5VMuT`&Se*Ey)-X9frmvEijh6-PXa|-Tq3c@*id3QO-!o*`PS!Ud# zPHosQPtWSwE5~Ca1dRqELk1?MFB+mXOz*l&Q@5jmI`c|KE%e$IAm|wQ>Pz|A)c*I@ zB^vhd=jCpmeXcFjgPCOBV|TCa$<6bMJ}kVv>G`m=19vxSEG9i&*u$S)7}Q{4pSxxI z=30}0r}nw$zt?5o>oVCvDGV^eZp5Y(K6q zkBz$inEYXp|K)0XjoGiYH4b$(Fg`lowfo2F&F}IKS=c^k@I1eC!HIW;1)7`KQPZq_-Hor!H+5I`e5%$j`|S9{j_KRBr>M`q>UwEI z60^?ZNN|sQ)AhaApZ`njpS}2m?e)?BqJmc765rv(E8$yXMVy)LiGkBL8)=$?Xgt@95G3`b4MsbLzaZE$^&dwlinup_LAl zJ>ospQ_b36m)+bv@TJaqk>+1FzLq!7``9+YyKJiKv*&4=mXAl%`?#b{o|5`wPIuQ! z!*wd>_o63ciWJ6;nkQ!2dLe$ z8y3#U{&JylNIt!xIIXl7GMD)_@6C71K-;0fT8xM)q$Bjwz85Uk9y$&Tp_9wk7<2QA zYukqAXd2X}=o#2->;CL(^`bg?MzWWmN^br5QR7X+ z&0N=*UJYipdaQ1KZ^q?Dy0r1<&OZBkh-MF;)6*gxtp=1gG`qHch)P}DTknwPfVBS2 z&b@YPxTK!YyIy&{#{S_rjThA)m)6`keC7Hpow+k7wK#dC1#H&S1199g13G=DyS^GU zN==`pHrsl9*AI&qoO;?EAO^|3SX}&isNVHggPhMlZW=N!ki?xhfE=;Z%6pOa5+AiV z;g@~dm(tQQov7KX!UmC}j%rXhJ2)(_o8UL_%D`^hH7T_NclRZ~e)H0yUy*SQxAe4I zn`d-m*0%Bbe|<7U+SgT{|Iqu}j8syGTJwlqv;JAwwe4(2HR-8WYTDcLhTV5Eb_MpP zmxoN@YmT|(5Imj!knS|Kk8Z%Aj>hl(9&Mfa(J#qvUCH1Z_glyFZ*%7tO!*MmZ;S3D zm+V=^#hWq?2i*Ip*R6i@Uki>Wwpi%W`dtqhJ@;j^h3(MHC!5yM5pS29$y@X8zx-HQ zvh1XA+OXP`*qF%NdQM2-;~|E+CYOt^@4kO7WkBD)2NGzrj)V`;xHBMn-m|F{mub_; z{m)+gBWlt4Qy0zVzW8$Pj&RshV`{MG>X$a&ODBKOZM4%n$BZi8bo}Un1A>b_OGmD0 z%6q(crBg-!w#k$I-sBbL=CYX9X3Q0}g7+DY=Cs$d>z8Up*sgFonXUg=L?7Qh^~Cg? zB^q&CD8+?~G+JE}W7DGEt(vo13|jff%@0Wn3}-dOWsJ`5ekAYY=zG-Ear)8p-J>@) z{+&!cuse`6AY#U?xA|sneHK0A=j+rC%AG`+y#8^==ZrtTR;5+EoBdYz+^4K^{VZ3P zteQx}?IB*<$c&`t6O-zWZVa82WH;hZ>hA1`HD@oZ)6ledGc@z`?iA;34x0zJ?7ArE z_f+^cXp`5=xf5vXdp4~$p^r>itf}>8>B6&V0|HBO95Z^Aks7l5^!~g`<6LdN-;Y0> z=H4GXV(!%0H-mQH$?({e`(y3^ayPfN`6;?>tfbmVy{q-D4X-ukM!g&CFF)nb`%Y|?OP-GTAJzW7P6+2^x_V807r0?!^X?}foK{_!(Cwqi=~Wxc{p%Oh z%^kb&dD`4NV;=tfB0byr`ctEbQ%k|z`PBFFjetk*y>0Ge3zrX1P2N2lm1mYObjht9 z^S5{F$j5${au=lR`F`%};unX$&!NX&4~+4t-q^PB!kYKbURN9o=PaZh3-S6q(?6bF ze|_7^WsN5+xe(UW;epY5}oKYvg8t)F=e(U%sPp{SNk;vXY z(WAF}tqNJQY<2W~+gM%Eno8ka@&ewXyE;B=NCzv{d95@boHvX_y0}1mHFj)4ow#aT zOittU_l|c~ydNLn#NZ~q8bW=kHz&KW{BP~!THmTK1}_|?G4lP=v!-*JdalSE9yN2) zHn%+czO~<(Hzx}Rjmq}lXEp)Zd}_1zlC!UMvv2j^{CVa{(A%r`(0y{DZK&?NcG2=S z-N$o_zxL|ZWI=a!&tCAI8MSJ}+Oc})+*)6f_;yFMB1UX7n`}F;W6Z_ydnWU;#{xO_ePVe{kS51t_tewZ~cO5BW$ig5kb<^NSb zzqQI)JNC=;s!V!wN;_}^y zi$KWcFq6|dLt7xOToFrv1fjQ5icCS2tj;40;&2dG|9~*Mp9jL_BVs`!na4@t@DMgv z$YF^E!gMn=HL5Se)!m2c5rjA+BqPsIAAeVzV2ttt0+hHo3FZ5^DY9{ju^LDLmCZ)d z1<68$la>f#a3xpi9kOM1GD2L)QLCUN} zax{2NDA_tzXvt5uOiY%GXPix9B8zOtw-Z^*#WohtqqWG2Z_OgJ&|BrLegmP95jz~j zw_*`wjE?2TnkAn}oNOhsVlky5lsV++a;7l*kl{Bgj-r+ZO_t{uhjgk?3ls? zQ1VPzH#}e_aD>+Kp+VP%hPJU*YU);^vGx{Z1)2p$jI{y1hg?)lUSgbFH)DlHEeGPK zaM@gDEcOT^`l9bIxbd7sxoY^mms})J&?dQT%NVk>w5<}MdMMVe@&l1FOuV(h25v!y z$+Ez?YHHjV1RG*Ksgr1ou~shh;2=hTE1luy?@OioDU6C^oDonHWT3!oK?0M@A8QrO zm8h^9ZE|oRmElGY3Px1oV86+X=5Yu$QseMMoZpH;DdexBlElDgb7P>@Km&SCjQvq* z>C1%|lt8EiMIj_=3Q0;9i>wITVv!B@ z6O%;_M%XNJL(nE8>5{eo+Ot<98xQ&O-SmK%uaIYQo6jerCeR$NFm^V>+&o{^~m750pro+ubJ3Otn-jY7XCXVS>=2%AQZC}-5jMTc26a$wx7 zk)x>?Lw~`S4$3kGqrw7`71No4BqQNBpSt)x3rP{I@(u0IY$TlhbMt|juG)Iwq=C9+ zb1*dSF~rAy+zZG4|Cw+Ml_=&4_#$YMpi3VK0yb`Tz;%vj4hYEwwu&GI!4^6QOA8A| z*d4!E%)r4vvkhc1KU=$yf&I>;S_NErcKi#Fbb2fY{EcaECwQf)Yo|Er+_iJaui{dQ z;%7@SaxkUotZW^roUY0MRLmtX?*D?aa`-7wQRQ_M5V=ADKY_y+E2$~q5jv_e!GQl8 zLlS}db>~hXJL{nczH;FJj^aGZKY->(4OSq!g!oON2Lz}E(}IGr#Z9@Xk1;k`Q58ao zfy^8d$i{B-}v(srz+ zm8E3=&&I|U-TxV9{onr2|A`+1M5cxjI3W}=;nqfUI>JmA1EVXRgIJnb+L(>Q-Vu}8 z4}`lN6xic&W0Qp(2A2=oK1EG#x5voU7_qdsx5l=V+=Uzt5+sNbr!s{c#2t+FY$j~` z*v=0O84O=3lT8rt#=uY_Jd`8aeRn1ZNQmX80P`l9&*LU=VLlQ$!UV2J1ekCYgauND zF!^kAV4lEXAAg#TD>el|Q@P?exW)qif}RW;GPo>Mvd9!+iV&Uvj2}!9_Lv%9Am#$g z5x5ei`&2|862atJ$V`A-X*_In;|iodPLRj}4yG9H5T$Z?JYY1z6`Gi29!vrZ5ZW@RcTpBNv)CF00N3i z$mEOD;dtju3v~4a5~(h9A9`>Y%(Oc_*pC(zgt+?$B2*AQfEpM~cMb8O1|k6=fdT$O zG>|z;5G|PDOZBEHRP+DmHx4HSP=h_e;6V`yS%6GYVdToEIdpUgm;fHRT-24MsN zqao}g5%P4zkYogl!iP4A=3{J#DkdMrAV>_8CjzPpJsh4S2%iYT@bnJ~RtO>%CjTtN zBwAn)-QUmH5E(sMmgyQ22*$mi$P#gs(-gyne`lbXgt=n~llgpL8Zn^y;NvlB0U-#B z2?UTx8K94h<%n?}c?K-V2>c1y3C4({qr_)ojBr?S0!063!W|H36bboE9>Ng{1w!ag zVe+_aeTf|6M<0tB!Bb_ZoEBo;6DYYpGJdp`qpS>08fambc=|XZCJS@LF;Tn2nJ>Wn zA|{`MrWSpY(wRhpg^uq0Iug}RGE&e9W4SU{mLL;crW)`9mB^PZNt1|(@CYQLPb4Tr zX&$0Q&Jhu^nNo-zd)4c z=CS%wl8TfT6{aj8)_86rgAaNhX`z8`Es-G>GPyiZmWUCS=nO*Nc(E#y2B`Y739&RY zA(70@LCk2d8F-waLjp)xHYAdKb{!G6fKYST3;>@<7*N@C(D#D|lA(}VFi44kH3QUt zhNFBv;IT+*z}X~|Oa{d-2_akXWD~lvVy+G8pzTRx0|}4`0s>4hQ5i&DtiLkG|EFU8 zRf+Xi6w6b_@O~;|#H11qTxL0teY^hdtS^*@IT=NF$A=)YwghUHD z%y<>@*aAM@x#3!Yhr)D1+S9Rx>7YLXR3o`)ocWG;1MjTMGB%b9iRW+M7#{zSO3C0<8T7$cd%_#v?S8u8Z7+e8@%SY!)1W4*t!11`z1O{^|^Eqi8mJ9~> z%Hm*xS!@7sb%O(;Giaz8Q-VB+QD=arwZ0=J6P! zIEEWFn2INspcx}%7D7%yY^<$ikpY4J9)VO}6<}FZkZT}4AXpWM?iUnH_3>eN(x`6u zQ|9?d6L=FOq=raAS-ip)%k@#KvlV{(-(!9|j&2KpoTq0%`JoFjC7A@Gv2M zilG!JFq}LIoxU<)AQp<0LpnMasPxTMbKqY$pbD zCSB#i`+Rd?M5TZ^xjCGVg9$pGXR|nIVJU~fTAX4CB1%^u8Wpr|x(_V~Z=-UnX>urZ zYD8e+A<0RM07N0fl^bKpUD?w`T@fqo0k(7EwFcuWXlL4lkrZ}7#VNQ=A@YOlX*PEYW!%~Nv(_m zVU1R*MhU>0;H9&89422@edPUpP!k#`lOhfd@nZ0gBP1)Z&=QdN7?^P)!t+luQqpK+ zC5Bu|2{x1pW(`87vTXE(wyKtbg;K&hNE7R9j0D5Ewk!G@HWR2Q2;ifCVa}nsg8wBm z6VTiNHHhV~8L*4T`fseK4uXRR-gcoA%EbCd=<}fm1sJOtAb}hv8(|`_g~Am#J|`93 zDw=c-$SJzY3Rht{fFoiG(~)Qn zile17aLg2&#dZ0M~RSeQ^p?$c2_HEV~$VkvJxX zBSaTlu}OpoT2MlO0_BYsCL7oQd=6TsiW&n81Lncm5K~cEHe9lUd@MuGQ7|$tw%`GS z$SiY6Rs&<;0t#0jUv@%=G~jo{R+liZ#5O@0#L^9%93z={JCUz^<0wqk#p%Fu;t7Nz z20J++AstVALM-1Iv=X*65-S8Q9`r`@lEE)wtTRwpwlfw1W_W?%4AkCt<_i?0O4d*D zf>4Og*imkARev&2NMB$``S=Gi&`nD)-E>AK!=)UVB{$_*6&FxD6U5}DGSfvr6^5=h zC`ls)(*k|JL!^`fD;-b>g6vXqN+MGn$6&Ij zF+?13aw14Krj6)=l5-ShgGp4BSOzo{WtxHiVhy7l<)wh|_&Ay<9X6#J4o1otiBM9a zbX75PDv2Z$v3X{u%(^BT3czJogwbfRRWEGPO2~yVV^YZ+n9iwYCO{gIP{Nu|V5WgE z))pv{FNg+d#-$O(fG(E)R#BLTN1BC$^hZRPWJa1tfS=Lkpk$Op<3eGlk*LsVNK3?# zX!v*zK+!0bjI3m|yCsHG<%}3R{yI)XE?zX>Se+mWF(a9d`i6)(VrCLyZaz{39pIn2 zBO)@5FoINL^YE$WktQUPX@sSzAufyK9$82yNNEF9(IMbk0^7l4h2==cZq3ltqT z0^m{sjgShQk;n`~v{GcNgeXWu5^1EL^b2+$gt3NZXBkgy5xyrW5BK(hpI z4jIyQRq}Ln5g#Imy@kw7q6-`eCbf_aLg`DksYc@CmLgF|5FI7ugi69^YDNePO*TNF zTVBEhAO}_;Hn!>;>&tEPV713$8_Pz8h9QDTmi}iDmMgkmBZO^tYBF$IiNli z70UyyfQNR&AcQEHCzcCuUvVnz9#$^CD9@YS%A}m2d z0yO^M7O^S1rOgMnq_Pc37)WTL!Zl41B0zV2ffNOE5?3~86G0$uOk(SE*j6;$N*4>D zX#~&CCBx11Z&Pa)$ch-7E?`Xw0kKLZ zRiOWZsY7Q{W+(&p1(*(FA!XX9j0%G^$0YMv=$3N~6LgD438Gk76j(W8g`tmf9Ka+w z9_|H^C=Q_G0yxm|>VpXx+>6G0DSQ_imV~TiFc^ZN6?GfMf%zgws2BxC#f0!UaNi32 zjupodaOsc?rdDW6<04Kd2)dlXzcGlVTor=O*cne1;g8@)@b!trVX-TBUeb1~+$q8V zFEGSU|9@{g$14JqI*`wXU6l~dvC*oABZGn_5`yI0ipn0{_$N(8lpJlO|Ff|AreL%; zMe}Fus2mjS)JdeyQ7VfQ;{H`1pmMaq`XPb8d{>~dZY7Vb9C^6DX9F`cN$@92o6S0ch-O-;VYXGopWW}>f9NdJRQFc1`uFqtJzhHDSO z@X&&oE9P;q9tjpE>P3w%d`18bV+0uu{+T<*0i(^#+}S+VG0`y%xDoX51n|V7MiR80 zfSm)+JPCMAAyK2-sU>jy^0+l2MQ+&Bw#W!YiJ&4iq!WG<+A^n9Edf`kf$@xZKr z$MX;_Jd_rlj$k{5u)hQ|5~E}haUy$i5FI<#h91?^2Qv<23`gG>Ry0>^C;~|rV}&G& zV{jxhD|~`ThDNms2OeHP!-3fyx-4pdxM5c@An4fPomfjlK3Og^Z4 zAcpv$fXHR45N=)zQL6(zBD#FihmemglBHoPEI?;r&PW=Vox_6vh4(%0LK9>@qVmgfT& zYC4ff6C7a-vP+>L*`yd^F%(UgIhJ*q^ONYzQx4>aCmfEV&@WwtG1o^IO!2IU#LnnM z5(IaIy6kL7q8MWNmPrPB1k;TkM0N3@F+8b(ZVXyrpnqTxaUK&Zb=5rpx?CwuO&@73 zb%IA10Wl0*b&~|Zsv4BxWOpjv2Vdqyh>Az69XnMB@`4{P1hp-pVVP7occ|P6VduCc z5{+fjs}c@!=P08j(&VBmvP#Vt-AGX)qO%5390#;m$=pGJz~i9AJXRz>ktLckdXyV< z8(>I^<-+eAIk4}LjxRz^f*=LxyAjunV`hrLaVv!htY$GU-Bh(~s01Qx*9GkYIEWz} z+6|S38l$@taK?<9KwuOWF;k>xzp?BP`wT#qAqg(^hzyBMjW_`x4jrJ25_9219Slc8 zF8VzaNDlT14=f1iVu0Q$2=;tTHb^+^+`xFiybc;l0g%sFY5wHZHNo5!%Cj`f%z9=<9 ze?#cOG)7Q}uP-$)OnQpL5G@FJUJgB6#|R1zr2Bao8^S$WPnxSYnn-l2DNQo^WflVy z2nfWP3{f&H8IUB5Pn#S}^MmK{U~md;G7S(YV15gr=*LoSf%HlEK@!YLQ#dPQMjWO= zg=2<}>{nK3NZIiY3V^p_0TOl#7S6}7#3E`XT6WhP_LI`(dUU`c3~8KiVkmpy6URh5 zLx!XL)Ci?xg^!Buyq>VB5$tGW7WxT>oNUxCL`POQO@WQtQc@W~4$e@pu{_^OvL-GK z;y@HX+GMamlIm2(TREV$qyqdut29Yy*_u-%64fW6<8_Fh8d4zQ2T~*-(SgKZZmcYR zc>)TyF9}ugJdqh%-F<$YFC-8&B3~Ms7~*geI=)H{RS{m^L#`Q*oZpRAY7Olv1YJ?GL`$T}$5gQLu80gM16pAr7F_mTV zm^c&6)+ADtL_{Zx381+NvAsb6uz4|IS76K7mijXLz*ssZJ6 zv&!HqIOM=7HL%F!b`w>>AW8{_mYn5odGZ@Pa!jV6+RS2BH+`fPU$LH(H>Je-QkD3}q|R z0U8Sm!=a-VH3+yug8ktUL)4GEF{)$`rAU1k2Y%8*(6JBDsG;5{A=I0q=0XiZzutm> zfe-t586{v&ikhn{^t!r2mm4j>*WZnX5pWNn6IVY{Fc(El^#M^7p^^haV6nQQF-q^6 zq!4aE4RZAlz@kQ7fD%lAf-yvh840Kk_it*4OAqGgnywg03KaK{m=y{ba%A&;9ubL@d@_#N3{lb0-FEiFzgs7 z1$P2kP?&E>FdYNpZa@w34RE1jNX$u51D29M1FbR4g;V?_6ao`0p#%epM<5L?4%7ks z0YSn30d8nY2{)h;6ltkixaBm(1$7N-<|`Q^C`YM`s9A_OH8IKL2ID2J0z zk%T0{0G(3NKIO=ASS1yZrOG4aVAemLN-& zA}5B>18G6BD2yUOfL=mH4at$^uu8QfOO;2;Xm?CQBudGA67Xf#8RZ zgDi!)%Gsj^6H0Yn~0+&UrsT$F-4B{bseT8gY+%9VamOHm+6F_Q0TDe@E%ll4_A?6DV(g7cY#4IZ+xxzGOsHJA|;hBmW6xCTo!QWa!?4f8{%PVg^94bCCyVB&_7Bp!n9?k^>~`$MW9-5su& z5vi6V06w;Rg>o<_pasY`QCUC6m6%cz4@J$777Ud_+Udy=quyR1t|WmzOsps^;6V>upT`K_Ta=tMHqp&v?DN0_3>=?ylF<4>-wysCG z2`aYAMz|$ZY|TpIA?PwIKXL^8_9g5~W|S-SVmuy)2{%L;Y=M~I%aAZkQnElS35|Lv z_*Z>Gf(o1z{P4RB74=ZmqPcv$1TYr`yTAb@U>7%F7dkL`T&74u#k>TMm6$B$01rVI z$OI5b(AZ4_QV!FcSKpCt=2WWU}0g+{i2dB$gr*Z^}8ayk3F)$aP#DhPKM3jU%DQW^xuyTbeN1&)B zvSV-t<^mLnau9l<`f?Qvp^5`ShzOw~RHlNREoWhiq|H!7v_tI6P1zvw6pEU(_ab^N zQMw53Hxg8dkGNDcGbyCS3i5`>Ng&_`pq}4 ze)oy1fA_+b>IbfV{kYZdy>0dLr>%bRtX1c)TB&}~s?!Ipe)X8uFW$2H-KVU6`jXX8 zU$N@^5v$*O!0LD3ulhI7S9Sh+Rp&2P{o>)O&L6E(e6vdBdsRwrRVh4G_0wmne*H?- z?>|!YFW#u?^ogoYpQpmkD=}rRQ6o-i6BnTw|JK!Mzxi4ei0*f!^-;QK{a=QYUdR3~ z14?gg|F!JJyQ1HBW3?RQuf~?W&b@=_AehP`|p*qpBe}My;Amn&nspBJyX`% zGi9>V68uy?HW^VoBS{U$=$$@R_HW(=`^mFl!0RA?$*!83Sx|_(JAE=O$U(-5T^xgc zz=i#W-xPIRGHNP6hjKtVxhR^rs!HyfYGbuN6!f-94tBHJ1pKp~K9Y~-R0YDn zqeJg8G9i%w%|vpq5rW;IrEonoyd(m9PzL`tO!86){JxtEiXsN+WgH?S2Epz)l=-BZ zL?LdVgr8^&@r$T(1-X0r4ROTpERj>kzon_f7tsHcqqT` zf9;6UCZrm&O)+N1U=U?#u@^?!v&=9UjIpG&XQ@zGv$P5!DQi(GLLse|EG?84l}g(C zeE!ceyBXB?|NFjvzdoPmRb!re&OP_u_dWOA^E}Ty=P+LOKq6FBz<39M#YFJWPzJq6 zCB%vZHcTMYgY#5^a)(XnytkgEUY>E?fGKB%M!&6 zE0;w2n}#UP&VmCBhEqt$EoY{&2y-L41QOxo8N>j#*rg-(`9Ey|9ugd$QFug%wfRMa zXNGupv9{5-Ay{*Uc^4M?ZMYd78rGsV-_`y5ZE=L6XEwkc&i+4ZftN&WVQyopJ+i8g z`~oQd4vs-ngoW9oSkp5YXbTIez!Cly0|r`Hm?tri1Xypf8x7$CeloMOc`%}yfPrP8 zW}s6t;Btad@Zi>f^$H+C1U~$Nbiiku;H&ju%9BN4_9}lk7BfBa3L}0FBPcVR9VW;N z@IO4g;B;|Jn*m32arbid^MoU~gt+m^f5EyJAl3;N|;YbZ$K-7jnb9u z3&kB4VrJ#y%*w+`%q0W{gd+O_vUL@qYGFhgY`f_1XtFcFTNO-(U#(1cd zCNlR`I0ggs^A_$<(n9oILDrleu8y8)iJoK&sw7KqitR;NIsw7?+Aw7Mnds1C8AFAz z6`=zq%VhuncWZZyZv&p6JiC`!hK=HtEpzwrq`XOv1 zW(*4&v!6f5p!qe)F;HgM8VpmH*n_76&C3c48yjgOctizfI57O8iUYb$@gaKvX3y9N z7z-RdTo_DPppD>6TObU+-Ut^8LkvLIv>D;*IWwN{><4H0VBr)-Px#%;##u9s`IPJzLtlr9Ua8TtA*zx zK+%Vxt;3x4l)9`SXD+~e($O23P7{;A*2y${D$f_Kbxt0M_RYz42fQRNq zCIxXQHl%#;thwl00aGU@x0s|nDIn_b;Mb~)>wqk*^|HdOWH#D76Wa*0anNDrf#}GY78pA+E9N?5V|H+KRE0ufEz^d- zA`#&45_Q>m+4f+F#^#+en0Rf)!D>qp-`4Go2eP={_0DHsE!)7cHdV0e> zb_holgp05+%O!!doasCkS40uI=c)s{zBIrm_Vqvz{pguJpg4T8a9bpQfAIc_4g!iY4W5C4H0dFz5sFX& zfEGP~B~T29?FEBL0zM|p0L9^gf=AKogR!&>z#9^fhY9ErIe-Yo-wO2y4L%ft3(W8V z__VGe{$vkETq}CuFgW71ik~b>7?cf41i+z(6JH8Ae&F)u<9jRxaWR8`jE+zQud_&g z{(&BfpjQt1#88ZFCK9Y1CyWF-9{xlqwKNp2EPx*I3^KM*25NT*NiXPEC{PG5xW`b3 z;egW6eKTD}C~6kHagJD1h+z@G!0{m&iwaO%cOoOCG!m8p7O60zqXQneHh2Zh8L|qh z&lb>1XgNIyB4^Yt*sekCxcK{kDPuRYF9r-NL_8cI9t?m3-%bK99Q<8Iis{96#|l1} ztpLjd3IYv?<|qSi>w&HsGZ+|`2yhW?;M_!^?U2=(?h&%@CJgWtI zbvS0+*dzc$;*`L7IRs}qMe_Dn7@_f*eP)lB&)yR*UzTlaGZqu0h>0az zwgteOgSy6GqC*Pw9m9S%mt8uzcDSU2MWadwqapK>&h&0sX`KPVL@EM3>}rZ-Ti61u zB8G=cMT}s9LTS2+U}SDZx@}=wb#8ou1-fxBI1WvN1VA1#Ll|2cAkgIb`s!`~bMz1c z5VFp4a-p=v+U$8FWZCQvQy$=xgt{YCeBt)M`zU}6z9OKKHTu@pvV28A_drGy0Y(w! zF9J;LJgNw5Q{y%KMQnt-F|vsDa5wmgfWa6=1Plfr5l~ds(L_MuT=|M%n41m2P8~?U zvw&Cve1WZgL%tz8L9f&u5KA5X2O1k(QymZRn#4RD1uqBfh#h% zK=%J^itPeDuZHup3vFhsQAX!C!uu{5saHh>x)~3LyXNvs5eWE3JwzjKB68gHVOd@d zX@34=6Ggwf21{aXQcN#*Id~s5#MKvY)D+o=q=*Qnxq1@m1_d$_IHn{LYeQ#U4MW>H zk>(D-g+V|vfNxkGZcOClID3d-W|pUuVMKXc=Yrw&!NA}&z@GzUtI^Miejd7@P4nP0 zQubPGRd|htVO2M?)!DKL0X_hvxik94Bm+{m!21VmYUx=opa))Hcu`<4gn~zNXa|Sh zfKbWWSlZ~DX@e^P{HZ2%LGBjlDXYVeA6$BH?0;w}fc&0;e*F1Civjb41_qYz8_b^{ zG7nIHAZr5h`+ANbA7Y2(L+o_-ULrI)*|)(cZz_)Y{qzZ4Y8V zke4MyUDu@!m<`K|2DIo~noWn}t5aE#j zCPz24j8NSy0R4S+8T!gLK(;8|9DI;ou$MCpAsh#B1!NAvPJ>Bdc=ZT2@oci$m-rUg zqHhLl2e^=Vve+=@8rVE26xYBoSyq&79#M*svP^knY>mH8vF#W-TwMbSVQGLcS(b(l z$DZLb4_h8^m%#YZBPP2*BTE+}dIfAr0QvVjXM`7(iy&6Qy6zfdzbo zu-yPq)ESEqwp)_JtrL@*n+8;*C*~N*DF>6*K%E>pXgBwzGtl`lRpWBsS*_7I7zF^C zC6Z2K6l|d1f#-9v$USaWkao~eFdBe&1!iIcVaA;m@YhI)|6z=OAu75f+uaa`wH}`L z4Y`5q0_`_vair<^CCJ&jJ?ws#?y%cg?CfKhEMe}~kHKMR4|^#Yn2P{iMeb7gV$+Qu zfxaIyGKnyPt-}Gr!6$9d)d}=+J(Se~tfK-Z4pf1D-U?o!f|uYbQ1El(UcpAg}U27A~GaJ?NF+0{M@% zjXVOO&@Chn3f)ffps=hZU*ew%;fOI~U@S*ufk7RSg^BJMxc*@O!Jh!jUgTM(jo`<*3m-bJ9k1OKoa2UB5hQrClz!O%UJpU+o zxv&05VHyEu9#{Tj;`=AT%@u%`Kjd7D{9)%}91(h+yninIqX#x-;6FMiV**C!WSfDp zGXEo|fTx=>R{k+e2R}#U*Q)#zriSang(qn^;KMIoMxg#PVC0Ty&I?a&9$vt5^YB5K zH`_lA>fsK|XnZ3>&eM$<8|yyd`a{WVK9(jM{V&Dn!s5>A} zo`1-eH?rLr#axVTCH_Iifjesk15fU929Vt4YzXou{kae1d8Za(Jcs8^Wjuc8O=WxP zJ`%&93n~AkEDTurb1z~`H|%iX$*Wv<6{6l8Xp_tV`Kg2KtDVQ9Y64gbMk|K zIOhlxz>oPKIR$L_{l+j2Y}{j*3O4SsO~Y(K>mZF93g2Z6VefQn9z>E!w&JNY=7_@NIVjtGT%YsL1Vs! z#Dm8E9ui;j9}6XC##lOroP~7oI15>*@hbmg;o^}{myQ_^3LQ8e6c&1XiGQq}WKTa# zH;e2=bSubS#4>urOaE9+<4DTP2vWgb#t2ctUd9%nVtDbN3Kidk)i7#&$uNL?$xJLq z;rIu^%9iSzFScwvd;wVCI;OG4ub))4?n8KMQ|eR2Ja8s2m9MXZTYg<&g-M9aFw!7*xJwCaR-w{IL!j zj|9UU&KqAkBa{$7I?JgWh2V1y@&%ilaU|4v^Zu#uL+LvpfMM|Dma>l* z3{vQZIKxB8V0g2*%E5X82(w7lN}0D$-OPoKOzVa&nH2i=9**fkQ#nQ;{Cy z)IWfy47O}bW0J$3Vi4{fycps1gmAtjIB+L4k(}9!=z%#w3Oz(9J-Zp$tO}qmv~ZwR zwtlLHhwB8frSD+!a1KW`oI6bsSdA@@qMRJ7cdRVBs*Az-FgFFJ&t(k~!N7!#R~GJ| z5ZF8fjjE%ns*HyY&9`%gHG#E3#LDVjKr=;Fa5n1rV!2o=Kiy z#K0)2aES*KLn!vK2bkUt3I^|?%Tx*-R={_rB(R=`Do0&9vS3Ck`ta#=hB5$%D{>5u zkt>Ent}GiE^!nUU?MY-mo_q+Eps)a->tOP`03sNgRuhc|n%zirN4R@Y{5=rCO9DeT zA~tV9IO;IlW{YOeK0IauSvq8_c>92ST?89CTp{-Z0GtD?h6`ZpFgQ(tvcuBZ{Ev=} z*)Qh2jiE=w(h5SUk%o7U&H{!N2bu}s(+CfCUg>gx-78hpJGwy^QS^pN6k5i64-EJB-^ z*I5`$Fbx!fdoi4CntsAohrJZ2%Q$DU4`+pJB#RE7@nG_B4RU2MfoE(?!G6qUm|xj5 zLNbcjaaqm}7>o%yi9uK@yJOC)gIu|2e97 zb}nJzVY$v(16U4kBT!O)Mh18?=;H^0dG|da$AeWJN0wxnqJ4!>qR|jBn zQ82v}B9KT8CI=D`v;d+z+0_@Q>F*2G4OlGhebB zC=0=^V2sN@x~xTAka!i(6yd{ z4KKLB^$gbITHovo8o{}WIh-c;s@zT#)FrNk%dt?|D|2-fT%PRf5y80#*=q*S5FE>m zQxiCRHnwWqDg-*Q2u_D~*ct+>^IKQ!%Yo-|0qYK5G2mK3(8mM}1Rek*1r0RU44nb$ zGgk?MeZ7FXZneVD*pgt)=Dvg3rfrA-YX}iai%UZ|sG-!gl+{ogYDh4z^ePJioE;k2 z`uzNZz@*aPO)XG*h-)Ajd=5cF0YWUnLz#DW$(86dzL<+)}Oab;+C2$Y64x`y3 zfSnagjunK2Hdr?zAj_Rd1h#3EFv`Mm#dg(^Wf<V zh5!OB@LxEB!33H>SN>Bu+=Kf+a;#owW@+eRx?;r|7YkcsBV&D+Rcio97OSbjz5X@T)c#%n|Bb`k)!hqla}Y{v z7NG$j0dO{S)ztAA4XhRpXKH|0lpOPNet;h9Lnd7*GmUU5z0}T@#Dfz@b@USOsegjSYfn#zwl}GSx<-fqy9U zNV2i8Y}_x(#%V+1N0zMy%U1t&+3IYv&D0FRH-2F>!Bl^`7+}u8N>C&+uz=19@M5`n z)iGF}oB%JzgPU26gBOFvBSKxnXh1Qm7Fdt`TlEkKL;pagQs6mBfRYlJ`ofb0DFKEj z37$iqBxnlMcn%u#n}f#u)}Z0;^X?=Lq~Umy)IpLuPm%^m(%?zb1WB6Q>Vx?O^}+m# z`e1((N$hVS3C%W!_rUS|RZ9ybY4KJqNbN9u^bVdm49}6P{pQHkerx2gJ>k<$><9{m zfofvZcoQM@!|>KW45WY2W{&46p+?(0eeM5v+BO17)?kv!VLaJ8eMg4W<_2gBKp#&5NQWot(RXa}u=Msu}; zWow7IyNucnYx{*%3D2yj9Sii4wg0e6M%u>I;cX24 zYulKbI_EaVTeb!)8}sY3aihxCgk@uYar@QebQ@Uq6Z;GH6Z0>f1I-AYw++QWkmC7RQONje@i9-Z`Q>dz)qivR>c2I9Se?-tygQ18_5v;5b`%RO zU@hKu6bo5kE#7t%3t3<-b#9$f`vsj+`xTwi_)SbTehX6#I;MOE52>6MZ-v7`^P#25 zn+OTk;;oHXNE@}Zc#dE5H^;B}TjSTHkDpIR@vwivN8_|$DsSIbjqaQ9ac^Pg1g*wn zKT~7d&op`OXKHNwndX@HGp=@Utabpq?109ppmAL7;8^XjO!u$0qt4Y14}U|Qvz;;d z8y>`fATI=3n+;kFf_WnW`q3nGMFR6-*!Zx_ot@4G%^=K&W%1#d%bm^!uLGD*O`DAk z%fUvs6)+!;!G~ulIh~KO=3qv3Z5AJygO9mRU`7pXIv=FMbRL$L!AzPElNuJ(HaZKS zYS#3hA;3H;;27{Mw}S!3a7J(t8VLG?GT3m#*wi65U`CCIAxt&^4J-K9ghT}Jhv?@X zhM>3x1(G)+l%U`DgYBEq2|nPDVAYWbH)2pIk?6EWWYH<02PQE zi8O6t_!|TPnm#Y!p$>g&K%bg)C4qGS0!Wxu0Rw&FpilfLpTevbaBP*wR!yCofEiOY z4c=tTDAhDal8xb84Kw<9Fg&VZ#{vU;Ww@H!SgSEA3uACNL_nawJCR2752Qg46$6O@ zfkYb75AeCc9|#Be2lxY85~htnZv-s}2{@F|8%gwo`4x>;1{t_YnP0)G!ZvhSP&=eR ze+nW9{IL-Hi1Ob@4*&7-yZ8TT{=tFn#Idz8+VelO+OX$;8tR(=-v9q^96aV1zysyB z3H$Hj`X?N}vHpMM(I0e-^86322JGaV>mQ@}@B07m96X-?VKvk=wJ`8Qr+=USaX$ZJ zdmi_{=x+i7b3MkbJ0Q?Smn`(I z>#@#4?P)KPCQV+g(%PY`6drb4VB7#gp?%7&nC}a97SfJ?mU4T3#bQf-y(y2Jzvy=7olI^bj9b3N zr@%jI%8?26HC=0sa$CIej%juqK6|{mS^7i;xj3ZZg`)K5?eFVW-%}(J)*N5wtl08c zt8VotvfNjPNps$q=sn&tFki(>c+Hw=+uzh|pWRxpL*l-`xKDFCFDw^s6%-hMXqEj{B1_Q%_pj!b&X~AEY4(w9a{(y<0pSzlPOd&+oSPk!jf)i(+I~mE zOu$RPEK*7&Z9G<}`m| zptf5(aHNaI#>QTL@@juy-ieDkLM@6$ceS5}+<5p?8nxqwtJJ~W1HBn9_e-aXCKbJj ztRebk$UdRf*cD@veVa&lQd3K$DDbu}_YXxqiuOeK$3+CkU9>|eOs;x=WHTK0q~ABQ~bRU|xplJB%$C@^2Ldt+cA zHQ>B++}l}sVco|k=O2AueKynX-4o}((=!)JEqR5Sz0hiH@B6SyQCv@LJ55VKMd15Zf(l(r=ov`SUhn!==SMR z;D`Hzt?xJc&&~Z-o_@pn^Y)k;`|D?Kp*}WRncFwCR!n<%X8GHie1YZ1X1zT2hG1Vv zT(Lf{FpChf;pp-wwJ~-@oAL2$pRJYp-nQ7gWyLeX3b$TkL!*6jqLYuS1{oU+d7nIz zac}Vn)jpk+1${G&-+cVMDeO&Wq02JK$_0L>x5?Yld?^*>Zn0$#G}cQWjPh`OFyCCe z9P>1&Z{=f$N>{6UUQH7>pb?**b+;uGQZzb^)*E%tE784^>AO0KD0#@eMvL+o8ZdN#DoVG&3YS(L}?;0ozg3*R^S7!XAw>;k@{_@!e$| z-RIM&3Nyv~i0vorAEZz!wOu(xXnu6-mPcEft`zGg73hCI zc-r>#h4P#0X!Ztk4&6?fw?4~`=AU+^uVm*n`I~8Fm(CsxUD<)UcGARtXM4ihnHHKV zrIl7?C!7lI9I-A$JYZIL&=-s!cd=;~jfRQbrRSBJ8YR{=!`)|2K8i9(=xROS?X!Dd zg~pu_d0DIb;@8rmsfilxP4&IyYRd7m;H`jr*pX8OM8mVT(eaOT);{DQuQ$iyXetw>wP&c6H$1&AK@e(HG9)|1_9 z&Uf$LGrYTrvyA1G-&bBZBaD5r0~x3UAHhhe-3Rpa<)$BO?8ckOi5BpbAfrP zT0q8)!!tthv_Qwog4?qNj!hC!8n;|nV2$i{wv!3s-M3SsmrRmSOlvtVDyCm3p(8)z z;AD}xlP}FXge?wMS--);Jzn&n$od5vng|=3$}vj{k}C6_95Ac4P-zNGPxH3h+2VaQ z)#HY5SnA%UrV1sEbQ-R&CE1jQ_1fM+X=-@6G5OV@?$&pm-u3bqc3~wW_t7R3^W~HK zJnoFcEjQb18v8c);L|$i?pxxRX_28Q5>llt#ZT>$Ur_P*64AKvc z$ecs6#@=v zGmW)Uqo%s~oc5huyyzaOH)MPrsiGll`(<2l4n`ztxAf%GMibPF{dxnZPWCm*o~$e} z*->J7o0>h|e~)(t{)6${1f!>RvNz^v*4p-7@>yVE?z4G*FKy0h`@D*-I8vW$-CYxn zUX_9s$`XRgj#p34G+tXUVdYyA$yIqHMkaaL_&Ku@)?7h3-*d@SD3*3?s8T21RlmU836PmQzM9~TQdE4glzybvV`EKMXnK&%k) zeyxpqO-%fXr%$xRR~M}?%Icd*YLXMXqgZWT?d<2)7aSBRr1jK%&h1W1%nE$ zPxs{{c*Gl@JbbgMCSERyQs-d5cRgCn`H0hl_?fFK)qP|3?I3o=ug=xH8E|6V)Up|d*{`?@;j}ZCO?t0HxrRLwilHU z+vl`P(A>rWN1K}*h&sP?Z${7SI}v+ol8fyVQi^1~PYj4=+mKE!0-Xg3M-*C{7c zcVF6lU^Y$=5m7;l_LA|OYUt&a{zTPSO=zhk+Z_(D+JRg;s!-j z4^Gvrn)%rveWFT5amr1Z6SUps`m?r29(IjLpA9f>20NrWezowtiDCxbTGw#m0qNUa zHLIO8JuaCic^%(?a6Vq6f2=t2_L^${-4%W}$j73Ue8u!dg>JsUNnVf0=)1A0-DrEn z#Tt?Nq$sVFypWm4g^F-?=?_$`KFyMs5EXx!aVJwttk~g+s)OJGvC^XEvroLpqA(Jw zu5yz^#{(E-ycC@@=moUvaBR<6LrZk^SFz&FaE-E8*XiRgN!@)B7^g2|oU-En;qv{i zGslY$iYPxmeiEJWMAb&FsjPR0SUX~;_{*jn32S6;_9g@kDD5aQ7Ey^wE`8D&(f+*X zu$8yQ8efs7#@TIlVO14Z)DZKQ->L2(5bSX;1#q^s2-luDqKotLO3gnLY=kFXa%e)X zY?HLeDew#+#`}nv6Q{f%F-T`-J?)uXNyQk z%QSQqWZz8FXv)CPp{6E@6Hf-D+`*-gv)icO{iDRlUqJr6ZK=1SN^{*Jd8&~*Y+kO|DrluE5k*W7}437n= zaUK&cs7(lZKJ9pmns!vAj^PElq0lW(kJ5cYpKYovt*itL9=I~&l@EIClLJrQzVUn8 zh5|lX!Edb`G{%Xu@TQ0b9yrBRq{YeECHX!z&i3s|T{~7b{hhmNmD3xIygoBC=LZGm z3dq!rhcYQyr#i{r8XfkrWy#sZ9=Ft#J$p&c5Dh$y^SD+keS@Qj&Y=WX1JB^v9HLk! zag*lEu$i>DYJ=ig3|=xdHTBSAccCBS#7eeFE&BKhU$b{hmEKWbjm|yP#G;ygsN@W4 z`Mns8UZ1iD$usXJQ!SLU4q3;R^)#L7jl*Z58xph7jdA$OIBahmF54#SeipLMk*ZSG z>4&G5OHk{jtrD}4i@}fbg*CO(cJ)1AtlsI?COKB|dTA|SCQ zPWhhM=|&X3Q>82!@LAg_Int)nG_q5@?wL?5kdYabkWR8WuEV^nGZvYhZb#~*m{_AU ziYaBC-o#oYAS7FwT0a};7Agzd=!5GuEjgJLnOHgX%w3z#IAm4_B^aIE?MNqv zv|GjIMqn#$o~emL_sTzzH)@zv{GvuEB-%#kM6wNfHGDIwC7(oS+#8U=;D zXO1oEFKIL(Cfkuq6Dw>wDJ9i!(TzUnb4eZ6rr2H~^0hM^sT+!;GZpS+)G4^lX)Q47ERaLoj;H}(*ho2F zxfcKeXg30BmTQX5LRHwTE&GtQM8YXq(k_8g);yG7K08aLbVZBA;i4>jMY>n988$N( z-MG7qT0f6cX781KH%Hnk4ru|@uNMzBOU&vbx8OP)f`N&ucYr#8Z`^Bj!+ILNGNvdy zjaZA#nVp?Vt?dH4mV`8MGO>=8&lY#8OQ%M*x&n6inWPd1TZNL$#$gsIh%6q0C<8LAo6D8D%d^i};A3*)m?97p+ZB8Ng zEBE2a%_g>F&7NlE4oA zB6kV4KTqS8Rc9Q&*8<-gfo^z3HnH|aW+7K}QEM|mm9O!(N~})ojluW&Xmn&yu9frv z)18G3#`W%@k{o~{YH=K>)mgg5Ilx@obQ}WpXIk!JNEfmI(ko&XxCTvJ0WM%A_U<9p zwv+3n>`cgJ=abN#u|+*8WD~0fa9*;ztX^3q=FCo+4K|u1;aX3;zE&CEn`a$+J_XPg z6KnHaQ&bkdH|Bh=u~XT4>o|1dzVlhw-o2E?t~GJEUO(k~K1DsRh~~&z0Cu3GsNPt7 zj~%e!ve1BDrUFWL7g!I)euYzL_0OsZhtKu~y*=OlQ_2xzx3|gGt$5C%)3qeU#A3c$2~_(a!GQtR$cPowfaWa&&HV ztcgzJBB^suB{NR^s6OA~{EQIP;Zx0u5C3g$6;>JaH{N=_y7t#EPMZVtl)ik7l_c6E*qqX9$XlYn>Rr;Rhh5W; z#=h!)V!8kQ*UR%V9zFZbz-l z+*X(NuoGHy7A`6h5ZPdn9{uHUP~()eS^Yz%IP^AZwc;Jb(`6>zE48qF;m=|n9Fxg z7oE4xap|}NQ>Jg9(saw@lYi0XY6H`tV|Ep@vz2d`cU`orI5umwL-Vq*p050vI~NBK zc5B^i+7vb}(r?b|zWGlO-wTd?O4m9&xCdpM}>jMaAADAQi$K-p`CLUC1mVVkj+6J$zNZG>A~!X*(fj>y)@i2X2ZC$YaeS8uO@VV z-G6$~!0X@yZU5dF73G6EL#e&JmDj!QPb{j4Cp^>uaHlKoUs=~d2g$n!L*HfohmAxcw~FeA=kQlD&}TK(z?kyBp# zX$#zmJYF7q!F=n4*wPONthatUa$~9g!W6~I<`a*u3`)Q3&$aO^JSCviF#gmxOXrKh z%Wy~Rees|CZ;bc7T;ejJ*b5yw|NQ;dlwA*BeveUm=(jcM4S}FSusxZVcX?)Bo;<;} zYU^Lx{mtD2P7iPB%4(G=Mtv+_a5XOQOKYd}SwBZ&l)Ly$NGy=Ps=Dq7%|Z8?=JbZZnv5!^6Uf9%-bG%TVq5ew zW6L%+QZ>8CZ%>6t_{`t*Eb~nJkXWC3oTqqei07o;PiHNvq(lYaJ}+IVaV6m4xW{s{O-npclSutmJ7O%r`$~?Eih@{ z@hs}9|DwQwr8Xsd`rHmpdE+=(tUUi{_6DQ#gF{D%e(ux0S;^>0hZUY|oVKIkP@CCw zy-9=1-#;xd59l?}AkCYpxcyR7yP# zKhj$JBs;ODj#S#_N{exy9%JFSVS|oh^EZ(ROT$yGqzeMkw9Ta{VU{V6ZMrZai})~cePw@OzvzE1j-cJXY=o=~Nxi#KHJ zZpSK}Z|I#X>FCzGB*u|Q-4}BPeJTP;UgI{+X{XASK#9Fu6WZ!87aDzjcWY}mb!PA5 zx(V)*u4*s(@gn#G0(BET+uyv|ylvgl>~TXy1kZz#vj>E?PM^N&L#S+}_R50P{J59pUEwI{ulS#up>3DumVH{f^?Tu+?xo$I zZ(E+xC>(4VB0de-r1Rxn=q*d?;G2@0X}pR+ zOnY6>eH;A#TropHV5KfXV4g%Xtq)ke(zvDs0)f!HW$QZNqFk=(-og5+zeJY)6*(xW z=fCe+c-n&A>3LTc&OJSDN6ff>2??VW3KN{i-)el6w0GjM=+%iv8^3%DcW7Qzm-}<6 z(9v1`JtUI%8<})fS*1Hcvd@;#EV1#cXH7Gjwc>UJ(jhG@F@E`>Ktvj9H`1i*Uen3= zi8Ti&-U*U1vF$rTlsljx9j&nMxUf|@ZV)NA1N~GV=Ok#AbRj3zSWYNPR_MeFgT#WH zOB;+4W?EwAa}8!^`H}mqjK{lP-|1B$mi2FAaAPScTlJK$zTb{nv|!~uHSj``ahw6% z!!K1Eob=y(-FVgDc6Px)Vuv-^JWB)mQi^Z_<5hQj*ooWEh1OM3D zr2olAOP_&!N%^rzSeH(v)i+4HIVtU@7Jnh%+0K=XSb}+ z&PL|$^>#};1by)W$mh)2c!3j&RmVI-FN)~#5{=0F0n`0+I^TTyzG?H8mQCT#8@4EY z9JK1MO5LQI_4)STErBoLmsJ}-{3v|(O{c7*ppuf;3H+I$hU)a8lrc`nzbVV#YMIdU z<;r+t!jrI^5St^Dhi+JXpTA|x2Kv(6KwqO%;)9&a+d7YQUpmr!#D87kv*`&(msz%a z3LdJzte}T($e*0q^76ybrb|wmEkhx1-@g5JscPFn(St=A`q-Vsi4CFyTP?NfN(-01 ze;&QC{L8Y?FAcd5k{(o5wYm6*&wF|A7`;6S`ZLvW50e}!&vZwpqdw0sJZsZ5NXY1T z5u9;Bj0Px}HmpTXpC(MWrQPcER&n#Zyfdq`Ruc$TrZxRj(uc0T{8+W%B*pHiVrAEt zp#I>mRX#P3-hKQY_LS>M=Bw_?%E|{C25-Tmg#aE!I~%5!0)Oq&CQlTZK4-1XUuze* zsLcH+_|ft>q}Wapb>6S?PV~ujPf$D5?CND?MDRpz6d6|^zF~v=%n#JM(v`7?H0yd! zWxd~WdD+ePKdy}HYo*CAq6Caw;z481RrSz~b}%hZ zpNLEyZT*#Rh+q2nA?+dQ@FU;P4=Hl-ULvA*jpaanmd(p2PD-5X4XQR#eC=Ri;hVpN zzQug|dTW91=5KdO37p5Vj{>u1Wb{=8Uwp3B99Z!kH^k^+GTuV!k&cx#rI%hCM&BQEBkj z;!}&uFOk)4iVV_Zcj-$Bjvt>d)$aQM6GNs@d`Wh3Z@Z&Io|T3~Sn2e?FEskT$+tbV z@~Btt=d-t$Ms7=(F=J}<@kQ4YL{1OA?>W5jOU_L28qLHy4jFtu3wKXBD+$*qimqIu z(PK|k!F765>!rykq?x+6orzr*(p0%}ubt`nl(}|gT~0NNsn^aIIl9&+TQ#_5A(OkT zW6F|6@!5%YfGa}D4_hs9;!pB)fiUp#>(Ef) z7Vv>#fB#AS`SF@)Z~bVK#m3E!ZYhqA-m!b0bo$NC&oq$1&X{pz(59UBppAM>Rz^7Q z?F?+j=T^eIjB8q2t$EvDnw$^xyET9LqG>r%W%*Tx6dRL*5<-sg$1Gd-DQrlMPThSoSiZ&RS`VNS zr}joOtYqP~*n#f@weLS1J>&mH?=Rhx#rI`CyPj+C(oCQ4|*AIthMCC*Q&S$y-`PxWNevM?&;}wfuOx) zt%BQTnAX2goIYT0c&{%&t$);n@ z>cP3zZM}VO`kYH`ejZtt@^xG6wo^Z+->%r|KTvo_tGiiOZ=h$Z__kT!FG?R2GewC{ zN?BZYaH5#0Y6J;?aBYm>!L>7v#(q6|=r5PXLSp7N)i+x$pIJ6sZm1-_9hYo=)6X;| z^>kOOgGf>P&0DC${Xa}=e|WyYd=tTAVlY?ZChVFf;x2-&pK|oxm!I3Pe_2vjsm1;E zB=hrr3u%RI?R_y4ml{(}2iz!L(^{IjGS<-UYT&oOJxNWUvzrI2LUW>`4iub4p)Ma< ziX|=ZQ4n!{zwyJqJCUV3pAE%I;=HArr>3;VN>o)QkYWutT@Cy`khChwJY(>?f5*@L z54O=hIeC73&=Hc_K{}k@_ik{h|NE_NZ?@hV(%WDBRkiHnroYC$l=yV%_2yR<)5%-U z?`TKMUzJ-Py+goor^NDvDbao}rY-LjJ$KCSMKw-ym(fDP;8q#EgEFtfDu2|h+Sybz zQ%KbEp6?w}thv{nV`s%WXPY3dV)YHjiA=}*q;H9n!f7c{|D*fju&ax)B-y8p*r#sQD@mJv z9Ig4G+SV4LtbEREPx%L3P5;{$e(e1FYT#Yc1C;Y?W!br|X;WJ#?-ZPN%nL>E_Cm=7 zR#(e}h+a7x?R*xuu=3l@q%Yexzgsxr!HgXrD#N!ey!qWFwXOS`%c><+;h767b-p=< zKe`~XP~gf!0jaN#a^LOCdE~IGzp(O^Ud6YsdT)Xr_fQX~cn4LW?!O7Fw9cyT!561o zzxeW{$<~g{`xk4Mg?`@o*PgHA4+~#drSwFs$SPD>cvkU!%dYp&1_)~%KUEBf)nO}F zTc~29?|n%({B}FqeR`Tx$f@flQibQ&z8Jrdq_Z?N_)y>rY)RMy(s~n@icU+%jg1ym zwIwR#9b)k^B^9scDdQqtBkoU{FE?JsiL`G?x5#tltGO*T@iLi4c{+gqwlf!1yEEVF z&|ANUMI|>#^G!v|a?F<?=RUe7YhY1y*Qg4Fkm$Bku)D%51vWEhYZ;ZH8-)L4Q%S->xK`hckZ&I~!C>D6VX77T>55 z;#GXCKfS53*~wNq>7aakV@31cI|q(?wRB767rpMYC5bgPNqZmfo`3uF&A}US3bTZt zp7`)E-ZiMG(M+Yx>2SLCw9Mj-sI&4X^JXYv58QCwVt4ZFp=+)hfwx<3q(z9^Eha|b z&+M+2E)Q>8PZ2Lk^C9nPcrZbv`i8PxqY$}NIY){}>J4ofQjr(mV`@vxcbRt~%stvc z;LgXD6CS-=yYA6aLY0tQLX}>GM^#bj>7qR?&%B~0rIy-Laq|pC9;wkPA3Ki^@vf0y zLM5#iTz`9dL$^WLnuZxuYBX1fi5W){GA*u;L)>ombJL2`c{I`E46$E7FY<;1+V|o6 zw=d-q6yCM$kkrgyim7i=Y zSaL^rkCgbtNfE0JjP=Kl7c|%-cOc$IW~y?@w!t_9H~IN(5nnL{onHoa&**uLG({&b zKo41*e_t+5E$bi~`vQA?vJ^3?i#eJZ1FzO2}qHo*3PaJUTcnA+3s4_Nv)TlMqqp5s}qwQfJ+9~ zY{}=+1TPNrG`)iBU0kEg(MQDZRy|Nh3h{WEEqZ0c&a98y?d9!+PUAfW=v{p462DK z&Ja&LrgYr%=+c_Vnviv5FL7@vwO4616Z5Q!ny?$TYOkBQZ`R7l*Gr`KJtVpK>18{u z-+EB;;`dWqPkmpeyv+8m9VFU>j`iS>F6K&^@^AOy`pzBh}YuzkJEGUT`+mexiY8yuF#`wZ<6i z&E!wlQ#Z`~A)n>-e5%#~!9>H$+a^oJoz^iq6NW&r`2l4oA3(E{M&*xz_5XntllF3%wZLl5AvnG~!{t8u3T9KC!(vy8hW*V(+>i zCuRulb|?=up`7mazY((DHLQ4njnOpMLwA4tKxUUpH7XZR^06*eu39%u8t*qzi)1T_ z5??0ndnc2SO4`*g`f}5kZwnKUTc%$pe{iu1%&RIo^%LD_UZtJYPV}_uUzrlVrTnuk zwQ-;yUqy@lxhFbSR%V}Wu-%2PGztHgbq`3Z1NWZ1DR#$0oxCREK&7RB;H{$xcCjCw z9-`V(%de*vmE6;A&b(1`PH?w@qHyp2?BKrV`;hhXYU3*!KZ{om;8T;ssV(GB4dup1 zPCdLSme;kUe|pL}*Qm_Q%wq9iPg~;01{dLP4Rvu~UH#%Kh|JN>C|7rMM6zO`hxbvrF zxGjr1i&fL8A*y#>BklDK-h_X?ynnBr7O;Dr$u1Y|`*3_&BK}6XO)uG0c&lYx_#5x_ z*X*}a@-gq9&O-TJgPY zK26gsdrk4d5~stYHfl)b>b?$t>z&U!VhudaaJMunMKmaqHCjb)?KG*G;kO)>BCmV5 zFNm*fO=(Ygbf9jBbCW8z$mWf{T2snjGr-E}w2?mv3!EgfA`H>f@I zS-I#bUJse%eX~Kqc#mDN*F91Hbw;I9=zA*O_4kfgY*ns0qpVfiOX82zTU}?qTbm-kE;W6bQ(wP%Xz9_z z#nTB(DDFbU=dUh22$Ab+-E{fJ1-Y~Y~JdPqrr;CA~Tc}VzUEP zwtag2dF)>OcY9K)FA8=~+87tBC*2+AHcR%tp!(xGse(;&X{3U@d5LW&-|ostkt^Sm z-a4n*Snh<8SfZHVq}{7ajH#hvse!LhxjuQ0k#c*)^o1lPkTEov?W5p* zZcnVOH_7aFodO1v*A(M+(^lOs0qssmlel`zZ+4}+#g3DPSZrbg5o@${d8ROt_<(Am zG4#Z|?4CKU*Bjq+Xhj<_qMc}3(i@9hQg&}KF>)SoO&V^Mcp^Et+|F8Aqu2*q>{nKu zW>=PMl42dFd~e_Rd%kD0kr721xr-@j)|B&i(_KrEL}UcMcaON-`m;UP_6e@mpC}lR z8}E_p@lh_}VZ8pL6EFUDSvsNcl4k1Jg`rb6#g{FNoRxNnpr>Rwr%iUi|4>Wnro%?! zhaVm%*mbJtc&f^1lfFG&RF{{B*&BE5Rh3QfQ``cN_`LkfatT*n4<0V#+?d7{t&@wl zYxb9mmwt?XAeZ29vAY|*{t|c^Z!tHthJ@t;#ELO1$IYBy@_5`{z0k{Ev{h4U1=U-{?cO|kH`Msq za)0TkElD;~Lm!UL-=E`}`oZDH`JSymy%(M~3taUTxq?z}_R06tHx0XBy}Li2A3gTv z#;OCRlY+EsTvnYs)EbZ~_UTQ@xq7LMmBvojimZpcJ}=#@*5Mh~@jmL{%K?vt=Aoop zcClMj!e+(a!uL>jHw{!)UL2U+vO|mXTJuA&ZQ8To$1n7V{#EOgzAxPrxcFx)fys7i~V(*9E z-5T#h&xWb_)+nDDTst*;k(IZUr^tq@$NSGnKh6s*3urplV1{m6KhYStjw5}t>U=b< zLR&ZZ+N$F?uL1Ne)BYoSoWnL2*{W}>FD~$$sJ}lIfKz#>UV44c*(gN7TrEuQ=BTai zQ(`R6&pEE2ddThc8ims3_iQ9Kbmv}BvY*(uAU3T4p|Z|+M%Ouwzy;<5BvIcdx0X$7 zKAP>a{!5nnq2{&T)pvxdmUdDG4^C5%#Wwtfs{CQP#jNe_rcctfg;KX@Z|Ay_tQr+s zU0YL0*zcR3-)OmXIpNLWV(abKjEo2m8Uo+nsnrO)VDzB4<@HJ1?FH#mi&qBxl|25Q zV6>|QsmxlX(`!ZN!_LT5|G?N64~j{py$9O2gya1K4oaCSf6`VivNUyGO7;5Y*5+X4 z*+nK_POn=>@hItNtmurv_r@*tZ1V1GId?d$5c6Z`{7KjTPaCH{TXaBAAGL}+J1c2< z*EEN+$TuGPB?pLW8xEE~eN!QN<++b5wy*66aFTA7eh~f3PiofTs@_bX`Hz8_@f#JaMiC@pmdNEzN zEuk((n)+_eq|^71b|LGjp7xZJ=YK9tU$*bKkAwK-D$I;?b{lUMdUvf7?2XerM4Fm? zN5SuH`HU~Fhs*Xk6-Y-L$<9FCz?$tzG^Esh>bFmg7G0TX?}-uIlkBe45LmA;L#+CZ zU(;8$OLrH06EK64*Qm)d1$~_lpOh3O=7uhu-Lo#-^;WRTSAW_w9nn=Wo1$}f+pj$= zf9h^v)4~gKhW6TBI^E4hhdVOs4PLzt4m2!kG*FniyKloEia#O`dTEX0H)}Pmfo7lTNZ91lrNbD_KkQ>^0O7?Sa>!OrKY2iW7 zgXij&?OmkOVe^BhUY1UKE zf|z$-52wvUyqdqDu6RmOQR8Npf>bw$q$=;%*oqG#>2Zh1itc z*yf$p!d|yy1!sgb?wVA$Cm|HNz$gW-HH8NXpZ38JD6!l3K0Od~I!{bZep0N_3H8wN zPxJTY<>jxObR{Y9DJD99{pwN?rPJS{1!augCF&$yV|*lIYLqdN>zja6bRA~To|${( zWz9?@{bp~$bkM7}XZp{`x5Q_6t~D`vWgUyGO(EBIc}_!G%&s)ct)EM+pGRGi zYmV<}I^P?I?n$$bIbEmKxcS7M*T&i{_CD8yjn&p*PCSTCk1AU;sBl_1q->p5MaA6- z66f#EadK^#onuHIAZgAJ-{mFNq|`5!;V$tb>@DWac7e3E`Lf`_Y4{)Ty%@Ra^r_*) z66c3EQ%=6O)C~I~fHs>YnyxE_cHDA_Hjrm`$)TvN;?(;uo&(pm$;u)s?ug>vms}(v za@D0`)pyS8PKzZ6PH!!k?C`T9d|g_M>Xsh#IT6cNnMm~m_C_UkZeeDC;9sj|~fcdR3ZB=+vF0j|m3I6qHstGJw7jT$=j#>{VRX%2NBrA+s*>FT;P zyQAurryrDc)_F7${~vqj9oEFQ@BJVuAiWo<0i;7nkPd>NrURoCR zCU^SXK{)?v-$&Y>*}fz;6JDz#&1ZJt=%KP<*xPt`S8kai*H#}~S7)`LN?U>^mzt$L z-eT`XFw3VL5__{?!_*X|71F%ZUHjIKY;MAhojQlPdK=#5DTY#$j+7OuVP<|C#xQHU z)nk+FrGl4SIDIpeEVI_^`9u```sHRg58TRmt;@z#H3FqFRI>@+@{GSBmtJk1a1ycI zU{bvB5%}0J3*ST%9gFPM&uC`Ijuzt02fe_RuRaXtL9Rca){Dp;tJ$qqFo;mc*lR(Q zcE=UaLFzz~6#B6V)e4se6 zQp6P8)xMJyE6apfa7s)nI%$7{kRmlfkb2G@Se7aBM%%M`imeM{P~6xSVm{m{HJ_m( ztbdqfJ0c-osn(;TUBQoJ@ls#x&7TCSYaVj6)H~@-M7jgzYRjZU!J%B*&kYqd^0|BY zqIGz}bj--u_mp@mJlbn0ZS6v+ce+^#>WVQ2D3$T*ifLV*LT@A!-mmR@n?o+Lm{PP` zSLs<5;lAlzy(Ey_L2k+)*&SpOU*o?(cFgT?3|9@PKREdm9IPHL(n}biIUxj_?|IrB z0+JmtH5)DO>91}L2aT}EuNja$EaMp4hI@R8i=cc57M0ysVBD&C>*S(ib<7vt%dQ<8 ztF)D%mwyV87mSI_j&om3F!{9iso2aJQB1vb99|H^wz%tAU(};E{!Glmg8UU0`3nx; z_fKeXg4S&+1|wyKmNJSC9bbFo>ATE+)kPQDea+N()6QbR0Rxpe!_GL0F2%-LV&sKD zl#(UH1L1Th%*G#Nq@WtMah)o?p0*G{Z|r-DF13%{`!14PW_$&{qFuOA-kbD@BZzZ{ z!X^1yZr*inwz$ISnT;^LBF1u#3JG)bX!(+S4LM13$#=4>9OyhCbSeMfU?2l?Myg?D z5-&_Kd&G38%zVoFawRMYI|(~`#G-t%97dEy;%ly>7FRgQT%%tlF*)z|l)p8MB`429 zfhAVU@Hu-nxyke4GEB}G-VrQD1>RUK6Siu2IDae0+jej)CCrShgVLmvD0Xx)I_tK5 z2c>-{nPCS}wnkPWtm3`8H6N=*=SX2?)@%Ebe8G(*wGFj6wdmUDY@$|9{v`$O6o*kY ziImLO7W-=&hmbq(-V%K%iNVGx@35Ud&PaMFlwUt}EL81&`weCw=Ni@VtyFs3NxP@G z-uRweEqVMkar9f5+!Jlw2t-nM-=;Pcn&e5=`uQBS`7mWUO`@2qIEbDhQubd? zdc=%K7Y1WvI6M-3nPeH_fS+AbLK=f>>U9@YZ;~0Z-@~n%>@au{;*nqDmRc-oyLNXa zGQ6h@$5X=7VNT$)mj46vrl};|I>69e@)Kug*^A;whV1Nd`jwj#od8Tgv%jK1 zx49ITj*hkXd6oACMrE{Pn!uE2L3qnDK^|S57ZKnR-=k>0pkp;!~8 zZ@hF(&&Ow)&_$r8eu*YU2gSZwoav*eav(n1tD9UvpEN1o>&7bY!zQc8^^-W@&Pjm_ zm9z%>I5e;%eg_HXE$5?DY@cnAoQw`d%Q$4rC z38e>(3=E(=oJ#hR(q8bUA_y6w58vu9O!m;oIw>@5M9zbJ}cPLW708OxV>$qn6hC^`=IF^ zo#;GU@S9Flpzj?9S}k#06>wH&PQl&e994E+IWkGSIBBX}$R0AWxCG3#4>i&PaQg~%JU(bBcaN04bGrF3>#fcx zeWuN>?h`UpfQ4SiI91|gI)>O9f9L}UZ$%>5B2(Aj2Af2;03^}pr0ebo!J2lb?d!Q4 z%rV9D_));4gecEv_C|dLkLk^ouyZ5zW`<=MXC^Wy;hB-jd@h!oWR92&iLlk}C~Aj( zNN5#)Hu$|gUkyAjEp1THx8PQ}<#04F+a08aVxqMvZvw0^vzuvK0>}jpLfpmEO_dFu zql9hV;_T(%MTYVsi&*5Yeh1$^q1Vz^8Z#WLWiJQIPST6jQkUn?p12w=vPZL#wzrJV z)shUeCe?J+B8P)7vm+Oi45cVxF_*=La&k#5mC4#2)Am(F8R7g(I6TM@7A5{N8~&vb z&gvu<)}*|=8U6B|ko%!#xCIp^lP?Er`VvMrSQvB1hFe0j3);#hU-l)Ax!VdDD!yLt z_pduJJ=EpVH0IfeUzQ5ByA6f{00)(*D7x7ZH>>8}{<{&yxR!Ngrq|fmxW>8bGIcXV z8YIH-ELrC@nZe*WO@3&xLB=&ln|xait{h88Rwz#6$mN3H6xey;eaC8a{ z2*jVL>I(t+3&J_H`c-elTP4f}K2szoR79hCkYU`DUcHH{NengAAYn+)57KaV$&ifE zVoa1L#0e>MT9wWJSjsY~T=wFQAsU&ytemz9XZ6zf@pkr*&7Qg&SZ@*HXGr&6-y3CxT(znp8vy4f1q_~E?qvK6tVbqET;Uj{MOpl zz-RJ{AMdYb1uXX|?Dy^Pw{@Co>xhhHU>k8jB*d%3%H#5RMwE%NXW5VnZj;*=RhXBgK9*{|3fK>uLxI_;DT-GL%RiM z9s|?nmLmy@&<5Vc?aJ60lf6!>_a4^ASS3qS($yx>$7H~*bh?w3BD1$VPz_f6CLvnmn=58G#4VGH_2$wp(MR@0Bym+NATI>%%6Nzfx?am^nLy)I6C zA&u^Fn|*zALdU+UL#@~$^if%a=cX*M`w6lrLdB0UVIILN^VDC;JXVf@SM?T+yV8FF!P)_{P( zAA3Vpq0mS9I&i2K$(1Gw#JOi`dec-dozxA&IfPl~y)166BM{nxd_ksNk)#f*%n7;r z=?Zx1a?lCqEK^`{;u*2DaGtV{RV!nG1t55rI6=daQ}OnlL^I^Ni;-E3F)Z!L+DiP< zl}k3faYX5fu;-k^@t0?n>ay|*>bKN(z*)TMNmmzjWLBqNU7H}6sHTw>n^y$YbWC2m zC$g)uF#k~>W$}~byW=*>W@S#vhVn9aU5$Z|bg5WBn0VLLV~?5C)vPZS-z|K=Pky>0 zsDkxLr9o!xX^ZBw)w6&4MG^kDXZ@JvgVm{h9w%X2%EB4VlD0=Gdj45^vHF$vaY|ke zFrnR;l->R(2*Y~;b1LV@LZQuBS!yfqNu4!!wm2;fP0z-ChB9Q_GvA>N&lV1Oqmv~Y zHLze~Q+zZZ(>Bx~%~M2A~q$tC7=53^s?3MhP1NR<`r7x zY}awZ?eQ5NO{Rv}hUoW7AP{HE+NAoFgOWhn<5wBhemr;s^e-1ry?OTNJqt$$-!B#4 zeLx$8Sd^j=5uGaF>Prd20=Lzc-ag0>PnU5O^J6~KP2Qbq+r!vE^XOSs(%{j^V=hi3 zZ;sXVge|@{{8$_{c^WER9qhd4WG4JT2OFBCFq9!(h>^g4rVf#ejn&2}e(!4p6!X=h z)fO%|nsdop)tfGaM889Dk#F4&dWAPCrEM6iUz?sv_ON&AIHB*L&ZAB3QKp-P#yhqB z4}s5BRfuu$;FxECJl1E}#t_MKy5=0mCz96wXbY|3KK$+HcC?6o}Du1`AI$cm?oCm)Y{z!GT0zB29^ zlRVJfN}|2D&D-+Dv&L&uSX-6(h~|#_^!UD;sgW&jFq|+bA<>4!)IPWUn8eVT!nH@& zNtx_n&&rc&f%;;13%=6s{Vh=AJCn50R<^<$8g#6|FJsp8W?f#~w?1H-NO3e=%+Ji- zDrhVdZD~ismO82H-HTx!j+F!Uw)Ww?S&4gAQH-a z8_s7o>xvdcybl_V%Zfb~8MYWj2^@9ysxj6D(oXai@R1?dAC|S&>yo1q@kay5=;Mp9 z?{*w>XyEDgIQieP8VS#4eFBn>v{8_Ts3eVtQQ+GGxp>X(9C?z5tPoH=hn=y9@p%Ui zo%7%`vsKrOxqVNL^^-DWA}z5(M`S(%gvlfDjho@IJbJw)C8cAQiI|ug8o^WTS(-&s z%LFmCVb9|nSR9CEdT-Yl-FWWLp>b8qL>^2l&&>%mmbE7Y%J0ZB+T1Rmd>=SE$LpOV zSR2O}i*(AK&Fa+1eh;ghfK`sxZgQ5!S!Bg&%c>>nDS@+C6fYmonX{4E(Ma~UawZkg zwLNM*dUEQPYFAfyU0r1cD?qZ!2WKVg$@AAH*&!psFGo0=+ILQuBOLg82ni269Z#gj z)_~emFWQIU!4na0eQf4@(ooTNvYOSYm$dKL z^W!gnbA!LlP9J8tNDIde`MKRmmNc)rt7XAn+M8$5o_gD2(>i9)eZq0Y!>jJms@<6m z7OtZ{yB9^QzM*josqkd}c!RYf4PH97)`X_x6vdHVWLW=}V&oX^lNr*GGSXzk`Q@2g z<%kt;W{T+a5vy0lK>Np`CN<3a=zav^*MWN_&7QQhXKgM5hV0xfZiP}Y=SNS&W$WRw zK>V15g=?RS-}Pb-*pR+9_tzNZ=1JFa;U*5=ahKgN%vkf$(QrKgZ04uND>V2KP#0F~M1@{!G+2_`8fzLRP7GKxCW z61*`fm9^VENErWSr?TgsEqD02wYNOLUs8Y~rCo7?%*4FeX(Bp=NwlP~BQ-FP7P%kM zaN&?w-NLEB1=7n&b!fdsV{tl_Z?HpIXWDIIbg;7ev}LPKuQSiWDN$HG2sYq(5PLi) zBF!+D!^}YY`t}R|x`q-&t|ipay8zT8+mz|$ zNZHMaViWjyY*oE!X<0=T>iEr;KC`1y0kPjWis$@k&%8>{Ow1nIJ6|4@hLuRyrC^>B z#Uecxxmd#t#gbMma8{CqVpb`x1815?l3RKTC(kQdmK2IRD~?x)nJ4 zGAd9{lxHpFacs4PY(fw6Z6N;aC1R2PTS;S>rrk)b7y*a%{Lm>69zethkHq=i@u&%jWaoGMnPhJ_Suk2WsG3_rxgEr_U;#^}TcaQA2 zI?xM2$V~`J2(n)at=*(~7eIArsKU0{Z9mdLKX=4}yq+&2@a=GwEJ6&InawoOB2xU?p;Jmt0DXJ6xpOZp_An(?h6 zj$)YXXA7sz@CM$K!zFo^&85ZZ<328ewtUPx1jD_;^7$lESrMLa#7VCbZ&^FzhJH!u zHcyVSYu@We70Xp?Z|6h|`)2s8X7py=0?1<{;evXTQpTNO!mf)u)q8CGIT89(84ZtS zQhKFRB~uvg7LfpTWHg~f+D7_sj9fotQ>c%PTWm&9*CD%&Eqlo~*h^1pO~Ct%rm1;Y zEwDk4eMwQZiYRT91`9Ga5bJNDXM znYudj?d5qnC;y0rdN?m!*6;<1+*W0oLP>8pXK%<`c@~Ar%TJTHlF_+SN!jo9+CfWL zoLTW|ky$JzqsU;n1a(XGV8fWvRyjS>(QI9HMKC=4G8(?Rz*kPYlf=HAKiv;q<$ikr z2|NFXNO|osC{(jt#{o=^$7{~J2s$+ga?U2h6iak|z{@2_v+mH*}t?UDgs&aS@YyIR#5>hfwBs92CQ{`(SSyoR9jiU z-qW+sEdnedY(K|b`zR)gQk(aA6r1!`HYmYp$gEPEMRsCK^fhcz<1m0kKD_qKb8hsY zx@rI-Qnm3o&}q6oxs*gfoCV0Zs3iwJ+1uly&e~j3;2cij-CM%77d)<9s|HfKyO%OD zF{)M8Jnb>=pLNQRwO6dy&YG}TvY~Q6I_%@ys%xxj#@py7Z=2L9>*kO7gk)ceXdauC zw+*W^aVAl>u01(+JF+}D7jp_%^kV7h1{XsqVGLJjyE~00uLs2kYfmB4N`tJ9>3Ag=cw6iL9@m7Dih|W@*&SJ2(6$ z8ew!e_j=7~Vwqahnx4BH^C0g+*My66p4?dS2rbc?z51@R=OvMAcgT5%QeC0!)X<73YlprnV zT!z$?*2IU-U(a_gv42Sop>bb2^+AF|f0Ll28LIjWGNT`%j%$1vCv7|Z*%lWEUMuRl z?9ghMI&;fuDY5dsJIbeLJJ(i5xHfmAoOd{pXW~k`U3+IsjoD!Vt&M0@%{FKeyB+#1^QKHAZJ zJrVo8-PF^I3;lvmCLQ*1G|iNbc?j?)yCtq>O3ssslUW+8T2cOO>duM$&2w+1#?*li zH2l=>H>q(xH*_j(E?zLzF%AU2_cF+SI5bD2brx3-tJH>-I1}P&-K)8_xqEHkLj?(0 z7pC|App!H1oa3DP*PJRAmrx?lz?q!vD4hd?M{Qmqf>nd}L{q1a9AsEU~2TUvJEZ3=|k zxKp1Tgve-mNho1!X@d0lc++i&ZU}>fpEyB@VVd1X_ppdLYWg|{;Z|P<0m|zq8+kcC z!Y|Hj9qOs5uDPw7H1*yryxK&i_Ag#^Q}@2dFv#86sz+5=e0VthqHO8&ZM*xmk`FiTJ-%4_crlmHZ!@1W`KEWJ-KpM-iH{3UZb3iI;<3w% zQ<1o-@GvrhqTFmWTSZ}uwukdO_aFLh*&o^+M76PgC~3ENWjw%u-{#%vi+4d8G0$Lj zVvI{zTpV{}t7r#hl;yN;`m<}6e7448@3&bJuk~a}7WCHT`|xV|PnZ5_`t=6> z`%?IyyY-J5%bGLF_$r}qZ=k>^m8S?({kpBS0hvh9*-=4dX|JM5ESl!cx{5JeA2Q0v zJgkQ+qM?-wh?L1%{uxn3MtIz0QsAmEIbFg_7x!tV1b3q7!&CQ~qi47eROFV5=93?K zLy0{=Lh#B%K(Rvl!no;Co;p6 ztglX#(pmG~ip4;W2!erEt68_tjx&4=4EL|6$z4xZIb`&ob9!njYQ=X01IW)pDosE9 zIiZR_ zly7cK78I(}P%*zZHingM=yY)8XT*r-dRv8qibRDks}1DWR1K!Fu0bD+Kf^{z<7HqM zYoqhWIiekUAK8+W#f)1@$0EeF*yM!h75xd2D{^AfdEtnIy1{5`~`W(r~^=zpCCQOZ1&TzCmZ<@F?YTuoYpZJk!M|D<- ztjoABN^I7gOs8zFnF(>kdVL~U}|b=vgB?58_WTbkdXSa;$*J^R*tw#sSORM-n%bp0$)BDI_fpO zgD34zg@tGSd0(9DULtjX&)UA&#gk^-twE#KlZZ`YYV&;~a@_e>(F8)as~0GrBUWV3 z%RajtlN=oOb7L+3hQ0kB$Y3zn=gQRAI(bT&XBnGbD5oe0tLJmb3tko`)_ACs$JV0T zu*?+IraFD=tAOw>c}f~JX->05@naX?_V7)11_Y_}uwhlUmeZ!A@UVa^;6+gqrBkb=7ZfhE`V?o zh(=}csJfG@ce|Qeek=8<+YOOt1$!6fhu3Nc1l?Lv2?XvL?hr0~hq#ximu`L}};-+$xG%6A;l8r0uHtT(l zRO^G8lec_>ctxO5c+285RI`K1h>?2;C;VZ73DmP!hjF70JKIP5p6O@dO{b4{KS5RX zQo>nt3kVjxp7?`0$>x}d%#fWBdJkzc=6T1@JhiA3dlq9t3-58#*s#=Vl@cgXp7p6B z$L88+Y3iwpHtJoRNFaXKpiSac=JM~NtV#WT@6jV4|2u3o5x=_zs97d z6td=@(L6KTzjtr%xAoI0*1X)WYZuEewJ+mli+fTXbMUXJIuNCbuUp8*!O;uKggDK- z!>D){6zND%f^9JQWT>9vM~eaO2O$J=JR<=Xi^5IX4*#h2^rWA- zIN}uUGcxPmV$zUnrtf6*D5t}&(90|yOZceds$OTZR_yv-GMfSUDk`o>!BuPaYb1=d zo@TcuI^29(2dpq+Pu?WEwFlWITD0=)xm06;#|b$OAMhXKU%lpwB=VahxRPNq;bhPBjRAn!S%M7_N!(q!m-+1Whu&evM8r`gG( zD_55O=>KIc8ixa%dFGl+VLR60WxuZ4g1h$o+2vI&=e@&uP_NdXnx}C-jPWU5HU!TR zK_-&FH^05ahGNonxh0s*iuvDh94PXerf}8npkh_{_j;-H3vaYlDTgkcSf4VNWFE{+1>B;>K5Co`gj%+T_Zpwy8qbzGop|eaKTIC9^02MssXurg^?wGkFtVe zlot)(Hksi6f7L#tv!Q(z&iJ}^9*4M2u(tQPQ+a<5gr~Uswc(*+!(-Yc+oB}TCUM@m z#_X(b>7?kE-sCYB&yrMgIKwD79-4aB~^^~%l`YgV&b0R!$49@qB%r1nchj2|( z-jKVnyQe~iChR!>@gfUKym;#)YO##>8S2@ zo$KtN8K|&z4igub93@G9Y| z%ROIQJns)Lw&U#D56<&__3?)xg|ja{g7)Nkr?~CNbr>$bNZZ0vx$pU-Wvn_q5WbN- zanguhJFityY-&)J%g!^%Onjh^qGT}nsb0dpB_*Rc_+W1)%l>F1bJy&w_|=+w_JP~E ztLvxj&s2OZ5@?s9s_}3S*TOB&$H(&?yPhm7P)Qq)mV{m|sr636R2RHcLb}cCE#w&E z`nE#nUU~-;i;IUC@#0G@3@UlG9`FXRPGqu6W;5j*@VO6dX}Uygq|(5 z@hJ&PQ;2R{2&HGtWVGHc)^{7Xx|`T%T23V>cwZ}yIZiAG=!alq3{{B3mei=L zcBly%$=%bnU#cI`4SksLVMjU_N02Wbr-2K;E8^R>dVI`$q9mI7;+Q^Z;Dbo=$2aSw z9jN=>3O+}6^cE;SkP~$Ocf#PCJ`eXMy@1CdojT$t^5z7$PhICWuZ50ORu>F6`i5ko%h zQ&bw@goOo#uzUJopKXUY@qC(%4|kl|z-@LXsmNzUs{``e*tyZ!PC60%$q^NE(*fP0 zPyhvwMKnGj5hhcZcU zda`K!T;5WJ`kE73W5?H>3(+P|gIDT%z``8d8=}%$ry>@c(X7jcxNLK{=B@`#A6qlw zP*p7^I>pPu*P}R=U)m#mCnuKW`9sVV>FN(}nnkx&h&5~c4;ml0l%*+q7S(s*VdOiu%j4uhAzj(P| z)Kj1h4Pkv}qRF1u9-~#7FED-J^5lDZd?G5lFS=O#YU?ER-Of20|1KFcKvF1^q8P2+ z3j*I2l4Pyh57PU5L#XM%i*8y_R3+OT{c~~lXOR7STsa!Yk0Cp5{)Yp~IUhv;G_zXQ zKWw(8=+;j+^xtf$K`R`I>9FDdoK}>!C}?-nt57%1(?nIT$t)KO#lV&2IQh&duAJIq zob4b>gXU{U4KSHm2KRci(w}ZK|L^z@wx*_6=pT+Jc1|FUEB*uMf1Ljc2H(B=&-@1n z@Bi^1{#VjZ_^+3{0L0JFd&L};P?S}1ur+pi@|~Od9rY@C#jH`|g@Ay6D*rDM>s8i$ zTSEt9O%oeqTL%%Kgo(8^t*p%xPT)U^zO@B3eLX!XAA6-4%@J(c|fFAL`6z5?p~o-1Ma z^a_K;1>)fXgTSDxY<0Jvb?jeYaQ}*d3*qDjae_Dm?($tha5-K1c@21ZegeAHFn6L= zvUR5Arv*aK#`(nh@_09K_>p`2{Z)R7 zy?vkp{oRFy~#6w2b>Vh@tvZ6FWN#8#58`PXM=9efkb11Mz`> zpu}Bnrf*m>@Xu+tD)iv*LhxPQpUL?DihTPI;g1-!pXmOXefulQAL+N?zoy^v{1nEj zLJ#>H?*1(NHFv+L{1I~t`D=hL?@#fOm#+VYyFUwm&D}35e?-sn{56A^|EC~B75ck> z!`+{Szvk{2l|SNT@BTGLnfoViJf81_(OjD1Xi3uS$PpYjXdbj`_XpCqvA4;^yD^^!q{iYZiZ1`VWiz|AJG^{|DgupP%S`f$6gos>!?TI zhmV~E9WBf0X`Wd5{viEDm%pn0!zK4$ z2SMM<1b*W3TX+QiJHzmg(qDA>tJ*(Yg8w=g`W>~;{S%wt3H^U3nEg@ui#C5%`-e@) zUk63s%eWywvH2aV{&%9G#5)4ME?D=6rw0=MU0f^!cmWKYa53i!kZ;LV^DU+BNt;qg`|J{b#uAt9t(t z@A_NC{{(n_S@GW!uP-b8JK{C>Pl?xjzr=tx`G$f1KbZ6XcKRFN|Njs3pCLS;|IUAg zfO!A!`~Uxq^auah^6N`Jlr{Ko$6vqhdVJ$QfBo8Y`8c_*f(JkW00J(bP<}gktf_xi z((w`S34oevMWT~k7&4TFn&vbfMyH$M6tc0NW`UZ9^4jFX2>`$apT8mRwNvA|>(YPF zKuO*zy45PL7~2tH1H;+b0|D|}4{GZiYmzKD67_|IO+6+HxM$X^My#m}J&+U5RwF&F z!mH0ZJ!Zn*_btur+S=NcIXy4%ur;@Qe+w`OXhYFqMtM0N2ELXH0HAuJd;nn013saO zzXSlT(Gp_-&9CDr0y50so+_vho11riy3=Et2Ea-bemNo)#$!Ap1~4)P=H-0d^7DQR z75j0cpo)#4k1?xj90C9$mqq56StwWF<;%IL8Zgn4nfJ{G4>t8>*3CcumG&HnaedT; z_l+>iGmS%@LzFb0smns1kx?GNRXyx$F?jcl2hj)d@Lz%HDRNe%Hw^QzMHHiPRrcdk zvjFCw6lwARJOG+SgVC>wUjQiMFK>Qn0(|ME*$@6|oJmKhL@g+LVf60KI6cXp?#t*Q zON@+a;!GT_k3O~dv;-1V*b2a}A*@9RjLKwfq@ls$dVG?7Km6|27f+?9GUo*CX52y_ z=8S9@xw+y!M`llFzv5`(_biI61elr{COjeQnE0|e4TnIuQ!?}lrrj>$HHK@pD~M_3 zizpvF2pg-Mf>#ZA=N!-Fd~o^_VVY0Yz8Ct0Y%Qw(`5edH=S!82f=~1+!?NVp@U5R* zmc5H|egyLJ&9ThO3l7c`u6OwK3DLLfLxeZX!^()lRN@6nqrpcZdIjhvB4HsW^1+al z!dE?K_6b^gd`tat6Hw@2sgts7BztC9DI_&6w7#s$#eDt~3`3StM9AW9Z&AXGLcLIx zi;J}REWG5EJ0x=$t3Rt1!!A)gOQsb>Xu&I^KoBLFogte^0TXdY+FJ10%m%%buRN^s z8*)ArQC9QNvgr}jgV!fc|FuJmxG-UWK63nNA}*Je9ioTy5wImda+ zIw_~9vbzp8KFJrMHK%{S5?*xlVMunW=GetW<`a?vjzm`KJ(Y<}%CN;*w9?$yeCo$r z1@~}~oQm9@?1T3`s&R9%uX@W4hr>g=5HnK+?Fm(J&YWYwsH&$NHcwY(T&kYxz2%%4 z_48!#3o)+@X3h-ecQoqaNDrZ((IF>!=TVcy%P~7UGvu5JcTrPn2)ohu*14RNx5m+& z>-JtFgFe@7ao4Fm%|U26G3>@8eMul@#~{?zZ?B@hZcujsqc1JrGH>curC;I4o$*N# z&Zv^vlFSViK}C`%+04;bJUWUq!=|tAgy_KZEhD!pbB9#rk;qyujX0b238!6souZlT z8B)uVrl%Z1=3sVzRIxSS>kh(#Eu5@~ze;trDWj;wX0 zg^dW#sg>;`4;VMx2p?=TQkEfjG~=KbSLqn7v@??di}K%b4sur_IGBGudCkQbV4>J_RXIP%YWzSs#tclUPWn49HM6NG!-eaNJ3+DJV3maF^PGtQAtLg zK(HVJl*yBzs?0JfNhOZai)R#`b`X!H`i6~T`i(V^l=G>Mpx{XFz%^@kRQbVu#qt?| z*cdtmIxL9zu~@()7oFL4x-eQLx?XgGodsS3*b`DPJ@I?1N3WWOvHV`qatER~ve70> zfT4G!^i3ww9fq$jTCCmS=Ipw;x|&_OM`U#~q=-Rj4~Rom11S%G9!>>G)_;o=7r)`( zz7Z7^xJlWHUPInX0(!$1IWHFXGVa++Uj~z9TD_P43nA1uK}rtnmt6%0o6RJyN) z>{7yPmXQo0ZzX|5BS4ANFJ5lZOsCv~4u}fh24o69h#(HNw493t^>b$!Hrtr@O2SoR z0?+_Vz~BXeBEbwc4QnNzmAhKzIEq0&5)tz8s?xYT_G3gQ=2IdVy?NZj`=BiuOIr5_ z;J~!oWj;yEv?cAPD|JZzvTG3bWZ9deK6#{XLW8TZmY4FtmDWoB%RGkt0g3^rSaMJO zjfbSM=I@-MvvX^|wdL(+Zwj+c*3RvH%o_8-zN-i|Dm=GmsJRVI=COGzS~N0PR+VL# zY9PYPhE@>lI@Ce_#0<&@uaLn_8Zw{wmnSf~J2gx!t6Hc~f-$G&gEJ{>e6`OxxMl^J7qUt;N3<~D!FVzP*B9{vQ7K=`1qCQ zV0EbdCyA@1c==GG?kvGh;acYOrTXo+vowK}dCIlT^XajNmcM@x-;4$b-=27;UQ2X! zEzh4P=gr0#fx7hIuJpVj5C9!$Cx%5}{RZ`VB*RAlK%9790!rkDPu%P_fG+V6?e1#{ zNoPUp*0jK2pS?tU;-SI!fkl)Q_{6P|*RMwl(29u{0fW0NgITMOzP?N~h+}DUDdwOU zmkh$@H=3MIF z*15$eIoG-~hnJw1d(;K_*S1ND?W%g=BA$0$ITFjwseBfbSD;WyNvPRlVV||eh~Hiw z^G;SG-9rw1um*2>0_u)CVHPSFj~3NiW-_KwS&y0t^7iZy&kV zD?9pHUOTtKOUGDy*ecQ_nkIaDA@}-&Fchi^C59gQBruI16nq+WgITH0S*pc_APRi+ zP@PT52*mE=6D#}p1mDl!Q$@dbJz_xb(WA|xuXB2dYfrG>aoJdpNSC~l)*5hn6e&v^ zk%ORSm+Qdta`PVO9;vdfXw@HwPh+km4!qObU&}hB-{#?Sgor%-=phqfwe57Y`_r>hui0 z>CM5S8JFi=zAl8nh(TY$K%AW`yBs3@^x$qM#hOdQ7c*VDRKh8sHr31Ll_o996Vl8P z(l|@j3SI~1cq!y#E{s)NG$DF#TNzEWrxP$9C%nL069as~BbsO$YQ$iXt(83#kaZYO zk}Jc1-?C94V|Dw;t5!Ky=cz^c8kJfmjMY%~B~zwmtZO;!iS6xvEU$jXxAkau9br^V z7Vkvfwpu(;8T)9J@XBpmV6)Rk=+nSNj`_PvzM%`?V7G@kyTW{(uA@?7Gb#vS-F=IJ zAM*t^1E5g)%_DvM)rFR*tnJWoRn}eUCDX!9H>BhkEm8X?fZ~yu)_W}j?pMy33K!`; z9m4Uc6EjIK8(z6%mKy}>8*P)c40ATylVS@?HtFwqExtE!4m~(;yorPzI*=}qF6@xT zSCXPQku2_#q&HPNoF0;na{|wA9EW%hxr9t{wUN3u^4H%OH9&F2w0FMWRd-_t!v`{d zL<71;zapbp`T%!%mY9L*IwqdYjqI9!NVb!eRcbMX17^8iO7mmR*#!sEw2G!GQdJkL zP>0P!FWovJ_!nwXzb#VpI>}wqaxOY^E);J%W4-iME>$j=|9E%rqyzNB} zM`&5$pe8to0)6sgu8YX!r&)R;?bNREHyXBisQZt;(JoZawJa+v%%LV(ElnWagYAtw>`WH9a9AkPxrvr4X#h8v$7 zxoA+lMXU`xy6MiTA|MZZ~s0%=Spu&EAq*evzAn@tHZhXsAjOUk;n`ZHrxmD}-M@~}!+s+oms<}QoukahXx zlw?8DD_e?Gyo?b^dUX+w+=zAvmM%iQ+f{F=2g$hW>LqJj-{QvuDF6QF!-$Se%kzCb zcM*&6Xply@`KFI9LfrfYqK)K-1q+lkQpj}*F-MR%;-Bhx3yLb$1sxpW_Q@OEi(p2> z5~026L!n`znk5zUr&-#~7z%(nO4^^x@PIcwGivkF0DmOZ92)6$(=TcJP0BeVb0;A= z((}ve6AMsrs0PYN{oKTFjSy}GDAv@d;PNaJUqV$?Hz9tNJe-UK{QJ zbhP&e*K0Rwh3@86#O99YO9gaukjPj^wqnPUSzk_(Lx!aXVcY?UPsm32N64H6kGDsv z(%j2;C-z)j$V8rpUNdB@X-t|p%)-Ve-nc)Pn$))%Xc`!-dQC{EsjBe%9g+0YPcg3+ zArOd+gufDyUUxIQ_Hqa9dR#qayAFp*XOx*_B4sLd%qw*i%R@}E|7*%bDwbd6E0#y} zJw}C{0zfv%G$XNTcL!=|J7#HH%TE0k?fGe{*ON0d?L?|jA}AEBef2iX%T3Q?P7lsa z4`xjd&dZi}#F7Ly6H9@NjLXV&0N?0~g(2^pzTGZm*!;B(zmt=YYnnRQWb$HrUh5<;-oEN`69R!~5d(1U?3@4q8PWI6x+`f@ z?Ki@naT(+5$z{*X2FKpDup!iXj`{@aEv3=R9;-@T4j@F^v8!akm)#O7gTu@Hp|{jF zqqA79mCDkJi``PU5q8bKkAb7rwvB$A|5Q(0jodg|JbQ6j5VmYSQGl2f=#|F2j&E@T zRhe}bBnxb@uS0i6PEWeO+bLY5D>Iz6m0ORj^V^(V>_YN3paRGsDBI;(34rRz>oF?V zwgdrgO++Za-D{qh64&K%uZ!1-nixyS6rc9Gu6Ak(Qat4Z%mgCttO` zxMUB|z1n&6s8Lxj`?!7^TgLvD85vLzg526`KoOG|JrpdqF6y(m{+^gZm*YN`VY~CS zf~=nKYsb!~-n;eNqHMR5y~Z^jD4@AVunv{jfVluwS zj(iyAW{rUUyEGcvoshs#lMpGNPsdQ=qoVF{xl;#Go6x!symD4V2OiDJ`*xg8#$HRq z%svK*GI6iZyc<7AaXwsVWQ5hu^ajHG(u$<2Zij`gRk&F2^jI1)9iw337!cqONIcNGQ215peMqGmsETcQ7%$xVWgs{sP zq}y@Rfe_D8H&4;_S!ykdnGW?Di@rL}?Oiw`91La+W+=kcRddG#9&z%n*ShJl`Ptd& zQer;m=a;@^ca}_=KWe}9o16W`yY>$L>Nqs?>8dK5Xr4(L;Oi zfyiChEZ?qOH79;^jrFA4j!o5NyB!;T>9<&~rKfA8GsiIdJ;%Sxb6>^1UK1Bg=4Y51 z===aA0bx+^Xi#qLJ=sFfyTSD!Clq-NggM+<;Y&(zw7qRRx#`7uUueiw93kuGPd~ec zTsmwh@>cE=#m)PT4kI|RF~m~9_O5Pz3zjIHG`a* zdu5+lhPpf>5ZlLs@0qr`ZfPYFJv_Mu5X&XY1HKgV2^O;yKe<7IF6TDi*CAU}*ZaiE zN^|PS_DnGllgnu^jIx1s7!C(hGVBMV`0pDf?857Tx(9*BOVlVRMAdWJ5vE4-y5_z5 zR8(7gJxAHkp6PAv1O}4D#QR~twiqJ3-X>0~EHL3()N=DNzn$&pbKVXjN@vKmlImqd zzqv9X=yo)KH~BFp0hXLBKo(EVm*H7LhlpioAP;hY3)mORq|$_P-A7h|^%Y-i6dAf9 zYc?C4lk$SR>>-{lNYhezp%a-y zVR!kix*wms-zFNp5*#F|Rs4a}ydug?nBl~%l*x7<6WMB$@K5)!`tK?KE#qipq^zRT zgra0o?FUS`ri!L=m(A8zEWMNEgO0*`Dh3Ew7pXh{kG=PRYx3$I$CcJW&}v%?YSlhO zGz3XP02hcRKoFEA1VtGkWI!||F@qssEzXKntJOMi@2wSE_g-~ZZME)E_a0TNw*B4l z%p|CNzyJ6BeE+}Sn|>qC*$IdH0IXE=-x46~!{~Wh#NcwjpHEX8!Tpe~y-D6AR5ple#&c_uOmOuVx z>eI>J4V>}gfs{YL%5GY(`SP!VvrkHt2M+CMF)ycS9ZS&ofIe$Gp09shnEvPNfxa1; z{NsgxetU0n)%qW6M@$(kDvR77wypLgk6}YHd*4dmq#E7$N8jGrgI69J|LMX0#fg&_ zR<8&=-Dc~pF&zal-A9~1=CObHc4?0rT_6ijPK+NC*}eXX#jU#s^-GpF*nQ#B)7c$% zpUqQ@m=@`Mwr*qL{wLV^BZ%+&CjQIxq9K=$Fn*_H}4TN zZBB!MSNaU_-cx-fx7zUQXOShHSKgbOcy9o6K#aeXT_FA_ao4ojL*gTPwl6r}ymL&! zn(T&i`}m%D{zK4j=a(xx>(mtKIKUKC$|dP4%u_P z!OlmT_$PPop2*xS^Lqc5Bx%jl;=Zl>|8i*UrXIe$#1pMUmwo^B&U1q=m$qnss>_=5 zPb(L18h)zRz=`ME&N|+=b*sqCAs&l*$t>e}8*44tS2_Rw{rk7yBE7#+vr}wXdhK0Z zW;UuQ3lpitFSH-c{zx{ZN6Z|b`y=Ze8?^Lg^Gy$q)P7kmndFnOG-K=4eM9eco)Tn? zyO#4ZwD9K3nGe>d-jbf*Vwyklr|HwXwLCX?OLMu*hnQ)M_@u!BvLQD`*N>X! z_zv;uF>%)~&nK_Gbvt#*?LH;r7Cl;fQP5Iz{sZJ9$mYy z-gs(7w;?%&;p?khd@+Xw3lPkmjXX>+iCouwNW_&-~IFUIt> z-vpDG-^?SuNpzDLedU5?*Z29(9W$&o5s=dV{bB1zrwsXJM!q)@J33{=gC?IvRPD{3 zX*zIy_pYJyIv%JeA3x;T4PSNpX5P2I+&km<@zt?~u~j2ub0*dn^lEc^#nSc#qfXwL znS0zi;Am-CNZ++5mMyCjUh4Q^nCI_%f}0Bm-KqWYd$Wp~dlko)m^)pqJ>!xvc2vgI zxT$-`w_aSQbFU|%`{!i#y56BrR_-q?J=8-**o>5#R6Hr8OH)_I__?mY=n8d_}tfM*mMg?$Jnd z@Z;7SriDK4{B`K#)gP`pGfGo#-z!}a-}{4y)}lg>S#<{tS=M&q%d&^no9wg`T*Wz^zpixYzKCbydXL0;rM_t-LQboWwCKd%P-D~SB%OpJMw&n)D$$X>CMBU9$Txl7ao+n|6LZwcP)}8evt}Kh6yt)Yo^Xu3Ub1(4AA~PmSCDnc!L- z`GoinS30cI;$^=4tXmB`{PInQ%4wg>*q)WwFDc7hZgI3MDJUI(KQUSUQ8Vv4BWGWk zfBH=A?Mru-*Z!bui@FWo|DfH`nRauV+pUIzK4{ZG9@qGL&DWme2OQPxIW^;2tFX0S z23-&CYVkf^(tn+9dXHWszl^E3?#jI_)k~)3wN2mC?3%#K^R_IfR#1-5rn!C-FKbR6 zzBb3FEXHHq58X2_4ahQ2bX;iGqedn#s zxY2UM=|;mtI((sj*^Rl7SOK(J$_N#ZVyjG)g zH?A*T*`)S^6Q|BU7;)y=#GEN%CRlhEnc_1dxOV6 zd2P4VsW&QhMW*oD-Y&i77C)$cV_e{!oCf>8mroI&{AGOO^x~b*+Ya3=PTadE@2mWE zx4OLO^k{9brimMZQX_}lKGS+jr|V67c&ypWtC;GsauSh#;Qqn(x@ptCjW-r;7;|`< zZ_q+hUfkA=RR?EO-M;|ho${W~UtRSaVw!q$%Ra~ZO>?HUf7LK^ zRNh&y*t>lH#r=wMu6QrAJ}AmC=U0U16U5{eSE6&H8yvpB$DtR7RrzMW#1K9wBLc~W4q_?k8ZF%e&Uh(GmAauDl^~f+p{2~ z@#A5UbLWSJTE8Uf;De`&zQ*W{XSHV{_^9>kXkkU()!G7 zIkSE5Mj1~W&7VHqym|EtuWL`F*Gye|B<}km@aDc{M?abN)46Fsw|%noQQY3nl^-`nB4dL ztzV~ov2kro+```uT%S67+WKqa%tI3cei^u8;o-uRxf-t-GrsG2cICc+KMP8bFatHmz#-h~e)iR5mUG!Fq|~~6u4yfMQB^nTOJ7k=0LX{$$;m-QQo7M?g6c}{B`*1U&c!|oX;V%D7Z zK0h?-hxQh!{KymH%8CgW28K(=M}2U@5p#O%j9V+W&dUh9k$8Wdc0d+U=VyNHvK!jy zU2r8G7qol#nb9NTUq|i~Og}zii*0HTji_AMc280Hyx_?2W1}bS`ysqm%|FAmIYr(M z+Z@l*>0eL%KL5V<(6klJ?~TiwRd{aTzA@KUPCLDKZOfM<(wnMBoXt}k`H{Y(_<1ew zL^td8#k`OsgU`;b6?weuTnm1^%C=+XIebPp{BS(~c)jtRqzxw|POZ4tXW?c z$B2SI?4juS_SgYUH(lKDk^uTGcU(QPq`BtZHxp!gD z$eHa=Wxhy!@nHG*?d$qUFYT5oI^TAuizQ!dJy7_P+SFs&~Sg^({gcW*l}@wml?zdhJj{ z?`isZac9;SSsUa`v6}+V3{0sPzmaJC%h6gH2X!xw~z3024786Z%y9$rCY&osh&JgR- z?Dj3Icb|XYFhpFbeq5)?^kz$@)t|Jc_oM+6J`%mZEVjou=PT#5ZnG5^rLgwJ9o z+4^(14&ogTED zIqUuS=m%dX2~T|jY&j)cEIy%4yv#f0uNN&@BtEn}|3v?k;)gS)f7(<3)AT0uy9!G} zpH|KNDt29rDeCvs!)4i%iwnly^4@L5qpC?rMq=%<0Z(5i zKa;82z1$W!vE;AtSJ|t+?D*0)NH#0&y=&{bL>vsgCGZZZx9fw~-9!!Z7Crg!mf_X7 zU*^6yVNuGQ*u}>h$b26UIFXwX^VO}t5^fgHFUi=pc6*ntu_g5;wdis=x&O9_H;&#| za%jiNziZDqf9I}7GIZY;*$G=FS+?B%G2{5GR;|-J1$wQT|4`EHl+V!d8HYZ8Sg~*1 z(UWT_g%X0`&Vss;@-2}ZvOOl*zXx$W>w(KF5UJ%thc_y`m4su zJ$chrFA5*s8dvX+!85L$%c`2uTsKD3=z!#aXxrYiMorW0ujgEXr(wT;D=nYu??ewDRpJsX-S^v#L5~ZX+Mn+WlVbr;P_| zw|v(9Qt^yBqt>fnS@)h+T13Mq*O`1cg!2{KMYS!v@-++24#}GPu;^KO^Q&DpR$TRoH8+TAynIve_BE!m4kwyc&MGdh z{jlhob-EwQ%L}uDovegZJd$ zGrOO8S+?0yxm}#Qf8C!uG+|y7LN5iDKAhIhd*@!o*8@u`4`nIN1T^p(nG+MRyHlIX z`Qkx`2731`t1~sN?UEAfwIrUl>t7FMXSQ$oQSu2{X2pH4mD8m|dAp}<+E=U4Ys!X4 zJ_}wZeP}r`0FE_rjth?TNdzQ*^bxq~TGut;_oI0ZE-lp5{ zd7s~`m_F*R*TmCajZZaR9u%;r=Tom%>oxMv(!cjstm>st%3ZUGm%huEcl48$t5!Ad znB!I1tjKqAQs2`Lv{`eXdwn5V+Rv*_^7lTo#%}ql;@2;~_uoAzcT(KdT_dF18-E^f z@A8lLJKMZ6Ck^&qNu18EzAbrJ`CFe+t0ls7Uh?88e_qPowdUhH$5wtU{a7lE+_`Z_ zyt>l6=^AzL(OunQ&MO|g{Iy_L=Zn>u72|nDF@K0xG>oqF_0Jpl@Q)UCWKFiOS1jJN z=U~EM{%<1D;74VO)vJASt{1hN&@?i&*}2R`B3pj_pmy`(=Pq@4pBvt<)qU~ns*@ws z_ag+>pYqQSyE~z2+eNc^-_#nivf}!UWgQac>}}b8z@Gg+gKuhmJ|0)M;-{r8_FNGQ zJ~=HiuV}gSSf}K^PS5j2p%iSn&N-WhY~6kL??lH4eO|{-lv6 zC*9{mwW85C$_i!U7TdFbBic@gYC8Cy@P5oq565evHtWi>Kl&fxWhow&mVKeSvb4WX ze%2R;_kY=HU7Fx=w_eLuPv1ND&D&)Y{%i)-7LoiMMadvvnJX zpM7#;T&;Cm8!C=oT>NK)fe*b`rh2Vt|MllSpQ}CN+rQszQjelak8k&1dp2O^qoVuD zhg+_^`s4MOfzQ0c!)}Tjd9?`NF=$Mk5py48nR1^G?%B1<@qCFU&v)XkFK%5r*rV>Y zievYd|4}(5&}(r)qv- zkNovjqiaJNE$g&@TvfjYbrx59SN!hfd#1tu&BBTnL(XK^3fj?YLDR}DXI`#9DlPJ= zPAqD^Xxs5yBRqZ&Z@O11O<%Ki!=&5GyVSP%$jx@IEo(P!Tz68{%QHzna98~vCACWx z$CjL*TW{s$@b11j(#7dP;GA@@icl^Zkfcj;PI9--jpiLp$6VSGzc9 zpJhwM_KjX=#QZ-7-&|i+7W7TqfE}M2)~`Nh^xjhE*`|56Mb|bB|IN!d=+TL!yyp2{ zmW`rDDXUenTc$>NPi%Af>Y&aWZalpC=fzPQy(X!oIoS;r!&W7)E>oP$Y#BcM@=t|D zRi7-f4A`)~dT`f})e@;uJU}`9a`xPl{a*e3@sRJPb$WDhp31Uig<@Rz*R!|s&-N;= z9B6w`=hCo+bsK-PU6m+3Dzy4+3tn?NFKu9hSs^C^`~TT<&FoD_E)OaT|8CX(E8>=> z?R~vJ*e)NE`)zymhvK0n1uoejHqg9oeLKiX#U`l-1y?vFjN=37g4#ZR}|{U!;#Rk7YH z;I#NlZM*hso+Vi-i z^67z_0p6qg=@;((aKG24-(UQF@$YeesxJQg=VzsV=GA}iVd;bC-ObNmZF|)D;{Ef3 zJ-1!_eCO}4o-Js!`ADC%#L6=ECVc{J%LqCu&3QNzZ0n59`^!d+E7fx11Rmy7J`l#ce_tCyLV+lrP=f zH!iP9(U!y0&oBD8$35%GzQP5CbIvX6@hb62%QjV*P*p;^b-miZzi^W0o&(jZ*7d0r z23{Hae8bw(>MMqiZ6Nd{H_Ro*Fm_q2RqgS;N!l-=s*eY((9 zOCYr!KW7KdUmbP!?Aaw}HFX=F&K-Je;Wtm?4gDs+{BiR}hMeNOB0(-(5INAgqTRi; zD+hXZnz!Y?@xr}M(<(QPo>r0CW7w5z{ra3)w&$D41IdcE_i=n8jU4eaujS(JS5-e~ z(uHE7n#+O!tuTi7X`lYi ztnWUQkOv+R-HYQ#PiYOb3OJgoTIiY2-cdEyb+yol+Ive9h;( zMjtbdDg17Pc;~alRqAPfkNEY=2@{{T+-SYk`SA_MUh_{cXKoQK_+)C|28XsEzEj$2 zRj+&Fzj?K1+MH(<7w^q`erxCJW8?0%82-9T`s<3ZeXjak^G;~mcJJKR25mntpW2SX zO~a36m_z|1bH4jL-{C!X|LW7}YZR}>cvY*GUOvBXR;QxpN7{9N)kS&puY=FWU0S}a z=)uipBWK+$T+m;z=)p}NpVe7=x-A$yO8g*aO=64T$FhIY_M2RBDq~X6ivE}F#-C@1 zJx*s`xz*^1$TnoJRPFNv0kr1zz{;;4c}HFftn)gy?>(QDbMN{LpC_a_vP1xKP+wLvm@)9&FBpEn7oLP1wOxw`0M_`Rws&mo=9R(Ri0V$a)Za^Gos-aFG%`) zVwq#HAML#J+hc$IF*0X!U^f5KWQ#cB(k02Ptslv6KCIp8Ysa;2^*_qqU;m`(!czIE z@taCFZ{1;7$lE)0oWjuX_c~R3OyZPyf#g?Bt)yR%ZC zHpDmc!_yylc(nal8{g!M(5A*=X&>*-D#`z2_!-Hheto8&UBBsdi=*#{Ub;2&SY}D4 z{fMpVYST_@ejmO+Yv+mC={f1!GwWQs`>MUqcZ0k}ZQir~J8#91?|$!nQUCXi(9P98 z#aCBqPHa8-yyC$iuYt|ID!f{D)O}E~vjtH#V*U1G-j_Cc+}L-+vL-$?ta91Voz*^{ zdi>@!Ytoc04xiLR*%e3bDb9(9>>tbD-Y>tj+5XA=V;RXEy(`X6I{UriyN{~E!-_4r za|HQ6g!)JadjBJD-trZRz2G)=>2!f8lmuvxcHCIrE>>-WjQ*!?u&gr z*LL;XHB1d_7*VfP0eA`8ue#`OuPlvh(46FM6$L!`?zc!y8)7NKO zi#^-LgS#9FeWw0k=Zl{guLow6Z`rHbxkb!_zlXHbC36b z*n8()@BU9_EPZ&nsB*x`eqK5K98bMNZ%X6_Z^eSlitDWh78xJU)-*$=}te zR%X@BEvG9|hkn#!(V%Z_bM|Lf-`_Uj`s=~nCWI$zJ{DJ8U$kv;^{aNDHOk-8;j4jl zE5wWtj1*Bx!Ty6KMXY1g|x()Sl#__@5tIor89LE=4`UugSP@86PCa_mL(%Kk-O z{NFBFB5u6bCwcA3^x+S;j@xm}d;hk2Ki}xN{c)den+_jR6|WB5yyt8EgZf<*tG^?j zc)$PI@_v;`KOWUiYhe`+s`El||L576_P8;^($8vZI&I&2$Qv%S_})oJWzYYCw- zo9t?X$wq)C%2gYUHo~mOaV()nzTQUU8+2AR3?-?v0c4{Q!=%8f6mZuojnY5(Hi;D}4)L0<=X-3(yg~Y%%z+fQ^b{^;$P%S;5 z&b2zd+F`T{kx-L8MzufL=IlX=nP4TtcBHBen*uOwMiNz^wrlbcLx4Mr84MFBU7+V| zFvf_!ga?TLnQ^F%90IVX$V%GG4y#6o>nMih+JG)0MZlJCb{MsA_~?o?Mh6^0MX&=& zNpupSKr9=erFkHS5%f3~39=xP1X&Uh1DXOTM!VXifx5v=6+z@kz<7`ZNc3j2fJX)} z(ZQhy1)uEBK%&I#px6WAMC1gZTrdx$#VJq>lrq#jdYu{u>$O4YC3H3%g#}12&_;TP z5!VbCRlp1jx(Tq-f*q(e==ETTo3MzHGROdd%GVq69I%Ul7~sCkci0#Vo|DS81tJpQ z1q>vtV9cn#L;(;QgT)93wgpZQcmznmXEB!*1Xn4l-W{ZHRR>niJeP`;Gm$+L{wr* zs=EXc3W6SI0)`SW^W;G5pkx~XgFRV+-V@i5ODZMOOu&+}+6?wxONdCbRjX4wifh6S zC87*AjhRTrCS@QBvR-3>sX84Im6Y5!F0nfqY)WL*73z$Pbqla~uqz|&U|3*w#MUODt+H7) zfSm}w%o!x(v#@d<2BX#)j{*Wr%x47O&ox!zup5jv3C1A*h)iZto>grDmb8seag!XM z);%sURh2AP#zy#+x>719wSw4a$hE;a0NNg|c`16)Nr_68JUUv{Tal6)mz1cAON>d1 zka9D+MWQGG8%L!`Pfkivs#4RE;opcLZgy7;x^zWkT6a|{Oo@t(i;qrGB)XLCio)Yz zTSJ8>Hqf9_K9mr~sw>jL>6S8x2$Q2gXEkUDBsD<({LLmXAw%PgoEp(w4XiT}GF}aX zC<}zN-GIf$iSz^hD<;Yl6ofJTnZY`N`Ql>UkVQxgJ2QFMtpRm<^%~2c~^P*vX{j3BaMC*;#NBJEvd(826SOGSN+MM#U3|%d zMJ+-IB7+cF3BDg$3ZKX#+P1|=IT~PZQwcdZcWWXIbTlR&m6VX2l&DBlrouvv293cE zx*1x3I<*#R3Jd(M1TcI=B4C^AZB{d|ZF6-RHINmO7!Vw-*(3m#x7vie!J;t`x%m4K z&|p%VfI$owLdj8aL?Mb>EYa!;4L}ufB}PnA?4uJv`%Xu-0A9QzdyQ<8w1i|uv?{hw zv|K4yf!+mjY;quzF;{0a7hyuqHH<*Bejrp7uC2_VvGU@AL9c-x=ey>?$t-*qz9J-G zku3qMN33Dobgpv_+(n?ReL;s}rN&1cXd^Oto@Jm_w4NdzA+Sk^Jd4TzT$N+7pLC9w}10+Lo z<=2hpiFu-%nk?W=B#5q1XeB0x(TFo*_B=HfLZoM*xzYegNU!nJELt^OT)4r21oZ|E zn?XEJ03j35UuyxYMi_!snjg->(wI7x3at-OuuUNLVBG064m+}9(5^vd4w+XVrp7iH4^kd%ZK_28SEZbZvkkcu zP|oL(0?lkrMSwRBGE~IjE^Nh_sGS_hf>b~)WZ~GtnQ_!rKjYW+#-T_G#j{ny3$$@<_6vb_88Jl0BTnG1#!#$9J;; zL$i}B;T#?sp6;kJsN}8^>MrMM>r91Yok>pd){;v-ARea@V&`O%JZw6(iBRX-%ti;8 z$t-HnPiXs9ZKWo6TB|~s0k&qLc>vs)pf*b249}S8RDY6tA#PgCU4y|rIn-}7n>l=H zJB3Hqk4u=e1^`ox=!isQq6jh<;hclVqxClr4Or4V0pk){C`e=a6S)r4AcG~C5NVh) zadY#DGLWvJ2Qe<5DAp4qz&FDPAtZz@!$S|28fZU>+RI|p6BsVkvw-g+BbZaHX;Hb7 z0Lq?%(!tS+G{cBL=V8m5$WS(o*gJZz+=nAgwrh z76tPaGmV1PAKWWNk%M8eVj8VuM{2TwG7IJkkyTH&1TeFq8lk3%TK|vy-nRdPj~67Y zz4U)x##{D(f?B#$A|6gy+K=p|=eXP8>=X`v3p$ zpN{{3Vf*(jx77~28SQ;Z z#nKMq_Si^cO$2Z>%c%1r9auJlIa@ONkgO82hPay}bzTi^ag> zNOa7EH3rOy?jNujg2$FHmyOJY?9dts0SfqPfWu@o6c}JVEIMm}0UyA_!+F3N+#`{o zgD{)jYRHAAs=*!zvZ95B*-9U06_~-GH)!xlSRkRcfyEd+__bln0xX)~_6$6_Wb_+V z2aDC5XH^%Fr?X@^__GIq|9rEBJR+tJV{>)nK^|lT;1Ye}l(As3PskJd5`E+;De^>R zUv$t&o~6UZB&wU8>@B0ZD4b#)&;Tlx+^s0E7!7daQEj!VP4*JFa!F96M8yJ%^2oUO zIAvd0>6kcWq9Qewh)GHz2gA(GQll9N&upmMTQg;JFu@2PO==KnPl zM{l?X4HUnO+(zfA3sfqDO_gVIsE{Z}5T!&WkG6IR(I7(L=MSqCujs9a7Ygt~2jKua zQ4Q?LaP$JqVk(P?%A$%*N>w^#fqMpT$U*LO3kAsFXA+~*QljHh-areinOu0%8{pq^ zR7qGn6?p|i1;v20kwJ|iss>owgr8q2zOzB5iOOL^W|Ck1=q4n>!|AsGA>L@_zlnGl zywswzn&9RxT$#Z4LbcJL<y=8rI$@w-iJ(jjj3Ms=Po!p{#jdQ7~$dulk6rx@k*PzjEh00MT`8xcax7NRntDRe#+GRkfK>@YoZFmegOlLfBz}Im zHu!%A{D*-5fFdQ5Jbn({kxWxzVIj~p5|s&P5T?<9da|g%I?`YSZAtiJrb{V#Gv>Kr z4M6#9Mx^2ZKR<~Cl#H^KlVt+M0x)6Q`1x_G8xAjlkYWyp0Z6A910q`jbT}9wrB2+! zT^L}M0P!ym=k^0x3f%({0c9c)Xnr~eyWvFvaYE->3*x}oV@d-Iu(E&*-2&WZ;gU^q z#YuW2*(7&llbp#KU2%+WBx`g>*2pF+%FrsJ3$lbY6UpeItTCC9sv0}M&yO>_0YB7O zg@lM)t4=+@4Lz;dL@GB@D#%<|CKyepwUz*V1fc$$Vj@i8)sW+|8u?qG=uhz_BlY|P}8r0yy51UJZRtkkHKxMZa}q`1UXr93`f6|0a( zD^d^!1%gZnc|dwiHh8>>(nzC9MMG6^14+nBOiD?R$E(P!05y!4oTA{qgPEEGAoHXp zI_GkNzi7!VhPqE07YRRy6ctx;LSjbat|r-6eySnpmyDnu1=s(K6#kmV^Ktm6RA0*F6o4 zj%Y=)A~9N#7!{{T6=D_`DHZaf{>2JK*chz zsDRX@w3H~+j7VOXS0uk`6P%e*`CO((!ycA`ozeQ{qn7bgtotc&^SU|=VJ0UDo_g03K>3gO{xI<&%Bt0mV`o!7oK z5mFoB7d+oc3>k_p)cll+lmv7EA{{WEi<$ay8*5;+7Koq@{wTFft>6TS2Wm+U0Eohh;fTnS288&4|f>xKV6%mHNy-b2rE~+=~6T+!vqAZ**AS8r1AX6go zwZRAQzXYr+12g?0R4B>FmSlmITwta&P(Ts`qq$E{At8uVbdO5}BM+&&48EA31@Ct7 z!SJJCety9a#(LqyS;S9D2?7{y{_WbCNJOgEtUeVo+b5+2+JXStg9BM4!wD)o5fsiX z7x7X~5&$*}?4nQ}Dhs`9gLRcvht~mCICir$ z2+yp5FcKDq-Vj!v5sU&OQo|~IG|$O^lSRlb!^y0?aJL`G6Ga0UYn;3=8BFpbk_Jd7 z^R_1B&?m6~JHM#yf#_5Lx&oPWMd)j|Hl0O{&qVA{Z2HDKLCdZCex!xy8V9qqq#>2o$+T!~&Jm&uAkSmV?R|Oh~ZwF(M_*FePSX zB$=}$HS_szD!8O?R)$WIm0?SLQ{gq1QBK<;{v=h32&Dl@Zox7Q@WSpjH*nP6$UYGK z+r(M}szSPO;-LhcS?McXKz~8*(9L8qN`Sfm%P`K#8lNl?20ZH>ChQ!mR|B=^Utr6F zO@Z4HHwGW2guyHNa2wB076ud-zypex5AV%&Z5vE#De?dTwgj6pm<++xik|)Rb!x57 z>RbedVj@Nz+;Rl}=GpTpbY@ESH{g+GAi5wV_!I&DZ%0TuT?mwM1j!Zko@vT7@hRqT z>8{F)8ON?l5l(n1X^H%Q?>Hwrf_4AQ3hzRqu7)#%lO$4vxMRhwMi;(esMs92{`@!P z7C0gY}R(iK`0S_ARZ1SQ@|;(Y34CBJ8Fn z{4m@#tUAAocwj}%6%TI5)F2}7A|td`qVnLO#%=O)=8+jDe5XeG7nEQMXdJ6U1D$EL zgc6=N*$sB+J&Y7N+{1;h$mk+h1kf-hh_>K=Nq9am+QgCwNnW@mycj$a=-dmunusR7rO>e-stXniG_`20$N`X?4#4DOHmNX7h4HcFEfS&C zxCq-he3u0}pTyFc;N5jmKA4?E=tP=E#wjY8qQWV39^_~sg7OM|yeNDGRgq9Wyw`yY zGwl2UuUzPW&Zhzw;7OH=fIwMwp#7uJ3}+)}PA0Mj4ojg!GbLzWlTN4AX#svJNY&ZU z+74R&5QVu7-I}_Fj^;XjAVRZKeqEqI41qLB+A!`0y3)_E0Iy8Izy~7e#s&tQ7Iy^h zPI&^}qfsdmd&i|DB_=2mm0(`e!&nwr;z)4>^jr`j`=IXu8S3sbRm&o)+G5d>fjC;@ z8!zzqj^dlJX~2>cdC*x&n*o$z))w(7@pP$@rjC zJjsj%5de2hAXzh{KyE{bB@m6?jG@-uXrm+ClioI=vx&jzA}ONn6Hkgh-Xtr=B5X#h zun3|Utj^)e4lf_Il!W7CL>(mh`6u*@j!RJ`3%Tha3EzwM>lO}6pzpNk5!-%xKDjN1 z_>$nNv#!3Nl_v)&oMar%qS)1i-caJhH9VOPWNHb(IFUx_b?PwksKKJegjq0UvDwVjQ^ZMrXiX4cah0MjjVW zZgUb;$D?k?7eYW?$eSUcw`mxzq|=oVS0#jx;Ax6N7Qb%MLG8j>Lc*|%c4S?KFWQ`T z0isodEnf#lEWLJsaa)*mtc|;nrG_%PO-F{nfx$GuYzwcY(esN{S73%gG5if;oj8zy z^H!l6Sj~20NuYb$PzcCq6G#Q<2mzeh1+GMeKou$Tb)=UVyo84XaFEyUaCNBAK7f|M z4{r6?1SlK8&NrLj)B#kK-2fNrI8qAKx_}*gxfnJCa?JzUDHUoywH7eWL$0102{WtIUtqN9C*0(5B(d(K#_ zX25g-ZeM)g&8jQ18lZ}Y`qt*q>kY*sBlJ8(Jwn}`QyXn&LV$KkfJ~b}x(Mkz5t$tY zFoM;>IKY^K(QOPG2q))#ot+dL)Li7;jGn>ZWNINKccyVl4&=&!w<{5Z*{}5TGjMiD zfvuGZTL79=f*cMJ5+A+g@F@9Bi&H98sc8ub@|3>J=^%F5hgTiYy$DsRG9@mtyHLPO zQ6Lv##3Wj3GAu)qAUQ21HLkZprIe?1SD-88c#D8siKC0W15_TI%c4_25%?4nn{rMEwPNZd7ZJzS5RWwpqMYnW5fT9G zLlC+yCM47G3*B|O?9(x*Oqo4>G%HcoHklqEU|;AVadIPILO6H*gy6V`5ZRhL6R)43 zHe#IyPzfB`%&{6=%fOK@rF$$jECLc1a?^w9jdLbT7}fk}T;WV~pS$7*hoN3_gZ!^` z8l9WnbIw4j`)D}Xhv>-K3CMFgI(L7_j=Ig0NvPq}n#Ox;Jz$B{5jdJ{>7#qulU?Be8)t?2&`^`7 zf~PcP5fEvIgSAu#J5q^74MV0t=wrV2z)2*R!${f1H)ZpdcRzwj*?p39?m_yizvF{t;DyE!j9K3L6$~cTj zJ_Bf4LULpr#>9^@9+(4?RH(=B6A4MAAry|1hA07~dx`=z2YLYS$*Ibuex^$eg? zdn<5zW9`G526!Yh(`T)N?r!y#a~Ph6raJuaNaM!_CfSUC6tJGGBfY9Bf^-ia3yK&2}ZA{EimifEVi za!PQ;cWF15B$qt#(emhMHyIGz4R%chIJFN0=hTz~rf|DEw?}twdtmQB=qu7sk&?uq zap7F-xXAQ`_+V#T4CP=Z_D+a*LW3X<4)jQja>l|y4qi%XLYxy81W`C~k#HhSb*d~I zN@2P*vs3HRm39#k=M>i*+|s#l8k>vbl%h%ohM8Qc;9^iv7A9Zl%c+~Pof4ezUCQUeov}GQuz(a^a#Wl=3RtVDE)D9O;+lg?oC}vZ1ydsp z8yBF=P0%%0Lmfjkg?yHRL0Fi<^*DJXeSRD7sA3&f_HbcI0-UdJZif5X!t~T3oT8cy^|t)U>JTx zFbaU*s1*bG2w}-d7?2F+=J-Sv#s`1Fo03ga$xsEW+P-L*rNG@KYLL1C1KhreXz2w1 z%6M=M83z__2t>b7@R%e99Fqj0iE%MF$QS0C0|4oGUmm64M*vIa4pH_yPNhvL`bEY| zR4AcPFiMXDVA5HHoj^2>8?(@Tiklp+~suaFqHBXXA&fc!AVPrXQzW# zCXJ=joj?$W?X-qb*bsmLJ5Gs*9Q6#KJ>fPR+)qJp`c1}5ktdQ?8GZtgq^JZo6YO^x zFBNO_RH(rzFL(@~JmS%|AOgV$@D9})dWR1(9*Zhsay~%j$TpMS$VZY;4W`<$jaEkLx zQQOUb}F3(!Z-sRW;>l5y~s!(5Gw@*k23OFFAIuZWV~F1iEIJlOP>LLl~;M4ps%)tNUkg{(OBOhU~JvYEnU zD$RNYY4!pm$sGA8<8l0SWy~8)(VJ;7dX%xeTQQh=lksRjUKxHu5XN&?#=M~v?1*SH zBTrT`ode@yk-kXIh$I-{V)s8+WEVKVhJJojmFX7}&bCfD02vRS0^zDKgrlp(xPN$L*&b-knW_BhslY^0T z4nW4EH85-FIm1|3WF5GAo2#?g`nq@!gcJ{w@!0!J<>|p>JvEup3S{GMa@aeR%3F6M3GBF1-i%`2kn}eF>hx?iNlys_;f34jeef{Cw1EE9IP|s%CuCj=Q+>wUv6%SA(s-v zY8>nTdRZLrc)9>*5BvXF3GOI{@oLbYVQ-dr;$1Ec)XeTX$PJHI08BAsi3ZrzCJ`B8 zA&loK!meTgKzZ|cZWFC~0)2dfP@zvy*x~J9c*+_E@X<>Y^#qbYKroZC_^71ivdb1f$F5&o-5bzCNIVYX92mu0s zW+Sh912A@Qf!D6h_I!+hZmgkeR%Cv7>nsv#V{|vos?!)O=nGf&A~W<~K$q3v$41~+ z0t(FrEp-Eoykdua!$c;&mn98&2NIYEG&;)pN{DGdkcjdl1R6XH4tVapEtH>i^~+O6 zUKi%xZ$mBvo~Rs^c>s)yRm#59DrKB0u`8vNPtB#kUNo!Tbo-4pUE?2Jil3hWxk~}k z92m4|;9Xq$+ME*!I76dLR-UY@v4AOt6+Z31?up#j&FIP#hd~CJb4L%$JW~Rh9pA2e zHwvIiTncm~HdZ(%DiT{*I2CCPI|!0aq%_ZL&r&ug^kro!SqOHG_ay&t8wR`WVaG8< zmD4`>Ubd5WnX4GlAFTr`Lxag+*YR2X!Ut05z)LXvokvz+J5Nq@Kt8K-95!5-gm-{z zoEKPBoa+5MJB0P~P+0IRjYmKX8%CSd%0u(IP*ZC|5MkS#>pr;Nl?gNXvsZOQUW z_VdH6QAlKy0^X%;Q1U2YB6YIB_j97oa+0d%#WBE|}s0ac#S7?A^`S%BpYKiki* z$QBUB_ORx&^bSprC?kqAgvf}?gFYgFMvWv8Bw3!C%CC_G6s)(BfcNcdCIO?@y_H02 z&$#58Nfcu?-b^ALvr!WX+!${mfg7U+63GAHZ6uK6LyaUTbwftz_k;B!+JOhe9(qEh z)>`Y!?qsFnRcOR&kW2B096o~6_n zrI;_q^Dgvh5sA>+13QLslqUS)bqPu{4AN1dUhwM5=$4wv{BERhh#Qg;Gf7cX26RCt zgP;-uc9jH#!=}#DkqQMViBOu7o|({X`3Ak6e$(n~8qi!)0)Jn@&o4OKxlR21xEvC6 z_)Ibxx2P!3&h1sS07NcyFakED9YVhAOxg&j)3i0zl%0!}#a(SEty;>;Q{I|@yB{_U z#T%UrsFdUR1FKrnKO8Od;T?N07a}(+j&yM31~wI6nWU7*hry8mKjA{a@^h_u{P3Fa z;n2fgvS=tk{5-3vW_+kIFh2SwFQRXB)QpeR1L6m16Nqojdjoxhj_4zF(mZ$reN+KH zJ(k~wj}!&MC%-2GM2O-CH+-ol?JPtaLoWUlVeEySvta^ymO+eZ=I?SkFXYo5?na@O zCmVHef0C>pat?PT!D&8%;C3EE&`krlbT!=+j8yY@Xr(Q}emMlNci|=hbO&QQTfsd? z=EsU-1d*{NO0MT1pavqW4FKre`F0`_pTjHCoqJEo$JlGGeSi{6@X_2+69_G>QZ%}S@kc)i7VIC0-za>H+{DZ4kxI7mj7gQQV?gvm? z^e&MiSWb|*B(5(c7bX&MT_{mc0A}n^k+9sOW1>|lis(3?g_J@b?Hd?|8_BN=yS~W7 zQdm<1IQbF&yIaAjI2Bg_YiJK=$HaGP6m+WvpReKrT<(!8ZY~!jcKf*|IyY!d82`M5 zT`9e5lh??@zrPP$i+)?Dz)#Kq`vV&2k!f-9jC*Fyx{1t!j@6mxFw(yh$E$@}`=7?p zWQEYg6QJ4RmImuc?w#mR1_Hw!b*u@w#}O2H|kZFev+QOI;YJNzrVayc#=Atra=PeKPom)3}gvefE0j$HwnDE0& zgs5Xs5Gb}-ry(@?1!gVbXlE@dCQ8eR%y4&G9qj7Sr>JC;F`F@37*UJWI!^mB@I%R# z6juT)hRNuf&SxF}*1FMr(f#%g9I-czm~%5%=BPz>87jt7Lm_U^-JSKo(M&E$p!yJc_9lK|h?sqp3`lM3HpDjoeb zjG!NpHfElg>d0!Uk5id0rBKw!y0YKcEFx_d#yT=XpUFZOnOWbcLicjq^Wo$t0)zax zb@vd`{ptEykvC=H!eOBiBG!2kNz7@p`hO*}e5cZ3^qmNV2>}sIv-3H%(i=DzDbR=e z3>tV>!g)o8*59s+G4kl!EjnwZ?LH$5!3~LbTm$l)SVwlpo2ujbNd|5KZqg|NVj_ZT zsgw~l5oUe9;SJ>3SUg^V+JFMHf#r~M1;{TcptwR*1SRz4YrD>*g`d6#Gcc3g26u5B zHXWbN2vi)ttYX8FQ^|-x>Jlo}AO38b+DO35GBzA=5g8z2K5k*4(hyH@_)||5jO3Hx z+_)jwl0_MWBq^qkpdKP`?a&&MoyrtTxO6NJ-VX=F3JsV(`U@lgUdIk2;J*k?K7{em zC2Xj!^k!0vp@%RY&q=|tA+QA23rCsKB|0fg76kLce&bMJ^TvEHg2}+*l>=a90J6Y( zvuO29Zt%j%jNjSVHWspti)-Vc(vzX9n1&H9g6pnV-5_xVfv8FTIk&yST;z)T&P}Hz z)6I1;9uKt@)kbvNz&0V|jQ0p^OJZtVII8z_MOpZ-T?2EU#NDRCO!?G9{ zI*2`|Aq8!I&ZuH8q@gVE&KhTMAoIm}q_EnVqC;9laP*KP2#pw+ofJwmP^i&D)y!RG z;i!T6oJJ9Q*fTGc!mYfC)XK=7HJFyB!274$t4GVToi;X)Bxc$g6a9G)# z1pu0KESh^KknAcTuq0EwU3nUc_D;TsVu7$ zeRCECw8MTKHX17o|uO3+<~b9#-$@;RjOGr@KBJrB)FYdWB}HZ zny{fyvJ&Vkx`aQRqf$$3y$LY$z#|8{5KTb2@JqBB9J-VzPE1my!vlw~|7X6P|9`{p z9l!rw^KIaFDC5oF{|*Z65Gp04q0;stAsst*=qM$Efg_~gn~pH?7Nl_k!Gt_r*;&- z;|HNz^W4Nyh~T>mqrm4GZBVqqO3pP^;;c~-S0-=MMad3bQVDKj2c zc(^$YB|cQ*NJpc))) zU?BY+aiOvj$Q>6Lqs==%%FeMLNobea(N*OwS zGW1zEUO5l8Uk2Q3D+Y^8EGv8>i^nt+zI79YuE)a}8SUHYP@rx&8{-|>%p5YWK+Ix7 z3Y(WrA4}3dqmN_s!V++9*AjU40t?!VEf@fXtc4J1bGRak;Y;{p97foRBe@sBXyV2aiYmJbZ~)~} z<>|Eaw@s)jKteD|dXbJPj>QM4pwXZ)0ArB)KtEVHs7-lL;Pf`gc_0xFD+}5Rb{YH@ zB^c-i4IoX0>xZ1%bVj{U%x$lj)Rd$oWrRcmWD-epsv5->);O$I&@YrBM=2UO%F`3# z#bPlGX>Z6g!J0?Q)1!5T28|A{8{mguL3MGsVFT5H(2GNjKAi<)DF=&-3!rg|!VH6I zqkCr}k-?0jL*o|A)d95vW!0B84A8|cfF?o&%JAJ>Q6Ybb6 zJ!p1V33HK&06A@}tVlB=7a=q`;s&Kc?Njwu6x*$8jU9c3z`1(J!<4ESc3uG;TCDGn z83ixm+(E&FkX>DO^<`DqohWkKj>p5B2^^@zVx?z7lNo9|v;yQi^&VLRx58V4SaFI8 z{+C223g|SjECS_&vOs6pEe^X4m5E(+aRIRTaEMZ;sEbZv771F0S>r~?!26P}4mCLzGoLz1c@M<)@1t`-20 zRE$9sf~~{^20xfeIXEFtw*AgKRCq{08y|Nn_!Yl0mP zgJY=TWe8aCNyX9*;`Vse!?FY5G$3PwC7`cC%6Oa|9RDaGA?@5b6z?6ySiz)`YS!C} z;D=6Q;77^ON6zqu5WQ!?W(d6MVJ;h)3)ylt68b;vy=!b^S(+HuyV=00n{1G=|14s| zxXo6#NVO=5Dpl2t)T$;+VpVZk6161NRW+&_7DZl3oT5k$FI83QDy?C_>v-3WVeb!P zAAqrN>=<6afj3TqATjd8yG}N736Xs7Fw7CTqNLnIxU;&7-JMp*`7o(N-gKI-IqjP?oWWJxz3 zu)-eDjnCm}4;jH@?1M_EiLBH5#@0<1>5_*e=&L?gPcroyrz^Sb##`tu%JZ^?G=>S_?~%ez#O> zR5tduO0{rzueMvQm!WWmwY%W!+&FwGjcqEsaA>40ZXWedNr^d>9+7SN6y%I-NEqhLc39I;Nx$2K;ifTCbQQH}-0qmD&VaB#PqjWIAvs6>V`D z)x_2m%W!D8Zkd^RB@IAPT>jj2)be>QG~Bby<-{e|B;u%Ph+y9Ci(Dca_{QFQlyth2e3Fwi`mXGK7;-KO$~Po_2j^MhWYz$z~VM z!gZg>S#_SIU?ex1K~$)sZ`S18yICsg>tfbDx6i$ejGpU&!QNoB5qfw zbe6w3GjkB*fBX0kiX6v~<>KOz;WJ-X6?c}9t|yy)mp6kRI1sESdyN!kf3^n zNX303aEws^G;3wE-d{6KR(PhYTuu{t7DdCO0bbZ7=scT(&hXihHg`Fb72ml?>xiH@j^C#iWm6aeV!stOZv6O}H1d^0sR34VJC?qnG3zU&Yiu0Rp z%mq8u+IDHHsqK`n256bq3d2fm0YsX;9XFK&!E`o=4Itv+>am4JVR)4+g&JTsNh-RP z0hb0HS=CcmEcBk80&N3~59NmSF=4oC;bbN7*zroB3*TIn38V=hyY9P81fd^;*ZH*l zjHgY(wj-y;?#A7NZm&B&n<9mJFS;04?ny4jgmEY_Qj>$;z=}~Jm8AS-; zOh)>J!9hGgna)XQY_JtEQViBD2oHI-y}EEc#mbzLV0B%K30HH5rMlok7jtm5;ap5- zaKXtlQ=Td@Q*?yaGjpP_)n&xIx(FMU=Wq;N#3Lx2Nu@oxV_jLvG(7U$6hTrbSXvh~ zFRIdHd&70Si2Rbw?+YKn&D|#Yqx-VROAv+=k;++}fwTlzwCh)p0!>6jpWT^BA`o)& zK!^t+nGeP+k$q*__J<)-rky()0yU5@bI!XpHYm5oPR;;GMkn)y2+CFmDFdN+2GwY~ z34|bZ+*TjgZYW#XZkmUoxBkIMkUfpeOEZ5ROXzTozs(( zGf|Y2qy9SDOIr_*M)1|c;6d*c{uv#u!|smlrm+66;n5s6$_`a^=yk0}adx>i>qMM+ zNLmgX)vanxI3z}ajfc4ZHqJ@OT-{S|8lhJ2Me8h{NK9DWaj4CpLzfJyK|KV<5BPw< zXK2#qIfuqE>`_faUml9INgM~2_nj6oY?9eOzQ43~y>K!sdk;1d1D7=rn+$*j3y4j~ zz!eQVIg-h57?{w`h^Zmi=m3!b^Zf5PCI`N!)3|)S0RKbXNSjKi{PPd>$kEd|43bi%!?^66_sYcxSx5XHmo(5D|tHDb9ZX06Xe&6t$QLZ+N9lLg7GU7TlV z*>Evjm_udI7(d{@ML1E;Kh7dFr_?1M7lbw_SyF!RMJ}AZQ@&T( zfssek-F{{v^8{67GBErkY-VN|VMZWBMu`ftBfxOWe)?%&Aj(o3ZJN^;C$B=fe1PQ3 z^9ISaP$oy?R93#k%ef!`n-$~>>Me`?3#yJS4GXFOlT_jJNq9a>jbb*5tjO7!nGbi? zCjS#JKJG7u&})nan4O3yJUz&=6Dv);Fc-t&l|Br!%@U#3%cUa&gcSLqaL}(LGz9R_ z2OLS@nyM$mlp)J|%o4_|GMSkXI=gY0$z`m&IcS?hng^i}VF_bN$g{B1X(iz3ylKo%r^V}f=ud{hB`YmP!y=y-G|--j* z%sq&NO<)vUg9DE+(km(_!`{@B=1FMc;L*wbMQR4DhhogVI7Z39YqxP5Xn{udQ3N!7S>_Jd{E-gCT_+Vg4c;7?>;B$Dp}@ z`*6Y_n$d-U=fl%}o8Ae?ifr~IKEkTtdgRJ*?aLO??j71+eH~`d0@>|Pmc=ZkmA%hR z%4k+Dj_5mk9JM;p$jySGOr#g#Wh4B1G(MK-dP&Z9d8Bp2&j<;>*5SWT!-Ca>Fd454 zu4MRe|1lfTJ6E|UCoesYlanGYc(uKq%-1{4MMGq?(OzgkA4Mp9-bY11W61h_E{!%yJ9#kFJDv@I;IFCMK8*IvSRNH1OxIHFAw znTmuB&PQQ=&})slaadRiXL0!!R{i7Xc{GA4k_F($qgJPjEe8?3xAq*c3M$cedfg%p5neh=m^|M4c&X;f^ z$)3g}D+`nN!+M2914!H4EO*7#=Rqi|EG zq0oaLm4&+nEiG*LNG=CSV@P7>ooB0ydEVz_5(o5*z>4}P>z+S`)hSPJ(F&Pkni$jM z7?tMb5JpcP`zvZDNPL1e1r(*-8?-TlEqX*+2nQ_oj}<2uRjCCccXd$z8??g3V&zma z3bbC3O9UADP``cFf(*kt#IkK4+(Q$JN<<1Rq)tj}-Qhf;jpMP(kReD@&<2WS(%aB1 zps>VX7>)9%9|QxAwO>MRPGt|Oyz^zHR^8by?=(m?q18X*9w)jZ&`Tg9`_T44Mv6Jg zQob0W`2R?{!yu6re7KW*3yqRE%yI%KIpi^DcWEzTN(@2?4@vFfEIe*KN0o~xCpwR` z=0#m5X*FFKp%gcf_B}~1big?S*R-=Pi10buv{ED_**VOHS7~5mW{PNdLz=)8)|!y) zz%W*{u!v~tGDe=e>7rxpnz}Yo$rjd>xl+15Q6@H}+SQCiW%JYv8Pn=g#*8NFuV0%6 zq^x*pCkL%JVh)BqCuDo(P+CYLz81OYhS19)8&5Nkgy~ea^n}`U`a&tQChdztQDU?y z4PZ#VhJAT`cBVMXw@*+`M0^Z8pg~aa{`0aIO1i0J^T!++5SGl!8x} zfQ*B;ZYlvcHPj)QY8Ka=p=@|+b`}MJvIvt&lw0O)Sg)=tSLSk~PQ6=2>aQ(8R z+bDW5>XL;Qm_Fmv!^7^&JZV-@i%6-tRxcieYkw|(9>Xo!DrxVmMS7) zaC|l}%>mO<(=cTOBq4gQR(1NvNK$2*gP|ux${@mq0QTjeK)_`C+5HgOV2H zAD1mJ7TK3zpzStN{=(yx{X#4KU$Hzq?}kjVc}i(6iiYh{%V?=kc2L$Z&DSxUO!b{U ztx9sYE#l{9O;H|!bFhvPYxenx;M_t)HoYZ|KW zIA_N%tBZ4;WK~u_8=Rs>X4_l{6EXu{?v-s!%Ef%CmqGJcv-}VrS?ODAk>sTC3XTNvS%jh1U?0u&fnoh3 zOlIU!sFSJ5G&3QfIo`?JCsIO(i? zy5Fd8RChUR`T|HpA~hIeZ?j~&CO5+n%Pz3V`8E6_Go&wqn1xdziqYJNZ-73!N8%3; z2rL7|02-1o@h^sU@im^p_yv&4U1~kji3~Qkwxrv7@d>c%!$&OVP!yj4t3TS_Yg8Cf zd;?TF?^bTRVdk$ksm1t9Kz0;F;xrVb0T8r;PXPRY@NT_P-Q6TkBrQ!j6pza$8M76XaG7)%hU3C*?=Y{?Aw?MbMODc!TXFooq(vS}DS&4wrp z=tH$el8gy+|504gy!19C2PLiGt zSJK?z<=ilz2OP+sQf0 z09tr9M+&5Hpig*7~z#(~J5T6L!tukO2*5<99Cga0j2sKQa4NVnJwU20+)$mS94pI*o za3Af^(Fy++13W`k;NV6e6_D_|RSmvdMd(iDE*|bB*A@Wc`8J+n_!D5e_7FA09ILic zDo_k|$_?xkdeXB1I^H1cfE12rTj-DRq)3wY>K9y^b@uR94Jyav?VUzFK zWM?(Q7^~qDf{JY#DnrGfbr4&tjTz=xy~5}a$G9t%3)5IO4ReiZwVUm6lkfH9w}kR7 zoBUQ#zOzyR2{&$jEPyZpz^XnJtAiZZi(2@=)9eh!GTs0&&JRxqW0jf$MWOjIl2G_8 z3SnLYN`Yc<(Cv#F;IATU5fXs42U)AI)$6um1?8ZOYY$I#3HiAX+1|XOdpT)q^%Ps0qkz52QFntycZB_=$P%%(?yG8yY zh}P6C>JY`S-eEi-%~cU^!E7v{f#f0zFyXScUlKV12W(X9lSNhm0XKK27N8j5+b>7( z7eJoDpXQK2{8`#(#jnvq+c(@mTNs#EY~oFb-RrqGbS2?- zFV#%j*Kc&~GB(%9g_Lp_P~W?IxAL%DUo}2ijGJCcL)%>=NqPs~7s=HyMGsgij#ygA z=qnK4@Zp;T2R_#h<;3f>FVU>>iASa<05)g%NM-Yzw)QWIY^J$&LjS2SP(~3<_m-ZSvxpw0OY|rDrv(qRN<2`BaJC9#Q(R zd(;mvwz+1xRqf=GgoSsjt5FZ+$7OrL_^jqn_atz=Qqv4aKsn{6RUVN%>aPX=!ZjH zsj*kLwfci=SFUc!P$I|G)X{$Rye!KDDg)Pg!JFmaqqrKlQ|IdBu0B~NBb~u1dW!7| zNf@kHRi2pUV8WKZyPU|;A zSiGMdjdj9VTn1)C>7NtD?~chbdBjHjg&1&#xjP&T*g-ZaxnT(9_=N^sI7zZjrW2uT2_0K-x$VYD{P|eg-rC1TWp6VZChe*)g0YFWmjXs56UVh-3gBGgUPaX;mxQ z!l5Pnh^zyWwB%3-Tt+9u@fjHrY*S4hqd;|^BnX*fVwi>1Xrr+{OG0}hb4%1M^n2o4 z6+_4JBAyEpZp6_k-6{@o$06UUEl-C|COtxf?Bbg8X%3#DnXy-%ho|9qHh}x%o!tKCh(;gdk0XGc(MZL=sgB zycf*vt4STljzb+m7g9%MEFX2X1J;pacy85HThAEtj-nU7 z4qvpxe2?=(#T%fJN`fG}rFuP+N&-99g(OgkA)N#o1H6z#{fo+OI*FIe#$*x?nT<3O zTp1UT;L1oLK}sDLksxi7R1$K!c?v5vjsYxJ_$ho4d-O%QJmsEj&O-5NyB$FhqU9g7vf->*q}lK^ZXHEpLZL}w zMNu*wkjKZ}!?6l=qPPv!RS1a&d@ZlJbuu$!a~LXXq#~MYG=DUd`G5dUb@Pshg@gYn6Y7}4*YrsLD} zK>W~bg803o3G@k_=o7lw9!#K51<0ted=WlP6ofCl#6TC4{BXs;x~4R+)MhB5q_S!r z>^%OkuZcb&>`q8^WucnLv1u)=$K#sC#+rw*g#}VJMO%xjtKljfdBGK$`mxuy3hW5rl=SOXwa17aE7Lz8tcx6Fy*!7QQr+Js@D%W_Q~gY?!c zn-G4;WmJQECe-s?bWs~AS9F8WN5ZPUFti&_6ZBL-qN!C?=w2NJhMVZs5ca!xNq{+4YK5IhwfO+5p ziuF$#E|6-QtZIm_FmxKBw{KFS$257gQkRTAhlk$78{dCIJl|VAo1wHW+$o7!PYx(UFV3 z=1x9NBKK@+l4ojaNRL%fHs5HN6ulN2_DmC|Uf0IPeXYW=i?jIJeJaCb%&;&hq`A}Y z!l;367%EYwXEkny8N7zsQ`Ib@ansHk@Bmqg_QKrad1c*H*ftf3Xj6OoG&CMq=?2EC zAf2JUd^IHksK!j2E3yvR3d;I|xFPPCHe}QZUs1wzokc6Hyu#4NV?=z$w3BNV?rGw3 zgKWU)$`I+@YYg)G?7<83b_rmtz}busdk%!Bl99izl9~4 zlLzP5l+7?D6A!xY{RT&~IA-AVB_w`Qr#<695{S*JOdN39RpogtFwFR`$^hQrv0ZgY zAwRKVbp(dYSQIwZu^7TwWhQquRG%~(>u+70Vp@5eJQKM{YND)W$YhabvsL36j68{v z?6={@i^OaEd^oB#Xbs7$A(K<>ne@CeDUl7wOxN?q8;~I8TtI&#naw!4qnV<0!bHHj zuJ(*os>7}&96>G$yKR(za8FrurcNHP#B;V6-8en_6B-B}5>uY*0*7_lcT6fy(rJaA zfhS%PSP0kcoyzMljj-Y8Vgh*+D+o?nU9w;ojq+{*gv$vsz$8sgbz|}^*YBX$d{}{X z@)&PsPU9$}62cV60w^(?m=&gzT4&NIB72r=p+oRNFJ{Y>v;kSja1FzhMm*v0mtPVl z_zW#6n$YZ7aziLc={CZ7NJ!$S8Pbf^*@lUR4N#;Wh&}HzefkSM043O0L;RQE;$t-+ zx%E|Y#4lzs`dAGDXM!^!n1d0pCR3H8GhrGK=EV$I6inWc37{_+p<(Ax zr-p!)n8PM^Y#_%rZfv2d#W2}TSHncd^|h)8$?gbYTK~5sxK|yi7qSk_r4)h-IP2>r-dMXsYv}{b-TT#@M|^c9F!)}@*fD52#GW&xaL;dz zDlKG2Nl*^W8XUBJaYu?#&ytSV5#i_&BZx)}CKsKO28tXlvShx(;;6xN&L}d6jWdL- z9fq0I-Ek00&S0?yhnd)66-S0S6r5pUrX0rhFtFRv+Ta+;+zxbA~aaA6k?_?7Bj-Po0qcU`jl$Eq-KxPN`&#&_ng zFWkJILkYZlJ9{ig2TKDQ@DoNoTZXYfvZhx>F}@dF*e$if_$(erCn5O@4zsvM)z9KD zLs)t68DX5G1?T{M?zY*+Yp}3WEkDFZgw-Dd|K`*B|Mp0{PMybO|KCeDuNMkoVWn{6 z`t@74Zr&<{OUvjk`n~_}ck%n^Lt!E9qx@VxK8Al_l=+-HhZ{S!dWzTQ<)w?fK6`yd z7s9^0XIYe`i~iIE5h277hxWGY(Ps__!O5TBA1niNn_OR=0;UOo$@Fz*sFBpN{(E z{TW>^h&RH8AYu1mJ(D#1knz}&u<(?cS0-RS;aHZ8T|6Ckd+{P;h(9Ppa5QQSkGt(S z6L@Tztk1kkQaTs20tuT3Vq#6EmGm0-EA{%LdZWC(Ua+xsOcJ*Vr^D)lGG6eCd))NY zNnA;9v%1r0mNqw~7C1SNa|wBo0>dH*Pw{Yy+r_`@OLp=kMi8{xq5Bm&amVY3_;iSz zM4eo)Roc0?z7cF~U~RyM;1R(g1A~C1S+cp{RiIwVXNu$iFE~dA$#|xm*+a4g(5UWK z;o$lxzgel#Y=F`UY{pmOox+iBWFb!I@^%)A7b+J!A>r!MK+ zB&4S#6Cxs>a%wKqOqQZ3kkfE(@O4ASQCzBiDA>7MuT`rJC<$FQW@dQYX2N_P1uqO5 zVZIB|1jrBzbk}kl`J_@a>v)GH1qq>eRC;tniFaQ6p`12^qs0bWFyUrxR`(jadku2d zR|ua3*O(MiU^|bF={m<&9nf|fEn~38QtZst%;$W2rS6wMlo?DSVK{UYcdx|WHM+w! z(2_I&iSHcth8;3d@4?`UVT;Wrx{VSM^cT*Lx}30VoqWp_WW*>XX&S6; zStG#JD{H3xSUky}X9CfoC2EGQ!YpJQxN8ZvDma1^3x!#&?$qHrT`Q`(OtUgK+Gw=(vc!^ zM!Vx{jl!3QVLn7(`APvj7v>WEOlyTiFUKRGtH(L?JNZ4ENmLwjDqc&eQRd`ACLS*I z^r9FRtB2kHjTM2Cu>^HS$iHh4I=#XyuGwq1A}1D|$(b1dv2Ln$2xfe}5W#jGMTSY! zkVH=u+O1o1x}~OLg-5Oe*x8UskClY~?=t6q*XF{sd0cS*U%Ih!D{=lWTz`N5 ze;2KKNVrf9XH` ztH1d#f9C5q^?&n!z5CA|{pz1D{buGjGynUa{i8dX@qaN>{+U;Q?tlEL)o=gDzqUR4 zSIqoc-l* z{r+G4{onf+i~r5<{qnDW`PcrZ#?ycB*Z!kl{4?7({^>vb_sQ@65C2#Bub+SG(ZBr%ohN_qZ@l>9f9~)8&Y%Bh zf9EfL^_PF~=l=GMfA{zP=l0z%e!KJAkALG^U(J>O^{THwO?Em?f|Is(MJ6vx3i)s9ld0aI9mlF4XOE+)5AOG*< zhbP>HmnXgV>*r7A?~>!6_H~!dWAgYfEUhfvaL50R8%yuU|GW5o_BjlG`JlF*DJ(2y z;Mm(9pz(|K%wFSe{@a<)ZwH@!xLMt3JlZYm6ANF%h8gND%L|=xCj)pYT9I4^lDA)TJ)6FS{Xr)(fY=KSYROoGoHyywP;y$J0zr}Jbr;X$>zO;P_Oqzp$%M~a zy;BI+<>@}Nm_$~Qn-RNPgPKw)`==+Z)fM1$6s<0Y!_(De9|?Mi*f<&uPKPSxV(0Ya zc`U++ZeJ2w>gHNa`iil4SIJhKg&gE_c3Olhcz;AgH zr`NB_>5AgW=(RJB?z|bOdG+m|nSZq&Xv3*q*Z%tWg%N~waCULZK zRgP}xN}J5mbq`D5p2X6(ugcQRw03kt(+tyFOA}Z;T=GqJ%M&?Ww&t^2mmIF>n_>rO zUeNo#X0BmQ7AC!-lfmc=xxaP&)=J^q%hsSCwvM7EiG{~#svxtn^c`9V=;CYn=5k?W z<*Fmj)4#7zD)aR>F7xt~BX1?iSz!`qg*WDGY1$EZBgxwGB-WPSn6<)H+t)K$tW09H z{l=``n6iCuUXrtwH|Fg6+ndf-mL{-zxa4JZWg@F9CacRg-okXY{LZ;v`H@d&H!fG^ z_M4aa`n0>RrOUCl^5(1+-dcaZwKRd%!zGv1i9CMW+9_Ut!)hiaz zZRy0oD@@|4@FqOnoOa17Bo>0@NlY!j2~)SOI(l!pJg!XQvHd3ft}tz5u3U>nCc}EcnzlZtm^TYSU z|0n7<#rS8l^@~@}1IELxTel{Re+U#-V9CF6^TsWh3ziBuSFXeOzwyC4`2B>B|Eb&m zbQCSL+E>csg89F2>&8uY{$IKE{{8oz{8AOVE~9MakSJWgNF8h%?W~}*(X8xL8rgmB zp|U@cnS&?u;eKIZ3I80A$HRDaaq-2A7Yl=7)X$#`y9bJcWnp2O z(nn7g*e@)RhI9UaWR0cA9=4L1=W}X|(#3h|qhbC5N`L1ckT5Z1bF$Lx9(JO`>^=~$ zSGLMKjb?3ct6ayDI-uM_j9iVRQSY@Q1UmF36Lzh?c>_MIwP`zYV7Jk0K&oRKIoWU5g1 zcA+9`W!b{xQ530GVzcn;=qKaM1)la93{_okR_cP~EOVt4ft&u2}A=vu$&%A}yMr zT^6<)hi`$*6s6c+r)0Z)k!pS*1!ARg31yayiL|BKr{ti2C)T(ayOFB4xQVM8J6zxV zT@7^uGbVE^@LA?K34FsV{@Qx;vpDbm+~s=nA@-?gz@8moprnypGc)%!sI&LxfM#G z91J-wQ?_+64=2ocH_7(9qZ@T%Bp&t8g8NQPC-}Cmn>T7As9=7;g-}k2y)DAEf3(oN zR^u76I3;I9c~~j9$Mx#c2AWl{%SN2RcL;)1O9RG;#Gj7Cq!oC?rm#}>?yC9=(4}#= zdU6}aoB&CpYon@cp;vtpcyeRx1jSWoa=A)4mpQ)?+j!ZJA;txafi4E#Dbtga6ZOT0 zI!wn@;`k-st=Xe=oCLlp8`T65zu;_?vUoFBGdLZr+DT)M@@!T0$J5TPis8;Vho~9! za+(6nUz7oX<0As*gm&tzBSFD#?&5bujnJ%g)@*nToX1mf@?we{z2rFLn;lZftjy!+ zZ>x~EpSt8BaBr&?osfa|*P+swXRc5?a;zOXwi^IFX10azmp2r1+9b$%R)reQfMAxO ziZjX3*o1APsRb)-HR$Or9i*?euTs^IImXFF)DJk??$5Sl)el?R?&MEz*6x8e{7kXN z$K8lC8P0VVMVBh?XS=M=S@6*!HlamKj%yrJH?|lN^XSnP;R?`><{tmpftZ!^QZC%) zs6BaB(Cz7m+>tDB3&^IizxYkuA3`%fVpoB#OON@Gh6FC8HHy6*{+^0~br?g%kiFY~cG&&a@<~gNt$eL3&r0Pia@X#tt)gGWdcCTkID8 z8JxV5ZYG|JJ>ZUIpFxLeg~|jv@St+8msd6ZT)$~8NlY|wCMQqPMe1{ zW1w&U>z7!v$O%DdNF)1Hf|K3X=W`E0UZ=)0Jt3lp3p;h7$HfOtfUAy!57jVZffIV0 z-%FOA8$+wAVW_Qj{_tnBcPG0ygzquW8LkwNSBJRYsMoGcVH>=5{LS?{v2;bz#zug$ z&`cMpb@VfJUm$-Ya#UzYH_5b?!6*heYk2MthDRgwfo5eZZ3#pU_8QZX} zXPO>MA)LcDK(~0tGwghLPP7%6!A7Qx)Pz;DZAk1+eJpnwbJra*AJF8H3{FbL!dueN zp=W(v4}P#XK|BIRABUL>xAF-E_6VMZxcTRB3T|dWi|c=;9IY1+%mwQUWN-5laaeK#|Oz_2Hi*>PGqLMnVXUHdY9Pri^45 zLm4D+0Fol3*g9t5(YzKs=O8c7C`QV9>a9iu7Fb$YC1hsJbKSI(V`RinpmgqM^to~KujhQ5 zC~4SC5SQhyBd!)>q^(sQ`u^qOL|2irl!{u2T;Cy+9&B+JuPlOMQ9|kWxRyqToZpz2 zsQ+{eoiSQXfnNT^WU)a*zV*I*{J1@SoDB{K+4|k*gEkh9-k9xA;|7*8{o%~1mhHPd zz(#*KlDU*!!g{FsD>_7Ja6sq6fktJ3begzn4uWjA^cZBnh9l~Z3I`NW&#MISS1)`j z8en12aHNir1ZKPdYjfG&biBYW17=aym5(@W6KIiS<-}|pVdDvryb@}iMc`TC+vYPc zzf%{&lP3MxJXI6!49@e#tka&8G^jS0NoUWTw#eg`W$+g3p_P_&8BauB@As0*jukVD ztbLX+^D&KGci*`PVFJj9kG{CKpq`dKS2bqWV4kARm@dn56ndqFU+HMbCPtQ+@24_O zbU?Hbxc3MQ<1z2DTnP)9m=4XGbGECOzr(U?jyX%!7PGj148sj{M2K z(0aCX%P*f6ye(7O}l2rt5iSAr$=w!47BzkOXW z+*Hbao$`R|1d~Mj+B-IAtE(%c)X2b3hS1}Hm;>Dqv?P^78UEbve;2sfdKX|#NOkz# z^7QDbTA5^)oCHyI8`j3x6Srv!mdcKH9t>O`Yz!?eSt?mS5o-z{2gzlg0?JS++B8rw zLeHBBJRWxn3U;x1Q&2xhGS!b$^Y~W&R|NMr-Q3AvjGR|$U>{aC<*SRGVWOQ&xz1jI z*y6ri5jV()b0h93<4R;m5S^HkR6D6vSoP10{g>tZ+Km`t`uu z{rR$78$jpzLxHUQ5hoRLdAsYkJ053CFQE^;;(BFvpO3bWGtaNhhC9i#UFd*8ZeMVU zS3qF6Mby7SpzBVD_7HY$7Wd=JJW?RXOEWUJ(spjw>wudy`cn<`x$E)M?%-qb_VwzA z##j3(wolpvxSQ#1hom@x(bZP2axHxQ%KZh4*R!8N>7!DHBjmF;HA4wr!IU#vBt+^Q7G-jUCZv@A2WV$ zXDf4JCo<3z&e+#WHh)Gw@m_desC9Zh`1_a9`Oi>HlyF0oeEWLS=i*`!4}hO%Bm&7_ z|K4;&8o;1`vhpbhd=0zvl4vfOVGfM;7O2w|cO&Y)V+tzu2E@L`1rd%w5s37;MWcWZ$2Cf0GV@*^68&amV)3+d9V*g^XACblpB+8kmYPc+k zV_O_+PO|=F5QZtSKN+d~mt;LwKsnYnz?n^1?hGvX|>zB0I(z5(c zZ^_q_A|OMPN4wFM9e4#l$&~C}6fuy!DqzNO)(94u_C8o6F(r25qAks@l*TwgCNYbf zoWfT1WQmYw3Q(tT84*+0_d4LW2cjoK1DxK6r0UFvZ0aW%cwSz(CnlS4U5DHo=$C`o z9uzWS&E`hKZ%{$;X!Y~_=n_vA{*#!bl{UE&(g68XmzBM040@x)=L2M+yq&eJ>ZY;H z%dys8>wVtIQ$LnvtV}spS(n=JP1*uz2)lx%EMq>i z4mt-^8btun4& z0}AD`biqdyUWHB?@xt;nS07s?{B^n>T~;5{ty$f*SZ1e!41hEec5iZ`K{9+SKVRkWtZXILunDtk*& zx?;?TDYth|yO!;%z>{hPug)nPa$jW((twrWX+Bgip0nX>)G%p$k&88!g`&!BT+S&i znnP$z6LBL~FD(Ze;K7a<4c<+i^d`)D?5(cOI6)sqzXX`=)5RRc`>m37C?E{PvOc?V ztwBAHzpUgs_9sk|yTWJzIC+B$S?lO()E+7j<;np}mKKA%lQ>nzC>)bx~@w_8ANbC+B z?Xu%86TBUj>&fsDol;9XXD;MUJ7ZN+A!)e{u27!-k*Sglda2QFg^v%aOW{n)NvdBU-$`gB7&-E#= z3p(G_xVSj#t`3`*i@qKtqm+A9{jj{3;IgO;^D$J-*dR18rDwcqd5lI7fzmq=JEVr; z?%MNuy))Ru)jT2IwD8ia+WEXbRNWF*HL`kkNi>z|XrI#sa?UpUAaaw-<+Af(t5HR# z%cO0}sfAk~4B%Hf^2U(OS`D_QZKcS3Rn9NX{V0C_I@z9>F>Tx_GimP+$JY(Na}fB) zy9PEDcH$I7T!@)Plx>mP>G80H@0avK?27b2x}+4#3_}~Utdx%TQVy9%u*Ml&2Kw*L z_~uB3_2MqUB@7vcajL&6BpH^kg`|6+$sV7dlv%Q-1Nxcwy-%-^)fg6oOTUtpnQ%t3 z$};fx1TGisMV7pMDHS%co5aMjFOP-CKFQH)Utq0yt2(D5Ku#lptoaU^u*hSR&0 z&?zMXg`lYC_w)fLvr(K5=Qf&9k!XQTST=@I^R>%m>%vXG@0}WRHVj;$GbFY~Pq?GW zDb!JZ3pZM#d$J8`*js+sev5EAO*M-Ltr0azqU0YotJ>cvA-RIrs>N&Jg0pt=YE`ob z!IyaXf&g9NC(;}F#@xUX8`dF-XY*Z_UOXhOr6J>2sr42LK>lq+Z8&f9XsJLSx5owwLsuB{l`6Ece@yPGOov1T>7sEMJJw+)Jq5)*9# zPDTFDyTtjB-4_xM!<#M|*(#xaksvwhtr2X|IFNDRU{P0uYKm2n5kIt8&!8aHxD9n` zO2WW2td1eJ({V0AOSLP~J8#1&GEuprKOxnA0%DIQ7SF712#2)ellg}It&qv#NgXDV zg+9YwEU~n$u3qhVZN8m2GN^WZ_0qf=@XA-Pi_DP2;^SxwtfpO^2buEAR*ET?zJ`KL zL-(@8FMPA@C#a%cMZor^8{nd4EKbw-I9ygSPc*_Sj(ooJ0AnXqA~XW23gS7CGF zZ3Hj0z`t92%?swXj52o`D3S+b%Ff8!8JHHG{stW=BUMqITy;LnPDRpo@z$SSOT56= z0W3+x7{7~xBVv`x7>G2LDi@XaOLufH*6HNGb7878v`@GVPV(YMwr~w>$AedpyKZAa zeBINY7FwGgsC+ID6mwm{h4!1J=#(pTxo4lh&O+8+)Q=gA#e9g|cdj#~mm8Z;QIvmF{4g)jN1h_H+xx(*=YB_L`2weO1RV`t>5b2+lOeY-srEv{I?5jLNDEqPEf|ZBjlV=8A$vJ2=&x z1S&3woJe11%LSDFU8p%4iblY4;L9v%Grcw^wKYsnCMY5;Zw9AMcO_92z9i#?_ zE$J_3s>=08H(5nm_#HNbctA0k6Q$l`B#Q!Ec#bM0y4yNtA2Wy8h}tYti{cuJHCDKQ zL{ebFekODZ?7pxzzPC5+R_Z6jl;oOQm*-%i%0NtGgR*u=rYa|e zMarwIDb3I$4K{%lR3?Nu3bC@1Z+VMD?|NCvoFjC{rG$PufRD^|4Y%orA7W@(xLM`FsmgTZzV zc~(QVVt~V|a})Pzbo+Nop|K&Ruq-C8C9&`X3_6x(O2X;8gjuHIb*99W+gYB<{0SF} zCT%1;B&~Pa)#~c8C&&<4H~|{zqqNLPSSG^n^exWEvn3NK3sJ#v9x7Xs)bZskB2!FQ zZ~xA0RHyxUw+ob%fkT8!dK(e(ZL4S2t%LWEfiI)Im71*n;NokW$DAdf(qj7Kz}^O+ zJA8sHl@>_BbZk0Kmk=)E6|7#9D2^q;zFQ!5D>=|YU@yI$+$k38$ZKJ((!{tZ(iqyF zHJvy+7}yf+ly6@GQe1l)DDj>HyZ_&_egpnk4)c>D^+Q`zS?BWh?5fT(wopht)$A?< zcZX=t4voboK)cM}MT_Jhii0_8ZyZ1Wi zW0HGrR_nC6UL-rbZG)J8Pk+$JKUZuIv~2-EnTY)G};Y)l$2 ztmrC+r^FpdzB1N zYS}zKj-&AouR_w{LwH;V< zYd~DE%Q#MR7{0S`L=iXFR!j_-!)jK8v&!HdV2kWOpRZ?y3%%SdLyCb3(!E+et=qgM zXKr74P?)3ND^jB=M07c8km{2zPm6*n(-?znH0wb&tjd%!N(8^f%oyQc(O0xZN&>fv zNtWMw#8i~p!brz1#b7h)=_F5?yHN+yDF2u6jlbd=l}I-g7Ey`sBDAN@eQ1-p&K&^+ zAE~vxL~+e>>MWi&W90PBTHI=J33z6s%+%dIN!b?G8!SRGL6g?7pHM|9eOnWT&JX;%kPU42)7)0x}zOaOaFnkhsZ#$#~ zQ^rt8BG%oxRb8CABONOB^EZTfU8AZX){l%jq(Z{y`QgrOzCxV(C4@z@s$RmYxWq?u ztXNf8vVe3W+$gJuov2dK11gu3=EI!hRzj`FVH2G#ua~1+MaK4e;48xHjtdyCmB6!O z)hg_BULP4^+`*MTQgb%@S4~tC)MQYCqU`Z_U~HTRWm1@+CSFT7{o^V1DEGeg_-~p^ zX^I1>)W*z)DT^v07LK*;@oGf#?+GZ*>##!@Z4nPRj*Ii2cXW-wq{f7`+rD;+?%}EK zGuyOR1v77HPE;)~oE-IPdz{0e;mqiBa8MS{*8OZqic2oK58BK>!#W-2ML(X#&#aj{ zJ118^E~ZXf`l2_*8xJyG^T{Zh7mkm@#w>Sx;nKVd4%c;Jm-bfcG_il|wq0`_>>iB4 zCz?lBp%PJBZzfH0o>-`%@VpNmPJNgd&Us}`*xyZe#xsGx} zCZ(bYH;*)%a}2+=bLYvl1ndePgYa?(h#}*Hm`DTT%ElXcmRY;$HA~{8K~Wy9Q@Ewp z!uY>b%de^%o1%B~J1kO;k;X$FqbXNWecte2B{h#F980BtJVW>Zs}B`+?lG!Zlq)-w zvaBV9Eu6j}KcEOBRK(BBAemc=FA9(C4(H*Cwn0LxG}~;^S6RrDv~?|<8s9|T=52$D zAEP@m*cwPLzaLZr1UO>lD3jZ-&k@oGI2SMgb(e1I(384`P%cfS3A{W@_=;Ph zsTg;BEiD#wZg9yHzK}^D{uO5A4ydjuWc3DlK$l!xuZhN!hK16AeapP$o3Pm`+e8*QxI;n!Ls@| z`Lm_kO{!V6SfTtko?0!T8_~5%ipX5islxn{&2U->NAfL9HEP2A)Fmmq&a+ZVV&Gi^ zo~!`T?kX0<`@XG{zJbm1ZADLa1y1#R1-eOAfI_Mw@lVryEDY9F@_AEv|57L4?I5 zO5a7vs|#Cj!_(U)<}eF_fdbY;0|)YCi7aT{(ZV?lTSsYHYBSC`2p(Bo9XoiJFpf92 zU-ZcoY(am4cleUCKIAJmNEM87l1}NVk{h-Z^E^9e$2RKjk@HGh03)hq>25eJi-h$; zk}EHD-Rt|XV#dsnxlB&%Ek)iMt6VW;yO=uSkW-3pQ3JfTfNHR3sa@}011#anz491T6EB5ifM-gn zT6Z6merT_LJw1+2!}mX)Un37OFW-8*!?U+P|2W_MbRb{ew@>HEZ(?WfWd8}UjlA`4 z&e}B(#LVNz5Mwht$eP|f$_!O^sJ1Ml=i3?7ZAO#%P45yF; z!Omcs#s(zdE=5EcZGxi_zc75$HVZ>*q$Uh8K}rL`mVb79g067ksm9~FR!m3Kie}>G zjq0p3vv}^PbN3uRLU-Us2VR*MP}9_qBr?ygvR-da2Dv{6v{C39FaiS}`HE8@R0#Mq z1Wg$w&(~W0$wkz{>E9Z`h*)I%E|Jokz&)L0_=9TYW;czTYbvwF^Fb?H?bNX$OO`q6 zjb+H#VB&l@(c+*R4b#sneK-;7?8KghPMuDbQdShGv5k~W$@j|e?(yOW;^~FeH~!Ik zJTQGc^nJVX@ACG=@AlyI_nqtz&vL8Z)U)zQ$py8pFwf4~4x_=%S3PXdG}=|2;D`DsSx$V-X!|RZFKaxJVwDB3^G37My@cAdd=2&Y*BS&7!oj5n2+R zIvs-g+F!T(YSiIRp1N?OX7X7-YeF++7u!jo7)z<|*exb1{96;Hz@^ohfLPja{XNJq zEDcDXHwCvTOtkn~UZuiKrkH?J`pLTg?!V){rz>tU-5jJ`0z>2UzGagHLR`uK>_gr4 zyh+Xj#gN8g|6Td5{sX7pS=8iLPc>1jlLT{4%C*&(jVdSh?p|`W8}mJ;BHJ0avyIsp z43RKu{-ez@$@Q355w|T~)QMx&`sT7wphoX;_uxdUDytR4u>GUOHF#bZG9p*r@uYd6 z5_NZvg+{Qvn-SlH3MhU237F;swYAP~#hv>rD9V<`8r%uk;{g*!22 zZCbIwAc;5l$ZfPhB}9(iKpkKo?G3o(o~`pb7WPTQJ{8(TqeZ)bNup`1DV5NmQ3)B= z$XHpgIiW4p&bnjTdGlAK?;3&>*wS{=s5|-h{uV|o6GvSYa*j?rw?lLlGY{EO;mZBd zdWI~o3xaa+6nwgFV<0_QLmi63=5kR+q)0zoSWF9#L=4piFwtc#vH5zQ5J;T%dL!^Y z9X7|`!!zOukgqBq#;FqChE8F9H2^MP9)K%R^banQiswnj{R2;S_7L9_bYfB?6QsA^ zwHA>?Ef!Ur91#6-Fs=n?OB}zO+|`61aRDJJj&-@{(i6xw_eO^`E1V3fnJ;j~bhAp& zTZP9P)pOm(hQ|8lRt;NQ)r;cl>WiR<5-m!nk+8rhotlXKKY9@?1`wB+%#ioGn@Wh; z%q|>P+KyHhOiECp2BR~z(*2y-UyHi4mGQy765GKr1^k9_4Iu>VjO;ib zf@mu_plNmt&99e`emBT;rZ34m1(u=+UHVX?d3ssH3Nzw1Ol#@P=Ti|!2EfTz;c>2$ zGU+u~$C{5(jvi=Vu{So%&z8rNtm=ZeW>BtO587%qlzFEMlgg@Y_TwEJ`4sg&Cam=0+eGvppKV69r#j3| zVO`Y=#Mfvh#G0x5Vay0466Z)jF^Q$4hwE{N8WVm{7NYZ>LbZOW61rOwfu*aD9e|8D z59pLw5meC>Fr%1|BJC6t8;n|Tf)d(dqFFU!>nrG-djgFT_UtL?*E0 zH@HvwBQ0IM5Era?b45jI<_39pi(9}Hxnv|QtMaBS|Fp^FdJ2UHc7b%>`{&XmOHTyc zC0X1MqZY*S|%E54@`}20RWhoj|UtJsI#@e(S@FvQZmxQg5z;av1%G+yo>d`Jk zTQu>NYxWYY_iE;r-2bi`X&czv8eDt5sk1FS6VsG3BPlN(OU7qC)_^n&&V?&N-K~mz z6g{w)>OGg2U8Wpz)&#VA&@?SCG|M=C{|14Gn5-7l;n#gHQ_FcsL8^*x5m$hjJIZ`N zji{?BEHAGxr)pbjK7#dMV3$@xWbT7EJXamQ(k}|;upL5^2AHp%Cg=#H{(48M7a8RRext#j{-{x7oHp7aA4L>=(N1QvkG?9;>VyQ( zHK*N}O9pQYN8^bt2Ovo5XLjJZ2GxS9ZJo;&iP|oSWWKw{=bz({oB&>nRch|1{A}3r zMBV**+%6BS4{iM4e#fQ;>j^)a?e$N(-#r8~L#l9#hs4Qqf9*V(V3FOqrthS+f zy^2keE33Hr;&_&qKLkdzE>%8O@i#!DoRHPTCq(b=IWAa${hjr) zj5jCtAJM~*7QiGnO4Rt}C>Vg53)DWuw-zJKLnCPa$w23COA!bHRbWTPs{z>~;{qJ{ zL1HUz2L>m!~OgSXTU~c0dFsJ{7Wf@QDL{#OIq$LeY?Y;xo!V z(OMUbQ}P% zh-&DeU^OiD-@!4mrQLMv-aGf47?;yw7f%vAm-w)OcS5t|w0zb}lH_~~cPZIm0c_jg ze2Ke9Uw*AWtPkmJKXmrS1}5$Hha=NiY<4?^Uq27k|0Q4UKggLexws?W=gUZ7unQf} zA%#OjLI$Qous#jVv0)v?DH={FD7BqG1{WO|>RQg%W3<&@XWUfv^Ln%)ZVx~OeC*kM z1DIxXyy9FBK5xAOeV%MP;1%g=*{>XWaLF|RXQO0~M zcZ;fTcp&qVFIyJpj1+miIU{usnFLI-qE;_kb*m>;0mndWPtF55FkZO;9)s@iJiT$Z z=+xM3fkzf|rBq8EBA~w87S}7)tPXZAYpMr683S1u*;Oh-yS-R;E_-4?sa2(6O!ADEu@@1X=KSi$KFw0hJXZpY%eRnKh`F zYaP=~YPD-z9Qf3;`?=$jRqt5wrZ!B^r09eNOUt(*h8yf9vSkm>Sz4 zIFuTk63C=&{3BeLn2gZeXs%$4*+vZj?h_f#8qDe<`v5$S?JI@(O~5K}glQ{4S59?L zALYL&Lp1K++9hXb{#k>LM!_Dw~zbOqpXs3yd_i^(lq_62113fIDyxBafG)i7}e zy+PnvRavimSQ+}4%4oD_lRi*KhF%3w3!JVaJBQB3&h-FS-cK73yV=&aX>Gg~I>V(} z^ubG(AxePbaI>F^V}DDJh|v|b1P}$1;xbBaRAFVc!PgA(`~2&E_i4ZI?y%=g8V)z@ zhT)1`|z^ zV)YjPm4%9$nwO7Ivgv;Ti80VQuMdVPLNa8s78e;%lc<1x+2$6V4a>;C{vDWCD-*8h zs+Q3B3s=`|<=7A+uR*PBc<3PP1s7{6Nu` zae)rz&jDa0tF$0eTA=@a)QDS@YL=O-OS-Dh$YPo!z)soCR`u3q(7It`m)6cY^{ut? z#1lFw^_gxa^c`+RyTbNP&CQ)l^4KQ(Xp}b0l(zkYG>iv-Y!Z?gnLgN*$6^l`(&Ut3 zW-;Y|WUcq@NlCnht#yhNSJ_8^S`=&iA3aJa=zrPCr&>99`HZ6!<@ZXUb1TMQ6nON? z)nl;7)}Nk$-)_tw&eJ7<4~$)#=oj6gHOgy7*p!7#Lfw2mUp{L(7tv^Xy{xWd$xw6C zji4rzA7r`y#5z+Mw{MaeTkE(DU_w1su;ib5)Fm|S9N6n&-80xHWCno3UyGUa%gH{iE7 zM?Jz+dzWu*krpI5y?W9xVbO*{JH?@)@kQSQe`^KX+-*U|BIE*!4E+DGtEKH~ zRj&Z!X{WG>Rt3_rhIIc^T~z{m2r>L^h~{5Fu#uGkNh^lTlI_1yvqY{FHxTY)f9=m~ z9Qhp#kA4lqd&bNIG$J8TbT0N#bJZ^lL5nkB>z?Cyep7M&Aq?d%?(v0%Kz<{bQbC6; zXS^5y_7CIT69-yV=0PC2ku*ScEgxgmpF4)Uf_w~H^G|mB4`77`w(WK$Gcy&jFh+C< z=Vk-1O?NOLw@tl-?MnJR*OS)gn^y{c0|}E7dN7#rux3?*nVrhPWL{$ zwZM`2EHV4q@z;Cwa&PG|?L7pJ&b{5Q{b#w0lqvg4uzThOJhgJr>3Q0D93!eD10G3I z>is8|jy4PkSC7@p)7IlpfGI+O2yY$&K1R1jkJiSf<(j$F>sfkSfy{>y>~Mu+-kVzw ze&QT+jODNJAw>@qW$C-cskytRpWY|WNV=*_2sm--kkk{467>-fQ!OK4BZLnyCw-ly z#ZUY%BW$=BUAu{-bu2n~K7-q@%s2C)>&BV;CzT9&(7z8O{0TisnLjD)7 zu;G*mnn)gJWx-l{^rY;Za*nB-5%J9|%vhY&$}N2|)+#OOVV%bE^0d5M#?j){N#yUD zpcH^^eF-{Of za5gvmfq?i)5JS3>g7t;a-)O$IF|<_};*D;F9U7;!HAlAy8mqK5$xV_L_cZk-feC&> zs75B@ZdDEP2jKlOo#44-HYz0g>W}1nB-s0h*z}rRIy(hC*4kp!qwbVG&FPPl=QVN=Le7@i2_;SPVZogT<$PWf4_&Yeo+@Mv}uRxMfXw9u;<#SURA!a zd7w5?g)PL}sYxbh}0EzSC z2oMM>ec*)=0dVZh)DDcP)ySXZayH^j|EfqYMC&M}0F>Ib_y8UXUN0aDvo(PpA~b=h zE69|F7RfmCd}S3Np7)vSP2>db5)L|VqBI<12hX)-9MaSMGg@>GI&53tU(2ZIe8d&k z5t9R+*EhGRS?*BoZBZ0go?@JST>S1lOEZxQ*+)bgx=PIEPrH(XXF^&HSp9m$S-Vp0 z{0t}R;ko7_;`~)ODhERoXrIdgV_K~FZx26Qc4n5`ochJAkE)Adpq`4*Lw~5+qO_PYp_VagRPf~<+Po39<0=md`AqJsH zO{$0Muz(}lzxBDzpbjIrhVXJ-;bzsj6Cy`mn$^8M%r^0!ijwwUqwQp7L!Kniir1da zOjFe()`lp>se8msdONVQl3prwtmz5~>{L3P_roB~fKxkRjGi!UG>zgtfpw4#K~{*! zDI|~!hYUa%7@!jIgs)dDunmSqpv9mcwad>~k`^1=^N|wWxd8SYtU#vcI0fEBSOjxh zMRmOAhda241I7ji&4mL)KBsW#9*}I&F0`s{&3&>imaZApG1NopaHE-j zQJAi{)LbsZvhSWRd|9&*ffNl*f-m8X^Et?OcgP1L(;}{ZP6cnja`-m3-HE_pWOWe; zA|9kbqVXT@OM^`_DEWpHrS~*jyUX^F92!&cI*8gOTY~h%W$rH%>(p$QuPA6H{ZB5l zMpn<|b;C;eJ|=qLAgkcwyrxVDJ4jIvab_Wx-WcL;FUruqRGAD=>=U}6JLgu#)eW*Q zZ`eQe@?Zqax4*@_vqQtw9|AzT!V>wd68#mA8FCN{n1X#3c0%Fu0_9hz+^=e!)L2C0 z$3!geNB7Dip~w={CxWSm!$Z8=7kW>{SU?k)8YqV!Hn$yO9*)Zm-gT^j{us z0_&wx#**P1F&+mrfgKjq0^mruT6$Rk4}Pbbt)eq)sQeSGtm>9=)$PpyBNPDetP*`I z#rcL2$Nb`W`XLQuf7TFR0X+zkkfp#zqhhH-X1gd+9t%lDO`AKIf;ufxX7J2{RoH+Z zuYx7fSh_AMi`Y_({Z(_h{4A(*%{72!Zs_sha-TIsjjq&}*GJpay@?$p6;IhU@yWVv zAT(iNi>Z#>dYISV5U*^FCJYTQ{$3JzqMDA3Fe0z4RalvDdWH0o{a50IbJYZs{ZiM| z=5;RWdf9q!Gg}?~T1Y!4m8kKn)vmN;#wZtp(MCm0(D@W7Ex z|APul)1~Rtd7w`qexQ7_C#dNLWhF>rT9}!$p%NnNjKD^kF)*_oN@a~T8ews>La8@U z-aisA4~#^`HC_PfR*%F%RW@KvJQ4>ak!@2U8`EdN)uK^hv*o4$L4NQ0+>+#!3fOdK z9g8f!&!6`YEeCDAPuk%R+01aAO(K3^&-d@>TA2Mc;?t%r%I01lfMn-Jv{-mV3=!pG zgji{9$fj*zXCuf-wVQ&K6*51HOvOA=J|tsoZKhszhcfNLBzd1jG!Sw*ov&A|Jmr!U zRR|eu3NaV8p%2xz&_%i|#v(-^fLOLjdvoW1lQT!Tt{EY_Js^P^ji2OkY z+ZN`0aAvx9VB`H?!_?F=+DJLjB%m{qUni}3&SM_X0-MB9w}}8u6nKDFQ&pHD|FZjF zh19p)RG}O4;=e~f%%NPM1VGqPgn&1pb?bz`j(S$BYi2Z@Ulg_BUvpMw74~J`LIYK* zW!!Rs3qatTA{_Er`EBh`y~A{ce>I+vQs{gBY5QHh}ow(CLh4{pIAm zfGt*V3QSY=mQ=++!~B_!3gguNv1|}r_#ubusP9JH6p2SXTtaN3DWh2X{b)V|;A(54 z;Ee>BgQP~Kt}S@D^m~eGyXzyh52nTa1fP^(bF+8Kk@)u#^bUqcbpB($3di64zp-)h zvFQ{;{9hlUL|JJ_>~RJ+m#DHi6rnNz)2_711~I=bc37apX*Sv{e8fE2k`@whf!(W_ zh6y*2b0&Qe2mTvWzvkd03e&ETvsxn14V$l|qzZMlTDMN4iV`$aP@GFd}q5n$1ZpDrUn3E+2 zH44?PjXbsw-MOEs@;xR=yHFEus+9QqBhzu9@K6&23Irn;_@n;{Rl!weIgKql&-~F( z!%EH9gohOK$#YRe5ux%#9Ej}rDdb`PboeL$f2tVckO9@%B3*Jfdv2>%--Kex(LWUC~zvqd&3F z?|afTaKtX+r!q<$eD-%K?Y&e|Gq{L-!wtMYa=>LzG1awGr+L^8VB-mvRzt8ActL66&u z?Xf|7kEM5LopC|vF3|VS9(aJ-gDDHl7w3gw;pj^IEa++^aXWJT^X;i%@>ynlVb(v= zOcQ|)D|I0!CMEzPDv8y$8S%+QjOMcT@sq~jrjmxJWN0n2H|{G;F@$U%7)AmuI7X06 z(@4ckNE!(mNDWd}A)y1Qzc7@ESSuwp7MIMce;qQdh=EutHBeMWq9xmLkl8{mB09vr z=IXD+5j9quA}s@@>H+IWnWGTwd@2xO+eMaEQZZn)_r{veuJ4d*nq_g*lCkKRqW?9&& zswD#?c@EJ#o|8!jJMObXLxu}z-vmg*nCt|-d{j*h_B@)m5*pG0aNb)$zLhUj3S$IK z)+kE(hLx~L$3hxtY4yK!>h`Kp4)(Yql2t%jH#2;sF`_*ebyGJw-Q~%VNZQ%#C{*YT zNcvadqnMb&>{ifiX)}_w87n@(1v=51-^VXzE*TQav?@dmuKU@rq|K4AH|uhYIV@^5 zkT7Q^@*~z5AqH7?(O4yQ>AG~G4_6nA$E~3HcSYF$?Fm2sG``$;*$_(voqcX{i?A%( zNHz8Oe>CJ-y!-*%IDrAH?f22xtfcr0WJz7YOgWxzHv-pG>o60Q6Rl-xteQ%T?&WE! z*=tLra?HZW$VkXYi%xuw=l0tePso@#qHF%L6;;~2K^#B0y;D_B8ykE9;$6687NSRN z9RN0@t_cY;I=b#9B5x*s#ecF#fLpn1$0L-inkz*%m?d(gwG68#dWQSilD#NknZs-1 zxlI>mKG1=RoGIge$e;Hk->^;MbFp5SHpw!>^8{M$lYfk}+4TmRhHpT)#u) z+vt*N0UY+lIu5VO`BC__;b@u?ht<`#Me7HTJ|D(L)!uyWSES-ZG=DR15Ol_YIt8YKk?;i#M75t|*S4L`vE&Av8;TO}27+6gJ_mu5g zGZP;Y9ja$U#S`gw<-s{$KehsTvXhUzn?P0^!aQE;iQr7HrtZhnLty9rtZiO_^8!#b za^E2gINv%wBd&$#r~3mdeBwdAW)^##EAwi(pLYe-kEdEZgYF+g%Lq4Ia>kzCkF;Hc zy^{X{RzRu02oM1#V#MI1Z2!T`{cnR}d_oE^xLpi@%mlw(6wmRo6Y)L|p&l07|lTx5(V4wRhzQEuFrptF*zIOPFFaDUUp5uj-RuFU7 zZTVuAYG&2_2Wp5;|6vC4r)3Lhty;dF_JfvLS$&o-^=M6dvZ&dT4SRHYfQZlVB2b5*mixe$uU;97Zw`R}`GCH* z6R>7{sLQG=K76Mx(xgzL?#x8DozJ*A(P1d`)#0*gA4}9QTmn$TXmlBMv6B4oLsGlC zLpZKcP%R~GBVJpIiGKBll;J8RkDt?@<6obef6+4s(H&}=MqxGJTHl4G0IZJRdvO(9 zQuiHNut6_CB3L+dxQZN3JEj~)+fZ0JS381IZgg_>3Zp0VBK0qZM2TvE;f=2ZcG1ae zf!nvn%Z?1$GX8Y#{UcmesP-3!AM(1w5A%47)zHA_QS9X~O_}OQoq`n8C%KL`- z`9G#hUN7ja>eyK29I2cuv0gg16&!$EhYh!hSk%xndeXNr#BI`lxW?yF|Di<+d!eXW zf_nXXUR{PPY+#-~zhBl-@Ac&VVsF}2yUPj~T;J~iwqX%1m#mJjhi2#y5F8ThC9B`9 zubXb)Wxb?#aas10$ycMRcgf%1C$F|_-*$5T^i+%*1epXIH}g(DSHWk(!S#j)&co;R z2GoE#sCal+`cda*$7R=TjuC01=*Vh)a9qSxhi--qokWUzy(#j#glSEXe6eK`J}^fY zKVPE94{XXwP>AaLB^8qW0d0~#Mayrvp_R>|ZhQnJ-laE3nU`^LHxI<-4u&RQVR76G z_@&>1*NJ-zzu>LC<9v{~+hU;T?z;sEDtw|xLC|Nd7io=ws(cIq1E+clgsoEC~-D zIw5Ojz3ZRNI zW>8|+%k(-KWq+IGql~gjrh^3JTC6|HkTY0YCI}mXgkwTBn!m|29%m9WK}bA_8JUat zO?#r3S2#QF+N~)N1K}^HUCu1U3d#LS^rgKbiN0009MSi3Q4xJ9cMb8E;dMc@l+*af zUpu9J^t~7GRSH<+NDW@M&PnYSEvfA-JRLmte+j$@&5FIvX%X?S*_Pn6_aK3P@i~7% z`?RwX2=iIV^cue?!!;)5`U&))et5@*?J+nSTn!&VT|pY6{^d2ShwS24x(aFv-UC&^ z>|6C~*gtc%%@40K{nn)`Rk-rYR$fudQPfGwgQP}ee&10aVMj%v>{GF%iP(Eu$Oko| z=>PWL%Px(aldw-C+RddU#6iJ5i*tZ$jAMdZnn%+dTez9lfX~oOV&d^wrogi&M~A;Y zNGQx9=?3s0Fn8lB`ht!aVapB^d2;8-?VLTHVu*sbqpHr-(PNt%d1xGus_TZP!uJNmPL~fBLlHqu z^#Tg08yHqT#q&|gW9C&gizzx+Rk+=7Lo{qby@8?|EZ9tuYIfmaf;=%Z8=3`ZmH-6= zznrzF-elAE*t6$*JNrj3j-6159#_E;15mFRwx|S;bZ(yl6GP+oU?b8!Owu)5 zjvcWtQtM+tNCJ)95a+Qkq4BSQ<|nR>{!wq8NW zyW!p~L2z%j;NB%CP7p{c-}1l`AVNLsPE3^mp{8 z1#vZ5kx=Dl=G-h=uJZC|xxKYyQ$>DG<=V;LofCOB8kM8gGS-B`@?w-3m=uXbe|rA> z=sCT7Pbt)Km=LwybbI*X;DBCM`F|TYCh#1-CJ-KdNmUq*N4hx1IPd(Gi$Jo})eU~5 zs+whboQ=^Nl)X|71vLWnB_tCDY)G*~prxqC#L(u@JH>=Im}E||+^!Dlk4y0Dg%rbcxc7!SEyW{eWS)n_s zg-&uex!Z2*MZvW)$EsOIXsg|JIU>!68~|O!fUmyN3p2{D3=CQ_2eo!Bn;^-x&z_B&sRg;yMt|~>q z2Yf(in?K(th57Tr5f2}Y3pFjMv-(G7N`0`0vnz0qvW|D)+rQzQIJ-@8f z$jyHRWxU0N{{Ha8?G=pM?O3}#^V&RuIRsN!OY9Iw<&_>^Z9+8O$VeNAz*%ol8ivy+ zA?64I#NOf`w7<>2{Q7K^Wi7yIZr(pVj$dGiS5p>ydl0RHzum45p0@p--4Q|qZ@*sO2>Ac|-+aCPJOBSFK5_p4KJfovCohT| zMc(l>Fke6C5Xh^_i`9cP*)eQ&l>wKYG<_PRhI(ho4zvvNFJ#N<7_puTGTHq99vX(v(bpojpCl%sAnImNGLfaB4mHx7q{ z1xcvOD|`wEY^{*`4I7A>dRyjw5&MD~@YkM-RDhoN{fBJ0_fi;f;6`wY4Kf~cSAZ1&3XO^fp%7?J%iN{gU>xrQRsLSOc1+U?* zr4q2{*Y(jcPSnR`@z@&|+@?fZrq>XM6GJ%8?${xr>wC_uuid zY1Rq~0ZXN|8nbtSpt5QtzJqYbY_ze5+u3s5vp@`a%orxModRN4VGAn~R5gW5s?Hwb zh_7}4yn#`{-wyrhjxUDEan@#SLaBpZy4=v&))g%W!j5r-dijA*PiDiJhs6R;q8hTGO( zY}m>$R`}bYKhqZ*_kJg#@=|=tVyp7OVq>c1ITjl`u@In!g2jF!6sL~&LX12(2#JyM zv2A7xshXC`Jb){ai@Z38arevQG)pmgAu98RCD_?O0>`8>tP~_Eg!pnCf=(`ik)QGg z+xBTzD49ag2~_%MG#i@2_NX-@6kv`dSgD;C+2p2DC2#n3+M8#v7WN7w%wbMK}{8zP5-! ztxhzw>W`X1?b+l~9bCMap<)mdYPvdVJT!ndurq218WcRk4PTAggeL##nuDnPPqAok zt&bV<|Hj7VH+A{{o8RUCPw{EE|NGArrPri)U(kf%GP$?j-LkQ;DVyya&FJ6259s z)y_PK{NhfV*h)m3==U^_UeT+u`U6gtC(ZU4^aCzbV->1V&r@dwui=E70t_P(m7{U> z64UvMt}EQ?)}J~KRNYKzp#(F*?v>d#UMn6q5R6;v1`Tgu z&`I+KLFx0;d|XYLqSmE)BM=@#7q2lJ9_G}zju4gMuN5Kr4q2eA*^b)C>Ms%S0q3M% zds+&w>MVAKbqUH42JsdEm7;GDF{5vAS4BoDP>oh1NX|Fbjn@rIoDbo*qx_#F^!UT= ze5Uh%_rL!3o6XSvcVqo```=IU`PZ`l{S@ZE>e+R54~SglKZY?D< z@9W9kOI_E)feT(_-LW~uy5q9TK|bM`97pPXvI2iQ2`BW}HgA#@s$yu0=0VwTd6d6X zt)7q4;YCZEgPQlG2QF-*kD*Yqf@S?iy)dMp&%I2CL&zU_HYzW<@kk?`;C6!>=#?Y7 zG8)1+ymIg-U=I2WPGw-T`RH6pJBj{z%BM2@M5AnAnNnbw)w6cG6)ANZmO8~!Oq8ji zRVo?Ya*}m;H95s~imXOQ*bju;sS+|A4r$k;P3 zlN2E`9F=BOFO#d>u(gu{0)%8_MuAb_IGVsdL*Vi#lkp%+&%9)A0H#~qztLr`0q_Kd z(Gti(YpXv1{E+Nc@}!@go4@vFue=R_V%Ig0DtN}c5@vAZu|3sHNNAtJLghV}oop`q zB-}_`8?cJ#Sro`z_;7NWK%~DdcMv^-AU|YU?SFWOsG2YaRrAogM9AP8YvP2)>FE~L z{K@>v-X$paBroAzaXR|S$gQOa0sMwN`HcS^hL(9xwjy_UD)iUQdTFukYdwSW=1h za5-8&u5X1%K+56ut(y_E=t2j}LR8cKP{eM_Zzo)>0JhwY{P5bT)4eQlB+M&o-h3Z> zV+fOZS0|3p7%H@gaGPd%Nnd8Kw`wI}ysVY46MEIm>$-27ty=Tu)4;Hu^P;{+)g{&3 zYN$bw*EQ_3*Y!G5PW!CE=lxRsn?|I!Uv0c*=s0{4i1e!l8HylI zkV2;J5oS?uS=peI5RVrZC?dGg(I-Vm6Nir8;hjc|?0Kz%G?Y)zKx zO-7*M>NY7U@I{mIfl63e-IHaLm8fC@ewfqxM~I%9TxF(C)(08-oZZB&87O;zUtN?C ziYGN9bz$vTX`ys?IGGj=V?$qHdg3Gy7^oY$z_f!?o}K>ubS2b3(tsI&30YO6%ET;> z&8&=y6lJ_yA9|II?JAhHqa?dH6;Vh~RL#H7XybfPo~DC_CYC-NB1+2NFY<9q;fK3a z11IJtRR{dD`UCvC#$zQ#N4+6*WQmRQHWu!%yaL4Qr3GyPQF+z$HUZ9u6PMPvf_3rr zetH)r1OXr(vfyBb9ibpp&@Yrk`;BX>YMNLY6ob9K*BiHLu%*?{00W)HgNFu z!L2sNR?|xcj$VSGJM7H&d#WEoH(sJU-tN5G{MzdoA0lPEBk$Yxp#M1o$)uMh z$E+g9h^iPa3w=UHr8%mqtReuc82$?S$*W|2ZG9t2@f?*QoIKw?+1>kb`^CXYpcBA; z5lf$@LuA_ASUO()|Mg<~VE^RTPNJa$eJOXA6Em<;TD&pG`G{Os@}iIGS!PP;tmhLR zZZyDihgy_@=}R1H>!HOEPgm#0A*`({)%FlnFSMDaUFQ%j)y%Qyw!f12cJE!VT;UPV z1!6}|Q>hr~TJQ=%<`%s{z@QiPivuA6ttf%0*}m1`9jWKZ6tq7s(yEJ`UBFHl1iwh% zW*n{vDX1YO=*gy~?sxV)(Hex}e!^i%M8andF2)e3Kn?&&pNd%d(9R>`ea zJHpIxGeN?}K(w`8^91voF98N03Yoxt5HE_Z>0HVW2 zK)$GixR`B-m$2Fgt_Hlh7n$OY@o?~7*WM4**L?Mdengi8ep_~RA9@~V^(KM{I{K9J zz1$nvTr31z3);;4?_Nf@U(?O&HS$*04d@GWXoYaa8@|?&G2nl8VrTZwz`i#Y8GuMQ zUXSDcg~#@8&ckwlE-RiGsFx2u9v5YG30p9futOUg4VE3-D#F%+J5W9a^m=#v1!Na; zG1ds7@yH25bVMV|#3vn`(^ICTnKdZpxHb9AkO|o-7Z#s{!8<`~kx*DO`7HS~Z{-jM z&w(4u1rHP$n53m|&3Oc&J^8em4;mi(>I1|V62nQ0Q?cgB@a(BeitwSrenAhAby4*r z!qT1(avCxWqmYYpHg}Z5Eiw;}#c}&SGQAiJBA*XoMHYw3^9;kp%K6CrC9{wum($V3 z=f4l8*a_)h{UHb-{mGEYM$MCbMmx+60+tM^l zn$?hJN5JY5aE^h$=5$7CqT=jn(l$$hFo(h@)GuHkVq6&(m`hWn%t)QtC_J2Idv#;o z5iwE3Kq=XHnk_4h#Ty4JM{Ysgtab6zb!m5mQ?sV5P#+FVFe60zV2?-F?al4Zg4zq( zo&~iRv_GrYUc|tqUV9M(ms;(G3|xZR3mUkDeJ^I}<}*-} z(nwJnAJZLk@R&!V9_x9Kl1Xpa_e&o@svw+dQ><=JY`Ph-k{=v!RU6W8)k#JeL)?w% zPSL?o$q|iOK-*^%sbFRahJ&4(d}#u2{$TW6pNL7Q*O%+BwZEMjee*T+ZFwR5ZngWn z)$TOv2c*qa6{zi*a5|A`&49rEfQA>|eE7)Xzpc`Jbkr2j+jfE#xBxfNaV4b~AiUmVNvh z4c}WncHEQoYBK9?umEd$#$U)nd0ks>$}&^d$jh=$E(|39^o+QI^YP>Of5!cPIYHZ} z$^WytdH;Us|9gM)+u!|vKgH)a5dRyUjsM4Q(Ajv=P}(y+hv6}>x&G6$UNIifqqBZ? zmOR=1X|Ma@aR2yZxBEnun-q}O4htHRlAi@JE@SygsK5$bWEAHeiXhSRBT}5@*+9at z-~%e$HC^a@GyJ%wG*WDat4ON2-o>cpy4Es_E2)nT_ms@=UASrZ;5f}wZqdEq2h=Aw z@YP0xndBU;)WX*AOc_uhsc>GTFe42^8-5QV3I-QjG13Vob~1fr>7@<*!|%;A7?NoL zYPM{3Q;jQVO&*j*llX8YY%~|VS-3QOnc>q7OZTe4g-v@9XO;OCFW-|4n0k?%Pp0ay ztO%-b$BVf=Y(6JoqRfMrTnv4r?!GGS>h%l?1nUViSzQ%Ct9ihSk9gqy{_#H1^WP?5 zy&VQ%`uYF$x8Hml=KuKmoAu4#&;L*H`K_G){~EzYK1)70&dB^RMF#olc~;C0RmzGp zN7Ee_fM=G^1-Q^0D82)=b@7$)61XKTfz^n!KEpqLU=LK~bRpUU+}OeGQ!5CJpLW7f z`KNvpkm9d9$^gwWEK^AnLWD5-0e_Fwt@6u!kdDX}VE(!~z!iY&Z9W=LFai@#KkwJ) z+P%z1;ICDT%W$GF`Py8oQIGVKZ?X(*zLp}x3m-X4WX`du;tnD0b2UOdO#RXUhgEZArkU0?NXtF@zjLaB44nYr}l9_qA%oNk3m`-9@$(NKm zwd#FXnC?$|&yV+y4yO)(zvz`CAa23HJCO`|%R@*woF$lQ*^rjxx}1zCmm;lGdY0}!vxi?2N`6+D01^h z1`hT_=_GCn9GcXJVfN=*sL+GAknjbu5U{#fBW$4~TTpkhyZ@YFZjN0yU`Z324ubWl zH3ssj*_3zh-3?Wrj%Guy4>!61#PD$;6TL2hURC$LtjxNY(ZRi6%cc(LxQPdi+0fir zPH8ej$kEEE{@fU2ZTsmtKW_=tz+-j@T8L50Yt7GmizBO{V>uc0i@SUz5JFl`>_PI% zO#js~;-%lRKVd;q9>sDD9yLt0Z>F`}fX)QC0Hqs2jBNmP1YnDd;(d6+*+5s*&p0^Z zY|$GWaxNXSb!Pd*6vAy>JCEf1S?(f7lVSD13|5Z3a2l;I`)xOu+WDuVhy~NUmC1mB z1)miVY|0)Suuro~gX;X46f%kti}A4WOmD7)kvn`BXO7WqoAm&AyVC+MuRI+9uZc%5 zGOtE5iq3EK2l&Qx$5B}KTGOR~47)-!_$~&J)?9@vK`U=R`Y>^Y{1iD2g(Q!iYl$o^ zPL7@(9UMLW)k|rYM91;y+9q9!_kk0|<@86PU31j1gJ92HW1ZMYmSzx+MG$;;nSSb+c96`QPCS-x9XXfl9-UJQ+b<% zc5^+T*dX>_z|obQ8YI7fFp1#Dl@_L`mx(Lv?&ZdRS?wpZvVWGOHtJ&8>rF;gy}nAV zh$+DH*32<$c$PK;;|*%ZR04BAERqY%ACDhaT(ND7P3yw#r3KosjbP5T?cH5){cHsr zwUc;gLb<6t4v6{Iz_vK~q3%v#`}y04u)yJA2_YWJ;1}oZi@Ofr@ zIEyJhM7J)(jGdK}qW?hnE*hy%h&;c6*r_mIc{~y3;&0u2t}Xy`TCKUkUy}yNlX{ea zH#eBkfMrr(LlfxG#CS4gXt*#)CWsXZmPBL_;gc3VQsBdJ6`IgB!XPO5?51 zhp}0Hb2b@G_XF|kX0$NM2f5KT(@6MOLb!i;(rS|X3m~-B$^K!^EoH~ols-7a6UsDZD zq1Expr?MB)S6zo4y1;ZhpMoG))Tz&v|C7nte!%DOycI)h?_dzQca7KjO&reqt^>B z$FF^rmwV@^MtR*_S?1HUW zW{WVCXzc33_;YNez6_f-LnW%8hH#&3n56F0?Oy^!LhrDl_C=o8q>|Bs+nM5zA>I&o zJ9pc9 zN=~o6Xn>x*l9>c9+s@GoPc9`3rLEYmSdogY@P$rFgN6KHt+rshp<&z%D3EfLtym{> z_hP%jFdr2(K#3qoYNCuzi8fRi5R7>K8YO^U#H-rB zE|e{x0o`1(?hO9kJ5?-PeN0k%&%i#wjw(>Jh3jLB$qQGuY4lSO65E)9kPFl4c&?%l zTNb3?(WwQwaN^WFmIo))p8lLkDoN&^4X5h#+=Z@&WR-CnMw~5Bn(N`O<7ipcQPII4D z&#wsk>ThNR>hea@EpKF)jd#86QDw6N=zi{CUaK01ex#DD_!_V7ErunXedI-n22?V;2V4*C-H_liZ^B>QE>Wh z(80Um&fkqDG>-Hi91M*HPfg8{5~OyPkHCweC7pUwU0Qq~wrukO56l^nSdV?FeT zu46)9Ox>PcgY_A(nt59j`{-4%ie3-gTT|;d1&7w3_l<8n!!Ca#c?Mp=fEwF_7+@D^ zaZdai3!=ogNmi3AKfgFF;SN+}XF4a^O}h#{0dpY|F5}2t3q3_O;F_?)@{~C?G~}cF z+-pA9PK@1v#tDDNW49 zRc+4Vs%EiE5msqau}Yg;vuXq!MxE_wY$3*IZPFpX=@_lerhRE<_7up1)ksth?PZ+^ zk$`THufG;y8aBhce8^@qA95oSGmE@5@Bdpr=w~1Do6`>Y*$4dQ>;ry|!+i=_vX==_ zYI{fTsm@fQzrc}o`^VKs!lT&Jg^s5tM10Iia^YSv>Hs32DN@Pm4;L3}(7;?Y{6kN_ z=_g-|I?FlrYWg9y89AgjXUgVEM;Fzp$I_G7<6@AdBVUo)4$aGwhqbGuFad>Bq$f%h zX_c-u9c0}=C8~@L9I_-pe7#)F5G5?8?Y?SSJpD2Tjpo?o^8^l(0DrEQE9EqK68`~s zpJguaWq-M&3LBt#<5}N|T!(*HR3dHCf+EU4{*iocibO)lHyY*z%t&y5&diZ%vw=0D z^4jg{tA|uvJ=>bnlVW$Mm(Ul^P=I`#T;+oSP8zp;e=;28;E&(;`5u4-K_=Whj$NaE znN91;fdNpPX`A$i-`2;E|Hom*=-Iv7>SKL<{k!kJYmEPkKQ_MJ-1z33Z@>9&6XO5f z|8C>{AChnW@CiQu;qm{btpD1@E%h-q{^R{kv({hB`hUIo^|uiJ(ICw4@gG0MCmR28 z{lAi(!{^7*H>;cLW{b`U))=j}vFQRz{(t{Bc~p-2Svq;w*vopd0}&^anh*}>lS@m})yD0#lOy_=jo*-Lhhc3wQ)J3QGw**`k` zTvu9M@Kf*b3xm3+>0r>cQ@qzVbh}@^yFSl~Rro$FKqr67kzeRyJRVjL?%lh(x>|$q zN~@Q{e61Xv-y4p~znX3;J|4LF+X5yG;>Yd%=gH68&kxNaK1g=UUUGa8zEmlBriE~SO+`Zyh3j|i5E(y%@=8vT$M#X8=XxIww1jJq-#yZ zy7$xwvB|UDAEArn$;s0LV3;pc%I6BLV7xsU8wTSuGc$+|DaWyB*r)->AkEFd(&WIv zr#ypJh>TYTRQVa0t{Mg@8$!}gGs(9(NH!SGRQMzqOy6v;2`2wx@GYO_W&}Bg?^#B^ z{xU7DMMW?MFAgZ1j$zDq4cO7BLxTrLVy2RfJV3!z3<&Pw^!>?P8R$vq!M4j55psZ^m!-99X@kmVOFn?y0)sk%q#(_3`HB1S3y$- z8zA`xwM0KCWiAdSCzSccU@UZ0Ce?Lex&whw<6h9FK}18=dUk++n`EPFXcg$dW!cZq z@Ru!S1~$IRvLY!@k>uB!J3Hf+428&tlR-MB`e$bbo4gjpyu^)vP4X+86`1efXONMe z*m%qG+eJNIre4#@xHN>}p4kb8{I6Xs&y#W?5`r0x@WWWkmqy0KaLU9H9baFbmIGM! zq5>jZEqS4xc|;>j%!VVOYL5un6sZkzNi6#qYAQi#fX%6Gi89IJSiN14# zlvfwIA-8r{*~qauEF~v3d&C^gh=MttM0!uZFbp2W^X`F5B4V6Nyv;GVt6(OR z3ipc}BDBAx%>OL?n?MU7*OtCs6{P_R&a5IYVhG4{ij?;ZCQmup2|YOqZ-+IA zr=xUqEg-|qa&lFI0tkl5)3yn;DsZ(i6NC9qDgppnV%e7u9#Ag^64Dcr{kH~`IX04y z{DB|=m+d#E9p-N+)mF0p4)X4-f3v>ch#8|vF%>P~+(w{yu(!0>x?xAA0#h)}7qCiY z;byJCcW;Sm?e6Uy96#IJasE)`Wd@ozh4n3PpaI>Bn#>Mo-v^V_vVd&*5#H)q!N zBR3Po4BD3T*3f}=9ez7UPoEtf8cx0omA|9D{`4Mq*Oa|U1hiXahT%KH?{L*taWq-8 z=M50YT^bxcLOmorYkO?w1Tcu`Mnx&wh9Lidm!Ls4pxlPWjFUHpB|}W3jv--L^#En8 zXD{$a(t7Z~@4JniAHI0HP1$3rhdlz^m3u8qQAS3u7Xu;Ytue<{(a?WiF%A=4V*mQMKnrWbx znRs4@EV-SE*d06cp~Yzw^FALD^U2SYU(z`RCw;DdcbhsFw^nZ#rRiGh_|Wwcc0vSbp)~`%gPC7qU|nkCH?V-S zSI^Ph=0!9tOp4bG(WQj4KLdw#3S_~6gJDnt&sCx345x#N5+lpo9y>y$phrm92?8ir zK7~~FW&tqWi;?;OK9w5mAJ?_ah4ObuQAtX&q?czt2l82BJsW(JGDBg3cNrL&-$<5Kkc`zV2(Z+K z7UKXI!-!+)%aL$40si>&1kC-f%ZaH$OuBW`f$?{MkUE^>cQnx!M9wxyl=gl2X5i%e zcb>0-Xur-c9XGsZ({lh&nIRXz2BV|+0WzzySXIKVlaVe?S?0jZQ zeJ@aciorz;-}%{RpJ9+~qz(pD>h!|BO_+^4yJzZTQlVE~;8}DnO~?xr1mvhm2Un1a z9~oW|@JA)&H6cVOA!v~Gx|1fL;{uc_%qbVwbdEv5cst@JbPyWa24FA7s=HS`yxy0h z0X&{<@BDfDaR3h+Nn>cZuk_q?bD|BN_$4teB7&R)+hGiSk%KmW5LW>jQVF3R8Du8`c2V{`s0~3UY+;)m zKRv+~+ffwHN$9S?nGx>)8KbRu0doRI%KSnlpIbIF>K>&KK1R(UykHpHoZu_@x=u65xk))Bg_v5C}^OX0U<<8f*DrB zzB$;~F_a`gq61X-Z6v$tI89n+^~^E?FVIeQfLg4D7;v!J*vRJmjofc+O=Bb9Ol>59?EVzc=4?6-D31+5Y%jxn!KMWE#B5A+fTV^*v?Ji&p91d>YWe>D zltoyyWv}VS&yQX_^V@xlTt%=a>}DV-s!u$@Sw5C6ot}c_+9|MbBTEhXhA+TaGG+`U zFQ>eP%-(>TC@^PD-;iOer3Qv=o?r->QIejalJa^j`LP_~Oj8uqkN}rMxRHUqPfTPb zEr3G0%2)-Jjtp~!sxN)qo}Z7hb0WZaC&V?)zJ}{t(Q_cnLdQ)~;Y|-i!HgT3FR7=b zN{{QOAvn#pl=pd3(Dq?-Rh{~Q^ew#t;K)RV8|Rry>?kHi1`;K7xFtl z?jM}&J@5W`Z|@mcy}#HwdGUO&-9U_Ba)(E|0s7e~>jQ%cGoIP*L?ylk9~v@B7r}#T zeX^cjkF!++xeO23j6s)xcfVRT+tdD-WNSXU2e{fLVFe!BNehn|$hJ}qOOiSmind!& zMrKvduyUyOVAi!J?l686KEUPC&5tNbs&Y%GRPv;}LcWb^oLtX6m#hqQngwisfK zG}maB1{A#zcQ|h|WPE1< z1a!sh^$W^thqs1VpDp9KZLeb3zuKP!VNwjiwY7oog}*s=_nw_Ru~_f8Oq4N*jV}1k z8!Mw)XpkE+M%<6gl13`^adve17~N%$p6~C5obsbl4u-|e^xSQ|Yajqv*bvHRJNrpx zc(dL`+wR4J2$$?CAg)ESfA7e^)*&J=(gn?eUxkpQA-N??`+btvya-{FVgTYGl0T_Q zlYo5yVmq4p_my741qnf!*9bLTs?lm|N)aiWmm~<<^0gfbbNMK^mzQz8^Lj*#!;q4| zqoTkiD(nWKPv_H3s2){qCl(||sj$3ljxEacAHdzDtU0Z%zJ#tVQ{OuVM| z3awn3b&B_X1MJ;<8j%p|+~6FX1eY|EI2)A(s|~GXQjP2Pm|*4^nWqG!Lyxa?yfwTL zxc~w4TVojOpqrO(l%@DoeBE$4zO--Fjji3&Catf45~V0z$$#+Bt~x z)JBKsDXY-4L`GKwA2)0G*3Uxbx7KJ4K6<^^_0!CD{L;oiy5 zN6%-0tjNY!<><}y0Rq8V&c+vJ2pFUPEHw{j0Osh~-rP&bETp#aX@q1&%I@eDxWnHRmzAQn13O?{ZUYdt6rc9!&;= zyC*Q0^I{*g1Ok{Ag$TFnZ;x zyMUXHfv^U>!MZ~-(^#={AbUw+;-sJ2LOU;Zw>1*Jk8kMks8InS>12j8@v5}iOuj)! zvn#w>C)-O%5PoXoN#a${n3?Aem@M?bf&2;%_9Cm~_M15Byb#j{y8cF23h)XLw-0j8 ztP*Cl)1t#c_QoX=l5-4b$C+dPI~$?#6DT{)fb+L-RiB@k;}^%iVL1!Yn2Mz@7ub{n z9Wn8O*3in!%&A@oV2yk(wu0^~$|40X?|%`yZAbk|Fc!_0V}3NB|u zaIS_r6h&Rv5hDku14i9oer^Ugj@TRb%Z&89AjA@Ls9XrFY>4AvM5Iz^EQ02pDD0-B zYA^d>Fpau;*co^k5<&>?+y#hXDKymsz^^F^TU4s3>IR+N9E^;Qq_I?T0XAZ89a0Eh0xpT29y zvru75!ic!-bRi&%U}U8+dxhYA38lK?`;u2f*XNp{FQdL;*J-7R_ja$5x4Wl|Df5DS z-(cW)(nZ&H%Rg}~_f4R|dYt2Ia?0hs3di&~Ax96w*D(-ua**L2j74x}a&v2K%*Dhm zZ20JSmA$e0dQPS!I~vf5`f(ot%d5>v;l*xx3wtw$xPc*Kp2XKinmvaO`lI4`uB(`Bjdzv1{c>ynM!Iw|1ck`w+-3{Cp>YrsB?H$k$)mM2)Az#EY& zTHw}sJ%->&d7qnHuP#0sl znz6dZb!;HsmyPoOhC^qNpvRqU#n+IGwFb;g2Gq5^60Bu?uNu^8xJ`KG>sGeu9rhc zr;a`sEi^*0)%Kh*{Fhy|S|_OFm4UIDD;&nBuq;(Y%5t(5a2}MPez#31tLak%wTg1Y z@F1A|RRlnhe735ybl=yxSRD2Cz|}=LaN(oG&rxvR4GIlB7dQqSNOr`FDmB6wqI=gg z@@APOpnQCn>cd0POQM`fg_mh?NR@1xhro3*iwW3(Ga?T=j1Y&M&eENEC#ctD-{d-Dn`KPvR(n2Q}Sgm#hHhzMv8mF;>X^NnUDu!OuBpl4$OyHuCZCxXxw`|J(kz2OwBdTrOli=eAwL~}Z+%Cbeq1}t6W`@% zj)7y-0Tw^QhaG)hASG(C2{liq9c&C98{%Ei;=XJK>hCTZEX!P9zD_V|(pqvv=F)ks zG~ELbDKq%=w0?gyb+LJ5&8sb^u@7)_c%!P*K9>zFUANb!B1E*?5FK%>7Z z&Z?6PDtL}Wl!7S44lJ?(x{WQE!CSF3B<`(_>#crj?=k55G8!Bx)s2?4ETk*5@ zwwG5vL`jc8I78q-%aB(r;u``#@r>Kh%C{uCPDte7CK%JoJ1!z-HJW84DNE9dH85Knq&rQ)1o}jB6 zFJNt567qGftg#XPQ0h+`w1B<@X98WRK&U3MUb9QMl+68ES){CQbx;13IE*tC`+zMN z+o)021HG!*voF#mg_ly3>m>PFw#MB-N2JW8+XvCU*6*?)2H67LDxDIwe_?hBIXKAb zLYg5(aeYM;l!S-@3wMcEPV?7Vs0Y@2*_*thXGaG|kALm{c(DDryMMTI@M3qbySsn9 zeQvK?qxpkS^x7m97H$TCgvP8xDG|BqI1|ml9%M7nvcAVc)b(iaC2N z1GiFS0ow5$=pn~fo63oQq;uV#zvmcPVlQ-lvc*L`_4q|*i`lRnz8AK5dh+i6xU`FW z%jhB=poaEQR_rEY0w%X~2h<_=IyiR`jfLDT)HRbvt8P}eU2yrXu44)TmblxUonibq z?3Y6YF3>T|21ji5z$`pjSGM_y0c`(;I_G;X1Io1p7it1E15Yv+(1d9R-ChJoi&-wV zZa{;I1$rHhvR-cL+3OEn8IGH<#`ks??Eb|^4m#J3lPl52!jjQN)FM6CPPmVE0Q?iF zhb12_>Joq3^29vI;Ff7i*iN_ zbz9@2;(*U*vq}qfJB_WXf%9W>OaLwIs` zs9L7nJ6#)jaxc2$Z;%(~S;U#~8;rr+E5ipbXtAS%JS*pn~0&yLY-AB;PhDi1ru{ zF$Q>GHi6A_G1yMcJT?FCjFicyh!{y&Wik4*Vp|Z?I9U-3+pra7w7YtqgV~7q143!D zh0qbEqqNv!yNpaETY+HgKji8w3=nvgR~PJ&U+!P+$)DmL)-HF&=+4G?VvJM6` zGQ$xwV0RUOM)R&OX+dfe%2s|Wo@H4(ZUKvHRgh-{9DO~cW_SP!mYd;gpLNr)n9PP; z4fy6@@Jy93VF%)G7CBm?u~XhwVzGq6Hiy?Qe#FQ6<&3_d@~zHin6N^#4F<7)=bNlh zFW{Qtw*A(Ey=(<2Y_;M{b^%I}tQE8MJ%Be6Ti+E*5NG%JFlBehsyl#uC9zFTW;=$c zy28?q4sR+1W}v$sVu(fx(dk?Hdd2txOLbuO)H;(xrpFZjkp=^_o?`2rB4aknQVd*Z z+NfaExE(9052vm*!}Yp>Nhj5y9NV%qFK;RMKHt`|t5I7I=zA+lD2J(+mN=-#G&X)s zNmYg2#p!W7?}6X2bAdF0?-RkBttB4~(O-Ho6eMTjY4}I;{Va*1jg1q4s8_>0YpESL zPK#wVyFOzS@#J8`{J+^r*4EY_TTC5~kPvgy=LbsG@unw0T>dmn(cG*GdeCVvwjZ8y%$oDtZcyza;>(^ z5Ms05|GqtXR`Hy{K%6q1dLz~3biQ`DARH}}o8Wu`N53;=Mf35>cEuJlC=+7EuxIo* z=^IK!`A%zF=SL8Gz(SJ)!f~r;wL=L^Ab$+Vesph)t#GVwXR^kYnx!*pTN50?1_K-c zTajIgIA|v3>M-7_@{me*8OnwBuBv2 zZ+weU(lIakd=7ws9zPI?*l!mdL0qf%H-iSHt>o048*h+%lJqCrkM=uk z?T(h|oUowYDdw}OFD?X21CyH$n)h$T=Gz+>a?s8D(U)fB`{k$$`Edg z`)(^T2C(CWtRS2pcu+!+74YL2W?3I0VnFct(Y;Erf>ts>3yv+f5K3@(g@AYfmm~+~ z6bv%II3uqO{;(AgM=yMXErq|gnmd~lH9z|pc=_3 z3@h%;RjM6YQJ#jL>Ykx2YD53pjnF?$jBt(CY|7mebp(-eF7D0T!Tf>gMLFt3WVao8 z0_^l|X2Zy6k6UjRBK3KB3T$(nUqvDtpd6<~a6EPb*&5!nw-jVl8b=EmiqsFYctpo# z1vFbVOtwK69+~zF=3!eGb;xgc`LdjhU)wT6bRet5S3t{k4EhE44hBugk>Qdgf{xIp`vCqjt0rxEBqzD_vqwX|!q{BWKYFLxrPuL3u9xTSiNWkd3z1U>3x$RR~sV$QSy4fz-r zjjUYzs4*&$4iIgCLAIJ+z=*13lxfBG#019|lfX0Ebng)Z^roC&O=?G3ag`yJ{H@iH|`jw6( zDX9%5fv*ZvBO$1zGNu(wEh|h>c~-B$*`z)e8zyJ}3@@kbbRakQx!KYPD+ir=3+#g~ zlovORWc;A0Onjn*r_HOLci==`n-hr6+#wu8MTs|Bbk(u9fB4h(0jW+L7Wi8Ue98=) z39BnsNld@9N*_Gcg;`vOj8~(4oVD6EotBNWK?zGS0uY=B*OK^;ZmcYP!}ijCIUEav zH+%P_r+F89nw#!DpA`1Kfd*Mowy-)XD{9E=3&v>R3x(l45SRsBhV*cU*_;%7lSvm- zHPST~^~a$h{SQuU;eg<-wxAmnPIu7KYfT=!ra{H~ zEY-Pa&4ABwF3q_(vqcuxmodesUmX$@$+cwcB_l(w79{KurEkbGzVgMq`Ebz-j3?+3 zD^r=0cLGT=fVnd5QLHUC9#L7aA&LYUb6~z_?7c&}vU}_qeUDt`DQFtgu#0@iW)TpV znevBou*}r@o~l4sctLJx97gHlY*G;N_6%dbu@@W$c)`S3885k?f$ecdXMi7Ygx&g3 z+b1rv0f&1Mi&hfE1d~HjVuSb?*A%J4)6;t9Ae6R>v;WmbjRS3sC4BU7koJ&Kwc#=d zALb?-V4+5VF>078VYMU#ghSOx#I2!0rhvRK8TY23V?Kb^og><*)1)X>Fom&By(U?1 zIrkV^Y7B@ef@K7PgR%u2kY@rs@ZB@a4nz@@{P`};6yLqG9S}(+VQ@fbC=!5}gCePc z+YE81I7&2JayifCWe;r8K=0JSod`F(jldC_YicA zBsiEOupNAE#)2%rI5^pVcCfcZxArzTu~XPTCe=FnsA`TtWta4VI;dEWO+%8?KTY1| zBapzMO;YSAYoZ`@Imufeydv%;-#Ijk#fmHn$1%_ibm^?5gr?d`0QCKBQO3$N?RG*NI$@ z*Lzh|e34E#T0eC3Kj!EpyQGWxX&t?faT`8`VWP!MM(MdJUG_BFduj$W#dD*I1-A{W*3nm zEE3(OEHS1i-8JsCCYO-~^)k1+tTP@QUfA22qYi>8bUN0oXSYF!(IR<67$zA z%Y7LMqSnlB`)2)$)n?Y9^0jf9mu4u8>uCAGr*p{@IG4JNVl%Zw1R}+E!W}Z$?pPr- zCs!_mcS}>ns2gyGw=U>fH_qQAl9H~+`gs11qMrmsl@$LeP;~4?(MCRi`ZmjLr9jfo z`h1Bf!`EZ^>YN^_ZNwp{j=3Uy=~^(w5%$kb}rSx=T?Fw zJ&HX#WdUqxI z?PF#hxXc3xSueMd(-ROkG_9S*V1luTZ-UTzYrufp^G&_^4rRfKd#xm<0Ty~0Q?1?~ z**m4DaXLoZydWhTzzz7~jqx##i#5321R-@JH^j;%b~|ZWj(KypbV+Mnk*^)aL>JzP zFKsEom7mdtZbgr&?o#56P3u~&6z>tnU|gUbQ57rQ$g{(0oTill>s5*u>^&MJL~RET zNw|E)lc^9_Kvuw$LC|Cjm*<>j!(Nt*&@T}d)~3}__W|y@Ab@*S3{5-ZGmdOBlF8|) zB+@0N9uvD3kpK*0t+uK`nmUv5 zmhkE@Q1UEdY6TD2t%0__Ss5E4m4HEN4h8cL=jyo8Dh0>~LZVBdKqewq^~Ld9^hufq z_F1GM_lTw00H<&RWt!gT7+2EI%kO0IRVvBO?@HXi7~Mr5Qn-6k|B z^0TXw^$z}WZB^+Rq@HsbUqYD)4+`t~2-uwVIE~#nxk9pzw~nR}Fj^W@rU8(i#v_9! zm`zYbII0tv$Vjag)Nw{2bgzhCU%gtNWr9#A1HA8Qb_X=~4nlLxpuM>5C*0wS=?qMq*sleak$yYV=pzZiaGCxUaMuk6%{u@vbg_*|O&L!w zF*Wpm8nTeL%B>=cPw?w)$!g7mRdO~Lo=OWXo!p{w=x}`H&Q>Pncn%BmAoO>cb@G&- z_FyAN+OtduSyz)ejoZ_74ADa{0!%NhvQ@~?Qb0VFx17Hy2>&s_+-R)s=QUqK+byKo zNNX>lQBCUbfzNyRF+||WFllkh#kAntEyhMm^ME6AF1D%Siadi?=dj!1?|drhBMRD6 zClnu0yY7Gzl5FKB8Y=WUT=VvFU_rtIbasux6nKMN#=$Hv@x@( z%_*NsF}UxG25YGMgXCv|7DV3P!|UCGap@W#&k^tg7*J(65*9;R7b7Q7Mow+VO@J+_g4UI*dCzO=;LPmb9TK-d3Vu0 z*UMhppy4>qV0$IbXW&hC&51(`$BSdUEJq+Bw}sGaY{!}ADqd382ejV_*`bm=3&QRD zD$sOM93I@rFjUe3Pt#xNbzE|*28fREJiYG1cv@3=RVXo^;?yjKnrUv`sR4XsRy#~{ z>$FRyN{M`DNdwk{6LC1CJ0ae|dV)i3P*uAaU<52eJ5Y^9X?bK5miOTf={X6P=%`^@bC1 z=!Iai{G9=Kj1fVH5K0aTke3{@$6-QVzuLqDX1f`85HnW1`&s8po z?H*AOTVbczZhHrFx`W-RSZtN(A&q;_9A16HreQsFap)T!q7T>b&t6n$PL8dGvmn)8 z1uVd1Kn~Zi5y0WZ48{oiq_j+{H?VPlJlfF8&t72V0&-S?x&uyVm?%>Kc+JNy$L=i8 z#^^#R4qNE*Ov}pg9T7zN8M<>z&juW0n^b}*0W=BL`W%y-$&vuk?qV1WI%Uy#4bp)q z{5InOgHb<@?wGx!`eko&X<$v>)8aiD8CztJHJ}Ka>WQk;PI%SEK0%%(1E27`x)3%=u>t zWDClI3{xywr+BJDtQE%EeruqG^o6f0H4kk@^JxEYw|ji@e1GSJLfC=~Ngf#uz9J+* zI)6`QTG{3E@aXv0V@^_Qld%uWszL`~fwDh%aStjvwZMv7g?qdRYthbr+1>leh4pm} zQi>612of2y5`+(vKIe)<3hYr7A_=h7c3=+yyu^x=c2+}aYvLL63JO3B&?VdD2!!bd zIUk6tyVLa5QQSH)8~QeY+;zy4i_3vU18AW|A->E$Sj|iU%nV*#(sh7E#B5A>j@Jnh zkk$|@dzYe?!EPu|xG5`G^%0$HBF&4ZBP%_O&}W7Vx-LjQL9;~S+>tS0#9=|6j@+n` z=z`c@WE^T5ZN*?RmEK6=Kii>my_#Gybtm&?~>|qk?0MhsQ-n^Byh%H18HT64?}7(q;k26(gjFM^E>j!Z)wq z=aT|WJUKV&tJPKW*NUvGLz{0sg{^W;x5N-O76@HQM>hB~;|eRT#oiTMprpWtFA+KK z8IjX_Cln*aLfX)KEeKQ@My1BbG9)?AMi>spA>j;K>uubuWgT&uvUg}Z z%AF!K5Nt@0k}>aRvC0<&R}it;^Ah&R3=$2xX2)Jr%AZ^34bYFmKuwr~JV28}N>O3U z%OMTV-XMvA5FG>rGa%+-p#JhMGA9{^vg(cUA>i>c#4{7lrWTpVvA=km3a#{AU8sUW z6RXByQOcfyB{A@zbbv@y=uj5~@qL6az`ezcu^%s|#dP($?NcXNp|vH9gBf=_^0EHe z^P`=;?iSjs-HPQ~?Y}$J8Hn z`p8D5>$tEZ$0wW9`n zbmPJ}0MQYFT*S=~EMZ0f8iJg2uLALgbW5sTfuUX>+L*i9kS{S=NT~}|!Eyu4O;u{- zG;@q72k9kDa0bme9AcLk(0tq`6D*sqh8p3DxLFN->Kl$CH=UBV8pL!q!cE(yqELsK z0Vptc)J$H;hOWGcB5OZ_xD44_xwusUuTn=p$H@Wjx0r$9`0lgnnhJpL!1mbVXyCC{Z8zV&0lt97yzPP&6qVcLj5(6 z34B_o6wG!LrP!=dift5ALETJeef_9clbFIjNbM+ zsx-2BXcoH7a5O22Y8T8BrAC$7Q62NN4qot(#%9i?8I2Mu_{Cy4Y?(?%_!Yl|9?%nhs(f55rLVYzJjLp6vcOC6Jzp}-g|7nPc?GM)-59tL1xaEi%;DDK=0 zchdR6I2QnkBelZ@yXky!G{lqS73+|@riCtUOlqx*6#PYzzk^^sW7u${P2g+|Pqq(t z5B8u;K_~XlW=s%y$(Hu}*|zcBAZk}yArEwr7n64#HoGu0Xff#bcTwsAd>`bQxStB| zmf~z%GJ7Ztg9;@`W^Hp(!U04OnD*}3(vymazT6L`V;70e9+kfI3&IqR-kn?x{VTm0 zr%D0vS%GoJ{)0)*k3F<*!@PgfUFpe}4tp&B;A7lBVT+Pz8rgvVju?GYe75dA0TxH^ zg{NTjE#vd~E#PxACjT)%>x)L9OY`lHBSe!y0j3}~JH34*lb!_6?C)E}wUD-mp5ViX z3y*c~<*;+3FY^)^4oyFMh326^YWY4b0iuoJkFWpcG6x9n`bI#Rm7t9lBfUl|Im z-b*2hRb?`+S&6V50bPzSNV-kOD()*@olVC5RNYJoCLxwdZdATtXhO(x)WjlDY!*7K zuC3w)piFna?n*~w^s9?<;MSl;R-_zI2Z;F+X#hFHxKiDMN^C@z2yL`#w$@X=R@JF- z>=kO{s;lE`_*wWe@@FZ!L{bP$D$=RLa8RZPP?vZfyDOl&#U^T2XYEwLE!bz6dm9$@ zwuFpX+tJA%|D3G{b^iS})_=TEhD!=qCiraK%0G~sy>#=xR?ZxIHWAV!k4qY?z%7BA%2r=)y|@F;C?gjxa52 zrv`bLlR42+H!&WHYhH$m)Q<_zsspklI)Hj|TU)?`ofjAtxF(D^^H1{iEH5fhi(%~_M(mAjmjdyy1k_pdq$20ZBzGcvem zYqrS>T4FC{$M9BUS-`uZJrw|rCT8$HVqCWPM74?PR7@VR%R#|f&&Qx zHw|=w+`~A&Al~HG>Hni&A++1^-U;%(f~(fxIe2hR>}??Z;!Ptu!KXAfGq+COnW5L#T#k2%EEG%U5u)ljkWg|zXT!4y`~&E}D7fjbd$1RG6!W)xwnQ6Y=LAIr*eimgI`sVN&d@{PBm zMO)}s5~A1P5sM;FGGc4^blQ$3BSVR&Q!_H`U6f@NH8M;nb^{8&M2k#S94prbv6qD2 z7FZO}dC0LL+!gZC^Sjv7IVx+~ArCp1#otHcA9-Snvys-3VsZOJCx1aZ6!+(L><^#g zzNpJc&??W=x7cOM$F>o3*m|Mv0#kHb;~7-SB@v?d_kZamPoAy5Fn^BAK{^5^lvNb%HDz)lM|Z_1nsQymqnlyvNrnlt zIYLM5`QU6#=CF&D0q^epxc%bbBzgGRdd<>F&U-Z7;w3@HHRrK3u;xgJA4vVEb0o$R zWRdh3WIk9>N7Gt-BX#tR|Fl(Xup{ zf{~A)TuUu$zBL!FY%U=NXrypv5=YxX@L01?7CjL%W(qB?hrbn&a_gVSE#m3Kp8V`9 z25KIHFji^V;0)~r)>>io!_PJvm)kcpbF8bJX7hGO_D7$6wmD}{YW-2%;_PRG%rL`j zJ$5fa=gZYmc?!Av43W-8XiMhekqy#oAe)SNLP&a}QtVW%tFa&P{^9c z=-(-ls12QGP$Wc1o=;xBeeN%SpX*Oq)1@Rkrs(%7yfbP2wN3;MKugv;lq=GiojEvB zqhlD?X*#gc@};Sa`RqlOasTjS@A<*r_D_3eG4F?K2|?_UJ|JNr$$-_`mcDh6?SaUM zaN4pB9|-_R4B$QqvsQ8m6n)zrE&~dkK5YjuPh}`jD^68c21F=Ef86bwoTSi(1qvNg zz@+u5=Bi= z-Ml0Dk;E#cH_-N}v^2TJgl%B7?eT-1DyyMM0qG(Nn^Z$y8RqK^k-O}2IKK8Qxc!u# zoT?9(@t3CuR%YY?7*F<(kAFQr*?anML!2k)h49n;U-ot}%a65j^aZ-m$T46yBQ7nA zyR!gI^Q&>tT0{4J4pOCfdI!12h-HdNWpbaWuNUMU>GZc)jRp+xRmuHRNKlslO&@~^ zIMV*M_||_DhV?ibhkA~{b;ePD>pY`QA-P^{TZfh;uz0VnBj*r{F|33W3+x={ghL=9!1}?NRgCu=5bto+)lU#6i>@FECGG;@g}l4X%nq zbI<1Bg!!>%7iSQ_0diwTbf#=>j+us>5Q7>oY`}%T!86gCkv9M-1|{p)prEuFuJ%)o z4`45592;vb_xC;4iX`PF_LkxJ0xr_^w5x{P-87^e>0`+a#$)1PO z_viBA(5CwfcyK5yhS(|V&T;DpL6p(?UL?^tTV^;dD=WUJJZB675S_%NO0?k<8hkO> z?Exh!?KnZ29M8wXEU-BvvW~cAbcialN)4K^>KwlON3RVW$K47Q>MGll2MnhAYsoQ_ z5E#P)hVPkeqCqbz?7Q4kG`bW7juv*f^SMyelva#OfJtB1FlmSLMKX!-6}A*ShGe=> z*bU1<5J;7K(g~MmYTa|mzhdvI}m-RCW7GLzfVWiGH1PCM;Z;+uAj*^4@~ z9NWyo2gZ>MTe$ablcSA0ZrFqDX3%M>huyMEK5>=zR>6uNLEi%*jgTmu~3S`30yu>yQPWi}ghZA0lBThIRdL+t44+tweo>r~sY0Z#_<6NduBr1u#_ z)p{U9VzVQdypN~PhW*ihmoU@l&>*f*mhJK>go_Jul>N) zj)W|U=FQ%3+H(r;6`D4wKKoExI(>m&WtV}XwPL31wp0tHXB@jdhQ6;*;)ZPvZp$jv1xFb&A!<` z{Av4O4)fx$mHW1{LkZKJU6B__!$4DxNC=L zPVM^fxa!||>E949U0?bnMqU&H;V}fz%oO%@KHe2ka2oqM7w_t^r}OF(Jl+)vMaaH_ z7L!&WA3Gygj9vqIR?wOdP^RgO7hWYU95nM@iiUp-t~PcU1zgnp{4Fk^W^t1nF}Tu9 zZEFV%E>i%^w~2KTqqq&PhTB8S;JWYfJxP zDpAiFYzmrCn0dS!TcI`LOgjSzQTGw~I*hbYWGRUUmWT6D0`^T!;*j$_j%Sb}3a7z~ z*ZwFBpEf1>*Wvc&;_}455$rT^_H?QOP}#%#JX`dbM+S`;J7@oiNlKs`V`bx|dVMsUu&NSdDFywq}RBbJ)x^STM7*p!o3v@t6 z#VdB-a7qjW62d#Sh)5>WLC;2(wAw4L4zHWP5_X%9J)ZNlSyw!*ekF&6m-GAjg z3*CsW**}hl%{GB(5UOy6c3m};%XDjojl=7x)DMnRQV~+Fxhk{<`7S|9y+)TeDTMMX zk@riS4*CPLcnY0#bZW8b(KD2@!*4Wx#@y6H$9WJ+g2z&fn9M;*ygly(I#_P@8Ju%( z&l5vp@%`PjeXY-d^48TX4NSqHm0?UMhQ1A9&|y1Wt4e^7!;~h7nbs97s?B)OtY@eD1&=l3S@co!{?E~b8 zn6k*8SJc&}JE_7kIgFnzZrgnn?wW@t+_Mesp}C=M=wX zkt~vSk2dq|BmIxS%bVhC2DQ{35UbqFsYPpPjDo?*tKLS(?=qZ_=pLY3!C z!pJ7rXiZgF9Gg_ZnFOYQ$RJ-rH4K*BNm!FjnYl8~MUL+NBC*QoA+2KO?A_VOluS7x zC##MHkceFe1q*k_|1}<|G|%>@-55=YAqlsarbG_-&EYsWtlFp{7?VB4%(+pvQlBEo zSXv+X2<}cfQ2afn`6;-WX7195SoB0LLr4Wcj((mtMfy3- zj1-z1paV}x=HhTG(FLIRZ zQA0ugX(4}kdhp{u<{hSeuDapVlCFvR0#or&H5H+?Ge~X%hNNeq%McJFN-B8)QO_Z2 z1A#d*isN4oPoC_Z?C-cv4G(`^n4V!rT8}d92&zZ=vc=;)65TF9i0Rba&-}Uakxz*@ z%UFMT)dku~@`H;T5eagzL%~Yu&dM4QT=-scZ}aSmz2xlmN#TVB>ZnweHtUr0BY_60 z03$K=2>siLetN8o{oz%=EAXN@L#QXiA&Lc1c}_E&VfM49=tfASM{X8AuyME=ZS$ z0wR0H(TSX;aA3}$w>2==Xs;X=ql}%P8t+j8!CXNkF$a>@rrkB_qdf zOc8Ir?g-N6#7=wJYL$WB7h_~m3U9Nl--F}bgJN=dnvH(onx~4}2s7auQaHW_E(Pt` zFqgP>%*3SiqL?TR0zy}<=Dw*{xU?xPgF@SZ!i|uslv?!!evDQi(8x2FvlPiWs<6R1 z(ZW-}cx>~nWKjYiQb(v`PYJWCcucWDr5q!^%&r|Ci3wm9)y%$PbY&oCoXr@rvGTgI z!r&}FpNu$RjL$MkaJcn=xmrjm2vyy!z2AYoz_$u0@F?~MsBmu!&N|E$IL;s>Az#Fk z3aq56khTu!Y?Az1PVQ2)w`xq$rRc0i3*lPa38-u+nU1nWLt*RU$X4(P1-Q)He0{x) zL3x_?-ei7F`OrFk?8l<)2Q*wS&uB8OyUwig7-OoSFo}MaY^v(-$FbI>~gsoZ1p`vS&D( zRb*?(66Hp;4}9IR4I+XmMhiCF&@e^k&AGR}uxIn^dcLHCUM-7&Owf5&WJK$-bTr7t z89e~$^gQ4a7mzbkLN9Bk=zqrkoqD&8bSx>YOiw`rsAY=>{w}pgLj>iGI68u;rQQ4z z*8@0MAQB{-fprkQKrda#^sid~Y(62SolirA5{PVw7)NVHD`FvysaubZ-5{~ajsRbz z`;((*M+Zlbf9?Kwu>H8Zf2=ulymKy9z)iRa9*v#cMWH7CfA-#ezm4Na7|p-JQ;ZoU z0%-6mN_NCZAw)tFViMp7fR?isgi~7B;>r~axHgVeiTQW>sy?4hdg<%!4$qa{- zXUN(o$@v`5Cx8*{Mw_KSoS!N=9QCjveQd1Un&G<5TAUZ5NNUId#D~%N652+sUi^

    2. %Fc!pdC`O2EE9_OKi*_D+= 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%0Aj8KeIs~ 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%0DMX*44$;$YSrNg1W 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

      d_ynf#OCmk}3@bVrEBBM=d?syu8 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

    3. qAu&1HO_TW3 zIqNB$iaXzL7`EM-!HLSkWdUSEOgdf872|Sd=vtAmO9^@9u>UxWgtgWZHX<7vX&1(j z4bEp6RSH&$Dl{}C6UB6&&F6s*Y3z?fSSs0h~wwN6fzoh3O6#ey%?tu zlu@K2l6V#xqmWSds^nJBJT3erNfXDqas`Ncq_K(*Nl+L_pb^963o*`IHf1P5R4(_?{8{dm3>AA6l< z*ubrXm=5sUNw_4()do;!Ku$Ch*PF~&l1v4N`z+hmnFb$euUGA5m$Ob9C?wfGKI>yW zPsS}3yVai2zqcy8{y~r|!({kG+*IbeKLW= zX6#64W8I87*BB_1i9vmG!t?yfHauC)V0N;{%k&Iok(tg;Xy9N+kl|^(P|4q(3UG-z zY|^;$Ee_b zWYcGNl6NT$PAUNek9Lg%Q>QPSsSE!oRwJU>EbliYeTGp-(AP>3seo?#EScIxH zU-UZTS9>i^ZcTO7ZrDC`jC!@6#}<~uGJl9aBXjRpAnP1>@}e?od(~VKzrZ)g-)z2y z{6bSMg@r~dkQ zH~(vgo;7uhXyag5#FIjvyoO_~r4}^GHN;SFD4SeaUuYDZ6yA3a@t1t#40yw%v4tqU zK5Kgw$@2AjpansUfm0u&06`2hzJ9#_D5_8-_3+mK1?&Ur6rTPi`9L|Wn$e}1#CB_( z1iu@)rK6rKhJqHEOm05XP!$EmM%`pC?9!n;Zqj*QCM21l<723bjW#J4w!t+T7Qxez zlRz82(Y=%!w_Db&73|uBLDPXzf76}*O!!h5M$QTKe1o3T9tZDjL|n&B!-g|U@+M^C zjd3_jf%^UK=uv7lhgLZ*g0&^#MBKxok=LD00*0;l#HCElEWOHdeV$g~exX}soUU+(H*j{4ai)pYH-&z^WL25O_F%v~ z+s9jl;?YC<^x{vwusP^jTqu*aHTt!Z;4+er{#d&@#06FBQhz)$Y?=C~ba#I_Qrs|d z{lu+c?K5u-ziFVn#w+N}_2d19`u#HG;=|+fws7%waMAIslZPF*7vT{3s`U;pI(bzm z_jCBulbvGW-Nr+mGJ(dLaZ)il0h4v`)G5?0R(*skld@4TBRKnxlk=CSW}>aiyG^32 zbN0a~u7tENW;unr6qf(Q#Ld0ff=0|f&$Uft^DKMf-m~nk-_h!53*L`gtXY;t*oXfG z-}~p5!*O-xYaZ~5vE{SG_rJ3OmjCnz6RiK&+kDJS^i2ODEvV|6h;HPJ&gQJC7|ruA z%tG+pqg-7L;NGHx=D@;pHQeF-?0i>o67}{GG76+r#c&@Ahdt+0IFt;_ubiUyPNSXZ zc}S@_^Q6!jI(jJcUfT`lA$d5eY&j|TvL6b0nDcr&ov}&yfu_kUR(OS8Yki>i7QXn} zd8GFmIz4}5@fk|5-bt=OE$79*P;Fj8tbfzjE!nc{u_r%)T=PP+ksVp{Nz$LOwSO(A z$=tU8EGN&|X1MxoGrih?#o+U$z60i6I)f#}eBz+TH2tyQv6mtfuxRqn#Chy#jN12l z@d8T}==hawliy~n_DVAB{!ZN(JIQ?1&r04Jk!+)2XTp_~+|W=`GtO%JGTAh5Lw`IQ z&P}X&Q2D4K(cXQMVQ!(+v#%k29a(ZrYZA#xrT2F_(6veJO_Rx<+3OH<#stjVLF}aA z!~Rp0Cx<&{VNZ{KZ^G^1;tl5wR`$DiCTxaStML(Av&;01HSuu9>yQuF!fF`^ZBlJkmDUGOX9NBl0$+oJW@=&WVgzDcL2Gi(JX zYtMlj8RLW-gyn=0%W{F)`=qCn@ocue_oQdocabXq>Kp^!!)8KwBK~epvoUC9N%Nn^ zH`Q2&7Hq_>BcqN6W)3i8R>s3rKeD|OqE>89S-+T#nWjt}rZA=+-%PP`&M<~GdrEeY zAD+0slG71n0b$+lKEo)dEyosIREfUkne>p!m1Uy5Fje5o?{TW3o-}{TbQ=B33NKjG zX3pZZ$aMNPEHd-%+20qunLKGs_)|=K1Z++ElEr%dq+NKt!#$aYs1;SjVPW@K;y!q)`i-Pihsdx^Ijo%uRp4i_kd%NE6@gg1@^8E7A z`QblwHYDc6*AvJfZ_@low_0D+Z!pFo^dP!-drR$Fqo%c#i0R5`#%M@46H$bZ>p%+H zZZR<}D#2A;>&hQ+I?_`aXkYdD2!{~)|z=ht&Glm6f0O5-Oo{5A{BdQx+WkuaD@b%_y4;^5UGb zrHw^_J)hy2NMNYn)oB?1zsH)IEyP6>BaTG^CjdkS$_k9XF>+i+^P-q@OZ9N_V{L@U zFWCxe91LJYrmWByRUSP8@fL(pucDwHBn#N1>r)svXgl=BoYPPr!kcokuN};r=wUmY zubly2g?s&z&dpmhL^R3cjCNfkBM9y8)YaDkvet*kT#-258mzULo4nj)57@Z9EX9TQaiHKJ<6igTP5Q4SRdhXe2Or!mMwk_AX zAs6*O*5tk}N#U!C&ETYPQ|yUdY@SJl&Hh~V3urs%BCG~2OJJFbQBYNB?`l5Mcx_rb zvK*UnDQqV6w2$%9$EdtAOW38u(JmdExP71NYEvv@N0lga{3?Rwon!*nNVFHS?TXe0 zXqy!0On~oD5=9pYE-$lGUW-|kSaP4M*BC#HOtI{MA&;*UY%aRH@J#LfiS&pumua{= zF!pG+198#c+*Q+@AlvN`PawxK`7m4F$@m&0V7?7L13ax6^x`zK(8*CYA4)nfwiq0b zk4%xMD6yin?0B73r6alEw6R!l@=}Ty=QF7c>41AHEe;6DT=y5KaGTG39w+_*O z)%88)F$N9nyPMp}7B{3Z8|0wXqSseUMaHTPJ1J+->o8^+FN{p7FZEalyg4TsZSZj054(&%Z@OLytp+uVQ6B7&rw*z^~{Rmn@%}e zSJO37(3C#NH_%)+PlCKcs$7D+y&vBq33&3IMEv@0djIy9`8>D%348xuZQapBi^=-+ zsK{+hsFG{|dcwRCeyP@!)4(=vghBz)V6s)Jq<7?;?0VLaL1nrd_13B8AJJrS+1MSX zsQ5QNnCZy&0f8s-X8p;Z|yU?_AL;piV z2y0QI!C+cEJ+S{tA92@Z2MTMkS>cB(Izhe14!GGJ_U`O_+ss}Hd$WdR0{WAWX_kxy zjU|v65@8(6W-Q9pBs5L28qQ+W+}0)yLYoHzfWjqoX4EHH!d) zj;D@;vk0Z;TL-YS*L!Dd_!%|kb<)+*V%9<~dSl5>Sn=ck{#}XE!?Ecj>;?R%TZ9nB zX195UfC<|xld8FkKT+TATXP2L?(M@DwEGNS617l=Ll+FTRd?s4LZ9e$Rw7e5c(bHV zzKuybCy1;dgs4rFDeY|32bA|MaITBVR(njSxT)E1f@+)dfIC|Gnib>)FSHOD%<0Ep z;&bxE=kZZ9JxC9`$HX_O;jum0sLXAJ9%bQb@q{O0g=hL3kr<>pDHOgJx@;Q2HTRy9GbFh~%f4N6uMkrs3t*OzI zeSpy=KZ;LrmsJYXiKM@RF?S7E#@U0=)d3$bA<76H$9lRR6seGv^>q*h1dWu`k_PrI zq;dP;08*<99V1Q~h~^#Q8OW{4?>ZSzplLyA<3Mk}AX$%OZ}7mdqPf=?Z2DTcl2yzW z?bBt)R9;|6oynyBP2|w{book8GCOq6CHTU5fQr+izpv_eqaG1y9063b-WxmCa2(HN z!q>dUJJ{(-$yx}YE0DVHPW^g}8d|RM1Z)5a%NnYu~r&y6OwV|KEnLW5uoNS;~)a!v*%ewxR*MnKBpVylSBQVSq=w|nvzSLzJ17_33$dB4%q8J|G0)~U@RdB8wPv}_&3`ZU8oSSITT+_LDxa<{L zgHwbvvuCF4k=Y&?e!aW%i9KCB1l0Ca;$?l^A87{k$dZBz++G}508d@6F5dq$YU_oLuDMnL$$Ri7MM>I9j`pn2fC@mp&NL+a7_5W+`@a zF0$f^C4-Zj>AfstRV$7|=En9{xIU0>ObAejP>`CW?|Hnh@PADSIc2nf2(!Uk{5a^H z(HymgEEb@JYgfyBGEqcj{;2Mawx;ci0H3#rQ8*Dc`sYCOIt)S6JuB1okE?}t!NhB! zfS?YG(@#N9R<%wIB)jVdf6y(=?JOwURtcG#Y=SPy6fkK3Jw`o)AyVqUqx8qFVK@ew)%H8XGDtf4!A^LNf zjUi%D?X4(NAY(fqA?TzU!1F|NuMaS^edsmeJ%W%e{bD?R4-#?%7#JC(v%hZlYzaO~ z@KV!m!xDuo&1RUnKkyVvjsf-o`*7Oe0?dV(resJd&r$wYi|jwm3df-rWG%#cQ4*vf zPx=C%N@@cVG2zo^&RDEBL9{J>d4MM#E#~Aiw4$)gK4181L3{nop zg`T0ET}W2Dbm_6PX>3!2_PRW(`hWJ&>fuEQ+^gqq?(PDrwIeKK`O6P|i-Jyb_3@w{ zK&+ckSY2I2&U$38OpYw!$)(UO`6+yDY!&|SKp3a-aWTjf`u7(u4-{@kkP}ll?iy;p=cXO}JizM&KAinV>4u2gcm}Lbm7;#HCWA}ZdoCUc z2I4_i9QLd0!L6QS(?Io@W*M-NuCuTbZX$U(7Ek7D24Z`;H#T5&M6tQJL$eaz6pMgi zU+}}US+kN#Z4B0eEtHgS%0Idxk|d%hXC#MS59Sg%2X(C`Ehx4lEnT+1u(@XrL{hrc zJmAA}jiXuigx)Kvb^aHzqUk(ikcbv@-Ofdc;{LUNC6<2Jo%-8G@dCncDC!wq$si=E z$(&R4+gybw4V!)QZO&>2b5%b)+OHWIIaJ@lkLH9zr-m_-6Dbb@RFbpCSMya1&>hr_ zOculJ6ntVMRB(*i{2XV78Ia^ZhD(W~+PhKBSYo?E(%)z0JG=XHP6139hh;&4jiF^h z+Bh-Sg}O51`I%d>vcGPN!#sPYzPw(l;ACrYc30Xd2Vfj5(=TOD>%? zit4F~K=orsf`9%GRT;z4+v6RV>Gy{h0*K^zBo$f77ioEJUnW+?4054JB|#7S-~Ix_ z%C9%1eM^qXm~y_zWXWaOfCnYSG|F?s%`G818qoN$Ymg8t54_~`S9v&9nJy~ics5MD zVhBAh(*L5m)4`pTT=FQnOM~j5+XNV3h(v(HUjtx)dQ`658u}Nq{CKODjbUIxZjg!K zBGlH!E9+pT{;m#)pu%_4WNU^K1}+7*miU@L6H*i3rTvCd&p@ z6&u^EokyuV_*)&)o$y&J3i{!uA#q@yLee}z(sZR?vL~VnGILlX4j2OyBB17hSObUx zH&g3}F{VqrMJ{y6PijsFYv5mUN^fSOV%X`uYtdnU>2Uh}I-Im}zMU~r!OP=k``C|p zrX*|Tw}_V}Gpj@@G{z7yhwH=z3gH705BdkmcviWAYzG6{!1E(grEOlNY<>ZPk!i~x zSP6lEPf5=_OH2#BdRI$9*Te3~jfgpJtc8dzd>TQ8ER1eHC)Tg|=lC_CNRJ)2yOUpO zYwrU3xKc{QEC|G+&7e4aCqo6x*D6^1sq;$$U|$EU?wh2K7;bbN1Y&a`hhwsUtu9`<|_}h_VrH4qa{KpYX)OS>e z76*i39oBt+d_KlWLOA6wx(%~F3@3>M%)QVc+4^mf<)AqZkaNZ#xLLesmmJKpHqC1? z1t}X>z}md-m?0hg$s%^Avde}x7Hd=5E^4Wfl?~X8IWr`IxlY5J3?J${80Rv079Keg z?g3b!cp}#^mToa zW)?~`I1z2G`tmbAISV0{H;Nj#2iIXj3+VMtUL%?merM%wZMLbY)os%jP_q}eI9X8a zMCxPorQ3CF&qlj*YQt2`fb$J17yNn6svw*{CJqM$VQKBP44sOa0UC!2`6r0a;^VVI zR(iMs&GprW`1@w!dWF=X&deIdeF26x6o_%k=C0_0&e|3e4f9@`uD#QEH^1iH>$-S=nRGxta7i zfwBVFN=-aUT2L@xf8yi@8u4_ebmpf6V@b@p-`_oRfU4bYo-hxilLeL_ocp0rHmZq=pdDf{0gbp#b1(%2N+j4P6Y#! zK=En8oS;6I&4^g%GH}+&AM4VCp;vf>;iZ!$lAF&5#u`y53y3KrFRN%ob6%pjeYmfg zc2O+1tHQvIRKc{DH^M@#ZkuXzzziE6P5GS;z(tvV#hwO8O$MDe>A zj^@ql{p8B9RMw?vF+GDQZg z>XGbZLk2jZgi&a#p$iFo!%=t6<80N}a(UGZ@q&_^QPxNp1o=`@?Q^p5A38x3k??F8 zQmvF^?HkxeV#Pv>3ZymE3h)s*vsN4sdt~Yp=mL&EC&<4sUefL3;kI@N#apAW@{$5R z!Y;!OmP`w7&*gmO`|M z;cl-tBk!qX-K~6Wf`{IVXFLFrfqVJK9Z$V$WnEomrZSjZe-EA+ zQRO1Z&=%6_u5dlDbSe_niVh?q+SNC-jt0VK{9Rdya@ArZW8X5?SD;(;R;C0ca8%nc z0^KmLz=46a9|eU{Ubwr2v)fm#?>=-{VhSfRe@H3Iv=!|HH0cyh7NP2x4Xq^Pz^*x z@avb{9qM>nvkS^vBG zC^y7iq|mllY4uXl;y*eEzsd)s{;C1|VINsheDyTpMhXoXSXPB=UQt!DHC-sPB z=g7YB!_X9q2afvKf{ygE{k3v5%{=#l(*!)nb85sLzqjTTtWVd0JQBfkG+Uhb%7W=R zamx2Z4hy+Q1o$sq&;`;Vf+Q99tht2lL<(Wnr!jI9TL{AFC)v!-v>@B~yE)fJ;PNBH zFvg`2BMD~7ie^ro4fTSzq2M3R&dQ?P6U6ZypES`4uL2>nr<18zyOqioY=`}`ocl-4 zYbUnSRwc83TYN(jJSS|2Iy&-;rg)5-hv2`7FmX)R40m-^OVp3Ee#e+1)&R6x9&Qif z#ENNxY<5hmv*?qvC{M-PiaUT)1p!&&Bi<02R-H&_`TJrgrmm`|Yl-C(=fkVZNKO{S zB`2bRItE-ZMtVqz4%1LZ-`J;SeWH39hkBBWB+=a%ub==Tf_BS1W8 zW``uEZqx}#U9U}+RSB-w;btol7iPO{vNtEQUbNFfxsE%am>fpUjY-r!o5(MU9=I-f zyC3ecny@L?t%3G!*8FV~~ z;>8M3tQg|r&h$(G{V_dZ$7o9OlZQkJJap`Zq14nW2mzA2ZC@Z@%)y@lML^Q+MxH7x zZzRKSAK`NT_Mp|=1biVbVaLH!PbSXPG;FNv; z7aVUh#5FIxtvIDz@Nli$*b8Ed8DBcXi9xQLD}Sth4bs2ewa#lZhq*5_Evf^RO|;D_ zW7ndU(eJZ!2bJ($NdJq3SlC%zR3Kw@@|md-$R(ZX@%NLiRG;(2=)JNVM}5nqzl~=P z<`v}+o*TJ-OOq zxcM0u!|8Vfh(VpRJ$iuMI2=#@;yjW1`NRwPYky} zY1oDa-t37$a77hyfM!fF;^czQOw)ygoH8t2UF_WCM9z~_#h<3?i9T^&eUi;y0`pdG zulM`k+|XPNqz@aObQ0IqJmdMJNpVVfdj3bq-8-dPb-+)3YW{}d0dj~w<714T{^)4s z;u56$L;Hxqhm>HS9=@YZKE#8ce+!8OOcn|=WB}boUgFclB#k0uD(aQ+79duJIqBi5 zys>{&^Vzgj|PxU75dQonPr0Yz`rz50!*tQt% z;+?2l@FB7FaJB!#$U8-8(mdP4ZBN@h?P=S#&8KbK_O$)9ZQHgvZQHip^SwWu^WFR} z&P}bVwQ@y8Mnz=i-a9K(+Xe_lH_DG;Z)YJ5+mGs@L`{ZFBZwXt=XTPuc~VSK)l9y8S=8lA;F=Ab^Tyk6}x z9mL$tV0t+?^pOBTaXn5OiJAwq#8kv};no9~&leCqiw&+5)>w@*V&4XFy!@^V8<};)-%z)RM7x@z78G}x(6pA+N{@l9J~a2}Q+X=uE9q)D-Z?ibaxJJcou0~` z|IIDbi@*e)Uv_!L%)d99(gO_89QBruYa*yy!C(Npfw_{LFv&(@)}OPs1C1T~zOIHG zE6Ylo1cp|w200U1OMwi0%hzMC)1taI2sreNtr5`1>8y1|vec34f0;vHh6R3+7rbW+ zE6sal+x<%IV5V?HPSx$C8A%K7369c$M+$UxTn=ysz@0_c=s4dq3_r2_2f~rt?a)Sd zR}O;lDd`30`Al+Fb;lXD)zT9^-7nM-+`V{PM8N9N$QVXDws2Q=PI^FMNR1YNpUU)y zBw;$8#TXzkeVQWN$S$74@FPU^Be}hoWi-*DAvF#hckCYedT3y}^r2rpD(F&c$1ZUp zVhLY&nc7mu}9x!IO?Vg4_pvRiyjiedsw%~j+=I*i-_ zQ*nVUq2oS{wx*cQzXFRZDM5w7Q+pfq^yg6WwgKu6lp~X`GY`&Bf$vK$DT$X8 zQ3IhrBLR_L%YR&nBJGgnTDpJt!VJvDkz{o{s7iYTm2HRHtgxvVt%8<~53$QKP&*50 zdRB9wgsjA#ng44g07*c$zvQf$v$FxyCz{Rn z??M_*5voDLkIEf_jI(Ko+{pv+l$$AG=(|znukGqV<(BqPuFI=Z2`6z^D_byP*DO|Y z(oi_nU2D=vmEhYtqZ3K&zhcUU4L-7ly8B7I%a}DBOSwU3*$8m_qkfAGoqBI;KJ9lP zH_->M?$|0nUJZx8uJrE{?t1}&|Ex=tbp$Gnv^~i~*g#v&K|9Gk9*fZ$P=sj<2b_xe zjkc-X7A3CuLaLfdi{Ye6&)b?~<6IMkId}lFAD7a61ZspN#Rr!a)vAh~s^eUMS<;~u zx~39~79W{~`qI}?1=XqYKsMf??E;1$q+^7gs2Ze(B3q?vpN@?^A2p;zrCKf?a>?Mp z3ZQk}lJVk#jR)DCKFaVv(6)WKYsG^eK(=aOLDM`?CJ(qLDAuR=KS91B z?9+TXpVORtP?&a9p=K>jRhmn(xTf@E zpKism=1cIUvo6h~@1~8QXF?0(Q|ynLj5xW`D9%xf7pfo)9rj#~N?dF{G<)FOG?#&T z%#;llH%k~FuHwzqcM(U7MaLfmd-Xd4%HIA4r8fu=YUmv9sZe0%k`RFfi1o>+BOD62 zc+v3u!1s!=OpdwXSH}OUo*rz84$C3TkrRJAagHA=PeVH!CSpk?zl|}2AX_dXBr|_w zc>tP$9yy^}owYK=_oGv&8SHtjqoNplO~-&aD3>TtJj0(4j~??5PA>zbMJ^N)mPMjn z$8xfhg=swIWCInl_1HqJYCU9r1O+usW+Fdv`?*v&p6=Z76&R%>ggA;P^|`WUnvbzW z@A?gLE`oV3Jy`LsH;0J2YCB|SJFkmvX$Pf=y^^D%JHBOX)a*p3%dJeocsSe4=tdTy zZDg=N&n_9U{!Xd1JuoU-sFMr3REQL{CiTJdX(op$Iw6aGi>qek>Lu5eus?S(+oJw# z^2azo=gB^JEXnFoA&VfEcB6{6PF}@}Zy3^ys~XE-4}9i4M|KA*)8BOoj7DsN2g3D#7x%tcTq z3M0izn0W1E@C(u^ti~_yLYsfb32n$~fMd5n28pTO3{GMc)kVC8!ilbI+B6&SL}Ixr zd?NF033&b&K9vrLz^dR-tE8=+`Hj}CgHzdcG$e=jQx4i%HJ|BrMw2-ezt?MC)De4l zzB{eGzGBZ36cD_tLJpM|(Jf&NGlbbxExC3UY;-$pZ$_AOb;0Eh{$68#9)?L+caG{N zNcNYFT^+Ld|#mhf3_J@4{Igct&0$k;g#oJ&H`oBtZfex&%0-E>I z_K{kC#}oCse0HBRs%I6Lne8>hO37CCEL^ru#;;Af&{vhURi!vUIQ3nJSO;fTWXR_j z*+~C9Zta1!_Il{JM@d}f-^`yjt6A~(KNLSDO_JGYTvvFz{dD7w+0aRz6`5@f8 zt6R@*GF-~CPOg`uR61bWoLxYWqttH=e%#%Qp+rNr+ma;{WZOdJ$(0=_Cn=%T+533> z5f~mGa+I8-?wW{fk@w&ZNy;g+lp9-0;Z3?uJ?-aoZMjYNsjps<=`M0KV#XzUoXqPV z5<`e^+|D~=`R4$i!(CUCt-?{j=p2RNQtk1+xE@uvL#4U$aMU^~%mU#E4}rtg-rcR+ zzI75x#MqD8Ls0a4dm*a>8czZ^exbJ_3#-wI2`^Cj`9>_wLGovSR?mBA*rP;1ZMt-< zd!~EHGxQ}b>uB0o@VcGydrP&)XwEfSyEMY9x^|JMv8XAEOI4SC)uGSfyXCh}EL}Pl zjPCvFGzm(#n&uOyIqtTVBANe2J2!>TQ66RY+rjP&Hnmn|5;3h(i!@je4QkmYuat&d1zg}j7th|M9PdIY46CXI6iSOtU~(%%0bAraH)}@O{m2r^uJKa@PO6>w&jJbY&V^S0 z&*Kih)&W%|eBB1e=JR%>ZZ7>)36FcMBc_;hVW_b2TcD$b>@kO z(j!D@{(sRJTjlo4$*M*u$-~R?x&s#$7g?OO`EcXKLmwuov67pM)qmt+>N}$KXI-#- zRH}pTui&oQ`>+UE^1i4r>>}mi)z&&GiEGZ!U;tpZT&Fm^Y!4o`4Gi(5>5=u)y7(c&YW9nrH6S_(Q>_<`nJ1qJzuyF) zK)GWF^^=4z%dl`8O1Zku>Z$K$d%6(3yau44fK+pq1c;eIir+cx6Il109(LI_m|S4Y z#Zk8nGTo|EnEo^NI@s29?s#*8OmzkJnGDNedd74}bExIKX^XY?DE zBi0uFE~{pifY1%&S@0K~`_7vgwe|I%Ev><4Bjd{(Kmib}oo0N87JvQXR((kGat{X? zF8hVt04#qe6%7QWLgTb5Jt3g9m%c^)5Azo=D*{f$%(#1Rs)f?J02FDJpRDK zK>u-F!g|>#uJ%sgj^ITq2}M<0D>PqT$BPI5+Vy;7PmC0t&Lef_V<4rqUoM|iyy5dy z<7r{3n}z2e;^|~G>}bM119(fWKArR({+FN*rdg2WNf7l4t4=cC9|6$yP&)%h<0QQ0oXsCO(MOi0SQfThGvPIQ6#u*Osg^h^n} zKuyF-uE6PI=qmvCkh>Z5 zrpI+yP_2#@z&No?Gtt#l(12!{wy^b~y3hUZWGGOZkOC9`^b?<573tKV1%DD#gp)5;m*VOV z>n6^taU%vtr!Rq%Vemg=R13z!&l6R#w5Z?T2WB5*Cqm`r=pGnK zwz}7H(OWP|nQ6t7N0d`sv&rW*$8%P_bkr`GUe%kc(t2G@6k_7AVa9$8K1NWhK;lgp9mDuYC@UjWLkjnqbr zppdkyqE?TSA(zXcJ>3k*zHD{LsRk}ptkuZr z-eo{Div{#=4Hh1C`gWh1ENXO|47c;ZXNhJxbgQ3@8wAJg#Df3Y%}ZgE<(2G^Rso4bvDuJ=E?INIMQk~{1{ z=cI@l=~|EvJnuPN_t)rj@i%6F)7yVovt*8h^)3@VY98g@;XgFTia zHUI>w{3<<*s3o7ovdeCPLvgo85+qq!Fc^LF@RTC%Aeq`B>CuW+7aEIxuMZwVcO+nC zW*{YcU@zPqDol*YPQM61ZKdFQ$@BN{Z!Zd4g(=$#Ki%P9*D_?5I)N__c!Q zcA`?X#-I+uRh9Oa!s;b}qZk&C$PaS?^kF;1;HpR^sfC=E zO6W!3#21}2oP+U`bqcYfTGELB)(Q$jRHiF4Vg$Nb%h$R5Nizzr{V(v|yQu0r6x_ zm9Y3$14HyG@XLJY+=rgp=$n*#FiH`hhO|{)4y6~b2D+Xi4a$bP*xIi{r78RD919C#7c$e-(39QAN$b&60-Jq!weLFWPu& z0dD2Q|3RkzAo=bQ5lW>HdgGq~e%+TnD0WMDtt{Ep7>tbmfBI(YFuZ_PWs4&q0^EYo zWxao@v&t82-nulCrK!r^)}{6TzTXHz= zc8guaKX}K!=(1mz_P%M(Gu0F^)2qF3T&UFRD&a)toged?jjMb2GF~$1g4MWMWvdpz zek-O0#f@ooSEwa)|CtB^My~sC0L>-l{&uG`5FZA+QE(S21pd(>8mLNBIXy#-X7rJYwI-j(@~F?I$>Y7q78xeF?WQ~ZU9{f_TH zj6JEZMB0Or@&0)I2J_K$w2}9O<8GX+SSuqj+cCfHI0ta@wH}bK`m&#lLctC?7Xa3R z?mcX1G8CQWn}Mr)Wr!H6TO?@67`C&g_bi(oQe>!hXp-8!Gsh+|5Prp|t%$WUa0ibn zcC0J`Wa{!>qJ=d|208sb$b5J#U+FUkQ0*3iOYN56r~*8XBNPNHWCK?SZB3;uJ@pEX zL*74qdJ9vHl&5OJi^T;2(K%Mvjo_+9i%+V!Z_im5`D-1_Vd;SS1Ib@u(l|1b1z0zl zC}F-FYK&F~FSnMerFaaY1TqTdR#@DafS?fHJMka`Uy-B0`U=qCJsj|pjae-~7eBSC zJ?oY`pTIVjT1N4iLp?p0@x^iPBO<7A=S!gt8{mUTUNWdIi4)yo6>lG6h5hT_2R-rKJJis(MMh*0&B+6b~NDLRkC!&@@o4!NA0w_ zK503SY73@1_REH8#hGCh-}v5uZFy0Y!2xiq%5zj(53-V6u2(+^hT)-LDE48^Fu{ZM z-MciKpI!&V2uA|T_UZLuS- zc{-a;(Za4^YbcF6Qz#e#n$%*X2qgmPOr%{^LiRa1&F^^k1D_8o5q19aK&~OpF`_~} zw(^3!GaFEo8s}NT9CeQR(?p+e##ih>5S%*dC-ue3Ix7w_0qU|F<_p(g)sAe2MOP%w zu2TU|>s~!R0hYn&qH#&;KM*6MqJsu4CH64zgPWPjfFuY`WV}Ghk~rV!mp^lVvi*ZwIHGH4(D-DTJq#~ z<>(l{W?lTf_HR|hr6&MJQ*Z(!srjOcOMvvu=0y!M0a!ScB-d@n($Y2C8Ah|v^QAml!s^Pp8^4LL&`70k( ztfiU0%&Ac5dtOm$GzH>ycjFi><5y95b9eF;n**Ouz%>DPX0SmI-Q>U;Z@W?%Q(uA2 zw$M>;pJE)4lG9_W2`KX>Btz>TR4jy>o8>)Ckk3RB_WL}(2}hEV^9BzlVi8egwNXA5 z3NSxZ1*l)}Oo_fXS{1IaF3V^o5*EHpaE%7di2O4=VZIl)*d1?$$Yw{h(5o= zX>3xG)%1GP#zjum`%%7QMH@9Du^BjF_00QpOn*FUR1(BCe@CZsUtRT@KQ}lG@*|2+ z^O2mh0`8P2An$m5qZ&vq!gGs!v zAkOGoRbiZkEWPu7%!0ZOrY{GjC9Ou>F#&fzb#I!`0=3Zz-P`&(?6~sENuB0+mPWyO z-*ZI336x^a+?-~TtIM)vyMy$m`2cgl-U4_5uy#MXwSGpyu7zCBG&XuEy8Xocn+??! zYwt)M6PO1$?$|w0Iv~pRo)$iM7&ZQPobZW130F+gi~nDLDs!@N{9pf6X8->WB;{aZ zV*0-xV3Mpeoy$Uv7RDw=G+hkDnnf$?i1bJI50{-sPJ;$oQ}^?4BQv;N)Gf2Ukd5WY9&#jZr)^KxYDhww{+Mz}Xgo7b9>@$juv z^7LbcE*17~f;RUxcZOyNE?Vjm@Th)A*xT*i(|z@TQNE=Qk=WYeA(!bEW$~yVxQDZn`^{l?eHD#q3f32@0hBY%L zJM@>!yqDidhkUN(?Fx=C!i>fW*T!gl4SeJxE?JunLN->Vhi3^W)}tJ@`1^%isglMV z&!qP+>)SoqAQZxn9*ZZU8CDGri}8CJA2{zr*YR_M{cQfYFLxjG8HC1`tj3v~sYv8fN&nHb(k1`)jTUcjc%; z4Sq30&X-=l|58$|`H}djN-f=m1;ZIN@H)VgW$$v;^N1PDbwFLX4c$h&T7v%52WiXW zW(_RhAM5&>24CGvd8!*v{S+|K$3O6LRCHXTq8^#^>y3ZH1#cUP{5~%9{XZuCOG~}D zKW}=;h*jf853xEADY0J7<)vHIjP()}Dh?Bj;dT(yR)~VXX7(l$ZR@91^$Vu9U&)p< zoEe*8>MS)Qp!=qIVJL{vgF`T#o^hwEx|FA&5*TU!pqb_Dqee54p3@bK99Os2&|$ja zsg5Z%+PEE;TSZLnyV^Sa?#2zrm4#bs7i-SLdl*YEwfvl6*ghh6`4J^e=SdbdVd%Im zbF4J<@UruLuaBgFbn_QC@P*;=pU3Cc47^&B8DznZhiOIB04tQrIiZpYa2J}Zz|A=1f~0<00w$CFJL28Bi!59N zjOo?$#wfW-6PM|9&p&;}^$n_C@Pg|bAr{sT*aGAl&QTg;pfgqz1#$o>Z>o7Ckiyr{ zHlPJ>4GcL0H5e!YVFISbSbLfgGG=|fYCcb5M!FN65vWIB-oR6xjcyi%vo*JOrwch3 z3mv~Xw*LcFUrr)pHPPX6xK0LUwv%}Si;76}?}b&xm@?%hGh~*`>N=OTBH8TmEygoc zUva(A8jx&iy2T_d)^RRaflFC!!JUYMFB)4Knug-ojPTK-DmFxvmEcQK#(I(gBo`1h zfTjpNPJAZ?!GV^%mO34;lOAZc^8{xSKFakKrH*1sh6gP=a^iT)__3T!O;e=DhRF|{ z1&HH%7T{!nHuh4A@?NsIaH7=cv7~?yqe2o3@I^{6d^k*tZC|-@$|_lhT4QPD&xH*Q zvEK()$=dH%N%r&XioBAt`lgaBtw4InP|7GY+JMXu#7UzR0~9t)fc1!*lJ)C378Qb% zk7*9$1JT17O#ns`hr>dW5i6e{9oYVhL{E#a*tD@q4r zZ5?Og7s2DtKSk)$dx}l5GIojqGf~v_nukN7ikrp>@GNKrohwE9SQP;iSW@NcT(A6* zr?lzgm3ZXL@c09PWoHS@luQ1YjgG>I6V z@hiEqBra&005FmdacspJ_1?8eHMQ&4-N<=Zl!}8;QN07tq^PkAfKo=fWemEsN8%U` z21*9Cbuksi)?yCX+Oo8;<2MMw+iJsnoZG$gH4SC^jzWdtVnq+~L}jgM&0+vuWjg#H z{z2a2Poyf&7*PWuiY(M^4v0%6YE~O_w?<|a%M(e4@05+G%Her(iZh}AB&#&ENg9V= zP=VXHWS=BSU?fozTfbT6E=InGIrqXTM-INPDq&<}aXzK9Oiez?kaj*BWCQ9QL#@u) z!Xs~cafE)5%U|it48??E0$PAl3;`DCUzR%cd}CI*@#xrg%pq!ZUkTcg^zydIb$;T} zf=~C~_ms34>?pk3u@8Alv<6 z8}hwfa5Gg0;1;HM5a9qRGJ36$EW{4P>!C1!I4WcWr~uAv79%#?GdMg6j^4b9J5_w+ z#)H5()Z(OQ&3IFK3?b+UR<$NH zOxa`}Hw10%w@@Nwmc&Q!W(sLXu<(}YYUpdt)=uv%`OqIr8eD)e$_Mw1L6BamG*-S6UNNoVS@;45V*75t*mg>$XP(80($2u5HbT^L0g1F`T0IIE zhTW+IylGArT5_C)1SQ!(cVx^z_WV_}+-NhiJi)5!3UJ2ysU|=YNP1ugly>qP40G_< zl6Pq<1|m^c0Kuh{2qXyitX5*}*fYGD?GOAAH~JRpa^ZfA`rPEtv$izsl_k1bMM4mZ zo4c#^R0aE!QaGb1l!$<$CNb|ODfZ>#*^@jn(eu(lyh%{)XfXtq{u-3#JrH>!VHy-L zFDCoSVjl)&^LrMRDN4i0GBC2}-xT=-V$(vFi73r-QQ4M~*)5$l8zOHjAUY*$L$k`T zrP_i~S-wKerAC;-7>jLlYUV)}I?^y~tD#r0deNk5BYEFZP;1lNLvV{rBdw6mqB3HN zJL?wTLro??c`c4b=LXCoJ2YKb5`d*L4Zxk8g#}Qm(oj~OB{vQ&XKo&$%+dv&=jIw? zOUJ~Plu1q6riG{VBnd}WSSrmwM@)v_ft`R!KT&B}!9rw1uj9ws7#(@ig|-6@mK+usF+snTH`prAuY-2hi1^8gpx0{P35pVh4aXpysj4E z=cr6d`T2r;>j4-OM6KvidiL=J+CgdQfz*sQS(M(x)J{SE#cdF6a2V^^mYh)L~Y zp!+zi1tZj1(D6>o!sY*N-u{4o;7rFnbko#EtvH7)W{i-mX4L|&dM^G+j0Y`ng;V7w zk8olorY$^c>f>`7z8paw-&xIDj9!+o#6+LwVtq7~CUJ}ibgG>@%U!q&Ern8|1e&~u zGQl4-+KDlYze-PmJp`vio09)jzzXq^E*%q}{r!s<`wKYf;sw6OPTYgk|ADoxree<< zwu?=v*laPkRzBPo?AFm#w}^|1e@f(bCMvwa`CuYyHiW^7;UbC@BM2$y0g2I)hmg(2 zLt&OfW>U`TWEeX_;sxQtltPCp^Ag3^N;?kQNz^8! zZXRQFxMVZ*)rsG6g>?f&nO;b49rYcSrb_tjx(Q`iX|FaiDg@rik<>-F4?GPjHY$*4 z49r-9CLk?Z7Kj-XlG4g6rYUD`TL(v0fN8-J_*h2lR4>c~%=UB=oZ8$>nCoJXz$_er zw5;j-NVe;#Ei@TpRWgYMmUbff5*XLvQ^z5rGI9 zdj=9sA}v7*s#AgXj}jB!;^_lB4=0eK({z$q)%yHE6l&-otLcKy!-aGu$Dspov9~6o z8X5ZnYTLO8M9_rEQ@syv$74{vMVEptQ3f;YP zh5ppUbzCgu=-CBo^p07$qsma79C&y}QAutW7MCv*Y_62iFyk*4zHa_yG+&z&;Ku02 z2k_m^r_$2X<69nGOBP*#K>mio{_m$-z)HwlVlI&3==IjeO92Qx``SB7U*Xt@+ic8b zFxwVC6ZU%d@RI&jlwV0&7>6`-^Hfc|aeF-VY>pLdk!W=6@9XKU@V0limu*fM(MyeEA$2$31y)UXbZ)_Mi73k#7!GmTi!kj>dRNYK>@#?^? zMZKnpH1_-gNk%!Bp=MVs`EcUfof6gFb1@dt|I_ee9Me+0E*-s1NMc%E2Ce!t;~7J< zy1R=HWk0CWHr_9bGdL~ZrGwaeMD#4a6c;03!_x|_bW2xHqqSd2;-1%tFJ8@GqU>Y~ z5s?*5iB)c2{|M!mv(p0~!`<~UOWq$UPH#m3_uWt|Os{1Fz+}$js6Qilg zW~bZ>Z+<%Ur_Lw6Tzz?k%RWO>#nIH04qinkC%=P16<{oDt($(|ZF`8^bFJIo_vhQu zLE|rZ=;gAi<@w(3q|$zf&B)!y*ZYUYoG0sC{+w3(l|)ir|D+cnhkV6!E!`gQ@%8Hp zp?XeVkn!5sIj~mnwXi3ULY_QAywSk8EU_EG{b20w;ORqKi&`2& z_`2+yw?qOPEz<~FezMh4hFXAHWr6`@m+#XmK@Pd)%)bw1n>t+@8@|kTKlS8Ua99Gn zr)`H^_x$1msidj5;3r%+M(A`*j6>5S8;KBHr@8?W!73LV02NyryiE>CGMp%8(-5yhGzQpt*&;Z}iJu6T#d-ntaPyKF@Mvr#3iNnjh2ISDT6v z7yq&VHJ2-L@A^L8vc&Aw@tMC=^zMu}j=$*(U)gK@T|xp-=!sMKEe*+XdtPC7^lJBZ zGRAJI<;R+6kk!Z6LGlW~TiI|pRf2pC-N$vpy0xt4BANnka5Pm!9uJTPBTrbn$hriX zB%r_TC%`1P31R7M{efnCP^d9M93|zN^Q@}3Jqa}SqCtNvncq)2rt0o_=BJOeju&Z_23BA zs48zE1j_5Wc;W{Oo;yMAbBEVRu3ZJxlg*E{t&csiuwqYa)tFe$ZXy(@sO`BS(-n8P ztgZ+>=8bF)2*u=Uaa~c4N_NsP5+9tDV=NIpL)mnc*f6Yk)CNV0%uf-yX5P8U4-E6v zQ`Ek*&s|5#>^y8qhNgeTz_@toZ^g}3mu+OvKe6~WQgq-p`N^1Q_~&h6B-U){zVEz$ zD}ST?_19Pp9VBCRwuYY4D-=Nb>CDY%Bg(-w=i_ry>p(Ao?R@8VK{PHlrYd?R@Qocfu>~ zuCDVE;b^WO{yN^izWRnH=B$@d`+&W+(R{=U?BCsd>Ui>uzSex5blmquz&sf^5}x&p zw!?&MwptP(d;PVE#xjd;rk6u6KYK%pVCs}o)V;pRfwBUkHue)d{F>z~4 zv>BhE&lAPsfS%ZOn@B>%`hFqz^pJMI#1R9^>EB)INdV894GH zrMJ?N<~582hr%6qY;&?rowP-nT15~4M(#Z~zBVo(ik+VuA2$YHFJC)x(buz7E9tMT z&wC+Rb_H~aC_;QBF-QKv34;pz) z9BT~Sr~$j25hias?#e+JqL?p5E;~>I_*8TOBG6ox^VGPRY*HMYgHOpF57?mYd{+EG z6o(b8@oD4W-~=AGe|INBs*j52CMQ6}xvzvLL}+px@G6tKc5}A0=kR6q!7DClf#qKG z_;0KDprt2SS1_D~%IZG}!R>A$}05{fD(`e)ixw*l}ROrhIL@P0M2 zyr3t8wB(>zL%f84!nqV3)0-s zU?QAfI*E_W6A(J3n2{Y;j$e7j`@{qo#2Bn#nW9A9Icpgl?yUqjhp zk#t7{MsoUQ*!7+$8-;-1hs;!okh^2Sa-ki%J2(#c_(R4dx2#z+WAF#IO=9mag4ZD~V!EK8qE&Dz%KiWyOP!2i`C(s%4s&JOQ4;-)M`k7;YB}W2a)9nh zunUU*`W6!=(v#mQv1{=UT6V}su~~~)vz6(Ib7v195f29bz524@IsOa6a^CY_#eO{Y z6EC@TtM!W2JwKAX2Xg#V4N{_Z`cxZrLTl4y$*r&lxL7C$k*6W^n4=>Q4J8(>kA#wV z3UEVbU!_zBk+*|?4kB|iO%5Y-bEq%}`$26mlJnb8kft0YIw@#`GRk(-zl8uAK~jjL zRq_kUo>Lxcc38_i9NgIaf@Gvy(WIx?9H~3igDL$iaklP@Y^|_=Y0YbD1R_tZqbHU@ zq|R4(mO>CuY^O8d8*HL1XV`-u#nvsdQ3`}$&ZOdzSC!2#G>XR8mc=qYG;^}WCBAVi6*aYZ3M*=jBRNd=?PtwMTc4YTBplC&Sf zrZPf4+GsWbJp6RKj(#oKc99g$v7dsVcQQxmIu+pOu*^3hgD>hUtu7RU1tuwI!a zUA9;2+&Xi&#jOoavGs4TJ9O~!)>8G$QDQ$fdv2b5@wM@CtwSup(X=|^-a27$_j5pp z7YE^@lFH4ZN#x=J4;z5*bGkgo2u_HC+`AZY%d)w8)j`h8ks)1)9^O;#v(F2zQ1eEhi0jH9KaG@Hh4yZZ7#V1brqWtTB<4Is>@*T$v(_D z^+fuM6hok%@c)u>x!5@WuTm~6^Z!b@tZXbC|5qtDMyI=muG9AVMnyI~+emvKC~oDIKzNsbu?%JhNydeL7O+fKoZb z!%D1lC(%*nzM}rNziu4r#)P5ofpDNUr1p;ol^2y?R>kkDhLceFnzibr4)si?)~A&} z&{&7D1yhsi4rdiYi9hRgg%7!1m>vqNm!DASh?g1a$7zz3>8p)hy{l4D0|W+&r~Ysd z+|Az!_!m{G!!Y%5Grt+*eOT>|7U~QNe`fL_Mi3)A8NY*Vnb&{|8$Lo_q*aX7#qecz z3_qLk;t?V1Z%+;81DfgLFdME$ds{eJn_MfaCHY2HdxiO-Mmh{i8c*u!1KWo@2v|tV zXY5nNK~qEO=`&JSA2i&t$xWa`%7z~_Qj0LPu|_&fm<(sOc-z}tZ6?!Z&p4Nl$a_-W zc->cKm0H(*=zc24RLlU4x0Y9JEk3rq95eI6po6NTf@nmPN`Y%dA+|rZ9Hdf<>uZ+x zA2PKOPVU~O9Giv-<}}oKI_y~0&X7COpSaaqlRa0$;p<()l587{f5FS5yCV?9YuaVE zYxN~u@RATx4}J0mHah(g@PVlawHw?6k$wely^G$zK&*_tGJU%O`hQ*_{r&!zXe&_j z_cPW1^T_}EZKe0`O|PH&TSo?@QTzA7yU?-_!Ee^Y&O}F&!4;T|`Y^QS=>9tT>p=ST&F9;s!cE56hVrYbXjqNc&7NZaa;1%+IRvJc2I;X zlcKEZ_mYK;+o1PzXF4xL8un+$+kr5j3sTzU+Blq1e`- z5GidhEOBIS zhu$o;##J)c_6<%%w#8M(n?eom9^#-ECZ6yavS5SSH=oqL%t0SbjWr#j{No0G$EaICRrN*hq9`COeMo5u>F(}MrQ^_t?gk|eARr~3g0!?q zcXxLqEg%gN!rKRb_dnhk?~ZrxShDxpYp*za&GpUin{#M%!+W$Oe)G;RPj*oFBkJq|zV^>BZqd9tOwrEKz;+~nNR-Z}^)j1zTbuFGeBOZY{K^+(@iK+dHAe>9Bd;ti z48*zV#v0^$1}fhguSFmVI-*hTjz~^^#c)9UB+xri76V)a2znVNu_h) zrRL1QI+^1N!2FVaN$9ML@QDe{TgOo(-QSmVQ-Vu&E7jVe-jiZ($Nu7->&d5X?}ulZ z$CykD~L=! zf2JE+T|-+W6uvTt--6mGtHRjlt&j8g7YKu+*sa9OqW%`M-6gW8vFioNL`~p+#OA`s zuCtbClixxvT#9ODu{fe&Vr=m97Im?he>pzA;}UuVcWOgm%RF;8Ukd;}K*7I1)n*xo zOL(C0wtPUN7O}b;-p8uMMt*%BL{IBvho+^i`u&~e5%i_ghgP5;=|#ZL>ewH}Hid8D zZMAOt!k}PQ@WBgKbl)BV-L5eKRW)ijUK3hTNdYr(I-6z=5w)|}fxh?*w?L^Yw@qWn z#HVMr)_NpmS@-BSwm5v?s+SbQ>CulaYpZ9ZVp5Sk3 zWG%gEkC|>w?O+wtt?mNfb+sRw%}VRT-cg9f*E$^pcRek5;X|DEfZ>=h^KXLFMD!G5KFfg7pM5 zi6xyGI5x#n`hcidYtx^{C{8~E+upfmwH;IJ_As*U>h?n8&zbf+^&(4&>EdI=nCIGG zM76!pWSij5i9c^&i{~Fhmr6Uo_eW3_+h+Xi2ls0Pe{1?Si=j$=6#hNtwh%mZ>^XW= z-hp?#l>fYX_YGw(-~IG+Uprs{@Q!|W4<2gm&0NM%%N{LrOuwwH$fSmeZ{`&PB};4J4T%7 z=KNyMS@_I8<5cLk{0Vx(ra_e)S)dI~v~k_@fD<3MZ96NUZd}}5A={6WZ;&Wu;$50` z-#_=ZZ5qsE)3cp%xBn>e+64n`N9bUKwzg_Vk4sm7^!tM`GyfQ|rjtTF>nB{mZ8f)T zx&PiDTrK{M!K?J`8C0_%xa_sJ1>)RN_kbc}{X16tH+0>sGn^ZA!|DYINsI*f3fS{b zhWz;n2Tf{>i5PRDm6Iy7`YX$1CXz2mL_a9!7>os~)6cm+UT7Io$~$%-?(VdXOVnOs z%vr2hC4 z@_Fw^{w=R^qp@_S8r$7(bdB|CP3(H~rfqvgukQ;+D$&6f4%Ns$1LvYr8Ph~oMq}if zlOukIfsBg!GMA*BeBwZ5_Jcb;2@AhAxryzICeaMEqu@BJ??N7%OAxY#Q*~AP-JAT| z`13vT(aKf zD^N2Ql5NtLSsLGF%U*7o*xW6KzJ1n7!frWxkr;YvQLt0N6&3U1(o5jM@J{IuipMg} zw-j34s3B8#vjh+0u5TpeL$#zSA*EM<4eq8KTz9t4p4p8dz`Zs$+N1&-$(dj-+)Kv@ zo1ahi@#@35WL=JB58@8H%p;K~J6oO2If5+9Z8Hn`A{1j{=@=uLV#Zy&vFmjJgE(%h zZlhR)F$V!VVokN(PQ?{BX(xl7Ht%7OoVZMnt(~H6f#(eUyAdU?i{lA1LRvzb1ii#( z8{#y)9QpdqMke4loza}C%xVb9`+vwxq+_{95bR7-Osk;pOtXEuvTxsdC>ZtLS}Obo zldiR8UGby+!Yol^sT9f`xzxeYxy_$7I@!&GDl+Y8j) ztZ!sQh4{-(9Sy~iPI-|@*K&N5(qES`s0_Kh`z><(X@Mmqob(3y+^Kp95*-b z++BGZ8M)HnF0@CRQ>j|L9F5ky7f0&RPQE`muvN@5|C{joMt?vvV@G!oH)DrcK1TB` zzvRedvdD2oA>Byk;%CjV%vr{0BVLz>e4%HO6WA{XZe#J7!Lf8!vlg0?7s!dfcNmiF zcK00aO$UBqG^RJ{C@wkuO;aDSIF4K%=P^j`F>5R+z4S#B?TC&EPdwY+2_|8T5FOs)XLvxB)3&N++M*}9VNEC5s( zk(<<^*9O2f^<5tyT1a@Jc{oj-M0%zqVN5y3TQp?+e)+~l{#u~%OaBky55H0Nc6sPm zKB<`ZbH~7$IFOVZtJ*gF!iFoYfuZU^2CgR8Y95Zr?g7rDTW#r39zm>Y8vE-eZ!{5b zC{p!*{hXNWED&@sP};++FPn$*v_4vBz4!)OAC$$5i0ay%xNE; z!3nrJGmU-uiWI6h8GB;JFXOoL+ zm@nyya74e)-TP}z+Qu+chA4toWm@;{7dqJEANi1ovyZ{9@3P$1HaV#I}Nn_ z`{ro-2Uce29}CRMDXg~B({tBhfe^obb%HBFy6pv_%RagjyEM#Uc-Hg&cdzTGEGDYS zUG&v1`MN7U!N2PJGlR=Fwn?CN0*@3_2L0_V!ZFcu{YpjQX7$>G_@}58vn*pZCcj?M zP3+ge?&F&G=H$yX*(p1c=iRSvsXf}%+Qy2n?W6UspLrO|R*7EKk-MyYv)ShAwt`%w zdSBRzjv(zch%(1qUgX6$g^~s~*dBJ_8JFkC9{wh7bg#S<(m!s4xblpBvKNH)jOoW8 zRDXRz`IoDk2^n8i^8R}Dt%~G*@|qe@=Us0f+sQdf7cRIN7y5PZs><_`@(v`}#*=sp z2|tD>w>tGV;m0`jx4z^&-|FbOGlpZTyM3Nw_tu8hL{C+cH02Bu4nGw@{PX2(9jN)e zl{$MHO|0pX%6Xvo?==UlQrX1uuzpB5xX)i_xy^x4@()+uO>7zBr3Kk7MZGzR!ELek zg$0>F$=1$7SkJ+ik7e1Re%tI;PgK+)*=Z#>`caNu%8Rqd;O=5PEn=5E&zd4=#?+V(M-?xMvmOS@* zWq`cTMdMISW_9|l_QC+8^MJL_&hn<6=kiK@@%U}aN<@7|C>MD(^g*C5Hem{@F51q@ z`)%fQw(u_WX&=24E2m@L+=RLdW1KG4BLX{kos$n7kr?S~qX^GK7yt4^X2|2A2~&Hq2iB5pPw{{Q>`_pcc9y2*ZZtb%Xof@;o34F`qL$Re2{ z(wvC!laCQ5+ng&W=g0GN$ts#3g-!j`U7?h7ej|N!5qWt6+rf%|oG{4^JYqi3P(R8c zbD&}}(SQAO(kexCCMwRtp@eBns1P$kxkaenn60=z}cI4G2 zVw9guOFd>djxAO#15@0VEhq|c?9`fZ6sI$bhhlEt0r6(_Z1-&qL*^~17VlaTKmCMC zTxInsTbeNE_ecE^2-};y%(ygd{)57V;p*RMHXBJZ{HNV#;Oo5Z56$zIUcy8j_yMGs z`n%2j8$>&Du2iBvWU?PI$t6GeH)r+9ej2bvj}b`i#1GSZt#lvJ{7z@%^=E=eq~@%1 zn^XSqwz$h%2~*DRcwQ>c*I_DPqOPo7k0Oz5Sy9nCCSTsivz zbPMX5l?m7Im-zr1e>z3}_-7yUvGv}=@BRIpsQ+X3kB95|0KbRZIb(_Y*X^tu1dp9L zT}e%S?}hN>u#op+z2w2O=;3nUTrFe+4V)A#ZFZWghnp$#hof`H?Dr|7`z{an`>OAK z6tJj!-c*<2>>?{G`4yvarVwI9DQlDvMpL7GM*M84(zi(*EGA4%W$hLo8E6~)fG_Dy~9dyB^M_K)$|Dt77P+;bIS*~~8P0kLB+eab!`AJ6B zPWl_mpsdMSV&qWykzWbS;c^3`K~jMq5T6C6)J`vSb5zx*IhLd__>_;go8GeI1eP4n z(sT=LX ziw`6HobnCc`6%9_ip{3N--!5)h^rerJ`vcaj>A<(-~`^R9PW(_+WH_>&|muZ;B^ycVp9 ziy%o;LKp<1(F%_NN#Wg?ihq&lJSSfD*X&W6pfi#jA;z}T?J#o#5amk4wWZ?@x%n8_3<5QzF z+b2fs#jolIy<46YN8hY7BO^;$u(|7Buqm&AyaHrEGv~9g*`{AjB}@N`-XEg!?7M&) zTB$Nsz}8o&qA*2MVJiP``(IJda!`+S3-+@)VeOd6cK5MJ2I(kfTwzQ|)l|0-9g@MdfxRN4 zhO4KT{cMNl+KiOcM$vEXFWMP$1qr_d_nyr%!u{Fp zJN+_S2K!he6|t7ZAmAzthGwmb3txm}tv&-LlN0_B;t|mqi{ex5;W7c7%&BN|K33Tw znkoU3XhVHewPP>>RmAjX$-r=`C=dd|Su?|7Yq4p;UPCRO*eVADTK7c@veadZ_CubL znpnmCK)S}8V8~CO+`EDZZxvNVVrk}INA>kZ3)Qbc1ecxlukZ;jb1PrrCEG2uJ0zVo z>%C@P$r}i6_mDD}*2?e+i=Srdh-E~ixkQzqz(M`!*8hV>lLaJ|hbJoj$pv*jPswSD zBq1;BmTt{Zdrsrm%7=#}>0c{i?^MM!k6%>#pt53N^`Em;0;{Kfp{oJ0ek*)$evJYLt4E5EtU`|v4o-_JHP&hLl zQ~2F1)i|DCe3U6TR z7UDl!ohZJz=&dPYU&DfCpwfViw@hnWGlx`!@BTH`V7*F9*zHD+EySH^eTP*= z6%klOHJv4DeEMNDzJ20@jlx*+SH9C(gKIfljz0PF!T!onSEd({oTYF>;F8a!{L5D) zMIPJsb%6~^>@H1ygIoK`OSL9drDf-Z9*^6Dp+#2@Wq+lA{I1&}n0eXw%4b3<9Pg+< zl$JN~=pkVm?u)H_EHRuLGl~ZMhw|6rHn~898V!8=l*)-8j$HY^RVgkJ%adB5p<{z}L#h-Xl3@BEl#*&<>fP_c=gd~JZtuxQS2xWw;P zGG#A|{VEU<<+(V<Sq%F`R%_>Oey>{cr#Y5qU z=rz?t#Q(bcs)MFu9^D-HONdan@#ylWv+JVf zqA4c@4Ks~aOFi)sz(NZE3q7&N0^YRP$I${fM6(y3{$nCC$Gg_3C#J}0dGfTq7DFYs ziz50K)mp|&R#5{Q{`R81Ce>PN5;5#4Oat8_Eu}u^s`#ApaR?ughG;%wFZm9lo!@8OWAySa`@fSUBN}Mn9AxA$U7`4aP=XB%)kF@b>B5^!~<^MwsBH?}%~h{i8v0 zPUe*q9N9$KxYI3~+e#cX6Y5I4uLUCZo28J_Mit$P(kB8w2e#@UYg00ePJA|YV;@`C zC!iy22CL&qabQs(b6~j}N3j!!Ga*M3Ef92_uhLn2-{5e_qD62FL2yET)oj|k8oCd_ zPQnDp@x(A9twCZhmaw3xgTQbQfj5VwEQvU9S}U%dix}ZKhz3QjgT?|h%YT7 zs=F>o%|*nPzGx=-*J~fc#(9+k1tFeE4hLB`c99#e;&xTPCAV*VZ&X2L>_*((eZozc zyv1ms_O1J@LRBVi!R4PX0rT(1(+M|-KSQxyf1YPq@f8iG(#ZQo7C8PSPAUIrW#U7t zj<91sz51QTl|_xhBAQ${+$o7H9&6I?m^I-GvH4$r94*PxHkBZo50?aDSj>WXRoz^D z!$(!%jAexjayMzM@2Za&y3_ji^Ntd12xvHn@yv1L+jVa0ZW9j4Zlr=>^3LmY* zW6?v#CB`B(C$BcW_2i3Cdb7U2UHK%FNcR(DmKiUBAiVw5=Jg z^=~0V#e_itjhn)*Kq`m=rB`c!pY9eje=c)Gt$SL5KYXL2qyW=+7Z_{`6@yz{h_wl~U@2+DIv@5hdXZ+rA_XoB}Q}bqH1Y z*s^wC*fI4WBv|u1<(TPq29@6_RDn#c)kHRy=W?y+_@s4^8+~jAh#A;Oy5m)i4m|Ls}J^rmG%OJT% zBp^@vJ3A|m^)ko_D}5U>Da^+l(yu3(Vcg_+AW0ZzJ`!EI#osmTaYqsBBPNS zy}vL0l@6`>uKqHHJMRaRK60V)N4})EGV})n4(yo<;pCo)!6;S>(fBo9fw^k3N}l&E z70(ctUhXB;xYl%4v%VZ`;M5;_M&c>SyE>kNM0_r0MrPd&!l>AH@HV>jJdPb%ez{I} zIM`7mfm(c6JdJ7Ssjv9yE9upx5JUNpbCxqSHVLPC31_Q+Wh}ES*n*fz)2gA(Qdc%0 zs=9q&E=3_uZSZW9!KAMO*-b|dIq5B%Oc&kzCJ|{-SGO(h%2%Xw{9%5i^@5{#yU+PG zjkBK-4jm*5w|6=2lBv9j+#P8}8eR}pG%JI@!nC{& z+~N-I8EKgC`o3Wuz9TwH@E0~@RNz7@j2_%|)QO@KeEKCb^4A6jPW|_j#ev<{?ZFzP z#dJ#cH6o5?%&t4O<`^@XO*X#O@`x1Mi~8zwh52i@@oHy`t?EJf0M&$7b}fD{ioUf3 zhzgdur!@qWHBa&ic@b^*V|2!KDIZK$d^)hk!b1{w9=0YG=~;S9dHdZM{+c3otZeJE z{>R%#FBRTe*MWRlVy(8?w4kKnmFLc4Csex}VH>#1 zP^h_kwR-m-jQ5ViZTUh%B#Z?0s ztJWJ?Sbi(MS-uUaxy%iHaObCfEIj;S)6`!~!$dcS(gwx99`>Kj%n$xN@%(xWG&^x( z#+7$eCveQ1&*QpG(#q1k(p4KK+|)fn)kmuBls)vK#(7o8LC=_UggJT#be_^Rq43lC z_37qA$+rq4D*0+(nx%@s)g^Um zo;!!b|fPZKSIBN{+0H|;6nHCO3>bAOxM=6}=J;xLqaB(rZV=FIgaJUC+F_lEWL z$>z`qx!Y0p*!lH#-&OL_fn(cy!PfU}=+A%GJs#JwR`k_58n^kkaawu_-pb}}9PQ0I zx!KBjRt=?3l*by4ZMPY>1+=-X7Lh8GMblQi@2!sRm5M6(_BZ|@cu;ZbcunN-c$c-W zLiU?pd)bC@47tQ$-L_-$vqwzHzwQnHy96Q!JNN%9fvD!!P?dU?!z^Vmtv$Fv1n(n4H7G`chO%j;W4S1&n28K|0Lfot=ti7Eq zTwE+H8CVr9ygeOV%w6e$Ii5N~937;vOh3(x=hK%hVH)0H3|78JmWY^+iirVy|L1BI;<*v;D20!-oY z-*6rlP8JRZScdd}wve5N?f)kS%gz12Qn1|ood1)7W#{Glzs|ts>l(%^^<(?38MDWD zKBH28KZ0b!gw^fXu#DI+G}WOqPBW)#a%8B(5p;jY751&VnOI)sIiU<#N#(6OZ`kX! zl+sYbaE7=?W(;Q&-8q`@yil$p7fFzkt0V)B{&7F0KBOole)hnoDAj?~VvP}G2>Sk6 z&0f&5O~JH@;f{82`irq8qebny`9TS*Ii1lL&E!cPR}@lXkD@?%H!veRTOn;*ED3}C z_n%o&X>4t&pSh4&B3$)y5X-BM4m{-&7ENAG&c6axAeIqKQw zLaG^zqohPKov(UOQfG(XU|`8#POxRNZ4ri3%F^PjBbl2*z!O2qoPd@W8}hE7lHrGK z3$grAV~Gfwy2EO7!@|QhcoDkRG8W*7{@z&Nw+&`^Ac9<=o%pdst*Ee{-~1hmC_1~q z(n_KC;~%b796jtJ%iQ{a~X|XObrZ8Qmn0zq#0REtE7D|;Q^4WqdaS?2~X9X(> z2|3}m*(g2d6Th%fw$NY&^$ixy?CUdZgwL0YG_kC(LSG~ir;$A{PP_RsPNEf7a^QX?|rXg2p6 zptlb#HyAyexlJ4+Z@{=j1{bs|1*Qg35g;@AggWJ{Q_Cb_T&u)A7ex#}y~mqw5YrRp z#MH$S7(le%Ri=iF$EHPkC)pu9Yml*N+w3G}1Ic`;F0VDt%{#OW47l!Pgm%#p;0joFh8zNo)p?6Va7RaL>hH@g>*g03d zdwU;l(9el>ICs8_Ip%y5AWpw@vvz~Fd~Iy^4ZMDSj5zXUT>tFtt53>J0)zaoPK?%D zI(?-p-dxNce74yoBRs!;SI3M$%UG(dQ(^rUy6oexLZV;D98iBXhABZyX^tas&*VuX zhU#Xopk3V>k*|{Jwbw*@m>q~Zo}(EOD=szXu9F^^6}w22^-Iiz5&=ZzCA&<~jgjkT z*w>llBal=xk**=(Mkz&L>Lq(Zfq-e+Q1Z13qS`n4eUwtBpDhGk68%7qA_PIgpkmM( z{^y&kuDia57Du1YAK@gC*=U?1|A@PsSw1#ay!w98`|=|+RtNbb6rmi8Pfpcn(=oeO z^r4YlD~8cgV(QPbT~;7#b3@Yzlgl=!OdNTdfnPaf6;y^kKQ66WsYFq}4l)ql3}Vj|c7yQtlB#eR;234|@o!J9$Z$m2gP^5HBY zdlKO+T58VS7;ny2+IZU-?{GEHD1TsSpy4Nw$pbQ{aoxjQ->ZFJZ6k4xkK&y^RW4fv)!t<+m?4j$$vMy z3X{1F=K{z?Mw^l!8zE>zhVT8;c8)|n&No79|4f|(1T43BfB$eeEH%*SWRO&!Jmd&R=@|DjtQ4GT+DR(S_=3oi+6pOiF*G(R6N4;P;#A1?5c!ffVfP@unNy#+^A3rXXi!ySKD;WKmmi=`RLf`Z;2_4@&(N(0wwO=4k1>;eJfppv~27boKhO>1uU1 z!*@+vMP*ynPn4IAj+bs=K;GhUp)x?zLFN3oCI5A-;>Y8DvZO0L9XM!>z#`+u z8y)2(abE_eAk#&bMKmxYOCe5zEm>C-{V^)p0U3 zUJ1k_#zpE4+M;2bmIG@{=-b!=!`vTe-*Q4dpjTo#Xz8x5gCw|%{@_>BQ)iIt5R7p- z#=I4LhrqI$%NoH>`^wCBs4Rv8^sVz9(HvEuAY|la78v4W1x?lTPe^YN zSr6D46O6MUk9G3vd6m8OBGZGUL$G^4vrd|pj-qUSVwoa_oN83XX+!9&nLFn@4r(-O z=A#HR(rY+traB4dmumED=Am+fuNGe|%7bYx$d1UEJw%6N-3NNBNf({Lg!`1tF(63- zT0f;ocD^_0@S^#NoBM~A1j1GFOMnWH#f7NyBZpP+SDQTo2xiey_8T@ zS-d+r2IdGzomy2)X})3M=^t1ZSzoy&2CYMCi<&~NOZMD(*+B@a^%69~pQfpe#5Wgf zW)|pGoF`4`fDcT>We=}x7)^f_N32I!uU<4S%QMx9ZsQ|W6*CP~E<3%x#DOfs3%es7 z@_VlALA@{R3tMt~hWbX$uU$5iXKIMS=-m!_DU>|SFPt%%U+O`?G$yRfXP_qhfhE;Q zs$#sshkkKAJb84K-6+xm`~0`a4GvrM%rEiSGe`wpGC)WXE|hgK8F|v9)c9{Kwz!U% z%9M%*W%R6fA#pPJ0xr=Y5gj_M73#7Y+nUM`rsNHBk--moz@9WH`O2W(0YCg(4dJc^ ztU)Ex`Q-t_Rh(Uwc5}D{6A1Xar5gHz$}-@cWTdGcGq5Sw)*H!{&8FnuVoP$2ctDS^ znxZm#f*z5x6cGO)0nkub!v~Qm2Bz7qd7)Ph>}+!$_f)PD{$0QAqKIBJtRbI2E+AT9 zjOs=}|M1}9Z8XwL?{#M8Km$Frqfcy@XOLa%3MitQoNay!PI=HwO=L}SCl!5xVL=O4 zk{E+>oL>No0lY0FV(a_~L}dR!H1cfy9CzadeWCo`ZeQmoHE~}>Uz%kE-63s1H-v|K zH628V9!r^_4hDCP=^{Ls*{&dQ@;BPSm#hLOku_W%F>2)vzgEWO=lYN(h-b)>iQq`b znQOWe(qUdh)czBg zBH3G>z!dWjOw7F(0GP}p{WZJZEWX}g;8Tt~ZK4-~XRaY^L+kwR6kVG%`$h<}jH~B@ zztihXTJQBy2HWZ$2eWcya>S=*g>N}Okj;=PrVN<%_(h}tz+}T1%A)iq1tcQ;1g4gPp31PB?{BM$*E-J5!C<^m zMZIa0e}FPN{=$ZO#XR!%_pY30?Yyh8d1On8z`@;M2HRtR-tz{oj#J4_ee=}x#>lNnGENBno?9%XYO1cGe+^ipkcc6pFS0ioPIL7k;PsKt`7cLYR>5PZXH}enkm$2)+YolFCdlY$ zw%L>^*7f*Liq9aK=U0;ki|?aXBDRhSds5z^!t6vkY$o@z1FVPV3_U?M4=Z+IYsT*K zMvtB{)gOe?t_fwecT>tVt?ab(^tu{t==(*YXp@<~+lE>D1Ps zIWFz4Y}XJ+04+_yBWUWox?A>RAm0@zDdzH3yFScJRx426PNDun{sWd~5J=3Uu0(*e zn7{}HW~d+?FBloY?vzY{8hS)W4Ne%P`H53mD4LbgJA3sfTJ>au)}sMvsv#s_GIkE@ zPIT(A-@qDTLejs)!x~^XO6z8=fe}&x1&9pU7R<@~;8y+mi?^( z`j4ObWe+82wqG*W9_O*)_{8i)m{I}+b@E}S{kxL^p^T55tA<{94jQgV0Y3vXDSl{R z_N1SkZa5h8T(t0JzS>EL5PBZJW40yn1gf%69soZhL5q4o zQzC#~G<~2Oe|p`ocUCKi?hU|LTkFwAv`@gI&8a(^{XuC)K+j9AY<_}Y&{HvL=6C|t zj|3yF`jxO#W%%^5@t$kveMmD4Hn98UkFnxlWX~tBiT)UATX}@V5mG>Ql zeKb*G!B|8t(m9%PBV)UZE4z^3O^89AUxG&K8b`hQ{w=Y$g}}~=(m$=`YjTQfd=JB zgB@gGG5xf^nK1y1J!S)*UDYTW>G0zI34(&ck1{DpH?TV(1s7IIi0U}cD?+}RaF4_} zJ>*v+M?j*d&sjrWt0}ndb37Wre5FC-uqZCzD@PV=9*SYklJwPXHZrdm|H$jRd$SFh zqA&cxBceDCK?;kmi;`gcJP0e~sMDq>=Z2K~5vB?uEbhC=AkY)(ate67TLFe}kP*#nmILjY;Sk9i){$y^Tf)vGAz^V>Pa9)?HSZ zNK6|`J}>J$A6Ebl0b5pvf8wG8Im6D_lTz%I{0GL391!?$-CfU%o`?FyF6{{Z*gXV{ zerOLgcu>Z>gzcD!yw@N^X_0kh%Z^#Wgb-=eu)X5sc zN@keRdOmQY!u)1$iMS5ZC6}n-=p5Q+piCO)p`XxeBR59oUYqZ1Jl29Eve26+z||0b z`zI8m-rDJ*|0DzMdW0zRijh?j|9DO3?Gvv>y+t2@>5reKSY&};Yv@M_N6lh?xEQvK zWt?w!;yT5HqzQ`o09&cMS#)xaOGM^Ia%DkXYxtZhaI?bR>ERhZ5nDq^nlWQDLNY`> z9GuPQln8?AylH+h2YZAO8}P`~j93R@`MBFvYwr}cbAEGgvtd{-d#-LN!t|b;Y}~XI z6?$|M3qq=R`4RrEzr(@s3qJhYl^H}>)e0xi6$<$stu;nTx2 zT0=Axi| z?(%SlmH`PVU!^KgHQX}}MZte+QU??2RH@$b@e*{A?Pwo<78xCR1(MmIzmnH>a0Or{ z&?B-R!tM!>-nV(WOtu}Wl?7AdAC&rsR@n?!^2s)?cMueyv(={t|4tz_VCC?%B}OK= z9ucD86($432!Dbz=nFS{IO({H{z&2d@1U3=0 z5qkoM5L7+9D;^+d&XWc|DM=8tMH(jc=??)B2`H?9_P)4=7qFQ5zo2X<@@s>aLi66c zH0sM`OR(Lz2T(C+_B$L_(Id>0A%w3=2SIVuLBaK5Am~38nd|hA+D7A9X5QKJ!689f z*E1q1`4Pe(ap$NT*nA3{3)U>5=Y*t%{OO~KXsYec{x3D&8cG+w7eR5E(q@5lS3iNS64zbJrGnEWcW6pT+hQH=hfU{my`1 zAJ-NV&ujah&fLfJ)yU|u2)@gJ6wwHg-K>tX)4UX*Xzi}5Vg>2mShwz_a*yI>2&>DV zyY?SS=9Hw!P5J2yGRoq6V{RGIx z@6GHv^K`Y72CXBjKt%u1u8P;s`G#jm8#lt=lx~E`^r}{^O7*aSA8z<;E5tN=UNX|T z0f_5yeIaq?0aVLNZOH`?n7Bt{xx4Z#*$wF9qtY#*FfqW{O zhu@Q7{b)wS-QQuT(0i=)@pRLqEJRB5h)hUCI=^dcjWFbPjs|Tm14CP5?Em0wl7fZ! z@7{dEH2W_z;%CK0!irDgowy_Tb>WHf(mGQ=Jw{*j&(x9=0_ zof{6>9R{RqJR2FXy{c!6x`^FD_2zjB>UO>k9|Cy%!vMVE2^AiG%-Eq2_WdV71&bEs zbn#Yf(>^aBii7bE_0xiv?D7N;8fV_K>L2owZ+TI?@D+tc+~`*#V6v^L&S_s*#O)fA zZVv)NZZ4~=QH=mHGM@qQ4ZD!>$X?plCpku$Pg0P4CTC-n4z%&%;sm$_(!XAwAb=e@9 z3Ouq8!GQPt&Q24y&c^(*6(1HX>?m=NJjHWAO|)2GB87c4E<)2OZ70I6R>|vyo;8cI z74;{p4N~Tp{RbhtIf)>ovdVVEdbx9F2amE79D{-zK3^m2i{ygr--iCi4!yAM`h~H8|$5?kghz)@;3?z;4X2Tcgmg6 z?D89=G8(9tUo1gbu&thGkGc1v)`{Q{aB-_RJRM|drr8Y)b}xD!nBm8kv3|opRSXEo zKG;<`enQdUoC^WW^a;hP95tq0T`y|?NlT)&8Gy1re6BeeddiLfk9b*upfvc+VZ;p} z>^_e(EqKZ{wl<}HWXtl4+d=1XRUveAO9d*p|4{X{Pbrek<3wP@JR$Wd=g5^kW~G8= zX5u(?|ArG6V7dm$^KZk$@?aXS^oTOn&Zeq6a3~U&HW_Ch6r2}UL%2)W$hKjo_vfaF z4gEd=6cGIs)$uP3lL8dioCl?&worGgfRry=zC`_MvNmbZFe26XJyF|_N&irFcH66c zdubS!DXEcbf5H^ivwxVX$%H&%N_Hvr2~*I(beQxcv6P|9O_%xrA zB(0R0AD?oL(z!fnX2G>nKi9EY$pycE1|h{f3CXmvUCw`)63HIRgT{Sm;S!}A>2{Dl zyPEO?Wf$X-0TQIlvDV5|?q#6qsrXYpmOe3@~fi(0QuM28!C@TBA+s zN3D$KK-0IRR1TO{S(Dk2A|49@#wDk60{8+Hz*5B5l+Nb_>r~7UkSBmivqSyM+u!Qp z$rqmx8x;1;hg~|fE9*u1|4W&~g*>H9ewqC^VOjoq!w-YuZ9jn58w*-2|9853rv^% z2h#s#9^-lcDy0Ou12Ox4A~EhCCeo(-lztq^pSgGn)?6Xn{<8HLwNrS9Zcj-Q;6VC60-~)T-W}WcIn)$)HCAZGtiTQ=No5Jr9&Zcu%5|yi<}68mHFt(2=7FD-NQw_tvt2BMY`nbldb=Vd0SCS^H?|+&Y z{%bPwM`wH*pljySr1mtm^SZiz*VEMD@MG_COv&FJasqA1Pi7o8IF#Aq^|BYVsZ0UzI{d6>c zC3GY2hd$tFg903aV11CwGX{L-E}1o1_rdEPsO%0~QZ_qvY>ZwACTwP!-`f2UC`F>O zUlx>-KNL`8saDw>W1SYsQ8cdCdl)Nvdd8Ren-X^SYsC+{0xJ7L-#O&U2_FXNFjn@| zaaIEMyw2%i$@$WcLkWqS5}=q?gbj=*9kxdAyN59~SQ+^bU#uUSf@jw(7(i`Bv zVGl7~tie95PbLCk1#hE?3~+yC%?49Vtc#?u!Uk8)%q}BB0oK?UEHVP?bS;tN6p)uK zLkKyxNM;J#C5Mfym$ZZUYeJ_q@m+{zB^2BaTbw42D%zN#ZT=*W&tFD8rB2V|$=Alf z$cTOjA03?Qscw%BPFVQh;Cu*S6LyZn8mgW+t2h?GpeErEDtP|r<&4}>{Nv>e5jubL za)vql{`%mICfJ^Qbg+au6g}(~z#c>Kk4{9_{rxy&VKpE9oDO2?O^+J}Fu|W4gQuQF zkKPr6{Yk4emRVWF3dKj~N}g`MHF}C3tL$5uKXxF}YbPz>6YQS^J(G{q^^K11@1kQ= z@?3_HLZ&VQ+tfVjJeCIoA{k+45~dS>+_*vtq``&Z4@Udx_u!zLBKk4!5skb6B>|7H2lF0wz{aL4aq^K?{J1GrJchJ3*_(qCTqxDS`iR8<(; z^`StY%E>rAYzgPhs|(O^=cD1*&#_$yQ;4u1;+(|&_v0j$pb*G=*o_PGoa{9CUBQMf zQ5kh}#YXrzOS4D!6;T2|RfGxV3CW2!RVS&R!t|o>iD;PMmayDGK5fRV#P_-U3$#;_ z$|$~SxdTEX*n8)Mm}X8?2Hz`08np0|`7yM>OMqoybsrFw!SxFLuD+Xu=|=*H={Jjf zTftWspClFvDY~#=t$C6s&9f|`!tSR3YoS$_>|aETC9r0GZ~T}f(&K~`S4C2c=+cni z&(`}5Gye?3JtYc@{R-Xm1Yp0PG8^IJy7Sb|@Gt%rqYb4;6EK;{r|^%Sghgg+p7jVm zyatbZb0dTuO8Y7_Ho_yU#ES7<2)5B%iQ$FMVnl7fZIPW9KH7l}u+dx-K<+maVw8Eb z1CyiB75^+iF}aiU89t4jo&gQCj|ZUr<^+ z*6@K+;r^fE=HCE6!otTr1z3xZDl#zG{$WcYBDgPmv|6p1Q*-~wc@yaKRpv&!nbY?( z>C1@rhn?++uQJbcnrok+n|irFw8}!rHbu=x0TJSlVpvb1yRr;J`%HE5HD- zA*}eE&21{%@&{PI7i3Y7E|~PxyFSf;O8-Bl{wPZVAwj?wU*-MuuKY@juLQ7qu;m{h7eugLb#W}ev}+CIrhqq`UK3|v><0+nQ0OOfJRYOp7d z6i5o@bM57er3o|MB{II%V#$5W$ui|b`gtCc(Wa1cazWu`K~-*PMqNUkf0)KR+HX@c z?t-*j!3^UBeH4Q+gAbUqF<(E&q|q9*DVN`G$2iA(^xNd5xY?Z;?ntxwQSwf20Mjzp0bXxv1t zB3M}eR^8(*9jPGwxt^eKwU$<*ixykc{)?9V6D_`&O^-_*aW^&dfwyjaQMr4yNVdHTo!iDM3o^@KiVA$^PHR&?!EsD?J*xd+1Y2C}PCXuY ziM40s!T7d#A3M!>5CFDBqn)m%ff%+=Svrjx;8oX1KL=~tBGl3F3PaQNqpU^A7JZv- zaSpo?OoM}uQ7OCef#_qaye&S7$LQMKWIzmNwl%;=n{<+ABKtOr(Wus-Omke4GsEeg z!q!agaFKM9aw2;oixG>~AZAk>i6g`5mcrIZ?r?&15+ISCiiPv3aYNGP?NWR}m4xJI zId>1FDsb11VPZppt~XaEOgafYk)4pm2>$aRVndvn4a3B;0$p>ijI(sodIEbdz(`+n zu%|9=*OFmkPJym6S4LktsVRZo31HNvF&I!AXJ*bYF{wb8pDXiGIw>ZBofcs9LSs;@ zCT`b+VPZ^y?t88bpLCLW0{axRk)Qe?Vs#vYA%nw^0{$<_(MvCYb2Q2DOX(zu1a^03 zqYJgc)XF$s1BN%f3dUi%!#L7OR0-@%%tk6|gP$wn8g&`obSN16OC^oPvxhSo5vdL?mc}(|GQ6o%Ft*Gcp3vB?|L)|~rnSAj z;N(@KwJiY)inO-#=bgO1Xt^*C+p-K?_j}W8`a@5=!=WmewDRZ{x_}&AijrXV*(bj$ zo-*p?Sewt+vG;6=nMD6K;#f(oNWaKC{ZV=#yfL@!!1%$l9H2 zG$xzk`>UF({?FHNsW8Evf5$kZ8W#C$8i;6>@c#wug$Rg%-#5PqjozG{dWS5n`#%?Y z_U|Bi#)nD%x(8mAneG1qc)~p>qWrO`(7VL-AB+&uVYVJj(WmU)xNk6D{|&Hbwa^WR z^*?x{+nW1zT9rN;!!;TQNglOWmy_V_>o^gH65rZrKc@=HL0yEn?)L>gvhrxk(Loxh zZv;Nr8($hZT&K5DrPPu9&Y&dCcv{z?GK;*Rhq51_RY8`li^I{aJ&OWadqN%{YWpm* z;}Z{Z{~BUyfTAtws0c=Cpo1-?#v1(R0BKv2vQEMRN&EZNs6K4%U@}{L>rN|Ee|}ry z!%k1&lY?Vi%1#3yyxbazKrrz!o_41N5W&V5smby^F@|HM$bXN-9+yCzGCE!+R)-kF zyY!GmlOPu39sPernRx+R-HyI53(@}xLXXz{%bX;u81eakplErF_x>B0$DIgyvci#? z)H41T&>d#^QrYng^eN}m=~D6I?AV3@7%-{8Tv1!U_ZGGJ!wga6+H zPq+`o;962akQhZ-l)LXgcL@WEK_rTSPpZI=LrD~C zvdg%@-_6vg6xSG-K(ioZJmO|7ROj`-(ngQ(FGT~EX3XXX>HSr$29(P+xSDQJAY#-S znn0k*F}Ze!G!UtL4XXu-$o4Z+b%&~Y5EApAa)KUQxNE$6YcX>-{PaHKP=!bk5<7FW zo-Zbbp&E5JJPFZ{e-zOO;R~5c$KVU6$ZmYMF~Iotyc?6m_y?P45DEKmv|bSA8^dqU zCr~wg0RK%RY8_PuMkGWPvuf%OLf!9`RsXS|T3`w6u1G@bpQx)FE5>}j%ba~H^yBz# z5DvRX^qM~=mEje2HwuXmtWF*l&x?oZ6@KclHcK>BV9!+?A8(}AL26|5uigLY$iv9> zN)0OHt9CAgqhAVv4MBKXu=3bFT|n$cc+Fmq;^EeVW-z zda?IhrEKL%rS{$Xf?%Z>0q8Ga)yhtL<2I}GRCzf(#$$<~smvT{%)}i)QVX4b*NX^Z|e% z`VKK3+bROQnkrCRhWjvZ^LH9W;b)mP`RxOg{M*oDajLF68t!w9r$Rpc$B1d~_J%%b-_ z&plcB`H2SW-%vhz0mCR-D{Y5UEBn%rQ0wAk3QeOo6GeHyZ7YL?DpyLder9JRneprW zlNl0?)fQR>9M@$Es6U!}QiW=9z_KhZ7G6Uc_xuYbQ4Y}pr2D;6gt`N(C)0aIt=iVV zjT)8@DiEBzSagS%>2w>kgZ7Lb@T+(kHcxm;E>YuX8>!ywvjVL7fGd>hzbbwuv`=@q z&Fbz>oKo^obC4dfJoBf+c$QQQuBHEMET8*(Y1EM(Z4|1rj^^r*FB1^v7Mc=IhV+7>Rq`w0R(&Y zC&m3d=5+U7HEEX3Qzn#+c$;^YLooI7VMj~%ei_m+*Lu)#(i-Ihawlm`>~}AxZCttk zXc@E;+wMA=kA*9Xjh=~|)q@`rxId<5)QZad-Rk-$Rx9h8YYb!$`dV9V?W_+0W&?Ws ziVvs$l2)3%!V~`zbCYEK<^508)u9BMqhN1Z%2z>nuL3zMh!`_5Rp=X`H~e5jVPUTc z7FWG9E6KyIu^t36YIM7oN;Hit&>^r0DHpA4;rFL1t`4n?q!yWc15B);D41df96PhA zn^po(H7LZoqjrv;qRbQDhviYo;+FCyuVL;>o&28efkt>yKvtiS`_0}N*usA#0jp&S zrj=;EH;|60-y>c}8tp>jN#EoY#Fjn%(kGoE_(qz9t@XxoItM6V`or!-SnHb6Sg1qNihx1+izENz_beYXQr~TyDJ= zFh?40lZ|Y?jJYL0Mf&O4H_3SZOQ-zfNt1K$>D3r4F`dU+&*j-jxI0w(LC2cn#(r-+ zQPZ<+@%QPk=~UMGEsw_dt)Ws59c#~P`|#F8O{BKly%?IKr9Gglbybl^qtWJ2DVdH{ zm-4ykU{L@=W6jBVbK)^PW+dm5MKbvhjYCbyF5c%SOUlfzbgW6P?T3COY6`S1u7iIi zd||CO^k@uR9|Anlu{OFoDX*t#2!N;|is-w8(_jGbon%dc74N;ej4yw!LNDMim4=+p9G;dv0*!xAK#tP-r$UmN%iHd3Qrs_v1 zF0o+_=VI78_RQWGOnliz5jlzTj74Q%D}EC?-f3F7-l0|pr$T?7>mnN7_6meb%a<-z z9J^yxg*F&_JBS4qcthQ0HzJ>hAgOK?vvO6x0T-Ohz9cKznNX@VSFI$1} zJLXoUgkG z(kqW<8ZL~xibT*7^b$jmwgXep!sn%%LI;uHo-e>H%Xj4c57J$UgpG)jC9qNJ`4iHP zsuw!?BS8kpS))3aOIj55Q4;i|qr0JP+*7zq)>*Bx;xW)|FFNg-={vApcblr@VqvNp z=|I5J2>lm%IgWO{hBQ;xZd*a{$pUp5y0cFnm!QmScDyW(+=ZD%*Tji?Jb!ItS$>H(;xH^=?L8{IBSj1Q2t+I4Zv zXY?1g>%?OayfXLLO{jkiYHW_~7;C={Qgq@bbZZUO$?>MkRtG)ycEyc?6v6xT(p3sj zunbZ~Hvpyb=BMP$JtE^j4Sd}`yUS`Mc`rss>0}G(%F^MYyN-o2b5MM1>*>WW_gt%G zZ2{A|W2W4AuQQZf=3+nFl|DPuOJ)V3g_^aAL0{%w<7q{G+mb%x(@$n42OGJ^w4a58 z-9X17!EFuG?j{xOKYk_dC~Wea(YoP_$7XIw-g|$^9!zX-i(mlq;xXFjWNpj0bOh#P z?CA8JUad-Vkl0(^yogXyp1bO`+X&wnN__UbKauqWBJS1xmzAx$9XrEScq~}t zshD&cUdVd^3+nk_1awFeRK2HJWO6ktq04-v+dGDzGJC~)!(}BqbD?x;sz@3;rrDn| zson=Jlrhyb6xdcf1vVEmEq>I>JQeE=FO_@?vAxyNvUF@I7|+Xc6{u66A*uhUYAXC` zEoc{AmY#8uPAjujG_VbakTsG9N%(jI%$WZ?Xp=cLxFAs4wl{xn#~#nX2_b800uX{M z7qzOPFb+OiKcDY_yEbUCKht+hCAd|iqx6Iah3^LDZ(i@ID~v;eq1>eGt-j>~$yZA1 zi3FHaZfDv4_YzjILh}hxL3ajT3db||mI90sRJq#*p-e5Jwg_2zQ5IcMCty24Q@=Ai zgb!o=5!C)v+;3}mW0Imkiv^@vxt{=HFSGeVxZaK6$_7o-A$dDc*YyIDSDvLtVNq{W z89}p4yuJ*4QOUHb+p;=UG|DyW=cnLZ*77GSd!^sIp~liMRUXW)@ZOzQKl?fg2;nkFN>}VYa`A$u+s*UW7n-MA~S-QhDsX*sk=OT%fkP!d3Ordb!5zH-hhX zu}@Vx=t4$9NG4qGi-JcaLBE=S+7$c#K{-2va>3K63%V%#esrcm-4((NO^{%B$0zIj zL)o^Nk=^K}K@e&5-TeqG8nd|a#D15E(4maAo!HG12 z>++%97Ev9??r86MNJ_(W2T{nvt3^_Ib8SyEOf;SIQ)S`*50E~urxW-7E!Xc=7m@yzA_&9wAMCkdYz|D*k3TDjw;N3Q!8)6yHA-H+E&E`zE~ z!mv8v_`|SrM^#wX8q*Sn&Mx+qluL(d(^2bB&!hN5=W@q-_gwcyrlk$-B>aI>tZ2v_ z)6$ssF3W|KOQmX)OY6_q%_my$EOyJiiP`K|WluP)-0RV6%-!i3j%a>q(fn3Yn7q^k z!;5D)EHvY-Cc1#nV{hAH=UqVUGIh)1-0Y$!qtPvIXpS&@_!ll&Mm4L>S@@DT-=2vs zBoJVgg}H=dnS{H5fDwRYGtP^TI8`q3lAx6qqOouyOG_{dX>KpK61}}WBed(X`YL=J zMHtN+?Pe{1HGhq@TgSH@-5YDUd#q#TxSH*WH-#7WJ<}DLdJc5|vX!>Hl^^N$@}tU1 zuZwim4J;h^&9ClBUwmYEPC?bepFnW8L|pmC5;E#$#%HAz)%QW_mOs>+9_;_MuP$dN z(PYEBXC~d{Gn7Iu>^>3d&-JR^|AhY^5aIum=Me?_D1>0$+mq}NSeS8(&A9$nl2WP1 zpIz_=nSU5CS_k>sNWKnvBOhswR7uxg%8HGffwYM#g-+8S-F>_btI7S04C(a`O#flF zf;wb5pEdF`iVaYz}A)tyT1mu zG$vDiakga_EI^qQbNmrrj^7qju+x|z;;1p?zf-RAq^YR31ip1rBTNLPHlbm0hP$*E zM;XwRTbm;iRg-Ylq-s)=fVIk4W%RO#^<&$hH3(9Yi|#03QHbn0s&NaP%4$}Zrr0r? z{`rJ2sn!ziZb+lfx6BB@Pi=q3!$1o8xc_z92;df9%i(Kn2xuF&1ZkH1LhZ4!Qm=>l zrq~zp=|jpowRn(7gKJaa4!Sf(yLdy=H~#9-%&J^|8RG0F*D+HFppVU(OAk8;cTd!J z%x+$O6O!h}O3k<1>bH}AiJWDT7U$HnC8Zu5=k(zZBsjWat0GOk>5V8rXDm%4B;d#& z@7xv6Ai|`q$}t2sd{o}zr@VzbAqfs(etnMQ*sw@bR(e7TkkUs+zML%4zu=3f#H|Pu z90lI^)AmI!e#A9KoG;JMKc(>(9a1HWV67PCZds?_0V#W5eB za*~pwk%DZzB&Ranl+vGsGM!Kc-@!L}#rVc#0;=nJFe9^WpG-W-8)f5RrKH!2Mt>4X zKYpp!O&*yi)W~W66l#5ba>2}CtsaVU602Jm{&M9 z!|2EdJV~$Hcb~61G7E3b2VA7p^|;UD9hqS?=L7cB>Qde3?GMeu8}hk(0wVsSOMWK` zNSVd7jufIDl1R-*t?kRD7E7>lefO-w)E|hERha3!Qw{NSZXcVzoVyXyTp<>ACLIuZ zIcGux$@-qAXP>P&Px0Q2n=coVWvAa_x__iKjtgSk+r`q85k9p>r5Ez6*ufv)8UMX& zR-B(-nv_;&>^3j8YsQqDUmBHGC*(F?w6oimx__=56<$IWD2yVE+Oyx9$F(a|J%?iK+`7x(ds=+Ab4QgP(tTQ997(v)5kp57%#DqVi!U&(AacPM)_v z>lqmiO+ym(yM*ZWi!UfGZhJp?ewpn58;J2=KP!y-dh;zaisS*(H@{=osqTD%u6vnZ z`rGUzsS?lr4LUNA)fgd`-HktJ+c9>fVYokRkGNcYNHDm1g1Qw>Zn7M5H_ye}r3UuG zS>j`6h+7$G%USspq_lO;GUHl=2KHiGLQS~~o9MF!3@ODd2H-=K7G=Y{`J_Cu*ck3h zS3=sqY>L$cb6ntq2!86yi7|Z;`W}KD?ZNj{NEwU|+W!h#Vor3X|Lm5okj?$X*Nj<@x?Bh3PDj|8arfmeVJFsgxXlaNnYonZE*&R0 zcWcgL+3bdXOLjm|N+MhSX$_QaUIQFZ*44Pr{yemhmizoM%=;JpdW61p;BZ4Z;GnJU zOzd{@d?9B7uolnTBe->N2yyE-iD`S=q5j|wWgs?dYG2Dy!6ik+We9d^-rJh@ zDMtelG|&xb0exd-3N+!Pjky~HF5lM91hCs*p=?f0z`o#Id-Qb^|zbtx z+HfV2WD(bPnHz_2^Bd?7N+Vs|``5SlS43WfURYif_YAkln4QA@D*-EmS;pyhBoSjv zjJirlYAS_p9A0Eh!4VyG*?Oz0lHf0avPBYv13U9MhE_HKDH(W0B4%G0BR=K6F5-9} z-&gRnqUF=M=^60XM<#0Js07+xCf1EyH7|~)R{Q-2@hoU(f3PweG!}0lksZ#|uaQ;Y zru169qrlD4MIq*P1Sn`R{Y64u%m2qPRcf?q`Wi`)Wrio;B4KF;SNN7fZrSdz#` zB}cYc1mS1ii*e_gLPQQStFY&7sc|JYblT=vmhgbLDf;Y_Z+Q@d*HFm=wJK1O^;m1@ zX(bZZa}VEfP8woWrAuRX{5Aj0%H^iUxMEEqwj-XExliA|qK3c`bE^O8c(VB2##Otf zE|aCdLG(wdB53|>#=$ru$||Cm#Iho;CvZ%}aYYaVpOJQzQp@_`?vRE!Q zW@``_Umg=9q38Rt@E~sf4;uF;1?wih)PEE-;GgmTSoxhy#Cvu$B7?~?zsE(&!-R0> z$pVA__nS87L7Dtv$G^bj(q$)Xi^kBAp#|J}@Ed0dj0aWE%8;jQ!MS&=eZrEM=Pi zpV8+*Sgp=CMo&BA(r?_u$NYLfW|2fTEVu5B2EMeFiA+@N{HUoYbM5!98shuS<;g%_ z@D7y8W&?E2U3J65(5Oi!Cm9n%MH10Y<0z2)M0y8Ub00qrHoaoX+yHH;{N6( zbV>$EnWTF-Q)=G|`ohFH6WEI?`#weVMwyp{DH$~8knX*jQqwK$8~oXnBnm6C8b$EbNx|swbr#U<5&lf+&M-k#RaE&~*{WKoYGg_t150v14r*?i z+{0B4U#gc9E+RU+g?Ah-c}hBdTg!{2(Z*Gd5}}>K?Q>B!LY4{7^_JGscQI#EqMhtW z1!;krkKxE?C%pwD%ff!RCn^bH1eYS_^6iUmBWnPGQ}K+=RuQQaN7IZ+i+DS8r&Wba!)QX~UO{Q~Pg!`|zq%#i zr4}|oIafWUbF1BwTh}>q1Ld-~TCh}Z1z*9L+bEn^wC^!2vCjhhA3(UI0Qx&9psI{b zxmlY36&7Y)@_lidEPP0sxF1i4n1(C?T$f&RD-AZ~mT3MB3p>taOV;W;qj`|+!#?am zqxu#nY4v(BCy8bgyl85bR&9VS5g66o$) zP2t4leh*l`!#%{h1cKKXY{~{#$33*buop=;_O*(5JR$D(Cr%%RSpK#uwb2rKzNX36 zVfn4wv(j(0t}LW%(#xM~v=UkxP3xFl9YFf(CtF#S_Lvt#Ih#~>@j$r7)bNjkAif7N zZg>(C3zJ3mFRFC_3!LZCTa+4?);2Xvn;&TuA6XoH=9q|NS(sxa^CZ>OU6Y~D)v&U$*v_i2 zYZ(!jI4JksD?}jjyu@!x9n6wW*V_QlH@-HS zFz3lyT-ky>Y7IGV5suVlc#yFhnV7>a1uh`h0Nsis#@f%6Y6%m>;YKA^yn}#?m4)-R zCQt|-gn9FfJh<2vYyI+YNIpJ}`S$zlF+ObN+T{ww=3b>+^jjE5c3EXv^l!LZg)_vj zn5%C}QN;v@J=cES!xRLh4Y~q+mXu2P3Esk4<80BxZLWQR!Bkc8cj(Wm{`1i_Q$Sl4 z8V7++A^e=i*HXg&G2&+d|0(NQjTg;0tn|n5Ac-j)uLds)UhPlx!yC0mRBL$kuPgCP z)LfQ;FlVn=WP9hve4Mo@ zjpU=DaKLTn{Vb+u(H=KV?)CN4_hWXR!3(WlX)E_ie6?mMlO-0i5$pgQzRkV!R-KSp zoYshi`c9(RH8_3)!o#M^$~PK_Gka*3%D?%BlxNh#n@0UMoDN7i>-UBi4}C9ovP(Pd z+#QYE_R4p%DO`x(n`}MflymhKW>{)tX$mCUcJ|CzurhStPf6%L=W5Z8-M`@*Cv9$n zTO{~old@OaSyqp6ZcI3{5arX z-{8t_j=igi6vhFu-NTEeT>?^tLWb-%3uqSP9rZTxOFe;V`i4(f8tt!)vNw(<3D zhr@bjKD)gk(;}*DUBjh*Z+A&MDUNc12s&e1CvDnHw|o#RvUhm#QrCOozzforb2d5F z4`quv=*zgnYtS`wd1L1OZ3yw`Vmjw+zde#ZxEoWl`MFt?Vi62pXF)lFL7PZoN7t&j zK^ThtAB8_ivEEs?q@8>8D@yK0-Ik31K6O$_FR$M6Sc2Hr%~$>O_)fdLS8}I)*+#?A z3UvnybNPI)n{|JXE=w>uQMyrKO-6J=nsUzO3~!?f(6hlp^NG!X9ZwE`N%|$IDAjXW z!r%VFm1+x?)N|dq6w-($8@&Vp7sp$poHy*KtT{;9kwF@_$YP>kOSaSY>%GfGS80zEA%0@gPz!7L+b%treX;(7-AkN%zZ? zy{S}!?1D+s4C+l)&TJE_z%{TD3-S<*!2`^=da#q0N)H;=s6q!1czL5m7E5DMuH~Qn zv1r6x&hSFgb}Xp*GV`f#(#wN)+}hx>W*RjE=d-%6=|bAJlyR4aDMaYgX>xVSqp*sC zG{(DIO0gXoY$g&~tjJ8?FV`U~($D1C02koKNm>p*DBPr&Y~*qv+3+LJo7e9qEp0{S za(%Bt(XV&j-kcN$$8RVCk;m4MZf`CHbJ5P&Y%GwMx)w%#wAZbgV}9azb1utDpVo&SJ?Ar2;TVwV2dfbp;3gWoMGW&?bM6Zd{12QHRWP$M*!)2 z5sMjI<5OoM%=Ky`|c(W4k{YFC6uXcXdnm=u}a1}fY%f6azdr-&|qBO#A2^=;7PKirNhg_|RN zNSG+qAsbqV{4+p9tb@~8mVm#49KhJ*+bp>Yy^#hRhH5AkhYvb}+5l;i(Is(+xnq&K%zB~D(GzapSddC= z=^1``F8&-(y~rjA||GfN$;|H?UAxl6A!ORc^d#^`DIaJimRf_8Tg zTD^=yZujQ6y379SvCR(UhJ@Y(o%JPg74_S}@GTMe#%PqAVNHtS&fjWSaxcNnv^+ZN_VaV zdB~VkjjOn`N*(LJ$XYX7WGl66{+l=`->!IH8NlG}Nqh zj3N|Yu;Ji2o@?Bkj-`};T=_WV+SY!0RMmVxc8ck@!b(lEjnopLdQ7_f#Ar$0a8KL~uv+$)Au z>d}L1}qq^3dHd*BZDW}!|1$DsDe)e zt=7(%K?dbEW}%d_no`bp2?@;XTn7o3n*c!LspSe_u1&Mbv)-`X+ANd=;w>#5Xu6K# z&5){HmeBPCrLhX9J_lcBU~Bm&o~!d!Lc$Nt7dD{+3%=6Q>!uG?2o_wVrHAIOGSksa zmN70&7oeI|=k+-Y@61BEA6jdf+tREWsW(iq8Q@xp@oc62t|H70BfA-(AMR+Ie|8Nk#n*xZO{vO}^sCn)AQP)eIksvuy<5+yTpsGC-e8)go?iw&fE z5Uin9!jgsiBY+MY2Qu4brTx5lZdGyoRvpYJ$kToJtYmkeQaa6%Y!SKGG&(_9x8yU9 zU9&W#$mD!I9S$%VcXv{#xyqX2YQey#*laop*~nyaPF{2S$<2Qj2nF`r(j{M&wi8lD z)Egu9WL7Ey{Vp!+17l`O^?YK}K`8PNNsx*SG?XrI@ z2YE$;ZdO8%--+ig--$kE>-?cF6=Lp}!$CW*k=fR>-EPm)9jjTci02 zGDwn9XOI1@Y?fLZ_T2!yq16F($k8aR%gNjS(Dr~Il|UL~{SoqAvux=}oRg>dp> zgV1L(f5JLOOXZzHfjT>>N_X>>l%V)kx?MD5IZn6cx14V7zJ1!W8)Y=DcON-1997f& z-xJ33qFxwfpP(l|t=N{pQqYuRz?Hap`_R%pp3R2Fi1R09j#p)0VUx4v7_D4U*4aBgSdy&RWY6(}|$&GO9fL1gYO za~THO{8}D_f)|~(&{&TWa`bfN+q2Esa4onGy3gkXLc)Cnf#R{V7PPf@7WP13P zL4XRvx=!aSROgQVhZE(`)hJ|zASr7kak|_+YzTk(dkgZ%&U{-+A%6^9E=+B|$0Nm9 z4QLMXLEW~9kzKDF5M0)XXh54O=~!b&JgErT#_gChn!fI~RFoZ}1@Ex@N*_)SckSC- z9xUVb>l`h6BT$OG$j=3u<;o@>> z0g1FN7BIQ1#z?Qj=I%M(*w=gt8G&v68n4h=*N1ES$HX3O+Dn_r7TyyMjfm~ppNMqR z^mJ+2mLGYy`?3e9%z{lSP%hwIlRJ7yiTgC#dz#vMG@2ghfVhK=KUP?c&049=3SRtb zdeZOBnRkv0mnfqF15yQy~&SS@pWDg3v;Vd+n5>E%q%n0{0HG_?1h=>wvoF_~2?G07H z5#-6M>hV6J&e^VKn)n9N){B~v%P#l!SH_L?4ZTG5v+G2fi~8Z3mUiI)>&jk09ZXm? z`;JKSmqD?IWqi~fc8I&B`kH>Ym!)L5J6YC%&8;JlW3VK$GMDu*FhOt)6gT?;2lFQI$Z{+Z^DzU-%U$_dik9>L2ZYX-Y0X)7gtCgVj1jPsB0V^><9 zr6Jb}a>oXJup1j8NNA&c14{^YR?@N`B1u>iTj*QLF213=ZAAeYUa|(Bel^kiQX1;s zhv`X$Axop;H+N`IEJ7bzIi(v3nI&aw^|XYi%N|%cjXD!F$g7Hy6_0Jdmg^2~lKzr3 zC{*`!Sf6SElddAl3aOR8ug>3W&w#(<%X#H@-Kv{!*hB_fg;BEp48IK|^gKDPS)m5N z48aPjVKJ&Vh@Qifr~b$P0DyZ{MDu~h_Bs`brneu73DqVX?Rpm<$cQl|Ilht2hh(m!oLKbqR9Wk7(Qj2PZETd8 zF0|RApNh1(gA(y!Mf0k%ndL=hQ~TGy-^wo)5xr1W)sDy>fS&QCO7#{8`z96PsVdhO zRVZ_oGMXsU7Kf>E4z~_UD09a!N+|m;6vrt?Sd=TMaOSj<&L=$^(N>-<3R9&Lc~vQ; zlBk1gDEu@n{Dq3>U0MgT0E&yqdG0cOrtXWC6Z}%t4`ycWi&-VVuuZ|!_9!)rZ~!5V zL!ShV+ILgh60uM#8y*ZQfRRn1nT4X#;u-%MhWU!Z01*`+-g3ZGx>D1AB?gkPSU=fD zdkJW?fr)rEHM7>kgt51?D|2T{4KiY2?J+LLY$sIJZ#L#$09>t~j>l{hVZb7vKnk6(#;Ktd(Y6%F=9#}Wz&%e4un!oTixt7yYy z1|V=!6zqzSqnLBbkNVnUPul2`kQ~3Z^~U5O4Y~Cx@cn@k0*i3u72c6KgOAKgmoNG9`Hhg0GUy! zLLT$o5M^<%2rY`eFc2#mZBInzSKZ!($jYh0|}>*P3`i_k^B+&5-(b$4d^Rxj90Av2e@1ZQk9b{L=~@3)jO zGH!|Ku8Zs#@qGye^0xVCPWM<{N#NG2p#wpFTI+%b$Z{IgI3^Sp7Ik~MG~B|Jd^x%0 zly$8ZC*DvdE zCe=@Fl_M2Sbk{_-I9(8rkaZtxMz7=|F;gWOG!|syMBLT8=szBF2M07iU7PpQ5nVB{ zdEdLYf|*}*1HXNmI_4lWb}g`dsx*x9Mkh2ZzR@;8`4gDc8e4*V#DQZBBp`A6w+M@^ zm%EaO=d0UiMyD)J%ekY?ldg$;-bACmK?}ar@_^p>WCae;7wD#kv`8uxeWLh zhi@&FZXLqcUMs1J{!Xgj%UYMa5>860*IRG-(2C`-mAh;8jb&_gflX1Hb|pyigwZTz z;meZc8yjx1UaD*FHD+{(%I-dCsw>mr#lXlcHn#!&;_$-p347{T?))*=sfv~*b1LYw zM_*q93E76R<(HI7sMS{Ke7iEF-WwOE8SKKqX}zJ^za&=YD7o9R-zVEfsEs26?B5dhj|%3kNb zf0gPJM~YF)<|2rxffGB`U2{wk+126TX0A8PD_G06n3_f^$mwRzsI3T24x3SG$y=|r z$S|+{{;Bdjc+F0|pi&-|0r!g&f575>^vp1EIfL^EA~@M^YO*MApL5WhuVd<=5+`AK zAyBs0f>GNYOEr7FemXdqCgZ)*$hX5}!PSR5jz$HDMgT`?kT-i=pS%{F@~p>0tf< z5FmL#4k#FZw^QT7$9R7VS@X~{c7N7Z)`a1~9KgHVbOs37@q^u9(vEdVARC&X(utkY zZ7J~@^Ss;KOr1+XUN_+<@XF3si_0_d-lMy4+ngRzT1rN+d}y$gfYN#<9!@;4;6YTh zJMPC$WAkcIlqGoYZ9y>E+qvMBw*W~%w!baGh?upU= z+=Idd9a%AXNt=j+TCkQdMC*bM1D{KXUUo%iXS(Zsn3F#Y4!|xI5^V}jNXg{a{jf1^ z#YSWEVL7_xxvS_&&?eRZSq%4I1fN7N7vw#H4&yTUjdnhgu=6$G%&Ry z#S?Zc#!4hkTDc3P4m`{}H@|v@X!zqSdiVK+DAU?F1!r7H=7RYvBGJofd9EO@e9T1r z%CYcop4vV8r+!B1#LSQu-MMX~At6?^i;;3a96io2f3saXHPle{^bjlqWGhJi{1tfZ z@coz~)|KK?D!AXF->|vEi-7dxdX)*(&{g{rl(d!Foh#oeo#~iFPpkFC@*=R{j zpdrvhpMHny&6ONR8PKmrENk`u*n11;ym};U(9F!t7_XQj+q%^W@ct)W@e6= znPX;VjF~q1dV0Ehx_9=Qnce^VyJw~HRo#+QlFogPpOUU_>E&hHl+?m+q6WOFmu(4w zum|B0%c+;1s>doN2T|g`(JQR1ZpD<}U%htv zaJm39Y@@dau@gbQD(YjBGAfgE2)tn>lKWXB>DSAT+$khV<7ybG> zfhWG!gUQ*yMF*1}FBIu>HRMifBY@*}R{$yJ@E%dTzZ3%V{|!t%jG78P51C~3>-9 z`n&ClSI`+jEWf|K{>!ZSAHKf6;#>>Ru))3P)+*`dZ9zobBL12S5xvF4<6F!KJGI5> z0c?K-qTNg50&nf(={?OgZPGR6mHo!|;(7ma_ON_ezxgi&vd*8EHc_S5pVeJ*_7_2p zFM~-rkH!Ra5T5O(ll?pKe(vWmKzjb2=pE2s1G)6CmHn3ml$~9#l5bDzav@W13W$po z|IpIEX#D?7)Rp1yp9VwVfz{(K=kuUP?g3Q3C8P@fXBI95pq=`D56M`U;mrTd1_+^- zSS$zbk6lv+Hh41K;vC@F-JDSO*20R_UY`@po(Ms`?-2WD{)Z3fEhyZqW>dGT$IJf> z;syR5_l$kX`p*cUc9K74t}r(O4(sUBo>#JL$ROc4O@{@95OD0KWBh~g0DC#a{}s_L zAj7ww2;;xdg+DJSy2Bq|p8CglJn8=yomcvNe^pQOpGnhgjRJV!~`#t0U zUG_;ZN;TEM@CE$XlAaD^Wkf*LMKb7-JN@H7n(m8|9%u@-#u6CLEygdy=SsB7Z$vvV zS{Kp-j=P7fMG!jTCzX^CoO?Ibso#2Zpr|TMv)scXH<3OSZuHBkM21Gv}qtfZUni$=~Yy zRW2X%tFRQ|zul?b|E&~dNEfd3+kJIlIS*Rp%Y}1qEThBYk=Pee5-yaP*pR3%4rFbcsCV5AB{A7LW8=!w84Nueon1df_Y)$e28W7Fo#i*V(f+=Drv80(BO!AmNg$*R|6u8A z?Ue_+6ad}`PP_uH_+L14!dMI9w!!@Lhbt@>D5a7fQWrScE$Z=J78eAaZoI!bMkDgF zReN20XS){ZPs9vmhpw_f(Of2LsS~#`ir*Tg=t-3Jqe%x-Vf!Cslv*1pZjOfcsq_cNea@430gy0C1I8u$KcS%=Ik_EC68I*I02&a~!oMoS&1t&#oC=s|zt zL?{g|q>47#hFt3n$u-5;?~YPd{h^3rFi|?^ca=KLU&`hVMvEpArDJK*NmST`t1QAa zm(g15sO^jt_eP6`e|L-lrAw?m)n;FK=a&xrDhn>nWuV_m4<-{QGHKGeRoI-XEG{&c z*IMgZ?TzdYM}KF;)1*^6yS&sr1}%~YH~;snTt;}NGhgg~cWefQLe=*VUWF)aa3+5{ zm&xvReT1X$7H$Dc-iFZ({APo1)qVJfXRH=b=UkA7Ej}KfV7WjX9=|`{{m}CGA6|iv z_rSV9S8uVl1Mi%U?Q~gEPHb~sJMNtJFNRj5>QHvdcw|2QKP~u-Uiq=`kbGMANJI1f zdD^UK^`B4Jw0F?6b8xXUGKOJd=49ezWq~0l7nT))0s8;L|MvntgQ>HHwE-P7Jv%)U zgQ2y-uRj-86C*3S-~3d5J2M+I5D_EL|AOH7`{(|vEB{kH|8a2tFA3ywUqtAb=viUNr{@Qj zV3_}tgY20Y8UK2cJqHWp-%he;12FyBlk7XxR_#{VkUSSvwwSU)E!P-WQpW+}>Bbb5 z>s;sYIu_zlKVs=rk~!XA2!`_uiTsH6mOPQfV!`guvit}9&>~p+&`gq`>C|+4%_unH z7g%y_{CBw&fidytBpA0-dw8i+_Kk_i?R%KbQj%Lt)fhRzFxsR2VM4Vfwo5=2v4pUD z68dHgEL0g83zGV<|$fCEWl^%6ddR&0{BlP1yLudGXdm{U0cKB$= zfMmhqB}RP{rOdGg=t}9LkWHY*A%KLvAsO&r?Xjk)IsC5Mdyscsw`^v>;Vytv-Py0= zs7F|DLz2HHxxywRK@w_#Ql%(EOoF!<>w?K8MlK?Qgv$W$a%y7Yfx6K{_!;ygk&ZJN z0)h2xvx$Vu`s2n?cz z1EoDmb%#cu`MF|$AHw=XAggZ!dgOzt`$ae_h3Q%^#;{_~A8LRDm?vk11D*rbJ%!T{;UN+m6f7mgdQTRt zyj#vxpegL@6V@3=Nw9+L4)HA&CI?XT)7Av8lgD7x=gH3TrEAE0a~DtBX1uBBeqi?( zr>he@kKMyb&O;KmL(N;4S5`L6+SDOqwDgysD=sfjQ?;oB#$vM41}vcy%xs8|bb#<{ z8_v{qf>0SAQ98qHeS69L$&o9Z-7q5Bk>}?N%aJx(wPe>*Sms#{?!qqg1(jqCpi$tM zC%JY~dst@nSDoomu7;N&E5T@w^$XWT6wi9kOZ}Irp|7^-V?xY~q@cTT1YbvZ8+m^c zlC{~MER(S|o9cCvPf$2i4ZjQs9G*=C=yd)(Tlad;NWZ&IgUBi(-SWlEYFNgeW0Hko zBqZb@MPr`_XA%%<;&Dz$Ic}%rZCUT&o;QtbgLR_$(Pwh zP+~WAgs$9Za!4CJqIv5O<2@Rt;&#JRe4xQGSV|;MlY;6tLO*FIkcEEWA%Bh|QmM$K zMoccVq zD$`z89fB1bdwG1biki*h)<&58X$;lkMMziCAUzj_WYiBO z@Ze*=t0Se6qEE|T@7SCry7fki=$Gg3*l;ly#lI=nnMtrocTC6|gQv|kj-h~Q`01V! zuie3nB+|CJNluKLCUi>CjM_p6Gi+bULO-LkRzJY0g0_y7^J3=+Ue`A)q!x#dlI-@h zqt(d4s4lVSmZPoetym^N?B}J}x>}F!-)(gkB{@qJ^i@T0OP}5c6H?TG48;&tgmlY4 z*rkdy7b%f$&Z6*$HhdsWFP*}qx zK7P;KFRAI{5+93q#VNaMe6c!YHk)c3?KY^JtMcqB40qgInA?{?PG%6sIdR514f!J4 zpAL3wT{h|}F%ab!CNms|T1VnjU%YTduj19>@nkD#^ms6ObliR%w|r0I|4_MZ6@3mv z!7%5_LjwLYpPl?Cg-$lRb%-)qhtcNuD7GI{d(O^mR8N+YUaN%Og$*O5sdWR*v)YQF z2y^H207ow=vk(=-yRtWwGR;&csPB0V zDSP0a*`0{3UPVOCr;Lj5LC?;V(6(c1#(`g2D@M49i(6wB*DlRCZQ`vEvI$dZiQ_9H zT1G9-<1d9;JG3+;zQ0V-r%Z4!#(aPvKX)#lznC2WZZAGQ^@+cLFDqf%yL+C)K3U`C zUVhtzo*2u-)Gx&L6bUtnl{gsC`szquM(H)}%9qoIP*Sx7(+8@XT&5j`6nR}S#prSznCU=3 zwUXJp&te$5<~L~Y$C=0(a2&u8`*e=k7DJ4(4Mb&*Gw`{nX1E}fs|8FT48*(=F`EAY zQI%ZLOBgVZafO6nPXzc1tQ zps%dtPzdl10$+h#(}aRSmgZO^=zaLKKnFoe%775~{e%QqNr5w!)p23~X#Cp1aLN!u zz;FxXAw)hs>dB41@G!I8MPWr2JSUJQw4?)S(Fjy8ogRwx5X=O~-4!}4<0#5Cxpv_4;y&GlM+S zcc8c8nBWtjh~jI*gc!Ohuu5}rj||%Z`XJd6lExc9iVDWR52jealbcStOq9g}m0{U{ z#{ieg`Eh~B>Gzh9`zTYTVsz8^%S>>aNr>3$EUgPX zuA`|iuz$7;D?i<-zpz=Ipm-TD=CvC1sQAp#`E34kSwr6Jv2-KJXgOtQiH9Sp!L^;v z$js|Qm%#ltC4Fd|$4Mqo277evV!zbqI&X!e%_twPEQA zq^s&P;cSP*TnAU;t_j*kndjFd@~C%$t}2GA9>Wc*hx+xD#HzD#p3ymC@7}5=RdxO2 zOjn+a1@9=qGx;`fJJ)VR7O?H`xr0U3uD&ulbKYFK?2IOl$W3LmbVRhv+QLMAx98_T z*LDGQLLKjL{8fs~p|p1si3+@WEL?+E7Tl7f91k10_gbc?QA&t?)MQdnN|6wlgYg0M zOe}6L&_xbmh=`+*e!^7G^I(&MUh7fkr4NY2mOL#!j7>(l?+nZY?nM$ zx7EjlKOzv#MM54CAg$#OQWi;OJ;6W-^F~7j_Qi-E5AcFl4kXS17xdxkQN&xcaKz-V zp?g`+A@CEW&LzWicaN|Zl5&rMUg;)Z!p(0O+j4`g69ni)9qDO#Da4zwSUsl_U{Z!pB&qmZdGI^4-0+1%FypbP&Y&{g#2HIe2adA`)vI;J7pA64%2XqbLR2$1-Q zLM>w7PkM(BiK3qvhI@^@{}IS+r;lhYX|(Sawch;=W4jDS-If*2$eo+hX?v9J#Zcu^=|A{d= zrhH%XLFP0syx{sIG&jZ`{d^xf*8{FMP|7SF4R>G`IoRj$K2MSh5>V$@!nwAu{???D z^`H}Ihz{os4owEyleR~ zifN)ewipQRX!aSV%*=g;hDjs+aE4hmh|`jI*$NL!s}`p`#3QUF4*=U1=b-QQNoe-L z_UUobM|Q@SYEbwk=US6C#hk^Tp`CJ=&-giCuU1x5`neukaO&t zk?6tJwHRHGC-gUyqQBFn`LM}v8A1-%A0Dl)g_Gy7(XF^m?oVAVVs`b~b8Mw^r`4aE zjZ4?`aP>i)&c%L+$Fn~49}$~^*;aqBfAGEgFAvopf!Mp~^=AIKMq`20@yJA2Mw3<5 zy$Jw6n7@`;P`{sqsV#*4*ejU0^W|={(weSsgYWRG4|ktR9U4{vj61(C&q+2eyl0T~ zF-`IKeb4GlHg^kMo{>R_s%)C{GZ5`*R+D45kml)2b4dzT&qh55d7w~u)z;n5imSPk z^AN?1HJi+$q)i4jDFUWiADPQbv^*lAw^nkIwXf>%U*?4mK85PJ*IgeBbTT#gj3wF> zYiJ~JnM8XWw&j5P3!uS{>ER?TOwlq^pUujkjLs z_j-tQ@w>UGFBV@Q*hm}$y#{9jPs#Ox89_ZZ(WwOYyraEsltiq71_aGKLM5J^`#z$A zY**bs`7`?qq%txTBjr9#lf5#YD_2Y$O z1%8aA#J$BACHwe16vH$OMoIT3^W46L-?j2n^;E~D=)N~}mfdA}OG$A2JWnMd?vm^d zBUEdT%ls#b!Yo`O^tGsQ;>eZw(! zkMnN&1^tx_jOoZ;Ftz~h9fpkDw+rR?y;T50dk>9N5R1o0JV1=y;qrAS`{QzAwY1>YnP{$z<;=n$WR1*b2>W>9CK9@HQq&@l?g z+}Ht%K-dmo4*ZnBuhdo+Lqz1diokH62Ka53WU0j|K(M|-ETLY>Vw(|~71V+QVa*4q z(oxTTT|x%NmlFl@PgCU9&jHni(Un{E1Y?8(n+*km@WqRP#F~dGK<&<1z+gjC!Q}@% z@HK*7MV_9y;ySV}Q9|Ni(ZvHI6A7~Q0mlMJrT(fD*@y-VmzIS+y`Z`W&S*+@WC%ZC z3I_|~FS6>WOVG1a28<>++mh zrH{BDd2lg5`Ok{7!He7o{Cam&A2I#!!N}c2P3~Bg6ww5^!I#s0n5PfleqJH1pE^;l z>vwi&Ru_Gde)_s08cisBfzLv|oy|3fg}VB)qtvqHRD2cBKjr@NvPo_Az}Wk79)2^b zeeJ_mKRwfu-m>1IdQGOqhK7D!;`R;N#LA`q^Xp7yE6l*r;)%uWo)nFHZ z@svR-aDf((yD(#evJL}<7;74R#UHZ|W926V>!tFq=2P!BsT(^c^Ga%$bY8kGUH4rG zkQ`A)f9dgxYoe9o zGj50)AHa0xnY;{l4dpMi=peB~b?(h23*#DgD3U|wkyB#jl zWw*$RvyOb{(usqJo}U?5lw$lGlGr=M_2^Ey^nOD zWqzLs8GB6EgKib~@=HO=q;9H7%!qR=XO(*ryl&Lo%R5q z5%X26-@EPx2GkmsAu+|WM2Nl4b)!IqNVZ)v8}8dpfC|iO!{pty9Q!@OIH>|3CI!^Q zR)`E^^!b`6Fd;J^4%}m#+j+k&W&MadCx67tIssYU093sp)0}qWIzZXwZl1u7t8ANP z34eNn+kK!nJV)sd@UTs_mD9^YXKu%b7TM@5htGwMaIbSfO{O?^!Yv*ajl2XW{ih$O0S(XD-iwJOgXlWayM3wR!G(swJ4&wZYuMufBL9p zU?J;Syo2MlF<+soF+Csb(}I%Ab+h?|Z@ohZ34Y$jhoS#ki+@;n;EzY8z-r0K^$OuH z`J$%jN*WkHlFpao5as;2et63-8CUsYk~W^^p?PmcVC{l7zdN>E7`b>eO$io+A%W{) zZm=sG++KNP1pd6}Z6i-Ez^oFe=Q_!YYTJQ0rbkK112gt6?_(sg>XSa)T}W*C_}OW| zy#w48<^GmFUDuo|UwspZUp1!hUv^zRUGLVXD$HK1?Z3`}WGi-0SgV{%Q~u~sQ>6=f_1jjjR&+sB{D=o}JG9nwaakJGweTqx zEM8FY`H^ra5q6yva|c@?O^oG%`hnIX^p5$J9%(jB`nZulwHDiBW_2G>E%f@38L6Ze z#us(8t^8`zRbMWd-Gg1YsKl%^gQ4Q0+CJP4cAdpehSFY&5!X6;%wv<_b)` zo=z-rTnu#TdqRW-QWKccOI{;OQ-3xCoFa@h`?;2Gf(%la8oh?8!w$2UeUfM*jO=HPg#`gB>`fnl>$ zW^o)P?|Q~dDB7u)4y^^F+9CDQm)}_r|ubC$6K}$$EioorUkgeBlGnxbo2oS959{xNh365Fa zJYXR~PUzgdZY;08z#C*z5g2qRQY2w#0-7*Ls(k{%AIfVM%-;ZO_x zz>yhPRGY)=qR{CfAPM&B+?uZazSqDJ zm~86p;A(6)8duo{!R`yt1cWXw)AC!$O`W|OXELY6kOTowjJ?R)q1Zz~a=KVRHtv1u z=I|odZalrG)VxL(ARV48Ag{m>TezCUpagIz5D!rX2rI5G zjHcBP1O#vvQizBUu&XY#s7orpZngFBRms4#LGp>~Zmx(xdak&1RhfCPLY06}un6L| z1+XGSL9lopu5^C_$8Glv*G~DC7X%#gWI#l1_XH1v4t$b4AOduUOW^491ho=DGH8eN zDcU~1J)W!L5rmt>FF);_=(}+f;G1&EL7ud_JlS2HMYQ*2e~wo$r|94F2_0=^F(cE7 zPSs>eWyWT1HM$|@ZL!GytY_D=$Jg=G8D)MgDm5a@*}R&jVR3AwU51MR4ZFGgh0lyt zVy&#`n{`zD5qA7{GRp*w3b>n3C!ea1oj%^W_nav{Gr9Kdm89mBAU}qUFi3f661+!_ zK*#H(W)wk324uqmA87+Qp!?(lUbzIGWJkbqw>PSC-;DP-<0yJv=(4^25*Gw}yMGZp(aU zFJmNIJTx%*pkBtFBYxk+euB%=F1C9rF2)hn=oA6Plxf76#*_Rl}0x?p$Wbl{^J8`>@p^mAy`_uR*^$jaehz zdfvWo73hX!YAHQ)D_{HZi0LX)(M%KUdWi0t&YuN+y3X^OY=2l{W6fGBwF>ZN=W14V zGkd0?t&Q$C-@(u4shza*t6CNxgXDFp_T#w0)@ohF63oOoUp6DKgi>XVhIifuc|M|I z?$LOL_>Wu#XU){CV2Qbc8`^AEjh>sU(CPA@8vur+L-B=%SNo!ZmGq9c3~K6KwL;MNW4{!nX26EtXS`RL6{R`^*TwZ1032FB9tqVrpgmZw6&b{mSB&_3r7| zO++kb8zwn;epx!QYbKxV%K`gmq4wP8sgh3E>o3ziWNNu)67ZtoB35 zfp5A1*SJKxH~2ji)8a>ZcBPx^*$w%~`JaO3PSFlY2M_#4?zwf`!atnORzcHF!6(kq zR(6(c%wQQ_tBxS{PP%CL_BIz)%qm7Qt&@uBZ_H<8*DBt6J90bH?w<<#(JgSTtZ}JS ziM zL8?lC?KRkSaf#^L9g{b{>#U-zOy-HueDKVh)sNGEfOK4OrTsHba4@p{*~uo`-{Ay1 z^Pk5FY3p4!q>dMrs}|S>gsu@_3|O@FCaSPJaHmy8dYK(E`naW#%%Z0U&wNWNrX+*V z#C9uRc;2F*KG(}gF^LVT%oq|0l!cIzg6YZaIVfr5Y-Ns-O@EuDE>UEV*9O1y>(aou zAb3d9X)<$$1cWsqL2O|X9O?u`EL}J_6Ft>jKM@X8T`+i37-0fFWoSBAk@CQWq+jJp z>h6Z&<@3q0G6IE~i1k~9+T?q%XCh&`cl{XE^Jzx{3(T@Xy_CM0Lp_veJ~o^Fu+nwRY-x2$dmHWr&tIIwZ6gmi$O?~Om0_)OgwQm zVYabo2+Mtpj3MsbwUuuCb@5_wYFyFK;-9ubS}4g5hikTV!8nPJ0}qG6_IX4pOb^f(DR69f2;9P#u+?*fQctL%~1UJ+GBEgAGdASi9AHA~|ykA_%@kF#yK{)xi`RY-xx*^?|`dpft*1Yrf zGLo)19nxj<2{{b6Zz2IVn>Jpfcvj-Q{oo)r9oH&pEkgxi^eb?6OR9annbW4NeNxcZ z1;Vw8bZw;v#ri{%K#jtb#cWi&n{3&;CR`5U2Fkv2%CWLd8=*Y6nj~FXc}I;!(jSTtW~JBfDNfyR;IJ2Eq9%Ja|fxAwS?hGWm(*hjbf!PdG%B%#XnionCIcw_yZ_;fx zGZ$Sl{R^DccKDwqJ3hOwlfGD>Kk>zSC6Bca)6k7|c4n8wHoIc~066qrqew7NJA9{d z$MnGuPE(V#<pBW8mXXt&3v?ludzS$R)i z{^oNMSftG>8E7x;vz80QdbxX7qjC2xTJt!n+#xfzKhatF+!%RF!paTtkzk_?<~1>K zNqr(cs=tBv(_nI^&ZBFiS!n>F+?{77lFdoAbl2M;KQfbTh2um-1M}AYA+Hh1olc>4 z&I@N~Mb?>zx&dVMiDI8#-eL7lT0*+}{eiNfQRZ!Q!dhbrHr#{UoR;(D0_{Xj)1l#k z)3JoeygL07MU=s6`6bi&w6nNOhz@$*OgzWCgDiv61@Zf*^W{6{z|X+&S%^=lNV0se#)G<C2$s{gxm*in zfd_Jy8`cD|wvE|wu5;-nGqQfr)yf0!@~&LhC!afcP9?kDo%5pq*p)GW?d}aODZAI~ zDjsD^vMEwLHgjA%-SNn36RXdA=XM0dH;1_{|JjW(=Y3!G8Aze4%;R|4`g2*`!oJ$6 zZ{3A_FgTDjC%?Um&$?9u2#y6O{96_c{VnQXJ3vn*>x#(aRc%b%Y)|2CKjzJsIQpli z$_&z|8P=XRT%YpJ2#sgkomN0JMmY(m;V+Z7fx2*Qvj zqJ_MwK=V(4z+6RvlTK@3v@@#LA_c^+fe~c@V>CboId+F3?SVtjBLs=g19-p);<)p- zmjSFfh_u+b79nw%qXVU^ybwcc0%;z4K5aniXX zJp;=T$Tc`qF1gF9aemVPIB^WIx;6ixSu7U>w|R<5z07I)1y1S)lfFVl!QgHw4m2!a z2~k>Lk&*bld~G5bI*omS9Qn1rZvsjdu(n|`u4(?JB80WzH-bP`h1-$(5{CS7JQ@P|wo**UR8mCKWNL9B+e8Kd;5pY~WFx?m5~}|4f^kbDVeOV3 zk#U%8G0ft7*7OPb!8FF2$e{?aL!`;vaA^lb+1!{Kp(uys&2a+SA{rrF)nw74d=F{z z%>30Vyna`MHFt(F?7nxyha1EOq}lF=bQ1#6d|*w{nz&>vRV5le9Jo(BK%xbC)Sz}Y z)HkmDc4*=PVBtKFPduu|89iVp<0!#Z!fAa~`swJI5dsrwQK3VoB+(QG1yqVL~`DnGR9ygDiIJ0CRav&uTes+7K zWq;Q3Xjzz?^>(H!1fvIFg3_a5GV?0KzjG}ZSh(-)aAV49O0~8`!bl9s6SiR4)>f!Y zwWK&ZyUJ+gIrI&rghOLGmmf!Zyp;193nJ{t^vT3vuEzvJ-%#-qVAsX%r<4bI`Vzus zte|Fafwk;H*umRTtU#17Krb^&zf3pm*0`%S+F$cykt%NY~EA3<7xRS9^cHfMR)ey9jVQ;)zOH-zVD}W zSJ>F0aj`fgc(~it3*cvsy1TVyeuU5TcZIyuFRy7Htm2Ft;XbG?YL^#Ao+J#`E}NJf z-a{RcYQA>LIf%-}BQMT{F^-&u>yUfG3K7@ai~0 zhuM!=U9-c?hbCn2m{mTXWqwl%5mDprO*X#sRPZ#V2-b)X-*&@jFMFqfua~S#&ivH< zMB&c(Ye27n5dt_E9+xu1Y8oRA!#zvO5IKZeU0EGxV|*F(wXsH(uTJzZtuL&vM6FbN zhj}(Pnht&BD+fz!wwHmg38*qzc6{ye-W>&cWwi&1=D_f684&A`@b0wtAWk(I_-Fo^ z$;LNqvhGhcPlHt3y$SZVYle<%EBR%8;y;u#bucEjT^Qi8kN&5xa5_|}!+V5X`$k>AWsH)?B;#(He+6sbV!qtgDPx|rKW+km}t#AG< zuD6)1_0B08FU*R9N%WMG*%=j=g;ce8~OLOog{{ zs9hr;BLkavCo3Y~S#5jQXhEkQYW!NMft@HpOp;&q-l4%B_P@M6SiP6t zr)vStWC0o^onG5Kr!C=BZkYz}0#FZpP?kAO8Lb1h$1jA+sCMuF0*;s&IsPmh{oU>; zCN?IH{{kFYNyt^m`|}wm2}WaYx5tSEDlm(>bz8L zi%F;)^R%0r>_U?<-z6j|3*^+P_253tfwxp^K-%?z!S!{Cp^AOLq~Qy8Xr-f33Us6t;dkbHg#-=t-5XfkAEGHlL;4zFpyM_0 zF@u=N4t;y#lYqtA1cwXwDQvOBjegGfN!~i9U-_ggUG1SF9Ba-jV)Vuw8t7l950Ay`RrF{Q%PF<_dA`R8r~Dd);3Ap!6ze!ID@U(L`A z^yU%^&`0;5#3SrUCuoi{4P&2^q9fui(BBMN3OwRyr?MKV=SdwDK8M;?t>xPx^I!vo zBA5ZDP7>pufd_L7_lX5H0mxr;EB&_#KyWMf2a#OxN%9$)(-J~YqZi5Khx0-YfN1SN zkMDYd5qFMcZGVpK8InZtg*w;2u)Kfg$<~n_48}o7ZhxB_riFFCL~OQyBZ|J}{ypW5tnbV@E)Pr1ts}7%wSv5WZ|6GpP_y^)@kLQM=$+ z#w8hzS=v{uZre^x`A}-^+|SY9r!RA1mS(QQ>sNoXTJ5GIUSdW$@4*l-sW=IESne*g zJe<8BG#Y=eR&46Oz-{GZ;^u_#k<>c3REr@#rhsq` z7sNiM+h?bhQ#sp==CyZ-K1TJ~OReJBePq}OglnqvQRByL|5jJ&$$C(gC~WvS(;-D8 zZsA5a%uvQ_&xlU=GVIstrUv0ogdYeI`$NUGe2M1x zZYpqX`5!L@iMLAeN4mq|R88&DEraCPj;35bPAcKrl{pKI-dQ*%j@k~N=9eCb5Q3;@ z&(V%m!W`TvEM3?QPZ8stru+81Zq`IC%ub_|ol181$EH=!2WX}k2VD1?0gEZG_3`Cz zwQFw-lHT0nE#U-%_?J%YPIDFEgiUQ+6?d>LT^Bgt*sVNBFK|xRSrPWDL>nR6U3(CZ z#A`MTcI61%8Izu`KvgfzZK+h!*K{Ab#CPD>ovpeWjch&5dG2S z{91(H0~7<%?%}#k+BHO76{%xXW{|Etj|F zvqRm>Z}>@@n;gB1ZUi49J5V}=qK^WX+bZfC+G~9;&n|t4j%Aw?Gey#6%`fmegszXd zQJ3}eE?=`o=pk53*C!ufGn6{F5F)L=QLb(-yw|9HH2qY6vfHH~&%a^TRjA4r^lsg6 zFtq*74%N6Sv!r89oR}!sq>${8YoHrhtr12CIU5Bctnfy*BDsBS3?I9$Vrj%Ok+h$Fl z)O)d`y>m?5^(~!(`jiaexrR<`u8t&c;svUH0<@- z`m-OvcwsBz{{qASjGTXZPW5-MYgk!W|1608_yuC5zvfhjDn~7?9C2bDJ_8`a{uu65 z>N%^c+IXuYZDJOrPEP6GItpR{(&+ky;jDgOl++pjorl;wj$Nt*ZLwTAGvDECqJ{-p z)!a(`9_aZjFgkE9f>{aGiEseSH&t-3oU zsG|~T5n?!%z)7ZdazW$@1X6gc7MR}zWaIXE8KEpydE-7=;^FecG(c|jApu?PmZ0Xu zG^&cn9r8lqxOCr$b?_oiBVFaerAysn<1{?f!2UGzzH=l_%L$ah-%>ASHj4oh{eaokts;T zp$x_ekmWK)WeCS1Q&0`WQH~%X2%%}@#XS$tDc@QJd03`W#L;pp)EO)2;@4r^)Hr4} z)^zztpm6ehfgRqJ3F4T7E$*Hr*t3VUpynPB*m4E?k=lJ9JC$j~mV$EVD=MCNn`B9x z?GD`z`LrfEloU7Bp)7wxmdfuQgX;-LEhKY&po_l;$A^$_l((&C$wiy2G40$MAWWdY-osLmK>B2yziPqNY_HDNde)hecDQ* zyqn}apX5gphz|k|7DlOjl4Xs@#*yZ7eKg^~z~;`*!+vsMOA8v|0;0+*OS;9u*nn7{ z*jOw&3atJ%Cm==$5tBWBZSOst0O*TD%;_V571_zJBe-@~V5&ZCwa z`n0qnE0i2d;X~n0zxPf*U{CT$kLR!4XVz-krjEwj)oZT<6Q9p7Y)R}_F0{$e=Ds}L zE^*yiq%peTXcXzXUo77&@BmLaSk3Mz#o1u(Aj zdS~)%x;QHl`oVqHqTU-?@wf!E@%`$QPBfl z@ML0~s_%zQJz-(TTzg%1J&8~|+cbPE5PhcdLIf&K=gR@iZeew8zqLBdb)>r=BbLh&+S_WWmhBkp&KaR@2F_rT-E%2 zN0>ieeBry~y}B;;r?YTq+2`1JpgTkcJV1L>r{XvB$TCa?IJrg8`94sK($a2-yQM9q z+D659A--}5_J!TSTpNZmLI|wbQc=So(Rm(8WkMkh#AyU@o6NRm0#&xk^3Km+RSFG8 zdl5`MyeuqNOyFw3Q1FkdHQ(r;_nCwA!_C7=D{|9SiiAbz2N&X9nMAC%M85AgwcRI^R#+B>VP}>e zkua1;-mlH9p6ZMb+zpKo1_7%a7u$*h!g$%x*t(B$u&A#ctR+Py(e}S)>O&G@>lULR zgS(#m63w)M8wx_2X2=W2HpvAkdAKr686|$`(({F6cUX_2wC{*1%E8MpC^6!@J!Zr1 zq|P)&F&GVw^|lWv?j>|?V1+VFn@GbTWYD1)PII5RJhDxYiQ@^l3@62IeIL%*ynaP4 zJf}c47ttl75NICKR$#q4^$8A)Z@<14aU%&wtS%MH4k}X*S3l)wyd+j~1~h>jrz@%; zzjc^7d{OzxfsubS9O;wT<@XZzurm> zf03WCNBX6r9;NbI$$=UViPA(pktCR0r7#XGqiVPml2n72O+j6Gs0A9Wo<9+hso^e? zbuT?KHiT|^fiKH6jP-MAShaCCAmH?sC}i{!Pwh+oGdJdLjV#_cUY8|y^0}@^%2f;i z^6MT)3bt`kJSM~V?c%{x^%%S4?Q7zb+1)YzJI3v5`2LUax$$7Nl-9@bb`RH^ISrHr zZ`W^?ccxGi747i*=cb$h1x(;`Z|x zn+;JNH+WROtG~RoooBzgGLjZ0rMX#YLdA0N=1xijd{kuoTOZL82wK1)u^=~X*6ukM z*lcw@F7i9YPiwFqP>*-S9vAjI;41Bg&N~hHGAUj8WG#cFbPQtL`IvN}7jGhWZz}Uc z#ZU9;9>9N7@pF(y>7ahG@l~WOF}I_d#*$t(cy(DW{KD-YukU*-tM#@N&GpFdU5)V} zKk6WV3XBA5{KRRGkMc5RRfT-n8_x@2jq*q~h)t-cjZuI{enf8*hx14>QZrfbwOD^W z#Or@G^1pDnM*Ue(s(YGh(&e5#8sRWJuQ5Keb|MzX=oL>EBr%LLMFG zk)#vKrLII);|!rK;gu!P9v|z)%WqraGU&cAxHbDrAXxWtA<**+Xd&ma>?{en0<-!E zwplKW)Pq`g1NoAtVxK3T#wT68an`-7x3jjycY`fren|PDZrfoSyE-Q41-6O*hsuGB zY%?2N(lqCyR8x2Dgq|CM7r6T;OPsR(pIgA^LHt`iCKsFu=lRN+Eq4no#|G1zzr(j zyjOxLyNzNkXf7vD!7Q7y2TKn*UIu?%{tw;Ty_dTPfa;GG<&5j;WCG?FZhS(Q)7?>mH2d!k49T@p@-@E4{>BF5YmzWk=$+ zLVfPCwppKFty!Od5Y#f0S?PjQ*Pn}40fpZ)3qGy;TD~W3-mblLi&@F0iaIVJCS?*h zIlE_S{eo3y#Qc0vNVz21Gsvz-Cjx}jm!6K7;y|xA<*v!IbT%dhfF*W{N6684->sO` z92s-h$W=`Gq{8{rfs5jv<(r>5OSIwF<)NNe0|MiJAqcMjRm=f(<>J;e-U3goE|bZ*&v@l&@| zQ)z>inx^QNkcI*2x2v$&j4;YN7iK|S3S@OKBCj}}(01LfSX>4q+8mH9u)T;CIxgwg zI_k5Aq+)%L1wOkFTpa#Pzot|@EGAq0kp?}XXev2VQxflV!Ypl_i9B3&bP!T$Pz$e$ zJtkT`$4SsriVGLmh`))i+m+4c2UslK#!8<^hzFpu84SKuGZOc`j^QhC41+JJ`yZ7>d_Z}{aP2$X0t%qN!fpYier+?t1NxHkeF`+@ zVB``4gV0`g$}haq|Gcu-m+;106!(VGArHg@ArK;V?mJ;Adfjap%ZG*)m(C{rAs?C+ z*LNYU8M8N*TYO}O>Z8^-u;4T#J%fq{2s@k^UkybQ0@dka-o@g8n^u!9UfK07jxsv^ z8^pSay60PrkE8ozwxp||^C-WMDl(0-T0LwwanWj=a2bv6c!A2{p_S{+=+1>CrY8)! zGIL?+!P>h$jmXle>@)w3n%|fI#ol`CAU1~L!QQA1@R!K@tE>$G)%o!a#?yqRV1 zG(M%`!+b{AyMG*&Y2tInt&qge*p}|=g&TMsDP*_)prtf8g~-`xz0WGL-eLiK{AY8K zI+fe9%g8!k{dz)S=hCOO`tJG5_5D5|bK|mW8{d+thlg)^&N&+&AJ4)w{BdXM*ErKurnwt0K`Y7m9?Ii|h<0i}>kRnx zWD&bXX&W*8$&$GJ0vpTW@qpkM4$I?N>(!s0fnA8YJ0sJms@7u}Et*jII`?CH# z3odiqjX%2HTQDwpgOq&&GGDcmg%%DLtE|^O?^T-@YVKyew61sVF^@fJsqc4<_ttgv zwI&N4?~-MF#6fr462ezF#LhP#g*>gnZ!+SmGZaP_xL!NmE?4Fih~9~+WxatxpPNF2 z`nw(4kdsqp0{4xT_?(%;Ve3Pf7h&O<g1r|#)OtBdEO82?7}M{=Vxaoav#E8Zd$j1{fiGf#q;&uHtjU(0i&?KzQP#U?9uQ;j#-);bP z;(bxFP+j6L>2c+gxC&hMV48Kp;IhN)fPb3rS(W|%ghDTKR+ML7Ko{d zw^@2ex+`;cuyG>QYB%j&?A<;#?zuvZ7-?ziIh%5EH+G6~SF0DbFeNCarepv5PUdX- z`_NYlrRybRtJBUSjra||1+@eJ-$d>#tpA#D0RKTaKRN$B;Y`|UaiVO!)3wQBCck3$ z_z`E8FhsNn`j?!J;Jw-mr65e!T=d@Ha36Os4wg`lry!6oo+f1NWwB-L6;~B23BxfY zV~Bp71;xY!QzJOUrVMz@1fa^(VM;>$P`@RGm=Z>jhRQKb`XxQdC#gwIrV&^lCu=+o zD<;L)LmP?2U?A!)o#2n|hM!VUU^F$9LZL;W{ySz$(`!k3Fk~2IpF##6@^Cd{SS__l zoqZcyauXHt!s!K=-Jr?fCVx9_&rDb79s*An{(yJmQ5CyZ9UeWckFpqA zmgIhu7_zu{T%VX?${)gFk`aO_kLwXih@+a8R&sk#d@;alcN>NT)h>49U>3yP`hss5Wv^FCh-6fMO84@pB`WBp%D~*esE)d0@~e`ASAiFv*5k zq*W9ZBm)_gynd$|#)B|F!}$4veNm)tyx+*5zR})$qk3b8zp(BM99_r05CnpSC>BAr>FQhQ#Yg90n*^R+`hUF zP6@>%oUQHcXUKe$B6jbw$iRbf*&RsELi#P!@*+MHuLH*JX83yKtR3n8;E*3>9ctLjpEBp5#1^ zDgf4PwnM+l+`sgUD{dS|4{XzBOn2)2H3yo7N**i#deUQ|?ts+x1GldiDbo(%UdLZ! z*Z{>~WDgA@xB{OEugzrM%_P6)<;C2upH9wOkySaJIwa-K=p+>9}=H2_%jap=V->bidEVpI*K9uI9z` z3LKOLq%kX^s$~aF{nYZUqZNKuK3`pH%B>c%x_aQe9N~Jl4CN8*e#w&F%608VQg32( zHZonSbG^4O9ow`6Qx_q0loPFw$2}RRuOra)`%W=EjW*V231i&)X0EoQgT9PL%k>xY z;|ZYg-u;>yJQx49g_$_jdpt{tSK}%>lV$EI?X9?EUTnJ;9WpbAnI@BcFS_&o7&Tf~#tx zrPlr?vd6&l3+QTX0Yc6sKDB)v3G0xpGLW5E55+`BCn_{XErZ&K#Os|yI@z`|vl3566AgPS7pdo|$~JQ6vokLj{gtfR z3l@A~Wi_d-XJluk+^(%eL}w+_^>sGJGuD1PMR~^?+|9OF@D55y3Bh1C6A&*TX`N(i zPP3Ogjt|D0z^ey&Nx;dLcm$_sJX6Q}eLd=?wH4)ko%h1E2<81v_)?8==$T2v^pnZt zvvV?YURUDH_?)TZeZ5o4RYP%sC%TrY*XQWIlRM->%$lKB_qh+jMKGk*XBd#Fj2Yp) zMv)DCeYHq)x;iTmDD-q=AqigJ!rNvp|3c2b^DX%=JjBYv_OBBP*#E;b2H^bno-r*u zWdMrLiP}qiPZ42kEt;^VqJP|Kq~BJkik>vhuX0Wb2Kx7lXS~)&Kxh%(33^|FXP#cZR z07rRJ!)g)|2+1+AMS8RZR2xE{ZNjC%|nwQq?S@}WGC@B zWh{<_Ymxl)k^JHOhrA&hikB7C>86Lgrb9ULl-cCce%WJa*2E{_fiDP;mk%IAq0=Lp6M~#LxO@)C``Q7#WhZ2Lc_5ib;0%W zUJ?-`rhV~Vq^61?mm+`lNj^pSPv9Aanhde=K&Z&a8^}v39D|z4N5!l(Lij*fs9@@q zw^_NE>rzldV60ZR$O|wOrz3|oS;vpIsSW>j*M(e?xS>?W_ zlHj9cXndmTNW8sOPu#_jC zGf_1qPmYJwZz7E=eL@DcID)P*N*A8B+@oiRpFMF}e9_7ipj!xb^#M)Bl0xp3-fUBpcGuc2?>XJR--+&~v%c>@^x0b%9=W=QU%@2YM)leA@Y!pAHPK9P z;CD5%4byAO(Q~u$S;M8oJHVj-eZALR6Q8nS2gx^Y|1 zy?qYgx*nA$ig;3nt(7@8w(xIhUi#Z2!`jmFwn{*Pqou(5$0h;bY0ml8X^z!0%HNXX zeYt)K1oq>~$nXWx>It@Eey`oB(4;*#@?#=4vVK>&#Ya!2q#&qy_GovS%q-b@wvzqR zr1G`?S$prAKY01RX$`Fv#q0dt@kV>HT;sUWXFBBF;JJIK<2SC{Z zVrYg$&s9F8B__(HjsKaJO0kZzfnn2kVh%dIIY~iVOtFD#MsOGeYoBer?yhL4vb9M@ zRWh&aVvZLGoSpBVl{VkUtPXz6K|~vBR^{2NHXwr|Y8#i#Cr8zSQVoNytNOKm`+H>Y zzWgVQNpy$_2K`K<2161XZ#IRx1h={(9vF!i5dExSJ1Skbd}I1MZ3(`2}IrO z8igKyiEF$ffF37t5($yz^)ibYdq6b^!wr!sxIX@(3pFIFA9ow>fPxKlB}##8H!i#@ z4pCa221gM@L9?F8Umrk-npMYf8-@~0F-2Bj%-{YK*Z&UFN?$6$e^i`FGJO#j0_RUw z5n9qOG)&SHFfEk9$;ERBF%fGqb$hkMgaMjCIAPsV-ZoMbNb@J{6NBJI+#si@=wO$a zdenzMB#v|tt^#JJ!x+V?k~L{`0g2n(HGyt9Xx4lLCtnL#WYU?q zJNH}i6}|`QpDXEEN9)=NhqVeSGNHDmA~)GFVw48ezVJUvvSHcuDSccdFFw_)(@%b# z8(zY0t6~FPtY1}3dyExo8X}M5(mV zjghJC1|8ksteqZ-&^jw-4PgJ>#5XT!r5%!f)2bS+y8U;zKQq7)xx%Z!M5&7d$rpk z-uy*(+NJRh{Ml2UIJNrn7Z1-v$LblF^@hSe=CwADtF7Ip%fX0FgnQ5D;RfKY);}@( z&m5dueoSfI#Q2Hq-?lFJbh9yJ9lF(a>V>Ppv4#7TWBzZR4X$bJR2&Z_`L;`kW^_vh z27@*=nf#|sRNe7p-?CmkIG!CQ2B%u2!6nAKZL#};#U?vd_(x6&gOkicv(mlz%DYL& z!mJY{JuMp6EA;eFC1*YHZ=1nnpDJ)7HGiMKj5^6Z)2$E=@dcyp)smLJW_hkA3AraY zU#pVDSSD!NhowYYshW5C2J@2_REeflQ_K#M;l1F3_fpRbEE+vNM+%ML<=?%!P|QzX+!@}d zT$RCv8+)f_fsLD_Q(Gh8;Wi5N6?XZc%TK}Fr&{Jvi@t0v+rnyI3>X5ijIC2kH(i+^ z=YRa(ib19)QkCT=nMTeJ=v5+0p#iBu&3Ho@YBRX?rr#e4Cu&Y%O9rgS!kw; z_Vi*k;;pOkjf@%t2l`+5hJ)qjzuvpB{9nG|Wa0Q9RwrG!%y3E;G-5n4tQQDqTuPHL+jJ2|jzzQpc%nEc2}NQ* zNq$-jA?##SoFvyV`>n=sI{a7_#1HL#ZfS6nM~q(~u&?ojiVMPN?6(~wR)s3!s4*$7-% zelF6Zigj&AZFm`*1$P9in~;m(Zhpdi_^X>Tdv!D5CI|mO4R;*4iPr-$bfkw_9J2Mb z0ZtJ<@D`f7t{oXoLTITE6$_dJ`lXK$$(j&dbJl+<&@rBg*$?uy@3`MQ3Ei3y|E&l- z6FOA>s_)n!l4zATC@fB72ZQ@h0T2#LAFHlo7fxr=f6c!s9_u63DpJOO50Vofr|*6j zh)P(8)*)aC+Jd#)UdEV*R3sAO*BK0B*|!zYT8Fnvq%Az88(Y-x(hnmn`FkV~9whwK z?G_Yt-;talp)C!X31t9~c5EOC6Kn3qjLcOP-CdV?sIBMy(zoqxa`Tnto7w1^yOz0h z4D}r?aWU@25of7?2=diqLL{Ku-L5)4;OjaCNL{72hFVQqFIOWiWdyJ*#PAC>r7W$W7I z3T{UBLrpA?!!?sDiYJ%myB8yHr^@b9lEv;XpAzX!F7=N`75lp;QdQU(n?`|Bl*?tbqm?^q1}Y9ABHHb`Oqh;LI}R2E;l zqXijC2H*DpZIIuJ6jiBut}d)AD*O8bxA7~!uEfdogRK6#mAns`_PgpJuI8LA)Z(&b z`}0}oB#f@B7WgfMJdq)uV|ncDJ->(Dbp9ufTM2v)yz)hH@%dXe_A>6A+1CF)o%<#1 zyj2ojj`oGkInLW9j$xM*c1JN4g@J%}XJN4~1ftVbzya%3*sak*vbmNfJH(y!<`1}e z#u;1yZEyIyj7rak_b4?6nc%0aT0Gl|bz?D#u}qKG8%@9nRry%w$kM`e z<&zQ|@Afsl6H4$;>4x6vnXk9Q%N-0*+?r$pIomRT-2x5H_qk{ZPzJ=?5q1{5fCu-7 z?R%k9qL-!Ej5Mrh1wN?@QkeMJCcU)E@)7NYQyFiu5%R;ifNjX!mtUHr;9n=uh7z@J zhYK1Dxk7UccWIQmBbZeu;<)FRRUcLBpctu|jm6ywXG|wW7uA)!b)aTLX&(1|*nCAd zhej={RR&Wk1;u8OG?)ZDNut)zv`L0zSzArct?>^n2?xb3%WK`H7`9iJEI@lqXMX>^ zKdrEm{NOV#XQN`_CD+HmclQCl!Ulz2$d-y;(V`gEUEVL>gUS_?57g)nf%$o{8>+B0 zdI{Mc+@Xplfg(Fjim-CWp+zgf%lNMdZ>RNQ7}SNMuxw|Mu^zIogn}An7v-7`ciW}d z52X)4<@R5Auy%wGvB+XdB!PDR;sW609J;v^Ft~g3e(G4;Gj*wtrt7XGufue@TYA|2Ioo z`ydJg5SQk4b6%BS3#A;12h-uDEG~aOdJpzB7Br7L;()87h7vkR^>6~m_RMV(Ns5!@ zDCur)H!Mx8jR$FdyoNtcD4CMcmNMW;wd?D16?Q#YtBdtK#1$OQ=tE!_?&ee#?49XW z8n;7p(IgSpIx_Mp;#^6qDUBq#8w(c6l20a~X%$5^Vooam8u=j-m~j`51O3a)Ro~x} z^beJO*m5zlh_eHWK273UGt9)YgI>z<*X z%q-;85QC$S3s9vLadKn<0nbQ8zJz9{+D|j}BB%8cbb=d3HkYq|0To6kXbd<`BAf9$ z7Qzz`Jnj#gm!MUjst-8suTR0*L#U|}J_YkzbF4#a3_T`UpT}}9OzkNWUc7U(B{Ekcpjr+$rnFO4urc+gYiOYlnjc<$$cvrvyc+9{P!*o7D5npy4|Z! zj%wIiiLp3B z9PEX-CP}lwXr={2j7eNYP9Y=rPlrmw(Y88gz&hjXO*d;PRDK~LQ{=ZqYjzlsW8$O#vQwETC!SbtJKD~$uuJ334fOLKMgE-miaWI z9Dq~yXj3KIw`K%_%d7O2>+9-DTy=F4u2Y=JIu+|_EYkP9Htjvb;Ao;7e_BjO#Rd=1 z$vADxdth@hRafph)Q@*8?${Hl?Sf~0UOQJkwiqlc;oJ5?Xd#RhdLWR)yJ&WA@HVy9 zXY@uV;Z<*C$de%bRQst4;5aOCYj_s69+SEgy$N1*W*RE-+zVzs_Z=ZF)BFE|I2$ty z=f4H<|ImH1vHtt~Gz~drG6{rkAl+M=Ckw-)tEH8K);M40W*dFvt7KmZGkNmI8}H8} z!dM&ZsW^1y@_?3G=L^0wsrx90l!E#Zjg}D}cM6fLq1zCpZZrgFCUK6ei(eMTKY*H%zJ1Rv?UcEkIbaj73P&s<& z$~g78I5Xs+I6>yIC36D|0G_|1mp3wY@mu8XH@=c6$PCM{;R~Q_s4hZVZn~~DAd|GJ zuTK)To~J*U4oOPhm=(XUZf4uQ;)9hrBH5meIS0qsLFGI^V0=70fI&MQvuFqqF4D)h zN812SH(?4th9XHX2-OxEOc4&AuxY0D-0zJ_Ov<5)9&i*@n@%oyq2VZ&lxN$m=_2ol zDeW2SJaAtZgmG`{Rq<7~c5?D#_(cgPY*PuVE(X8h|~PQM!v5r(3Si?|4q;942FQH<*n*w!R_Y zm_=3FJg2Jqot2&mdzQDpj6yKHTVD`(Xelp5O~Ufe^E9G&q2wjhG?wGiBS^nw)@cV0GU{LHc{zce%?np53nCbY%nb;X8)E><2 zGg1{XLS$y;Xi&zC`^YMYbQ7>`w9WL`8Cc|ZhYM6rZ%bKUOV z8nu|0SQh>8U*`P2{IB-MN<((sjmr)6x+%f*zdrm(n(W3b}Q&hw|iH#I$|BT3b9W79`-KAznLkSCNiUYUvdY}vq)Q< z5}XXpl?G3|0p7L0eXV~@j=aX%mfBl_MXJhfKyrZ732&Q20L;{3FKLaX!cq?@o!vaVIB z5NI+%*{^U{Z#{U{tb5L~5u4L9X=$vc_GtR++=8)WO()WLRiJpz>Q)_eB6aHp(tB-Y zthM6$Ip5_`OpILCF15IcSL&lU)y>NO%u%gBoh-@?XAFH;`SoWJ=5m&4BLomd)DS^< zx}SZ7B87J{U^5t-ZR3 zPu$(PaB#7?^YYZziR4`&JQ;={(EWAjDRZd&{HQ}wVluFheoLoEN8dS9x#GEbcDuDn zc&GNcf7(;8{Y*5tsPI8n*Xh`0g-5tY1_aq{s@^;1DadLm-_({! zT8O1C#Z}x|(WiTKc6>WK3@KSCq1dw<_6}XifBXKF^{A!UZC*M#;eqUGar@LR^;=N@ z6*w|DRDDh_DV|s;zwhrAmGH8)ZGzZx4!D+sK+aJ~VOr`#I> zPR(O@VP1JfdjL`(Or_d=Ch=ELNz5w5FtY=m1QeQIY`J@Q+Lk)5u?~iHQ_TUdXIUS2 z8@-*X7p=4^L2c%YH1Cg0mP2=o0~?tejNRu-;*i_ZTcXk`2Mb;Xv_ z<^Go=D&*!1gLecgo%{v#4=ccA-E(2vs~&?w5l@Ry%Q4e;2kZBsPKKlG)jEMIWj@Ij z;~fZ-q%fMsk7QNjYQ^bsy-I|7Y+aldLkN>XR5BV?LMV$P>Ik8UdTr8D-brOQ9+d1p zeT?eOgQy6_V+U0SX+yW<1}3beIsUNZBo0nwx`V`7 zh(cL=G!c;ZZ8a1(vTJa!B76zSiSsD*=7teiX>xTb^#bKE(q1eB3TUGEWEXlL)S^dK zu%X{+Iv))Zx=k-8#$i%k%wG2BM6moy({ck4>(Zk8=DC|eS_m>Z^Sy~^QZM9QZCddn zvvs>;QuC5V0fLT^Ba5@2ur>$+luLHfH{&`{BzImQ~} zHkB!Zo3_uqe)gjk!)ACY>?4x65e1{~y`vn$LL3yvbM0<6##80BpAZ+#Zc@!f=d~*& zSO**nHQovV^{a+L>IV2r{SX*;pr=G`S>Xfx8zG2hdFv9X;u8Akf5%Z35%b@oB}_KX z^3H$tKt!5gniF=@BMdyunMLOTq?Pvlj!`MS1c76OGu-Bc8WrkF1KjY)QyMb5`0Qpz zz$FM7n13#4BoZL|lWK*Xh)*g}Rr3;C?UvS{U7jY7Tcf!>YqvMA7>{-=+jZ<}u$CF3 z^j5{VRBpDjy8xxww*omSOxGw@1Ycs&RYTJPf|6teazXiF@)P$p{+@@(Eno zlc2?7?S`4@NYxC>vFUbB~jC^f4Yhgp;+Q7G8p{RXVIxk^nqmdP< z*Lw*~Y%b62_)M9bvNUU0*Ifp^Zh+yjw#)7Gx1ePH*_Y|zn>~xG#rdOxdu08|WSK?( zQ?~8=wxgUgbLs9X36afRc#th`Qvi4$#-?G!bm7E+oCB*(z@;D<{c0zpb7}cQ;NAv@V<;3wOAiwiO?d)MW=DM{^rB@R{eDx^; z&qKes=UJ(^OTe;fWK?GPda`f-(|H8(ff!h$8@J-};Qb;8F?ykoOy{Uk`d|e3rP@vY zhdbP+2dBGCz|&b|))~gK=d82(JvmbshLd36=hp2n4y;h_LtRRN>~SL7kkIAl9xPJX zQ1i^cCOTEI2~pVGouev3Ks+$Kqf4>da9BMZ|JW>gs8F_rFCu81I30xn|ISBUt4cIE6thL>wNniUoHAS`51h-GwoJ6To&5+D~t!7 z6J|e31U`B?dHG(U&&v>p{|lP4v;0eaIsot=VFk8-pPGB6A?LL5zpF&keX)T;OQO&zHjqiqLEj#DO#8i#5>A= zX_~A?>?KPHA+WFa)v?A7GfzOG4bpJ1jyBvghNC7cTqB4p&5hAY&>pKGsd1=M0<_nI zs8xTBXyTY4(!qdn2!hLaH^+|z9=TeESk7?Rrq^B{|hDmz8SIu!1!5pMTxT)L8^#4)0@fQGQf}q)Cp(Ix{*bp zt&Z|$?0R7Y4oz4jzLU~Z@hS-)^1Z1?LcL(6s7#Zg)bY~O2V$VOfDW~R+^W~-iO%oi zKkP}U_5oz<^~Ka_a{8qs_#%;inK1cbW9<_ErdY*C497^Kg4aZ-=Yzb1Z}#4XKxpp{ zLc)A7oi0SlQVu|tyy%7qC22=?hh&#X)%QQMLrX}h6aqJaRRw{k*;OF7X;njT8KX%n!a(CHQM3%IAI6023MoTO!dX?Rm423vy34}A zA*gpaQ04JS+xuBw6BAx`1tG^@P)e#JBASI#e-c7Z#kDe9u~#qKJmv|Qjr#@&R1?49cIJlCEJp~o8ym4*5)63Ei<-!&54%FymEguaTuC`j_2At{~hti0;+UF>RbM!A-bp zu+w3!YruNoo9iJpg`cJF-*yla1zi7;#XP$4Y2$gC3=vKtU(4V^z-T|CYuFBKL_6DC z-lNz5#bUsnlot{(O6IezvaBPFBZVKe9=P zXd5NIvV!qE*}ruZy!dqW@uB#dt^Pbqm|CZ%-4i%cpDlx*#i!sHD|LmS1R3~4WqqA0 z@b|Yd^8lO?65oDWw|WnKVGR5gW+YTb*UQ0ZDcGx%#j;WQLgu`e+79QZ)1Aw=pYKmM zdhWSEBb2W;509qw=O4YBnMHU z0I{A76PsN9sBralHv3-v(t7pf$&`_^+P$R~do6dFs%c$AkXhOHbh`CM>(;#5Mu69f zH7nhGIpZ|pV0GQ#%iYeDBcYgXW24eo_z3}y)Wj6(;2nSp^?o5Z!z-ur2gT}Bx$~Rq znsH|$bY&84CA6D)?T_prk9_HcP?|Om<%;eUU3UjjO-611m*Ug3_%(j%ar?Tq(?PX+ z4Ts*Ax>ZhPt$WQ^BXAiDtl7Sd010s$$*%img|z-k(j)jL|HfB?Kdt>_Qtl`|*_V(o z7T&eexe&nXXafdxgQrx$LAc*NNf~!`-g?SP7mp5JcFQG}Qq}3TSBV4|A08{G^k#_A$(v zqC~3qA*1>_4ZKyhKBiJ!d|)nr`2y4VL+q=blZ!_Q|E7RfvTx#@A$M+c6dsNMD;ZGH`^)Qo z4=SV`2|7qF%g!>in4~S1GSolafkxVtSBbPrLQBZEgj3cp3HGbRi z7&%_0ZK5m)XGmDs>fH<6;-7bge5?yvsr%A?Yh$sHxI5@C4MX7y=nU&bKHgA14p{l;!=~N_ZFWIZ*lijs;y7dK%i=fzX5BWpkCSokz4jJ;A)Xkag5zpbQ z9-Ve3wpSNqgjHjBY_p()xBvbM+#(k=>)wa!6xA@WCo3uRh+QGKW=$rxSyYxMUO1)r z_l2FCx6haMy74zKBbiobk+k({>}rG9cfK04)@t-Zm46;@|7hd$UG6Is^$d7fLZ7+x z&eBv!&$!EE$##o%;WgZyqbNi2-jNT6e>aY9MQ6ynok+8cIp|hJrCcSDzHddf(80~M zZFsP}|MSW%^3+Z`i!;D-BOjAW-q&a6h@gwwN+P#T&69Y4J-qF4rE++}yQG#3%Ts@M z1LvjHq%Mho=g8LF41-pE%T(2K($vyS5CZ`dK=y{*0$#WOM|E?o!nd^v@mX=zkf(S5 zz+5xO=<|8VWjw#vr&orTMTDCZXV}ElQL(|(>Z3Df8_ze}cZ^ItlOP>E^!>Aw zfPMXXY*6)?8^1<7_a@RQu6uZ@&as)OA8OQuTxXtzdp8NVQa634b1vx+vA=uSN zY_!vVJ%uMmD>{ND#`@gPz92k4D2@7C_hA!1YrThK$CKjJ07gK$zb{YrR3Te!+}Z>} zeU?qDOr99W$N&L*^fXe+(x7ztah9K5O9fe|bRVwyD)Y^wJ=S48u^4!;&Z#{3_REGe zc~&F0x4fO$(?1E``H=MY?A{5sQfA>DPEiOmS@;F(=0INhZ*OFqCV(Z$W3%=HH`yb8 zr+wrAI_JJmkGASKJnSg{+J9RGcGmy03IO7Ny$Wovb&|ARAjGbf!gx$sACzUa6HWJwa@-0(9wrb-gCi=thbERb2LTmHDU`6V9r)`AGR zul|%eAYV{HI*vy7e)#ML$z%ALmpvVG(pZSRy23l@im#QqV?Ojm4=pk^JmwhBf!u7B zji+})WJU#CYsEoN1(m~xN;%=mpqqZODS*7Ye50EccDO8rqThIK>OB9eKDht;(9Mu< zzQ#1yRFFewhe~S#&u4o%y#xb>;dG#bZI(Iy;>>sMub?0@qT~ZlM!m<4JML^4*0V}z zW(xZy3cP#EYMg6XEYb#6bfNqKCFQnt^ zPhyf^qDWLl{z+~PRjqan>@_Rq-CRdv-Dsi~10iwvFzBJE&`ptn?K-%B_y%%0=$Vq^ zWI&{-AsaQ0$=E{U8w^6pe!}R=hA|Mqdx7D_kqRdUq*`9U6YINR75l571>qmLbPgcl zCC@jM26HyJ>V&s0w^+97cCQcBpH^FdfBKLcZzvPqmz$+_&k!C!VdD0`C0jjYVoNA` zfJwU*tcXTu`=r7VP~_8el_b57yW-Z8aWu@=T+m=62MAHhK&^=QrWebIq)k+PGNN!j43XqUPZA8N4i1C-;X}RX$3`Kr9 zQF-vSF8cz{Eg$C~Uv4CX7b}bmcuM!p*lyK3&deBi|#9g(2*mMB{>tp=>&uA>4 zpt+Qc!OzW)uBoY$5GvMK_Wy^pcM9^YeYyls*|u%lwr$(CU3JQ~ZQHhO{7%_AWz9R^ z7ctY*^IrVB`)0?A-0{Q{dta=?%8cAHsoLFVTD8kUi4?TUg+Gz#U6xgDPOhxe;GGyx z46Htx$m3#Ws~_ww%IZ7-9(U{jQY87{E@%~Q>RtfG20N6HmyErlQNg|uK9o{(laV;a zJE&arLwDRWZB3-_NH`6fP!(gJ!XQzJEG&8+TG8(0(zCwwE!R;Q{@D6^;y$@ZDg~q6 zkQ@JkTAXfp^knx(?s#_ZFR27fBK~uTFIGdzJ-3M$eciOUre0A^I;KHCM_;z5UEPha z_Cn-hXVz;()+?gxB(0TJ2mAC2n{@h%PI)&kg{Ffir@zy)0>0YMeJV7TOD-um_&Z&_ z0f@A5+62b+H{InN>!GU>I<&Y08Z0!1<*5r)Ggq_5PFmw|_jCZb=#RP6TMSg&d`6tu z*bcv3e}~!Apw3*CMy~%Z)kA~4RJ*6U>tf2rG`qc5!)< zDGxQ)M;ic(<~-&PZM>jaDETCq-0aV8oAaJ*nCr(d!c*3ZOL29C|8_b_sOCU8!kc5s z8}CSC!sWr-DUonloTjP^Acc$;1<ttmx=0M_>t@X zlVbcoDFowx&X3wM9>wgKyB``2Bd4fE7{FcGt1Fu+a4X%R4m#}37@;Sd$&YDCRV==%^!w+o$pER;pU&IM#p@OItHF8*>r<#F|Zyd zI#{^!{qy>>b>}I5WD7juFdMvJqd6K)LMM-ISQv@#`#r!L8gH?(-zP^1|0s#_IpO0p zPu8Opgs1IKreB2gpHCL#PI|^&12I8|vbz@M#M&HIhUw1ts$g8_@l2{(IC#Hf+Cut}Bdn{J6hhM+%8bo6sa!E38=TrrT zn>;?vPc{)jq96|>B>*<|IQr#&ZChs)f{i`g&t*9I<@)~7W7+9>}^+*a<;EveT3Acn+hi1$4C7`k4szAEp zcX}TU{Y5(yKktKmMGK^p?Nx^zy$}0N+#bFvGDlQK*$pbtqg0-N?H}4J?remeMY*`{ zNuh?WnP*#4x-W9MX66lR+sxV~P95jk8XSFoT;YZg1oSLk>>n@OCpBp;9d)H*S{MCf zW4$I6T(`VYrDK@BlQV`)NuLB0a-p8wVA)Xk8Ign~km9Ky3;ZKk*+gHt{b@HP^GIF> zR?VzwUOiPW*05$;Yd5!gzL-Ak_pGwWJXtszzm4RVat8E-F)Q z86PUlfqEP;?i`jZwsx8{1tLa|KYLe|l$%)Q4poBO+5wV7N?HWBRDpRBk@F<(rEJ*(u;+KtPd0-&9ro zo3skD*d4UNE?-n&P>l8Oi(r=$(Dp0ofn}(743{sg`d6(^*^SOE^2EPZ(GZl3jRQ3A ztE+DG1VRMMk7ijv8tt!ee+1;YTBzs*Md%EM=nS|Q>oH4UNHi%1hz$#pU>fcasa2#U z{QYnyz+EW{l_%RLtKho^cF^Zy)tjq|?>7Ppww3gc&^Vfpie`>t1^9c?Db(;=EfS%S zG)!ed^BEqsnF`Y0GWG??nJ#8{0aOaXnxVh&-OF4FLRW2n>b@KJ{4X!qA~jCsJu83( z>DFVFI$cSKdqg|s^DLw{B`@*ekFZ+SdIY;(Qlo~-oWAjf@O4}X z=hkUqhstoau=tF{DuQ3DOL$!z&){PL zaRE&%s3Y2Lm959eTDv<@>9}bs;(}a5CQ~{}V1`qOX?l=IldEK*O^5j4KPm&=`!u`v zEpuj>MLVm|ed4aJh0IdP2yCi5ua4yk9MLLj&C+VB+Thmsa`UGMI8uH!XU}R8N0k%H zd)Pdy_2@tR^}KRC&=`f67>~Ol)x=&&HRy3rks7&ZQ)-Cw=>&5-uTau+#s#g!V8z8_ zHK#QPsOPaG@T$T>@<^T^1?V;C%ft09eu~WWmxAn}Gb1H2|xy&PSON>(32s&s|6H9d}4A(VD58>yhxxu8C z?s9#@6h7BI{Ts`&{~OD4{pUR`*E(7*%iO5`^YwRkDKk5mn`u3~Oog=VGpLkw80LWx z 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

      ZSK#=|E6drU76MY|l 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%0A+{B*1U#Lyd8MA59idX68gVn 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­GS5tYD00~ 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 z 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%0D2PkHV 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

      A6b}^``738o_hON6Z&2OK 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%0AR= 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 z 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

      t*B^tlggXGQ`!g^0DLz5 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

      3xRWzB)vh5aW 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

      !*-1^McTF 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

      SWOb=VN#42q3%iosJ`0*{Y2 z4GANeo(_}XZ^!E%^S0IPL8-?Pw-d_uBJrD5eIiHPXTfYWHV@lPAGnqZW1XsB&Fb~) zpU|LHeq2c98v0^f4t7tT=?);exLNvr5|YEyog3an5fY9tTWVOR2V-#Z>QA|xOpUCN zP_05eJQi!csiI;dDM*h)>j|xb5^p^Nt*?Z_#&+GCpPtj9tzf#M5V({y&Sl2FFV%~4HlX$kt*bmL%9xn=FG6bes;Pg z93qaadJXn=RVTdytU9 zz>3*lU0&^;{Hi#)_5XK-x1gLTCi>ro`j_SL7s%%-kk67MniT?is zhX6(i`3>jsAIRt0lh3jvn`1*V!~O%$KsK^%l$&es9R(caVK)3x+iN<~b!&_72Jf6^ zn|}e(Z48Jf1J*@Dbp_G=W9}}v>ug}Jw%Y_15z%|mzhB*Jg{Ffv8)fSx^8&1^6<_KP zEmK`oSI)i?Nk3FjqT`}Zz*)oWKcr)?vZLI)-_n;@_%6A3SdOV?+p#)sjqN<4B>K$fWKA>E z14Ptwi`5{!v?2nCm3;EaZy-Lees`Wdd7y-_*d@BO!f1Jz%vIalZv7Mt(!%|2Ks^}{ z6ydsRrms8Gff-+MSnomBbvDiMJCBB-Z2)={8EiL_ErQ9JrYYAZ$TZVt+g?xN5OIj=zwL;b>Hn?l05d!De=L^J)N##cNAG@7v!ghvv;{}ByT&e} zar```%sR`y&cuc+V=U+elpXnc%7C|CvXr2_ijr@fc{u*^L)pvl0wkytzgz63WpSE&NgEb{PixNbZ`e-5TzJiQ)wd ze+JG~lHQX4R5`fjk_UX>MgwVlsxIP2&C#a7c~=Of_UKVIjq1VFpCNBGQbuc>q77PZ zY&Nyb^uBA2^upfx>3t(5V4t)@|4~RCxDr1p5?GiBc3AN*URrc2`20ndPe%i}#uBL% zOI07P)KnC3TjCQEhuCmPz58C#YEjjJ@QSc4Jy*uj7Jg44<@P% zFNl+kzo|3N7%7hWU1BMk&{^nNXG=Gu)cO4w#&^f#BkZ*r~)wJb^z0lF-B9Q+Bl@ptYvP56bYv(EB-Qn39eQ{-{y zVrQn_pE$YtPV?4F3*_4j?>U-?jj=Dd{gWgSck}+U(|W@@$#ufT7s^5oKcM(SD2?=j zHP3KAm{dtXo!H(OwF>t2gEAPd{V)aDDoy<~tW@MsyXNj0CBiH4yUgBOq$L_;2K&H;=EYjPYm}sHXq1& zTQu5&2PHe&IOD+l^KS&glpOJ(rc+bvHsdszl*z74HnY2KjgZ#aD4=ep42 zVbz2)9hW~nUKc_&L|97 zjn{NAn(+M;B|epT-#e$h%cF*mV!Y|WW8&d4-(uFFX>WGDc($TtdcCxG4Kp2hNIPXL z7DNkQBAs7w;V&xb{1}}Yx*m>x4$xgR&W7jI+8{M8tGuuvw*7RUVy_wG=pvj_k48tP zuBc!Or68#RNwGoyz^A)>9qXe{nTxXwH|2+DgABGeaQwy|s+U}c7JE-UM>DK;c2k}o zkY#B&N4~J3`%{&W_4-ZIKI9aHk zE7K*qowDlDNPK)u4r1)#=ap!zk&KGd9B&}GEsQ9RXFTGH_xwb zAvcz&Wcne=C<*NPwD$)ph+@R$i}>)6hgRr3weJxi-Si@cUOI|Y)-@yEP)6uBxmJvP zL2KW%U`=^poR?(uI0;@W1{632QSxn%QiySh3YnU--1$nj7+Qf=D^Sf0`As ze!xBm4s!mT;%E6kN!7){#_*qu?POwbS`a$_N!4{5cWGOX1rPlSBne3DtA7zIJS$L# z=7%6;HOjdA`Jrr|jef{j0mKxXchsGgR&K%CQ8DJ-#QLPHI5Z=!l1M~V_QW8@Vo~O} z7#}tjSGa8y&Fmh>QIG7fIj2N(&-2flim!;pum;;^;>Z_VrfZw7c5&ki zg2$O=0l}~k7CL{giSs)nNAx^|1SI8YAl_drnvo8^H-_^H-wtxMY&x$vPv>NIzLvfE z$^x3gk$wKQ8V=h7)80prcm&Hqea~b;g}!pk{dZNkkIt~CI*n8JSmiUastK%Ec(oBM z&(N(ziD-CfCYyzuF$L$1)vHk%?{90jy8aE0VKNaLf3{9xhMbytYmc|XmD4-h1#B4C zB)bfw@1|uVZZo~C))A|ZPuKO)bI)UD^Od*BGs1xrrV=*cteSBPt0On6KC-IqoPi?J zmy=xxnVT5^T2wq9F=Vy=2QoYm+D%*C0{%W>xd(E)qiKyhW{VfA$cvZVf?gD^*VwSf zf#6QXVS@n-sr=}_iz3?A{CqtawR^pNe=UrJY`FG(9~^vs&G2>qtPEULl)&+Ed%G#Y z`;TvI;QjV#_xdWH*2A^k;r0Gu=(4aec9XZH;5#mIHJSCMD>9b;b2x260 z7Vyjpaq`Yzn$<++jwX}=?BmJNxi}uloQ5T8sl8x+<+1SU`H)WLT!{p*eU2Dm{-faX zXBq_h2C(2WkcvEi8kkVI$cW)<5L&q6L-LiG4w;4o&qi^1s|o#}LA}=ExNe`RW%C?r zwQFV1%gP}(BmmPO!(pARSXC#~>3~E`YwTnqD%6Gj#)r7^|2P5DQiZOK;-UheRHD`K zhoxT7D?fuL2*u~Y3iN@g&gNjMRmJ*I2Q%B^bcfcXeW&3h`4SXltKxMpP{}{wYhpf5 zojyWNN{x8Vnvhf*`t>4jA}#Iu09r3CM=`Bx4`!$t1s_=h@$gnb^_r-0> zB6%ccHS_CC+GvFg26K^L7%CTHqLeMs85#`jqE6<8#s@%F^wA7Q?ukFAtO1?^qL$9b zwGBmp$7vzB1E%Y)DIRHEwTWP4INkx9R%nl~lh98YmS0SED>?#Z?4ABat=w2k{uQYK|=0pURXXJ1b zSyxZ5A3Grq10ul_rYdv(;}>Y})A5}GOzF2gBW@k3>c6&2ff2*i&Ztk6atB?E@1K2I zq3XKKU&`w~4N6-;B+q|}iVKX=dcocxyn#^(Uy~Jr2k)vv!4jkRwq_KvY<=R{`+YIH zM<3}koHwwl4a*qvFq_BVnu~o%`_fQ0U^%KCM0Nopv0ZJL=jK|daIGuwJmVGN_IzqogCid(FufJStNsj3 zT=If_^-y&y<1ug@6)fhHVf#1bie$+p#=#QV#y5UCW`(ytLpoP{!Z>M)M zIPISe%7YR@`v+*Iw>DVquMIMQ8bA%Ef!6v5cnq3D6V*fa`kx2G>gYxWkwFZo|MTFr z|2Ak3Y5*;m4q6Yro8I#u00D{!Rg^kX9leg;&|t7X^lyOIpf>4hp|n~-s{rWWs(3*s z`_PY2PIWC;%zpH1^dv^r#LQJ*plkVqTQiFhM!t~@1 znf|26ro22%D!+Qz=(gcj$ll=(zYU#4B&1@(q16Xi)Rf~oo0PSUq2b2M@S0#Vm?krP z9M|zuA%2=V6(Ap!mKH3+{3i*T6yxLypQ|G=k;GGG*vmZmJ~sIBkhygP{fiP6JWZDY zXfuQrlqT1;KK}BGQOijc+RfD#K*)>v_lpq}@biL$#{p-RwZDE1yOvS@6y~ycd8RGZ z7Pa81lh0(f763<{T$E3K2uQsQuDzmVZzg=EbzT;XLGVKEGAY! zI(wEvG#%fQzYA#K z(hwRPM21GP)o>Xn=3u=LBF15GV|NXmJ&xx#DY%cXO0a%&sjxBo+;*sx{_)?D@@*D+ zhc{NJ_##BKzTxTKWifrgRHS%hmL3p1-GaaDbi-aOJw*YRWX|I zn?;U$tLjAMR_Yk1P={{74l3mjn*M#)Ct?vlesh;ux7sFY#WSu@8ZN0a$L%O)-8>Yb zJLKc6r@?EjX$oq>h@Kd+9a z~*4ciZH{h`zF==A=)Q%3M$mscxKFnNe^iNW*vSsb$_GQ41J`<%0K}3(Hkjn z-*&QH@yCedAqc`3rka?E}0BIamuy;{qP1%nPFlMQE!w$DFXB#aS zE4Y$^vV#RjJ}&K3+rD$WCcNJ}h+hN999oIVm#>2RJ5Yacxce8mRWpe0d>T`3Lm6fL z>J#!Kr5=@CL}I(ZcyPT1letJ7iqhV2j$UzIj0HPf$(~!7SV9RIHtf$ZkR%%W_v_uE zn=smZl%XhUO5CmO0}5fL^jW2*?<=atjp|l^q5T@FkMOKFKqjCRwGxGV_g8tyuB^r_K)- z9ImbE!hXvRs=>`Y2v_v$UW1aQJMTo;_t{JLu6hNnrjU7pkC*uT-tv{pO|BDvyfI{# zjp&P{sZ|>(&VvZPmJizl#oZ~@lW)P*C{qck)|Hx-EZsd3msVTX(d!9N&YIpChH0t$ zQim>>phn-C3BRNd=Z9Jn*p(;|N|Kf0S_1ABnaN`5u83TEg+Exhr?J4@7T|#Kt>5=C zg_uiy%%uLX7dTEKA*Nm7+T0N2^AGoeRJxkk)k)%*mETfOB2VBu3=ra|B0c8tEFY8j zkVsneX}8F5%Bf&5LYE;8Z;2yq^jU-)#=-mMh~SE2ghb_1G81Yko0iNNq$r#wMUEB= z<{Qi~Mn4!cqt@&YqV8&TtTSw0ezJWxD2<%UTxj~aT#`s(*K=MwV+f+xdD z0OKILBcL<5z*vB=|M1q7o3Y;${9l~CQ;;xG(yrUKZQHhOyT7(=+qP}nwr$(i*Y=s2 zbLQVMapq$0eU~evBC0Ods#uxtlbO7HPe}Ew+qi6dSCxhheC;i4loiF1bD5S_jD;eW zjFu77F^J?AIK+~bykeOj@7mHulF|3FoPNCbclF#bs1PxSZIR#{y_QlHlld4x>k>u~ z$+d!#4aXP(m6_$a>h&VUTSmN!*jq-#3C)M*YW;dgj8zfV!$zTPShTAxsal-!`^%TD zfs&Rnff*K-)r2rj!R#AkPr<6Kki;#uGYg)QHqi*`brDw35zbOFSVR{HM5e>>$Wvs; zbP+B|j%&kag09j$Y@DyT#o6T1Br1nHVgY!qkVRw%vdajC=8y@|sl#kK0*;HU{@}@K zQUFIfD2I^+q@>UZ0%DUU+HNE%s{x}W0&AyNotWnISi(|Vo8bo1YSp9lP`T z{n*$bIDIF}R_8HRk~u;Rf2=NLY)Su6x-4i^w}PB*f$*#fKmH+ocF+}Eq9{PCW#EGv zalEM?n#TrqvM&#*AmKs9DK9lBU?-C*vZF@G^>;Re1TwEMz>z^PDqz5OJ)+qL%C5IY z+{twbYHQ?$j$RbzzOD+;=fNfmNWo!K%U3|KOSR8ElAmam^R9ZJ4J)-Cvi#xVm5IR4 z4QvmJy9&Hy3u^$%;bgXl43C{kmqbFFh)$7gbHQj|W~Ui#V;MY6Z_uhTNSQv}ayy#d z*$K9tJJfrNODFCfaXCV+9Ul2Q9ND?J@$>7DFSEnP!^^vsv+Mo3qV)Z_l8688;P!ca zyBPbFzuN{*c`f75`*HmE(TTyomE+&`^Om~1EbkDuYSDJ>P`<#_M)DX9tt=k4{8DNDP6@AH0p^$C6dX7qWS!TsU(7rF9yv&uAfwL+iR(d+#z`}RYtj|SGX zpHc7&bU2OlQ7t(;lxj=;%*RD*!5J@9#=AudX6hJ-OV|msnkm{KLQ;{wy7yITujuXYAL}c&#ruIpA(q2(_ps0?>IYFd#mfcawE5XOt>!lmb)P zr$_WQpBtPl;6}a5Fj+Y@c9#U92b14%(7GpBACv&2D)j=>gmd12U}QGH)|c+*Bm!a% z>H2F9%8#x+GDzcPU7mA*tAqAtY&Oy{MU@uwM(jlrApz$LMM!b9FF;dbf8ujJS%`0i zhBg7b9v`BEaVXjXltGgel6qYcdsyu6B~wcn8ICUQy{7642n*8=W)r#=M5D4loRf00 zc-a^eNeo2TlV}V-twRhPk;|5CR63<$|H1+z3HepLB{~B;(4jOHZmDiDyob39rHK@) zc@D$QUt66NY^_GHjtPqiLJbssm|d?dlG-59 z9p?>>DIE*4Q3C?r)gRSt!p7JLEu{5=5-ZB=rB=%@-D-x^f-3=}7(8eJUFc`M9$d@_ z%~sVfkN{e32&jmHqaUcSc7v2a*KLCIm05n5uzw`cFTD>k;7YMxm6$o^X^#;&-nN2^ zw0!Q4)WDkHuBXwyb=VjQN_^I2uY4+pbWV!BUT?T{je9ZdYONnoOmCfN8Pi|rWe{ah zw1Z}Hrc7+o4pxg*L0q+A*yW!T2v$q8DX?DDIZ0Q~U*egw=#y#%WUVp~iTL*>#B*4j z%PyaJS0};81Iiy^PC6bI(0oG{5YEKlwwM5#l0#$*ZI@*nh)|!l%6MTtNiaWgAP)FX zLcXJAIQwXMl}LcFv2#B0sL~$QdVRb^5d?dxCTOEV8<4zWRoHI5>~VR`Al1t(LL#uF zKKJTC#6ClhBh89zvH%oWC$~*A0f2J zHitq#Q~+E};)qEQg80RGqacKVIdyj?$Se%KnhcumCU%tu1ByO~3PmXe4;nG%LvPBM zKh4xvsVO}@{0or(YY{;toKp0?TMh++mb*ijk)J2_qV)X=v{!P-C>0tm)VZ$VEAem; z4~N6u^8Tx#mj}c}1Jr|7D*6{Mw{wg;ZI$I%!lHTufw3@~l1cpoA1U96RkuV`=dI;% zEUbOC`yS-Gei4K{3SSk|VBNR!u|68;nZ-y2q2&OPRvxIXu~{AxE~bNPyG2Ds+@GFA zRjrrZ8-dbR_3=XDm_wxJK_OLVupWIj317GAPo|#7pL)X!{KbpA-#0U*c7tnQTiLAdF}+ZEN^^ z2k+??Thj>VX8Lw9c4y7cJ@iFf;w<7ev91YxEhNx~J zzDv-sqkJ+hl?RTx-k@(^9P#*#IB)X(QZ@>5kodb<%>>=;VPm@aXIhDTWCJu>7B ztTP+5(4Bn(8roHK!Vzsf*Ma5tocj3`P!<{#%*KlFKW787N=4~dfPD39Uo7T)g zSJN^Hw6S&DN@wP98!eq?_;Y(oGhSV}*U+Jg{+@>h>I5x~YmUY?`8bZWffS&)^=8Ql zY+u#9vXKgyBWXQyK53|ih~*T24lt|HPZp>E{SMFA21l;YP#&%)v0c-Rlx{3Zq1a@x zmc$m7Cr%Zdi0b+3;q3`N82Mq1s*NfJA|@|DgqH4?8d^w+L#^T7Tn|x;kQU9j9AvG6 zWBSY1M9*bIKNU+lY^tg>*AsG z@4VCSx8+xYty80al#rpXNx)b2EgDViQ&v*QZw1^{3aC<1EA}aG7)?90(5{vEnliDj zF{%T$G{w7#^J5=G@Y23SlzUsb`#EY&ug-$uals|~s}!Dt&9u8X>e2k@foY8I$ZC}5 z_0J#&Qd18sS1HC1c!n-@+kd+iv$FrUUcpQp?El*|^#8OGx~EXZPCZ@h@5UsMLK*b3HV3Exge?(jWhy8iMg!N{h=K$!gV zHf~XvFFbA$Nn(zKF4z893*z#l?LI?!oDRq8XyCE#K>L|@C^81e&ClhJgU)#mMSv`$ zd2%Rv_LDU(JKkX>hhi*zmOEuf#}VS4qMtP9M0ftRg7_*T$z2GeI1d8^>kq)9umFE+ z%Zu!hwsyYgR^9t8PFb>8pSf!IErO3N!7$Ogrvy9+s)WX>P9JFa{%5V*5ef$u$Ve2S> z#C7Oz%h=?SHryDjP~SdgR>4t6^)|Bj1F}`xo&M=HE~9G>^;jz(gg1`pTv;lXImM!5 zx~k3InIxXa5h8WJ_Wh-h+UYJ(7;ov5ri43;2Ux~mOoBNAWdryMrZAjU|JW&-Q(>=l z4bvqkEUthFs3}}{uUa$4rBl%H#$Q*NP=643okTx7jh1_;#V0XUD`w4+&cT*YUbS}( zz!!0&R{vVu-IUZ%cI$wigd5!lE==xmeN(VJ;61t{3$_7K$nURhcL2)vX|Z5MR?iew zKjq%%j1~%}OD4MdIn%Y(yqWIx;l=x_^7J~My+)tQU>6Q@Jpf?_5*PkU5k0lrmKV9( z42BF7kK|zvVayQ4#N<~Bt7T`t_X%lB_RKoQ5H9(&3!WU?@X)cb#Wcm-y7`Z(G`Bf3 zkDfA#(mQiHivzxzVt-{cfzZR%CXz5IWu1G`H1B+AHV_?9@Z6bsnhMKT{z$V394!Wu z4oL<*Ptcq?wmhk-UO{R^g?#n=sq$S~(-;rE!Nhxk>soZhL^=B$y5;6oY2eJ3eToXs+D(Km0p$~+Sk^bi% z_W{Ti4FK%w_7XyePK{DXNvBF$C1h>2XC9QYE9+DoY|xCr-j!y>d}2eefK9bjOB`B&pyMk%t^*&lmvk zp=)l+b$IgX?y-_fgm+zyn@l;|Xg7(?fNR61xK|_`R8zUfsJf@}eZdtNdYec+37GW6 z?mdT%@(2|^fiezqA*xy(2?VW?NGjT-TX5b;wD;l*7l&COKfvc^2;Vu^_6WEtw)I)9 z+4(=L(Wt@im z9giN`L-V&CfSuPJC-C-ev8Zsqz`r)%Q+YR;dRYrYY)^JH!qJa>b!y)vUNl&ijPmiR zo%x9ZU?i}UvKD$!1@eYYC-1_}SMBTr9+aW2du@vLXThfcF+6h)@qd$V;9%waKgl=fw88Go)y+5VoJSOw!}mkP!?)AU0|_RH zY7a%RV4?^D%kOgteB61#-C=X;JjtP<14TES#^l1$izb8>*Gjm^l0yEpk(e@8N@_7G zOu7W)Jpky&xsacF#*Ex=?~XFIk>MlFg_8QL8re$M;PfMV6*^AiR%r6B=2ScY63S7o zH!~SgR6J`LmRH2sGBz(uLoP_m>QwXFpF?&zPTN54En>VZ@5FX61gye^XL#lT5`u;r zJg`ErN)j+keA>&y_t{1 zaq^&);5)%wQXUB$DpENO6Jv;?#e~81T=?MrG=Fk^(@~9mt?C#a>3OZUkJZY;f~t5I zx@Az?KhrslKv`m8i!v+V7#^zaSK|Lw@s|Gdfm3kaUK`MRreltoKTbai8Cx?lGw*Rt z+wiFV<_o(m!oBJb==UG>c7MJ+czO2o^_FRq-|O-ExVQhjJoEDn-~0Xg?(*Z`=JWFW z-8uSX2gNJz?)iRrDcd@;Bk}cU|9*bhg1>;BwG4%qP^G0lt|~GM;I1(3uo&rHkg0#4;7l*aDR4d66oW33ZVu-23(MjS;4{F#j;?JWl!KDbsH|Luf~y%P-u>}VSq*C|xUJ!%+oeG}M^T|H9Fg6>T^zBL}ydFaaq5XpkWImwCBS z5+V=NmdWCTF@Q{nnE@%7v3^cgs2>CD4HiNPOj<5~*Ta8-!jO7>uJ;CjTZOhGpx23A zf@)dnrDKL<+&rEwK@s0JttpeF}4^TI1wz%+^2?Gj4cpG+S*NAhug`!j-Uw8VRG|4ZQSgzZJ^%mG_G z%+ug`r!+*nh4H|6$|K1hc!h&0p8ei9-3x?4eZXikG*2N>MNl4)yU793tE{Jf_4V{v zJ>)nnHBdXl8SvEk3Ogj=56T>D;uuR^;4&*3l?q~&Je$#GNLB!I{&eg?AzFYD4BLU(=+v?wQ(EtY-FgVshQE4C zH+Fu%;+ElIH6^za1qjJ|-(N%Uc6nxfzMijyYCbv%7tsY{Yq~?M7#FyHL(5xfcX_?v zmxxTITWNaTa&2|^e(&+SKX*ockOp|Rc}62+Zuq{DK$yx)mJq_Ql}lJsvU>~{~}<;BlNrst33`uHJilg`TacE3%<%$+en7Q>BPtQ1 z`;V9CAAt@4;gB{-RyB)dE8Ry}JEg(6iJnit8Y-LzfDgM~3EE3#`7Hy>+1zxYD)O}H zVFq(NDZNqwNkS@h>robBpfqVBqTW{0^VZ937Tcl$c37AVylIB>6{O{O>TisA-5TKu ziF7rk{o~}cyB3!$XoF;tte9N(<5~09sOnu%AyS#*FWBODTL~@3%_~*~nA!bZTOJPI zC1Qf%Wnn~M+V9#h+av{Hiac1b%e&qmPk2#*Vs^Cv>YmVtW)r6)dCzy8WW#4+k@t#L z|4Uh}6D&%w=vB;JA96kxWH-Bnca%~FyqnM#Sgr0Z>8h-sUk_`jS!AIfQ>H#)Q%KnQ0)hi9b@O9pXt*qZpb8>@XY~Yy* zq=(hJkAHx=Zg+Mf*2=BP%I1nCue?t^q+XO~E#8&$&0-I+yQ0#{|4Akbk?5Byh=MtH zywbIME5ust+dHK?V@>ssr~cr}Wv|I=W|Z3~BL_iJ+>JG^><|IkL}S=%UUTFsaIbh4 zpmZ~qEx4E-BiM8gql34^B0H9;)}jX{1im`n35^Rx`l1OVTGOKdJr%4J)me1APh}Zf z_i~kRCJojm11%&Cr|O8ZmAOl7P$MpFf2%M#VfkxDbBF%Mx4>sE*53RbXzAW-UmX}mF-DS%nlMl zSJI~>s(!S{zKss@-64Cz*X{+kU1B50%cg2#|6#>JjVix(e2~M}BXVyDkBs*!q2p@p zs{hw ziY4uad~QnLS7qOTa$WP}t_fJ-@h4DJ=;g2rY7OeaIs-}@1%B$-q!3+C4M4v4Zx3wt zq+U<8ec#pl;S`jFXa>UGs%Cup0oW&o%sJGK3M*@ zyE@He>NsU_poHFiQ@1ypvC%+~$lNtXWXY1tcD8Qa%CrvY#|OZsQXt9p^!bj2A)5sS zC95)ZFoC@l!_0w}f=8QJ|B0KU zmpAj1>!sz#pbIWF0)ALJ1r+f0@nX@A?Txc`SYx{8_9sqU~U~@6(+%VD)W^rv1y?;X#_XSyh89XZd|&yxwOCe4GQx9DfkahPcgY z7Ya$DZ<| z6Jkr{x`E@ZxjhA7-9CE+GF8P4U#V>mcZdf<8V3x!ThoLDj{&O;bjG4_hZSB!6-7nD zsfH0B>39-~N@_t>MddqCzb?PFBavWC9npDS=>C~@cqy9KhVVgU#q6bFx7 zI%MWf9DB5RztUM6C>sL&IGuzCx0w6e`3dB^wTWb`^6AHXB2y|AdJe?oCLn$r2EApV z+`gpq$BalUFvZFoMXbX4Ia@0I%>libO|%6PGRBSf1`pD1eupX_LKO3C3y7bv*bWt> zU&Ro0`0cwoA$!oFRre0ojG+JklV7#UmN!L|W8Bch??OBNrb}+T6I0GMZiS@9N?Hpw z(GVcH36b_FIvA&~qr{-4lK82F{JBT{^58cefU!wZW{Mqwfm_&`9lJYAiKq^$EBTG| zrm@dQqqM!s8FMdK)XV4V!W+Q0>ptS|3qeH7KEd=O8^AlkW>UG$s|uC{IM@}{9C(E? zC{+Zi!|ykXzg0#nEG!8h?v(&}uwzZ*h-cS7wp1LQwgm+OO+OtI2+$!k~2&Q}xRT;^GeGdw95K1ZKovs?i_^sDMbh49F@F>$X7B70DUlQI|)Oq!cJtWR((B0Ow=i z`~v2}0AB@eBSnd3L&>JM-wC}y$_oMY0Ga1QsST9#$uL0DceOGJt;^yG4iKsXl*(Kp z4bN{ci0w1Hgpwp4ZM&98)yyX<{f_t8;|Q&`N*-hOnLPt3O4JIsd{ccAd{{T!b9NTh zbPUTsoTX*6##{wAc`%xZjycPDNEh=-uYFHi5@LoT5#3VT@u2$`uyRoxJc zUeur&{ld4q+LUxGh?hhMFvx#Gaoj$#n!0Vn%bFWr*$|Hq6=m=wP?3H?*Z=<3{r5ES z|5Zn34kq^hyCRVWehD_f|7ppLp9sOl@y~(o=CGPz*?xIcv)Y?{#)(7e{`Jy5Co(Hf zEL~Mu-b5{{DvA4U(uREEycSWMk;kH^=Ea_0Eh)=ddBl>6r!BHe?Y}FD$w!Bw@XhDI zVW_XIZ2TkgcVnvU($r%n?S)(2)kkm(qd10}2!E(+957sFaV5umY-QCxNY=HPXvLa$ zlXez7NxF)j6Ru;?NH=h4Ni>~vghz%_ArVvmTw{3t?P3ME(~a$*^=J`mKA+ecVArpu zU<)IDueT^wRO(5>Nvy=f2_4J_4>PFv@ChWxa0iOZ)Q|GmTR_qeHZLkug9}Hjn7}nG zE`5Z1GqU8no4-HR%0Ymwepqydqit!Izh8z+9KIg&vMMR54Kc5ITAqpRNa&m!voJ3nXEt3`e|uC(kk4R<(jd1s%fVmn>pvTxb+{xhap|HBCGx8j=z{D-D2Le+tt zddx}H+t86mU6pPx$cZ&HBFJfE=X$ooG2#^yWD|yT;qYK2Dr`&r_veRkhtKEt=i+GS zW(xoJ!Qtn3Ztq_eB28uRd;h8s3HWz~$dA~mAD*oqPw!{?t~)O0ei;{u8&BVBD)*bl z0!)|wZrR01l=COk&d>eRigIUsJ{oDVS$p{QF3%ct!?{KWGWh09c#UlBYF5Ps9KSdEa3swn@nZ z53D<6T`|m(P@(i7h^D3)EYWK@6I6m48YV*mdjvm>Li-x6Wa$oz%`QROkY#I%?~m%g z^fM&{rWa{z>K~-|fkx{wE-usQwO~b;pm^}-7C=;~H|VWNK*Vetfto^Ki=JDOOhA2{ zK92p(1CMew*#?2$6f!_I=96f!ZVuu6I(~|IOMz}NsbIc4MN)P%A%s?4FSRjzxXzKl z1p9ux&L(yo{*^s2@f4<<;`U4U7d=k6Uw>P$er^I0a_9GT+toJLq{rLy%VGBkrMU|f z$4BoK!ea^eFz{<|dGj1r=BCFNXw=!``%bmf>-lwI|^jw-p6RXDP!6;9;-S5Bx#PZH=52^trg z5n70-vIoZ=h9>jRoO9b`3QasG_B`Sb(=@;UtVswcOxU;v9y!gI6xw7UIE?}XCR$)2 zUE-vxf9h&G{22gjpdFE>+=VMD@)8{7J5VWpEG>VRV zrkb`tTwQ4Hj0&V^um{v^4f+S-CB_u$>y0&ul=-lzUM)+1JS~L8FGgyB-zc^LI+h8T z1SS;d? za8-X>MLpj@Ce_ya=<^U-cdd4gk*CnY4@!Oq(cI-vU6N?mhqJnvTrQyk292-$34sf~ ziedgj>nL;0YX+g7L){Xq@vKEwGgXJrj z@7T_Y;!*i=>pI><2O7JsAhdPLS|@C+1mQqMIeU&CZg>1Ns`iZ`cCsf9{mxvH@udZB zprpe#WS3uVceo1DA$cpYZ2}e{^NOPo-e@^eOr6ek7S@ew8d01|A+c7=mrafWB#}bH z6BZ1iD(ebbYsA2eNFFn*$AD8#wy#fg(sZJQZWj*NuA>0!no$<1DCF5O1EaujkwkUT z7p}fX(`*mJ`~IV@lPS34!-hbON>|v%UN1CUiGbM}71R&AQMWYB{0Ax|j7CinCYP!! zYA>{a3LKJtT#b=kB5a8FKGoX#QBuS@R}Vr3J3K8#2`IIH%onSn>dzITXak1vs<+dS zr*lRbRd<{Y&2(vKMM%~ggXn~btNI2i}JF?!J5cg9=)v#^U+!15I&~3mpe-Qqb5Z$clj^ATcL8UR7Q&1vgpfJ%( zHZ+Qeit-}if4})lEsYg!`>n*MNqSMTL5NZz93ar4?f}y-AnZ74dH{Aw@ z1H`!@`Xw}?$d!paa&GtZCIJAtSPC^wG{#?IxQ5qGA8gVJhuGLZtZpk8sHFFN2%@9w zrV)X`Qqlw&&T6CKNU){-R+MKfvFwd02vTEJ7n?w;4tgC*j~9q^@+M#r&S zJBq*p_n4PVoV3yOq=0SCx%;OX0S@O-dByGOT~Wb~ZXX? zO(+Q~0!ODod21tSjRLB=u}e!lw#P8&_sS-Q{P5f8x#}iRC6g+bUH-J|TWs|Lk)jwo zs_8@lkLkGVXQh|d^Zf{%+sbxXGz}c~UPvbEhyH)7bJE6cKK`bkjjLW##kIV72tO(z zskDB1%2AjMR?B#JreG7OwlxU6tGvDEq9`)x>#7rG;&zjBzRu zs2|Yb{(0;cxLpH_qT+*ZqV{5kK#QHG+UB?Y#}V^688dM8MGW=G)>gXhNV6&3f5-BT zf~^=nb3=Wv0k+k!ymiTRkK}O<92!B!+ODyJ{$Av99KT0qnxYD2p}#wg<3ARqwhmrejlI zl+<6>qI)|*gtV(-(BRTX-yz7JzlT>?q%~|IqJZ=559W7P2)7tnESH zisWwTfY+MH*sgWlNdb^`_k1{VVBnO{)-LGSb1jy#%Q{22$_zO2HJZK_L+^&2J*LQj z(MCiRsRkSuv1q)=FQJdK=Ef&MZKiRG!M>H@oXvG%kMBF%Y-4A~rS*f;*;`EpYrET_ zI~RvQxB2zZm{~`^;^SSE``~Hg&ze!1YuR~A!c|Aua7c+wGK556fH|a-w2G}EWPnlr zs2nT<1|L4N6{EOB$>qnSqMcc4;=8!luopc7=P!`0Ari3bk0Gf6vzR`jOR zJk2MyXZ(Dp|Ku+^!`t&$7sJ0Efotc(>BFyMOZ+FvBq8O&pR8bvH%zkJp+ z=NNA7FL3`+`m&fkCDRr(Sf-$eyx=`1pKrl;N7vx`C@QA_Fm+A_?(0rLzc)ekhLi3v z)-LM>F!N39nRjlTk9I<^5Spf!v(ee)>3|>$N7+$r zRAM9tDnb)YwyhSEB(8W4n#H~d_>@LD-BHhH@p%nTtZa{Ao@h9)%@xF@tCzAlNYuoU z<@HN!Z^1XMoUWFxthn;eR)(R#WQCPz-Xh<)^pB;9jNC^}KA~;O{=TQd?5+iXuDtB03xC@p-O)(6*DrwYSLS zvVInbg!%9&WSc3~doDkt!h^b7mTJzURkYw5$Yk;3rnW#0b$%7T7at^|=0s#?<6C4U!FRe{RS{dnq|<&KVtletgN-c8$qZKqv}c zr(HaWv{gJQ&fS}cy!B1*=ZLrmDsz`i^~jeX>Sok{1jVX_B03*kKZ*ctuT{ZQtI~~D zK+%l{nDRp0N@G#cT~^`r!xvfw=w0R191!1&nS%TKbzyA&$k2I?W1VM=K9iHSMj8tN z^iqpkqjBUHKi2eL**SJrj{o0ZnUR2zg^}&wD<%Rq23Dqjub2t`SN{xl2FCww&LhSR zTqS91k!>+JUrCfpF+dnm;=JdT3b!N_fgqWLBmpUsphxmfwSuZANFsrXKmxHO2!)bL ziXKQ$VXo(O`&aMkQ*BjhH^am9WqNn6X$^Ze%Pr;&^(MiUft3Vk3LXtW5-`QZg>`^{ z0D^=D00|UIJEd@LR4JD=T znL3xk0&HlgFd;-f9mo}k(@-5mNIOtWyaETz)ps1yHj|tNjg*wa{L+##z+ot&Kq2ml z`z-+Pfd+X#Aq=pvSO0YYIx+Awfo(m15hMUdz^I)4^qoKABH$II;E=z27&Q)*u>L(I zJi-eD3ql{)yo54%d0Zf&Z;*>G@GZcvH5>vBz>j(d{|0);eG9fc%>o9}EhtxB(*& zM*G!BbRfFP{Z@5ky}DRu#{hx`%zhz1DhC$W$X!?4e%_FaAOSBTpPx3IeQ?jv2*wM% zLLeDL`zLUE=_EePF6dj^9AYSFWFX0K2&qT_gB!s#^d*UVgMR}%)C)C4ul$o}5SgKhed9k$<( zc{}<%P;ePO21MuE*VP2n9D^6h;L7LTy`DIYxwHIDZ6f7fUcxV`ijt5gpwC-Ki2s*R zAprpf2@xR582{UM)2t4}mpuM&LREyl01$no&QsK0d7szIn=sHVKhy!>Pg6P`lDrN^ z{O6ub8%RW8{u}-MZ^m7p(vKfYU-{oYrtdy(C9nO<59--(?EBwgLR)+FJAMcr7kvE( zrg_oB5&t*4a?I;CR~LhqdvM!d+?8RWdq)Kkjzh{Bcr-+Sh_9C+MoWA8^lu#ww9BU~ zw!UvN^gyQ&Vtuy+jJFZgpgEv`AL>wb%w#t4}h4_w#O*4H?^NuKS+GA$3Q{ABxH$l=Xxg>`zeDG zq9*d+$#|FvwatPKgkOaKR?Jpymt|AN0Say_sn3p0V|0y~%??@liEjq8+o9MwM_8|# zwsAiGuFXv1E}iY+_n(pnkv!m3ZRF$_5cz4PmZF$=ULFt85#0pQ$wq_Hp zH~`38R2Ar+Zy)AmooZag04=;YwO*%S!wS`sPYo3jI`#Bfo}L%xwsj-spwTh895sWb z-p>&p`ALJ8-PWbQFQqH8x5cgwp>mY4Ica@Z7W_HLqjJmh)M@Vi zj5ji2R^7SOpTn1hsAz>ZysW#NjrWfMu9c-D_VNs`xH}*lO^YY=zAo8yhCDbzkXgT# zG6lM7Cq;9I8~08So|{7lnY>MNxJpY#jF52CWvP z%GO{t&(%Y%9FV^|?*l#@Sd^f~b04jXXqh-d1@k!%)i$1#)Zg&5DGjoD1tWBKqmFh2 zKH7N4(SQv6#U=Hh9>{K;lNf-@!39o80-|A_<%~0^ZRaE+>WW^FJL}_){qa2 zwNcPrvz>@NM5{8!`SmO+5n)S^5xieJt)AA_6EiQ#rCzhTMyX-HICVJ{&ph8r(UgKd zj`7BU(XH8K?HK+}O0@sU%X#+%Z0w2ct_xj=JA;&?+TU(O-?aT3z3QdOR!Z1bcG&is zW6j0g`>Ff4CAF?aRsZbsL@<_gO=7FxwMJG`YmTtDwMLF{#1-Cyi{}p1Mv%5$U{-Rk zY6fz+2Obx&*+MQ_43<#7Ljvz(A%FHwoE?X(Iv_p?5?g@1sS0A&*~bjlpuK5+)Djt3 zxxD;ta3&19*LQ=bGZ4&e1=PK$U*CGSNgM8P*ND6oD0YFz7HhHe5Go<8 z$IB0a9=rEoUWNW~NAvUSh!HMLZ0(y>NkkcwO5pmq{WQROTB+JNr{-R#31fLiWYf1)wWO=l zcwpSNd$hi;#R#(r`|%f)d3e+E9i-()=(ia@xhGDv_(K0ne``hHg3m!Em<`xzAEwu3aqs@HGX-VYQ7Ixu zTkPiBnjr}5a32AI`D>@183jUW3Y^Av`bHDGevYi?41MY4Yodmo>U!XZ?(kNS%(_N&X=4B`ndsVi@sOm-%l z3p>ZPLmlN97@GzqR-Sb=+~_Q>CS3|NSB$q&$uS9$I3;(pYtz}>)PGGkxne^xdFm?3 z&ged9co8%#>{o($H84%uUep9X>XkDDkXmO;Ob2j5-9MO*DQ?Rpe8UOBWD(w3Yf3gu z+jx$dp38&yGB&ok2TKyS6T!vvH-g?U&Q&9%R%=m_*Wj#@8ZoH4IXEyCF>~)XJez5t2!gZ*dp8 zn;EM^r4K1AVHw^j%4H>vKL!M+r+f(GQns-bZZ6cHC4`0RL(?AJH|aJ=8xGHUsO*Z@ zx;)SR+EwVjuZYzxhST(1xg)S2XF18N;aRLOH{vGzZFptu5)k@JbMC+#1ZSZN$Wnoi z!{T8^i-TbT>0)snGUm>q?aM=5Cgtp>t6MiGyJ$M$_iM^RtUX(*MlKK(25M7}uRdl; z(3$r;pFSWrCa+*Cu^e&=JrqzKaHjmt?BKbOchHtmlE}a9VQDB_=cLZpTif;~^z#`(dBbtL_+F*!Avo1< zs#4U&YG=dCU`si!n;8WN*Vs{XZTZ^cw71`E)9Y)!<*E63veA<8&&wzN!$1g#0RSd3 zBTf5ki`D8&iO#4ciJ&cWz$w``L=~+3%lA``12#s=B`fjuiV$-7d0N|K6qI6I{7#`t zk1iLL-4@Cc(G`BK>lJE4FEa`7rHIdr|# z=LQn;(}e~Aueh4zaBGp}Lv&vGQ}e;pZc9skqQG`la*BpCC*;ZKAcc6rq7xLZ(7<^6 zoKlR`lUIL42mBwv%W2Lc;eBvJ0_tcR0s;f}4fZ0=gsw8YvG z>|B(z!I7P$v`y<1Tg4_QCpOSXzZzfjzCE5*IbqkZAq25owpv3$6|^P1puhNUx<9;u zfy>@xiVrG-vWV;*ubffqy{hsbtB#%gz!wrilGK*HCj8Hy#6^vs3oZU4J#HN-ab2fA zB>|gheG!T+)U)`}ubZ26ZCuijN(j3I?Rv=A_P(Y{!xLUKqt@>ZWx5tFj1E+~rG7>y zwk+V0;~g~lJ!U&i$k>D6^cg{E=;plma~5x$aNZ_L>%8~4O|EsETb#ppl>L8M)r38c z{;K^VYIhO{m^gsGHRf%D!(C~0Cd#Q$Jr)OcxEQ@Hzqa_xQ#CV9KO;PG@Mm|W`(73> zX=3fQwb8`TB)wwKDc}gy;;Y0PPHMreoIzS*G1>q}K)Anx@I11gLIq1oH9Uq=-^-}O zA(W*}%_yHZR{%^r&#?)A(SQH>auGw}^P~0gaS_mIo%#q_8iU14i<~Co=m_4?_$mMz z{TMAs`{)qxrocQQ3;Gc>AN?-3n?;qjbRK1I4io{&xax0Ac>S1At!)~*>o(DJm9BOutXv3)=7?<)2cEBU$_GR*l2Ey(9=Qva z8!?9w9j~(2MyhFxFr!nXl?}SAlso!k^>-~u$p5_=`eeFwVnZ4#QIUNqJ{5{90^vx7 zT9{@8UFwhah@MP0E;!j@!B-`*3^ifIc-p9Ip6QlI8a39YZ!eORWs28>=+=}@dz1Y^ z3~Xz93yl-+ZO&cz2KcPK!cYEnrDeB}s8eEpYWy=$XQ={JT9&GCElMk!i<^C`>7UNS zeWSZD@&R94Q_ZU{{!3?c)G&Jt?dTl6KXOmU7UZRh0kdR?OGFasnN7uLyJ#{MdHEk7 zqLo)|<(%ZwF4|qvp9pLbfze=aw;eZpR>%gMP_NOO4?Q&{xF(6(^s~I1g;=lIbLEhR z$4icJW?(3qV_0gUpi&G+g_4lX)YqhO0YPu~Qmj zC-?G3*T7~c@oQ{+`*l)d8ycjn1wW5|0WC??L?8_Pl$>w>AI8pMNfba!wq@J4ZQHiZ zQ?_l}wr$(CZQHJT_l>#-chJAECz%;5R_y8sN`7Q@H}CCa*XK~p$VUlDwM65)$GBZt zuvnR0u!i@ZBR+DLlie8tM^}xC=gs~Wf5j%-03@$J;1}k2%gsXsPQig}Aoq@5hEZre zOpDL$AE|ExD*nlC*)L3W(-2NHaoLNP9S{fmaDk85}()C=qwRD z#gNvs-dNgIuTECE7J<#n#*TT@zWtSgi(;xRY!w_m^Av*+Ff8)sFI}78(vS0FtI~NI zA_ioSaim;Oz-0uXy5+Vi3IxG{Z{Q88^&gi)ZvwwEs^^R!hYf0rPI5s8B zdYsumS~JcO5{mq3T|6jHqXm&kUZ)_e#Y{C0(&14gG5DyG1wAMFn1*f5)ZWUk0hh4@ zo=Q}hZ>5pZ&M{7=>V88H-^Hhs2?(LFFBU)F5k@t}<(`MyyhXbb=5h1ybEoj;SON1J zqz`YCaWyF^k7z}!R2L>@3l7Aslv~c4wYR3*LTXJm7oH5K);BFA3b0q`ABT!494GtW zAuckTudJO{%dKudF|!+{EoO5ks&Q&98O+QbmhY}aj|-_dLdQ60_=TW7WD0{dAX$00 z89bCO@I)0yr2mO;;5=LkrDW1fiRWim;v;v(bZQ!Lbyes$UERnV6a+AD?x4lchlTL$ zU}D}cmu8ISxK=9sTR*yv$N>=Dj^FBBqwfZZd2B` zRpQ7NPn*6zNv1Q#=gmxMjX2`VME6OrzTl8eWhcRzCm5!=v@Zex8~ zsN5%ASZSkwN?d*1l0|rAk5o)NfWVa6YM>cqpnHk>zVZ}5EN!*FwP~Hi3Bmbr#rfqEheX)A4w1vjp>)ioH(@Q{R(Jg-zY@xjvk*xwge712A2j%v0`r2R^C z!W{Tn&DSe3MlTm(@D4~ShhpX^>gKHC!Be}B+99NkorTR5;kE+rSIOAUZC_P}z2p{M zuBdtIi!w%2faha*fpQlJWscGYURs`4abz99l;-sdMhC_J0yzA>ilRM z)vi;ySEk524}-zSrq*BI$c#RX3}z)2q>vv7 zANzCER3!Aq5QmyHcz2#vB(kl#uFTYp9XST*pq%m#FUJL|&ARzCSHZ#rz43U{)V_c< z*2c@U2YjNSwW@X@>iQS_F}z45q_Bk6@`6yeV@BfX6x|ewZm;iP7ak*5Z7iWSaIhw> znEiMdKmMfzN7AfIba$f4H#3Z5lvr_9f!Dgz3WwCUyP-u)J=RfrD2-j;ns^7p{3~G> z-&A+3K0|^_V{X);A0GR`{M$0*rybHROiHQKI7PX-T*B}ZP-=>;4go9CKPol8%@F(< z^lXPF2a7h(u@ik|I`Ja5Zq3UYC`014=N`J;`1bcu<4S0GqPcZct<#s5p>RorsGQu( zH*JQEOmOmVf7CNYfiEJv{n-262#<7S2869wo-Ssj#cfMZ&wMxz_-X>e2*2I|fYXtDQ()Idv zW_7o|E9b>7iwesLV~@#OoTuBiA!&N6=-4yf;9Qvyg%@BQY}Tr)y(8o4Y+gvouYux8 zaJltQjboLJU^ZosY0h$MIEwtkgrY&8P-c3|>uE@e6?`&07iX8nUe5{5W$pX-1#(IL zJms#be?N=K2{n(Xf#Qd^3`fyGpGKHnLQp7B+B*#FS`n;lOKq^Gm_Kwx`FA4+Df=%O zpJPYDPhz9pi-6*gHZELQcKMlE0m$RJItiNdZv%ksD)bea(0gnSm9DbVTXT@cMsss> z47Y}(B{gz!!}H46TU-%3O8?%7y0jLL0;FT-pf8=TPYQ_#AzJ9o^i(+zeeFJGB;=(I zCHa2zV~4LqpG?Reop`2>LS3_o$(6^?L;agsJ0u#aq;-3Kc`S}UA^p+kJZE@C_n>yM zG@e}~=?_8~9U+*eEqcsV%gl8oOs;mW#ti{4ZVBzU3&f(=IJ;Wa=^n689i~tp;c%1U zQoS#bkzm~{HMcBZS5Odq<_)dv+5Zd<5#w&+%qqaZdS0%!`RVb)Ng|m@)-=$;XF&N2 zmvZU^LYopJDxWqd`&d<$XgfORG3{S{=N&E{z$$kPEprhBoyF#1oX)|0;J{ zB#jGz?`@sQ>r^f4&dycdqZqsOt$#{4PJs+4ZZ%#!ed7KtrLG_3Aj=-X#nz`c5#CKt z)Z0a*u_!6rm##P|mn+Aj22rm)eP^dXnb8zU($GNb;tddDzGgdC{P<0d68SBE22{F46=RQuI+T3{DXVToX=a24U7G zZFuPzmlz{JZ65Mgul;6z2h<4)!jbj!hj{a$b-9*KYs^YWW*M}i&?(@p_>FI}ebq8ti>)af{HwD{tVp}hb$ETE{>tWZ z_Pd8|FT2wP+<7BcTuaFyFwM}hJ8;1ls~X~=yZU&yc9eV27NI}6FMBv)TYw-y)hLzD zPByGm#P0yA)z{q}Pqe>s5D++aK`#nbMGdXSEsk%r3STFVCdpU{HYn40>wd2QG?unU zboTVPh)xDgMLcZWO)H{%N|uoy*}XaJ@arZunsp7oi2< z*HM{tY3+v6BFUH_%G+^p%-RG#i=+AEu#_2|!l?; z!F2MiDOsOFs(>-{9a(53;i@o}laT^SPDmYswrq-X@pI3R;VW%{oQY~W%=19FnVF;I zOHQz?I3Ee{u*LZ;hU+gj<~zXkPzt@)$XAfCcsIdIM)SHtJ{FIHA5=%(f|J?8d#xxKwuKj~B%&iM)Z;#Vy zI(M%vKTR35i8!x)n380pyLbE=dZ--tfip^%*T_yymj$kO|-kdKYw zzd=4`PWJzSe5{j1P3P41Bi1D{dPk7i!r#tb087^_5ncMGC)Ax zCiJ_K0X`7`P!Z_* z>>RwpQ9LvLd4kppa{?GJG9upYT>x;Rr*q>#2?DSXQh=vJe~M5HW9G*N4;oVJ`6U~q zISUl%jC{Oz_w;xW(&2SWxOrK?+4{5NoB+%RdGv4h7_|E90|Pe`(AD!NJs<%9g2CCx z@%#D|<4$59!U5;w&e~JJ90bhXi>wcB1D+27epX@u*r;P1!fPDC`(xj~*#a2o-S1fC#J=ai1PCS2)glDb;~2u%2XPMpY))czQ{bbp0|eIpfCh7T5iEQl&_irv8U=xU z-{Jr%q%MI9%me@8&H-P-xrut*d-mt}#f-mI!F;BsAhbeBprc~|oe17n@r$-|!$kJF z>i6-mW3E=GJ8Di^#8d6e#%!;4Z=YJ1pPWk z^_Kd%T)(6NT>Fg-0KS_s(voDhFaUh{N!Y?60SPX^-~X|%_?3O{Vf?s(p<1bhaS|8-n{o$&L3eF3~3$GVV zOar4GgF^m34Dlu(@G)rPazI_)hcWqmhxQep!ie`f$K&1W@1Z%PK|Jd-HuvVso!^Cl zXQufHA;34UEA*|sPlXnoJkRkZBPbN#(C<7zLjn`r-XiD&Jzp-QBJ|@&qm|Q6pRqRq zdUr#RK;-}l%;7-P3wI)aYc=H~_`~OfJi7`I<^0kh;F7%ZC+ z3>ok-Pz+q7AWf6*I1r1)Iz)a0KM1|) z!Qg(Td*Qa3THkoR1PlXOv+giY>{gqIP7+xf(rVfK=UN$9D9%P=+|-`sWLdsJtOdqY zt=Fh&!Daf!Get@*dQ274tvQG!9_qW=m)O_(1Q!K&(U59SP?}q2km3mxlFv(&P=~5m zw8u!g|Iq)lNV@Orp5j&XLWZmZi90A9Xp7d|vB@b49p_DXZFinxMAneUZW5T3X&H2 z#r;R(^mlXr-7_D@nbBn7Rg-97+ZNspP45vR>a82^uo^b|*s48ply32TIIRq8`Z`zs zycSsjYfEKx3dmJbd`OqYiT(&&kRL$_&(|B~N_6PR&SaeOENH7an80P55_~DZmZWJGb5@4hh#rer+@;<&sm4LxRoY(%YSrQ2r z6sMQZzA=Wsfa^FmQddb-k>XBhoB>>L%rIc{4OPqQy95P8F)$HheAk`(t|ch3unxHt zf>CGH1UMk_$ECq9sv3)=v4VkZq@`w*_tWY-uUkJq0Ppusl70ux^!mDmr|nX!*&afB z?T%*`HhRBWPs3pw^_9U(i;Eqm`VvLb^t(LlAuTf;>D0r2D&+1tZjw43d+f_cPWMvk z=6>!Vq{ay|%G31mdp)ja;B!x- zCr!NNp)VEWXXj!0_@1v|-1m@v>uGy#KYmyn>d ze4LTp5YD~1MkK;zf?OPl=?T38Lrb@vv<&COS#l(E)@D1Riz4s2(m!Pw%q%n_v3&TK z>@ps#YRU3&sDsDH)PcD4GT7+SwTqz0K#g`i=WS{|kZhF%6FVDhsVi2c_WX)|en%jL1Pm~Fw9=p9g_=pLzS#>F&0ur60Uuq9U94AV5J>b`OZ$E#$TX^iIR z0%t~Osd*D^z}9fAv0=kKs&!%$=H03FSH3z) z{!`;>`!lu_CQ)>3O5m-vJoky3VWRIY%~A1-WV+YO-*tph*O_Z^9rr5j_;2q1jy|)q zmycdT^gPBl(-Uu_2+-@QY3J91_zR1lI zh4n6HsxKmnAO5S}j(q!Xq5?7Oy-3L=`{8k$P0f(mec9{`!y#0Hzn|^G>j*=XNEtLG zk6zn1=e5WKKFd;HVTwDq(o_?Kbo}T^N1N9_tyEf;6qO^9Zu;t-Sq3y#*|8;$_{RD# z=f!iitI~j;$(o5kM`9p7m6)B4m4yHOo59gUi(`lSKD}BXUY}1X6QZik+~|G02FCsV zy~@O+V=g@ZB_F5Ji)E~%@h4#2PH=!H}Lp=*^OLG6ZuwzafEX; zyOkr{NaeKb@x%p-N_33j9*Ngg?5g#Pb;UaYC9uAe2lpW$tyrU}0~GmBlvKJq)7R6X zFje^W(UkPSYipx7O{0SRhYV_4(VM0i5(ef=PNl|eY&bbY%*(&o(F#|ZP@iZsNCYYi zJe3T)Qa57N#3@ypSb^QGo$Ltus7MOG4Ij~`1%-%d^3_>BwT7J&bsh3nx($&s;n}N+)#ryMA}y34R|i*V*iQ9;RNuFqC1tCW zDN7c{Dw=l(>pTMw8d-XKweX*yB! zPBhEwKSXDt&bZh40v6mau>}# z@IP&W?7`ze0m%ezB3E%(^5fVaY&`A5%qYRms5yys(116RVFWxWF(O7 zUrDHY71&_Qu!LDx!`7AJ?pNmIopj)z zYm|Fd%ghJwR`*&j9dXonA84|E&t`PJ_4AJ++bS}VSnjQ@UB7N2c9n@8t=l@$t14e7 zH`nO$k!t#JHrASk-eMqnOvULim!$@`2y|z<8EfJyA`a>ePfyiDiPg?`u_Qe2URA=p zg5fp2IG33~bcs*>f6FLer_sEWn6;WGdq$ zSoWRZNKU5a+`e15*38`9g*I_6ZFANr&p`SUWogE7 zhUT#_rPJTbgwwKDEqC#3{)f;vxHUS zB(*7wTTTTdam*3^X)3DBWbV0zncqC=%yxp0+AglbPrU0=TIddbSM`<_cU1bqcM{R2 zq8jg;L?PzwIf&*bKOg_$5U2g-LtPXQjfULv)?nTj(8Eluhss0>g}f}8>$5sB_ExjK zYSv8m%`=3~UDNX~Iw>UU+Zb&1yUZj3RlP1Zi~Sq}BMZEd6&kT;uM_+{OL_ctO3GjI zwt?M;?5@A$$$oO?E0m|d3fUNjHz$Gc2@+RcSFzGh&#!K~8n?-d^kPM_D3j$1Njcej ze87gv=X~no-1rhaC_qpsa=?l%GL(`QE-C9$&_EWh?Cp#B9fynjT>y{IED>Ot&DMC6 zwfQBGiNa%Jzcxj9tWcQsR4{wV&{D)}YLNM}4G|dXWo6d?h!g@RY$XDAxid{IuhWU$ zux@gS1?hrhl#7GdUP)SwaG2kCk^It^6RFvPup97HrEpkkz!%x@5XJLt!#nSW)(Q{) zsLo}sn%!ZV+-QAQ-wy7km8q6u%?C@qtqLv0F1s-c_DYk&fKo`M41+0(4>Z)-6BOdjtJ}A#y8wSCQZ}7 z@20MUVlsbRvuMnx6Y7|yru9gf+G5XswF-y16y{$kj?IX$XQ8%DibifBjQZ z!}zv3Hy$@k6)zCUuvKGcmbT-r=tXE&LU9ZcwLqI*Jw?EXftm|)BhH&MQeJ~dzJz53 zrS%_ZP5(+%U)sQ3iOXM4(_Yo3LAZau^d2tg^bK3Jt>E!s@sxDeB9>_wl zBE3KD7_gP^Q)IBsU^=1){uJ1vYich4;3dOboyD%&vBL^pd^Elt9P}4X`mbQlZK;0R z%DwHbr62zYZEu%s9*OspUU$bOX4t|zrB(37aKcQ>f?8H>}m7 zPGqn8(*$e08n3DwwPy%y{V!QL)?K8S0!?hmi!x3JRPQ0c`0`pnkdM9aVZRJf2}MnX z<+o#^$xxcM#l^n$Mbd)kU6^l6K1E?dUXQr@S=A;Fw2r;nnRYq2y$aBj%*?sVx{X#P zPNd}Rc>hZf)e9udf8&1cqfHTj zav^9u77aV<-d^N!T81^kcPiu3KDrk;w$C9C-3~|96}4J}H=quSz((ILDu*R(3d8I4 z9~3TY4-PJCxdlBH+S2Enw_-xwzT~=6JBPgw5E;cgWw7n8Q}?yby%C<>qj>zvbv>CP&Tv9p*YfRO`BXNjb_E;g4=&0fpgGD>Ob zg@roZK*{QNnY3mS?ros_-^Iqe(l&IS+*moYZtVh^C2YM=3Tr{!Ed}~$I+>ut}c9g)V@!kmh#l(eNDCCx2 zu=TTB-6!D|B=@XmH5F5UP2^6>&7m(sL2UmDbRwP^WwQN!MP@I=tQ6uM-)tIIAx8LA zn~+tuZdg(&xkQp%<5PrPY^f#LDz06u`2wK3R1z}s^R#XBurWqoXA=gO#L4#AlXT5MOPfi^3e z4EE?hx|HDF#J)&C`ORZE`>w68-_T|gR}$wukG&BXosUpC%k&%E>Cn^3mU>UYZ*K#? zgx)LhH;Ju&T7~S}XDbZ7^4>`9`4&k?q?&0L@U$7ioW#pO#uy~uoS^_`pUpUyAt5|L zJet({sLzJxY;LnsW4;qsa8jea^!;#TE0$o8uI<_J&o&W?|BjqaSj+MV$^$Yyz z)359Wiq9VIVp<|a7A`s9dfMbD#iArht!1r`>~7S?e&j=TY3$t&EW()1&Zgxm{ce+1 zYh0xM%!|%_uU((RkVwPJYs}6}Dcfe3d{qarD;$3_U8e4?1y~XOUF%qyL5|gDTB>88 zAWjDZ3HXKD`qdDB?IGn-k-evk_yXh1lu=96=%&&NowQ({Km<2V;N?xAM-$Mxz|!%a zm3`~Ggu6-ZYRQO~MP9x(b;pm3)4;Oxdega0JEzi8Fm>inMfI8f&A#|t7)~)n>rgn8 zb|IUFBoqz0A_j7|%p{NDHg0cXYCGyRF^z{zsm+NSTuVhKJ9LX>3c%0F>&9?DV_W9% z;_VF@??{so=vrA_hvQ6cwz+G-*>W%*C?d19b)}N+Y%ni| z;w0PDphG*Kvddb2x7%eyN7v~s^DfW-t^Ie@#JhUi9WPWq71L|tj+9T*kBp1 zRhFeq21eUA<||iCR;8v0a;(2szHR1Wk-Pr#o>=kl@Vot8l%Ry6Yha z#xs;aehf}~&Gi7>WTAL6+wyDBg)3x&&KUEM_C^Z(aXr1%KT>2c9|fjgc_#_G312zo zMf<9jCM7$}RhF$dq!R#BG8lbI_4~!d)}r#po}V?teZnHaBD|*_o+CPJ(c9wZkrD7D zP^Jl`yW}P#J6k-T_`i-x4di&1BJ~!X(WQlTlb;N^@D-Q8mXHqD4`QSrHM^OnS@>Yr zwVS5vo2o!V4d4k86qspeZpNi}yKIw5q!`wwI?g=WV~y+R?|THFvel7OyMT^w{<<_B z+W*eknEtCw$He@A(YI?`Z( zfOr5%++y{F-710}2#JJPr4sfFD5YdN2#D}}{b%>vp0nRSt-ZF!)mdM&+zhwVoU@II z&1)LZ(C^1r3GQ+zq<~X!NB~m6$j#7G0s;UC6f^*!5QvS97z1;TXFG1fF34qIP+=mH zKj4CMK+qyaHc|#G;AJr)0IXbl00|5Lq$H3CX`lcALIQ-azAL#u+dtd=1q(kq%A;8C41$YdQXaMt|1vv%v=~x5?9E0%S z{(SR2zv6w*{a~>!Nhl~!FE40+T}2=XcyUZyK7V$Y8xRKn!hAeE1+V_PR6s5R_4B+{ z5Qq&xF*$~1eK_G_;7#mnKu`l1dkm0B0Yf1k#8(A)fPZfO1)XRDYp{{;(A6*K{_yu_ z_5cKc^L>jy5x*%Aq3^gbp#t%>wg$oUFb5F!{sRR7x~Q~(&G4D<0AlNZK!FDoBxHEk zprHc;t{DAyivs|t9zFmVO9y$s3JCD&*jS|gfdhUo6z|lqr|Bt(uaOe!>J&gRMBl1; zNYlVj1KC}5`*{bQ1o68Ne|_q348c7^b!^wXJ0LNL3~ut}os0M|qayEiS;Q!?2%u8o z5fOm^3T^<);D;pdR=~vi?B{l8cFd(=0)Fhp*!_S@U@Qoy03+UrpGEz83ILl!$XMrp zd9i-A5P}5$yfA@a>w>t35QBbZW9bEOel?6wZ~h+uGyxc&0Ra8_d44;Zh8X|iMEZUH zVE=fH1a)PZeUO!R`Dy>AD)RlG0pFjXB>~<^hy4K%AV|Ov(9uCbewpL&FkZ`I|H4(p zIS2re{8FMg%lf2WKZgKo`GF3=zM0eDkcM<9{IB*z{2)+3g&5H1|1xg-gn#{L{{GYS zNI(75iw_~g{$8DaK;Qko4b(BV-{66UbmUpYKsP0#(GdP%SwntFb#2Odr>!)4D9tiML+_CATq!Z_A>Sw zM@5i}hle5gTMAt|+_%>E0w3}zKo}h5BoVIC{uFf|8^z@TX7?Ls>|SN1%NTL`vruRr z`%(5Qr}e&3xpWKF`pW7i#`KIvMO1bQgyGJoAN|GSorB$&SgYngs&u=jz;Q^A^XdAy zi8yH;SL~LJFc-c-z%R3CM%2pzRd?Oh& zm@6C06-n6Uf*-@?#YP}{R{Z3p7K>@a<`mrviL_@S8S8LZHD#b|P}efXg+0qtjT(yn ze7MK}e2>+c>SsAeFf} z!^@{jl72;WZZ|ROo+7H?iuEjEhix131Cm(~4D_Sj^G3H)3C$4+I;k3xY_K>)?D$Dc zOIss@t8JQ;_&CUHT!KQEPo05RzY-1GhYEL-D94o_K81Mkn} zs`;Y6U#6FE69_M9lNYzy@X0#4V#$agm+@)k*w>ESY%?`ZYv}~@7O`ZfzVevB${n)1 zl2fo*_TdM>CA#4RK%?rYIi$bHY`Ng$85?o@QAf&zd3eUNOY&^~#;c?&5XnC<*@;j{ z$h}C6J6(7XKaFCOL?Yt-$_L8m-bA^49!CgZYN8;+9+|GHLqxgRY~r<@G`0IcY31g; zI_-hiRGYUbe>5Ne7^jRx<>c3mp7+2FA7sXPWcPiNxa*3ae{-vm$;C_oYQ=UWiVa

      )y;how3#@9ewI$w z<(3K4gt`nb4bP;7Y}z2t_e^4EJa|v_L-L71A_`}#AM!a{lXUM^+G0k8zz!u_<6#g= zL920lNEBiA{DdJ2=Ex-Uez zMsDbGmr_N?%Odfe$@?HU+hk=YUZa|imE2Tm4iiWFg=v0zt3qH_Ro$_Ogg6ti*-#q4 z1aqSF=7o^p)9@@{FKL}`fmw|1M*K-nx~!&U9bfV3*&rwY9 z{(c>&9%E=>9Kk2gKfNtQcY^l27cRrW#`>2pAg3s_F57}_y;Lm?6R43ORNh(l7&GE2 zK|RSPZ(!?~YPnI<&BiiVuSP3MTOOx_Lp_qG=EW&b0+szxDvL;+2D!%amjrvQ=!LP+ zFF2b708jm&#qxSJ-P?PyL(Ba4=`st~#Bl9{N|BMY2{7L|3VAsk*Y6^-nu(O`-5kDk zn#Z|GEp-X(jU4E1Z`S(sI3&k?6`luO&AKK`Z@wp;S*Ss8{t`Sv`rBDdvA2uRf6po5 zQMD{L194OxoW=ru=ti7V=0W*n)CInUL99lX-GPfz2zJr@6!ZL^mIe~F z24p#JjK*xy$D=NwAUwCB7+SmL*&hs7`jXYkh>mfsW~UagM1vV!svs_OgZDjiN2R&UN7s(2bkBw5p2+3B5bK^%pJuGzUV*(s=Sq#i`d!Z93qd8OD=&V zS|WCFv58C99NT1_b}c2Hdf!ghz2AOxKTRPx?KS^4ye0-_V+SX*Z5BDKwSGIoz6(Gh zcUytYE^SAAPBcL^8-6G-R`gtdc`{q-NYyet)ra>wq2n%*J*k6JLBqGA0%0$@>0qUL zJ*dONwWt0guMR<5pYUIQRA2k5J-E?uI4b782Uue`p3eG#Lgf01vsq?62y4B?fnBdW+O%fP_-Vwd($a%PhhK3vU?_RiexRu5jQ_2j zyqwddWJ0nig{3&T>|M%I!}pLlBY&?g@K~_Zs#+uB$!8V20DJO>;J;{N&3_EgcB1JC zIWV1y_}9%3|#dLHn3lUR}#EcUS*u-*hP;O;rqsx76thrxcz>cONzMKFNQMcJ(C;7H*^<#-t(}6^~7Us8^BH@S-*)s6SWPA=0CH+r@Hpc2 zdJ)kgV~msA`|j?vCoK&O8jGk|uXqL3khVeIqPEVx>I-HBTd?cw;kt@5!y6qFCpC`x zgh~$~-Di-C<30O*jA$4yzXzy#p2jQIR5(^rWyQMs<}0rZ_Xh-gE~-)SnQeAm<2^MU z#A_c^@eA9b_dbmsjamh5GWsmUGi>gpudlnx0Jxp*N%x&f_8O5flzL0v3nlC7SgE{M zN%5=EpLphap3iB(7Y`@4MNg7H;*bb_SZ2D;lJvdVOvJn%Pd&!eUNCa($MX`}p-z|v zlyglzG<__y1sB^n%+*PhcfGDzI^KX~T)H06W3xDY)^6s&Ofl0s>1L;P(6sVS5i!2IcOTP&RP(jb^dyP!jDM>YEe|_^UWs&AHWh$V`{eDmDR!C z=(_bJ3^-F?0$k)jYGnK~^AvFbe)fE5Rop<*pG-djX6G-xM__v3>YM<7T6yS6g|n|k zLLybifkK`8;F3=EPS@K?Zs?alBdI4YSDNi-SmpwvkrKx~u5B4Hg05%s6pqL~zvz^F z4$Ko`KhxQX<+llm~}QtGQCXbEam<%H}iTPE???ERu9iCG)l> zg)ZNmeR}KFv=XMG^42SS+;AxE5+so)wDMv$)9>w$G^$zp85v%HxY$`yr&cDCeQ%gn z9EnKE6P$a&x$W*z^%-P0Th}LW?Obq3dZ-Y0$S_^}TGMOA59i9f?Bg%sy@7k=R5$(7 z>_^aReu z*tR=L)YkFNz7dD9xJbTQIZ$w$8Tb2>8I3-PvBG+us^8|w4jq0bziN&s+Pj&=Wkamsq>gap=Z@ayh+gD@;3|Gi^zGu>gLfqwU7&3}u9x|DrBeibr?hbB)_5(UvMo*Dq$%*m@!oH_Q9v zWa#8z*o3rERWiyO$kB|Vx0={OeVAD~g&UXcjXujgW#0w8R_Bvh_(w?%wq{$Ctu=ph zEVeYEELMc_Mwe3Y)y~HM?_?sW3(+h2)9%3!t;2Hk%jsQ`H~nUI4BCNrw>~%`PHvv% z_Jr?ia6;JW#um-m8Q3A(x1Ry~%#lWdK%4MbYAlDJ>A-$d%PYRMRnPgrE6%EDHPvUL zFEOAxxqk0wfYL$2EV_qqp{*p=TxryDjt!=1#nJX2<%G==M{yc6BN{v2<&5(-XFwHHhOyrI=9 zR$S~+%|#~5O>l(LG(c6y!VHAL3oO*SMvPJ%-8*6pMd$SLJHo+!>r9_tdSh0}&L=UC zL?OxA``39!CuRaJd9iu7mhF7+5SPu|z=khHR(w$WJz2Ko+om&f@vs51r+SOA_fAEO zI%OBCE7IA^d~V-g2xWKUP_v-&G%#0rh&V@V3Qgz5Fl*=BKs1n;7^^SEB1~Jm4R5-* zY*aU7yB>Amn~FNkQjDEAIeh$Po}q)`1nu(gip}ZG93C0G~tE~ z&#UIfH4n^!F6;Bma;_R;YL=X*VxF({lgvVjTvYVdg`F{w=Bad}b9u%-q-&zhXmXkY z8RU6&xx@roBRaAO5U5SR(EQb5HoAr_FN{=LK4av!-6w};^PP%qomc~#_J~>+d!h-^ zs4RTxWjwPTd1sE`PEjA?%)0lSUbc&?MQAY=rMgL>#tp2g~p#aDuAZXcWjrAcL0YT6xzk z^ON~NfNS+2qmuHXC!W4MCnbmhzc_Sd)0=dv{4FK@)+?ZY>|@}(CxJlmv4|+?B_R@Q z*YYtjZH2Y2HhtI_J6f?|WA2O!%)5;b?yY1W8+Dj6Qm?|3qZa$c?8A_si-jSumAA7;EQ zgX2{ta#}Wm5R&HrqW89op3t6GeYMwA{H_Gx09NVtG=&rki8kicUphOp<#IxX2uI$o zqRLuw@-<%>9q9ok#$}8Um}FKcvNn|zztVZcR7gjLURNrTimO3<+LCif&-))$$pmT1 zt%rfmtC61BM=#pqt_LQoJdq3RBw89niYl`=>tv}e=6kRtS&Sp-nRp)?A>s@n%F{-wu z+p^DXs22u>=QEDFs84Z1Wk}4h=l;kvfX0ca-cw~mXBDTFxmKaG z$??TqfYruP`LaCZGYDv~Fq#UpW}_Ua`lA`ja_n~W_`*ZFU(I zcn;B(LT@;!!#&fOWgdLHG|M^F}y-vAJbBvn^)uu?pp7g z3Ox*sX0jFD|HisrwAdFd0rjq)0+gq}+=ZvFLx?on63LqA_;#)+!f@!sIqj&!l#;3w z@TPY1#l0K|QtY^=SBoD9^;X)z)?A#rORX@oLTud;5kGZ(Su8a>Z~*Cg%No1fQk{mF z#^&6JJW^rNp(^!UGf-#h+2i-xPA=o(pX8H!FRZARd{BBQoibFqPN?51{>-W#Hc1EW z)S-GTm4X0AK)AmU{+^4#d!bwpQSH&-@`787vK&zr?ckRn-fy5C(ztoq-SCZGq7D6w zW?;C^p1*l;1ZIeuXufgR--BD*jxt`ZpO(3|n>4?F>0OYuuAI;4LdIbxy|5&GcCGIa zw_{fC$T?or?6YOG?%LV9ZRh3;bLxW6)^T$_BwJR^D!*p=RC4=1JWbd~XNtB(v(8I! za&_R7k5-fqnq}PY>|r+Vzm@U1mB#_!TJy68_D3cUtE5)Bg=BMsGbZOv7NB=~N4Qin zMi|L?0abmhHrA%$wOtoJ>CffkE@2K(Kxco<{6)At`Mv46Xc|-YU&OD0k~4kbUCN=1 zhuUh{W-XH49zNLe$%K}U7dM+Fq-?2v5n#vjC&G*-EIf}y3o6hu2o;{cvryC)ZGDzn z%M3f$^ve=O+?{`V+aLwB>l~g4Z5&vVJe2N)Q;@J9(TH)>#Hp4s0`Hb5k~%DzLk1Eg8~L^TwkHwW z1VC7qzyfHY@WoW(&q!otc~;gw54>1B+bj;it8C@nS!-M4YUfMZ^u!%?9^`(5+RU)c z)q+24__kltGbQQ*oYcJzsLoZoSr<}{r&HI{5~&3ClX1==r)FUl^J%eVXac8Xjyl>^ zuKdIQn)X9zkiS=P|I|xV9t1-Z&N<^aH(*bkgvwqaC`5rm>}GeuxVV?XKgXj_60n#` z@fXfkXHLt_1Zl)XdDFhIAh`P#N^+qP}%du`jcZQHhO+qRAV z&$)xX-8r4yo>X?$U=M0gsmglRuJ}0H2WYr-IDM;R(=isMaUwIL@~SSaLieSne}bze zo=bN(eDI3-V~pK-QdzkF^g7?`&*Q@Kcy4t|UD68)HBis~U!`4O5bh8&X7y-R)fsZ{4QHGIY}Q&rhow+jA0x1HAb58~jRP_lvt-?c*Qgsqx+n?1 z?Q(%oCD^B);om0sW%w*pjtW@2FO5Bj2POab`g$xk8TnPjU%ae~koL09G{y8A=WSx8z2E<_rjsOx}$Tr(`=mq#K%(h*MJseThIqzLp6n!m{piQnpdQZ$v5z z>c{>7hA>_q|7U}e<$n$Wa{lkrKH2|2rhPJV{{IaE?oh-O2LT}sGO$RvwK;RZ0K+f> z56$mLNJ^whRI)%2?Z6@xE|Ts91_S*u&T{_kb-2}dtyRCwyzzZ)eC>SsvShDaC@P6X8H91aS&t!#HXi^5A9t5Xqr(VfdLKyW*Q{(E@So(gIt5miwhViB){=X z*-NY!DbO7XC^)30yDpa(Q39eP9D2NzredMdC}ECO2szq2w3KwrcBFk{jqV)yss zoxXyviLV#(3`kG_z;X-_D70g94dL1XivrDO0Y9s<0&LPLyyG{H;tvY@u|D_M@GGfSOZV+!uB$zylhz&(IUCPrwGuf_wQJ${AR( z9Jrks_$OA=0Yu~7-?`f&kW7P~j9!5`eXQV-f3BhJn$a7@OWtNTGQke~$e zx!UdLWw`_s^Bna0p|>)$$K2ErT5s$6#~m=JyOmcC>O)}>eZrf9ivk9}4+n>UiUKOA z11v)u!GEjn_HTiHazlKA7Lnh-xd^rcST6_*{1~<>JmV+SVXp&22@viS{PzBF-_M~U zLV(l<2r2+rmE*$5J?CATV_1Hf#q@fUOhX%thOOd3^uPUg4zRh~8o{3Y?r+|2kA7Zd zS7S#c0KGf}gaC2r2oL~=;`|~aAArAqG)2InKQ=*k{2i6{+8_eg@@?nF zpXy_HexUsiYdG2deyfW@`Kr*M_TS>ir`|%|2+zRJf3z=qlz;3Yf0d7aNFRRe#mBeD z&)m}w+`oRo1G5a|cYPqu<~xe!z~)5rZ2o`jD-fS!&6x_=>0M8L;;M=U&4?xkuI7wS z{vaM7Ab)A-*H^i`Y#`wF!bwoIU^&cn9zJ!JV7!e>|$PWc4!}KH|_n-x^7Qio`H6{S@=&=F?$^hq> zKY*gViGKo5Zas|MjkS;*@%zwF;}x`ek9B%3~cBLTJ- z`d52uVM0Cm2!-@Z5aUG*VVU)(PgI&<^0{@y?om@U^2jotg~1Bfd3x`gR{LgD^6itn z4U~P%$)!&ps>AQi_`qwwALVHt;;#2Xl~Q<6!VPAsxAEkD`-j?LxXBw}f_Cg=iLcHn z-vo+j7q7_7I8ERaVoUr(qFkVCRIAW+T03kqBd!3m{)cxaG!-!A92?uKxYZcQXsiF0 z^CLJlc|aFwc6J0_9@bISU}%12YB^JH2fbEk_>Ap+d-=QC$YuB6OFY#}>^(q8aZ}>3 zq;D0J@Nr#?TD5|(!Md{N-9FSQA>Ym;vx(Qy>vOD11)`&?A9kF*XZ?}H!U#1rP)w1O zzFIdmbd{gp8Th^WK&IsJ?Yhye6N%e06Tm1p4QTB9AgZ&08&7nZ($_n8J)c!NZm$l@ zP~sNyaqA(i0}e@6{EU3QH7w6N|`^K zuvkfaI|rZU*9YTX_f}_4E^-wWwiEi!oK3oaDV0CW&48KRwPv9OesS^~#weiM9sxrS zLpK^rS4tvJ9hMc+?x}4dP8wgLrEd!>TzU?{A6xrzwu1{#p%XPusD4O$ zIiIYg_qW^N$E0AM=~)|r5d^-&#lKJ>h>ln*G`}@NyYXbJnL^ zw?0oqi_RWDz^x<@{0I_gE+xwMuQIEid~6(8!Mi_-v&U`6D=xwo`ad&})dW*aapQo1 za)pJN;W}mOCH4a2X<1Z_scc(2BlaezY=MysH7g$$>;@tgMBo~?kYFbDuYLEu5&g`l ziqD7*L6Z;_eQALZOloSEUM*K$<2BX1=pG`f(ShOm=8of$CC9SwqdFMq{c1Wcd$)5k z4phR!HbVamD{|aD@K#4zLBxU|<6aH^L}yiB1c_%DII0Cqr7j`$aX<~Q)Rioape1Gz zMz4vG8XnhiL>?{X1^pxN@*HZiH$?xM%P4hj<>MP$T(}H^8CKChr_(Hwp}Sl`=r>iXi;e7;rjw{sMMS#JMch6v z1sVQOll7By3a|i(1ai+{l6#!XnPhqiUm+Y(4a3|F#PKNh(T>~WJ|biBJ?W6$S+H1iYGH~xe z`hY*qum2lRRMdXv${m&?aQW+5dRpIL-*LzQ?NK-xfiQs9g%kXhowfk$-2cEA(aR+z zA1yN0tm3E0>Z-#QiBTpQ^6AgKxb}7Mt|fb#)1j^XVswEjD;cesR8mLArXO5vhi4=+ z3XVCwq>$QmauB{jtb^&42s`km?(1J+V3PN#fn2L>-mnp#UwiY`kzT6#UUvq%XK-%j z-J>pcQBvojQ_W*Cq+pM#}9{0^x&QZPV4~#e>NA*bXQnwnS{c}0*70w zE2pq&44vK3(Uqa9T{_G}*5ob_cXy|cbyF$fwSdTiB<=VO32>DY{kv7uw5`UMn z2#OOG!G(PkFyZ!Z?g97hhmME3wjKM5^;FAv8*0u`QWIIdg8E6^5metZbm9_8qGQx~ zn{9Zm6_Q&CTWimqo6NeK!B;78DGSYJdRa$#{37er^2XLFV7zmn4Y?F9Ghg!-@{9#D z1?jiH(O9O_^uUbc{2Ld4t#caNWR~88+py_cwoKam5d4#!iG0az^#lPiF>=OD7v>IX zreQ)I`(LYzPrHkV={*#l>RZfIO0a&tWDxH}AA|6?J%;^ABC z%BOuz?J)PiPc^5-*TY*Or3Yz9VO>I7CV^bKuc8)Ta0k{>*EA#CG*64}Qm%~>_NM$T z?|DS$nImC_IF5Kn=j!>*(4!F(ev(LKlmqg?`_2LY6}QoBliz(hQ7#(2z5iz{cSpB< zr;C*A(c=zq*}*IKKC{fWMB1BkO0kW!#jp$wE80TY#Y%r(z1Wz|+U%GG`?r;-@rT#l zW~c7ni?WF7C`DSR2}K)J!hzH{Tkfs5l26e|H-dpm6V~G*&oi9T9bS^P@5oChD5Y%1 zhy1%YGJkS*$WOap5|L%uFXa}vQ@YTS>U>*zQNf*NZ<567OZ(B*NfYCS(17Bi@KV;Z zC7Ff&hLE*IpxL(2?)AG%!xRVAVE$XRdo&-tF42$ouedfRuIw}$}JwWpKk`GWRMDoWDyuw8~;O&mc>4A4{dtTgy^WxOffcPRaf84 zSby9NdluH-@O|g5P|Bz~r^)Ng=om&~h&A2d8Lt|LXOuj&%zFK0b1;}1QHUFPjjMK) zjdJ}IQG%&6-6vIk2kz~{frF56+a$Z-PRNbfNft|IKb~E=^tlSk8%e)2oghW*T(cqN zv53jU3}Rh6))Kl3F$*qhl88~tdEkO}+L@Egd+e(3S9n9Sc2qGBdxoP&cJq{j6rWFS zhs;fAgJ)E_iSkgagQS(nmz2|1c3&%JSgid>tVg&u(L|rN=gL4``u>7cYwMiu=quOM z*(+}k^$jDYXaq4(UY174l4wy1&~lWjE4nm|0r2A>OQfcN(c4Q&X>6$OGfV+%(vxOJ= zMEdQG_RP}A2)=tnPh&|^v~CvsS8k6$$$TOH<791fxcrDSqv1_wJ^U3R-GBwvGN}>fV1{7 zw006zDdN^qF1k+8AX(0VrzMJw-_*bOqEY`S8Z_8UHVXWBoFeugQQeEuamuOIdqxxF z#4`83fUJUJwQd~Z>GQ~u3AJ@LqppdioSl@dGk(Mg;pTcp?_u8W@Nelp=jU4npO$gn$EH-;(;oHb=yRYHp$`w`7#!MLkEDFLV%lu@&u6{& zwlP?P!IYaO!yo67S8(nQ?;1OiELX$pKE~9!LH{3oJNTyoSP|C`vi@xUb$e|baPHO#kg25uV`X5gV9gF+uXbpQQQO%lUQk}ibPgo zpML@~l$78p7E-Uyz5SB|Ua6OmmZzSSl-oM$XpT?QXf!q@hEWBHWu0!)(>pdhg)wPz z__c$Ic`&cUNyqPmKd~#;=U7GZ-2-MM-V$A)DaiZG5Zt?;dFpfdYqKM+h76- zCM-8QV2V~t0edsQ-Y%{}AQpHN4JGNI$5hJfIs?psW?4yleL?PSULoPEV>K1$}=Ibnx(z+b^_bj(a5N0E+y0#oviUuUJmchhk0hE5eeur=%{sV-oVKt?8gcVm^`7de z2G16z;55Wu!f*=xloCJsp1Yt$Ih6xv5trJo<$T#7ITsO}pZbX0-|l5i9(~Q)!3iRk zKOsd8;U*Ehnmm_pyy#KeQepwAQ``eVU=e=5tVqt&s~QPMaOUNN$dC1x8Ze#&z}Nm*@ zp-9W)IDEJvCj?r1JjnV7g?DYM%c9+g`|vL z>Ne3R*QFA!=k*E`_KM63;~j-;?Z(Xk<>OZz-gLpK(PXhU>2Q+eymfP1jF{bK7A{9Z zCtNwuqW5&TtuR9iQF8z;$Rx))t@2uDWmkV6t?1sYBTETM+gMOvdGoV9 zlSh0n7{+4{>*3qP3%{(`lqJw9V|WiBS1)0z(y)883^{zmGBG-b+LJwbZsQPGo&_c= z2@R`a4nK-w!ji?oGvmbe)GZ2rY@pjku8`+KTrN3S6P8YFv=*k~jM1#kT>YMqsLLjn zC)~a?Cdf%XWJ%7kX~^xt``bpZD5TlQU(mn@bL`?}0sV*~65M4$9)@m9Efsu83i{Rs z@pWo)K0q|+S@VTG)k6&*oz1NQ@rEa)p}IvM?K~LEvn)eNF~RPjQ&yR*Bk78^P5etA zSI7Gx-$aPCyKIXtRW2q_(`Gi{!jk%@aA-1ue{*dqbnbJOMJ>B>=TmLysl)Y6vQfRI zU~rDfwK|%d4tzLzdkMnzF6-w7IzXMlY>c#0j)=?)RK7 zoaN3*=cs0rn^f1-k&2~uC9L|Bur4n{Gd`yH?r;8I98HvA24LScd#yl^_D?^V0HgenH1=hm#B+qWZ9KPiyA|P)>B~o)-ukpEgOh=J z|Jb}3q-;W)pgz%OPOjUnY|I37dyQdx1pL?8XPYxLjFackLoQ}F8me{SFr79u!Z{-X z88t0s$IUaZ*CQH#VQ&IyTvuZG+9YdgPIr}H)-;_}ahb8VG_?h$9T!LHg`3u>kiA*z#2Ul4@$I^XVrmwWE{ z-d43S!=4ql8%Q4thpfQwh%(d?-kS+-gOn%$70~ib+AmLkWY_fz_rI~Ov0=1z`N<7L zH#p8vTu`mz`+jA)nTGa@>8`V*M0w$52d!|lfG;4Xmqz?=%ZB6*beLnKR>$X6c>a(? zD06xIiQ35?r%RkST{ovraZXPVE@Z&!SS~oZd2LdmwNVcWTO?=V=E-E|ra-<$LsLZF zJ$c^fqretdX6H52^uHC#7iCS-Y)%hYs`K7y~je z)|Hmwa;#OjIL8V1wrF_4EybsEg^h!Xe+WQ{)J;f%5QOZ!wN+JFL3>YPwl3D2F+zPb z=+3E{@{MrzsS5XJsi+sN;j^aG$l}khq^NnpXACQ|2#EtwAaKrytEs>P^up&{)iz>iBPwt1ymj=a@~R=l4P>7pQxBQ|_56-`sHZ5I_4$Psya`D>xh#j%gvNYH2gL*nP#{3a!WGRCF^YE%WM9 zN!_s=4wbD@K9i*92dk1S+P+@EOvPyrX3+u9iqHn5QcZokQc*XG{rbns@#-<^}nS2xj7rEV)*t5%Sh5oi3CzA|=ldu*enr*!88 zf)bPm(8Oz(d27JA9w>pP8>%8WUu&2+U(q2t3gSDr(fQK%2ncUg<++zz z_+5x7KenBcbf&Y7)fSg=1>c;RT%0q~yLrK<1P_s*kw$;$QLu#RYk|ch*Phtj!i94vK83hALp4wm#zwv4c%PqcqllCSw(o^rduX^tT1CWyIoixQXDmz z3#wAFId_GfZ~tshOSjSnBxGOu8I4s!by0 z$|w^_WE8E=wHjND;!QsL${;`LU7|fAT?2JoN`qG3sgOn)DR{dxj#cmZ#tJt3eG!Q@ zMUqs(|NE4QTN)<}?D)y}_Cl{F`mGWNEPc5?z&Fv&@v>zom0}0Ul8|lWkivVU6~?MY z=KOvl6trm@fdI9zYTtXC-1Z=&+b6jS>YBm+sHVc*ld&{bzBZ9>(_5?!@{m#CNoGis z6g&C&u2_rICf)GiF^R3H4VIuFK=Y2>}&%?FGs-0!0=z5o}-g90VCu89abb@W@BdkKehaBbgbe~*^z$u`UdgY zwHDTDAC-j?+`~yGP18Vzg%tQ?#&t0m85VLP*uL)GvM+7tLImanGP@R`5?)`Nw`z|Z zJM?blAUILabRjsSps_ThXF`+|s2MpTMs8J;x!9uVBwABB3*@8JX6Q&J)I{SNgl8$F zp~b6>mdOUYMz|j+HBnK7Y}8Q6xmXqEbFf6nD>e;CIVp{TrCpVh5W$ozRs>QnS;EO% z7PBYU^F7PBVikgxSYj1MEbt^%T(rbsSh;cpR*w%s8corMScDuLfFiIF2_#{2jIqSc zcSndUSN4r$M-$2DS}OuNQA)uUNF~8~NYk1z8&h=$ZK}}HtT`2G=w!34XG%WILYR4sr+||Y6 zNkRUzn4e8TG=jL4u(Vh@mqbV^O4NSxxK7oEvbj>%Rz~ksRxwgngq&JhhRSqTjfliX z=~=Zp418^7#z2#`GQ<)rux4P9tT|i8>q?U?fl6dXP*<+BEMip@I9XZlNQ{43|E!Nh zwZ%gDy04hKG(S67266Mr+c4C&A-Nd5xmX4*wwXet;J{cWsq7{+$dbIA+hivEi)Qg9-td`MrB;lqM$dvK z<(q78Ox`)}IVesqO&;sbPYDQgskKsL&DH_9rW_L1GZr2#%3_aWga3QFTD7t5@%3?a zX!f|@nnQnm+mqAl&6bz1v5Svxx0D!4$uouZGs$0yu&k*^4rI0bL> z_&ydN|5PYw=}#Fjw(9-8d44YIcy+@rC9<_bzcdOBm`VA?~`s!*jgKzCW zXM4Nbb;=6c+N0OO|CjyhrpO($`M;!^CG#AyD;BM?1+JJ?i)OhZm;aKO zVJmk#{#P5?SFOvIZL5+s%Q_dVf+dI?v2zxoGDNPJd5d5%q;{Kl?RRNirNr)Y=jL~SS0#{?84J2@8 z5cnASFp|T>B>@r%@#?x@u@)G9nm}+XUpRx5FRG&4Xh%SDxkl_h0!e&12Re+#? zXqGr{5Cmjq6`mRy(Xw$&8i5h?JXRPO;EsvI3Jejt^@bzGKylzSS`PfZtzoYK?k3a# zSM}FGa3N|rzk(_*3BwHF5L^o?adu>>G&GW$N~Q*a#yy20!mwN*D55)?;!wOQ94Jw8 z0TER=K+(O82=Pp46d<97u1QFBgir&(1|^zU0|QWwA|j7?I5^L4P=UXa07@x@{y}%- zVwWTU=*IMi0)YWj26T`Y@__}k(0(9<(!uV#!hf22$Zc4Jh6Xml;tmLi9o&6*m!Is@ z#UKF1*ck9db*W%G1^GhwCZKkbQMUsagrKb})dOiQBclw)lY{{QimC>k$cEuipz7dD zP-XYd!;M0nL(#4ytk+CaDXCKwDuk?&KNxfaxRAA`01~PNb_!*DL&~7xLVy%Hj~8=P zC?rkyX@Y>r^cNlopy?9Ph>yG$*JXrEybC5@xVi5|>Ah8=fdGmJbkTBZ(~!W5q3FTg z4YlGzff6AcWI*WdlAs0L-wPq&jd(NYsqjmH(HFwVq(G}+9IrIHLxmlRN@Nf+@I|$>>QsAIJ)cXJ}T-{#?)~=W6Z|pkRRrX%-I1r%3dCV8Jw%B}GWlpH{8z!n;3XiqkHy$ZrBoC0@A( zap?7r2-lwYDYM5P_G9BS79Un#|8*)U9%!&g2>QF;Pmsco2|+^5+G{eDBW-q4 zG~OcsHF5+>oLmw^xQkw4zkI+Lv0bX?3KE!qgHYsG2(>%Y*75`knEyd4C}>CN6#DbY zx*&%50-*%By1LB%OsT~gG_c={!xDpE{pyego8h*}_yWNrfG%2?;a z-NYAE`GYtVKBB6gCZ;Nkf2PXtuDD;M!u*nZL-Qt+2C;^nBm&i81A0E*4`5#0A_Go8LWPkiaEBvM*S977jDOuieLJx>P$r_{}( zT?mNf)Pn52QNj%F@Ag+d?p#e~UnRmOwAU)!uS~@wz^XD=dSkLJO=vck{*&b^EL+R^z3z> zPC6zCznNe+;*uhlJs!JAof*6rJ31#3CnaWnHwb9=?o|IN98l|SLm zf?BCm#WbON6Np`gqOo$!Faww`#(V*~W7ewHxDhoz zWg)r{S?3O3qj}!|)<(`}RJylma z@9(QAl2pM2tc6t0hbcH1H5%Hs{i(H+vB1g{QW20 zf9BMunEN$IwnRUfMDq>iB(nXS^v<`W()(fZSt0vtA9uHLr9$VdWFdU*W8PSnm~D3S zFxH!PfIXqi*@{W1dcu|^h3!luzDY}f5rpjDkKi?8d?n=D9tQNLHqvUsm8;!`YO5F< zm!sY>LCwaH8VAQcw*kU0+wqclR$Ao^ICslp&0Ae%MsAwe0XfzfgDi(kJDc!T!8GzY z>b<9U>%dUp`sN6>;=d?BN!^g)hW9>R)TI_YsldP~M4q4iJh&cl{ zu!SedBim;#SR;ck9XC;QY}mPG{U^>v#&jEZEEl-ZNMdn};_I8S4wT;3 zIJ|zWabko%&F}i}>ejkZFE3~P51V}T!OM5z=q|Tf2BMQiM_=vpa=Otm z#i3P4_+=VFRzQEwcSSFe^0@IJvi^_3u2ax zY}hu3|Hy5>qu?axNWX74m&eaRQ2y9ln919f`2K($eXNXp?mzco-_8--ZFlf~B+`HB>^sSv!XD{F1k?^BkNYAGvKWVp~jA^gGX*?glvx6YN z&FRT5aNf_C+@Mxoa{bt7w-q7r>6&7C*Q}*<7fA`SDF)H(~qN^ zu|2+zNz;$s7wL48I4BTNOyzn%*F+l+K>4=6&VHD@9v*&PKEH?8??axxKcJCt@}vKm zPi6Zb`BZj}|D8`|WB8x>R0fX!V?NadRAtHUi;Y$;9t`rIbDUhlZ9JHvf2>V^IBe?z z!4BmjffNNHB>@pBZD4b-1cXF*u=7*i1JB&wTlXF3otNwE>(BO^%i39Q?OppijBIeS zAq96k7*qr*5@^IYpz4b(%|Cx4qC)~iL`DGgG)kZ=pg$`x`;4Il3=k;Fw?2SMa}JQG zrV7D&j%+?C$mIunz{p5o(UN14k`oaTeU0KzM+80T6-2CC_$hXLJjeD>RKX{Lm(DGK}7rNIew-4 zNp7PCTgSmcJv}{waB8q%A#RF$NT41B4e@+N9AI&;LBoE1VBk9;odZ8IV8C|&(pZRT z{4U5zyem+_p#Y8`XdozYBYQ+V2@D+AVN~!;^D98u?fr3ngC2eW!Tr51z{o(6znojU z=QdF;L%FtK;Oc?tvWWiqEJWoK!OJBzKWj}1Pg9Nw=3>G zZ-$FlQBR_;58Mj`$@I?(B0Vgt9uw){7I01N3wj^};IDzRzd=9}QInDqQj=gC7ve3H z3+hkG?(zui?*`@P->59Y{#mFa@a9pdKRChlK|8)bKG-27xX}XMJwV^z&HEW70Tom* zVZKH_?lxcm$TvCnEKJ*<(c5)uU!6)|LTYAPt$H**Xj$U_@!!r!nZ@r|Ou2LH}s z?S($B*Doo+oxa08;9tfS9n_c>NBkQS$X{Q@FZc1^=)Jz?uRh7&T__8W zj*f4ahu_y9Jo_-}!Qm6SKXDB>8aaRuiX7PZU#M39U$`1RoUnWQZ<{(c^Z=wF=7m3T zQ+zpygvenWZoqm z^rfo$(juyVrt}4N_>!l+ts>-_uA-7g9pt$moR_*2i#QJI9styR3u(3-nn;X1w{z2d z9xVGdJE_P#S*0&1QDwU=<&Ct-YhK-3rvQDR!i=0SQf1=wN;bSqostg#G9afO){MSr zbUSptN)0;hyMdYwiMrsOK>9cejU|l6M=4I)tB^*t8ytN`{2E%yWC}$Cn0Td|ra@;Q z4dKDUDWx2v#(ARlLZ@LF8E>3Bx)+DsADy@~Ls<#}^&$YYc1?7bi;i@dX;OsHw(`ARIw%;Hb z67*S?E|s@tBptU-UVBi^ZgX9?q^g-7#kt*CUDQ*2%ha|lz_udCL%j$)4vW;id^3@4 z*#agA1QEv!kd3zJCGzWZ4vJ2f#z?Td6jWByw|X|GzOOgNZV4|r?O=15W!GnrFZ_nH z$Ua#1P$B98Rp#xY4odh9*EOOsNYWKZucAeF%A*NNE+xsJu+ks105TF65#Dxa&IbM zRp(xI&1yJxjB6v_)tVtc4OXcISo~?QV9&-!l}Kf9=@&_n%IlQV{CQgw=APoYPlaQ- zKpK%aj{(mRK{A4EC$=XtyZLpDQ%jsm!v_d!ty|rc4pCMMS{MOdCWqaUjO{{H8CSg>cW^A88OxUxm(;GIILkTLTK|Rc82zxw;3ixr8 zpu2``Y}vV1-EZ_s8VA*~j^cEiNQ!)-3bSFsDKel)k9$iQ6mTWr#UyTmB!pX4iZd^w zM+-5)XG_BaPvm#{8k-eI?@4eLyHz``PDPShr=}Ml6(>Vb58mFjK;`eV_##H`ZLUpAFba-$O&8+FNS$6|5KJfIqP#r3j& zO!($|W}`~-sOypc5{bOqu_SUnYqtDwAI^l{A0r);jc1rKXTh=1<6{h5WhU zab$}oKc+6QX&J>WuP}gHxf#13C>3Wzd{OMFT z5TXU@0F*7=3=_y|k_*gV73g;49j&(VDw*HzDspk4K2{qD=@m99+#lLPk{+;at#WZ| z+m@5wQC;?5M&U_X5MOfUc}Qr&Zvw8kCB=6e_QC*R#Qx4bSOwx|m}%W}SQ^5Chyq)IHBDXxf~1+Z&-yM4tY%p`QCrpj16cSe~Kq z!s^ee<<`&TBjh61(K(jac^3<{r(RPQ2j+@F6;9n&=4qG_-g=;1nAO;!5Jn8k&%da>zs_}FpIx1gM@_nv&GEJPvd6-bvgPIxM+OV;st;Cv9acMI8K@YK8k#t;oXV50;OrvzDx-FETRunaE{&cG^a`vdBD8a|=$mk+YsEB*EIWCR zJzUSLkoHMFbU#|ryPki(r$}Qq(7Ket9@3Gy-6S>slw+?>N(!d;@Ga&|eml%OVQWZR z6cUeWCvIP&Dd{Tspb{6k(pv}AOvGhr!s}lf1k3E(7;pZxSSRZK9azJFItP%n>wL8K zf*>zYPdJR3sWkWehb91cCMl^2q}n0KEt#_jrD8}TseAqT-0s>sV|7%Ls}}GkiR+2^ z>ZtxC%BY?Jt3`r{CeV|iH|V70)^w~J5)PCEpIIgAd(Z*@I5grQ8-=UA6S3E_pMdxZ8>X&kBP zNQ}Nz)=&A3M?S=CQ<}Lsi}F#BmrIn}#UqZ*0m8dev$N{#Il|3lDa?O37EUk0be->d zbEfO1lJSSF`yv8Xjm#`#CYsriwh}f_spO3xRuoyBf=iN(yE77Y62l#4Wk9dfQ*BTF zPji}qdh@3ftT6W@a@F=wi&gA?g;0fybkJ-uKEm{offCu#u6KlDW}ot|X1y0WlIJc+ zqbcE;arucn{~d7%uR=CyFYDOx<3!N$FAJ_J`l|CS)V3gUXONxD2&xijEWdX{ z*>@Qijl{&DGAbn+Wf5j)EYfS3uL*R zagmOm-`hbPS{K)+rv~{uG!M{fGhGQ6%T$(*p^N*Ys=VuSFA{1|N!MVLfY_Z}Vb)+r zMb*azn7)Z4m9$+#J+%pK_BCiqO6EFr4->>;LB~MNoI!?-_bZ^OgPLN~+-UZfvBZUd zdr~HCkUZyaCP1jrV`wtKl(OCvuh0ThPS0&o$8fsWqd z`A$a69a7E#@VyFRO=k$P_3PIMe#1l!yt#TafJg**8#Oq-&S`R*Xt^-*hTIb6)G3}M zrc#YOu6Oa$S^0R9;iNZ*`9f%|jgPp~@xI_)K_%Q3M)f+&39gdD90#BzZ4I}cWPToM z9_5m-gTDusIr`T1A@W`IVHQPlr)+3BJ=*AYVWPw@&#H4?5We@<#NcG>s(3{PbJ$}O zdMSBG8&GN}JCV<4lJ2RdLc?5A(lNTxRn|lE8FcBL3046Z7?Je1;m9TV4Zr&#+DFoq zH4ff0C!wjXIR8*z>w&tpQqr&QV**Vfwu zIJaQU*ylyUD)kE}Q+Z3hJJ~^N6q(nI&sfArYI*UcPEme0h~uRQQD+o=ZwQo`PaXJR zvsO|Q6ny_ULgH9VFd8eb$kGWYJY!{kf=mfjQ&Op=k6GrgJkT7D>lqPzwq+`A^u5Z% z<#xQwWyEuWMutalrm)23t2lY*r@hL_el?uT`zVQOl0wNNSIFLKm_A3_HK+Vu|y2HZu;` z$@Ou7+Z-quXqq644^7HlyLier@l47pYmCzOq#5_i;@*C|o1{>*3y{a0=ITw^XB9VC zxW@q(z9e8q3J#?%^cDr>+@j6D=|QHYcZJORso2mrQOuU<(cPYd&{?T0OGkMA3#6uP zaH*5akb$zoF(k_9@h25;FV2@jscm4E8KXs9w1m4k0R1a@^|!NSS@z?$PagTZavo8+ z+kz;dbwCirsnEw_J2U1!yi<3I(3$7kN6bas_2-)2`YB)Kh3Idrmzaaor{Dx1@6(Qm z+S)~4Pi54$1$=-81C-G*4Xs4Q7)y8kHG$LOKr7+B%~~(lmJ28KC(+@1ib*@lp?K90CnA%MliicW5!o`AR_iFbEn!CoG?lg zG&!6EtU8(rW%n2s-WRjC>j7py_8klm9i7spc0Cq7!}<2a-{u2j;S#i`jdw#=S)P{6 z&9qFq5q3<`mN_0yO>A^XZp_yK(IjanE#g#RnbqFVG(-XsA9E%O0(X~&0>QoMnyNU-a;)bLitQGG(U$#{ko4+pN|PnK=1v;>IV<}qCF(j$zHT;7 z6E<3U$!y_9MS2*~E9+6i1O|u_$pR}lMJD%QNq=9d$C6LUe^zw}VOwf$e{qq{IZ9dt zFOgi>7Bdz7$0fo4M$ZKC2qCSsMZYn>n%h|)g~^p-#VKRx^n5EwLxWh*%DMKkyA=k> z?QeZbYzKfGUtfcs%$cMv1)stEAz#sIVpeUwN7EO7ly%;n_Z1n_y&5!iz>)>WYj$(g zR-WfCiN;AFP^{6viwZo2A@hk?Pic|8%VK|M=s7)@%J%?KK(4>^)x-wBZN_4Er{2#8 zN!*}T?cUbA%OT=vTF#^74j*bMQ5cX-KSv zXZXftb>vYBXH?*VM@5`fN^1OOR82i43Z#?0)7C-w4C=v3e2{=n)h9KeX^*nt%U_yb zraA>dD9$bIW_*F04p#}`njCGw~LN9Q=C;7!WQ6UN^(giQzZpG7H8IMp>s9u(%_0%%+jtX)BOB z9O3vS;}TH{E78nj9F>TSH@ zviO{&dOp0(TTrVOX{;hJver?1O4;pkhj{ruYk#}{UAPv{t%q@7qm823fY-&6r_L?VSGi&N>f9O3Y-RL>dedAW9`5#53et{j5 zNPi&{X?`n`xd=zox-%oXuP(|*6j!wtbH<#jC*!?ZthPjcqLhJMc;3N%a;$a^0inkHT~czX^HatKU&SNHj};J&7-S zoy%M}`LT+HOw0ibQ#4*}MmT>Vk-X_0!_i5ox58}U&b@soU>dStegG>`{mGE=1P9jd zwxPVjvM8)~0l4 zmGOhhqO0K@h$#Kp_Axh-nUI0q{DbXjTWdXdE$3?AU)_0oi6~h2uvq0BX-B_L7wkrI z1#-ERYBvfo<_;?nNC9W;ReEKjtYITi*?Y5dr28-I&1BQjKm|&`rY?o@vHcX{slS1K z`0`Lsx5f*rVeznlu}59k96zpj$1xC$doB-7xp>5z!i)XAC75cq5dm!jB(pues`$@) z3Pj^1A{6iF0m)$CL_AO)PZ_%V+VLHfPAE9MC~4}s_!oE&16?-vDO_^A!{sPrDTj^q!p8|z+pfL1KPV}+7|fr^w!?0 z-`eWc^ZYl_TJAN-WSSx(P_+KMi!b!J{J>Mqmd)Z;ud@(#(?yCfx(R1fi`$5NhhrIt=+0G$(DEd>v*SJ!bIBjw3)>!UmN*A=>Jjs{~W|Hp)wts9G~2v`v{ zybmhvL?=i-BG*ldAx=?yOC zYtmZ+4j{W=Sw5RFB72s^cMgNVCe2NP@tyTG(|uaNBjg(Nk5?a-API~h%o5i6VgVxi zRhx!I$)kH)o;an?7O$5s+4pn`f+p?}uY#Cvt@!lm6_EW!ISac@BzcB{!;7juFb!hI zuj_PkX`Nn6T>YBYWnPYdVXhI({D_X=o3_nj?3wTNMCorDW^)#sTyfRr$I-Rm;#(8X zdv{O$i|;9f@Z2sOE6uh?OyRE0Y@5N)lp2gBs!NbnGtnN}pX#*%o5o z+ecoQ$7FaDdO)VCSyT)*hk*5(rE0;7*F6tPLxI!W8^7N3eA*licFABVipxctOs(uD ztFv(uWhoi;giXt4QgU+Uxgg06erz${L{>vJdX>RnNacw3mPms$bY!{1qOT$IXy=~ z89MPSJ1)m9{fRSbu5eX$vE&DC@!Ni{9H+IH0fV2>3mdHjPdzxtTT70s+1|J(pDn#+ zSB134Uz^BI;VXoGnm0Jh=7;BZdA!(Q&N zK(Aw;*0WqN_xa4nE@v@lC$dn|q!=l*bSZUkgtHt#{jm)>%iv1ioBqH&y0{xLx?%IL z3j@Xg3B3p}>Z%{{-k1x{eO`g6AG$^^s?BCxrVdsLjpqG``9ouy9Q<|9wk}zL_sYGV z6bogQ>c9c5NHT6r@Mnx#%1c2|3nj#|$#^Dxj_BQSZIP&HuSA?65&R5m^Ma;t#*2NK zR2EwSATSKbDE{xV$MxT2kDZbI|E-|^U+4S(D(E@5nEtP_SEKIEx_#3cyIUwmVfehe zMd)>BD~e$Z8_G0v-XlZ25D|XP7c3fsT!aEDMC^qj>{8g3aAUR6l zNZ_GA;{5Oqn4tL(L4rtnih2Pk$Y24#ra**}!6eu2)_TI2w5AL|nENMxLi!oU@&SnD zV|VdD{UDJ}VV<6by?+=P0$8A)x=?(7oT6zr98G$Z>CtO5@ef-*oEpD^H7i$B;E`V z5Ip+xmc|9Nevg5kUIPbng2Tl|7}G@sK^yMx#1_OkiT)H4`+wm1@&b^aLJ9$} z;b(8N_ePQdcnOdmK>bLUqO>*v&!fqp_uqS}=$~^D-vsgR0>tG&J0Q0)+J1cmSfHmt!arUCd-l`6lVDv#`+t7PzwRPV=ld`LJczdTjApQt zkmk{-#KOe>T!wnsjQ-_CNYglnzz)DeOe~*A93q^;N)DL7kqeJ=n12EbiHZHA{^=MX zatz-U$Neoe3pRo}qDJPg8r+zCD<$NaJTm{e8c z0Reuol>8yx^V5nd~C1N4~xfTJ&!r#W1fnCaUfqv|z#_;pJ(ciB(hN)M3#!E=Z z#fP`lbgv+!*z}RlvLkoQ!ysY9=WpjVCb-`rK+~aOxd5s#?+Y4KLX?|tLdwNYDt()~ znO4p}!U$i7E%J_YUg)N!Zv*CH&rBe;&GQoFClI zB!7r`Rg7On*A%_1a`s=c#Y4`P<-K;M$br@t~FxB4d=UM44~zA-Y4#!5#hX zgX>ik)?mo?WjyMd#glrjY_zs9Ea;;;kxU z-US6$kGdN4?)}1)Jz344I;@|6_rCCL}stJ4j5Ku{5`J zFGZ`bN*pKQ2JAE0JOlArl>q*H%;kRgwR3*8)gL)NhG%2cKC}Woik3LWUe~>~9*ZaC zR)N|y#(m0gRI%qpe5h8ex$&mYiX`R6gVRsm(t9UYMbT}P#Nie5amF(pi_aWR*$TVt zTh(ISKn4vD9z|UDmM?X9|Fzv~d2xaGiaD`a3Kt*nmET3F4>Kd}^M;jmiR)tO&ye~5vtkhhU1-rnvT$nWoPS8OB< zrnK(hdQC@zUm?h8^~!6Kd-+WtZGSO| z=_Q{%fHx}-q(!l-UYgc%jU86bq{G^9KwzqFohn*v7wA`fkz9kMe{z2X<`0m%FPdDJ zS{SET=EN9z*q+>iEh_6z>ss>#{7dhStR`v_Ss6`Cil#&uxl*!MK-EzVg0UL)zSe!PJfm`{sK&7A8Fs{!i#A5A1vOTBS zC}{ZSmD(`JJvWL~=-^#;9?W+6(ZE%M#jnOsKtwGIF!ixIs9};yQZhuA3!ZpiYC25= z9Q3(e+o54;*z59`SYPXNE&So*tgxN1`G zrkH3)P^{YV77T*C24i}PDK`->K8elPqhl$Cjc6$U-t@T=yIbwz04}aLxHOU(#pS~< z^P#+Kv^C~@m+nhL&6i#@d-FS1Aa&J z*njPr$VcE`v@4S_exf12@W`C(Ey9qI57;9tSa?KN?e^{p3?$QIX~D@SC=@=KF1 zt0mjw*Rd`&t3{tfGNj~#Rx+(nFTa9!pWJ6gp7n~f`Yj<3qIy$*fo;dondq+p-MB|3 zb%`lxNrSClY*@_w2vc8Xgx6n@ zzx%w&&$U-X_~H?&U(Vn%x9%`sUvYjF=6->e6{d!xTww|p1oFj?FTfS1!HG}7*^6oC z4;e-Aw4Gg65K1pko(uB*C%{$LYqekAv4KnFKCr^$x~EM5;>#82%wkhR##%zKy5 zHUi9Nf@->b;^w_Bj{i-|RSXXtm;}3^;J$4=mTJ%72Lkn_1?)vPNvCByNa?V8c^N^~Srp^eH{1gK$T$g;Td5@Idl z>`&>5$f8^J;6d;a56DqhNTPIK_PiT)(@(0FdhFNBjybOfyCoYIobiRCqI;--t{$$k z=-}fdQ(qQY!;P+aj7MOM5)qw(pH-bJJ(uqhsCBup?gg9aT!O*-aF< z0Tw{_BI3o%cILX`XBc=e`F;YVIy7lCj^H)@qa_O*4lGZUp*gx6<7C?TK<&jQQcp%( zFrz~<1sQ15bJ&;}iR*?x+9ua^h~l}RQibF(X!W^#8Bo2qsO(gu+UT1k@>*K-E~KBXsi$@JN)Ibf$c*%)g7z(LI!oC@<{qX4EZSZz8E<&B$cF<(PK&Ix)yX*W3P zXP;};s4MTSI*HxmE-+y&guQdz<7m~(SO+bSVug3}D$-MWI`CH?ym+ZzMGJ31H$kMY zA6v5^eLs(@bbl{8L>m1aYlE4_V*#aGjtb%-v z+l8(Lapc`(6C}C%;<1v%lBf&Td6AWJiyd5z+<*$eenW7{Ak*(r8d0v$Tf$3g9Q~dt zoZOwQICh0u9ZRV*snT&}Nk4|(+73kIJX$sxyJ~A`$c*6G9XaahQsW$oo+{V`+9{ss zPMZ{0^=9>`G#2(d$fq77RnrbvfI**YG2)JySuZM@7|9#5tHl4$BdLu^%>{Nj;$#p-Z!0n8qm>-N`Y%=>o62MiPT z?)cizpH!q@OdD}0Kb`|K8)<7L6^69?*^;ZDdi}MCan{SINCoIe#iwaWb(5!VY<;U}3$(Fe|0+?fvfNh{e+D zaRklVzC3j}S9LS!hV7Kj1pY7QDn~((ne=FM*t_d~rNrt24bd83I9@vyCp>pTmlPFT zeQC|ka|oIGPG_>{*TdieJg%v#FAw#0X@+3@7CGTIoS$2 zN=b&~<;;-F%h0jDzVv!bYvZZoV?Y+`j@J`C`Vx&@1#LG5&fQWp!a0t#2u?65Pl~$Q2RwI^JWEV% zR!kDbJrmQO z3+DD#yA5)gb)`EC1Ume(hXkuhV1LK`5R*-<=;fTc ziN!zBT**rw@p9@+J9CoP@twTDL&iT7H@0t>uQJYqQ5=7uH;f!Rj!}?HML^YZBAFkL z8~2yHC6{sP!cHXqszxL&?5JvKCZCV7QjgHTU-g1{32Pu+%%{oESz3>YR&K&wLvVOk zS}oOREWK;Kl3hPb3AufR0%}^UzH>BgsL{GfkI|ML`U2&uj617LyDmY7+N4kP=}{{r z66BY6Z2XAY(xRH`Fv}nF^G>hTqDRArXqB?5%R;c+aAuw(zPkp6VesV)Ws_w42@;C2 zJlc+^hvwdygNq?7$*0juBmGZ8eqfmjDZ>Aham@c6}xXZ?cEAqf6y;_{G!Pauk2d*?NYj_hl?YFCA14hgyf6 zz7R3!76z;-^SQ!#oM;y*r2i0$gY`!JV8R+zNH9K|qI!%aE7>tE$(yfP)TFD-nLo1u zj}92=X^elBBy{|(T5nrlr6vOm>vXpb4_yj1Yjl9U-q*U>JFUbY{rtUmQcDzIB#7TT z583k6khXF^7aU7)F050omo507wmz}271#s9!(s-)<)vACY7p!7^Rgy9f3a5VK8ED7 zd(o&;Y$5y3leRv^m=WaeplJp8P8z!}ar9hf+R}f2Zql$Q!JJSFXfHnjvp@q?|I6mL z-%kb|AZ{{|&e@Z8dod=xp+(YxMCwlTvzU9apN<5Q++<$I(;Zt|RTZ z?>iqCX*=EB$2bq+2d8hz=ldIfK7lpiP>!bn-*5M+abEA|aY0**R-bgTqVja|lDku} zL~xl$ZmwKjU~O;VVyE1kqRq`|lzCX%(d1w=edLevlsjtpW+*F$ThS5&x1SI(M#*A) zTg6UejBtWQ4_nVr5e?GR0<#erjOolR`8p@JGR8txor3!Td zo?VMz^$~MA3Av$HHYK%0H8XfAFG~jPd)dNpig8EPn^vSM1A4c>b49@!*GFM3`o(o= zA3?dMn#{&uSBg^cU!kD;reVa1v3X1?PrL1Q=-ll~02;!}+rao2?h6_*P^fqRmMkAM zv7go3NLHZ7XV6VV&nSdHz0Csv)#0rUBmmm;v%>pRd0gcJhqUnT3giYlM|0rI52yCu z@KVmL&qiw^LlW9`?A7yn^ahZEGU5FQ>e|{Cw6|v?lNOJXaF=DZOs!cLEDd1en#PyM zLX;C&4-OFs^kWTdARZp!DtlLEm4g!`yX6^twwra9xTM)|*5p zv2-ejwPSSNC4q)GE6`D4h}`1=+3Y5$IcQVysTX?{QhkU;Oq!5m=A6TSPS#BowK{zR z)8gH-1HH;5(tcO{Tv8boFIG419`u&4nL35`4+{0D^a|W8?R0Yb7{TRSe!gFlqYqyPJCq}*%h>6WX`bE4?3ncp{f2OYAM zk>ZiORhn+SFp`PX*2v-*V;WC;06_d{C_3(0MJMmx#b0|Lm+aDMExLc)JN(xKj4tyx zcz91;6sWz*u`p;l=C|D^Su^MURW8mJpnIk@tAuQdc{3=kS21+gmv(s@v(zk70qg? zkx-5_zP*?25sZ!s>!K+`x!RIQ6{iAtr7i&ePZ> zzRYgaa=h;0SU8ADdj828tSs39x^+rpN)W7>H;MSR9MEC^?}}oVp5HWXw)~4g5OmhL z*hpWly_u$#$^|h}Os6@^jjJq#BQtWyJqVkO-`VB>^iZ(R^g&-Asz;@u7U<=r3x5*_ z&RgE!Z)SPKxTw3m0tY?QEyBISg?A$pb5~RhZ4?S`D8_8;tc+)9|B0erfqsS#u|)Ky zl?=U8{HjL3)B-|9iPs5>TxZCr-iXM{d1*+A>dJI4Sj(bunX&TMMc8puoba%S`d|3n zwkIc^M`IX#r0Z(>E*C6+qU#$1!cy-L=<{7Tu{P|L7=qXMo8FdokG|*I-8o9(mNjpv zR1Tk8rL~~VZ4_Ug4_UBE7;>kdEFpOv)e?|AN=$GmA4rC`q$3(Z>8}cg-qfY_J!zLd zSpFobZwt}$zgWb~cb?h)i*K2@cG=hv(M0Iy%mgkT+=M#QAA0&w(y)x<^78T}BxWhU zTE_g;GI*^WQ4k*tr8T|(^#cnB2h)EAFec{z1u$ktMn;bRCSc5roXi~mM**vDHFhb{ zt*6J{a#OeAxma(tty^#1Xqbszkm6?NZne$I*#`9b&Tg1rd*9|czs0eQ@>E&zzo_!D zS<^xzlc|9lvOu6XLqX)zfWVNjFbEE8?hen0?f#)0%Qv#S0DreW4k*e;bYqHM8<)_W33X9-BQ6dKave@aIgC->_@?pKH9$_SQls%2t&eI<*ILO znon*9@7Hkw1a~Iqrbbr>;0IEz3zRxLD!A6i=imyY2_kp1Jq;kbU$Z;7XCRU=59>pE z_4oB3NXFIC(Ur}q!PEWY-$WfD^$nq*L1Vn;@6@IF>k5KP3lPubO7HwpS?ufWWAyK- z9bFZ~2&n2PyAtS-o&ICCN+0Vss^{G@}Rnr=TG6<6oC6jbqduVVUrkK)lk zX!w^7__uBR>sMj>w{qe4HT?It_v{y%?!e5v%)sW?9SC4N00gkZgb2Xh&%-k|zyAJ( z=4fqeefkv8d9VAIdHO5#_zNPjx$W}u*mH`BgZg%>6sM6HP-U0?#@{0X+$N-rE(0ud}|H$M>iODOg z$>iSl-7fnVB?GMPDo;<|)7F0}#dZg-{qX<;h)9n2pzn;|zW-pWZFGQU`=C0sG`|4| z8-NhQkGZDqhN`9(3c)w~iD}wjbbx^0ujk?~1LL8f3Ph8?nb^t-rp2p!Hz4hRpsgaS z=}BMh*Z09629S5=53#eoy|j&L=Q=Tv%&<&O!n4$Z&*T5zmTu?I0Q2sUZtR)#S4zpC zMnpkS{1{%LWkEt0)A$MX&b({wFykl>1Z#6>L64TFGMDwKN*GvxIkT5|S#DBa$0ck) z7W^bU<1Dj*e+|ZI3z0i}8au43FGUS@l0P4^%&&oKNJn4^G_eB%%qU)fi})j}l!M&B zt&lY+e+45iN5xOT)2|R47Y7UfvLoc0r@w4UCZJ@WW%N~nk3`Dxh1to^g83)d$NB7W z{X_*`=;P0kJv!M33#`}rFm8^_TFeYU_-c_2?qiFwXPjC%b|hy5&}z69&Un_Z|g z9T>u*?3Any9$P}xrjyRpV{#A&xKZFOVlCo2M<6o zH&JC~Bv@r7ysms)nG5Pyl@KLJN)m_C!j=8verV+uJO%@K-_piH?);6OdBu18gO$I< zCE{=q6V1#O}>R?L*&#AvEH!Hib;Rs=tAtsMy;a#3<@g86n5=rFhP z24_fu6u5F#1htCR?J>9`6yY2MXjFOuX>duE0Sx|onzg?>t?ZeDqF^%bca2WGL_ce4 zBBk;9^}+dziD=5=Hrxv<)Yf`wJfufGfj|zbo0_v0$qJb~vX=@t@wo}DI85dvv%QdlodmpMDt;JqB_9!4s}czbw{@wzPneGj|E>2avl_BP7uc@3Ev z7Lmvl+sL7ehD_W-TkNZgkXXiGWY~kg5Y`O*c)KyY<+L9NQ6{___smx=6HOYf3+Y-< zMyB;HUmf%@=wO8;8|uQ{O0kb*oC*!HhCcn(GSK`U-DLi{SXor|7c=+xBMiY!Oi5I@ z47+Us2+oSwML&K}hHK7#+O08@WPRMy1cS;~x6Hig_6%X`rn_h0o0AYa+ zeOn|s@$njQOzcwJtrn2IVQQcblk1EJArv#z0Mm8;J#IaVrIu8#p-W|&nH<&+v07fZ zUT_4tww5pqIz-SjW&FF@9}B45vr0WJ>-x)s->gT6cBIX95xK(-=w4!uH`?Bl0-yPc zoiB^x#t`n7Jrs_&Lz1c24CS3u6C>3^tRh(kdKw}&r};O{EfKEVN-nJTP=@}`_#P`2 zMfPp!sn@3y=@7ycYaA3UNrSH0l@&4;iga%4$oHlhE54C+(WnK)t8~izaNk|fC$kK) zqp3_88>^Dm#EovVcbdPIEld=Z$1}8Fx?1H3M8rKth@h;CHOb8mIoJOJv^Z>jn32R< z@!?0c<@TpM@$)q!2~^U-ax<7s95I(IBs#OkSFCG}1vsK12;U&0!791WhJr5&#^szQ zowFw0oHGrR1z|?(`?>2Vd1}!6)A0WM!&I6V*vDT#n~OhNDf`EErEC!f2JqvF zVTpfig6mPMw9+q@keiNo#t+N@DAlM1g90|^(DrmB$FHgl^fH!`M?k%O73B~5Ts5?v zbvTfiJYxd{m1a?GFtpHT@f|B%dqf67NKjOQHAg)C>=eC($*OU=J%(0KeS2naq^TU$ zk!2Yo52z4=L0){DRZj+Ct!fjG^cXuEf%@GidGm-u%hn9}W$S zWmhuG`r!{r&<3;vO^w7j1PijX6 zGE+gQ13z~10Aea;Lc6Usz}z*~vlL7Sa!t{F;`F?R&(% zxL{#L!5Jl&aBa@=Ag21&267l;WM3i_(i!whJkN_D!wCzpGt044tB}S@@>Hu~lIRnP zC%yG7t~(Ad&jqsR8*OgCRL(7W%-ypa8k+vCiu+xg*$hjCC7oE*Zp>vE6d!0#ivEPW zgUAg|jWR`8!1Xrl6v}HMC6}`&$I6$K7-rMUm-6?K#G`9obFgAr1X|2waNutm z`~!|X^g0whDbj1Qx;xw4m0#Oi)+PK@7_1wx5~Uva03m*gF7@-jImTVZ=|jqji?;c< zrTERU;#}mowH4Z6pGxWbyM)WyCB-m+Xe z{C)1w8r5*LF(nS-8A<2AkhJb!1dDt}^ZfC+_};x4mD1wLos0T~wV;-os?fGO#hYf& zRDGx?xsGb=2Dwyz^wQq@#&vgq?*RRyTh8Mgz8jvPtM6zm6Qv@ zy5=Q=+)61!_Z-$F-lcrmU=0aGv-tEy8nWZ7%F2f(@k;>~2Tptrap&i(RtHur7;Dto z3uAVbPCk&zee7i@rHSG!^E~T4QE?p8&*ji|>*eR?zS-f~)_r%~(-w+USNPwR$jXSr8 zmaCQ@HHf)^D1V=H7;8^oPWnmemxQ^z8PO*eVFwne0y0MdG!uJ9W029nNP!v$v>*zz zU2JamL8BAL<~y9iIXClWS|@s1Fk3a`-1;onG$!l1M?j%7-~4gyRY|9fC(#Che&JFr zMLU7}G{!|g=y_bd=)_Zr#{>ejR1{%~Df z;Q9>?=lHbPxq@J6ABv-=z@x((N>P-N-EpOuOY6vb5*9`GuZ*GSSpI96jgMBxUFf!e$slq>wOu-FlT(1d(+2F_1C*!t*C4|{fb?H^4 z^F-gU;XQ)Pk8d%KT|-WM?D+U7!Wgn9S**m#l58gQZB1kZ1;3t;0~eEv8%YmZCr;T& z$S1Xqi^z-0>bL%MkKwcp!A6#r>xr7v{NJn!V|qML(l^B)Yy-JzJPrba#Z;vagqaGw zFY7#JlkV}SE`oM-qBuzcyL^y1iPFK*m~^~sEYCs%7eYy}8t+~0VTLbSBsz~(Jg~E5 zIhj(OXkD+NA1sH>8&}*)&LtLS$ksz#wbfr$$|p5J`;9(}B2-2TxE2d8(G<{0y(t7+ zSKHHY)_GVUq2DF7hnRKjOUO_y^-ZqgnzYG|Xs4%e{hnH{k-musJ3Dex_N+Nh0=h6RCvVWUG)xl+qD z7fNj@no;zkbN1j^yr(vHjQ>ncO?{iqLd`U)7i^1lJe)mz)rqJeIrOQkC|d-8R_j3K ziiqNwuJlqYYmw!W2g(Dfr4gX)dO-Q!tPZp3^c2Jl!Daf^goJImS`{WU>6~0!nE8z& zJCiVIluHkTk8=m`43dn`or!^e=>zNAmNY-@yzM{%pFjn6BgSTpiAmu6eKkY=I5-qd z?4uXSrDY#5Wev#kxVL9xn z_mpU|K=(OZwTJ2NJ1CfBTffn}Sx$&);}VUfpPmgT%6_T4ykwVeh<&$%xHp-CL#2b% zUM)MrL{;5LA3BXu7cN%xuX@J9LfGitxW{7#1|HtY^x?pHk_42rdubE^qf*kai zPP)l220K4072w#w*Kav-TF(?`kC|{vDzy@+XRw%P6YKDWA!wojRvjO>oHk4Z6+4L~Z6LO)=jEm<-H{kDe{==>i@>!s!wf zZ{c7bSe)6q5DX8nPPMH+G_(f}ChQh<%*1>9)m!!HuZ)rA!N`rGR#uzbmb}M#*%?=f z)sp|aVsF3d>+HMpLNRw*&_A{aL&x*Go_2XRj_B2ahLo1XP{DJ!y-CZ9AeV4Xpq=tw zf9A*RhZ?~new!QQy7>NMway1XZN>S7=F;?d4@xcIyI|Xd|94;`1H`U`H7WG>Ex`nI zT%jhq(FUS%;?tJy9>0@QeffsvZzWxIDL%Px{mYiLcYz%2l?LSTE`v;XP`0Xks_z$~ zdI!h65uzOhhpPhB#EstF#10(u_|3yRlDnaT_-gcSMNJ37BV{S+rvc<{T5wzivY$VC z0cvbo{@vx5R(%G)L4bd5wgtWkdg6<3VP`vONq&NA`vFs&3TWobFo&mwhlCbqLfA?e zn(g^b*E}y*M~^I^Mq!Yb6Z`-~-QqoM%*r9ewr)mydu?xnH@er@Xawn;CsK)>lvrRS zCDhyp{JBRi9fRHpdod%4XFl0lk^^i(io)%nV~&&tWgz<eXJx_O`*-|E6 zqZjO;Z(7J{i8@5QdVu#}&{HynbCqFP=e_)wJvuisTlu9M05+Jy*z|1^A5KS^z{-7j zODuKTQT5+d7|mC~(H<%qW9F#%^MFn3%&JxXmDz$ zrc>z#cg}@oXndWVi;IEiIqTXFC-5~=JZQ%1=M?n&6>Txiu}CMw&=v3-db(yk3 zLxdP>gjq7(P^eX$Kku=^X-XR;+1@j!LhDYW0`#z%f z&1XTM43z~h@&v!xZc5s~Tx=no@st zpq%G%nP=ULi+%#ToyJ3Ujv#t9;kE|uNj^up7fy2Ypw$UZ zH!v9B`Z)46T-L%6bev}-yT)iIS|gNNoWhAYzM2`5DRVv*!CUk}T%%pqG_C7g@!HMX zvK03B7r-auZTP>!WF zg&?pX%EJ5+R40^tk|4KVkXk#6Z`rZ==QF;S+{?Shkjcm~Q>uYF{^0DoeY=-`q@37! z&YS5!+rHa2R8#!f326mS?E1zUoOwwpueTNKf^35V!d{En4w<)ui_^Ls)r4B$Av2Wt z3%DQBeK$zfgp9eu%cwaQTMyh0C9v* zFIPbg`3R9`&>qsbcg2gJkZAV=!zqbuQT&15w=?$g<%~&gNt}k!f43x-bt!H4nXb(K zIYrh;mi>#^PP^)lyNVN9s}wl=3*|VP5}t+qDK*-^os)pll5X}Y2E47;gLTzby{1La zaCf>czc>N7(bb1htp`8K3@_5`NgVGlq|8NJzBL{giV}4JQ9B}BVkWgJ$ejq8-dM$$ z{>tY;){{z{L@e|w6NEEn15wL6g!G0U!;Q2D)>P|O+#*GW0NBJL0g}|N6tLmMjmUHF z?rNr7T>SScW2+)7I3jaBH#66PHj~_=Ip-7YD|qxAB2$_hi+><-&7W zDE;8@a0@Vq;gUqiHQt^pt_X@|ah4A17j_&gdEkOi7dok!ssHSN980h62bh>c{KA}4 zszrOLQau!-(hl>7D`nJhiw*R4jZk4q4*xOtIm$~evg7th#0R(~f{Vdhqv*c=s4Cq) z;DS0&Ui7*?iA*YMl4FAX$Q^_PdAgEosx8`qN83-DC*xly*e}|Z>CexRK!FymuqhC3 z#NITb2Rgg$*_5@l%7ttE);Wr+KE*o76@#NeGVw0>+f4&B{Tq6FZ zJkB{c6eiCom}Jp9K_8{Qt1DrPe;N53FqoHRnl$RuC_58SX${4hRWA~{r1-($0KMR$~NSXkpRLL0fAO>+D zHWkj+4bmQ#%ers?FU`eK47LeWfanguA=<7_K+bs~QpScxFCd+Xav(Ozgx*f2D< zJ5x%8CKGMdvGY=MGog8+KUT!G06IX$zv3=EH-68|_Udn(Ou$Bv2Szw^BXj(g5-98P zyug!aYGL|~OJkYdYY7BxV0JGDE)Mm_&L>ZHQ_mtFW*9~2XcbY#k6!qvv=2Ecm`b=C z2RsU}s_KhsP}t!u%{?L4xP#$kOSmzX&tU= zweBHXC=1Q6mg~uDEEhxnHJ5q#&n{vh)276hr*QW{$-z40Ra$AbD>2v()UilTACjAY z$xVpv2=g>T{q^RfE@5NlQ0X@V^Fav*C85Rm()rKog$q%^7ybL<)2#aKfIOzh)l1Do zrRdZxI<)qJ&CB6d=)jg5cL*^!F?K&Gn*fYK+Dbb-cL^t&DcVowu(3xxL#An#*m&720h8> zLDh!1(fo$L?AdKg!$GL=?2^sj2t>Eww{Gs22Xv*V(#g+xU1-cs{iA0eKn{HBKd1=4 z{PAyUHKMN7s(3p&R(}vEXgfyB;pKSojoPqel79~e0vHa$xzTAg@JmMrzNiSygSt_6<3xCL+hs~%wIi|3^mUU)- z%u%E28TI<(J#)I$nW>){f(49E8D6*TFSn|Q4js!H#0`7QQYrSs$1Ao74n7EaSv!2v}&7g9nA_q$5op!56xTT-zt#d z9%?@a>qD>?$6S1W$?O@r9(QrS&tbzg%{RkH^#0b@E?{<{(@OemiSa@}0S2AJBt|^l zddydv&*E5&M5}?_Hm7USbEbP~_*vx`$QuxFbc&D}k5k5S`YRYPb;A4!N*PM99X4fM zssKux%Ac@iy!f{5(zAIN2PDYW-3{(l+93sWGnRyujD8e~{RMmI>0=-Y{yPVbj z%TN};92^Z|K*sX8G=(wwwN5L*wca8vg^MaskhF+r+H>%y)S*;LeV1(I8l=)m;6=E= z1CA@sVMfu%o|n|igP48(xA`M$Zb_p%sLPTN=^gB@l>6u~ndUR*HF(d`)DYC^gx<%Ra;B=Eo>E-fy*BppkqK$hpv z;7f)StDWH+j0`V|9xu<$npHAx9B>OZcBp0MkykjEZ8E5nr9lRLJfpMQ{c3UBD*}o< zhsvX}{Hcl^S5ck0e~`-_GR#aANoWIHCP?*8@j31pEeiU?Kzj$!%N>TAGw~gReKFF@ zJ56FqL(SZI*-CAqDg405AmxOT5X>6U;01{Ycaxx~DO;LbMI$_N=j1+pOZK4LDaL&! zn`zA6^GNpEaaXkMWHx;%JGuT({b)0{W$L_9p3=y&yqk|PJoL#ybWC!(@Kc(h4 z(oVt5vSnmvWT4vIKwIfRSSB^m=r8;LmkMK`Q1!32Xd}&D_9$4%wL2>?PMy$%EbF`8 zQ79;NRC16H|JQwYiGihWN5@afW>uV?rvVfv=QWNxVpn7omrNPNY_HVk?zeW`)$GH2 zPz0VB%j|xnbM+0Uxz!OI{bbya3V5KTB~jU3MQ1t?P^*2tFDv;#ppRS8$l*HP_#+jY zl@&1H;ni0VIBT!rnL+|yh4@^r{Doy;)8VxwQ^`QFGzgm30YjJm%tr88k#kur1Aq+& zS`lByIiub7Fiq%|02p0er;Kk90Pty$Ak7&s{Qlsf>bR}8+8}|LV~wXbai>X-bK8^1 z09b_V!^7ZHT->NiWuWR#Hg{xNWvKBF{o_D07?w@nG_|XFD$f>1Ps`6U3sv*)9_tmy zBhE*T&>;$sc=2-$5T=3TH?szf&78|!WP443oK`_@z|sip{KLt-OLy`y$m zhBjZ!KwoekWpuMLM?kNqyQ}DQAq;mK10f{O@z;7xdChq zNdfr4rB^v`F@OEw$WDrmcA6a~HL-jsj?$S0hcKgfs8205mH2sV$}RK}sB?`iw)N5^ zSWyeV<1h5;VwawWj=)-al}~rLHGC_Di4r!f!HU82#6R>HhFx4cq`*m|6R^|upQMuW zm*%|>Ol@7wt3z9hb1OWQ9oza~&GW~bA^H%R29%XblKCV{ zpN0pGio+6qvLMUqF1qD~og|y#!?Q>Fcd<@sGE_*3CQjFwpmA7wJfT`?)N;>)SCRMp9F4A84eE3Zz4W=RB4GjDFapM8XD;ORHisUef+*vj5E+ z10I}nKe&R|!1v>KD`?pflVLdPDm)Je<41jkMmU9 zk>KMAcwG4j=vduekyP#@Ly{@s)a(Rw876q>3?8pkkPpV-$NQBxk=Lg_lYs-ZZ$^L` zU)th@!1BAaf=~D5a4L}E8 zt1quE4}Gp1*Zm2!5b>fwC2&HQUOk&DS1>%yrRuQ?Mb5HZi%P}30MAm1zgCR!>N?9U za%*1P{I4MS#{>tqDV@E_7`x%P#*jaKI!q}<&xjBA8_rTSyZK2bAsG)LZ1(ttu|+CA z&)fN#PuLyM&OEYk@_THGmzAviM^9-Q_}5d^@TiNkxp7+el0e3AcMA#S>es8(%|l zM|T<}2XIcKh>F_4eyd7$A?Fu3!9}@$!VYx`D$pKF3PTgaq=JIF8wNwZoS zP?IZUW0d(T{=qX()RJ5aK*a9sz;bhx6M=qB$P-v!}jjRD4= z8k5rREjz7)iv4E#;A02+jJQCgWyHLij@C3zz`3iZ&KPlXi`KM5?YUsI8eAS*e_k|p zguZnM7W|+rBV_p6v!7Epk2q_YEy0?47%)kadumyxO@PY`fs@)F5*b=@d$PuerYKt} zqG%w&8xZqo1br2OIxheUcA_oOmO`y8G_yy z_+hW^FhRNQ5<&&+5`@Eo5#d<6abhh9)gK%$OgF!V#NH;pT(5JHn^oqT#t-*(M$Yap zik#_PJPL{xPL9XMnVV8zuKx^@ zS5Y}*nU?N?O^L`85Bj(2ivsyoR3?G1SAVF zepzcZaBY~t)A~rhQ;hW1Y&pmlI>kF0ig89PPd(>jw$S8@-c2?lK;wp_g!q-3*EGl# z6_B^%sXWD<9AgH7#fJN6bic2_@=qa8Kw3-A@DTOu=joZS4#OvxO1sraQvg{9-X%Vv zXp~c9lV^NCDldEO4d3(UL_bwG#%l6o7G-MiAqVV03v|`k(D`pj!(nJ7dov_q_>U`96SaIU-@}bJGq`HSBJrT z%veKt{6L%9HPb79{F@`uj-Q~afq!VSt&Bj^>>G%8klcjBv~&WjRq-j56Dc&pioLiU z8Sy(l7nS)^R;!)pe-A#OO2-+Z=4_XDG4Ut%e)^-C9F>}*H2~WRi?&Oy*LVQf@q-`1 zd}(gWMoW`!w-3cwthnW;61lpRaJXV-3Y}YC3@|2_KB>3rDmWZ(VBkozyAxfT#W3!^ zX433kb>5_m-5oBG#wUgmSx6`fAO}WLR&Tb>qs6j79Ot7<^xrq`o2_ z;zd81U*0(-P=&Eu|NfSnJdRrB=0*VFIIK;i4?LP4)D5W^8KuLNnJ&geY~n}8Kx$dp zm`BZm#Q{n=-NM3QqOJf~4NLQz-j1C`pcb3?i8n-3^5H4w1Net=JLJl26DWLeaZbwE zfV4C2CF3)-_Ku?Rt>RsukZq8n-Ku8B---@5A-6(|HO-Jtp0xYYj@-MM8TblmyJ@y3 zLQxqH$@eDV4&%GJ@ocLESY7BytBdfAj{ueZ0*8ZF4wfb$IFg>l4{^gY#2&7>g;9ti9zM&j)-hgnqtq!FMf89* z*btEuczSuS4jl6kbb7^b#g$#(LbtgSg(n(>6c4FRF%UG4J%}(N>?dIrWwG5g>7RGT zC7S9%Ie|kf^eTS3-gj=3%{?S+O5-nFm>v3(aj;VJ64~S~>A!O)ik4NFaum;+l-<*L z{VL)cQfy{P zNh^ZdiK;q&2GncFB!m+1Fx!CVN-*J|#%AqdCBZlV(1^7ecVrJh`(0LyvBNWn=ou(u zRBi@~{=-AwI!ht$W-t|s6k&((IR2Tf&O_DRrS!xiiUEpZV>~PYlKV*t9?OLSosL2G zpO+rAG}|6x8T%xa)W|0ak9ok3j;ZOnbu6{BlQ_F7gkY0^^k%-EKXP8ucLzvUASmr4 zfC#86(DG>9ea!Tku%?7nq;}I~|ED+pD@c>bcp77IltW}W zeKcFi0nqLLPUU7uP-Js}X{vuypoI&Z9r^Uunc%MzItR(ni3S8#^%Cm*bn zodpVaT>27RGU9<#Ol#O9P=O!uv%pM<+yz29KE=Xin`zfyL}olI!ii%_ql1wU(P8=a zq+bV(2M_;E27l2t`j}yhdMH#>SS@*1V|0f&$}*t=B)^B2kCMwsS~{1EUjg&i4!9%Vv$8Zh^(+VGw*Nia)h+N<{kOoA+m-#t z5Rei(!t&%*2`H@l@a@wDJ=Y4U33{>INr*F&RXW1X4FJ9{nQE~b_G`7N<6Q)j3zY;k zF{nMLdRPGB1H_6c8CT-@QX%}S&#T>osUGy4wF?Rq46hX^UU?6y$7#K!x>_508 z45(nxmKiwLnkT`!7S&MZ$vzp!>OcY{!#soZN}Ul~uRt@8V0M+7s2aT%OO>nN%-lDO zx1&EA&DZ908mcck#MM$wle}iZObHu-Y#-!kvZHIhe@5&9DEYMY!SEm&;ALvY-~OUe zc;eIOE?0M0J1SlmK$ws?I%c#H2wI1GuYKbUY_WzD!h6`8pYT&# zmy6iJz1@AaVi+~et_qhifITqZ|1q3E)v@(2E06ztb^L`!pLX;SBBF;Bjz+t}8*|UF z{N}No0M_^7z9Q;fg84NOlG>kjMqQY&m-3<%J)Hh&h>x@}8Wl>O!+9P_+&0rzAPbff zpi5!RCBl;Z&2lLHldh^{$oXQ>^S0Sd7EfImf_%6!t{bEO$0-U&4Yi@JYih%f4v_8$Nx=I4G zYHrJ9K8!tX5W3>ijM@HTawdQV&)X;}?mWcNG@#= zLMmhCQr9H~!t?WF9(c}TN=fqQKH^sQw=Z|=Cv zQtR*DDha0q7UQarN}VS!AjZV=8_ti^rsCKi>Sjh`K(!c$f5iOwyEJe5d})yQ)(k zdAOdR?+E`WN>Hrwx5m~Kb?*swz!E$PUzvj zHKfY*YZGmYe5}MPiaMf|xhBgJK#&Y_Ox(P_ZHrLKag!}+2`JXz(~lkTX^ktQOaW5r zA5ip;er9vsn7Z{uqZa@0<{QWgue!GnlE&`Es0U3d*?>lZNQ-YjgK^w`NW}Y3OpFsJ zBMfKl3{NYUx^d;!VVa~P!|Ifazt7mv%V5phv07_tcH*y5r?j+NnR8yhxH3|p?LoHn z#pDTp$gm9zTbNLnvZL$&6%5=M74bA~ZTafnTx7!kZE-zj{~MVju)HIYT|p$ zm{S^SZHlPx^$B29!BqY*n4juCP)f)tqEf=>a9Pal_;BHxl~!;%2NUw4oP?3vBosgo zP}C}w=h^Z)%ln$qE3Fs4Gd!N`O`J8V$~{@#_zErf9(O^CcK~BkO@A*IeX>vk-`Yp& zl{`SLe96rW$pS}&G*S5~=wr;amB8cmfG-J=*N0;(NWwDk00j@Aoe(4aGi@TgKJ(aP zv}-p=@Bm`I0q0wejP3VTl7(Sbt&>ddzyH^1hrg#vZWOC3rG0b7_>U*8;Vnb(<>~9S z^kuq%O~nSQsJLfvk%_MO=$kWod3sQ0T~`G8n@S_vr0${V!0xc9C4y|OVTasn8g{U} z7-FU$Elt){@zqX{59-k+q(`vW4Dmp7G&&-TURSFqZz9R5QWsZ&8P!DV5CS{erIb-s zNK?b+2JXZ6SF(+CM9+0^MT4?7HmL8g1{o2r3C{&7ttaa*eb~AwoEM)yYb*$-jaaO3 zAwTQ$m$=xbFGB8`t)&FB_4_~HvSa(f`(X-mOKjD2%_b{B6rc&;em){=P|k=S5g)}l z;yrq<@f!IhzuYT-knNG!1&#itHXKy@QwU}5ck$fPCv$RX$ZQaPb%>GkA6`ra zWX2(_9p7rAO63RVcWOr5xKyoG+XDO^Fyr5VnVnNE-f0YYNrrhaZ9^} z07>s>tj6m6>#&gKt=Bn3`Ers2s#Lj^ls&VGz~z|cI}ufpZj=?CQa<$Fy3*G4%_y^| zA4sP}!ejxK!={yY5$yJMxLt~v2U;fn!C>!tiHs%(ZDJuJZ&^hTT%XQ#`PyY}A` zft+*D*V$K2pBuu&ire6RNZU{jd^}MJceKiJ&GrJ+KBZR%A&SxZQavj|ux>c_0buvR z>TSf@&pABrlv|Wt6$H`ObZAs}+G1WS(6K%^>~77rOt=v=)B1WZeCTs_E4h0hn^_%} zI8NG0f|irlzX2jkkwBs!`}nUT+-ztGs_=mzx2`eN>JdfYF&Pt|8mNZxGtN12`59Cx zGAX#s*KBNJQls4gN41s!rX@Cf3G-D_gKi0(t>5jvY~Voe6|IeY6_npWyfkoM6 zx_#eaLl9`(0;zU@WF{9znj_Mx4O8w%V(N@_^U zMsE9Z@4iUOzz>L{pZ+)x8GOU;%eE+jp--U|`REelXYoXy>X9RVt7F);C*yE7R}?&* zbLO<{JC%F#5Tp!D0wk*jAfp(V5JQ=nNF$MWpuOG^a-aW{t7cpf`5kq_vfB)a-GNmw zdaOt3SQZz+JtwTOEI%hzCQ7y`0dM53RrSP8)$+~Hl_Q731r}%ND2^@1`uUj}*$yp1 z8Yd-ST@wpB&HydwxgJq$r_I>}{*w~%-krG81&OP&;p|%R`JvQUGBN?k$X??S(L0}! z5v%e`q zMWu%et2u*P8B-S{jY+hjkZk;Qk?JBnLzrxjH0r+%)B~r;^H!z`E7Lm8iA;b}N={4pu+=|n2)N4DRXvh`Ammt8Tdg}GLo zJUNP5qu@(86`LPVcOJak_AC}g+kK7xaXpv_8%TsaDa*(IP^LaZMw;`DgU9W@VC8?T z5Y6Uk^ki;TbjI6NWQF*@3Z{%uyq|wBhd~&ZJE+!>RsQ8a<)4i8mp`4ow=uE>NG2Eh9XWTMxFXO{1T+*|g7f(#tyq?8=_GjK|_3 z%7{6gqun)qgH$9^W+qwKgPfh4JtOsdVwGn-2Fo+8RspHe{>;IJbyF9Jj?>tc zAahQm$KDjLXMd*PpROJt-XA57vB- zG%csOPxVRi;V8qdzYw6{$k0Gxg?%1ys!#E_n$UoCA5bDhtz=71S zSA-Hg)Bd$$W!dP_aby*@_g2G0uc+~JgP<#qg6OcKts~=!7{1MjD>@2KxnW zWrjI)bamQID4)p zqE(W#1mLnuhm5X{nvz!`Fl?#j+t;C-z+P`w7FiyB#LpGVd5gl!p;AbTGwb`w%mf5V zh;JIs=>BGz5SG4RzL+(HR@qeutmpVE;9~+C)xVjFyG$2!UZfK+v$iC&J6945IXEZC zAQIK^M-`AAj#Zw`%xuY{yIsM@*9oyni0;RgUY3TGSljo|`jtA6=7=Vyf5Y@j__&wD z1~fV?%{LKdDl>&OPcOq`(AaN<2;3S=5bq6s;V;YZ#O3ATy5O+T z(=)ue5myuyIlx$8lPk2M8j&s)Z%tw4VSJQrg{Zy?d%Pl99)_wR}lAx zU-aj@YpN|y2K@YP$ag$*>}k~=g5(lO<27b)QHb*GG5+QOs3DZ!g+{dEYSIuZR%AL0 z|J5{tCgNq7u@JO=*L&&7&nN~}Je=YR0hbzB99553`qfV% z$NYlU{0WUaQpiT-D{yjm&aW&4>4;B8>1M!x*oT#u7&4dY8MPCib^?8Ae4N_5-Oq=O zQsWoT2uI1|6EkI z&y*Uq^|BIA!XQRBD(2G%`FL|mJ7NS5JADr{LU)!@FoDmIfNvM}oJTMNp<;gZg+|+r z?0X;-h@=0=_{8A&7o`Vc82&LYE+f3YlKime%1^);DcY9uQ~8hbx7&JtB zjkac(+st1}VPrV75)DRMHP!&GdDm-xD#qth+{6|*WGOK1KBVZf-Sb$nU(9={fHCYL zX?>Egx+^LVdY{1uO4jg6KbQCN7vmbs7`94JmFvDy{|MlHSL^9rlPKiF?vchOsTm(yA*vk+h#ikXm5!%aF>T zu(?z*#G*_u=V1!YyRSvRSG);zJ#y;#?~q0_zXTq$yEY7#XT~(XtFMcEw*fU93}W9` zmt)S!GJu?lhBJDxv&+vpJu-I*5UKKxLNjI6D6g{mx2@$~MD;=gUbFH^)(m-_!xLvi zpJGtTms9#^)rxK~$7ozMLD!moB5>h%=}lBRm1?Tll>f2|!Aj6~$8v-d7f4R#$S8>! z7(i2H|2nl7Wc81b;%?*KuMBRLJ&fNQd!9wWE-&$2dUgK9gM@UaB*?Tz@(~MuFzdE> z@{1)cug*iI+6A%(E>V%}wNa_1WeCs!|C})zEXC*9G>}8^o_PHD{)!sZd0D-tzsZT5 zb;QQU`ng~W$`Bc?Bt88}mD675X_n;7$r~#V9qj|Cv2Q$qhN^VhHxUxu@i4Td421IQ==XJip`@O$k zytfG*_Y{i{cE3a6x$NHvVF98f-Hl!F9@uSeFmGe7#j3}^RezD9qs~IPZEkp zp#}5;9&~hhaB@o)zJw{DvE2dA5?NjL#*mWZzHe5_8Gg283rFDU6<|k0PQy(wQy+Of z2NkB#Jac)Pg4!m@fP5sjI_pQrdC*jMj0b0_FM@ndsojaHvnS!o5knd>3r|nN{y!7p zipTJ9pTJwXJL053#{~v|l5LMV>4w6a9YZ#IBwk3eMf=Hat26mGJVLAl59rkVuW_9V z*(KP`m=?Wyikzlh+u$(6(u!cb4}>0krfs@XiVD#jN5-B`G=gut^TgvpF|#X;&PxG$ zcgp#=9hX5-zP9g4ocAT`9tuRKfDtBcF|0X?efA^JW!lD4|M z22Whjp+eSDVNJ)+0tNDLHTZb2U0wHnfIyGnvma5v#tZgU>Hui)=&~P9<6skUowmI$ zJGf01id=Hk^C2w~!>tT&)^p&OBG`=yqfpZektnL-%LX-$GB_Q2wRd22)9&WGE3L%+ zD-&oT2B4bG1-HE3-sP2?^FC>5{o39g)q0Qo<6pk7DjJr3RBF5M`wdgl6$ZHE+&VFo zvmpQYl=E=@w{M)dZD3vKH}=`5y>f5gY1aLWElL_Y7}gx= zpv-Rc=D=!G2fsCjq7W_lsOTbjQS!jIc-eR`VB{>y9b^#Hm8;b+x2d2-eF8}byuA)! zS2A}HZdMNK5h66R$}*@Uv{t?{YVSCbE%AU=IG@=v!J zv*Y-ICciGTN>$uy7ckPxfbz`q#JII-Q&xMFV=^*B+%P&`q-LtGg$(o<1JFh9*cNUsob=th3?`M8Uu)NL60 z!d}W8#6sGP;gZWSJlru8_)I08lFg87)mhmNZuCHxx>#z}hc<9EdB+E~vU4U3(JRR!A zF3&zd_qP}VD0uVinz>dTX)K0K%>%ls#FqSljXLsTLY3fXfhOpr)WM1{m`pHWQ z=oPb`461VPI#YP#>h52?%ooh0_eqUS*{b-18?On0#&@C~fkzAw2|iRvaAb~!~{-C^pEEnuPL5ZWNR@jUPrc~l)&>ZDMIgqC)>h83`XhAZO}Q% zQsn5#6Ujv%fmM8%(yaa0tdP~)Pr)P`@e*79THj-cGms?Q9REaNZxO%dF{$-G9vwIr zgu_fEFV|`OtC)$+BGZP=Jk(WHe*+r~Va8bE_CfU`B{U2*9d;PVkbl@pktljz?Y?0J zQl5jt{kL)GhoJ#zV`PB_bO9u3>^IjECyCznzSE082VVPGjxi_Xi@Act1pujUB0(S` z;#Giq>Y__(oCl0k?&M`>y!ndM2rp3P1N#h0PI@^U7y&vdXd5Xj_&d*{h=e1kWuj9^ zYJr`L+Caj7eD9Jx%Hq5~%NlEz1OPbe7HVsysr(7T=)ci;9I5#{I5awb!KBSpLo!SXonFDkBZ?A@1@h_4|jjUmmuG331bDA z!E)wf@fz$Vis}K04d7cTT#|iDA;F@njyyoCA5{ zN;RW`z3}E``^3&_jnA+~#_O4L+xg;c@63$2JQDJ�tvQbU#3Y<5)0s@*Mi1k3PPL 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
      !-REbqF!=I1EM-#3ZX@k@pXo5Tz6V zOwYvsK8{x>mb_ko(#}v)y3`BTvR5|?<~%tR6HrMXItNXD#P%OIV8d7AiX$h47dF@) zN0pB0k?VYe5x$(IMc#-&6T1B%wt|-B%fc8!HXe}Ff`w;?<~#z7fP*lWd%vtuKWh)0 zMS8$o8)SZJvt=bX>IH@U;fa6iWI?fPr}P{$Ux;7RsMKbk;dV5tmd%F-HAqi~cjH-9 zA1WJZPQ;DI8*v#`bDB!T2iV3n8EqqV!}w#@5{#eg{AZf=VdO?`0N#3fY>SXvd408D zkL2$M9S=y=kZq*hSGZHvoWY;Y05xuw!-VMVQaDozB61q}4F(BY)Pq6AV#r_kK8ag9 zA?jo(F!Z%z_L_rpdDn#%WQqN?C<|8(k8oSVa}(5-;mP{yEUbiW#!JShn>F1_wnEPo zEwp5(>KOj%#dwf)B0BDe`;vjoGCZ~*g6G67e9CI#_fx0 zF1F|+{**0o=|~B}{OrJYPu(Y^WY~3VW}}A=;B(Yx*I2?}-{QZCs{(}G=+j)O|NF+r zd3e{%xU-N(aw(9Mwz~NZAweAmONGn!DNn4HpPLO{C^j+VHKu{*>a1+F|3d?+p^xPa zl;uP`5+?}YibzX+;?Hy;d_$n~!PBw0)5!%qLGI6==@xKB(+>>bg34VsyH8ve(y`7Pxb#}-@C1Ldl0 zYoJ%iMpG8l4(kP{%dwpF2L}&Ti@eIlVxUN0Xtg*E354(Y1A|G;RNkw9Ow#RGa&H^9 z0k_);)039>xTJ{BzYcXdcu_p3U=SlZ)wVBcM;Nm)*zgxyDHCgezvn!%9-=YCC~BGh z9WM1tH4jqiYxIIvi*hx#h4CH7^q4w5czsYuMKjQy||_wlts-}1s2>%DC< z9-Uy5BQ&(5SLa*L-Q4hch`-2l$L*- zegqPbI`CQhTAx^JWHcpDM7PeU1w!3DyKr`9iQB6Eji=g4Ty%3~X{aSX12;ab zt`Pl)Ne()l!4~jvd{)jLhd|@`@qYF<bZ(&@_kk?nm{kgOle%k~&k69MVq9SS8*vWiYen0#J9{BhB%bb+)vr`|Zd{?kCKlaU`1#&4qQK%>JY7-N6{>IE!mMFj`<8Dxf{J46LDVi=MDIa__(V8n3mJ! zZKJG61hgUHutZ0;*IdEsV;K8t6iNw_E4dq)JW27d+S3y%xAnQTy_rD3M{uN?$|g_F z`6O0Tkz5EPf!U-Oh{8%no}!`l9Ey~!s_I0GnycSH*zaf>OQ(Gy1Quz633QTIJF-A$ zcF7h7sGjfi=>58k9!U=&9(vH=-e}zXdoKj5CWp}V(Bl~F z?vfgCFcBrm9Lm2%U6UP|6W5C-VW#Wen+zwJS{*GFcK55rX8rays?4lo83LCsq;zUD z5mP%R$DAOLBtKQINBpVV>mWKIX^3Y??>b51Ye%IF0sCaN`%^{7NzEXzg6BkbkjzqG zNZ%K^gjUs*{Yffg`)7@OcXlhjTZNmg6D&+r5#tfAEW|&|kW&#vCifmH)}Z0ak&o3# zw%Mt00~^|dvDw{GzvauFj1wqLEjSF~5<^{N>X>?-wVJ7FFrxKoRg0A|)cN%d!IN^i zcPtw>_kLO=21z?Nd*uK>%b`W1HJx;dXU3fE3h*Gn-5fnuOGtQxB!mXI`hNsLExS#; zZTX7A*5Pjl`QvSqY`rT-?ZcV|MIg^=_>gxfCfW-E&;GW|l$SvT3# z-mNKDA!I$&knC6DW74_{a>_9CN>N&vPYU#O9U{<=i6s-uhZ;$pX-yNT3bEG85tY+X zUFH@*9|`w}6IU+Et;8_ML{22`?j2RfI>rDRh$&~?4fk!Jq)a8#{G#o|D~qQcyO>M2 z$}mus9z7xv9h49s==frcIg7wMC3;^s>9r5L3R}i76Qib!W?X$JW&0nyGnI`PZCB(@ z@cB+`zdjYH10sG;C1_d2vx-$^$27)NkmY49#qlo4&HOD(Ar>UZV^_+ilR8@byCUox4y!1Y6>ds6Ze{%hNtVdf^u30h}B!dnJ~fa4POpH5LQK6Su5m{iGK4eA9qW9N2{%ufxE=sUr2FqJ6TNv ztr=oa?tkA~dyNqFYM~Ba<7eVT66zHX%B1*`%TRznnvCG5qyAXw?Sw=pxxB5*h|gYu zWU#7ILpQ#9P=lxZ*lL#J8==S6oMOK6k1BN>Yh3?w8DbZA82>aicyFI>LIHx(I%MDb z7dX2-ZO2!5|oCmI(*^zWc@&g!AQ*_9+9sY zOb_a91sc34QA;Ip<6MJ-4M+9g$3}D8TEQvgf&Gug1Iav_=2+6%>>@8N0}-$~;S!WFpN9SiRVV(%WEYEm?t|ebFvxzbS?p z)rLq@lX?{Je4g)h)yW7)_VN3FaU_bQjVU(4Z#%W9z0}k@1NRO#tx<%|+$DCF`4FS_ zrc_`>J~_JuftNSeC;WbssJS^GAGvv}08m#bgA)qxBpd3geinKU<~t?;S!62*>(XPVfuz< z=bURz!MIqouw6Om^Wf$K@SQCSBEM#4BihlqR^?Dl8OCnaa?!%$%2naH@QgNQwMb=3 zj?Tx|__|@3;pI z{~)Z3P5sve-<+!R)O!gS39eY)KWS6~d1xob>9f9pN(FF4QJr(Sf#y}*HTviV%@-Ct($nbCZpor*2!lVCb==L;k!q0c0;$F?&+%+`Il0~$X)MnSNH1rdyp z!a06>{9Sc}&!_JWVd4pTi5gbML8tran2H{ubO5<$OpXM~#Fks`VEwor>jLzQ+6^-& zqiw}p_t^gZYV@tHOe}%dVBv;6txM?J{gGR{DqU`UtdM1#(lt&Bg!MQwT7u#rkbRDje0K>BIB@1btM{ZDS+l&|;K698M z6HA1CEPYr2EkADuyGDJ|DNFf&#I$JP4{vXLJYf8G5I!{Z15uknDOHm`Rskzb*&i&c z;nF;?X5$R?)+K!&mU}(Vy^FoS(a~Wv#`Exo(Os%W2a@;XKYn!a z=#4|9f4X-~z>oOtgpXWRB9y=x-SQT=QEcjpTSVnj>62HIdc;09^cDRxq3v+xx%Su% zra6{BhfwM`8i_w2SGniVJY}wVwMg&hpwVlZLy`;7AtQ3!`$Wae!<*S$#4zPRA6yiN*>RY5cM9pP&fDw#+%MDiSK7P>?#Wvlp*VwF1^-0Xbx0Fd?e^mg{%F`gYaP7V0)3Eu z+pyAW0`HDJX5$4*hDUvuLb#KiG;FD}X$#Idrj8v)t6$rub)(zB{aBnqJ;!3ht0=K% z=JpdsU%YSWHd0SneO}CQT|wk7o*3;L{}2Mk8zH3)>d?+8gUeS~cp6HsG7u}@mDb$u z$j8v(UjcrgnpE06h@N}AVESSG;89E>Eg`Xwn+A;!gNv2*z6%&dv7$FrsBZ-rrjt&> z06)C?Hme-sD{9hs3F$v+@gT74qPhq%t&hW$8q(%vYvjf$}Cu;mY9BY&`U;@RoW{tE+ns9-9yM_$L+8xF9l% z%1Zt_&I%>ZNT4tGPUkdv(G4dUuH$Hc>w7XyZyCzu)Z zg{~vh!qmP@WS zo+oE^W0d^LvNWlcYN9L4M$9#`JS{yCu!#Y3Iokv>E!P?bQx53T_6PF3P9(nxK$fz; z!J>s6$jqt}m@R%qW)2KZ6pJDglx>y)pDO5E>N_Xv>lonf=&WWSbq8NwIfe+UfHN=qGI#wEXL(;#jE6PVvhaWw!cu zpR1>O@w>?`+s!5h`e2G`(~qt}t+o~aO;W`)*LG_$tk|}nKQ#I`OIeN6$Q#b=$nOh_JGo)cCm`qF&+JRGQkJcb!+#0n=oJy?ytP^EJ1? zly~eNkxcJ2athze!YEo;hSezwH)rK8fuX7TR<#_6r40di)lzkDK5ky6s6Bu7If|L< z-}4#u;pv-4*xX7G9Qo*Bsp%K_5|o#Nl>z@vZ>527e^no~&6=sQG^fN0O2TI$6N z=!o%%+4sGr5BJ&(J9&pgpKty0D{(m|OX~(Ogw-4Ov7a=hVFZFPdpGJn!s_N;Jb;w= zPC|F@={6hzj`zG2aAvC^rKV1zo~fu{o%WMMO9KwbetTAn7#GBRulYr+eYqM)YK+w> z;Y=erN)B6>X-0joCRd*~>;ihl$76H!aPOqwPdhRVGT2Fz%#++UfP0uFhLBiAd_zZm zZ{U^qNw113NEX8blvjIurg?Ut6kVXM?^ z2l6{e8_{#5kF42;o)NZYD88$oAtA^6{(g~is=K`)h@}WHcqBs1cg+C0Tz{P zeS-!r5qgLYCLPE6B?lty z<&OcTA9VuM`}CXaC@9vl2)uMdYMxg|e){_c%^^&sdX2FG+L3l z!)m=rMBEy=lz)s<3Nl%f99`QW>VAPMrix9mbNWaPM~tY22Bf*av6*ou769x!E%33v zAD0U`L(-|hDV##73uD{*RqhjrtD=9uHv>CWDEDhXmb+EqTd7%Ioy2syU)9%P?8j@T z(`{~X81$c++^S8BwVj?>ugsCD&v;{2dxk&7k0dV8g}cyWB*uqWH?3La8B2pvjyZgb z!G31wwvzFb4Y7Ot0%Tr5QxLCEnPijxSJIsZ{Y=lbJ#Z7+pzcZI!owPTr|)B8?w7sp2`GJ_R6Kb*6Z{u9_a?5;cC`9dxA1ewwQQvoRC5kyo4PVdOw2t0Qbe zXf&BEefO)l6@t4$GI5x;Q)S4&hsDgY@**2o0~dcnx9+@? zTnS>uj_AN##w`E8(Mo*N16bzGf>$)Q*-YJ(zM23?O^G&;O|y}?Qh!?Z_RRG$YWosnW@udbH-%u2&neN_50UY5>M zSMwD=F_iJgmgX4m`t@w)rKs-T?OLg1j&oKxYhmCf!T^P;CAAw^bKS+-b9#$7@N6ob zag$XSEbFnN3LFXQ1+iAw9zKiORe&$oM9B)OO5rH9>E^Q6<{c2_d(2s;%pjnXdo$uq ztr(v=;oyRYH>NqD6?Tdr)cc;xRDaiqN%v`&%ffZgisB}LKO@cXWO3ksw|OYazE+1$ zGbaglI-2REI>6DujX19k>^x^8N6R}DZ@BRFHa1P$`!5qvoEsan z{M8DJ#H>HwRVyq-45xl*JN-hTcIz|cT}I8O6oTWaNIa`_j}KHaal5Ybn+%i%5LlNp zg>LKQzGfKqGx$tN*7&T1Y2AyHUQ}VwR`jDR7GTRdR58;?;{2Bow%dW?U6l;)?8$e@ zsE{BRAx#4wk{r6w6*bQ+I5+Z(FJVYBt28BYQq8!+U^V3mUnDiXeDKKXl+AWP3PrJ(eK2MKE;4!;mDoH&NiTa43PcVKRMG?Ze z{!A(|Ar?@cOJG1(d0lC132;DhgfeaFngW&?{7FDJpQ?7FCIuDbbv8J*5X_0t8jM7d zSGh*jy*;eW>*<#>Fy%hk1IhQAPTpx@2zJs%lH>l)kt zWLE?wCo2QeN@(UtmzznKJIh1F>*%@|RO%bTO*{e9yYU;sU@vlnj~}%V4g`|b^pG`s zjVxOE@aY?c9l91ts2E;~=3-+qI;}xUpZ3ej{*9U8rrV<~Zg(P$Yv`oqSd@FCnrY^P zfROwQog;j|V=uKkf{IWFmCY--2=E^#UOfUoz7*VyJVuJkH1&lUXsaf;&r9_y4Rhmi zDF24hF0%~`%1vy)Vi?{ihrInhTc$MHw*~6D&+Wtu;K|h#(>r*IDqJzs=JsJ;Or+}( z7B0{V=HbdmEr2k7etJg+i;XOcK0pPfm8FQ8W}+PFz8%ydtQAeLiAtKFK2N@tZu9$F zDl9>Wh>Ra6aB-I}vm7~~w!QE{3GN@7F7e>+{m1!Og1?zO%C zZL2&ZSi<2s^OB}_wk+&J7R3@~4V$#uvJ3`0Hqr+UAk&ZV~0qP3#L!qLMeTukd&$&(+_tm~Z*ZeQbNF z<8W`|ww)=pydE7ok@Gn06qSc{0#wdHp8I1vY#Ofr(+`gSxjuw$+K=Y#N6$t#b<|}%QXM)ayrb#^gUFPg z%e2@-(VMtKwjY}lpWlmlS8D4x(`-MO112ke+62?G;V9guX^6 z3@{(+?`F+bhvAFjbZ_7~TmJh%?Ik+`O!&}+egT68^@?AW?du5@oFAN)ueIolN>a-$ zmM1xx3=^@?RRu@dsqRX(cwPH#ix{OdBwe3dQdI@56J~l}!Dy)E6`3{Ui&UZYNc%Jl zYg0Jl?R7M0HvmXLx4*iFz`Z7KxhdnjDP+dlL5TbS!~Z@}#4f62P`G1oMpN>>6!TRk z&07pZn${J5A%Jy)1ivWR49Wk^LFP_Z!;zZUkOmo%;$ZKJ2T1#6;Un+X&HBsB@8HME zrwCL%PnX>^T`zFTEhIZ$k3M?w#q^cU59{j?hK@i(V~~@kV7vsyRM+|YA&VLj+|DX* zj+R~G)3BnmOZ)=11g~kKMq$ALDXKz&!R1FlMV1XdA@~~f!%ZQGjPi609h7e(2@uxC zhM@nR4?O=HQ88^SE4@0hzKV|Lb9gaBI50kH^ii)&)r71i2c*n0?1zVn&mAv(fu6xF z$EpOBN~z~TliH#vSvJjlZf}EPmxs(7NuD6!mxb0;aqGqP=@!O@zPsNjyh>w+?&*H1 zKY==A^j70{QVQc&%BX2HhDm_ajXFTue(3L+Sg-vRu&q}pb{PnF=ghmK-pPT~Kxt4+ z`_%7-5+CFMb_0FXy1AneDdjYN%vLECs0pLlzv8#Zlx>zGEX5LaIhL)cwYV{>5T#24 zoD8ij_RCt{dgDO(GlyAI0AzX%sCPqv%*4AVV8aD10L3)4RdW>*HrqbMHRb_pXQJbh{g+8jv6TAR)%J<5WWA;cEBa`~g65lpNpoWn@GmG=@D{gQVC{F#tVNR~ zKlCZD%7@Kr>7ySREDKN!nUJk-G~UHxHEkV5XRs~NJap%FYVb1TN*}<{F4o%Ev2jT^ ztv{vpwI~s39io%NPmo!h$*_+?Hebye^v&?g?ThBgV-5f})jXaf;wW%9OM-((w)nNnNMySZTzknI5ZmZgO znFo2xaKZLi__w$BUTy|%7dlt+YU%uU88C|eBG5)PPdMmit*;8@@vX& zLhogF&xt7o1fkws>+@tZRkbP5bW>vuXR}-o=1lsCFNv#j|ETx%x|F2j1N$FR^)6rN zvfkBvz6Z%^T5FEW0C5Bl=%%s@Uj4~1QzP4UCX=R4HiZQzi3eSP{7_u8yu6w9+6A^m zJDwQYM_}NEy-KEWg4?ciqSrH(H#km>ZrTDmp1~6$V#{d0-zk*sc_%qfZq5C5mv-%H zoJ#tbI)#-Yc_ErU>#c*?X5j3!euW9~-}2P0thf$j*<94zZMd zsT=+OvQCgKLCg?y2k z8!Jo%6Y?)x$YsnK>9r9UX_3X@7tcW>R2vq&I;d9kwCI!4Tht}hq#GCB#sdbNr2Ziz z8g0#{S?TL6OTEsB&?caf`Za34*Yv657@Kw(YwdJWEQn*lc?2(X=!{>omOzW{gv7De z#?IT}tovQG0|uNIaaE@BbK1;EQYX(rMKV2x2Yzk_QwrzSartL)?!+|OkX!9KJThty zVtQn@9a25kpCljdlhG!k$udtHyXNhvA?3l&Hi+IUw-x zpbhl}lpo-Uj8pycB%y(U zXHqs%kMyAfQo2d{cB&yYiIdh9naL|Jm~H`yBaB&vs&*CYwKh6osmRVa%6)sVk|WK6 z$|lMpUGjQoB3k<^i;E zY4t2Kjcgh?{96L#{gsuz^_nYUDNi#-DQ~-%!JTwu&ZsM>Y!sRCma_vdt#fe-V`Fga z=$8Tmmg6dN;U0$NA>#p?G2J!3eeE(II8@YW7N>>nac5qW^S8z-J`{Hl#8Yj_ylYBC zdl5eN+(SGUh2wwajR;n1(T!Zmg@lGjCGRn!cI#D3{O-t?Aabt{g1#g#qz0L>!N*yF zjx9p7mlT;A07|7ELP69^1)teRb1?UITkRAv)>YT=o;$5)_~SR)kY_l836$Pw^2*op zpCHht-&&~cgx+oK^{2CYp8_8)RwFr5&ws`HMa9x{LR1Z+qkaM|KhhSn4Old7@+kOt z_P4AaMXpL{mbt=pofBT%oj!3!Fu1H7&d}81#GpTX*t#k`%Ij@W;<#(ktMK&NvIyn{B z_=xXcY|y1$l@;BE_BwdT*~4%=Nm5I~ExU-nc3k|o|FU!!lsBcWlp3wVq zBC)lbD*7Qio7g9Y{EhW+k$GMCeGEl5QW<4gEy#BOZ^2@JIkq!9lsS6>G-WnsfQOL|s)js>A@&pXUrEd zv8;g>EM6La>W!+bZ@}d+y2P&y5JpS;V zi9&93ED|=3Rj+!8p51Zh2YUOlkS;tXjV%>`^l3$;M!vIY zxk?H9;!KQBMVmF?Tvg#xg#F{IjA!yQ(iJNaxwj$=pzix zqZw6V?=Ep=_EFx+2w64IcO!n#IahvpJB#r`i0V~1?KglxC%UZ}8r1EWdM0ZVk!#~& z+Ht4v@f}bThDi{69KOx8)w|_NkpY8BP9?pGF-6R|X&2ogiZY3SHOqRDPHHkD8pZ7k z-Xj~q3I3dAviak~?aG7EBDr8BDnDsqFOCkmkICbK?vl$G>q_Nn&1z6;Bc?(dE~%Ve zhic+(9E&Sm`n_5Er)m}5ycw7NafLY!D{kl)(Q{4N;J zyYtn1&G>7@`^58vrQu`^4FDqr7bvy@A;4r!0||j4W=7zTH@46}uP3=H6)HHkF(|RN zF#&Z4Y)_=10JRDHj4!aFM)H9mK;Vxv2So(J3Rd3;qS4;bflLWBxWZoRN`$Hm3Dgo< zhy#z0|Lv#w(+LEp^9%akZi&d;0HWaQ%?V6bZ9^NNhCqn+JByj(FW?_Ug=7HN2m}&* zjLr%;9tK`IaHIxu$VZ=(+XczrvoHW=1{?E-3s8Fz!0~Tr!S6rNhxFeUPtEVESZDFI zhu#2v0)Al^5S|-l%a0rO&Jo0$EyY=q7jA_FX{vN zbMF2KgtN+g!TJ<&l75udTJA!{)ISh%>@4~r3YblSot?4q{>QA%rC;}tGU(UmxB^5Wb+X)E*? zOu+eVy@VFFHmFAWuPKLP^E=`cw8g7@K>6^LKU2?{@z8KK$2j_pwhoic3pl>|EOyuD>r8ZqImf4b%k4 z?-g$Ew(y;1?d-R+#16XA{@d>6yQ>K2PG9SH;hTs2JpWe_NsuNfu9T65`F9ek5fiin zCf2cTUBSp4xDmwH`8h8T1WO}5;}>3;9UMDT`H{G`>M!@?1 zDFvcUP-9HgO@EwZ8y45I4BgDT=bpX%?}+@8QH!&&b4th46)9a{GXr(Q%E02-mz z)3wbd)NW2*E_;E)kK|j6DR<(W&@Z!>b%*KhZ!)X#DJhGW|5O~m^rDIiC``^1s>g#u z3)4-6B}fC4uN5HSIqY;1a7*A;f+- z$vxyPi4{w=)s58NIQU>uqaFPXAM(?P$)sxI(Dvk`l(ba{kYDoJ>T8}{#K|=$bzG)k z>7z(G%q64ZkuKJn?XF`H2sI^N%}d_N;A#Freo%UP7Z4^>o|!Kg9JurRmBVFKwub<9 z(KY89+^$8fQJr?ClB^3RoKSnjmTtMbe$;wNS8TA_;DpHB$O)i&?#P;?c1z*E2uVDH z5~VN#P7;z%n&53V$0eP?w4~Wjl?`Kdio&CLh9-F6wT4`p>A)fX>Nr}ol%PQJfvS;*YylkLd|ZZGo@kK zm2xcLxhjTSx^UKh*5Ds=GNu?m;r0BaTNWthz2GRBwV=ghHSM_qeke$b^s%M>bi9ea zcJI&(sQTWRpp3SV^saf-M-MHd35J2`xe<*@$a>3uHRvK zew5O`tSxaO1UoIHZTZZRKAOFC)jmD3$U@Ou*m16Tz8mSp4do~PO0YbS%tJ)S6#oE; zG$tkccBS@M@!uJGM4?lGeb9!e_^QeV9opFd`A_rw7EzPFe8+KUr94-7Y_}%~!wFlH zEW$`Y8EF^h!F?vghC@Vg>547U9sU;I`U8DlWISzXcNuS!fKck43+-#$tBw6^2^z*E zXi?*v)Ix61H#&DQtvb~huFgE%iWZboQ_i%+^aWwD2oSm?QdUo&LZnYDMR2ucXZh}+ z8P;tv#$mzh*q5W#gVN>h1JK#bX2q)QS2$d{S>(@G!zi%2Hf^C$(NWwmk?5_MCCXpM znPmJP{Nu61oIOa@3#v|uZ)kaIUFqM~ta&(-Y2US|XVNN-VaYz@SlTRgr1E%3?T8rE znx2!y^pL2oL3o-`(Rgqc&?-NIJ*Y;T@Iv)!-3h2tFWC6DYX-H`Q8ThtCl=MnEB9^C zWJgWgHrh^iiujHs&=u+jwvLx-^_f=lGV6XXJGI|chpOHZB6k>vx5F;Y zRf~ebQ%9KbLadI54K2%pq80#|)!Vf%et(KN!a8EO^hP_<_e5i?UA~)xz;LQ@8!eZ? z-r-nv?e@mphqBwu!+SnH4(C-7bZ}ir_ix=G%-g3R_l;r9We`V+SiR?F&=hZ0j{+}2 ze+o}$56~~H5z4p`q0snaCh)4bK4%#3(5)P1gIzAlA|EaPt~ow0@nI;i%LM%{p_8^e z%Njg&u_#ESe|dpbcq$OJqRvzSCmOn#)i!WJck5dSgP&$)=1QI8VH(&G{P6FTd?xP+? zG2xk6V|MnPhrB&+rj#Q(u2;;$4o@c_4^0l_^bscv8RWmms!o9kGyjUS;YI@A!T5aE zCAhN_+wjhP*<0bik-&aX&ll&E^n4#@9=|{3#5@lcrj9)S{WUw}w_|YWJ)+#xF2ZN! zF&*KccgQG^N3=6yy*r_J64-@jOtB;6H*s0L%S=)t>jsU*(_Nj5>RN>rL%WL0CbmV2 zPE%f(8ej@@wmfzVNFc`3Fm&GZ(nOOo5c#Qw1EShICelQ`=+FygAbLsSC}7vti$uCq zCc#y0kp|A?$Gws{VQIq^M=TF=%SuD(POs5*Eu+o|mK4d}@ubV^20u{f8q8NhhgQPH z)y{nuQfAH6=cAZ+m%b(6dJBcd@LAnA!id)JP2=86xOQthgBnU9sO;Wf%k+!otRe*| zY!Dn>tTXMZb#%_d{VF(YF&nd$>vK9iUq+{@Z^#12hM}bDAUIV|rgG9)F2r(vc51Dd z$Xh(~ytAt|lMd^dg2%gzcXN!U;WJ#(!xTq}5}D-)+z2QdgM?-i_%K%V-Gc14g&GPW zbA=XS=SFkxN{T(0MDZq^jT9F7hbMN(GN`T{G5dVdkamy8sogcL(L`M3S6j87r-92? zfA1`ZvG6CNU7XzvuTP6fuAZ?oS68G24GuG;U&LS8+hc(uM!&vb-NDmvpF?;=_PzHT z0BkJ7Iz1t}+7Ndd{jq&N!Cv`yMR7_z>o#O>q&Bo|=@&%Q$|}27cZWgv<*jk+o@OFx zyoAi#*xtdq0rdKLtMY-UfH?5vkF3LbL$awo)21hl`P0cEQ)r@fo>e5z0EwD~VB1X?>m}H>siYqpsN299LE&B0|XEAf_^~0{PD)fe8`W zG^Y?k?;RUnqSZb#F)q`gYi)DLrhL_U1EJipCJakn;Yax+qRguD5|KM;^!Jt4-2Mw* zJNL^aLuBbLaX+CAnIZ_02n9uF8{vC32{=Xb$h_qdT8w&J`DjYZq{X$*0AoBe*A!6T z49Kvyj;UUA4BmNLi(*)mmIG;FtP4t{-Mk{?vO3Txyp}lHg>E+mwWi(btVaZaC0z+* zL}j|@6oj$fB`)K$UdTw0ujX5Q8O7m*TU$>%-8}!{Jz(xOP28D7JE>WVO{+9Xvce&9 zDs1iVIn1pVQ|e{V=7vz}?Ua_S9=$;bV>pJ>0U<8BeyW5$96g-D2WOh|!Hz^4fpT4&_Z}czUhsZ&Q#vqC&N3$6>3cM|133M)Wu_ zrE*>OI47~GYl6`dLnW6ydh5YkmV*Xyd8GU)e>hHS&-P@udA?`?=4PyqEl#X=EnYyR z?iu3R&*ZY1;9w6P-JP$+JmskpM@PtdB9O535#1*gmuoGU83xfX@0|Du-aT4>-@3gB zt>B=gyZ#|!qE_<3=U08OaLI7GPj_JRS1=UVq^t64xQ=$R3_6iG2YVXXx8>{yogsG5 zAZ$v2b=15kMTozCoK1S5#rnA9sTx=s!CkP@BV>fcsq{zvt#A_ATaC)DT zc2;JmX6!iJ9~4Y&kO`<%RRPE6?R!+9pQO~PG-&i?J{-v}fOrLksqN1nXUsuqNwO4P zHL(u(-mCPrVI*c(*0aaqFbrmddHB;P7{MDP#0xWUN1Um9YxJY1m8y1G#e|~e^8rIO znCsA1me+pNy)a2IgO8|jYykU9tMaf!q-`Fspt2PF&p zUQOTIyy|Fd8c3)jeO`gLNg6R=G#PDSl>O82v_a4e%6du-F>Z0me^w3}Vw44qt+<<0 zye(~pMQNf}gomm$>0z8_l7?*|{poEAz!>;mu^$FJO%@+^?K?W5@~XbGZIY_`$ck=L zwi;)G?_7&kq-pON0Hzr%_9Bfw13$Bl0eLf}8TX;(+bLMw^aUf#s8uzoNX%{4EUj@HsLD_^B?!4NSx=t9t~UzsWJx-Ug+Ot7;R&6@O6 z=P^BJ&235mnCbdwS`aa9h?_tj!uxMpGgkBcR%9Ydu zDmXhUgu5g$97iTt`K~wQhR%fi(@X^mMW9g;2KR8iF}-L|LzM9oqb;D@=i%oXHZOd> zijCr&6rSRi(heRVQB_2|TbMqh?(QJ3?Dcz7XiIP$Lt?QQP;7UCFNq`-#35eFJ7#Oh zjk~hBxwBSOI|y~)hp{0cSPh|Ibk3iLu;P%u+$Lx5VC-;JUEZ`iyL?`H(C4W-vH%&Q zN!x5A%2Z`I2h-!pfotjP&HU5jjB5T-oY^x=ReVK~ULB!%4lMh0S@!K)r67SckM7pw zYH^eHhvo?uk~q1gxcSP0(?qqchy(9skr0w=dz}R_Q)g|Q__fVNE{>0fcskHn1mQ#v zr%RsgK0EYUTSI7nyP;Vbux(K@v7sLWzBdi6eT-w!TRhI<4H6|uWwE8^!b5e9{!Qu* zSU6)(=8XPiYks3*EDKYck4WNU+l%}QmnPHf6Fu57fiPR(b~527`s!jX7OVXg{LtMf$UG%B}c90|1|B`z0MnKy8M zk!Mr3;Dd+m>GY1m>OHWEq1|yu%#1vcbmASItD8cOfz0`W(dy)XSKd87brPdW>+ZWB zP(aB<)2O1d&5@60`<4ual}b)Xb+qVK0>`>55;Ho`hg(J| zevB%eboEEx?}===LmGt<$lZ;R>WqXEulVDmwUq1jIJ^iK9%pZCa6U^UzCvpn&@2{N zaJ$jSLxBWVovwCMg2Qo-lJ< zQU2Ykpm!$Oq(YMJ?%sLbnDO>>Gmn4PecV&C9%zDinsCq&KJ3{?kNX6jG+ii`QF+;< z$rQ(1$54BO7Ii_0-~oI6+V{83S~&;gz#;68B&?1k+vbC3hGXYpq%%}Dr&0`Wh zH;yAJyU=6+%@-ZV6$?si2EtEikuyk(_l0R~Xv=l*mjp!4;^FS>>lh4*Jd*nr zy7d`S=n_SGHk}$R4sY(b1n!zf=762x%gF6`uLhzX6l$T6cxNY8=$!0r?AuvgbPiwj zh?=w*q`!LIlY$~nZ|Y$E@rg21V5=V>;j|8awWPj$bpok%faRF- zSr_o_&`UI2rF1ws!8sFS8J-B@lwVQzQqWQz#wa5b7G%G2!Prp4hdx8G(>Ou3mB}B; zQfb6gv}uQEAh03eu9L+xsa6iv7qtp1)Xk2f_$5orGVXPq^-Bxz^7OK_9wff<12zUt!n_sSAS?+bvRkgzf z@pTb|TxTzjf~ZLlD9n5+s9k$sZ9cCo3V%K%Wb;VWIAS+8W1bo-yks)Vmyvh$tGT_i z^wwV9s;w**u^AReMT-~Ye|ACb#r)z@H6Z;}p$|0@%hophnl!%ZbZ6$hv=hxn(X_QSA7UVd14?~I-jiS3Ao z4e{YPjN|w~psJhcV?xFb(4CL&x<=4Dp=l{}Vc>;c_Q7%(dLWvk-EfDDwS@>;Su-NZ z+bL%p)p3TLWZyoL<)vS`4dOz2NbBT7F9H|_9CZ(+kMC6VV)wrKI)M;ZH(RFp1K>6HettyCN*X7TLRp&GR6*C{7%e^}BbT79yVU=xG?qbl zcjx%h?$GmC{>Un%P4780tK)#&oh2KOXoHW!X*usjaFQRj=0D>%L9VjJygAAwvmmjc z4G&}*!zYN#zPOX%j?a$(7W!vUudO>2HGQoE_sL&!OlbuI zZjm9lu^r*qfCbzn_1VO-l6hpeZdqg9lT9Fs(CfM345y8*Jg9_m1}GFIV|iF;g;W8d zWD~@!llOGi0)^R2-7hMvpt9g2DD!!Th_>g#v2A}(K}3VaB@>liKlr!>Se>Fjw2dM= zQ>cX&ZRR>e(dV3awcA#dXJtyA=w0kuY{;p6jw{`&6y57 zICHFjjpA({(?~EKk~!dT)U`4cW00wz7_LUVL=iaTLscXVG@isMW$ap0x2g-uHrA8J zHombR6}9?mb-y>`20qct*E)2UuO8Hc4J4Np1q807=ig2o;DQ}n^aED;dJp2QOA@qX zyOdlsO<_S_x;zdSY63#oYZi6bM%Fu#U5YEsq1HD~E5uOG5} zRjy2bd?zKS6@O7G%G%)Snpw(zBdNbUr{(X$z{M`hFs!f=KvFJF-$gU2#=EgjGzo!# zvbHslpgmK1JuiN8;2^t^d@o?h{l^yv;wD>BZE&sUqqPSsKojTAszWkLqT3zye^Goh z8745GuH#7Xv`hCG=WXMPWbw;I2XGL|{`{y-5F5Wr&TW&28-3V>eQ(1N) zf1^s*$c|ukxrL)5*otd}(p&$v8Evuv8(O;n#j=Rj=jjv88tsr@9k8|Z>#Vz_9imW@ z&WX=%XtUMg2J*GqX#D*% z?`537=qqu;*)(F?HI=J@I$J4fK9A%m0pCJBvh6exYgDp8!}zzZoSfrA!$086>p(DT zCn}{ai@~RKeP|2o>nO$YXrsJGe%CH=a#R|tRUx~ayV<>1IMeSinJO#2 zZHD>>0WFem*oR8A1P`CVYa983Krw+%XI18<9-^h}>W&<4cSbMPbx`IV!f38b>uHB( zVA?DIapVy|JVa)NnNW7&lTc-sdPztUsoPqmdHB3B8tnYH+GMP$@6oNWp-3)RQ?UHg z%-#PfTQMFsMu;C};{(0Ov_rIQ3?6r@l7#X3>D7x32=pyzK~E%h7=xK#|3V#^GOQWC zUFn>|IHnuio}~LfBZ&^PBNK{niGWe7Ku%}ACnyf}-@w#6QRK0*Fgce`Ig@2icmoiDO zUhN~B4*`kUIh_>KUYC(RIDQdKnJB{2$=-b~CfZ8xfcJSyA?9fftNPgenFoCcWd3yj z`|H8ePfqD4kleDtQ*6Nqo8&Lj_meaR@hA_g(;L^Z{t#ND^gfIkFvLXO(os=qm@cHa zk1`Y&{kxv`0Xfu^*fC=38?^5x<{p_nYN+^&QzCumz{e3B6kA;!K&f14 zd86Le_K_yZEggC$2fG$ILT^$;_N~nk0}Oh)o=E6rbE+m=j)JJ6G) z?-Rj`cdqeSA-;Te{q(KW$x35OX#ZsI0b7*P*x})+?Bj9%;5R`Gr^C|_qE2}1| zsXjIY)djvt_&GR-XeKPsV2MKCd8ix@q(5*j9{fdqju-X0ITbn8(BpbZ_=lY;WLay8 z`i0stPCXw~z@5JU)U zK&Q}NER9BAOvCK7pNrEbxWH-FHExl5FL_CW6*#3BB|YS!m`99Qozui4e)aN&Px>q= zn`Htj(hov5T+#vInOunH)m|MO1%V)A$C$dlqVJG=_Z-`sX<+VJX9Oa0;oY7PQij$X zA5J@EnqOgcG}KCdx|!xtBfr0#<62m6iSviWc-(M6xtkp^&ZOn>&S^cVH(RaUF`Y}m z?t&^<#E7QoFQFPF=iL$YkrJ&fl!N!>;J0I;c*5gZgPGojQu$kU6EOt3w~x1Lnwrc_ zN8)Cio1TAcKt zNoF|G6kYpDJoziQ>U=xQ*BS1vIn;Bnow^q&hm2 zH})9PiO{(t^W{=|E%?DMR7;StDvEQhDrQka0RAAg3_gN$I&*Wwzn~=k(B7M(>a~Z! zfDcP_aA-#k6*IIyp%J~9${h0AwK`nJ+b52<w~PRgHyWlN5IXYMSe#u84|ZHSy^n28{wh(tp_lw(ZuSWP+qg$L(s8m!c&&QQfm z?V`^253V;sbIBUNTFaf=vR6-*YtR!K?2u^&aggwg0omNWkoKkDkUPG^0?w|<@E!Z= zdN>t}$#026JY<2fJr9x7PMUg)?wl1L3QLrSukg&oQ#BX-9eoMmOqeEZ(hUUeD_ZOF z$a|)=Xe9J4$v@^4o?P!A9ZKhv&2jI0gS4HH+|q%}xQ$2GG}HlaSSIj;8{voX4grtN z5^?tZoO@Qxw?f5eJ;?EJ+l8mq#$HKw!XpGoUWFU>rAw>vv^#66-Z0l03o ze9UuV;iy6TuBg8J9aW%reIS_Lp;bEU^nGU9dc2s<+4vGGQkW`q*W}NVB7gKCjGq0e z)er;cdbgT5Vb+^H1ts$)A=c>~<7zIANWs=nTR+R8JG37h#x1exo4E^KMtxy*r#K0~ z?$%;O9Sb6U_wu}pq|ykIPc>NmHT>1llOI!U1eX6UrSfjk(7IklPzk{-8Rn}7x;Z?O zHG;Q1s_+L6`>p+@2M1_J#FhI)3Q2wb^RK_%$CfwIY&OgFh+uvMAHh4*0Y!p=UO=L% zJ*D5S=)%L}A$%zOe7m&!_fp{t*3+Xz;^;hVo@q5fKHGd)pnJ|eIOYJUFa7vi2&2-< z@=v(qJxAgs;yM=KbK4Q$?Xv`DE}dKZj^@Pr4lvpjdq37S(40D>t1==oZD_+#+K*G7}na*UF1ouj`)-=)F7eu9DpizyJ(nUm!Hp# z;VZoQeupWTi0D6?U+HXk8eMgVrLpxXW|3y&^Ee044#F6OsNCfe7X(X~cwzq4-6yJZ zpCV7R=M}Q@*#}Alm6{rT7Xk}b!k$hUw-*|0<{z%`tBR0=5NT^5C;`uuQecJ9J%Vr_ zajDsUC)@!P>%}PtT%T3=!c>uRWtwH+d9<-(zn6-U)TJvf!$c|l(tyVpHV3O=`Mpu& zt`3+qHqx_TF`uvIz*6-9Kcia2 zd9bcBkM4aU4;5Ql>&{(IGPKO03 z6GL#_`q1wE8{h(5m92`x{?radiIIgm6bwb_q2Y^})Gz8nACe&1Bf{&!7-x}GGgX=& ze@OgN-UNym9Jv8Ue=;uHV`SRif%`EYkm<9}3r9sMb93^n!32{(bm`|s0-AT(L*o4O zw!4G0${$eA@x21aRYPEvIAmTAos(*!a}H1B$Q%{+;k78k3d;rdrAyHi-F?!wCvk>f z?0&u$ck@a?lhIP2?b7PsHK>;m(TbaAjGL1ToOmP`*mrf_J_B#V2ph zqTCO4y1vxB{h(pevPuM5d(S&8Y>-=DHF~H+?|HQjMQh=ia2+pvmcu}ildITw9SQOI!r?sgkoN4riL^yVa8H&g>994rE37rt)FBzR=}#InM;(6z z6W?Xn88+lQshBr%eB<|(TWa}=0BIU9za7O;Kb2F&67=9(&UXaI`x1uc3GyT)c^CJu zUxVJ9*{>U`-fWMUW6s;;O26YMyfX_4A*B~s0olVqSNTL`yXu-KmL*G-&F*2jEx7p0 za4``*I?KxHv)6HK7jY3Ij7<9YrG#Rv3eq#*9>b#{jppWES{r(`(%u(P9v#{ytA$il zehhZFc($&rCz1P@GvQV^L63-kMFr}3@f46~>s`pi$PieB&V%b|b0mJfLszK#v)&`b zPR!Yy#*5{KcF0XW$ zlbOj_?Y2YP_|JRVzF>zo&@{7K^(c$S<^J%@gjTQk8;24`fxOP1#G=_HVTreyL^7xn z@C-U2^054U=s;*cVf)DYmo*A@WI;m4|F8 zfRBb6lo#^_Y6bhJ@%6sDzIX$AZiT>6^k)_{EJeamU-UAD# z%^AGR^0ul*LSVY*E5R*DwOaZ)rL7%`p}y`Fb7AL3S~QPdmB7~*O)HF{KgiMO?jA1KO;pGmg`m%$C`H0~pH4Guqw8^t@{u`F?089&qV*WbGcoT0#xj<2CX7oJ1 zUJe0`;iv+=cdA@jB(`}Ku*t=6u%w8vY;E26=C7mED?RxG;ZijyU-QAR$VvB+W_V4^ zhDwL`=ZC=Y7{XBa(!`SfPzcdz@{X`P2LXH#UfDSW-=yFt_96ZH5$pMwZydf~*a6#< zO9umt?_z>~Uh7W`E;aGRz3V;OfnHjq2*lZ6gfi>jl1fo+@@ebgpt6bg|H);l4*poZ z_~b_GdZ@v(sg;&~NMowXC{@x5E|QaETmxU}Kv~My^ZessGQgo$O}PSezx-~B`6}!= zUGl)ADvqyIyYklQQyKGn1%j`q{-S~5+~RkmvGfvj$%DN}xM?coolk+~rVJAB6tpV! zW;Dto{LSO4f@k>9q2q4>rN(XPt*FoSiYkPFf=bO}ZQTemng@IVqR0Wr`-t^tX3unm z-p?ghy%t@qNZNH}RNPbmdciO2^WT#4lK>YeL7qP#^j5y1DQ7ND(^Lhu9+OZ5%UU1B zXsCu9rC7VkgMZ!)2oJyb-al3Cd&CUWR<+Up0$~#}gXNFx%`E%hM&-h!Zz=+)S#1+x zII%o0Gz%4VVt;HnQLk*Ts$%u^juuzQ$!vcq)(}pbWpQiuiH)9lhVnuW4Vh)(2-2GW zO&!hJMb0;uH{!`k(RAaVBs=2sx%qrm!Uf}}<`7`W1@|08-x!#;Ps`W-9@PQjtUZOs zOqZaBPo!Uo;arH!EmsIXnu-0mG%|HJ`iw@k=f@k@(P*Ep2+t1WdCJ~}3;@SW1)*0- z2rJX7Ssw@2Da04Zq-vXTruImX)PA&Z!mvVwJm*LEP8m6+ zi~H2R#|NY1lccBiu8BTZe{fjB7FSE~_OSGKC`i;#-Sbb{u+@%6B!Y56$w(PQBVNba z8aOhx@kSgWD)K6T;m7^P3cAvKFl@&2!PpNQP&^l5X-TsePMi1kxJWoW8Rj0UfJL|P z4|61%+S;}8Wti2g<$b;v_dn;Ab$j*}!Ze6t8%{kO`N0B8AFd1+zRl%ELEKK!OY%XJ ztd#k3Bx&g+Yd&<$Zn1Iuz%Hk3%@8vk~vKiBp?d* z7Gd)rkNGR#(R<1|^=esvfL7W*07lQ9P zo;$2JDm?Qg&&^1LZyRQ~i{@2Xoy~l| z?Y0oUnFUz}4P8{ZG!0n;K_>f%G%XK0Yc=&rpRFk~~d^ic_S@E`RK1LnYazAz^xl zrTLY(Y(S{%hOcD?P9f(UAm#HE%OU~>20w8r;!(LbiG=yD@r#9vt>qdzeYXCbY^d;l zs>{nM$s$XCiikE>qiV&Jsn`%5>rWFM-a+Cpt4A}a7OrqL{2*M7O6B5GLh z5`~@X=A_D{5QB@j>xZZL%dD@^M9v@wrl`4%SP}oD+pH0GWLBfumEE#9AFjrHe(Yn0 zO3Yl#D=mYi*_i_l#L+0-prvY>QlqmmeQ1wU5{CSiDBOO=2u$RW{ZXlWZp~_eSB4y z5%@>)v;|4p;oaY3G!lzMcxcZm64_^OBX0SLM`I!O7n}oLGWWmJ60ZN1mawvOasD@1 z!p6q*|Nq$hUu21j2XC^?W@}nWIMSdE#br8)^@?KZxLkR3#sH()zo|7+5lRz%;euoz z*mW{%SJ4&P^+`FA4>6zF&+fk7*Sc4)pY-?bRgdgb2ZB>aT_NvK^27_MYJ8Ny5hOA} zCFV#Vv}2=FF~$JHCo;Bri(xhrIQV#fX=fp!Om{$Z_@Gg@ZTikv|^>V!j_C z5GO{E0DhWSJc&aEDiD@HKk+`L64nB0>@dDC3J^ksn;90z7WU+7Eq)bdcWn;Q&0lS&RV4j9?f+FCa(~UfhF0lPBqp=7bv;U1^{D->2rE z2Ub80(EJi?7}$?`W(Y9GeccdKTqwi}>RkfZ_#|ke0X8@gSYiSs8hwDzukeh%NPgce z1S1K-F|@{{#Q2y$(88~NU!Oe3Z~pwh{)X_w5+>q7MyQ3{?@4>Oq3t{O1$RGPAEkA_ z96uXgl=Fz-#TYoleJMdX$%^q|qnGFvdb&%F7@~<410A^xOV?6A;?{jzrL$zA+-pO{ zdKHhjgL&&Z#L0HTJQs$k7LLXOQ5=-`D*4$@m~b}J+zh1J1k60xHnHq{k}vp@J(y?AbQ^k=_@V_@z|D8u|^`aDct^2R*lho@2Z_1g#fjWeh4DJ zDG~r`$LRY805C!*EFG{$!uYL#Y$~t!7nn5$BWOcPSypf>q zdd|8GwnZ!S^y0? z940}IQBGDJWEr~Wl0WQZZNml2;j<=ROMeW9WTmh-(WKk#kyJwP$1@w90aH1?-x*bx=3sB_N>A?^!CJ%tPT!% zP`=XkD_yacFmAem7rgXltpV6w@y?^1Qft+>q;wS{l`0kYy=R;UzTm33n#$z*%wc7Z5ienwPyuG?l~J z#Pj4dxC*@6N$>;PH_R0mfM*5P_lqB1@W_3vg?~Jv7WH(YO?b-|85Y@><@bMiPz1aU zmMH5S-h4=7&*RU)e$2Cp{kdF}8F@D|elBrr$rX&Fru~-*3VcGnGW!fK% z%GW`(!TQ~*WUS-a*JSMBMqp6UqUYohMg91TP-Zz=G1yVQD`~3n@)W}j5-)tgy(jZ8 z%4KDN|02a0C(#7=q+-o>yO@M;_(ij+u}TB|BHJTL5^ zw$e^oAi06ZO>FVaT-@P;0=2R`qncx9ITE$^j&8M#t48UDSd=Xip(3J*a3z$OYp2bZ zAB-qJD~Ua^W%=31e|s%tWTEoWTY!wRW`IBG+DzW*mnOQWTsPe|BvaqMVcOC;A16Y7 zrQVhVLcLA2{RSObZ{r3`VpR0(eb;TSGSgvpai#le@gx>Ok*4 z<)!#8>K6r)wEHFyw+DLs22A7o5b)6_OhUl3ym;GSDIrJVPfS+aT8ni(-?L9YcvI`# zkS@ojIm#(B1aCH?8hUH}^N7~je`2}G#HogDCuHXqTG3q$phLFnPL@9GZ1(^!t@W5n}3+8k7gYldh)y`rZsViCLWPgsOH#S+kU^igtOfpc8lGrveK07={6YwoA3d z=xV*^bZy8a%2qqs`XW~`*(|ZsZjBOHZq;+h#ue7CPF_HIc3p_8kB1Gsmy$O_P4Vtq zqnc0Wfr5M|Ss*NnM#}k7pD(7z%bv{`yBpZ-R<2A{=u}CZdiv9!o0tQ0uw+|5#aPMd z*c*yD?yLu{R;{idHNuGXBPB;HF!tXXzp{X z#j)xuh0;~etJMtz46Bq%c^aZOX;K=_P%x$JqK6tA1d^PPaw<}zbZ=>R7Dz76YGdC6`t_6eK+EBDLN9BE@Z6&#r0*z z9rl$lr_eD=3*xj1e(>(H^Y^+%KFK}}7)iRluVsb7(dh)-k%-($67)9IIu~Zz0}4)= zic90}t;_JKVspHKPxr10YL?#h^yEi)%L(;MR~wkE4v`@6fj4}TA{}~uA08r-$+ELbGHy}o;w~K;{T7nArQE#}f6q&6 z8(Ao;l1tq`XTPzRR}bfKP}al@c&a-D+SHD9E<0pq0y+trX}L6K4Ovasl+R2j+CNh} zpdPn|i3p5wFRHtt5tOGIIz1G|Vo!9d?hF3@4dw9AOUBO9-oR|wHii)eWe|ZjQjh<+f!*W=YXXN;`E(8nc8NM!+kCIhC$8ylKHn8jlL={@E@wFK<$D5 zMhRD3XXssg@d=7Eh>6Woh?$TuJt>kWib1u-C~Nh-O?va4Y&>d~ZCNE{h+wCMmJ?7# zz!V7tCr$PIq|!(R#$sk7H_tb4S<2R>q$y=pDc}!=q%%5x@@};O1=%pmD@ZPFCc$|T z`sy)GY90#$Fw8G_-EQ?CChTgD3_(P_4Ru8)8zD#%&OxF&58(w>Y{^##9#zPPuJOG~v)4MToN-O+_%ENSV`TeF)ORZYx$Wk>hH>dIh*-NEUh z;#speL_pDAWoI4%A&JMz?Le$H!RL)=nOrHmkos~DBssd1URXXTXs0^L&M)V8RSJ7# zIVIMSo@%&&?&&gqLU3698}4wZ%}_ndU8q&DnxyTk^aw6wnt zRN3-#WqVMA?P)EpTKK+eGJWR8m-;Xaw(Vl3s`IO3Mw(KPB1FH`nUG9ap_^Wg&XcTV zOHV&#*l@X%r3Ab0ugEzOrv^J~@Vl0XM3I@5e@nZdQVeu1{zK+aVWBOO&sM}ME{13M zT1{MFyy05s3C35&oMj3(t6`{RU)GlrB4+u@2{}L3EiVK5XWkS?YiFA)a+D6}WV5R4 z_|<9rl3!Q{W)&mOSd(>&u#C1;;fek<>B6pXE!vsPQ_xsrlMPgg%@7IEWU7OpNY zftC4}UH}WN)Dy$_5k`;3dL{*Iw9=L_xPBObSHX55J*?1e1{64&?{+JjG?>^X_Y88h z{?2(*t8e$z5RjRb*~m zGoWANkZ|tQ_bA$kloF__kh_!4WX_SB)M)?hZTn4KhCjW#l>`kL?NqitMuB4$c<<2R zZjHcVx523C6<#HYZ*HW}k|UkPbL|WCt2rdM5o=7X(zKQ|?J6jHYIX#yehi5cT$J(+ zGYT-!UMDRtZ>WMBp+@M}TCP=&*jun%wcSHqBMFX@T0tP&(4P zYz{Km^t|%Y;uFVBWd;7!I8@_%P>0Vq!O*xse_P9gd5OdDdf!W25utLGcpp`|e0gB+ zbT7LH`t@~!j~Tg53>D9*#-b6RH$bx<{las)f_2<`wsr?>i4s?BhUte3?O&9>iJ@@c z{%~HXNkm==4>G9fnl^fa&i2Jzs>&4?z!aa5{vyTBsOngHWDnfWW}<)6MWTgV}lqlAM#$Loagg;LbJbqjn< zg{)L(ue)5P)`ij~#=^2g$~96sICD&}h?B89%g<#VuVBb&_Yfj)c4iK%KhC|U|3PO% z_uaSUD!^AbS65i%Tuf7X8eXey>cFN^{XozzoXL={au=@+|^&AvFGMl>;^gfbHh6tjar90PH*KW1+R* zefcb|N4D7A99n(l;$2uVH-D;CF;v%INwZI;@7oHsp)CAuh8`2Wh^v0+HkaENFLw`N zcM>m2;bi^una9duwN;p!rex-}JmcpVHfkBwkq?|e+B0s>(3JWS^~BeA8bndR%%^!q z9=MFDQE3ew`zHe?SOpP|xEZeI-W>TZBZ$c8-V{0Mxyb;paFy%m`QdkTA|2r;svT@Z z#VqO3)NZg0sRP=EJUu^Nw`5N`;z&olK=>TixGP##YUtIY&M<3vTP`yU3higXy6YVy z+2iI}Fuk<=@$D5YM>s;=HluJ}>crFyGl0h<1qk<1`@8(*+_)`*-sF};9q0S?0%7Se zEuAd&<}#nJnX`OMP9}OGE`c67>5qg#Gnft1e@>Bs^ zgBLbUc?FDEv&Bt$RB^(Ry-a5MjfM>4Ed}lm471cmEw7B<_7y((MbiMZ*zY7PR+duC` zzY2!VQm##vIpy|CaXp6YP2U68d&C(*;rSNVdQqz?H6xD=k=$6Hh#mnK?%(jALxZ69rLE!F?xAOu= zi|t*)M~VBlSlfgM+k_JL`?s0f*Szj#w;7yoRbiD{S9N<m6nZC8eAE`rr9_H z)!8;ULMT)O;Lh&svdrS7YOwh&+#~q$YcQdyYS199;J@fUVew9&nSp|GvG~*d{vNd0 z?og)8>QHoWP;zjDaDaq*v;5X@xBggM9Z-tp9YHwRJ`~FV2KiOI;}7sJ0~3Qgfaega zF79rv;DEHO0d{h?wP*tDgiuxd89(kSP?Y56_UiF1u<1buMgQQ4nVF~h5ak2~1)-ep z{FzYj1MCQ_#i2U+q2cp;lAiPve%s?gxqx*4NNhjSYBEzYnn@wP)jLpN*bM5M5V*UV zQZVn~M^DX0P9Z>=n13ZzHW!p8Cl2Vr?I`?Tu7Sr|g(`vvP`(%8Ks%2h<3} zr~0HDUEIz7&LNx}!6*IS`$qitu`O`p$%XmfCGdj4!{jZOiI4c1grR+knH zf9E#;Oi3v(p2tY3$@$?ysnY=N@JqfQD8{FL^6*xs1^(EHWBu_{-J6{X5x&I_{kdM} zj(G!W?fg|F2JYJoFe!h_$Wh4|#)1BO+9zN*-8+3RjO9f<`J>ML?fmFZ|1K$jzr*MJ`G1cG&s+rv{}Yr9JU;&|=4j<`B=%+{AtUmIlP8 z{vj%DE(}f}9b3p2K>il-GpkSe1NtwZ-PYFnZ$7<&{&0TH^`M^12MOe(&jXp7PD}`K zOt&&tUp43jttY*lp}Z07jeYIi9`jHAXTw_^u@$y})lb&X zBO(}Gc=*Y43r^UviQsHI;9zuE6e_otzEKHTq)EUqtK$TVNIC{YcN0_I8FoNVR(kVl zDOO10%s`NT3oMHN1Pi09f*3Vc7GjyK43UZn2A#z_t8#t;xDtkhF66@Fv=Sy@mP7T> zHpxFjeU{Uf!MC&SaFj+#3n!j;2SOt@QtXdPI~(;t`4!|&=+&BM*@-^jo%5w8ru%#b zW4}T!>uVRuKwCfrB$F)STVMe6yD-!x2H!`5B00Vq9Voof3{hnEyQ@KpFCjm1$ycVs z=0$G%SOs(;6<)8-ZW?cati3zExsz96TNkz0BX-xe7L?iCkb)25JBuBC;VA+0Ms9T> zE5QCUQMe=tlyjvd#3PcU9rJt4B>NH7^l6O1FHs!Y8TbbfUp@=jQzs zq2oRaJX02B2l%-^`gIS8GUg48g!MMy)cM3Lyf*m;RwR#gV(5}OtrC?)f-R9qWYX8g zG04i$bTe`8N>g+cWw`cuViJeuZiKI2$jV;W3u2W*`&(ZMF&P&XBuZVZ9!OOy4S0|9 zU5Sbdaokk5C|M#KjU@yNON7R092tv?Xgxlv-u={HamJ?F{zAz86Z90*g9c0txS+kqfl)=L6g1Ap-`U}FI#XAN2U~*jDPROf=|!&f{2E}bG}t4r zBrma;*=HvSoK_Nid7SA08P~*W-7PBv0ISHqkyHcRKadr?x4c^qcy+UMeL?JzYg6TC zxVKB?gfNwg{Xu#}aDAUP>BVcG#;$YUU6Wmf@TtdrayQFtc6A}romm5QCk`bYqLiWg z@PG%YK*CIK1*<71CCpi;Y*^V0_yqV%9>SVDE_$-9m#Q-c9gb2jGQy=^IdO?f* z+7!d&TR%}upmKAnBIh~T-8uDMkU4M8%2JU|+GBlAoGgwa@Ub<8qykj=W+CQ17Wz?1 zb@&Xs!KeaPu+q{c2%i14wWVW-`LZa&APnrjM!a$hoSi#AX%JJcO@9o%!Wk%;fmpGp zVJrf-jO7q%(WmaryCCQxKI`@E!m{W8ddTpXc@p(YCW{lqF z7_yx)_1PkYrh}txa>(8}q>U*dpE=Pkn1ZX?L z=3za3bH_PcJTp$eDoRhhO!Nx9|Avd&;nh&xvMV>B>r*mZgHwxGQf*kFR-+Bb~d0m7<}+G(76MTnFwZ!5L8S- zP7NG+p_)Mk)IGjL^E9(Y;lAjI2rE4OSqFF$vee>B7;c_%X&qv0)L8_3K5PM;$6Cgm zS8YQHA<11Q{2ols{T76`-4G%bWaJN6p539F`}1fTL46%&G8lX;O~&hg`@qY7Amz?~ z3@Uwbn#mMm(AA#%s}MRqSTHdk3I2d&yZRlO8(>XD&Ye5h1*KwS*uy_bLeVzW4Lwb4 zQi*O_p1UC4_~a%+E|;ZV|1e~r5t`8!()3(DK@`lQnUc@P0TbnL({!QfM*~pzs-T7( zNW=iL=YN|$Y0zFo0N-h%%kXA?(2mcs?pxbcQ;jTq$^9H&LrqM_`Ay4C=mF^hKEC0DCzZugf;q9c@BjS1W#?p$1c!{54yghQ4ey? zv4gZKmFvkyiZl2R!`VSD8PcNX@L(|oXX|7(o(klP9rYdeSVnQ+qm6}sR;Cq%=CIi;iYua~jMHbepdi<0G@U(ngH6l2d$C=c;MWkI z>nLmSr(B7{&m3PbuyT~LsZ84NvS`o=@o~X#kKBjdP;L^7Va!06aE{W8au!Rsst~6r3MN70(s&zkhQ>9(WuTqi1yt7ZF!M(_fCw?V`LjsD)E!2f+%xyQ(J(fHuke`u6Skc`NKn$^eq+}@`o)&sQ zYwcI2+Ntwls|^i1V27Of)a)GLVE{ra-yR#u!q7Mq&yJ^q_udGA7k>I7@3mxkiDxt` z(BB&^ZYtYWy`w%33~q?`xOTV}c(lTR{3M_2?Xc+4FY;TW2&VUN3Z`-F1P{L!xLizc zEncawyE$9;jc?UskVzPHR@qVg;IVKs!BPISyEz+wMq1AVT4Y6MD5nl!DbKQs&py(B7O`x%Ktky@WJ-bM|eTb<8u$rV? zq51|}8x*N5iAeLn-V^GIUkO!(xUU!t(yp~Gy-McFP>g#KFe#&zI!~K9h`xD=0Z)dB zFxs>7GF=9LB0mqQ6-rGMui$U(ZiDfu${|K(ThPo-S2OADChO!ZqMD`JM-BGGDLv52YR{bR!s98UmHTpZlCDGG%;d;02E&Ibbc*DdzH(MJ?M*z=PVm+WCTwgN6 zPhMesNqN^@Laf(9_HvkxV4LMV8d0tAr${~E*)I|2kd`T|h$&T}8(mCL^&`c-ckg6- zhbzIsipA?4AJpylCQ2R72`%}m$>6RM=gb-NN@JY)tjm8zEMCb0v1*HSF!Q5P}9v z9ZKi-uNPb<4F!tEJnXT(7eY~+r=lE;IFYNNW+ae1A^0`oem!uPG4(;lRV2uHH;@j5K5Z zVf>Ip|DM=^uCaY=sx4WUiDOQtWfyC+ga`F<5T^y6z$ZxMi42j!Bg3c}fO zrsD)l-vmSs*$aLiNZ80P+3LCA>P0ng?E-$7g^(1{q&vLF1|x&#j_e^j5)t$FHj7aX zlSC^Cbdz`a7;zu7s{g|hWi$16NA}TtZ6uZHz+H8qDpa`FY$JC2%*lsC+Dgq=`eYm; zZl)yUZG?NhshYmLuXacciWJT(A*tdK1mJv#u6tfUWB!@8snXNG}x+8aYJf)*_V|Y9Js*DQ1%N$aJ>2-Sj z(a-E%2Ra5il#az6?>*B(az?1}cs=q$v3ZufNKNUX-TxUb_fC{|%gd%{MWr_ zmBt%K`8h2`*`{OfsI#=Wfwmia7{t*q!2NJa6phEsj^n-eY$W^ymk*+P^_J}9IqlC5w&B%ikTg7!W0ns6=goo@x^;PXv^1DzG zn6FaK>rntEsYnE!6&U$ADcd|2^v=izOE^N+KdUft6Q9(3@uyzn#SDx#o|qUC}_5q7VgutQ^}oVBhze z9^krF*(I|dpbZLG@4JVmpTk-vIA{|d@Yf_1*06NG#a0Y!b@@svych^5rY2v|-uN;K2nS5Jz_eg2F|7l`iIcprTR&B5dj1FI*R<|fN z%ClPL=Ugd=sKv@n;79h}oN)hAP)fn#ext4N&p$igT_TGZEf!s-7h`R^*`+-I$k17= zF!Kmb+CLG+o6Ed-#bYZRHrh_)%z-{9=hrjraGnJetYeSU-w9((ZO$h{OjvDalCzxcjHy+% zlO|P!ty!8cyJtskOp#GAzLI{J7e896rfZ~HLlLhamkeCSdKHf5&yBd8)J{qqdJQ)w z44U*i7ukq^rrJ_(aGUdm7g*TcoS2d=O6|0(TB{PY8xwA;PMO>+A^DR=@MJCD4%((u zHaGVa+I7Jvr|xoyX{CvB72^bVMmgkPFO!3o{h^ij;N?uO@d<)U=P{aNAeskwMpH|f zq5lgH23|0}sMRrS&AcbRl;VpkXiFBjaIUO#RKYJb(S~s znkdDbfz!&k=I#2|R55G>*Cozx^Im+WK`v^k376F52hZu+@dQJwe6X>pdBSQ!%DAS| z>CNXE?Rq|>)ketrvdn(C3hf*Kdgd?SH#T{yW`3!aq!w(2?%WjCjnJh1iZ`gz#Cu3i z=g(7>n*5o=`pd9)JHW{zd;isrm@7rx%C^@HxHPJ-FZpejT1%L8lEt~)Su8F6&96O{ z<2pQcaynY|3kal-+zHBmb}!C)`7?bpt-jSCfJ5v^Z;#O274Z*>J?!tpg0x3U2EDCe z*jZR=5NqKT{9b5_Qs~@U3{Qsx1_oCOA28{{dsby=9m4@jQfE$+{n$$i+Nq*?m$VYE z!=v5Y=?@`?+_cZvu)24sT-?n7W(?j2q1E z&Txsbs?Ah?<8*Vb?iEJ6P9crzgL8i9KE!Q6~PSU9k4HFlBAF~a-VCPjDbJW=)qkT%&8SJ4X!X81kMeqTOa8Qm~ zQ@=T03fV7sgq$|z6Fpx|PwTlD^l#@=-=+YE=<}MpE&vA^sy3Uof{cbL0zq4D&k(Y-~H5!28klw`sC1(a9mq^45a%Cijs)HNe~1wAfUfu zAJ%2Uq2Z;ZZj9~D7<@^O$b=x;AG%@ zyx8Yu;dvkW_++^E7Q?fCu4BwPek|o$?-)F4AE{{x=Q6aVvdC#N;|P=i!*i#1o&Kk& zf#EJbWEn{(N|pVH)fko668>RFNOb_jEJ@4EQC%(eVoE?(N zNe@cK+?|}PE&>9RpJK=aw)eD>gf{4qWw7`Gs*4y;H@weiMuKP`flYGp(2Ps8@?XXg z(eMs>d5Ov3YO}&WCZg5ff%8&+w56e1%|ACz4V@@W76uq8bf%xjHUg%xFCRCIPNzR3 zt8A)6SMLB-Wv$CRK!3+*WD@sX6148^rj6(0`LA5|Jo);CT}aT)3tZQ~y;^`eL&En} z^H>)e!W9PMXDx7<;j^K2U_zQpgzT13{)0*qn$Asi^>-4FrWu|F$WXX4dgYcfSc#qe zCgxoIx;+(NSZ9FF0wfXc&<%<1CwRui`{o#mG8y%(?o=QyNjWOUadrsOFw-)=YgSy$ z1(n0^|EPnpjsDCC0XbUs7#hW5woQs?9^R6D#+?-6u!u_C(C`QjvfpFiSRXcpK8aPA zO2*&QiZ~)jQg694<-AjT{^0Jiw{8qA`-J_k$9Et%z}dWqcN*UDMArv6`<3*o-}7z)b}yW6cwR`pmjQ)dHI%MLp%uUar+lX{2?BT$Z@VwuYq4K{N=XbRQpcVTqG+r@Tn zFj_baOftWWwc=;{H=SMK!wzP7R<$%cr*rmRwX=?cc7XX5yQmf+l>nj>V0B!4T=}Y0 z4nd5PD|yVAr2OrJxgY@F0gyFgy+Bv~ERE zdH?~AjzB`~T+yz&8-tC?*AKV`)F8x!e14d0ap;PUIfK?M#+UyHHB!($BALK=|LO7_RNzok#QjaUnkyzOOj1$URPNbXHKs@ zpR32e35no96y)DF5>g-3eDO*~SFgf+HcPsfMK*VCk0VHN4vzR$#JT8eq~BK@0vtWo z@8VEuke;Y9ZsWXG#+FCq;=^d|X?7H)*{Og?CVl3OKRDhk@;o#Lv@61V!PAH&GWg)w zp;)6sdijyM(`UBbOeMYxKV*-*q*V|YTr<0yG4o-y4<1c$V^r^x!Lxpe`g<^9m4)Z+gTF%)2b_%l-p0Vq1 zO#si~P}L>Ol*o=x!$yX!4fsi9Z9v~RUL3OgD$(=S_~WoV;?2snln59B6qDB}adUD7`t&bzWL?AQ0eNv#a*nYz)L9CrE@kq@@V9>`fczF7CM+WQ8)z5kFw+CK1;lZ8kr|1T|V=vGXYt ziTRsKP;DbNRMq$;pwQ@GzWC$z`Ppx0tLfOv9iMaMdY~O{t+a2j2Y`70EMxNUbK}y( zBWOIxM6QH*xoA^aSRS$W;mm|NXbznr+B(3&PigDHZr`v7kw=k}nUp;e`X9|H)w*}Q z^^zNsdx`sA$b9x!;0CnvdVt-W0vz8yJzB^OLk!hdj0TNinV%Y?#fB8352j6{4iY(^ zD>Ohjv}9Ejd{+7^Qe?$^1(#`u`Pur(O!MwdMln=_p%(1tOl4pd@*E!uJJR$;(kAzW z3!OXs6t^g1Zov}jDCxaq7X?Pj5}PbSs#(#8XHGu1{-x2Bh|-d$dEnPf3+u$kbzycj zy|D^Gthb&$o$I|_imPAI^a~1Ifzj=867y+|Jc(ETFYp}Sdq7g+#Kar zxu7-t=)c>vCdiZHGoOgM1ut@X={<-jIDj=g*E5L6t0I7I*KD$LqE6U{^QoKdosU#Y zDr66~6rF0(Pp`+y6ATT`h)iFaSH3&OiGr*20<_=hziKt{OVMBh-b;lQmbpW9-pUBs zNH&Qc^1uN)J(}g+fyz`L7uE*d^G-p&`@xEY4BT1(cTY$4FHb_4PoZS+ZnahOjbI|N zUQ$gKP_)Eox7ul!O^A}>~Bd-g5hZJo+vpJy-5gl%GSoQCV;ruU=j0IQFY=x@{j;v3ftS-mFmv_JR1)qY z^qS3AqjJt1%nVJlM!fd`p-iGgR~#+fXS`}kX}$9u(XpsXE?QV++|5qK8%eXC(uwzj zX!vFmV{?;a4Nw&mjhc0JaDAr)=^7p#vOd*XtN$Y@W@ee{iU3~G_RMJ3SiS%%3T8^) zuJ20Rj|+zn740UMGyY)BWJum+SW=2Qc?QnT{sO54d1CV;l`~4wZX9@L-yqXAL8TIR zZ&S~0edUJVu=mte8*8+>|9mS&DtBj2+qDl?WUulS(Y&(Zwi12ZmV!envm+-u;%2sc zy1~#U!^1IOM&j3kc)foIhM}ezxG1=*f8AWUb1aySMjt?$P3ofEZ~0BQ{N0J+5gQ+y zQA0~FOEV0&NAxw}m7nmI#%37~AN)C9+$~;iaXg7Ujhyb3R5B6TCR37mxqe-36~-9= zh^$);Kl@RV43{pTF_Gu8!LVUN2ENx9YPUM)Ak{_%#P`8@LY3CVuw^>x>FSL4o-e## zO)Z-cHkC7Eh9)&BqNlA8*y{!-IkO(CxQWmLn>mHGyKbmYpD5wJS`yz!U$xECRrX=8u+u zRGpis-`&aGE;ABrJp=Q|%d0a*j1;&-G#Qa^MR@|CH`nEWpr*>#EML+Rbl%FXcQ-}C z)Cx-t27%-EsX1$F6PmTYuC9`?@<;zkS*P3CGSyL;J^^(mq=@}v!|-H9x< zhVxGRNsVLbOVRcN!R;6;61;cURLymK>xnKGWtM_-W%KVl>7HP?dkPx*lQJvWPf+yr z`O_|8a zVV|pbw*)FSr;n~SLNU-$Sb3laWk<<3%*+C}tfAk3L6N<>-JsBdX%1;+b~e@-H6Xqh zLAkFdzT2m!mL)sjDA^L_o%+cfp*fTZ>WF0b>V;+-wiuuI*!s-4Ka-S_)7sw4S1vNFJkO37*`4pTVASV={-p)-it^^vCs82()4gSDp9GIV* z({Y`|5HEo-P)u^$OC&?&G507SM2Op_BYqD|^4l_0m+cn)+qhe0Vq|pqyVv}>q;US8 zBgK#x`p`>3Lv_(n6$tu;_}@y$6UB2kcY)&-Omfn@bP3^0XMD&jiCqAyB zMbC~qT)ub2rYH7d!dZ8(-l3{gFJ3zBp&0+T0fifeWkb&{l&OB7)6?>jxV3|RAlM3; z-%5e@Inb$1i}AzyiY zRw$Q}utMWR@{#=%MzwA@;<1HA-sgkaK`N@ecY6QPlQVr)3aQ``Bj~lg-o-UnX=4o7 zmJNV2osDhN|0D(ZW+cJ(5bWV{w>qnHw|p@YFlB=8VbykF6)?0h>PlP1N)e7<_p1d= zj_A|r9}dA3UK!rK1s)n#%XTJ8P!_id6kLPH+V``L0O1yQSAkL_sGPrSdUxN;mt7ah z=`m*gkiZ(9Dvr!R?zYzTP39VYSjFc+fyt8&Hzs}apOud@JWh7grR4_K+=tQ6tPQ>F z+zgXf7B_{61fvz8AZDu4*y0QYGcq(010?0Ct?ZA>3tLmmrN-P=8?qISvRh@L`Y#@j z<4CFa!eA{nTI_A_8F#iwX{uMqM2+aNj7i;ubk-jhdJi^BEQL~YTpg&6dg^%$9fyJh z(D$SK7Tb(k8czgq2WSW`yYQ)uMw!h_8XFm8W{xW8eSas}CVKe}vKTt39@kOwrCj>+q!$ zrBFxMxm2%9KiH@Bx>I?;TXamq%CEAv)TiexAm! zwT4st0&;C&vDX85{MnL?LE`AtZDH`!n@x3HW;+jE29kpKW*P@dZ3%Cws(?@lb@(%n zHpf5vT=63^?m|;)W3c1GQnd_Gp4>`V!Zp>F6RR-kDi^Y)dm!}4VIgh-+M??-!M@%i zyQDv%KM_;RydOvFskBsdt6u!(6@--o1wCkwCy~bPJ8IuSaEPwufm|;k^tw3P(#dVR z9n1Dw(G+hO&}Ro5>28*H%HCO;+;SxYbWAkKK`(rqpJ3htj2t7c9U{EV6({nHo?V|m z8jO0;bwB9ET$`e?UKbkp4att8c%~7L75k9t{kxSbofbIVen4n0)h+y#J8=EG6KLI1EaK(zV&&rI4)A>+U)g?1Jpgvs!4Bg zvh5s(Q|VXR6|=|y*Or@cFe@qh(nHH#7wG@3Sg#-b0!7Rky(u`xS|j{O;>JEIq^?%2 z|Dr>N)kjJcu0AOSfkd}A4dSMyYL7#3{F-}-bb1-Hp28MweSAB3YrU9QLG6Vq0mwK7 zfpt`ZKe$`m=z_=WUyeJ~lRbMjZatz%Y;d3T*&U&~aAV;7eQ1fz<`*DemgmaEe^IbS znl`&7-Z!IeH?rb#y6FN(H4V*{OBS;EEH`l)vO%~TVqeUWY7gHPb)*z}*L{6P5NNj<;CJVCC;5*;s7}7jjj=Mjc%SIkP>t?T zW5*?A#En-k=6#XXIGQiN-mW?_Tfgjj@tvmza@&+`vNLK1O-cDTN7_<%BbjLT5{;8d z0$8V}bn7CxZjQmu9E?Pfq;H_%>7dTwnR55Rd2^HxACXdb zV+4q^lRs?8^O4h{q2BaV2<}9uQ_EN2-^N)!92yuBZy^Q4MGhOkEc55=yrY+bXz*C0 z0CT4xX6Ox&CMgfQx^WwWS6G^)99=-3njJ82OrVVizqS-d8NWa@m}lv*Rw4hI5A76@ zy2^AFb}Y*$7#4rM9W|Mo4V|2Wwq1yc+8Lm!>ZrnD(8)7D z#*#+v@Q$3{*@N>Z%%jd6x(Z){rM&~@vhw4YD&`CttprwHvJ>%#e>5`G16Og;)rTAh z?bpg$ub0U?Hu#CmPjG@0F3%XnEo8!C3CfUl;KKNgdduu3Hu>Zh!uH%Y5rnYpzE28; zTY<*=JEFKxWWc!OOk3Jw|FS6^(N_8|f)Qg*!?>?7*=hMsR#oBRuY;eW$gq+Mo!8tc zYVhFzM?kp0&}5BSg|c=VjJt!cl9l%InzJz~NMqhT$-A%3!i}mKsk#UVyr(u|Ij$s! za!(PyENS~y6J#iV-8p&bVegU`A7t;HD2ChjN6sSrbgzDOLp{E8r`~5)UV9iK{G~G2 zj^UsrLDBDvN&cg3SI#PVvuL@)AY-y{t%k=i8Lpr0ugwSoysYo7#~QTuzltRVB^`c7 z3?eHz*fbE)xhVP73LTVDu9uMlbCqEv0&*sx0E2flyAht|r&;6TO!FIeebOhG70g3k zL)+{C&G1KMpL~l6^7jtGG)OL2!ci;>J5V}{CuWgRD7%4e7rB)>{ctz)sbllqG@R)8 zLG!ncS*sC;c|bfMMJ&VFnDi$n7*yM%uGzl&M$@l*p?VacN(jH3Cw{EEZW6Nku~YkGbuKOIZ=7+w1Z&@%Er*n zj%1TbiX?^IWKY!80>~1tJXFPaIto-=tY!ueC~r-^lVuoixM^Byrde*k35Ep09_VDq z!xg!NnG%ZW%DRY1H+eoyY6ywvdCV%v=scYnqt~#46R;`RvZG!Obb9})coKmcQ&Ij< zG*!;{^QACd6R5j={mDA|mL>OsmXL8aU zm2z;0)@tuUhPbsGCgtlN-9|A!RBxuz?Ltbdc z02&xD=QhZVKIJ4t^Ex+T?})JK;$nJi(>g?FC&%9$;2khvblWtaC(|IX(2|N44W$?m zLiMF}fBT1rKZ!y_g@iy1&)*!Nh+&;Ub=ScycM$D~b)m=lntDPLK-YqEb^x3|QyNQP zKr_U!&n1q4Z2*`Px~Yjv3rNs5lLi)?hBtCZ>|U)FwYLi_bXOnPAL1W&LFoq8@yl9f z#Ww$}!q}eRuAUb`6--0#2me-!>+|t4GbA@>$O-B1_#wQIPoim52+-RGmnOJ|2XG+; zkc99|j17ZIc76ikA5!k`pup#2f$ccNI1spkTDWm&TTrhL67MdMEg_JIX4>(wk0063 z9Xu9j=ze@#DA0@`x}Cg3!MPp7gpnP03gTg$OVC*h3p0xokcOY9ubYY6E2qB%mv;O= zCUx*F;GnB1t{LBzKR>PLSneKhQ-cFzNQQfdCs2-#-A~m0Lr*)(>VdmIl~G@U z|D2yO5kUg`qW!bi`|upWxx2b6QH6dOQCLB~9mvg~VOHTG3Vz}Z;a5FZcUtbB4_+ln zzKFhwjvjZoOMcne{jh_-_hmzO|GoiJg7{qOyV{8QWCw3p`EKgzo#{ScLkb z|N4P_*?HWV8@Z&n69&OV{MRSk5Y4sFp*#L`OWzrwk8gkWCCRL1b7ur!(Szb9a597C{{6vvjplIq?dF%g(5HX? z_hrW&?p8OFI01Sb-qUJ(;8HZN~^HW+osftX4sQS?;#c(@x7)4h6p<@FkqP>yS@BqR@bSeyupm`ZU4Of&$Hm|7P z@Pa%diBfimFXQn%m8YDtb3X5rf<3ehac zwJNYY@MgGFM!f!Am)rp)O}GDvvO_;IbBS=m#K>bJ$#X@($W3r04Un9>9!kO?b$ZwH zbJ#%tLZD6A$8nm&G>^gRHcjEig(1&^eb8mY~KT)X=| ztWoeo!y0F-n`p^Y^4*P{S!3Mi*K|*|nx|J-w}HW&UvP{*Du~hUIG^!2rU)%-oJj;& zAiW5gHwXhu$5%Xz3&ptbvK?jE zu+WqZTPv#DsyO8BL`wC5@ndf2L;yNb8TWz&)W~I@Nt5>q*Y^c0cxN?RV!cHy@Jw z%FcM_fTjC>6qN{R
      {{84J2bK@Hdn{*&P~kTlV#+r-Guuy)BfF0ArRn*Y%4ToV_h z+HLRD#-e0}2Y#wuZC-T86skUc`z+ni$2qWEdkjZB66kPF;EI>gcWq+m<~gK*>T;JS z_>jv1lwT$%{gcp71&IDMbopf~Ob-pKl5gIqKXr1=`TCKpUs8*rhDwRjJ@w+c5c)JP zq-wHzHlJQ^q)x9IrR#AMgVuFIXeX9KfL_Q2RX=*T9^VMgS^MjFS^T}lO#UV^jq6v{%SeRC`Xg_cC6lcxm>#~QJ(ZxoW!1w8P&1F(|NT|wtL~jtoL4M}y@;aH~+{)WtqLwPuPlStRj%0==lo-($uta_Rwz> zc=fdPJR>|icazT~;oW0h=Li|{VRtuKH4j`++jLIbzcDkrcFr<-Xh8$+SHy|p3zhvf zG5iV6R^Z&%=tq?4KGf)GQI+~zn_&5aw(`Q@!ZR8dNqCf7{C7BRbGcq(POdr{r^&P6pX6tAzELrn6hZ@IB}!Iyh>5-ruF% zM7IS7yRY-idFg2k^)=JS0mhsUzErjtzqX!i?PVs4>Ao)(%w)XYVX|O<2Kl*hgPpw>{=1p>H zE7+^mJ(d1TTlpF+g1w@E1mHuJ!^#yM9ju`IEgBxjAH3n_i0f12Zf^&dYm2L`yrW|9 zc;ETrlk+1mP<8fGe$`gp#gFNYETI8;;(vD1rr^C(&$=~bhKG(2i>ur3rK5N*><_t+ z08=pYL%BqKpWUQamNUhFTW~YzQ-vOCZL>QIA$V?0F410CbR7nA=AH!9oSn1Tk16dP z9|dCz>M@`ZEVK6|awfLEc2sQ8Q{S`3IGYQN`Apbl)cU$%hTi9X3e?VoW)8!RO3KLJ zz{b6+?7Z`|u`7=nOaU&^P%==1!c1P0vS;Lz#gF>t@YLX{n3#2?I1CVGK?>E#n|NZu zUNi}SWbd6j^FVzp9+P4(&K!?@vc*d7!_CBUQZ&!Djj{zfdskiWUgealiZOmX%GR1m zr3;D}j`VI9viyfTwjGHWaTi8`CY;b$MB``}W< zA;isiGa35Clq~9E&Kw2{L4?$6<*y8$(kRporEpiRaN;e0E^fr(`!r z!&q0xsCINed@eiGht0r^OI%yAF=5G2c_in9@4f63P1tk_*oKTs$GggiXxY;HMYj-d zxGkfwAVG#es5A8em^lw+P87-9qWrfvJylS$r*Fo)_)pAQr*=LF0*)g>(nWb(1!QoE zjY{u2iBZXQ17=92#G-{sq*OLu`~T6^ImKdlSTYnHFK8I*MDyGTrNb-`Kc98&YMS=6 zogWQ$r5EAlu#^x*%Vag0o=|q2DPV+pL==dLcd-bw631mulM&S5B@bKDGr_ z{3OS443{k@7*WYmVNb_Z{*UV_5LO%9~H(ck~gl!Ue$0A+(9L*4@@!r27=$<-#giF8iTo@${^{;+H_0} zdo3R}C4RPH+#yM!ULkykNR(i6ph?nz@V~J(80ZPy(U4lQcN##c5o?9vDBRKO+vF0& zMr&qWBCYO{>MoTuiU8C&krPq&)uI&8v4`AOtoo;&Gs-728S8@t4QZRtGwuN9nl z6IX`#qn5d{D!7?_T~Y&^}`>qN`G;WI6fHm+TN|hIM|?7aTQG7eX6v)9VIo!!K0rWlHRDr z9F(krV7yV|QB{1H7~6PH!O`mL@M!(`<`|kvb>I$vTY(KWK|h=XSrf+ZrfmhAIQcwX z>2b1;Y>SvFu^l~uH&ChWi7T=dVH4lSzn*I|@_B_=Q$f>`00bzf#mV63elpW~(_ThR zlz`>LvznrL^GNbqWa<1R(9q8i*=K}Z z|3S+#>xh%g)?G&SyYNWx&lk(axFrG?efI{V176=R=aAuRjHQk{t)tb%OH0P-nT=u} z0_v6ejrLdDrlx;D+6iY;rL<8DE|*Z;?~u*|!4qCZXlH>?@mJ>TNzpXFbXKIe!*Zu= zZO9Ez#bcw)B-he9cji;NjNXs)lr-S*jIHp)ZWdws-Q}_ojuLFSqh|eYQp!zV9rnHc zJ^Q%YQ;Cc!=IYfMOk6IOXxrS!RyH3`6V!1O|=@hku1FI8?E1yq6}x17`fS?E9dOhKrg>K z)TCcA!Z#Ja)kBRr=KH^Iu4Ab|OoJ5+CdD`W`YLur3r<6yjnEKs^x;tHHDXX*^mL*& z6*Pv@yvFWB1mi!CjqMqc&wp5b3ip?XH+0zRvmE^^H<82qBDNs>S@qD{)&I#%Vv+8V zWOG-{QAC>>24eWFke4|p>N`hWIahe`i6Sg@7`|oKQp0B6&JyPSRw74*BiXGGo7R)- z>t;6l0+md+-O8-Z?~(?e{qhi$fys=>2{bW#`0-&=*tAp zR-1>J2;UJygT^*vhV~TgP+#em4}FvmXH6A~cmz0bZS{32Y(O}8gEwjRx)cAa*tR-| z-Xl8+vJUdHHB6Am;4qzociOXPU{q+KMG0$TDn#XDGi43dqpW-P5~YDp{xOom*AMX>_}n@R6ehQC&ZOHI(R*=f&azf*Q(K@sGFg)np1^orDe>ER)B+7JeyjvW79$`i*;Z;fY@-^ zvwhH>dW!$9RhoWVBS`?isPgH=UWSK5+Hpw+8<>jGMc`|oO13qUaJ8Lz>6EgxE+06d zzF~_6mUGa!`F^BPdq3d=b>M+!q@SS53#a&_r_|b#AW*!2JEuk}#~<0tUD$E!LrZ1* z`{a8t;_$r25$4NA%Gj;;d6$$1Pw2+}bP0;V*e=WFU>w|>N7sY&X1-O;AT2d!w!CB{ z*~XBXFV`eq-el@`Ms!+$pl`QeIGg{&ibY2Q`cOV|cbgRvUVh@o+G?o1Y{j&mK3Kah z?U(t1%Nh(G`l^|~>H(CDqK5xU-u;&rSx^1U=rQ*{j&dqe%}GYjSs`Z1ngyuXv%cls zMO%lrrtzda!X`)?a!Q%r@sJ+Y0#?V|THD-Q@$*;q45)zRbn8YSPEYz3m8k(Pk49o> zj-JaV=MK-kY`IWg(VWaZaKr3qAPNQ0wz}gSZQml$RYO%ZxOTLv^lnKjA?(nFiB>P6 zawE&7FcpNtw+&K-l884_N12Iq@{<1aTyIWyOMwi!92eD56>I?d`PMF8zw#2;{Zd)! zLgiN+Re|0sulBfgSeRkuE~uRqb3v8c7u1Q~JJIaoS&7Gtd9>l<%PgN{xmQ4JfdQ`< zB?Idn_$umTmgwAXanJTxeNMc1>|}kQA@?~e&O)&rTxuzzelBcUeJ!?}WxLVk6Gkec z>XPfw%943Tvu*Q$#fT8yJ~~nOM@wGv6QOz{dfbe9#eV(v3hez^6|}0pP4&&?(IFo| zTUjaM&9F@NRS-B?9q$u_eQ$Qgmkpo|>OpLBK6*OcEkBTJO^U(5iVFQ3Ul08+o%2g< zGsi$8LX81@zJ=UF1`ZWY_Y2=%k^oFDriQXr3-nVA@9WIBq9h4*Hn}W~5)U z^ntLYsb%T7=U34|BzfgOrVP2rrqV+O8Ic4f^yExmM;Dj}H75*vEHYzBQeV2p?Bvb8 z0+W?Us<5r9ejU}&*NkLS4Y*4M6ypRr%525OSl?SdvLMQd`zV@ zdlCA+ihQ`18sJ@%puw3`qQ)?Lel5$uvW=SCOa2=pw zj`AtH<^E4?N1nm=a8a5uvi!xR6(K2Nc(93cedv9`EEx^XN6Q9wx?GTJ9C^WjRwExm z^lX96ku5_3MNF3$8DF4+U=M_?8a8Etqg_4uju`=H;@z0|0R>^#-{wi0d`k8!4#^JMZZ}Q58qV>&w=I9csw7&1( z@`E(!kZTIA8~=pL(F;*<%zfdd4!NS1_U|%@hGXp(TXO8?`&0x(@}#!~REvOYeMvmJ zVC-Lc^83ZB{@4cC)ghDBI2D;}NhhX(B;Dn|vk|v2BgBV$Ll62*#mr41P`%TJS8n4( z>XjEMxrBL9VxZR&FA@pBj|RyxWvrx=ok^(@jwCThiP7B8K&1}uvDCM!b6C_cY>{2{ z!WA&t3@GXUI+$!KmOoN(L4K*t`7!4^)zLx9!1Jx&HC|v|7NX}KjjZJNqf|*Ohdeu( za^K=eix)>PC>q_%lunNKb~%53fE1>G2ucxRR1DuK7Ny%;>{TANI^9r(WaaO2Vs;>6 znkE%A?i_f?@a5RP?M%1drfzEdW7_)*|C(Vx8inV6SMXrH*KeyfLo!$YPez#kpTRI$ zi@lO8bL>n5neKh*Y!r8+3)e{G9BvB})@7WXkUo+zl^s}{f%vgla{A_ahoEJ1@LOwQ zOGV|iHW_)e01r-d5@Scj5J_I&;y)cYPC7f*Rg7Q5*ap39U+Ax;!vnXHnIH!0b0Jkw z3#DU}ar+8H1JEm3URmCttc+p>f@=lQBS)yIK2lMS=WeGQ=k0QRs6FX_qDe<4QfTrV zsBtzxQVk^@!xqDkFmxTS^rXHkC(mZ zT0T|0NRReQ_Pv303+}SW)R>0+%!+p~?and9ChNY%>@Z~3CR~QJyuxaC(fd));j2#I z(4Om+$?d_2{VYpCHFuUtp;l5CtrR@dQe;f8S^&RN%H;6$4=?ljmr>#}G@ z^rWYwVrw+pg`5xR(hydPSHT!eAL|>SMjh;HcW5SduXp_P*CXh0Y7iC*94t_K*hg%V z9`f!>l1Ld;pC&c5u`~XDdOz1=GdmsDHfehRDDh4blh1!;S$*PMNH~gN>gEuaLb{}G z&nngZCw_o2kMEOsemc8F!#1d`WJbN?1}&&Jr`%DG8rWa$c8GQS4#2 zf4Q1&#SOf$i|H#>uk9mtd!<;eo)LC!Y&Bwtf=*lKO)6Wn1!anwnO0y28aqftdQ4WX zzWdb&=XvA7dyn)&p}heEcnkfV4rMxRsC{eK<6!t~7_aozd?l=}4=su25PR1jv@}}p zHV-~pE}n22er0CNWae+b=Xt=2 zmN)eR2dzU9a9*2$wd#gS%!u%-!$60LB9y|t6}yIbzsr~H?ldj z=0*U}^U(g=23wGIWqUxfMO-$dQXjJpB3F?r@ zh!oLqXAh;GPx;3oLvS(V+yVBrM~_f$sv3>=&s@io+|Cx#Rvzs3|kqCqIF8^p5kLe_?I zkT3UQXBxa{c3ztN*NopvM7(o^b{@+}2rKy(qC{m74EZi4YWsej1~7vur7_nSM0+OI z0R*b z8U6+6l#VhcTN3jYwbqDwX0pPmFGngTZQm1Fq~*2k<@TmusBS;SV4$bOhC30QoL{+~ zPEodcLblXYnf5}F+NOs(nLF^bbdI{n{-_5H>ObwgvBWh{YevYLob>+y4)R)aa~ENT z8nZ^2*81V(iSr@mOJEAOd&5k9pV zn9B?0de4WCX3>zAM6fawWDr^*EYrS=laReVv6M6pag$XP+X%L_mCRy*QlEn#Am2o$ z|81c(2GSeo5*jC`yhj`%{O9#51ejAIM^-K1#Bkue(q>M*71u0R6GQ$nm%0tjSQ0cNjm_41C8mxOOB&`ZBTYdpU%!sion>b-BAr{~Sp*T3(gN>r8kC zF7@KSPjn;SB-))Hr#l{AGW>)W_mZoAv}T(_{nDNRvmpn_p`B-FHE}s?4ph& z{qn-{TWWMr8Mgk_uk@oyd>y&#o4j0R4#)fttdg#V6=X|CIL?)M7$dLSHuNeyu%tR) zbqc{2NLBywk!|Ef@HE!+P_{$!w`O1^tk+leu$bM%#uMtO+3+9;zUB z<1TZC8KdCN0kNlu)?Xo*&<@j*(mCT{l=rB0q?%rE= z(8)sssL_1xDBlBdS>s}XkC3G>Wfninzgx0kvnb!oQTvD@ht#&cybn+cse>!TLRKX` zPF#`sJE*be6yk_?EJU?fz>y3-cP~_6Nj(34iJTS%Bi;`u`Q6)I1%{ zh#3`)tyNv^0E`O6%uG!GyW8aK;`$$Q{C_PdVpeuGj{j-(sa03o0dED-Z>2tC%v%}T zVke+T=yKF9YeYVWM9gts?++jtx9Fn z{L~~R!n=A>YV)MV@@{B}x>>D!D(AM^a;RE|<(_pyZ_{=^{haro^WC7uUKW&FeCtN( zAXD3O?i<^qoO#Ek;YrViHR{_b@q=4@zHAi;)|$$0k-t2kB@(Rod>05=n5i}0>=ihK z4~Xj0a3|eQ{N<#4c*s)ON^hqq_;k0hf$*OYu%JOw!!#8zm|PJ$v#@!$fPdO-E26|f z;KW!hm0AruY$QR$5gBGXo(i3PK4Se9#Az zuQ0B<_-v?ozb_#l64X3q@na7NrCNd*T!JGJv9%IX8#!d2B7Cp$P05}#t$fe{d==q8kg(E+q zxeTV1Jx%bgCip+NssSu~rTh>u*ikh6X^M*;m_3jv82jvKBx*8LrQXCv){b~HV3=wo z&iGrQ>qFiotGg_>5TuClIN$?pYosQrk|;!?RT=ou2c_aDL_;ZAdZ$p9>mSb>c^*Gc zb#=pMu1&AKc}V6%T_di`Q)3SACf)bff1`=w`?x)QznKT$lz+_i*PMs$?jB{IHc*f+ zfZXZDur0EEFT>4m1$lG@=%$J}k2iib;hgPo#EoaLVgojkG=W)I(chL_9vmGwOO8+q zIgICbkS$?(e@e;=k^_=9zAwA=)qYUE-iq=NPW)p&qBnjpc@@HM*~IYo8LHiTZhAi? zwFJt{A|c;@Lv}ie{N8(IS!b$s^@1$Rib=>JrL4 zBUNm>GO-hMqiQyP@5XyER|(Q<b=^X9z34 z@S4Dhp$};eK_t^O^L5{+s9$rG5YTV#|&nMO5m7$e3K>$%kRoc#~)v z1oj(&WFh(E4#R`3JCjb;e*;B!0_Nyn zW=6CpKOtuL@skCUk-%q@@#0lY9c%sd$k!omKlFk&y+Cx|FxH*=C;fMw#RB{2K!hX6 z0YjWYZXf?Ii_Ntq%Rjll^)Z(BhD*UO0(xY(GjqEyz-6IQPHdzusHE1eSR_pvC&8hd z8>y5om|4PyPruei?%pJ$<~;o!yj2Qt*B$%!(4nk0YzK5W$x@KgQGyEXG=r@%%UCN1(DbgTKr#tl^(8 z2rkW+!wIcEz^$O3y5Hq3E+kSD#fG5B zXiPHNWUtx&NZDE}*B&n;_}LwuIS=OI=tPD8Q8WVnE4JX~JN1nejWa+rk5fLjgmtMy zFJnmNn#q*?y6euG0>z|`x5lf@o3$p|BnXIzl^Z~o8(wAq)m>b}m=!!tRzQG+yeF>=MX(`}O0H4_xwPIWUQXbLyT z0p6{{2?9M-3hFV-Bt&4}zcw}1jzx4&Irfa~(QF@Rga4o zJ+D&zWJU_UIGl4&^OnE-31136!1<>$B^y(-cXW$eW)Ee6IpAbgq)wiaqXA{mjZp|c zlRBb~4bvxxI3*L*(4<#UGam?{h^%9U3MeFsE=9BA&`3g-X04zcSm1vZs0B}RDOoE; zm5Z)VjuIMZd2OqMG0X9#(?}`d<^h<;iEa~V_L;)uAb5N0s$ z3_B;09-GpQ@*an&nl(TNPCHg*+-cE?OM?cIsKAyjs3a?igo~U9l~(rVw4nq4>hI#U zkwQ#}Q1!Wz!id7Vk0$YsN@LQ&HNvIc!J}vqzjM=02v@(x-2ZC$W0-5^PB%8|3~#r~ zde*OlXh#=E(re5RWFE+RTH(uWuzIgWR}aL}Pd0ZLCz#3ef_hT;J?Jd<`$n6!RqrJI zy5XkK^tMq;I1y_=Nd?RsCBrZ9O*DB;(!>c?Qknuk^SAN?&Q#FLuLjasYKF#Rv0ylu zLzZ@#^v^)P82Xw+YNblK5+h-~C>RK^rz8os`j(3TNH+MA@T`s%9|=hjPBCSNnDZbr z{0nM4IpSGMNI5EZx@^#3VJtdJm6CG08{vX~Hw2~g-uq$YogQ>)NHqz^AbDxy#7f$4 zQohrY3lsI@*SE7bXnz4dEUuBTu0sdBl7sp4Kq~s)dk>UrZ3xU51eI zesc^MFpDHcwGwYpY|(JkZUa#&Snfq7BGE}&SQPX)hMkiy_z|h5c+vNeTU&`jUrZ`5 z-~-6OT1vv`(g<6o0BlrCL=X&oDJcl+mb0J{))q@kuDDI4;w9G!9!wP~x(qB#{{Mz# zRg#R_1p|;_le3Uhs`O(*XlK~)aBN}{>$@N%Zwy+A;27K)i8KrnZV4-5%x6PhYAW<} zgm)(QCEUus6w=djO+o>N^3XNp{IsSp6w=M4ifHwENoj>}Y0EX?Wd+i_A}fguI3qz$ z|0y@*Z&?m5K&_yNqO^IFJ58!T~y_@Zw8wDf9D^spQDl8wtA|>b(!150WKocHSSPIcd9Y70)zp;l-YRql3eu@rF zsKgXEkclalane?mnT_>EISIJZWy?Y%_Gq${_@$#zQkUs)Mqaevc7cX3Bsx{h0kAQr zR>VO6XJeksP-n|~TSm-iEPe-AJHm~jcuS8CBF}m#3m!PzdC%B=6(9aa9wRJ9g!>x z6u!#7n}9^swyKtRfFr+9nl^O%cBRr(kt27YDS~-5)XHqZ3Y*jpN97x3i;=Oy_`HS8 z_?(1DijMHaAMmIcb+_zB7B;rkv@i^!sKzPC#d)nYmb75e(Q^dgLV%8}I`AR7RZ>KU z!bF>)TGDibXQNHwJngrS)N&;Pa3x@#w?GEyj?*PG>U?9T30$cF`c6HUGLE>7ZeXk( z#kokd*|c3?9=vWncS0@962I8M&~Lo8PGt?wj_chb0bA@sW#N91_WT){{-0@*`+t}w zxw+W>&({>(tZe_&Fd3?~HF?E>*z=P|%BWX4evu)d6JDr^!Q*4d8$cUEM}rG+_; z=d>cefqm42XmVlaHx34=7$_W2PRhAWc{WvR*V+KK)VKtAZ`jwsv*KDK|6wyz4*_6~ z0Gq&52^H6bHw8>7c(q{fQwVy-5iwPMt1YKqV&4<(3bbhe&H-i=o|9F!wMqNZowZAK zv=c9>RI-Bz=84!zPQ_KgBxkZfu(TY!WQpVwUCEK;nhhYX=DfYhxpxw0N|_>s6HtdS zZMx8UKueSZAGKHppu}ER79g)}mFjfrU3!gVc|N1i=~YSU!FD*Hq=b8K$lgR|0;*r4lqPSspopzvPNMa~J1On6OCWU`R_Tu1MP$}8i5Laz*F>D=0EDcDYEhvn zLuooTs#S5No)SxX)T!!(-Z^AvRkoTc7u-~AwzDwoKf80piJa2EzbSZ?x^O96C}*2w zkLN*)xB)4T;SG`#IbBtuN!&=aJ&RV!{}#%VI#R?BWR82<(mhl=4Y~*^Trz{-Fic}Z?oZlZ)OvsRF4BK`;saM^ z40=Be@@2*@W{CVB1D?qCR0GkOKaKr=cUm8+JgK?18usf+|6MgOK}y zh#{@22$2E!BSiGkWyDFy00I#~|C@yWZvxXtmlFpi1MvOdB=sN3bfKD&l+dshi$v2b z?g3kK?*;vS-t!&8_67aDzwo`g^MBs!FTd;Nsnbv@QlqtaH_~WSVo8^1=MQt5ZJ(mr z0-8PUX)|+u9u7CCn-c4w&OD56epgv}YZR;FyuggeYO0<^CD!eN7cffvYryuE>3~!# zHU*WX#F|m;cs%cbegs$30Z2jJ%7k(b8e^jfsPCevYtc9JMEsh+VqQF@ zMAr||F=Z9@2oMIoToKk~vMWS?OdkFHs#p^5a^akOs=)6`j#}VNkEPu`1t`GicPwHw zI6>n70`TlhJr9ubw43}#NeLYyO)fF($&$D!=_qCM-k6O}s*VQZ%~ zCCj9dTHTuo2=zgn1WgDuL_L1lWT7(RF+Z^@QU(h|G14q}K{}jjNB=nF6PTl9fU9AD zN>A=2;Xi0ci;b%FBsM>|0&@r}r1qq~GLars!7;aSQI@32)?Brzrhr`U*Y z(7ESli{3n=vPwPqG&#MAMG)IM_=1dNc%H?r1^X00s~KDyVMqpKw|ant*=BN#_G}E`#Zz1)f0{8Z+%yaC zP_cW4VP`Q8f(jckS5Np2ZwQ%eDB0pbi%qydgP?1u3zQ25D|Qhe%Amkv1BLvMNAO_e z5Fl{D13!tQUeGe$VcGn^&VF0NKJy@ai(tfua2KMqJeWt{jLT) zDD%&3h+xIR5ir|IhStDYY(PxdKEx?B(85v=0t(9s>e0DXjll%5A$*2 z0E7c615pVQT( zAwV^F`QK|!2~|>oV1iK&JuvwZSpH7l6n4rtIeiI7j!_IWycMtE+z=NaO%VR`lLvF@ z4fSPUFUjI?FWJa|NP;cVNmzQJEhxgd{|H3va_E`WH9YB^Clahx{J_)2lyv%k8vySA zsR3aBKL&t{o8^CO05Z2GHznZ1W?pD~z$uc<*#wcnN@t5zWX=!{cX?q_Fq2vy?`hv2 zJW93KTxMO}4m_V8Vv1L`Q)uiOO4ZgiqP_(kR4@*&pTMvtLg&vQK$s!n! z+jL64F@x6h8kccHSGdnTjAl3cW%WGXnM5GZprB?ZS+B0yg3>TdT$!fSOj?;Pg_@L# zo+D%;HIkAwnvg_|6-!bn&C3?{DICfcrY4WU7M3F4Y6V}Jtuu$M!u3?cTyhT~ZDL6* z7F#H7yn_8PR>drYSIAG55YK&;9sy#r(l{k)UqZX4+$m!V) zG5OkDv%chSlT~$~T}&6?IkwfPX+JjEO&)K+>l;<(D2LrCWinG8vc#Fei$jR!Bx|0` z3RbU`f;iPh6C+`=qZ$w)6j=8+Z4wTkq`jvBl>JAnA`Wv(Ga-Y-Ep)qX6Jmb!fPcj)rI9%Hf5s}{_dw0G6$LG^k{ml*M_xDJ>!_S#yhwkG+xuQbh zW4Q>mg77sXU+?St^G(~%n}*VRlmF-2)QW?5z(KwL+vnfmkK2WvpNLhYN7PJt(=6wi zT~aIMhIWlefYIoqd!>FgjnH!ng&v*M3}sV0gwoxKH_^y zTr4>l@S$v~*plWs1^e;SQg>V|(5X(QllU|^0@MZoKS030A-EG^LP?-WyU%|v1P9_A zA3EZ7;x;Ag>*9EEoY@i=U=26K_Rh$Iqbv(|CzPe);JIyIf=+MpxkTA~{@a_M0pL_P z5bDSX^Zh+=`wc1ziizI8BZ$2%Xjsq>2JiqPiv&`kXM(o}S!d=LLWo0!qfEmIBS8|Q z%Sqf4M&WXiaiQixY@kJP)r1;82cZL+P)b4zf>}`WAQ4hJ15~21;0x8jOBo8(?t@6s z4E)PbZMP0MPuI!ipvm2C$^w1IUw(;9Z6~Fh&0z6`r#o=zmWK zJ(!X0Njv@t{FQ(eGy!J}%!no42Ami7VDSB?Y!7|d57G=+A_VHq3}6l2)0dPv-Mq-$ z-_sux7Tm1nOPXoS3ut(X*1B1XJERI-jse@zz1fe*S^kzIw7a)xW~kw8vn8E5t%}$4 z&ge2yzYrNHTv*`@G-N-u?nLH8-%qImRWTM!G1)A(o0z)h#5h?}#6o=>1&b5lDllW+jp8bBJCf1Ens51(0l_7E6Vv z$x=>~6i2H%R4#?2VX25<6p1wzRWntZ153?!I#I^%NR~{+tQarwVn#nD3xB|g4erN+ z-lGrhHHt%rufm!FA;gfYm@OWJq%onq9g&mEMc4wzeF<=k2V`NDz+!l){Sh*=g_`C7 z?~KPsv}fV~H_vvW>866~2?r>uF=dB0Zz}glvODuk5`flCLLRUfI^(!lNM1LKZ~)-c zE-m;y)GX-9-1QFamHsk-e@cbp7O}K}nd{ya?M{R;fX7S)teH&*m3j>@i5^fGKBMmT zK!oUn#iR#J$npik3v7Yk9UCq31stX;L5I~fY2(8%O zNm<^gp%FI9g^-_t-;tL?oV{d-4{oSM)s{vkM8a)KDuopoCX$URuoVd+S64ap5##W#tRps*VlwM2m7xLrn z#=Z9*VHbU(!z$H`NMGWbA5$E}HTBA$ZbMpqripqr(sZoAJxG$T{fvA8Y2y-DBNn&_ zEZ0B}1q*=<70IE_c6f?Q?j_8yhs)KcE#TCi8XZM2o^%R;E%sA*qmzSA`|01{KOkMtg;E6IQUwW`#bi&tBf380~sZ!_O0vudT#sxQ_hrp~no z(8J5lK`K2;FNL_m$^N-XV=333pwnry4Ae^?zs;0tg)X4Eb5m>8jvSKGJE?kZKrdUW z%`5Fvo4H9?Xb02K8-)=QCP_tG5Ylk|ixRG>;A$pAM%lqaUa2EHvk42Mm!R;3(!V4# z>vOYGiAtGY!!93Hj9f!)k=V~6C#~TO)@-=22a#}*gxYHHqNZ@SP99nea_m&-U#(e` z(j{z4&rxC^A^GX_4qzmo~ zlHV3}q3!N08SMB^L`2n{3q3Z5c}%ovD`KnJ7{dAHf}YQZiM9mZuJ>Q_F6V+-aIIe7 z&j%=T9DHm4!SwgK%jrJ9x8b_W&*P$|3IX4@BV#DuDdY_P{M29~Qx-a9O?Z3GdQ!QKW42yjh% zkR)(EBg;Fh9|$X5y7kFbIPKb6Yt?cnjKs_Q108c^e0o;Z z4EmrjphTXwf(Sx`8?_XBAbO9jM|Y_1c>bY)3(mSl&D5W6?0p%a!li&tX~Wr+aWTy? zE{XU4m~y*q^7wb~qeF{HCOjYKcF?=UN!j*>1lntM!<*ZrwA-X;*kg&1y+caILrNT_ zxn`;pH#$S@i2iqS*hf|+3K6Yu{=!`4@w!--*%DZB5*d0EP-khx6P&l;0voubozJU8 zl6&~1tQjLp?c7E@PB_JKJzFT3ftUxkw7NRrC=tUaqf~4UoMPijOh%=Y^kH=7L zqF>FS*E2)%UEYFki)mIe)%1gtKm~KVyTEo5b)MB0t**Y7#3TNkqh0D+L;49=6BZzr zTe}h}PrHPFkC=^t@xEcr5cb79J4LBY zFd2Y5xB6Sa8@wRTBM^V@P0{`RCF>Ck-Ti|cA=qeUVqnDxk=6Z8#R|US(60>1LIYF< z?Q1P2%Fp?G)JJlACd?De@&W$SA`A3zypZ}{*x8y>zO0k%t(dm8Wq z6TlM&G!$9%Igu>KJ*NmzLMe=_uZF;0B_3PqvZWsZD73s^|At4yUd8?DtD$C;gH-3X z;k+47x5#?33cy*(UZfoZuKots!eH=i(Nbv#(1)a{gQ&?av-kr+^UdZWxL~$u1|dJK zjA5TzB3D@v1WH7!XE~DEJJ#&6m1#1|nnt&mdi|!vsm%5+A~hhjl>sMCXqHsWeUz4| zG0(J-DCY+&&k!@v6@HIk0LEh%n@TShv9N5jpUiWh-h#tGCajlHni&^B=A4kW%#1tW zKg)!V{6FjW7T@gMi8K?;2PmsaBF(CR}y08{HcI>C*w|Y6I9(L5s||KwhvmG7EmfW7B`lrK;H#*%BW@0tyARktnYLpJ*42sTHsH zFKF6sQWdBir9U_cqncEm122=2m{bq>J7b-DWDyjt-bZ-|j9j@hs&%}47uo9z#|b;b z_%*1AVC*LAc?JB*@r#GX%qRq6zp#N13`BP(sc>e_2Jv`LJ(J)0wP~whE*H;sT4=BE zKm%PQbzR-*bYsN?lHPA3=kke)+#Uo&Y33SRa~_^XA32ESWKnc^<)>gsGFq7H zh(ncd0&N_6#YJQ>rQc?86}~U1Z!wwh;vN(36XoztKPQ&Ysy^Evk@P)Zu#s-?whv@}p>lesk_j#S;qji{xi=}HR8mQsR+ z7k!i&jhB2{1C<`l*h>PWu*UO9apSifE|x8t#61?(4n>-2o``Ve_6g(V z6fsqpq!cl>-<-*zqm{=36}l3NkJ9_(6)#kN=s+AL8piUIB31q3{fvf@$WCXb9LTGicGvX$D896YaPC@5p~ay?HO7mol2fXIwD*!t|=!fK5Z^m~3ePtD&D{JeS2lD^t0`}LV{M07=s z!Kb{BsVsk%QCU3_nTrImNgVCGe^!k=LR@_6y!zXQeB!X)gU^$x?iT~Qs2q>Rj34jiXXv!QR7Vf!MlXPyC=aa zad&b#-t5qCV0|u%RxnZkCOvQt4|7iVHBmzQeMn+&Azd(Y@NhNNY%7bZPvjhAFqP9 zA*p4Bqb0YGP!#?dttlUvWE}GAAO16d z_omirK4G@~9kDGuq{#xx+fPk_0o!a)NsF%@-E_V1IV1v#lngK7Ig+DUx1Wddpd0;y zQ2j57UXp?t73O~Mu`mAE%~M8bsQ=-0VDm$CL}Tvsvx%NCMAk5srF>f5ZqqF{$wd}E zx8p-{%lyJenm-4cZR?3%#C;u&9>j`o%0uW6$R^5Ca=GALKIR?QE9aV)-lsxjkzdeX z1uyH#;;}5%B)aMm4i0EXYM<-5G9jN-=Q7_GYf^r8Qr(z-HAdY@+LJ{pHLD<|$U51Q zN~KD%l1PopVCO0oYl@XrooHop2W9yN*^)@5N?ls>ZaMUiSL7PNj_7divpPMZS=Wq%?n9zWL!^D8Hn(~*ID+In#tf3a<_$x1P2^SAL{WLHc3{5#Y0VoFkc@tqkWWNig{oRWG2(tNDg)cyh##9M&lH#+KqS@0sl zM!&|KjYp*SSse7%xgr$A6N*LRsPRMSXs|v>h~u9j50EE~$-)H3+FrXfR2{HqJ+fBZ z%|mKHM~rD`eJ)K{i*+#ZR%DQ$uP)6-Pw`Miok5~`aBCZeXydm?;=UNlX-iNIo}B$dS^Voaeb8J*|}S? z7mE;d=b9a+v_+bIq+hv06`_Bhu_xb?55A0WJ&nSm%6$PXoeDQv@g3$S$4$8YXT>TY_Eup#qyEA*3Vx^LM_g^}HLCtE5T2l*gS6 z<}o78TPSfykZXiQN04+o*eT+Ual!?53O$Rz{pkp5LCw6gl3&{=*kF9kwoHpC?a-2# zi{dF7lf!D(zkij8V3K-&|Ct)(=u z$7-Q9)RMlSp}CTJ{HQvC-N|)hwu8foO7(Q(D)WN4$&JQySAyu=R@qi>k$@$-BGI-8 zX|f=yvstsK!7W9N^u5f4y-S&$drh7p+FsYZW>=&vGAPV99Eq2RD*VyFIZE^FGG9nLwM{ikEF}tOB7y%EL9w$L1S~ z6+vMNnubnUN|HZ`%|6@ARg*Idb)@B&+%r_dtroRXTE!j>1=4EVv?$P8@N$X^aa{Cf zipm;_=s>v}+IDHdFuSxub7JO%_j|Ri{Hax1`wfsLof+{O}&3w_109 z$0zXlw639AB6`pSm4_-ET|%t za$d>V!lP>v4Yqnv;nF9fMA9UMIPm_Spu+4Vu&5X z5!5Sk{BT`xSn)4)ZUnWW073~yhf*mjb+}JGvOr0AK{<#dY(8nx2yq5s#3S9Dl(IMr z>K@3XKc(DpNGvctt?Yhs>?tsT%DY1a$C+2me|zHzI3y?bjsO=yk4@|69tK%uHtn?} zR>0-~2hFhuDbj9I9mfG58QKQHj#D%sBsxUPQSNj)6=#|!e87M@++8!6Vll0`BU zu_9Ywm8JJ)74i^;*gF`!vs@@@nNMu|>a8t_K5Rmv(iUe`h|jub3dYqpxKGL&^IB|P%v`QJwlS8j>A;BRF3oRNlP+Uyes=8 z8(vhLpx*%`3Y5v@hA#g55LW??GBEnk{haT#3CfS>KbSYy+F1p-nIa_^T+|g(_ajyO zhuO6bfIbT!*8~$$XQ#U_#>#AE_>V~wtc!`fycKP_`f~J$zIS$}HE|k<8S4zcc%8L7P#mtf^qtu5? zMaW}?_#w&)_Xgg_;F)aV8vQ9$u`ce)Brm*xuXOn1cj8Q`JK1m4)q8T&Q=w4t#{s#} z(T-Zzt$)$^D{ZrZ&R&K~;DvXZ#-G**?>3wsggiS;d1SgvVYT~ax{b6yjnWU$cXPrx zJ@lQFQ|Q#R5Y3&8lbz);3pv^w$q6f;uam3MP^QGzRchLU<^c>yDN?^}j!A;QmtP$S zIQED%)WxINi)sn{{re-t)PRH(ad1v5oE0@O=6B<|mJfc_s8wp#rVn4S7d82+Q}L9- z1xz0|RDw;(97ZDDcw;is$+UWolE;T=!)N@HJq%-tvw%oL92YUfMMD$DU)vDJc0jS? z-zjV!&jvj%5Q*mR6{#*ri5ml;Ol?qF9Z*ge!Y?tfv-~4-{NXN0bJJoO(6SiW-tlLI zxvXs}*4KqeM}(ylE`aCwvE!tT0W|MY?bOrtpeC=t`n0uFSS~!`RluIJjcUFmI1BaE z$y%F0z?6Vg3(|4@_#9*SEu1o=Pn-X5@N|Ya+z{E#3c|0=(J+auOS69#Xxe#Y+M1Mu zv}YQ2Z7mxICnll*>Mw#)bYIDJ)5AAsW zD>(!POkW;c*SdJKt_-9@7XR0d*ISrlx}c`ApYMR$_Yrb1B-nMMYm7(+W2hB-5N5D` z)OsGFHb8Rz5?MCLehDVr21pBZxNPqQ$TfiJND#(Ch!Qq0f(0d&rd}nW5f;LUY(S%* zG4d5&r1OVJdX7N$eSw+J9y)P{5f+AFr0J?3`P<9U^vfsgfky0qW(KVPiw6X`{x6CK z85>jh?C_z}zpB#lgyi4S#6(h%Q6-^Cek0uFL!}@~l@K!!d3!Y29NsD@q{{Jn+8s&{ zF zLR-pHszj{BFA74qD+`y#%26I|iuwRa|2`|Nsj5c@q0PYJ3W(^T)ALJb^LNc5(L9@` zlUqcdqoelL!qvpV6}A0i=&eN?5@=iGEL4LjIv&D97rF>HX>8f&Z_CWaPTYX~0uGNU zY6GCg6paELV~SP*bfgH5qZKekPeVa5MZt}}8fb@&$-@N-mr9sn38AZ*zr*WUR&)FX zA5D#rT%4W3u7(R(ACce@)iiOO#{mdS@)Rwbljh8Z(I*{6&$0ndja5*h`b2RO2Z5kq z_1L;@t_Caa$bTAGkKs{Ybrx{oA6h$H$y(*urCD-Qge{s7alu`On4)#vhAba)FEAMf z3aJTw8s3_meU|TPRpqjZJN=re^a`;?fH2&TTP$Dy`^E949w9gmAuK(gB8R}YdIq)t+u2q z+ZqiI4NpT-pq>RAFLilb&6>3EMq$UGU8sGi{#kK8gFBtS;~K&0X-ZRq$#5)~|Kg*Zb{>nP#C3>@h!|)>pvq{q2&V zXMVo=B2Lif`Q=eQ?_yfeuY>=DXN%D9?UZQo1#!8z<7K)RU8U9M^xGN~t+bw?kz$B* zjSzn|q%4KhF11txN-a$u$`6|30A`Byq06`c{{UoysM1BO5M|bc5}->;fWL(k z5YQul+OUJoKN1jp(UUjbkxsS-t;a`ZTI^teP4&?9Z`8m#V6@w$s+^mU8U zzrq{^EAq;&%U*V6-a2T0SzHKO*PwlE&+9lVHq}VEj2N`{!to-D{Q2Dj}blnffN;bPlf!`)!I5JmKg->f~d9 zec-+F%tzfSTrNyq;6BMnqvS92J*w~sVnt3zwBIp?_kpZCYRI{P@3@hAkPyOC5Z)ev zT`0e)G*yJ1zoJ1el<{@nKPzB`{}ql&VXH5nh!u76LH-CJQjCf|BM*JRhhG7;HgwMZmXN{B zm?ig#q$2kr{aTDA&?6+h?s|;B^*EPZQvFK5rwZ;)-WbJ1$70l0o0qrG9s7z6!w$iP zuxiQ0L34riW}WP!Xzk>Eq0jVp#wsXD#FMBI3o5D608)*$MSh$?#=Tu!`%*-d^*ygr z1)J@Y-bG0Kd+6HI?Mm?0%s@4gOt8*imEG zc^wPr@vM++j-=QeMRf6P+C&WLe_xqTD7bQO_`x)X4Gyld%9rP>=jQjzP7;`9b(E2B>U?SHTHq^ zL;Q(}&h~-ooIh!R5X0157C4s8@Rty~#(OwCP{LI~nvg{W`3t~!R`e#^NRL2#$a$ok zTbSTFs%+SF-_>lz{6$K>mWg#?dV3uBTzlmV9f>926mZ6xYH1@Q6W4jjAJe4%%pIQ} zOyB*LZeNbz^xodXH}C|O!LD;J8>B`7B&~>>ao@uIme$LhlW6+vq!Soxq-D=j`oL1c z#u>t~8qyi9b-}v&G+A}evl__Y?1}OWpK=hp>v!*wNHOc_j<2IEGlPk8L1Up7+NJ9TJ zY_t8Bu+8~D1w9M%e=q1Kr^wjhyZjVq8U2^sQF#-PQAPd+Ba3u_gz*!T#HSKnKdrFl z5UwR%2%On_QBbGpMX1b2g;)h4$e!XgzUy$F8H2BsV-Tor%2aUV*91<|``8$|-0f0u zl=Th`93VUNUloA=@e+TBc;&bghI--mpOk`Sc#|KF;13d zErl&)W;3&v$Y!(9GrMK85^wd)WQW1CKoIM8$2*P`4y}&B`tGRi4>q8FWYPy^VW~6w zVhtZc69={%U&BWeU1YnjWPBznscv%C@mI-o(vj9UTgi2>Xrf$YtY~Uvz_bBl-F4wK zEY`8=p?om4M)@a(cD=RoH+4OwzWA!za&;cnnLpLmny!$XSsJb(nv1IOH4oO`i)ovt zaD#vzgF&p3u^lxt#+;ZN5FcZuPv~_m&;rBK`W<@ArARnD#?IrS*ba*EN(`pbZ&8NL{!N z0lu<}?DuvrVi;mTX)69xOjUOCTBshb-lDUp+$wHcb|~XI)o?EV8%+BH)ta)?Wg1!` zKtyA1K3u1Q{Dd_n=Y?)D<8BZ}Qj2RFNUnXM?JT3zEgasTQsTH5Oxgzctr^WO>Uu-G z^(8?pD=>MQeoB9|fK=$(v&8W!d}?9fQ~s0ccT6Xm_06x(Y0C@# zGdiY>>>lXYy`D{;%DB-lNyF<_v79xJ13d-^w60dxX-07d1mbQHi|u@;&SnK9$MoSD zTDn@m=kTpk0@(mfY=FIJP%{%p=mwR_pR)w$9>QFkG57SzXk@(M)joQJ1Qzh+x*R;O z`zUwYQr)2v9?2)RjNF34ql$dKPr-U!wxm6RKORP*Vt$Dt@gbV!=97j0%(rdjWKSajknw-Y zFC|pBA|FdjacI2+Mi$s8j=51#BC^o8$!B5a$=_ut2H%sDSDc1*%1=agq{}H+NBK#6 z;R?q0K^d8!?~-<<_NCvc7Dqvcrx+YDYo%@J+X^>xlv!#~$Q)ZeNa2K>`lUNT=};U; zf!Tb4%l`O_i6z>97mV9MZBgp0K~^hzIcXfZ1d<#9u7yqiJ{=HpplYcVf=a!J`A8hL z%W9VE4g6>AwU;c6r-9?HU&s3xOnOEkJ_z&6P|?wPr2kyrfyGN?^kL{a~&yhY5!9sBIATk@YXt!QjnzK^j8{Y z7j?eb{>s8~O!`HUGRzjd-jz+u)ynLCDyCZT0830qE6m;uNbGX}QzTd$L^a}-HhMTBXeuITwy3`^#h9381;|BZ*pEe` z7^5<>S!4qA$04AxqNrEYKEzn*Hb~yj)Mp+nkX1;bt_LH}^PtWL5`$Ont?%bV_u0pa zTQ_okL%cS}+i#$ze(~B&bO@kaq9CKld#Sl=#$7S76BPIEt8;xgP$NU22lw@o_Od(K zPX4y|o5+Q+T?@0T;3E&j;7jGZFrt)-?r;wNN;M^(AQptgSy18jps4^rHjKY57-EQr z40+C^w39~q_01$ES1SnlX=9ga-^T5g`!uCHI!5}cVgq?@F)9I|N8DYx`#GrXRq4lmpNO6$til;da zO-qCSh|wV3RHm{-jH|uw=S9@?g7DuZ7{-1FvyU$4rPFteCSk1if{{RhS2x^;1ZWs; z{IbjBBUKmNWRICj(_}ZCg{|tYKSCW}_G^&StUDQ(zJFY-avrZ*PaN9-Lqq(Gb3tC4 zrW$08Odse9jwgdyMmA6R_Dg2EOaEO?Nqz7@<7Wng3jAQ|m4FATHw7O!q`{3Kx)OQJ zf5v?F{|@uH{y)FvWBIR(_&!?WmE_{c>v?rYM98NpaR3xCNAhofk=oKjh+%iZ1-HuA zHd0c|a<$jnH(YK|aFo<$%PvQcrG}+{IQG>!o6hdqdL@T`+MkzaT=Np#|2|BK8+z(W z4Z2#@LbnR1J>O0;psWqK;&x6}c#}{-eLG4}Ip##bikwJ}&7QuUNs80u+6C*jsR*M9 z#G|44>#X8i@hu(A7@}_?JOQ!k8-Znmc|T;}y%;=TjFJSvnj%&nR3UQ_|Dsv)4X`51 zeJabWSrN^XUfmSRgIxm@hBv2mg=IjV2n>jx49;6ku2zjsn4|9D=fb31OmPcY}%y$BZlr zEifxdMMNJUYUSJnPg1g2lmgG*t5oGrlj0aK75I!t{u>iqQZ_xtz^Mfkua2$_7NIF!eE-V6vY^00u-yyM==v?8zmSC6@H*d6n=1< z2%Y42)D|N!W5>TF8o`gi9DyKWMe@Rr;3TmC_LTPr31mPqYu`=iXfK*^r3~RmASTvj znf@`9X9{;Q>DY$+tBC`ciBqp6Md7vf#4YlO$Yxf1l}@p8=;$<+ndY2_*V+Mu{j~`n zNHBo`;8+z^;f5Drk8vGLG>4~Eb@~P$Z>I*oe0UU!OLxnb)3yvRkKLYk8S@0+KbD76 z-`YNR=6|&f++27V`0-mLX}Y_t61=&6KF!&ZhWcrv*vlX*LTKug^Ql8 zk84g?AEo8oMK6lDw&He+c@Spz>7mJ`SA_|6qeowvVtJ^;m7{`8^K!=I#mK zHuydv(=+J!oLJbmN_@^||0fXrhS7%B$atbw?p_{RmUK_374!sglw8hcnd0#DZ*wiH ztlJ-amCF?AZPFzEv8y zHL)=hEe{UA%Xoq?u1dW99r0bfFPqR3`*mWuNfDI6Sv6&=i-mU?*NH}(AY6&l$}rSz z&g=7SSDn>fFWS3eKbm*QY^Wy6sjfMjD#5Ah-wPI;hid+{Q|Z^H+Spm_*>{&3_BU7C zBsgl#cQaepErxv}+BjR6y7mQlFJymrbGIMRKTeGjCHJIiH3|5>ma4lof4j(Y=~*7j z(thvURizbQ7Zi9vC?v0SvsnJL7~hTH?|eBsjBkrCp9uR6;!c427>cjR>2|Ixkv6Q6 z$Katy^oeZ{S4Ll%amsud#H@%ttoH^%@u%7>R!3jnxR)Yu={&br zOpaSCx#$e>6(0msC3sqoW1O!G2#k`aFSVmDQxA`l2TXNp?}_b5p>rrnwKR_`Mt-r8 zwY$)B+Sj3GQ@k}hqt1@^%}O0)q5VM;CAkEef0Lsv6VQCYq4h;p&%MEGZ%5g`a$~d-Mgwz4rfDzI3W$l&z}psy)zMK@ zc@bA>+@FHa*-jBhk_qtiQ2n`Ow3t^jNT4R}jueq7-_~WDi%$Tys;QWJ4|)>#{iQj5 z!+o^Lj5$L!Dle`fO|`%wGidzpwm?=+&|_Mea7_U;BVx~zvo~4);K5R7zMgTvVFYZKZUa6DxI(#SU7kO2dCbz zZvgewB5OsJJaAJNy+rftWg?qCpcc2D`ag23cEbaMq9zYLub;^~+r@?YR4}q~ZjBFZ z{t3l+buLzwg~bI@E%} z4R10Pw|(sC5%MvUC!RmO7-m6@YA2&?kbqdf_u1%g!7dqn_f48pRig zRy@Nt;5_fNS=r}s-iIMm&*HK;TYkB`!1uUzCdaVpcw1EtdZZ{`{5wxb#tt?2ZWrq6JIH;p>5r}g>-^~WIp8T&c@7ue6m&i>!){f#lQc7*QBvT`hFn|I9?BP~r#XABW&&w%dqsF3(x zQ?#2WT8|W2@|Zs^ta(*yJc&~Yr>e^ff8v}M#=`PHsG*viR8zrm?idMGkIEO27^?lA zw`f32PQKLVR8IG`5R8-totn#U3%a^Wy>Nd>|l5gnC$dMo>ilg>9lP zXjt<3SvX=?9T`wPZN~>R9qq^FvwQ2Vjqrmg8|$+3A@&z6h)bb{j*E~)n#it7uCvG6 ztC*I0)jlK`;!8vE=I-b4p5_{^)vTQlp>Cx!p};Q>;@U**xe=xK(nmd#_!7Wr;tVpG zxt0<4oOtG}*Z^&!N&s>0yWT=j_v&5+pk&~IBLuYOo_s*tgn~XjwLxY zPNZ~{4$pF3v?$rdm`1yN&dQ~lCgkSThzpXM#3m1s4ZaNGY?RfYw#sq#&?LS+7;>@qONU4HlSral1d< z>iMuJJvrPr@XgV1#<&^(^;sq5SD21|QM~Rm8aE2rD4c^go4LY9)y8|OfmB#=!FIV7IWG=sV&2=2!bm%+?Va+uc>m8%+_k7iG>g_Mu zFWd5v&=sqLy)P!~zej~2R+(y=YU*5Mo&K~~=iKdqywJD{NpV|@J`eT0%jh(FPF@vPSvGs3C90n*e?MkRLxmMZhN z-UplLqPNG}MNtbWxMu*q{leF~TrqD}226E5MONY&e@F%#$cv%l7qE{!< z)6#rnPPXj1vX|;iC}X+%eW*~tJXEgWd#k@ z!o*>gZcZca172BQDrv>OAo&cS*5!PGHK2FE-Lf2B{qvl}j8#b+SzPy)-ljDJ9>IO~ zuc>7Q{G@4o%b+t$v0KC_ak5FyY~m;}h3LkZ(4_Rq1))cV1CIJQkz91;C@=_qPkE_& z!QKneZwX7SZ)%ETUxt>{W zqB^5h47EHuY#}=5bb7Na1$c{HQ&Ip6&Wx$hALI6e`HmS=|DOY3l(6Q7{t;kqQR0ZS ztPo5sM&s^Ik{}JFApZ|5jdwDLe!cmcVTY-0*8ATlN6HRY2YX;t=cBIZbsyNw51b%I zzgv)V{43v31L?kJg{>S!Ht=D?ZI47+vwpZtGn0B-gKy>(G3ImFaxYn-gGJn_8deqq zw2NU|VV0Y*vulIw*%_pn@+S4i*zbHaDyie^oQMBU1T2ja}-SEEjk12#`aRN?b zXB9FhI%cc!g51Ic=42+S6M6=iJ4mWNg0F7{T43L=+=(W4nZ4d*oJ%LKO${#FVb*SYbsH|-&Pb@P(z2xlu<;r4rafVkQEX+wVIoPvQi0vB{ z?X)64*ud`MO@u-q_~W=&Bcgb-6f_%V#hf&3cr%mdFj{YlkX2*SXLom70%uMUxBqdD zROC=^7(O6#5;zMV)v6ggqRc|aQr$3cGOfY%mDP)v8cZ{0QGUOM2q*-xr52b5SS^s9CY(0E3L;fAI$!V_Idw7eh$jW*% z2Q!A121;d%BzC!gG0Q`I9ZW`}Y$)@^4?Y8XM>ZE27c}SAnu%BsejuR5Lp=W(u{rLNb$^>6E^w4Ikczi=rA$hdAgMzcDvfcjD!`u^{lT7dDUGWwC7D7%Gr~8 z9OV#U_D4NEomSm~uC&Xu3fz?JU{aERl;}K*vE(d{ivD=w`Dm+<)7MYTZK(L2xu?W7 z_Oh_oFmC8ZCl&uelI^ej!ltcflCA1szhRWNm|&&MJYmKz)DTe+a6bLaeOy6@<@zc1 z1J~5!;%@nyw;V&2^!ddtlgmnuHC(!xVqcZj*|pC!mx##LiXn zEt9LeEaeqZ^~aGZ{H?>~?6+$lUo-1YgOtQv^+S2hu5(^wjAm7VW6^M7T-Y=;QsxO`*9a}>2+2M4mp&EhC=-BKFdP_L2mS{@)YT>5_3 z3`qSV8L?-rq{Z+ak#H-kA4Xd&xheSaj;?Mv6dNo?Jm4L3W{D!TWsQ^AX{kq}?Rxy8 zQ;`hw?vdtiE9U3$b$jY11kc@$;qQtwi#jddVDvk^4k+^3aS7jP^?M52`ncQrd>j6y zplAF$@bhIY?*p7@;QIR4!mo+X_hJ3#;k-|l&r3wCmomS%VP30G5<7t;iN#mNPrgqg zzgF;>c6!%`O?9cf7L1EOUTh52pN;g7RyqeQHAF>x&1QZr`}>V8KRRq^`7Fo%EY}2Q zACRnWrCvnWK8o$KWP1prI_EuJuFpU34u8Gf$HfJF9KI|gnYL(6o8mkg;dnb_c<*~b!S>8&`9+VZ1Q+hFYd^iw3`8`+M-b9Rz z=L}7P$E4-KGUgrW*e~i4TI%@H=m^X3U&6L0BkcZY50`7({asT{8IrOCDOOe4AG`kwHWgiYcn zA_3xkE4h6Lxi5_K)Dt_Vh4ik+R=N zTXU6d+SHzklJ66w6(jCyrzIn9NgZ^KVLxUEIs-Q<>hfS8@~EB| zDg?$Vh^QC+3eP*wUZ~oA_m)(wyKgBzd)J9zZp3}NSf4gfeTg=fv{~}@cjF+u#`1O; z&;+p$Bpdh!GkKA3si=KS$F6|R(?>?;Z&J|*$A%8~-bAZs^a|XNElI3CVkwgEZ_rst zODogY{Eh3(bnS3$twpeLCL@B&ep!A#uS9;2M4#QC?|!dEANz4z*Ea)dTOYN!@m^0k z$S&1qk9lv?pK4|yKQkxVL9*Nixk78q)tK#v;^!~L(nvivp;PR&*}A0`9pW%<@mmxl zYQ%LWRz$AJRK0CCYU7VgwOP|ZkC(`N%vp2vyuW`)P@O2oCOlCATpX8?EI50(?PBH{3>6>@QTKuWW9_M74a5T)DCIUZVh6S36T@qfx+cWQaJucq4J8{0+G-ZH;3z_8DoMh>mEqyWE$2P?IRWrC~Z(}WET zRcwYe7R{dUu`%KXm3KNxp{~kG%C+3pq%9Xm`=DFd9K$%OFY}P$;v1#-$n20)>gg%RVKGZ<=w z;qs6s34P0Mw=Q!oPIKVVabx#-bySrCt9(-c1}{HzHIH-fHvz-Dg5axlpI?2HJ#KAz zZI|Oi@31O-P82hW*TE5*nz0z!8U(*VFwzXbr^n5UN^LF0nQW3F=g`#cO(JCRCQU;C zo4OubQcamvza>s($%?T}a0DLa!XK0xjcJy#@EYBFYOLQiA-Cg&t_SKtPPHNSz>5Y? zCsEDeT&voT)e%kMcV71Kb5} zA@|UNBM3orx#21YZj-26va3T*9C-2BII0!4;~->l$FZ)Fz+`u7-z-&#rhng<)|Ny{ zWas46sE#8{gu^Bh%So9#sJiy5Jwn8H@S@mCUsuFY`e6{ds^E0 zpud2Fz9#RN>k?kuYtXj4bE;oi0#mAt9CsTRzJ7j<1^ih2)Y6Riod+ca_JY3dc{O4S zs74f75M|hAhk_{RtfY1#BxS_D5g1KpNpMzd^NljiD_c{V!Qzj8S2SL{gR|+@ zYdk?!`bZ6b(4M~J=Wi)xvfW*VE_arqb(6o>v4lpCn(Z7*~w$U0fiDT_si$*fKQ?<5t0f^)3lxGKz5${s~FqxY_DCh^o zG8`+dycP?Xe?im3XM$}R;kL2D*G2nVK(Vc!nO{jLh{$n_A*0$);X-|ra-h442m_0d z)j@eKXznQ;hSTHc#FAqK!SWe&6Vh+q?VJ;#a!)tbS(oX`!8KwD;XTuFg|ijgKFc)j z?h8~I*|OUahrz0vJsV9;ipML^YVAnjV=8ihU#^kSbYBXN(Ghl`B*`X%Y%_glAs$WU zKjuhR)xIX3*qGli&xaLH%4hnkjpFPATVJX5gLnm0)T6K;G;i&1b0UN5{R$>crh2^* zJTu1ew(M9+w)T4YW@L@MB7JUYs!7JTBSMI?n2V2@EoiZy#8eidQm0cQ%KnTnzY#nX zNSZRP*g-k}dRV&g{vXD^DkzTc>vjem+}$O(y9Wlh;O_435RyTIyIXMA;O@?l!QCae z6C@x}D=+a=h&K73Rw`zxi79fz9i|c6GK~4387W^W*@)wH9sBIke3>Vq=6Nxv^u}Lza zX^a31hl?o@9L=-_-?Qj&M^mSXs|d*o=9j+EFb$yz8An_twfg7IVo$V4zi+orRj3)j zdwe}3UF&MHiMSy$X;-vX%2)wo*X4-SVAz&D%GRUo{9M!=If{M4{1g6yR%(CSXglU{ zmDa~156Hy?e1wmcR0&=+uNEgg$<3Fg`}o7)p4x$wP&FC(6);u)2*%61w-h+GPZui! zPmi{W?*-OJipR~ozP82In-a$?RId6p|M6^Y#@BaXZVFS%lE9;~W)~dZ77&|Z&&)L$ zZMSc6Piet+Y~$h6NR>h{X(jjAHgWSM{FY+3{pmv=yaBafiTMD4?MDA}@Bd0DRVSx@ zti#AdllM#XF|Sj`0>(fKDG3?j5w!;5;z=%r(?x#bM?%kh9L!MhMOp!Fbu>5WrQRKZ z+6}NL;ThYe4*1}++>H4xhs{W5JRGKXkpC$?f>7Q~;l7I>9QDQS#A(KDoBm40&h27; zxSTY-Z{`en&XC9f#m!}$>Eyg<|EfG$vymdvdO)qc$^I!r?_FvzAr9h&uE8Mmh=!YK zJGM77JtI~NFMye`2s7&)Z~!0mz2%yk5&UO3{6p+~)QIi^m?e{7MfaOba#jTPF8K(` zL=UXuS|D=Gd(f_?Ml8ackOc)%8|yuzz*uk`@9skCiG%TyPV&AL`}$5p%e{Uq3yYlJ z2NX#iNgiAkdEm2hflL~XKn~{%pX)rFL2Z}>aQeaNR-K$3N0<=AdFAnyabq;z;6Xc! z9{OW_&stm+J`(DCeN=HW3*IeVBg3iFaTn58_j_dtSYW;p;49Z`!+$2@uiBQ#q$h^Q~fb;5|yo&+i* z`l^GlU_FwCE;mTmKba1GFPe(l`RH2^D|^>a++cjbedgvu`;@*S)FWu-DzGXc4T*Zj ze4iHgK`uIwNkp+RunpTy4cx!(JmtRVkZ~IDVItIrQlS;KIxU+3SdKq+WSi--T8L?d zl(uNzYiTpIH;oEUaBb@*UB8n&ApRJ=G8X9eqiL`=MPK%pZ|DSQG{uHO4sLTVkalt??~>0T`=Eb+r*JE-->+ZfdQy`aA1Cl zS6_skL&Z!wA0=%(XMLELvB=aDRrx8|Asdn&IvLMIZb!W_D_)VM1~v?`fxveE*+)gd zDIX)97?agIFZUHruQ(2@`?p-LfDbxC3hHf4$Yf0@$k+IY$2$E$PzT3`OC5~ugSxuN z8+>OaX*KKc%_X?$eyUWp%-mK-uedTWrJ>0_H~gJ2D!BH~mZtv&yfEq|v1 zOK?1SDJ78my-)25;XliRVm`eMd=j`Vu>-1nzC|lc_U^LWfHzI=@3{n5-%&rd8rGPW z$LyL2X)^4m>BQRSMYs(SP{1{|;<=IUA9;686 ziS#?`q_3>w2<(AqAr2rn3clvjpg z_mAiir~$v}#dmNh9L|{p&VZK#FD=&ZL_Sj%SZ`6e0OmAdfPRAwF(#1{!lC25*=euX z&tasT=*Lasez!gl`td~qQOL|L&1mf!i#OWOmSm~hQ@$6?FUvd)fR?<~u}Zx*LxA2A zR(}nBPcKp6md@j+(3yRA*{3{Xm%u`9fY7#pwnyBN0PDGHP}lT=A;cM#+X00GUahqc z3a(snVVDE6e<$4$)Kvqw222KCrJ^JfSG6%?y36c_t6#Aw<58{OJ302imaLpE*Bu-9 zzv#}H>P%dYW|H5a=o217ud31)7NasdPc4kXb?}7bwsMt$Vkdhdr1y9E(SE=#2Re)f zJIw+GD{RDN>5)2&RQhUh#2`Yr9YH}WX0H(kG6@41tLyAx=)I2%j zpB&mTaBjxYQ~p(`FbdGl!dzMItSD=h{C5OFRtEEy!wa)lU>wqaO^V(e>gV2U^Vi0A zj_l;I24cpG_dkMPssD(zu7R#78FDgcjW%>=G^xv*4^M}5_YJ6gW^p3BsH45$dNkqB z7l#Z(Coa7(pJI>6tf{_Dcmq-wc#Jaw;jkP&CR63I{a7j^c*mP-L&q{_g(fbLVPR1B z=f*o?z>daWpWI#C&d`1^*+oBe_$9dXdjCV8!v+`1QXxIlw4^hcs03aCmh4Kao8u{|SUS0wo2H@{3nZMS;nexQ9cg1OwL zR>qZ_=){5Cc7D9u^K4dDP56lG6lqGDL{qZ}o1Bx#xda|(+M2DEecLy9l@e?cuYZsJ zK)=+d0x1>QVx-T`J%_f*I8reuBhAEB3N|>88$(5Xj(d6DcvpTA{>$%v+VA5eds38} z9Wqe7^R6r>T?F(srO?ajxmIu)))KXJ)z*yNY@Cl|b zt2g{2OHYeFdtm*8jBM~sbfoLD@=c|w>Le<| z_Utas2C;V;5eCdqOVeLq3tzQa;D1|e1!M?H(DSDnRI-2%mpL3|eW)X+IHKrW2k$bA zl_a1r(AGYz5;3(RY=N&n5#?^XFjc~6OZkmd1ncp|)uQW&qJ@l2M|HY`M1;qjzE?^q zWqwGT4nB5(P)l-|N1nV>C46F5mS6uRuDL55<6zc^Hj_vRe*5UKGkpt5MYibfUJEH@gVX(=?+tL~%73y;$_$;x-6V$+%Kh^7%d)>2h zjYLFZhhFqLgX~5&PFqq)-Jx!68(KaM<&Z_GmBQId1i7g46|b-dPZ;_&<@RD&j(~;S z0+01}EdR}<>NY)!EnqU%>RU^(#0^57Yb<3oA!u6n@u(H;rzwt4%>1yDYK& zm4h==?(Z!J&Fu{VlWU&ZGgchSoD=GZ0v(LdGOI`2&+TpneiFCXYsrPOE&{1tx@q5f zKybpTNPcR6=<%hO#a#zTqPs+oZ9V-CXUPYh0=}QRem9Cp`Fe<%5GvUOv z^e5Yf;pwgE_mv0#qM9Ga)q_v?#Xgm5(o7FW{6l`!R1cjs1tc~SsxH2Y(;Oj@XFkKH zxAG0?o({`QlP>RaQeio8?vqtk4uRlUbyaqTQ?Cdytl-Uh2@|2g?RCqQ)7dmfpAyE+ z)uX-^v8k6XP3pr_5=%_KFW*`4otNNamrHTrzhwuPQBGcda&Tw^uVO>BjCyqEBkCzP zEHlM7>h-EiNvJJ244d~EFd+@N#Cyz4zL zQpNOZ|Th+DWPFuh1K%nS^rm`fqKG_YaQM z-b>7c$-FWgOK zEtkNR$M^wr_gj2xGx^kygy4g&uRI@ZC&Sp#lHYlISVDSSSn?9v^Sl|e{e#wBTa{)Q zBW_8_yuR#8jTlcbsBWghlCX+C;+_>HQtK-#I;&I47f^)}AP#T^bSnjRWWLG1GdVeH zV%OH*c?Y0)AbCbH2n=PFMu>`way(Q&zg*-aDcxXlZCyoFknh1X+{S7gH<*~TF+fhM zM&Rv^*jJpWdb$8bG@2RU%yS7DlPdWg5Gpa!^cG(B0Lpq06(3w*Ih5T3lgRk|7>#Dd zZF<#hLx(_7kqTsUbrVDAbzsc&Q`n9G< z4>DuE#WL?FynH9CxNn|7afiCoYQQnJt<`+fB`|XXuaKR-abMwwzrWU*L92G=l4>Kn zc;wd8u+eWbo&WSK6|^^HG^i%IP?B<2cjOYn#8VGZU7% zK+4&&B`OX2wC`sL9H$L8o79jm6r+eSs`)>i^|n(Bt*4Vz*Y%@3G;t{}D-1 zxq1Jf@rG?~x+G8YF_*_r?U+7IQR7uYk_i~s8+vtRNK2i8JTtZK71-n1ryNg&biZ0) zgg<+!Ps7meJO-u-}{C)}*yF!C2xYNIh>j8-vDAz8nV0Xpyd%QRI zBI9@xPL+u_6p-ydHqYtw8{%(f81fT;Qt<4q=#7xe(}Iv`Vd2u*_Y~t?!vnX%vl6;) zH-Ojeh8G9ncl;PV?SFGzSGtrsGG6%M1B6JYgC__LSh)N6AuRIcBN}!)wt3%xt>)Y} zCaN4pF@Zll49xZ4+afj<6|mT6V0mV8&1GYoR&$~(<>=xwJE@P1G!7m7FBHhx?)^4F zlXbRPZ437e2ON4rD082d_*x*=V;p+YQ-yVg-c;Q#l&RC5j3B8crz%-M)k5chC4rgj z7V-T>!O(%tEx)+w$ysM-#-l76sn}JfO{nB!G$kQ@py#9i){hM33#(;fH~zH5Geuld zoKYX%%NWUPp?7iI!`rKJ(q$8zVBBD|NUJAqGCJ7=g(F}ht2Aqf$w_#v+m|sGNVYlSQY&h4M8=-c>gRCHvFe^g=8K- z@S-fUn!5yU^w%jNC`_Ic%+@8|O)o|g!W3Iy#c<791MS;slg(lU_yN&x#V?ziSzTYZ z#b)76fyJ5J#I;ciu}+}h#V`B@j!GSH&;6W&jt(ZN^TZ%%Fy8KFD!+>(F8UeEFhasJ9zCZryiBOgPf@GNK8$AQV@K_4Y~Wv0>*WPB&ow{P_5PBR zHjm2^j`la!Y%gyW>!Bm_(w=4uS34oXH$pA0r z*Y+P(MZD;EcO##H_}mVvsn18PrK>;Ktv}&}LP9&-#mZsT%MagkBCAkw&i49Vh-lcM z=G$8bUBm2oLnKG+v$!G$m>T_APQEo8@B8XS27H9l+1EsSoh(xcYvva?!M|jM?n3+8 zCY>3CG#U!o_tP@4Sy&!V|7&KyLkadlWglprzn3rs6Dz$q&0Quh#cmXwe9(e_JffTj zbv`bAF(Y^lwW8mO$^OzgwPtJ~9DI-9e-dihsW>#v#p7=fYMtP6;58H*Kfz-mpux#s z=opfj@|n-^B#7PU{tppNo`RzV!7MfJ&nP4I;0U?vc4h{~)<3i@a&Gf=rbudY>sL|> zrCo(j-_KCHD{dBz8y^2X$!S?mc_9MqH%>q{;iP3ARW%`++uYUX`^9eyKT62c@;GCc zj}9)vDMY*3Y6Q*hf6opPo~2hMS!{GN&Qus1%HArES3CCa_IzY!BPpBWw zfF(&drsXG6T{i@4{QFM}$38mu@E40gJG?Kd7*}xG2EQDeFRJpxEKU*g?WJPr^rf-O zc8Obu1lg4GjiT+KPCdldTs3NFB51rkx;smGhVM@JjVCUhsIS3W{E;b3zW_n%fKjug zjv+$=6DEPLU-VL2Z~E)IM-<)aOS`!IRFOVx9QupxIdk~SCw?3$?_%XgyOC+v;&mn| z^*XG7{-2_0E+MjCse8e*x8inS=F%XbjRnZ$-Y-6M5=d6!65YwrN}Xuc`o~`f<~F){ z<$DQxcyWlw7>T2sP=qs*l<41-F|J>N0+)MCozY3yx!R?Wtg^KmEoFp95~v1mh-mon zYCn}x8@8B6o==vQr>D|KQLG$Z5C=;J7sbk;VTJm5q)B=%;m+gaUkDT2{|_qC(qLYc zpY`5o4&hCsXBa#1{pwyxpP~`($1DPYV<6-A^Q?(bEaJKRKSh~S zB7^sLCT}=k?;PC%y75tm=0YtR6@A) zNN$SeftKlZ)lE&TfrGdJWBY8$2&!x##qCtW=vZpiB}iL^>_>v z)7;S*tNQf*k4Y^S4aUgNHp&%Bpd{&yTvdnh#u9 zahvB%f`sVY>rXl@6B-HK+aFA5ulE%z$ILf~Z??^w#5GB3J2XiEC%EnL_nnM#J9ksB zrp8(bbwrZYZUW4|epZ8yA6AY3^Z796yp?r1TVB%;Pa%k~(J6G?j5G}cl{;R7P47zo z8?M$5HQ8Uqdxll>CWZCIVBzZoX$$>p^;FR}c17NLKqg-mC=Ll#i3b!BSW; z4ehWq+veG?;ik$u6`cAd();XxG*Lp|Y!={_K`u-&XxALHADawzJ}%HvSGdh3^FIpT zR9+vDTKZgnF}>rB{T$2O=hKncd+Zbs&+~vHKx$}cXz`Fw_$}Tv=nlrT*2R>mW6Wv@ zG~pAEr^n4UCZ(5DD{1~7Q$M=3{XBQhdRyN%LQ(NZ$4bWp2?qs-51h7@A@us=JUXkm zQXPqf!&xyW5!Pf&oFS<%NelEtjLJ`I7(v;o>f||JE2@h`gQEcpj=+z;lE2Hb&?izi zJ5uWb@1s+vMj=p=0JgGs0=cd(DoM z=--_Y;qz^aH{DV~WK~|N_%zo{DJ`c=uwZ%k5g7}Y9toRKYUHSJEx zh$%lj$0dAv?=e1S^}&SHTign2NY&g9IQ&_4N(DCAIY;*m_`Sjk>{ZNwH#p0MA0Udi z+S_w_HCy^Gjm^5}ps{!{1MnR-rAXBDk7&6TZ*I5vh+mVRiwqj{^ifV<`KA`Xq0g7~ z1uToD1Hfcn_rRSrf)8{&n1wZU&n0Q z@V=64UD;lCuIYW!vRL5Z>B`?1SN{}ZQ?iT)s3iAy6xHq7tff2*L5lM2yDr5>G3R2> zAiV9raDINad~1IhX~%rRdkS9j=Y|(K5A~k=@y`~>>X|uk*raC4msVl#Tg)KbbSuJw z?QUp&%oW|$XI#Jfa@ljwUz?YDxe+MdN61H z#n&LHVAlSSIpweLjk6Bb3D=zw$Tm^03M^+^*+?cbJG3CFf%x&2Q+P5z{9#9btkE3# z%X00ztXD~Al>Gj6(HYz;o`{WqxYR4<-+{efF*W8tJNfT3>3;nJ+oulSR|L`X^z?=E zds}@ELV4F9x5?3q-9Jp2(yY$8Hb#vdaMzpxCmGrJD?I0H>xKOxiNE71f48CaUS{qW zMHvxG_1v7c+2qERQKDh;;_t&BR`0)lHa-+LI7frxdZinOVn>?hFmS$_MviW!7p}DZ z_=HBpw;!>gj5te$<87xr;_XF7Q-E63}Y(|SDn`tfO6=JY> z8oKWTJ!4VzQEC^)firSSK-I#_QVm4&<#iRD2!H3t{Q9>zMj!kCv64l~risH%okM=K zH4fZFRAAjA_iJ!XZM)iu-0;+GpUwk(mr7jWo9x8K9iBV;p+PVj-+FyB{?|^~6ZO{h zrA*e?X&I9fC?CowU}MDJx{6=%RA@i22mBr~~(vNsEU?NHy3cdFU zrtUg)jMZs9@YlGGu1N|e2lbc#TT4ej?MV&6P}7UD)=qyXxcXqpY`TAI!49iBT3AF? z*obv)7h&$>To!Qznez6Mb4zT`(GoZoVFUv`?B_E2Sd~mM*Ys;vE@j-FiUa%1q%HSyuL z!ItF#Zm9?sKntQ8HR^?ngQF*Y)z9bVZIl1Jcl*7=|Nq^GDEPlTDS(?>@c*4B|M!Of zf4vVec+&NqXv&d9KY036F3T*uI@1F(U*Oz^oYXF{T7HarTIs~z^)GTSMJc}*3=(neZxkm4vGk2%p zhQ+)Y-m;XtuiE0ln&i5#%s5wNoo?%7uw`9#=&~%hhQyo;RZR#8iX~FABN5wSx-KIk z+0qO+m&1In@S2~C6OAGcaznFm4;xJVZnM(SX^viu8kI~VZQKx{^Ayldc2MEEy0{ej`gJ@we7~d z9J4>{mG0)Yt3oaStPq(^!Fm)0-2SdX-O%5a&0=w7P4u&4&Jy?DIX_f&1}{X>a)^0!B-*l}Xl%X>lP)}=ki z-`=gV?FJWlZNIoGG)vM&tTrYeu@m%OLan|SWm*C+EH68@+_tX5teolEL#sL-35zh6{*0UbdHlQ; z+#B@gQsUOA`xn*cm#5GDyM0u;riQMRloso?{@IuAWl({smR4^nS)$hkmU@XX?K)|0 z6R}=e#>&B?Ie8Kj#nu|>=l4nBzt@xce`{jDRW%j{*7#IsLA9H$y3SJW?Q0qQeXu>* zvq*{kgQc9jhA@4f9b&$XCMwZnVuH7aoV+Ny1{h;WV4WX0c<(djN{4|o_r+>&NV1=c zd4CXA*vAbZG@b7m>jV^%q}y>37WFwW0Udv?Q6N!iIh1ti=A283h7-L{IrT{(wW2gd zy2b)W&2Jx;Yx4K0?jyZljI-rij98^-r-&f6Bodj|h1)oueN82pafv$rOw4BNq|%#H`Xr91WUOgZ+bq?5VyLv)1cy{+02UFUc`q zs-@+^QI_b?a`)K1n9IAIN$2(hsx+hXzZxkk{U(4GY)D%?cbXZkWM zusBN0&@&FG*(vI-sk%5R7rtjQDoF%{aX3DsUdRBU=-F10le|>YaYsiTZ6Oto1uqZe zYhakmc@~06`FDYI@RzjRGsF}(FPjCAOuy@FWERd1>4uKhl}YdKetc9>;q`Cv@Be-aICX{ zW0&f1Th|{ks^@?jWRoRErHPpOwLjQk>I<%=+x#^ix76C?gCZ!1m7YzQrbVLqXEKnp zHa{GZ_E8_DR~fB}wnjsw?h)r24Fe?*xom4VHMUZH6QMSWd2|sOHsVjw=MtE`;^>_B zh5J#owjQdwBo;e{UImi~+qPqTOa8K8WqG-nv0xU$C~c)pqqPY|(`+LbJRdg*v&Xr4Gd#jE0Oj{$px7C?Cx4xQq9g=agIw=x9c0uwaST-&lz295M=$zXKy! z5Pg$)2%^3XTHsGJl%kQdx$z>uf^6qxerlLi1Ea zq70I$WN2u1z?;X5ht%O$Y)WP*^)l6!N1$M+Fo0i~tj82cbUhSo1&U>@{hpa*lJ}t4 zG+xyw=V=eo<+CnQ8tzZJ$>$|syRs-#vO$c93+0SS#&chUSv>fVb&5El>xKOD44Ohs zzR|n2qcN~Ee>gk6Y72_)d`s3+J9tBF)ZjVO_7F)*bT~Q_?uJIiaMC5rO{x+B13Pmh znR)%W02cyH67*mJzKwlM|gxy1botFr%3v!o6 zOu`wGTx=+uiDUv95GyFWQRjxiMtbHX!s=<0JO{bYxGS1&LXyTOXj{s^P6R-m?Oc1m0`dlA5!NNuR1xH9T!SmPX>VKr~471j`osj zCBC>~t!*YJA|9N!&d83YkzhUm-xbR;>Jw|BEGPH}WpI9q#N1*hJ3{#Dk_{+FrMUzpZWE(C?7KgSu>&DwvTz^YIB(T`d zkp*>bYbna&48>0~8Qi_r5;CGQ7rN=qIQzr%EBs(}@4Hfe$fLF$Ot&`m`|z_-Twis8 z7kkVJ0H`9s4N)m%O%lYmGmo?gM3MDw%Z1^`5N6}D9KY_KAc>XW)Xsvgh&ExgEieYb8!K4;+&?x=kxF(nU2hhg!2S3qYl@Daq3VmHS!6&mf> zz3+Ns0TVV;G%Z*ZGah0)JxGGI2E7w?J0rt09;%8PwB{LeL|P-FUS|muxx^9IjTKxa zX9m|*V?2CKZ0t|D_*6JWah8&%2I-*W?;db>qBMsa0|{zP4)rb%G@36Ss$OH%Q3Ge;;J@bRat@hOfhzL-m{E-r2=0lQ`xi>C& zRYb{bzM{sZP9RCKk!d6}Z{RX11y55-(p%jnx9GNb@_pN=+vSXG#j}4#8X%??f{ZO4 z5<)uEHrOIdeL)!AOG4rx#Bww2$UA@0(!?DRG6g9?bS**J>4pzk#Xos(;^Kls7nxZ_ z3dz9s7z_>pS2#4avF(j^TeVUNJ1fc&aiH-i$jYtMi;*hNg&MW9JJwBqNWi1ZX{AXq z32T#@Ac)%uu@h6_0}yo{m&;Krp$eFx@;4x7xxRfI$aoH6nbq~Bh<4Rqrdv6Jv4^fYO7=gd{h!CmVT9exjV38Ic)6AEb;Nin7_cjFYAOZ_As<9XeI>K9w&pu&zww5+?0Oq_ODi8!%V@*Z zqbHqkxddOh3qsmKaqIUgis2vh&gvHr7<0OuIVhb-DN2(n{0fOxm}A8-<3zpNH5g_w z**zLv#XS!?HW9_*6rqnS1M4aL6LoE3G{wImRDn32$TY}V8$iV3$n$P4hAh0*<3&ni zW3M1Y@K0)dKsh@g;XYt7x^dkgf4> zP>Eb_oBlI1h@JCHenHcvO3}m}4~Cej!J)og3GOSJ=GG-L(&wHPpoqvM-Bd?&4|bf- zPNNGSZtmuPDbW5kj2b|9N0m6Z-75-5`L=vSZ2S;K4<}skDRns0lC1(##&^uN1%(A1 zdS>AS9YUXcE#x9n>1(L!_hJ4VW!h>{yMT-YSZ_2;*d$=fu)n?lEvDR_lR64R76{Rn zeFO0hQlLrF4_z%^`$)vjE(Zg~5!EljESqq3sdhoQkUCFx!BVS3f~$G!%teh#eq_no zmQd@%Y=3lHLdmSbQS~v344T z)#|B`g1n+&@O7dEE41U%4@TiaT5qltENDAtSvU}S;&&-Ptng0s+1#+Ia+~^Jf%#8h zD&>#~!I=mI#sPG`rVpa2k6}NoH6qT($kr{Sqy^REaP&#S_V#LJW;p8JQ5# z6jk#wpz+1z-*IxsV~2}eE!m+`@Nuv?wDlZt2p76PU_0vh^{E-bk-#c?S7bB<)VVDg z&G)CQ6~84soxm!9qmQ+2S+HHU6H`Ny2~aNb1xXaGO>Te?JE}SWPEXh`NpYfX!aZcV zirDmKIW-}1j{zHgWA2X=NaCKV3_W}WO*a9 zj{MslFzbuS$=iOS7J@5gmGS~jyl_b9ZN|AaR3-VG3#X(U)KhrC<8g&7maEf+D^s(! z(g&oT5o_xT>mCg~{^~v&W)c$vjct6i7Q0T88Eb~pckDNYyYifuSz#)zOV)tt5T^Jl zha^i?E~OvQpBD_R=QS9Pl1bkW#}f#{(K`Sl!Yq~uL+u6P%O~-;uc@>3T3yxlg7(FfaX4a};Szs%K zb^Jn7%?Ku1T0DP&K4H>#tDRdIvi(Kr>dJk=LK&dnfv*XBaz! zKIVMF`W@0b2U#bgr@Hdx~&nnG5etp#=7F74Cik5D5)O$_bP5voh*g z>cXulMVP767EtSmgx^aU?1_n_P^4yqI>BL+@PcklDanWLNx!W8fedb=`EDm0&OhbJmTPlQoa)mPgy zu*@sSmPofM4Ksya+;fyljR7zqM%J0!pIb30#APDG9a$OLFD#C?-iqV$-+V{!ylt)q zP{!5~vNpONCqAZh3`;R2Vv-|%X{`6*W#}ioK+2ilUGZ|g%<5IiZt_R^&;X>|Wzv#v zDDuV&*{9z;Mw9b5nd_|1L1T&h!NjqHOzFw*MOX&B>u@)m2aSx)hm6*A3S2C7nd9;` z;(Tw1(n;oi|Gs9>FqHYW!>sUq2!^S<$^X8Rzau_JSwt4Mk+6|>7)@0&7U z7GjhVBAc&TA&7;hdL2X~E9|P!Hiwr0qOi3kumtqt|Fq_4AtEKp2*6lJh6?!KpGBw< z@E}l0ImEje|BgK`#<#)dZH1TE^JFwe&+-Gb%od15A_y__C_i9|MHS9h$Dx|QW)=hLJ*n(}3To6Je9T^iRhDtt@NP?fkXNqvJ zlgLWhM~L+b_HAJ?`nV5m^D~=Y?(mhqrHng#;uPK^KQ%%mNn>$2d=)aNz*2McO?<*z zzu)UoxH9wwS5DsIS^Rq*U6^082XZ!g;$AlSjeh2Cg~ANXHm;Rsew>Y`LSXLLr7e$)$WFl?%vN6g|wZy|{q05%y)bHO=*22^iZ`k$tcqS!-5K1M#_=uQS&Zc(b zYX;F|CXYD(=)}c#c>b1K7Z-g|+d2MczIP!iI6tA@?Q|16>7g@cE%I?9sWlNF0>+LF z)*B#) zkwR(i<_2yWCpf?ISg0b3pD$F0IN15uK%9)EkE!{1_GuXi{KHhaJP|{b-azj|sc~U>B zWDB4dzSK20K{`{V-bvYjoGkfz+jxW$W4`)OHEQi}xJ}jU#|Jzc$VReN956Y&imr#2 zW@R{?!mHsT`t{zetA648BSt=HNJ=vDT=UgiPv}HqEEpmC&9wd4WzOUG$5ES26h3XF_D>M6lSt zDHGBdlF=&uc>fl9XmH|uRhkD-l?--u)9S$$BCo zxh7OLH0*1-tMXR(o2mU>eO!*1p!gRgt9?C(1+4l^wYq7BLricXYEuqEmqww;f+S$@ z^EdeFrK~TxFcR`!&BT>x-fELH&rRAu8=Zj10`WPZ$FA~;4}>v?O#U@XuHe^2+?PbPMK7uE z*1S=4Jvbp116E%F`#tf1mrC8O(Dgv`r>zgYqE{I9)c@}pdOoaA@x+zH48|~ZMT7gCKNcA$ zc3-}9B$*9DG$L^8L|Gp{^QRR)6B_8>b%7f7qjdISOJQAu0UdM#7-CE5v2xv9W&w}* zy+r%EH2tU%Zs;|`&gx<+tH!S8qDQhg$D8;oC%3N|9Hg$MKiy5ot-GNj-NYH?7z~7jO-yZ1#!Mm(Cf1knfUla-?ti7&O^MapY7o zcs)wh!X~{Pnu`A-3`N?waz(`vw8EQ7&A{m)H8kT&3UzVEp0yr|${o`+w?}Be8h8t} z-sm8k{)nm;F)gFwkZ%@w_5==AfghO)-(uVUyjLY}Ki4*7O)NmuP6Q4uAn@2Q`s6v6 zS}<7#z#W0doN~G9WfM1OW{)fo=?PfVvncW+0AhDWCJX|xE1YC&+mMpJ-zrVc4*S5R zsp^x-aE4S%K4OSBW63yV!TBEk#Ifgf^P2KNRHhBf`f@Q0zeSO1thVh)OpcAW-s+Qj z8$`03``4yRHFZTYgao1Xv&;BShz&FI)YMrk`n*GqR7bFd^ZE&5%Ly`Z2bdr?RBPdI z$u4JxiRtW`pwh>e6w1K(o;&C&SYY2JnA}~VG$h0<`^Jok^`iy z+aG(5UH%_1D9l^OPBqk}R3-EZ~4nokLi8FSl2VgXCM?*_?AH;|NQb4W0pb>&t zg2%0xJztS|kRO4`1jPzmc;zxG4M?Vxto!{=S_v8mHBUS!ra}X#j;N6&lDzxfrEttq zRo~`&J+Y?vO#4@pvuw~llWwmTGT!ku7GHTDi{!yio%8)WGK8NXKP_?GI1s3jm8}?G3oh1jIJ{UP z_UL+5OACwH*zNx=@w}NlM0K2lcr;TDGV-^NuG*Z!UfBn`AEE4OI82hf)}q@Kb|Ez; zc@#d@YS=9pEPxB5|uE+p|zR#%n$2kd6l@fK3 z+&xF$L)+axWkq%bm9jxlv+qJaTKxg9{sMI+jI1z5FH4z$WefJts-R{87P~CM-C2M| zNd4|ML>TC$8$xDdUWlP|kpXS%)&C?OS~VZ|b@{PYt^r+Peey?0E{q3xs13>2H$jQ- z#_+^gwg88siBISY&TRr#ravB*+7N(+k065d{0MuIVev(LtTsZAD0eN%IP4y%jRTN^ zw)~YOSlsUR`a5%BsvNA%PfC!*0V_|oU_8SfHs>0NfM9sEA>s5Nli(8&dg#t@$~^qg zQ2e;9l-m<{jtSuX%yS3Fx1q(jmEFV8?tyHLCxX$t!hHIg@qrzuy|RTkgUkp}XGq78 zGZJfn_niuW6tUg27kSWz-<;QtS7c4P*-dEMAf}z4W%lkVyb4_Sn->2k7~p5@mY;X3a1&Y zvA`3#999MHWi3;Nb}egu+jTgG!Kd5%q8pLA5>Ss@g4wcr6X5i31Y|o&XKB11Yv{;e z?1o%~1zu*1e+KQLNtmZ$+r7vy?pU5-U(IdRwl_2RRYf&n)*2l67lkTmQgdr&9`xp z*4#ESE8{iF;q~fkFaBe%RI&%I^%AXvIY#>Td{WgX7`X0q)_SX3$YAB)lrZc^J&a)o z74XG!azAg2$trF95jQOz4`lk0_A(VpUD~_7GY>w{ zt*)m12IFe-iwbvBQDmpm{^go)d?TaP*~{XF>h;?Uv!cyQa_=R}LYH8q)1nsU0No;U z*8YSx#I`ynS`&N=JcR(tf&AmuH#oRgTSYZOR)nJON@Ck^W)p+^fs z!b)j zXOt<79;4jgyOqPo&BJ?R3TWwO)*bQ6pC~R4MaK?kdOgdnP|B?lvQ6LBTG!_He8jc< z@l)6thYy4$glgLqDxb4bsOH216J>{avEp2UF_VAFtgZFal}5&v$dplBQ3 zwh|hg9rxEDO}*QtSi z>mxaF^8Tg)dy`lD91eMLEW`#|DQyAm1vR*HFS)7ocmB3b2Pe4(UC7*}fergxSS1GU zs^<<0Fwd(yh5bz79&6nqIYXTX53RvX&Vt@86@r(SZGq2^epJ}Me3Z66?hkHuh8`IR zI*4Z#+dK73pP$bRx;7B*6O$~M;+|~@fDf-SIP~`yLmFSkaX0a==qQgi5Hxi@WaiJV zwgz4NP6a23w^BVlpJ_3;yB@P5916Escq+==9RvmJW|Xs(KSYoOBOGbp%Vq)s+F#Z- z-v0JN*#OEsRL?;-`F?u3-JNvTt{>Nrxt^TQkB7cr{e7iZDDQ&5J?nGIuY61XNdUY9Z{OIx-Q#_wBXwtTLX+2uT zZLEJue`QP&1ts+#`sb%KCFqrIYgj+ML~<B@Tq0U$1x?vTKQ8i=wL}md#DID}Eb^&(M7i`(lbn{N1@U^zJsmn3ONp zVYc$4Bm!mYkg#XSySU$LMxayhgN9;3k^(0$bwRTDiU<;T^+G6sik{^Da$hKL13{3h z@R4#L`TS}B+4s1px{BChtc$mT;|scZy{m73i@QsUIq=_Q%=4S1U(QSqv1figRrA?O z^5*I<-rI2aDV;ocTNt-=5C`Bt&K|_g-$sJaTnG3C3AXlxu0JSqUK64k^M1{17pIsl zb0}FJnrIby(Fa&`27Qb0`!=VNo|F%_eb@I>Kds2# zFnxczJ0k^7OdWlZI9sSgxw)17JY|H)phJ<+cAGEbDVmfLht z!*Y9|x6hmOq}>^?<*B=AmMqHBpVYK^U%4zB)aEc1Cq{EdysGW*KX-bP&BU6b8iha> zz#tYP*bx}gBxtqpPQR5qwAa-gaj}Ese6S`nwI-XyRwenksb3&^=w|bNL7|z@vJJA( z(}vnY+P~mJMZ}0@@alApNHrXF(0K0ZfGqZHt9ZMh;67fX?Oz+C&-++@X&|;)i6;DQ zzT0VC_Xa-HC)?sDLaaY)HP@pg@$NfXqi}j~FqM$=u=H9(=TpSs-yFqccLtEl^f32clhVE{Pt@j{iqM!CwA@25IZ_U7d zV{=5NW#u7q73qWnxwE~Ha!$VuF?Hv_AvEWn^{oc8eOmVE{2a--y}fX^c7scNz^v;E z9V@lZJ{0liYuVQ}k7KEMnQRZ$&J%As&p(-3rPnqMwK5m(<|bl4wXfEHfwNdQol)!= z`SND}y`8+>pfIb25Jb>FrU4E^(~eIy4u4(d`p)Usq>KE>8!))KOq0~7TfaG;`XS^9J$!Y{6* z$?=%t0sFku?exOV3v@vEfZaREl1;yKfRKG3@JjEIpUC%wRk-RF86Zg`(UwWm&h|~B zi;di2;Rnmbw-Lc$)Va-oCrJ$B)_GYTACUUB3fG^eEYL>i<}cP4kJq&hhupQ!_Pt#2 z?=MkTW_lh}qxgVC?|_5TDdbmr>WYrFzbqXiTq6Dh?i=3y@0Sblia?4z6-U@1A^-jQ+-Ep_&A0Zg~uxpV~zi zkDAZP@{!eOz5Sb8Nk8GAT$W_qbvj^W{e+J8LXp~8e{tHe#zgqhIWMXtGpI<&Z&THE z?E)KGQ4#BvRQg8HcQ3HE7|ptNKZ=vA0nt+84v}|3YSfVHoiIyKZa_iNJ2g|jug<)N zTbpF<_)RbD?v-a8JzMbXd;O|yc2&k~(&+cP<^B%6hIp-&htlsz`^=3pgpSlm>ego$ zIR1xa?v<3q(JqXjI$b%2wW%IshB|zMaR@>G(E%jf!6|nqAkBg-tGrcL5$c|WLMk(j z`PkDhb=!5h)O*s;J`5qhZtCSfnxB z90#XQeWq;UhEBWlutHR45E7KRbAUlrzjt)bd&nSfp2^~HVr-)|WXZv00}*X)#mOX5 z#^<%o;^4P32Bl-M+cVr(zG6N;+{iO{#d4K5Iyls|{`}cBncc2G1;eAkg<#S4pUnM=Ca_*zkVv~g~e03pWWi4CEdWkkqwdwfac&R1|s8^wzy z;*Y;)C?C(MUGJc#v#pPlfR9^)E-woX&XbZ@Poaw@7aQBH#X5!~9H z1&?$giN(vQuJ>!Eu8)VuE+5FN@PPLRpx}ieCnAgQzCgLiVtctLXYa5)r}>dlCr0s% ztr#yA1curzxYZkqrvayVWjNtjs+s$kY#ei`Rj*LEP$sSdoeQW&nlKyG7_- zv2_u4RH{?Hx}c~Ol$`%kgw@n(qDF)^6eXl<5}_-stJ(y_>~FYKqD`A_(Z^4E`$v_E zaF+L#3Mz0nQWX`L;|k@(&%>mKx-@dZ28H3rC>HvUE|@gJezPGn7$-e~0_5G+tyw?R zr9>2o4xvM35WLm_|0q{#;RYPJ3FHkMoGC&!_L zXb~jQNvH81E1P-#d^WwPg#95T(H}}Gh`9cVk#4dR{|Jcgwog5t^ea=yM6x$*K|`~? zyw{qoO{jc}=kXS(%KKoq^7}MJs?c@|P+X&V6}7pr^$U~=(5u{DUoA~M1Y%uaYg-NM zMX&8WgW)zcU#quc78Fr7$-P{{x(E8c4?oqBtd&5MP^}L8zRa`n+-HcfP$VJjPq}C$lZFMuW7j8dx5tv zwL#%9Nl^VeDt^S+{V{KQrU3iq>cpUC#!jZlGXcb8aB`|59-XW(0ec2T?u9`>6Ht~b ze@hf=Jqm}yW~rSyb6Q-d6mn-c2t}!@iontAeYp$}fT3-MOXkH3Rb@OETM>(>*y==? zHenVA?CoO1=DS8-UZYC4uv7Jh(`^I=L3~dw1pIX77n|`w z)bZFscEF-UD#CJ>O#`iZc`q7o8o(qHX*%-A5CS%`yGzzfCcBaNh#Wh#92w94+!nPW zW{=HG;kzXO`-8r6F))6Z)Se!f$&QBvxq4(6jq2yb2t5Q_$Q1kE>lK4VM!xaFT8N+4?l zc?T0`DS>bGdWloDvhsX#J5OHjT2!b;ZnN$yh@UVFw7(l3D?!Wv#kg%K|91Gp-{by zSoq;cdnV6-mkYs<_m_{?N5KGd+wQ8g*OcIzTQ|b4s6>jG8n4EFCj)*6+%3+)POAi` zhN{_NdHWOV13*)fTgd$EVinz@y#1fErG-1nCSSEa``cmP2r4#nTKpaN#4%bfkDrzm ztOW#_I@UUU-!#LDhRRxC4te=BjRul8_t;Y|?aQ~*!=b6hSXF1L<-91n7--EU)<#z_ z^X~X_%(8Is z>FKW5-WgFY@cuGvUa>Fn<`TNZobcCAL@0xr)AQTX6cg(_)TINX)wI~(DazqU>13;s zXTI;=#flze2;v4x(K%7MV^p!}Oth4rK^P=nc|A)`P*)4`Fj#ihNsV?-rBc>p#l?Fc9rBOVwx`0UDdGBglG!svh9@)cx>SEW`ssc0xOCW z?wWqu*;juTFJYfn`uZnULPvKWWc_Thn1hABh0QcK@hZ?bK`cu{syTmdG}ti97u3T(PlQLVG})4NY^GlZqN7(nfEq%Tm=}r4_m)BC z6&6!hm+covW4#s<**$ffrl8n5co+*cY$FkmQS^Qj$O6oM+z^Es|KOX6sqP9EEbT+) zYc+K-(~4AEFynfC*l=7SFTzYa)ETn(0kC>O{BBN<=tRRyN@2dmB-dg!#9!8^Cg+{8 z8`G^tuI$~+Paq2jJiJsPw-9h~6;u?69}+B^WVffm)(=&yg}4I?^Ksbh4nc0*nR)8l zJG#4kCC&DRB+5y!2uyAnA-Gj4V^Lr%a*K6H7|B=HrXd}wVi@J2#0=HJZlTr-D_GVa z^$w8*%Q=W+AyBt9pVmwZUNqE%NuLwi30vd0K$7q!Xpp>CSBcP%d~G&zs)%cb8yhxK z@zK@{#imTxL0wDKMmF|Q*O6@8zI`Tljo7&UduVYkK~|+83T3R-0bxwg*0XFJ`}~f$ zU0Gd_X^RQs7fLAnx*vRe?!;N7c|dc-0VxtxieKRm1yyQKj&GynR@iwGRH{RR->T$B zw;sDF=PR2^vnF%cmG{6~u4sl}DaE{-x=lUgL&9Tb{++>o*Zjt}VjMQrQ0o9sFXVv6O8dQD z{Xi}VL!jYUp88g4(^fDkhgvnD`gc)W!&o8DEz8F)jod=sbTf}qOF;vv-4A3aX{EfM zDTSH&=;BqGZzH%*nr(bvLrAd`>`|A^n1{s6+%p;Q9TzI&oH&%B3JUO{(#oZY#{bBQ zmEGDRr{tv^Lzmc~0gt&$Y-3)mb>)-jW!Z_v^Amao8^r$nXue5gxiGo7HAO7d?dQMz zGT$O)jp$b5njoc%Ki^tn*Z8eeY@X8xqj&{`3E>H6IfW2{jx=N@93`<=0FXtn`F_#6 z+1sOe5y?Qqt=YiVxG#oc-b_(LWWiRNJwY*NPPv}uyg}{gF;%O~jA?ZAo!3MbPC)nK zCqtFuSmVFEE$MW6HgXyZIlMGuJ%x8%zRW6n_$2+HB)))YzM zsJA^G-ln^?CY)hwH7$fA9zCjuMu!~o!y0IdHi2@e^p9&YLO3jW6v8&D@L{=!Wafyl zR&FJc;bnhv5iYB2znjW_XnOOd2Lt9PCb#H;u{p?$7~&RR$gF5={U$R#bizEty|iOq zc(ihA>Dy2mpxU7d-S)<%l3WZ1)TIoW0AgkB~+Ncw(|wGcRIq#E$2NR-1SEUnMMlX-c4eX4Jj($_Z;te~$INJgfSGniv8 zOWxn3>jyGL9b-6_IqWYWRlvt<9MzC^zs!Ywyu|6eO@F&q4^hYzuv7n#`4+B{Z5}Ex zlU5A3($bnci_Eurc9`C@M6&O{#DzmxaOok@evC@DJ7kC7pP3_wXMME2n5M9mEMUG3<}6A_r6l?{~wJu+hgMsOZ>p$h9*=xxxihF%nuz3%0Pyx@WrodqEp0(4ZYrP z&xsS?BYx4{=ts2DJ#=G)wc+ULwlJyS6@>%8F(&{ zb~)o`X=bjN-QQ_Iz=-JB<>6H~#fK9HLxZyEQ_ntjZtRkH?j(DSaeK#(y^P z<>QG2?e&)=?M|vd7@q&i+;hO5#>ofzo`qlS@~e$x^3SeC#>%gzi?2!!FYNxas0KGn zl_MFuK)!j%)>45iy3mIJE!O+R+iI(xsb@#o>gq*>XkwrNAr zJxMlEkwi%^@5O~Od8Q10ZM*jdK2EjR+y@qY+EtUmzS^u=lNeV2!%6wl+(AX}AKl?u ze`$(o{YO<*NnYoHwVbc@zzjK~gFi7}1<&Tbss3Hb`E9iv?{Zqi)iYJe=4K_TcgZ@3 z&PA;#tA9CM4|!?`A`+_0FV?YD^@j>N4E9Yy6 zEE~!3!RDAu@aBxQ-6~&rsZ!V`%e6RCYxBq2koo9Ihqc7M*@<@tJ2^gdrB#37Pm_g!Rd$q-UX{`P%T?u)X{>Bh$~dj7 zn-zaK{QhI9Xc)cU^ZSe9*4ssH*X#Y+U0m1eb63FI^ITWJ%Tw3KliX|ism1eg;fxCp ze?Y+d`l`TD9E-q$6``LF==s+2V#m`StDcDBPRRzkMbQ8GvP$sd_Rb;aBBJuMv=h;7 zL9|hh;WNJ;)0jg$)M#JZ;A%e?2i$kj$)J~U)9xwg^cJcLljX=<%>CBY!tauJF#bF)&sl}#HD;oZ-?nxNK>m z)w2V!yvvqwymewX7FE>??=siw_BFqig87vsY-kF&@dUSM$lxzLF1kDv$D8T?b_-k|15e+NpDho zG2Z(~3yz{PrwkK*eVKrGRjI(5;iz%uilJ0-psW*x@rNq!5Pb^4h3-PNgZ0z49Lge3 zsrpn5?z}4fql6lx!UILh8dqWKbNJ>LQPFoR|MLpwtf8Lq7PtF}r}b2G16ClG-)F|c z0Ip;6U+$ey?Z{aeQ*$`1FL2;_Tv%!HsyOx;P2T*0X`XWy)NLowVuxc-M%5bZl9cl2 zz1~uY?iriEadG7_soGL}%RS}iwplux@OESNy8S24L2ExPzy-N%#EM`<>yCxTiW2yH zPjgO=Xkv)EAe~6&Vc^8w5ii>y>vy_n>F1LGAC%ts<3<^%?xa1_l=C$c&Tzzr(2qg& z98~{4|1@!tE;=|QRP=S%e8nov$sN%tgT#KpMtsX#uEL9SDC{sa)R93~Z+@{JnG@aoV5p(l#YMSWHLea_O9CH?s<1B=;$bDK4?X%(MJh8MMqU?(@-QKNzSo3#4#?I1s zue?XGY2__eHfeog6f+)txo~o7%10ak36lz7Gnk?wtB7h(CUHR|tObIQoc5WUM zq5eTp9mO`5ST3sK(%do*mo$)EY>KSOsG<7S})`qjj)r+XCzZ`U}B-0S(=q=LNDk~un>Fw_)r=6#;Tn47`p3M`a zO^#jQrPYK)f)V56a}$brBJS0M&clh`ovGZ=U8EKJN?JSbew>^i;Z!k?`}fEG`OKU(r6 z7k~UziI&4dR5^q#2uy-y#U&p_D*`J(EBZ3Kd7{q^rgU3|;Oeozhv6<8ySg#fm9!ypfC$k$hl z!?t)kf^jYsh zGfi1^;imTS3vmELi6pH8RI=`V@)+*AEYY9fg(Sbh=Ik{yh@OM(t?&>YZhniHszdx1 z!>z6$S!3Vr=QfREWhRjo>t3%_6Z|5aN{{wMTqFfHh?GSZ7BhxMD9=(3{EN6wWX~|( z){NLI8fXju~n<;nh2Hc3IHX7~*jG;0k1PsR{Z zM%u{H1>*PmO#khtnj*NlwlFshiM*udOBrZNQ)$?=c#5wyU&bk91*A!rKIcH= zB##9_X`Tm$!4}9J6`coA*d>h=*OE>pKZ#&E`b93D*8g1tjnZjhK&2+shJ+qVmKzBf zyCEE^8r;|e5$Q^o2M6(@ux1xWS8r@&cS+?Rxe5CvnEX~Yx6);MRzwH&{=zS$%g<#% zcZLlmSr);M7{cHUuXXCR)aQMRq#a=Y_k6DIbaQq_fWJ(|;n>KcFu=!qF=)*CQ2+%s zZC_s+tT#~Vb8A{dD)Y?=q4k5c3|H>z5iqi(-UHaz>EKo^{1-ZS3jGe3{#9_C=vX3l zpiqePdEwTV&qDpp>m7?iPtSsLU*F(jX`3MJi6_ptwFDQAMa)dR<9K%K&oWyv`f@Rx znbGch8`@r1yV+h#S;;YNSOFb)!|hc727oYRH0%`J&GEh#*tL0{9Jw7%cJ7g0rP;{KO^2I6l1)JhbR zXPVEDH^g{M;t*5UuRGIs2hRWaCBlpCcoX&Z8|B~;+n0agJ+seuO}-+V3OeL4*~9*O zuYkzTc_Jv0hH8oL&ccbdsvQBXgm-;vO$?uVl>vt<^qi=P@zX!Y?&FFGYq3w@=4&;d zEhd*pBx{WW9VGj;c2-v}_y0DqffT6E%AdH19zWcHu-94~&wEtQFz}geES91U18+%d z`GL=W!Rfu2&6wbW(>U8vjUct=^4Kgj3u+Hl*=}hYNUe`yxN0lANT)l@CIA}}6S^E# zy9I6NA&s_@Qz+zPLidwKZXbB2_V7=zb_`8|Ca_$DQS64eKSNbZs#z_N6GY~yXjh(( zN$t!eY&xZ*yLr{q??f5fnIhuwxxyuyaumWlK!o0Q-;iyk3tr@(e|YDaUxLpOnL zPDd3KpVQ#aj`XRc@To+7oL6=C!htIuM?o?rX4S~u-8>ooCUN5S6ijqinV$OTy~T97 zB^++fCd}Qm!4<!0YAm@YiK=*hf;>ZA(Dw^L)vFc+YC7 z@&Qu;bMo67BXBVwn(i29K`IUuek4$MMBY3nZ5Z}hbo^)CGL?<-j9kX!3191B3(9G%T*gmh z4?OBH9y?t<-h=!VAA9SYS-MaM{Ce#+*0DT-Y|jR&PW5}&yf4aHHLe@=pG$8$U)K~` zR5rc9<0D$paoNwEmR>pc@_$Q-#D$-xxMtQUxrk*Vb-ze2xesGFOG;POEa;i8`2HzZ z*>}VbIp=8y;V*E5A+-qjP+RImYNc~)%61-9xcutHqC$`AoN+ zu`TN}w$!jXX@b`ep9C|VHY-$_aRDjOO#RbG-F$AQcw`~dw@SQqF8puCKcfqhUG#E8 zWaH--AsBCBqjhL1e#LA4#rW8a&@*8RV zZ2T=bqBBo6gV~)1kwPRZDgNIgxDu~cEHd#^;I6ojp!-2O+e?dN)u(~?OGkgjb?T)t z&-;SG#=INqg1ZJ_U7?VE-Wh8lx8kecih-9l_T6HPAZO`xmL!qh%YTc7lNL$Z#}sBR z*Sh51z5fL6!?K{a#i^kC#L1xZ#)Y@%m5Bb#6@Bob?84iIzd3 z#sJ`@q5&oZ%T-Heb9*@Ttt3^7Bp;Xm3Q4V0wnp%Fy&8ZO((%`yrpK$ea5o6w^~gy4 zvrBEr$qg`1FS6;5evyQT#Mt6JQ6!N{L5Yz{LG4k_|>BqHrbJQ5HQyBf7MAH87jk zB^AR%Jpc=KP*CYK0s1zpY__aCQYN!kO9onk8{5{Uim=Dle5Tr@zaBHSq7ca|4E9CbR%5*$#b6YQ2ZEb6 zOvbVvj1)}_+-YSc)6eZ};yo0+EKJ4lQoLj3pC5h4T1%#Sxf=GMRH$d`a8g(Tn|#c{ zqtFefWl8AGg_GdzvvwRPi_d5U&i?^3>vrhymxqJ1sSEX|j(-8I9PGu6T+IN~V&7PqSy`FcSeco5IM`Wv=$Kik zn3<_QaqX`IEF3(noE!|SjGX^9!B70B>2g-?W`NHTnVH1QjIE69X#h5kMy{4F zW<~(_|J|LFk&Tg+<{!H3|G1Eai|zl1kmKS0Z$6HN^}qQzW)7bJl#eUc(TgMGa`s!Q zIv(N{GS?KZ9sYs{F8rD@VIMD_gFTohXa@eP*m7`Xe+xK#DZu8!)OMvAj?^ZGrFDcE zy>I1iU@WuV5_|rUzn4{t)n*w$o8qdaKK347pvLBb8C><-eX;AC=~9hLOUC>Sr`lm` z;c%O=H@;y1D&99mou*|kgK!qrZ^Wtt#@T+q7RIxeq!#8Gl}diMGJ00dB(;24kp0k~|BGhP0Yv9JMQqUy~B6RC@gLGey zQoOHB>rB)fsYA$?(r+73aMo>;rpnNWm@iJ|(~0YE%~&now&8NttIhhJ*qZce?VRd- zPl5Nuc(NKJk~(6=VUoJCglal>7*?9zN?>X?p{IYeFuc-U30QGkfv%)<|AtBwlu6jJNMW0 z->GZGipHo&xcLv9BNax|#s5OjjBlvI%8<3mK=4adEk3h@L{J){xsy|i4wVH*tJ)8F zsQn>BVgJXn_FKsX$l#aTtt?a79$uMJVM7Xc(iabHlQ52gD)*@4;=vfR&|~X$?LL*U zRJzq9>vc_Unu-hTr8c)L+~|rjJEu2J|N7=eQ`$yLC%^T<`bd4}7@gb8yKm-yAROk@ z?V|CsrYI_xErS+kscqIvtDI9cQ#>@^80;h6D(W=X0Zt8L*zt?HSic+Rt$l>C$~QOP z{_eHC2tMW>4P82XT>o8Dde0sL#u@l`>^TnI#9qCkWaE^PF1<;5Y@?S(6SWKzZYVpk zyi+mi>g}e>4xlSQe5aS#)b;oG_yES`3JPR9^Aa2$d0cI6Nh#Kn(6aD^s_D|!>`&>^ zvaGeD=-v`Zy`{?{6#)yAghpmA?rqnRBfLbtZ`JWe2H2!(T94DCF>$`_SL%4rIw7g! zX!w%nJkL8VKJh6|4_+F2x%wYiJc)5BEF8-Da!MHTI$D~=qUI)B5`wu#(K$=$=7ct}hZCczp(vtFPS=BN zk;|6#rbK&D*d8bjswc2VsRbT5`o!}yM689JTa9?{D$hAn2b(HJZwh4YQ#0HS)}QZA z5i$nqz3}+t@q(z^qIuT?-486LzEBZy$Z+EqO29d@F+|i}Rg^m5_<(w{h zj-zjjSVRUHa}?eVT8qP}f#u&{7rd+IWgSz^C>s`tjhO=Vy@^E?-HK!*Tk7@Yn^P8j z+n4nz&cmEPmf{kh(9D`D1C3AY?J!j7g9oZBx!>>2UV&W#4_i6(npXsW_vtSU?1+{_b_rm=bPvOZz^&mg3%b%#YBk4V<(;U}X&{G!4Zy zTAm1D-_Q@wQ_T>e)%_6h8ggB#T((?tHzqZR1@67lhLXI@@yr!L^oPF%TAZYV?hLV( z4Eu)J$fkbs)kQ!pE_q|zNWxbx33n*8-rHYKD$%ugeTAV?RxdyIMSxWqmLeew``LR9 zcK!#vADRmQ66B>f?_-`6KtNHg_9Bw!l92S%b_dk_1%*tFh!f8-|9ZHJSlN~LyNr7I z6ShDmOayl;6)&mf>DbzdF65gD^e2_^lJ=VoyRed0O`A_!&5Ly}Z_xE68eO+;u|rXv zv`^sC>Jj@|;YxKfl%tD&fNCORG&53{TTbLGNWYiWJOHf)8g>>+ffywXbi0=4#L8EI z9zF2d<}UI#)wfh?(4GwcWpyI{9SH#3JTd%wHODTQA)yz}K5n%97d<%`eh;(uY|nIo z==qNa2}7b;S#F;tUP%w7A<>sZl22hx7wBfmFvamM#)v=eguH01W-et= zlp#Y1r`T6pLj3Hd^=f!znX9>u8{)afiLXgkOOS97NiR9C4hh7~)Lir;XiI7xE8CS@1gAMGPSSs9X+8hl0aggxxg7RD-^i~ zB)Yo|E&4TBb5P|+A_XrJ3H=y3ue$poK2?Tq){xUz$(#r$eRQn^n_Z{H{FYQ$XX@d6 zKtymWs^hQ2=kgl{$vQ+^?(#};%|jl=N%tScD5R}bipYmHXG^&I>4Rpw;;M?ENQ2GE z`^MZg5eFl2WGEiFl5j{$I5`zdV}=_SWDJHzn_^T+MjN}LG`m=@-S+sknnURL(0cMB z3ZqgCL(1;)N;vXV<1DvYQ8)Kr9L*Ffs|jX!#RR#O<3OZHhl(GFps(j_%NFA%(A)G3 z0DYNPrmSLqlq^-WfSy;&Oa+{4#M zn@ncPoI z;7l9{`n#eI=W~3TGjuT{Kt9BdJ5}ODY2w&D{}MCrV;qN%qCZ)ylWXd|Z^lQEF?{>d zDh1FgQifrWn@l*-ScXAp92%kaY!<86`5HQ1d;N*cmc}#IlM0T%*r5sSwvK_=$fhv6 z>ToMTNorEk2kH$=*I^B5py~;I!25v0diU+j{Xwsefl+EoYjn_(uS7LLPr`&^+fl$1eDMkq- z)(AAU5F4dLD?zbp$5Ia!+K*mS5&RrKa|HxmZyyy61|w=d*g1nm0%;*jyo8nxC$_as~Ovw>tfvK+9kdZza=lc-`36^7)JG z_0~&75|4q;)%PE7*9T59EAViYs9rC{by}!;@H52;nIub623>xyxpBFND0lAGP>JDP zlZqTPThCowU_vc4NtqJYA-`0pX<{m#+hOmoxdq=q3(P;e?hSGe9XwjF@c2mj8_TXQ z>f$!Oh_%o*`@NDnbb*Kud3P6SLt|Brsj--YE0vG&Q})!p3KQiixCCCq(kzRg=So7?K zpwM;ysD@N;!&7OAU#@KUxS7n!)ahY`1_%EV^k&G3kXL#2TR(J|iHw!&3wj#rXF8{1 zzH(6bQ5*rj()ANZXT>z$=$~Yo7F2fAi-x9e#(t#E=VDple+} zGmyMD-0K+(iIGg|t^Vv^Qmp-$e| zILw;x>P!z?hy}Fb00Fgd(sUKmVjOB&g9ds>idclFBW!RGdPOcgA|a zxhdSx$QIv@5_2^-Q(_{Kf`G+OlafzsftsX;eS1(r4paz39GmNtZZ z{gpAoxQ$O_reghfQ*Wj#t#6wgvNEQ*TfDa9w*~s!s zpRTRN~sk$6VP6A@aj&b_~rOWhAJPCkhHuz2D5M!0z4gda0Y-7!sC4<2ql zfnapK=$dfq?;#F#ombvn?|}{>f%wSb(?+m_p8`JM-1}qkyY-v&HW9*~;6o!zqVPi_ z_pUwKhwIJq_asMRv~dz=T+#><=d^?U&GUQp(EJ~`9wdkqeM+pKBFAC<$GU%-nI&M* z4_35^*%d*wsd~!6FU@bx1WNRc*@kMrt7xvTDER5GPjevZ^-Xj9T*FB5 z)Sm?=0Sx{=_a0EpF9HN7;treMspnfSCqAA642~|}4W5DTbEzm-mmeG0bzbSrCHb2h z9|ui9MdE;s)!EfXf9aO@-}RhH`X3;(jH{0`r%m4ZLBWT<*OQwe;;WC>wWFaf9=3Py zt*(Hng}>$!m5Yj3TOYQbmmjxo?+>{)oTFD(ud#O@;4heQGXFCn^Z&ixqp4zM4$mZQ zZ))ZV&|wDr17g#IXHvEDHv4x0o=F3s!vbIfuzXglI5@cetNNdpjHvw6&)fmubpix>w72R9don5Y;RI|~;ZGph(Q2alLAmjK}Z4$=ERYz8Y2D>v7F z$Yzjlc)98Ycr1AkA~hD%c{SHw(y!DqOx@AP)iTKD9C`h^Fv$64Cyj_n0qKaHqDf*J zpM;vn9ZbytXFgME#?BWn=B!E29{S~Lw^(&3HPj#25L$G2SN@Kw?0`+s`+Awn)YIkE zd(KXdkGr_|C9qRfOIcYfK~1fk=3_36PF?+cqdGZ7h{6t{LS7SUpC>J;~oMN(ZDt5rYkx@xq=)P_!Y zZRusmui6w9)Z-$tDFs-eUewb$Go(McQZ1P*d5nCOypR@~7N(7rYkuKdm05l@vfZZC zCS*`2gSJ4ZNNCi@g=kA|48zW>MrxdEoSE$*K(RX+m1e$A}n0DnimS-efshoK$G!xF`^D%2zYHRZP)$3^kA0AF53(E}`T zFIfhQr5A}WqN1gZi6TFbJ= z>lr)~?sR1doTFaa*k>d)H4wfL3lLd#!ax<~uU{Ym=sP*1yxluw&E zI{m*mbqlblqP1;UL_iv)Tco5@I;5oqlx_rOq(eGH7&;^b3CR&eI;3G>5Re!`RJv0f zTB#wvJ;V9F_x;cRe*Zb=znJUUd)8iS?LB+#`?>G?*%*$mdTKy))<90+iHJ{upB_0C z?{}ry=5delf2+JriF!)7&5{sROo95YI!!*!USOLytt{eSzqf$ygAz^sa`qCR67}6M ztG@{1TLN_RG0pnP^%Q9!4NiX2k*AL|Xay&a9xC?8ea>(w1nG$w#0I~Rcj2s1`Z!ra z^37-b`wTFXl-7)0&N9xyT|%u`Y6&6N+`9e z$H~W$?&d>C6AA5lM#k@N>?hZZy|16BFM`ulA3SylfaBG)2u)^yI8M^L;g7#lno`(0 zzhFD1s|fRXLWA3^FgRxW4sPBE5*kK9Y=)%k@A5@TXay(zRGi_7f9?0ksYoTD@Ez0G zeYIA|Cyy)<8_I1Gm(*&iEs)-q3OL30 zaa*5R42+njahK?fH3LURSL8cAE= zJH6SO^?&Pg1m!+L(hGVDZP~@YAt9#1@X1bX(ZGUq;{+Op9=VpcXe5jgRLIFi;zFtY*Y2pmv&cB5Zxx4W zX-DWWi!V_j#`F)JmRy>Yyz0N7Yxq&`j3Gy}tO$0yv9r#_j&Cz7Hc!@F;BQ0rgk%ab z^Rw~@^WY*`IpXrs-0cv$_~VPq=Es_Cxb7(BN`!2)_i=pN9pd2P%w#7wi^MxjV!_jbVzJN{v33qg_wYtd>un(W>w)IKH)!_ zMNKA_!SAPmNPw2x*#(f^PDBQT-kLQbEL#BI%!Zs#^EZ`iB%f$qkXHtf>%I*gAgCcT z*3t;xg;}myENSr3FoHUw)mj`e-+bEUPKx}{BauhG6Mj)|S5LBpCGl82+bx}4!d=fE1q(O@(-|wonb_C4vzHh4l-H^o6TYk$3@8)C`CBh|rfP#-UJMx%zdg}unq>f4r&^MF zJU;Xtfq<(T>k?vTL}_s!pPone?s!OO4;wj#mkK4Wd5MNC z(v=xmB6$;Ji6JJ7dH_i7@2HAP0UQ<83u;4=Gz=vWtF4IbC;S_Va_4t3Fj~rZ1|N5i zqzb{u@Y0DrhL?JdA~C$w(1_tBAzFw^>(X7mh9Z4G+R9Pjrp+4_TO{6s45(6QFY5k-<7MViHn-AK_kkap?d@T{$sov!url8V#SC>e@AZ zV`P~Kw$P4C5G%HlJo;^#)qU}ekEJnGdz@)(b)`(>v?X_aw%J?h<3NW4D7KC*!|K`Q zM6G!2cH(mlfT&PTVN}??cvh6CiM!i(w_~5wgt`=D-q4Ww^Q9s9Rc)G$WpI{&UbJhRYieoh8@vOdZzJtrWcq^$0?mUB~Xj(5!V(sImKgAk8+q`};A7Bk9{U z)^e$S#n=WYdnvTln|-8%$pMK`BiZ!r`CnSZt!L8!FI!oS=7?p$selXB1T=(Cf$h~< z7S#+@IyZIT--QR%sGUy-lNk<(h7T3>x46L$Gy2)p1fRe)VP@#uNJZadf=P|*Z^iJP z3KG{}tCl`Pr^fEKZ`ZIZ#lX(=U5iQ+$+!A{;Eb`XBa$%?o;TxG)q}=za}78j2!0S2$mm(1Q-D`ABKez`11%^6Dn| zIwb%=_5XSK&?-3LaAs^02>sSW|4xgcQHbc3P_H2WY=gClE9!T zPAD1!rp&Lg|6nc?AwzLo)Ln$Kp$u=lvITI>Uy4;zs>W>1NeH^{iG%phsq6p=Xg}fN zxANN5111>nAGMzS)|SZQ-5C=CXL%U|r!2RS*yP*?#cHAp4HUkF%-!T!ZrLJ z@XPYE90Z=u-Y*ZMtQYKdSkf?75t*S9M?;CK=R3ESf-J(>3?l_a1Ch%ZEf~kvczZ%2 zYrXZ@7VW73BI`-1#upZilISTEB$Uij8n;yd770-R7J~bE#jKCkza#I(`#fqZ9IMi! zkvdbjC!9<^*dr4*kP2SW}V|ys3DaW=c~M%i`yfI z3{V#Wv>*klI!>pD67B_bDvIuQpng**;_?#LJ(NQOd zYHQ4qj(OZi?12ezR@0lY!RiVWOax_*Y6Q5V;n+6BY2$S@gOFG7VDyT48Jjh6mP4en z!uVz>i}Q0GcJ-TB(MzVvJxf&?_8Gms3&?lGkW~|xbHrcK9?K>c=hsBqHPn@afO^kt zC!7G1A2q6%)L|F?%;t`UXr1p;Y&ESZ2>5Qlggg1zOIL9zrJ7P~Y}WbdCPo-;AR!od zH9t0KdN2#DT5R1YMi|D{xhpgQvLmN~Vwe!n9l#R`#~>`OW{ZsJRX6}92_BhSQQ+Yz zLX0ltYx6MmBT5`+(4)}7pIN$vu&j00r;$*J^N?eS$4Sd*^I++fyyTT@3kRMhcXJw^ zklb~ODl%qT`Z;wkkf{WBJl5~Rp2@zgUTdpDm1G7g)xyfr!pF7-to;*!3BZHcyrHkB zfzcETPVi;1Cc#5&XzH9xf0mH+5DI;<*$NaDAEh`VD7wcqYR=59j4@ikwfkVuWzegL zL6>Bs01^$adYbTR71B1S3c{JXOI4V{pL8Au4flDfCk^@EC{9r<$y2WiBQ z1x3>bWg^n(^{6>z5UR^wM=iijS;P^5roTm})E6Uy0t?}mLCj^m-T;ZNyYi+3$vA@o zm z#&9a~O#vh{#Dgdx8{c1O>efP_aC;6T*1w8Z6*~gmM6!yq&qZw7_FngvoMLJn3A%^65jBcc;4NY1I03hzPkB7l zsLz3vmhNl(SJCN@{NITMo83IXShCbt=h*1lllr5}4z$#7Zc2e+koWrQ0vdViquilt zlQ+u1LwPVhb8IK{mfai=OlN?Sv;Q&j5FU`_)qjq$WI7^2)OA}MwQq`4ZdL-GEFahq z#62mLbR4m|BNlFZ)gWtoS?iAd;K)r)pC8{$p(a#1YP+*SHps2kY3{b9=bCV?&2`vM* zQxQ0;dz!;YraZuHeP9yF!xFUma8Ml1qd<$rucsJSmeu}T?izhxSwk`Cqgr9WfDZuZ zHTEQ~u_rn3l^Fv*2K!Yz0DWsnw-AO?i3ddCv-z3%2SQplm1gx{`vCkMlJFheQDP|W zP^(iK+@(}ikjaPSvC8UcC4rKY=HPvM5mcwq-{l~VKzE%bFFysZeKF>S&9Dqn>DT8z zOFVwsb*x{bJ`9*yqT1JNVIulVkax`u-|l{dHZP{Qp-mYAC*vGbCIlK5c+CO1@8T1R zoImHlNRS@~m?}rk#JV^Ez4b!`QO?3W^l}YrAM&9Eh@?0|oDglGSv)$}fJ})vK03va zn^$oVn%wx}X>Hn?mE&9n@mIo4LBo=VH6M-p6Y2#WFe>rr9TgxFizer8H&0N1{k%Yr zU54HlX9k2KMJqka@%lKN@rllHx~*1z%_-VMk12&zT$|{=(QUv)(`@{JW4pgupA}{9 z4gr)%VfAkakSY=L0?b^}z+wsE|HPz9$Y2l@#g0HaJ3=AWdgFclB-b-^wF7bbLJm{z&_lk34?f{P;#;7!BRlFK01_oGCH%L0`1-jF z^!9%2!ITiE^wt6*NSE$t+iY0gM(4=)`a1xx$rRCU%wmA$ zkmI$VZoH|PWso*|UFa}KGw1DS6MES<&~xeM0-+vCY*s^y`MYldAC$j-k#%d8>9&(K z4#J2mZ=KedQmlk z=4`Z;KBSDWLVRa*dQFrN=7p(u&`9{A1tVg~Z0A$;ZFcksl}RFiyvCac;l$O+4pr%` zY|apE(NwicvnJYxQLRtS7*>;H7_vaCM$xG7W&l`EkmQM~p41Vok7{%U19sZnNgo{H zr)urwxHAJg8_UfkOISdk%Kp`10@5(sJi-0d;oC{CFgrSgNkGdJt!4wb&jVCFf>AHf z3sd&MNtXurEvJC1+8k5%;3Ggb2^yZu@Ojc=;8j;L$Vl1y>g5=c!SmXQ4NqMReA+Q) z+alm2xG(lFB`ARk#{*-<02p0+F|D)a3%KAqqiKBbwRBXenZ0&m@xf5e*k5<}dP5q~ z1*&GI^f)xaM5&{_q#+|qIDp7BpDe^1a08>#)#V#8#gF^UHl?05CEUQe9T-EX?{k@f z0f~Q~%LUH;u~r7pC%Y=%P@G0hdiu-ro=0=uGHAg*IV@60B$wrk8{9V0^J6*R_vA9scXuM^jeZ zkLa!`MPSEFAU57S9yZ2nY^hJ+&j9H*R$b~_@LdX2$vdbKzAliF zDN?-wa6LHEB?Ecovr!RgPK?r{^+;v=*>r!1ynCQviQGtqHBQ8oYWE+?J3DD7nVV zGT;omIl;;zbmYJ^?Os36v}yYBdoKGeSy7K35R$L`an@#&bDBYx7?78NhS}?mBWm6H z+8!pKlzU_@GDxpi#C&nwz1{3;`w$VI_OO_oLAoa0L3m*Pt|v-4tCz^+^xYFK^55X0 zH|;D>?JLP$wHbu%*E|&=I;)@~vMDFUAKOw(Kff^DAH*Y%oqGwdh#8MUQUbgVDv%8R zdhli?`ui8vEPU=j^^cRBVq-ZX_NOBr$}emQ5v$4DfMkfN5RDu>s9cFo!;Y$mkqvAx z0Q&iSLr&EN$rk{7<8bp0NNljJ0HVOk5TW(pDCR;mDrAZTID^Dv!tjscefLUZy6XkM z(xO{52;DwDL$|Dm27X3zp_>%yj0Qg)#&mLJwVNJcTpW-M5-^4QsWST{Lc5+pv--a& zhpWy(&z-$F5&oV>9|dvC{tMs;0+ zTp8SPPNY z^iQ=M)mopbhS=u$sf%PfHWE^zl$$3TLqszjyY<(MeuvhYBd;!^2m~ZX1~GQ-@R>;i z`t_LTv9n|2Z71O2{4+j?1RUKHBy%uc<{Vo&@bHWw-@8y21IOZRryn@q=(!Y%1&6y6 zKR8O#(*lSue^P#W#xWa`aJ{1m=Kuz8Z`Y~V0G>%L5aq1!4iA__CDA!z-vJoxu$Chz z_ZXPX1YMpios^ei7;=cH35&fbY7Z6zyq#K2Xno@dT5xh7CD~+6Mz{boM}oh>8G)^8 z7=Y26z%&HT73hSTWK#(kJj{U#Dkk*B5%5M{kO2os=JoHrCxILFWFSDFK>Cr?5SNs>0WU$Hu6TKz~y>~-w>D423DtrdPIi85crw4s-B1L z-Q#q?)eJq(M8V&puO@lcZ+6kF7uSl%^}<$l0B!l4OI@N64X&oHe$#;XbTE_mcJph& z{rPREArn(j$#fAB$JD(_-c+(o@xY{hv<~M zelF~#(*)#P^QS}Jw@Et{vf^Sh>)>e19x2T#b5jj$(=-mZbI$?3vO7nS*9*>KN-9LY zn3rmV%wO_)qI^e@nZkXLn&maV>7$>yT;$iTFDqFRqdX;Ve*JPSJ#T)!_I(Uk&##SN z;tgSp^AlCe&b+pMMRMZ5#bt=?<_jR=*HucNrGp!Rl(D~Ln@l(;91DXWMi`%fx&j~ne}IouzN_%Kk^8lc%c2@5rYP$Rp9G4u#* zG5k0cZvPL0ti%u`mB_@k`s|XqWA`_m;=xg)kiRp9*elym`qVz$C191^><&P8DzSSm z#k9tGodG`SXW}%tD;8#($324Koq*aYQ)=hW(|A92gt|E#CkKDKktdn7W^2s#NUO>PHRkSE(QBND*J$Wp>4`|{o3uv zcrN;_+w_ZRj1+B1rvhNt0bK)KTRa?7-uYhM^tj;7T|>WuRfw8sQH`;>Q-KLgg|*pO zd**TAy)=l*FO#&!o@wYZX>i|1zRH7ijwfVs=C#HdPtUEj+Xl?z%p1QZ#s#%}?TpK5 z|9TMj!bUHd_fu|W04g?lY9F^=tn&FY zNX+c1UfhfVBj3)gA9YRi--nhhpK!$uSnCDz{>%_xf|XU9)D)wZ1V6_16y;McGm+xJnt!e_QqqE45OZoYkj z^WzCNk2QPwYtxV66yKGw%Of9FQ~gw+qqC6}Rlu!%6MjDehl!0+{(P4w!XEqToV4#s zW0Z)m8cR%($N4p)8fV&?$2okv8ruiXKS>OjPh|Lo`wbE}iv$tiT^PbwMoBmq*>YZw zyWhF)kXlFdIq?Yb`D~OxF9(2d4gg zcPkez;zuHok7o(z@gwG4lxur99wdms8?TjTbdUhn1{s=ozn`5F_NT&+*-WdhNA%wh z8wEFrgn_9r^Zl#9hZ-Lew0QsY{KNj_eTR1rk>GzTtcU;d>ZJPjPVv7(tvrHgJTN5| z7Q)&POGqjER3dbKl`u+>Z7t#)CN@bhV=aw*^}d?Wr<-Y#5M?dT z@G9K>Hc9s#34*>wiTZAQ3H*{p(VVclQLK$c8S@CjCtBPbyM0tI|I^jmdHdwRI2Y@92#(8{%@v%Qum##-!SB!gyEjk>Wg1#Lp_gF=Ywb6D>V~UAj+& zE|}1kwc?9)Q-Q)Os)-xANha}It;LaH?bW15-B=R0qZS1j!iwC95|yNLUZuJd=ycOc z5Hh-x40q#fM#PQc%(>(6clAP-<#l?gEFezqjIN#9O*oB9B(sn}cV?zeCBIuqOZYMn z$2|tiN2F~LMtgL|`4e=1Y99#@{@;T}klV?kr~ZCkDD=L1tvnN=q?=f0;{0=950MPo6ITBw zuh%eNsa=CVR6RsA_-}-uYG*lPhd6sV*4Pi;Dw3GC|&otsPc(N&w4Wd!?rLg)IEeXdleFX+L(F3`Ep$v#!8 z)9rL%Ul4SzAlb)Cbvl?9>}v;|OGx%1Rh^cl0sC4)=lqj>U@FrWRA65d=$w7BkDJPL zFa=oL7|JJ2RxA7TtPAl0*L}i+f0^IlnIwz6rv!Xn`eHYxQ37un0 z_DNNquDAnkRE5rwCHp8TPrHzT8x^2)=Wl!tm8SVf!HqJ|xy?5|MM~4##NbA8=-l@= zJ_btD6-3}hVdz}v8y{??X%|9pBOi3G{EbhY;xr!txbXpWF5-=kuVR3$T8cS}KAF$K zol|l8{cZ3uGjuNWjn9O_v;`jcm<~GU^u{MjVVV&ad`tn1_YQ%ZhN{9Yyhlb({Vk({mUu9M3mp^{2p7wztQZO1yGRRxp0` zfL!Ix{=cr7PTm3*McGKYx!{S-hBnn>MzM9eLAT2feqQE0E`Q`nKl*Z77n$9npVOV( zT<=zGeC6QV>u7!qGoCk`#0@OqQ=g}>^Ov?Rf%N(yk6^gbeA6VTr5g+pK<1mau}TTr z?J)k%0;~m?A;7l zWN*{p79n0cXY%H1s1eXQWGih85~bS9O7~;va1_w#4L@)-o=b-w7=_4Q7IKsZP0?Jf zRLhb427>CA9aJuu>`bD(N~)B>gxPH!)*+=?`S*clBddAKmSp5ado{^Pev;K$p~B7V zzba<88aCq`Zae>^<|B(G^Is{G>)4vPG4x}CfZ=B&Elph&@w>95=ChLzZk(cQZ$pdBdnw_i0GwyI>uJ&Z+Ij-?!?mJ?PWbJGX?z>0TIUmgVY7J%F zkran&YWnBEiSl888+xiA-=)ICloZg89HYvvsN29I+O>}4FqI*Eo>6h$i;^L69}RxM zEO55KGI=xCL}J0A)77~4{x1Wz;8>`x!XK5Rm1k?;dYF(+y%#qwFWiE0b_M;m2ry^Et zHPcq=Kqib))1)sZ_u02QGkO}_8yhPSj<1iXJk_5ag!U4S?Xl)Ptw43%&gSbJ5APE@ zaj)Q*HnmaGe|urr#y%aU?3Spl{_N5Ml+6+ltn8JvxqhcY>PSI!Q{slHP5rj|C$Wpe zle*1s9=8)ag+NiM?sUU+`+od^^}Ep?k{M68FOzC+xQI@-EZORRb`uum6PdO>eAokO zB>+ZS;1LT>yS{Fqc4<_oi)(1zBjaa(h6?4OdN~4e-ec?WgRUBkkRvJNj$yZ1%aWG3 zWHdhM1c#n)lamVj{R$mf!cjiqEp0g?UE!16%WA$K^!BOjMZ(E~IKz=>X{C=^=NVR> zP^ToexiH2*K<}x43ON?|l3np@(P7+O1|>r0Up?|DSpP5HaF5xE+pA<;w5bTo#x=Ho z^$ZC2@cb8Buqx>vD2O~he)Wa4T>aCfwIAr!2i$iKulR7Mi3-)8h9o*Zb`593=c_fj zX>;n9Xqk$_|gl3lKPeAJUt8yW5O~ZH~bUv5^w) ze5Gf{CChwcA0fJUJM`m*O4QpVpJbeCeiG{DJHr=p6JXXuVUC><*jf^uFR^QiIX;H% zF?ZV+zSLl_R_;#Q`!NpPx^ju8{&Y_Yx*7dO*`n7Xae?i}!rvs>Dt}=@ZA;LNZ4KeS z>VKzq6LFNq(?Fqx3o+6HS+fM+()u}m^jIY}f*h6`l4P&Arb{=aQ@GfFxa6(;a2T!o zV!^HL8VvT-)k@8_&zh|qPn*hlx_kAWN^pj^$Lr39A@>*K@0OEzm~^S+PLtTFCxKmJ zt*ak=@R;`x4Fg^h|F47iOw#>V>2bM7W7}Y|no~x1snVUx!F@+Z*|YqgSNxsL(6fOh zza_vL@NY(HE*g&{xM=VAIeGG!rv|QO&B{!yR<>|7{&{FGmAX|H%1iZO!zoBQ~ zmu+-)Pd|9@lcKCHvg>_`4qVwmIfuiluyOtk3xb~t+WHsm!TS#CA${DtKTqQQ>UHbK zM)x-?Se5A+?9TYJ7M`=1&abl2&Fzi08b-@Kq`&w6=~d_W2@!1i7@DPBCHrdmFYc1d zRa~A2^ImHZ%%t*=@Rt;oUnA|i-;7@Ec9p&}Hg@_KYM0i$-r4ff>jLK?EtOM+GQ`d& zO^(x_0|x;O6MyPTy0;*G8Q2%Pd$P-T)xHAr-CsICPQ04mpO&@^q#l&U;tb#B(8Fvo=v4l=#-| zmE%Z2gw3yD8LVFoF#A4V zi5g~mICIonmdKQ18l9eUpC~Pr8d?TJF)uT1ytDRJHfG6>?YYybRHuKD8Ud8%KWj#7-6VhAW@e=tSs zK4FM%iaJwx@uPl&=npbcpc_wDLXT6jW?}IvnXV}kRoX=F7Z3r7vymUX+*wLb3wGlg zPl^yj|-1{;T4IN>{x;tU0@+zQur~G|8MZkU%xy?XX-dg zB|U_wI&aFFyqV5*7-cR|lM4{zc$g6?I?tIP`)!idUN-QNd^QvQc5)Ka>1J|K?wmTJ z8^#n`+^(Hue)L!)iON70w{^o<|8QO4if#XKP^;U1BtFV|9lhwsZozvlAF0G($D*){$a_b z#d+qRc#RQIYMn|+`kZ)YdXh#D$XixFx@he8V+Ylu?qs4w)e#m+x&$4i10lK+a5Hq> zapa5R7vh&Sba&;s!;4&T#B}MoPgN9QTymnWbVVntBB{zKu zHq7t73tW5gh|jU_1bkO)fT(Cl@V^2#s>tDu-YMhTg|V+y1dQ7{FD|FkjUVFD{y2B~ z6L#l-sQ-iCo5&JUiWNO3CY{2(iFMHB!+|?R-2P90CB9gE_~HdEaYoR}O$&^-Axrej z`F{Ql<@cHHh4ly4UnC_rWcLOhd2@bV_#3w`xCE+tN=mGbkU#4=nQ3|6liG2z0N5Y@ z$Lu^I$QNzZRCERSM~e8S`ESZk`ZM-BY-^WG~PVb&(?1Onn1^O=#_r@>iAMvBsYD38%gRZFF{J5;R zhq{OBgg)r z4(wI!)!bQ+$qaS+mSbMX(XW3iT!QZQ%3X}n#Rs1ivCyFYsL=}!|Jv1h0juH>8~ltA z2zlTk5yC<)?-a8T`em1e&YINx)-LM%ZM8X?_M31~t;yX1TW%>xbM>3pOKY1vBjDD> z_YyvPf?ZixTu5vj#9S>>dQl3aaRWzej{mqd_MV4uER}~;%HxB1*W+KXw=Zxf5c>3w zsw&bB57S7@N)h>0h6DD9G*{Eo$-gao+0$53jvsu&;y#wj=4%=b^u(o=QI>k^qq)8>u25Y_s9oqrR)gEKBGvp5fZ7)e3=zEIIm8qKrGwR!3mx3o+3=kh6^Z3%-O zy{)Cz0877ZA<5GIfK1c((I}nCuX#G4vi%*f%==){r8_c_oO=|xU0!}zvSbr|+Iyv& zXH*%G71KAX{!fC2SC+h(Nb?S#oa98oH|G2PdiZ-GSU0ftB$I+i{2Kyxg8wMRF}!5^ z91i12FNw-7>D-VxlHI7;l_U)u@t+JFUYYfR9d7!B9?8)qtMrMS?&TcJqM8)l9?J|$ zZi!;1FoD$=!<6nZGr8pk!o*82vai_X%yIiB`@H78c8kR6Guo08oy`yA&Z<3P zO5ShGQ>RSlUHm@eufi;%~;Vm$|++>j^k-g8_W zfsb_FKIc8x-IMRm3kUw9-y9=9WT2O5K7yM1|kDGm|40dL-vAxS&DM-9Caw!G6nJiZu< zmKv1Vjb-U{C31bKX@L6F3K+7UjrUNie)7@kN}TgqToY32F_y=XrfOfIKpK0;8&uor z3juRksBg>DM6aprN+dGI?YIj|aG2TEKK!px%+{B-`Ywe5r7BlQYj)GL`lV4=uhU#d z*VfTnt7DDP=M}9~^@hK7!XjVH5$7kE9@CA=R0J}DGJnq9ru*=+Z>i%5G{?{G;}rYz zJzm9VOI$vdsjmnq@Mk-gsPu1F9KPWei}RhIljW_%LES&wiA9BelSF|nell9AfQ^4v z6dC)nZRzQw=u0Q(Wvfa5aR2_9Q$FMS^l;<6O6K#qq0syUPRH@@M1ehiX@`U!t3w#g zXS;kQ6W{B?r)yU-^k^Z?*1u#)W;U#qj1RS=B)S!Ndn|WXNZFvHgskEuS4ng+Ze?TB zlatb|sL^6|(?=h*E6`iguC>*0V#?_zo*hbGv9r4ABHEN%)HwE2Cvjd?L|QU{o)3v` ztVB0fq8n4CfX0en=td~IF;XY-JV^MeL9A4h=?k5+p8di8&uEzJjmV2_mQnnj?K^KO z8hig#2n9Q7EzlXrw-2Ez>@O=6{tynH&(x7Qk{_%`rJXjao>!0$G@?>kreSoNvg%}o4w2;Jz61IM!wXqvXh6c7f6pkwdjyDm9Oc`h?g?oDN-eeCzv_homM=E6$7 zEBH@=c7aUgSYAb#R`!ab|GD>>0bAws*ya75N-SU)1K$vd#OeJn=_nhsbdwo zi5x|0c?{aBj&hP&X+`S)Jv>!RJ%ze1T-}{vu}|&b$@4yw=Q2w@5aMD6!fAqAdfgKo z(+&R=+b+9Hf?P)9bB3}qHqNS7(s&&9?g#q%zP8VT-Uz>6jaJ8hpEe4F_z2bcv>$A0 zTHIyo_76+DEaVQ3?v+Yk4c2@#B5LC-MOnhOdHm>r`R)?t<{9r<_q^uhr;>@SS)@(C zA$8;R`()R}%1xMSVX{XypcwK@|9H`?h9Y5IX0vt?{~b?oTv{}GAf@J_dnr`Sn&DXbLvVp zB|P1%@Vi@BvGV5=86l7~u1jA& zFA?1rg>VTF86NR+8&-Bw;wv#5%S7CY-ZmnV-gKvs&0m8!N%s7HmR>B(a(*~Fj(b|0 z@chqo&*2IdM0m|!qmW-+bfY!y?(AQTJ_iYY#S0G-q`_^@{vLeDQ8qhNrs#)`Ff zWm>NSm?5pVtBFsAZlj3rgXplDhz2+(X_p%6AxEdHu@W>(Pj+z+A$OQO*rz_1cfM`> zNHRS1in-^iP!p(Er6Dv2+Mq)-oBryV8EO9Pa#h^xE00ydLp%xoAB3vDY|sW<#*Fan14jhH z4>f`;Z?3P|b>xh~LOA7&iZ|HZEDzQ{I9uKsDVz46%F3wtZvjVI0PFBTC{(f(1z9ux zcsDPJKCCeHG#8XsT35d76x_3B48Zeg(%+sn}7sxNsJT3a2LWhV=! z#&}>*#NW|dv|knLe-9~%{^C`vUw4iKeWg8)R;C{|j9$;qRv1JaiH(Bl<`AUY(@qV$ zH^i0ecW+jR&K$qO&Dusini)F6&Np#Dv5elYySNRCp9&#bZf)=xy;XO?)|6CuA(|6* z!qJ31+~wbN!$W*frHO=CeNKLkEPNa%gQerN`BQ{#1=CCw-Tp}ANgd0jGn>5H#3%@V zD_qX3b3=2{A@eBPozOMIF-!hM%c;$Y-5%>+(VpGjir|fK!CUfJ^7x?)L!l~%R%7Qz zqF0oNP?ZhX|M2;*<2~=La;~V}V?HGvb}x53Et>F-m#`$PTtacGSUMbqz4K0Y4>gQ& zJTf~-mQf!A+(NL#Q(Bt0Xpm84jpUHHz?7C#&6T45yS2Twrc_EeRTbD4rf`>Qi zLL7dMOdUw+n(bSK!AP(0&aqFT_L3HjmL?V_mc$pCyXC_K_H+jyFgBd#WnPIKhB{o1 z3|(cO%8Oh%u3rtE=dIu}W46G--H=4ps+_}SA@yfb&2nn2)0;Ab-}8!gc??1mU8}S% zBm>%n|88s|2fpX6tlulX45F;WiVK;~gKmY2rVnlBnVcRHFSd-BAD@bSU2|+c=gr7l zJE$`cNq;pmT^NwB((e+&e%z8Kyx-nLRg_z-=V_<4fB2T|$BFOq`10?qgQ&dy3h({| zA@)W@noL8{D#yE&R!fcC8~UEVHTy-BGum+H?sU98{yC=$CoKvCrGcZWm! zvKza6Cb6V#sB^esYp;)A!c{h3?+A;9gr0AMqbpk+mu@{}FXekL#MWvffD8}6u3F*t zElDY3&t{XkxVd#JH4%<|I%ZG~pC=@9@fT1OUD=KVbp_HE?(f)1WI}y{t;&Bqi{5F~ zRmd|thNaE!>3eo-_Oo_rxJGgLM;rII^Rs7gX!2{Pn`iO1C$(0d^nB?5hI)LS%JveZ z)aIs=5^ySX*@xGnn{FP&+k9f|xnHxoY^NUDpK_VPp24EoqLFUS$lEMs?D?{Kb<4W{ zbN4sY8QaS>L*BG!=3BhY&c>eatD)O={gA;Fha~n1UQJV(^m;$u=65FFCTms$Y}KXv zQZ!T9C!{q^#na90c$*VVJQ?d&r5yU#MpD+}*{PW|U5j{{ADeuOu30sGu8!(S`5nOS z`{V8G08>D$zjGtcREz$Km+azGZ)ZnLzZur7ezQ^+=}Do_)!d=tZ=PsgZ5{cB0%`M_ z?G|}>Xr{FIK4>s%F!$kWMw)u+)vUgL4mN}ga}S%m6?S^(ux4k7-=5Uan{qCfMXPy$ z0@?8P1LJDgU`akbDKhjIG3@?gEq4dEP*LjK9oD>v-fl+{wo>^ZX~oj_3H)$JLjWPCp>bZGGcxd}oNdGh)gqNrnBw^Cpu7$7!c3OOzb@<9h$^mq zfMLwYz-2jdWMBq3^8X4*aXCa|_j`Ph;EV~*^nlM9Kg>X6Y8d^Bo-C#%2O4rE(6dk( z(WFv<^%KrNiM^I{^@p?vCHw{g+D68u4}&(%BS0&&L}P9K*vfuO zp9uxWdRw_$zu5j3CG3Nx7jG+jt=i?Ydpb&kB4%mDZ-YW-{pmzycVq}n8GUoHi4&y- zUN!W-r&bVI8Gf8*2!9`y`dv3CKI!{dlSqjFVm7pZ#^60fn)!7I{C$!F_0n)jzOOsr z^@W=1@c!WM1mUz``wona(g{{8{l3?G8j^CB>M*ok@QRn{hoVfl`o?C#xcUp{z_u)0 zFhfc&3lNf6PH9q-3Qm?anj%Gny7a+kLi&ti8SBN13=6me_8Jv zwlD479|!(s@uyE|1VXIg&oLt@I-M#Vefg{VVw(I>Q0K=Dk;@IF>X~tVdSf_%W`0gN7q{6ArRxtNgZ zU0equIrBhgXM7=^dO-Rt)Pwi3#C^SRyS98-rOy6WZt9LC5ZWaBv;QlI9C^J|f3cNe z=kF=W8Sa%L>)^FUD!+Rr`=r&C65t-ww=PFPwB-5TzB8pC6Vqth2q~?|423Jd)cZ zeOuh0CA%eoZVOFc$8HIErwDU$d5L!+WV{+#b~c*{lXp;L+HG&A&Fgp48=FCsd<9-( z#b$~dg_6EWBZ3nM3r&64skG9u{u0B1UG|C8$;*_psw*XP#ZO_BWXF^L{eQX0v}-36 z>U&)yK-L!Tp_kiNRGNvGlPb~tKk4rU7&R(-m(LT8m9!8SO8*s$&iyWZPfBn1^`?9~ zUg7UQa?zIK9)BN4{VIxjWc8~^?UDGeqP|YqCbgNRTR9O1?vz=n-$PF_jW@{ove2y9zQ->|Og$LJ?sTLxS3_8!VYd9&cmmW=>cv zGz3!BV%Gb?!@Qx_-s#+1f1zG8V=58!rNZA;t-k2UtaiyFe{3(C$&bV}h&fTUdrU>* z4Agj<2iqJ?KGv2-hMnZ=G~EsooF~q>$KZkU&f%P{x<|q+zV3evev|iWN6c4ry97*o z^TL^%;(3<$GxiA1)1IHx|7OU}d$ln9@@ZIP3**ClN1r~8QLfe^sy}@@kHZ2Tr0E_B zAQK{BDXXUu?op*12;a#-2n-_2{ENLZ_+*0dBvd4gbj1b{|Lu znfAp%Lo_)WR@x+`#hx8+B%<;+y!wJZNZSKzQQ+U7JxxJuyp1s%g9vaeT%)6_i zA9|dmrgXIVZupK{p{|r#Tg=YpSciGag0k1)GxcDURSYaTAyIYx?iI&$1~3w2%D?Z% zcA1dY-p}!u(Q0|*WHDj2J-JQ120NDEZJT(?v1-G-`Kt@{i=MC(5sS_R^II=3i|M`R zL&#yQ2^`0ftJ;qGp{D{pR$sU1R}MI)=jb!Ud+m)sv^D2_x5|q?mVH>PmU6~?LgsHE z+ubHq9uV1mPu0cvFA@D08@q?j<&gb#|PYy{j zkbg{E=q9k`G7X|1{{TX|oTnGQZ`?N%4$p$V6g|V+RK0i-iP7G$P|MIw-H05jo zHDT-D>mAdbuBEC;;Mk9>`;w^HntGO(^x9ZhkC%3iy{PrMcSih9%9w?4j^;o}zjqxJ znV}`FIpELbYAV*Ei5pn@?)$MCA8!xoXGxEKG69c`yT1I8-uIfwrsv`{&pB(MIT>k( zDGYqHN9^4lz+|g-zaHsdt(4jB#|Fo^WE5(*{j%Z8>dy8`FJy0vapa=w%D$0ac+q-l z&6U-m*7!G0{UYzA$2d2FzkfG{h+oCc*WWCq_5*0*av;f5pA44!>4yBuuTPl&kBsj4 z9YQieIrr0vCE&dyOUObhUNE8+NuA!IzIEm7$SWF9qlW#r7aH=y9uyGZ`~H?iYpYJU z<(!3M!R_e+--qEGn-=tsejipEj_$QNiJVYc7}0}V=RXtIi|$Ti(PjE>-`pN-J$hBV zW`TNCc2J3(ui!tyGRo9e##MTyX=JDUl51D$=6-kkV1BCa#LH1w>u-*e{c$`c$AQU{ zuF>FVJ!vbwn*IO9-g^L6RV@GGA|Ob$0g5OQ#X>#XcYPF*CQ=0gC`#BGf+2}1H0cP4 zir5grj!&Ob1VqHbquU#(2q;o4pn_6Vdin1OAc84Za&yD?_kZD%oO{l>xXx|obr0v%@6HMJv^>kl_%eM>*Xbb z`=1ex)}FQSl3xdw`E-MrKkU-}Ni(k4HuB$t?!IeX>z^AR{=D0uwRfe}dFk-HHLFXk z+q3B6>e;!Wdv<(#?E@<-j+=Gq~A3Uw`;> zsh{?CSU2{-JLBKp++yhdUY+ZYEW6^Xb)^SCFu&r8J9_MF)a>a2@9#h7n;&X!Yx?^m z6K7Oh(dy8J%?|JBd-uybZry#^z_&BLDfROHMOoFaIJ8teu)N~V{m(X-cHp$v@0U@16L;-admbTUb41=_URpyRSQ|@p~Ie zU34IBWLf$2#jOr5?0xU}N0wKt|Ilc1IPTGpI+mS!$MBhzuSjh|>fP|;h`Z|Dux7*~ zb@Tmo&n*v(DjEM;hY4RC?%SwK(|T1*T9ciXjk|2fvZ*^OcV2h>_icZud&4gyKIs0y z{F3iS{%gjl?meHVa^G(w?&uMGQudtzi+TMEHx1CW7T&ryzamQJDYu$w(HLCR+3q-ZC!S0-$7^3+&~5uUteCThwpq z(C+VSN;r6b$>}38UNUg?SzkX}zROkRKmKFKgKZxu*7nywKJN9$^cT8}PwKsL*Od6L z@9pw&y<5mzy;goZCH~%fyNs)Q=>M4Heth zz38Hs8rB*-;-+Uid_Va!dfhd(&ivxhuRF%KpR{WH&~-c4-v93U-J9DCg5Q10URzz` zwNJ7i%d#J~#%n`r40-LGwiAY2zV>U-vci;477y57wez$qRoU#v?KQ*4hgXD;+S!kL zFaI{N$$`Y}*E})yg$mDaY?QK8_dk>L_dO`1e}%06#p*v>tZm#E=)-O=b(!A0_LoyC z-M-?UxxL=L|UZ^}&tiAZAsjsT|TV|g*qg%f&(_gJM zWH6q*@8!l7o=$wT_Z&6%=Gk9O@7AZwbXxn%$0~JiR=M`_d;TzQ4}3*6ym|Ih)4R3r zGJQ*}FS9CbS$I#vws9|{{JwPK*(-;JPya}Gd*;$DcZtuAJ=-_)+f^G&?x^iZ4b!U17|^U&`@~l~c>iRHM4iUNWuQ#`x*mYjx>gsrLMPD)o3fhtpqe zIlN-`C(V0~JGi#itocJy%6GfD@w^Hn?isVLycaEvD^vU(Z#`Lh&U+6yaKikVS8nd~>m@3=P ztGc|zy2%w*uHEqQgp7?_8dqEQ@7b+-Jp9zAPkQyLi~vWpXnz zw)c4}ubA4Z^TRJ*S*h)i$G={@^>MfU`{&*OllR>@^uk|ns4#gt9dLWSyZgLYIoQ0Z z#;lcQ+WTD|o^fUOwy#b82#>%1#hSs6D~o-6a7E`-v9@K&Zhb!ce17qN<5o!zeRjq3 zt!{kykt?rht5Y9Zd&TofTiZ^VTxH5jsR!Edopt-4F+TIc<)51u-f#2pq$^Qd=ihBo z5)4m#wCLHhI+uImrs9cTEPA5UrUs?w46WAo;H`BBUD~~P)l$Eg>$~{=UO)Fc)NId- zV=F#(QGj~7MIQ~DR16j0{83LjdEc%#wpVIazVwBB##!yA6{}SIKg$#B!8Yru;{li&pq+ zHx-|9RJ#gNyEjumT3)lWoW!-K%eR##5cjATz|Ml#L z>hk0f*E}}*qQ^#kJgelU4Y#c>)1$_GdGSXhSMIua*W%H=Jh7}ZBR<^#8Vs-6f7I`z6F1n;E`F-%B|UnTxq0)KBYO?} zrQfKf3x97kulKZ`ZSmj(S1oyb%Vl58d!Xax&$qa7+#^-5Asu`F`->Z1dhqCpTgq)~ z_W8EMieKGwZpF)9eRS)ijf+paR*L-Gn3q9_sstw7&-oJnG<4Y?#J@+5~f?-u} zn)}}sne*w|i_zTi^4yQ!a9hcg-W!LEoqBHk&iX-8B++ zd#ilsFMhqgSH{K}yUuuh`W-ia_u@M@jeD+YOLBkjYAgBFJ35Ca>hdxjt8Tbpsz_|{ z>!1sU&q-YNWiP_Vx43=yR}VItbZ*(pE4Ntu(YRjwwtqUh_^fMdWH$Tp?&aq`dwJEC z?%MR;_m#eI2T<<&HWyt|Z0seIzQ6mCb1OY}affj)BrGVm``jM0KK=c@RxJIV@w|GU zF_+ZtTH?^5)Tb97{(AGa!@KtGUpUx5U7vbjcKZj%t*Do_7P@zTU`0smW)|p&k)WiE*e6s$*xN*&TUUBB-=UzB=(G4Y9)CkTS{$T0*n)O`v z^N)S;;Km2mUO4KPjvI%xx^(bH(l@n9iPWXFx|P4ZXWi)|`}M5Ne`?_|@94K=)yrd& zR-fPY@bbOe7wqnN@%)O_7mYcZa{la&f0x+S;`5mq}^F1Z*Ke`mAvurf^&{s>hU-HE8Icb;HTVh{7v+KsH4MvpOUZQt6 zb-sCfwdh5c~kr5Z8uK5^~mGw@X@1G*}1*; z{b$J4gUU>Nd3x)5Q(M=2zV*vfS`VDkdS=&8UKzS$+Q#2r8@A_lRWC`^e(BkIZ}bfx z{vbTQC;Rs!_1-wI-Wx%^|2{SLg@svHRQq(zj~(CqzSf)HfAz-qRp0vl&A0yD{LSyr zd*k0*riLevJkEQ=|NebnPkeCv()PuwEU!6nRn1kOMD(cgVaB>oV%iC zm6bK?e)jyT#m~rvjV^9`_`tSN+ZMh5)4(^sA9(CLyfR>jL?11>VD&W%&l%o!XW40s z4(%C5p1DKGOXe5fB8w;AwR>anJ?CUE%W3jKl@-6wOC7y`b%~5~dW;%eZ}Oqk_Df3L z7*s6VVRX}3btfO1S7qscwvM=P*Ww{JY&fIZT^Dq=bq1Aax#8+Tt>5?Q#*42lHE~0&&KpI8(TUs7?ETDieSH1Sp3d)CUN4~?ujwwrQEwUdk2o7n5tGR>E{h5sI4#ty6b!J}7qpOXCkITQP~{CsF;&1#bt zKfm<4MGvj1f6@NWNU*tPMh}?%>yw&uuWH@9{iF3p{8aC@(ZLfBulT6DcO8ey1ar)+ z*6vO7MC*z_d~nmgD}P!zXVZSk+wLj%-JK<9nZ+F{;*YT^{^o_e(#{S$@?ssk{2#^U3Z}UwyfJ?*g;C z>E4gZ2QMsm>5rMs&|8Po`PG%WjQC{t4{vDf7quHOcyQSV=@Y%`O%{jh40`45oe#F%xgzE6CX?olSTO491843X(Y^AF+rR35 z_w=k)pUpq#=1ngzO}*@uCAY<|A2D@7$&~}kPTo~{$^`WL@8d`RYu|;_Z|(ZdymM}z zdg+=eFONuVvU%NzT|bQa@!G44cm2?x9&zN{^_f+E-`s5CbCZ7Sx8%WJ8jr8Tx-Opg z%;3}}->kbn>yo>M|5Wkbt<_e&I&Z_=7G>j?zFf60DYw<)j2~ufFE(dp)#R-6KN^<) z?9U&3(PI!AbkE{0Gj3Wrvgfz)=g*wnf90}iSN0$~rjG5}cHS++^`b6+od3-9foHy2BffpHvhkIt zKAUi;+V-35n>XG#VgA%nyW;Cjs}?V&rgwgR%9~{JfY%$g8Tm@BmJR1@+uLJciQnDg zkw1y_@yjo5*>KFZQ8Sk>?`+?>y=CQrXMK%6ztlE#1G_Iu8~DNsboWzo_kAxXR{d{K zTD-Wf)Hm%{j)|+hvSrWD2d{jx>)hslESplL&H8cfsX+<-tIh4TY35z$&)!^O%h>jx z9@_I%rx}U24{Bd$pjwgf*&jdtI^%w~VDno`Cytu%#->$ef7!Ej_v&r4*XxDv4jKRA zy8C-=x_y0_gvuX$cg>cYzI<+a%bV-J`gW)6gYmCCHRh|b4fnn~Wm4nAk8ivh?`m-1 zsWIz++kWSzhn9_haO}JPdT`ge557CNIDTX8kL-EP(a?8OKdW-(rN1v5`BeYq=T{u~ zZIkv5ejHn>;f`mn`h3Im$F~3Lj^1tfAJ+I`ep@$(bkUUoLPqh6aIpL*}$T|bRo+de#K_T`oDhzIxkd&=FR?moZi z6BmBFtl}fBs(yUn<85c}zWs&szk9;pwEU`X8=m{a*u8Dr^gC};mDkRBY|pZXM!w(a zfoI1K{&_-LgJMsuz0VCvrt=51u264puM%A*ckME~`KAe^=imYMl5V&3xVd7N30)6t ze{9gXA7>tXXxgo7O7EJ`)%8TZicd=()n|LLR)f0{pMS$YrnU5 zZvP-<7My?H$mSa-4BmeBR{s&35|aoP44eDa zgp8h(`u=ccw`XrVyW;w9x875A&Ig)b`tgCS^bY`y1)Rh6dwQoHY( zu61V4yz8f1E=hQ4`18L{NbFf@@DHNfbqNEWt@-h;T^~H$YtzN+t5m4|+VU}NcaH9} zxY^#;mmf;k__uxkx&Gr@R{xUnM8fECzq+a0pPwGdt;dfD)iX&2ttYH;hD6I$Qwf1lkZ$H(3emtWNHiphKT9zO5aaZlBsxj3tIeR<`E z)_UJ(Up%ttk%jZij-HYGN3UfIhdlQEFTFNZIo$H~)*U-9d}QH)B`w>oJ^$nMp?&ag zUk`aU{@1c|H;?^c!3B4|(rwqESJqBU{ItS{gZ0k~&;R(qmc)&eQ}UXZO+;{m$R{MB3r6w)gjkzik$0Yn)_xelsFRA=Tzn+(Ww5ac%GrF|fI&%mgv@Yebk^N-t`K3VeSa)du zyd|6aJp4rMlnFg;y@f-;pq|z1TzAo~qtV6U%Xqo!i_hg{sy8ipf0Gxo6Te=zf9chezu9-?o(JxJwsg7X zJ+D5q>A4r)v#3Lf(KUh#hX3tUxpTYiE%v~knG2Wg+ZnaTrk&q!I+F3Qb#%jXmiAa( zs^(*3N{raEf5p~asbfmbIp^a`Csmx6cTjSIUfw!O5eE;hNZwa=V{!S?dnN6hgmh{N{^Uk_++(TWL z^nBwcb@-;8Q_JmdLX)q#@vo0Mm*3c9?6A7c->-e{tT(Qn?H^-Kcnqj{X5R`myIfIo zX0t`Ro?Uj!lx1b6e82MNUc0`JE7zt@kN1cF(sb;&X7AS)v-)2>`#yhrDS!K}b861~ zKD_WwGV}<0ZHzrrV(Z9))O~>Z+DD~yS zlIPAZKkaCxg>}RKn3Wx~jYxWI_|2=!b?;eW-6&6uO6;gIWlhFmws!BGE4F^V@Pd@V zrN5S?wq|DtURUl;S^bfomsWnJ-2Tgk7f(B<<9i#lXI#4E zKif+;8u{+=IP~Z3XZE0&TIb6;EGpF`FP0V2kHJk zyT0B!Z%yi)^=@HKCkEfUw8DLBs?TZchJJMDv4dd0-u3R*@p+$k^WDXVe(lxwr?fp4 zUTZ$5@piuUp^>wz-FNVe3qM@Ey5g|e-Tvttp3;eB;~U@YnzlMTd`H8>SB@$E-r{Z* z-boK04Zq0`J?oUx!hf5;otpXmh7B|3#f_LJD;=rdviM)KE~SfFtS-?hD35}&kIS+j zEq-fOrFCI@4mzXyl9Q}W>2Iqyo3sA#xb5d`dTz}RjW165CBHF{f|;9bRl7|*Sa1Jr zyWZN`Z_Tz>*4u?24#__8=39%0h{*@1H9qhDSJLD6ettO4H^R%+GJklccB$LMj~_JY zTH(#~ixb4u+qZ#(zLd#>wR;>{Y%D-D0S zbY}Bsaya$YdBZz@*md6>Ck#t9Odd9F*4Z!gtm=A(F8(Ml`Fg|PJ!dq!>(5#`aijk` ztKyN7f)fYKOWeQY-44U`tkO>}x`P+HYU2e@j7Dk2M(mleW%cm@!#h@dai$T=c`MHj5%0g|0TQrwYA^sZL`+P zg@t|M$6rhA-~8N~p?lgdNvr(anuL9Cr?swdZTj*DN8Vp8GkZu^t%%ZxE;!u##;jkT zzjk-Wns@$m@vcgHpHE%g^|y%&WWuV1eWM3|GsvI(WBc<1_jGJH=%q^+bgq~%bxi%0 zODF!kvGt#)hy1s5`=0*hk|X@hb4$OF`s0xEw^kqThHhLqIyHS_ViWH z!qoTb$A3Su*3Q;{{PFz0eH{l6erdsi&It)qXVzc2YU0mZ{?X};t=Hc@3@-S6TAA~4p19!LVkHN^RAZq(`{TaWSqGng^H9gzhQ9Rj!p?&erY@)-zkcG>ZLL@C ze*WkE9sd~o(!K=|owkRj|EtrZ6YB2!wEBcDYrgHh{ey1L$4~lfYMZ3^7hbK^>6QuC z%=qAuF80Q0ux|Vsb@!sDdhJR$IFSFCiTA&iI;MN*0!t3<^ZK4k_muo}O2elrpJDIy zR%h0kZbg~)|LroV$Fw#x<6l@+>+{u_`&Z9cHc~RuZixK!{5yuy}S8} zP1_E&d%b3;IpT?c0K7Gx~PapX?@y0*U^ZO=sJlN)?Aun{!deW%wANTt0NwV?FDl0ZM-duCZny#tMyC2#;cixnb8}F>L^zqtj z_PkT^uI{NVyDzCQY3sE36_4&cxbe%Md$s=M-6b=~ibogjDz)*;uX=sh{=nhxTc*@q zm`>K7_wSiYKHOgJ+iBaop1E;b{F1T{mH)Q($UU`gJv_SYnJ?^!@4x5LyUppHgRR_@?ok5tlT6eZ*(uXT}|Tqf+Pj+cI^@iBHem@Mz;(8@&2f!6;bqej6`c zJEqk3a~h3mx&5LBqp#|4;%wwy6P`YI%+Ix-+u!5*iYqVge{q+^VQrj0$BNqqB|i^} z&zW`6Ym2JQFWY@%!_{YPTUu)SWyxbMnRR~O#VMn*oc*u3oj_`h+zex11MJJ3Pq(fNKtVu> zC{wd$^Y$&uobkV(|5tzN)$i3WIaSw%^;kVn-=u2)zyE+ln^HGC&c0SJQzjPZGXk$m zl*WaB{m)5%DPn-oIDjD_gc25jxBw8w;2Ckj88P_D3YFe}m4d#{$>9Ev{4{9XzfW>p zUz?thl$z4;Do`)DD$b_pRFjmF*zl_O&MoTltKz(fQjAPaO|cEH8elW7ifi1cOareK zE-Bf@9o3hFWA9M|)D!hUjYehS;u`4GK5400DJJgrq!iPzhPO6ZIy3u{znCKX*hbkJ zmY}4*-P@oB^|Q|%xg5TE_EQ-Ih>Lo?GW#SqsQ>5LBRBQ2eUwc<`u2TgdXiMh_UH%r z%b5exY@@7{jHJXA>)$>5>9K3s?~>L_X4s6sey+bFQ*^J?^zf5T{OrG+Kk?Q^(rU@5 z;5d-fxd2%~F@;hPgrregn`19N{=)Rcx`mA39b;7 z4p2>bAw#@6M~EgVBfP)h=n&P|Nlp<72qX$qgab{P;sMlDXqGFwYpy4r=3V5LOl=jTFY(>VR0U)PYc^ioQ!XA zts{R6Q$C3{Ga*eUC8(^7B$J@ivNCLDG;EoM1YrRn#To_z1rB2l7-WIcB!E$pmH*<# z_DztPndu2$TG<%t9D8X}W*?cBkQsLbQ(iJ`Q2&@8{YOsKGx{SRoptTCM?W(?$t2pN z-zQgR3pqG-XPZ0z9Icy9%Cj+#f0exKHqnG)%d{YhVP>QiR&no{0tqz&worYqXFPEc ziTm1XuM2V#K~~z47%U2MppbK}y%%#_DTV?lAcN2m4uBxMFgeI^2^_^7o=wQi3vc!< z1qTf&F$MyPrG&;|!Jvgidgw+n2q1|C@yhV;pCeY2+D9g(L;+-|#y&Wb#03T-6Uaa! zV>~zE4lBT70aEvp={aG{usYQT2k8Ss6J2nq78+p;L)HO||)a8@X9$-D(nS_#Qd4;y|Q zag?mMrV>!0D1#=j!ZE@Kb%sz%IOIy881(uaaoV)ZUIj;od|<*Agj^usybNK(wJ=Ug z98l`Rlv6<$HBP9d?v+0!qy-p%Ir2GKp5jxSvp!`c4a`T0Xe9BwC6;k6FtR4VA^l;L z`3R6h;s5I3^i`rr&=K$JnL`2y#JoO1z?n7FzZ3@?d81iG=#rCCY;>BB2f%VkDYuYo z>4LD&aBhXPM1#Pn*pDyCjEq#BBr}uxCS?vNI6xCn0*S>88{laUz|boy14;?OiGZ=; z=SRAG?xsC|dma%~ZjI)~8mO3LfuT|<%^CJ>oE>XN-{NKa@f-}EPEPP4Xp;7DQ`1tD zQxgXy$Ub=tG$VHEhR%OhRxYZPuULFhC-A=F^?r7G*k|v(9+>hjN0SF8dW6JyS~h zPU2mbq7LJ5{Em1-uXv!ac8V5m%jOpFWTj+fSW|Fxno|-OW~~&|S_egdIdIkr9vEP7 z?(u7Pz-}v4g!zSW5y8WrsavFV7{D;8KtQxqf#nn#e?UdiG~N*vE;zaXFn?n>m*t%m z_Hju-Sr9OfObKX(E*f+$D@A8|lOKhy$0TJ^Go+mp+#nQK#~|^99S2Hk6ssUSSF3|_ ziMylGw#4%*??eIswGjq5fFu%HBO(Tl6_x_P07sNHw#oalfY8tJ%(}ogYydV zAPKw+b6PNf1g64A@!ZSTyJrCuw1rDwbDlg&N=eErI5I0KKm=3HsqxeULZGElQoz7j zWR=civgCxh>A38P=xYjdD$ymS$mIN@k%&NJ3Sa;TCO`ts0&2OEKmdTX@<-Cf9P~-O zq#zVNA^|Y&8<7%`+Mzf#}&)$g@1d(%xGG={=exoNBFr zzzC5dnefk_O-H1@ihFnF$(0A9p>W2B&`@yo?8ID&CJ98j#0B1S-f0>~`)EXXSB5D&Z;Evf;gh;o=BfJcEe2oPYM44_5c z#2XJ42u8RQS`-yL+g~SV8EX=vg;R$kE`$kyjdDK3awG_o52XyWr+?1IitzoJJdm67 z4%6;3lVoNTR969n1fkHkCK3_^2uk323Sfj8ASj45;o%rHjjMI+D5vz0KYM#ztv?Uz z#Qka3PioORaYwrE5t|s=Kk)Zc@b9P4HHF--(vwot^Beh#Ncuh$G?05k%%CRH`oMxA zA2Sl`l%tA>qUu>G;R{TH8sH-jC$o|>qtLl5543a^D!>p_0cHw0jf}+1QgUij)dg`p zM>3T1@H(WR6C2qdldZ`))3NMJ`3ROo(1WF8n(Kf=gOT;!+4o-;FzD^H;}EO=6V^Eb zoPiU>N$gQlNiEZk8*90A0D7&mNS@}rGZKh~D*%zUS_w>~032E$R(TfcxOKwBxQ}=z zqiseWlYc(4Eu6SJMWw3V`N$JSAWy8NR}N0Nwn}O1?GCmY3lSg_2+VLyCRQ?YW}eYO z=zwKhK|>+;?ix5rJ@G`|dsr?&z<5!1ityD1N9Yw_dk^U_Wkv$!A$qD!vG9CMDbKkJ zy$z4ePv_i>ePwc%jY31(&~^(2HN(i*fM^kps!9|nE45^#NK*k4(^Iq3@=XO`g)|Bm z!8|#OAoBGQ3-+?4Kr@Cput2c@G0vFMnt0Y{Zi+b0|2_5K=>d0|EvFyBL~*q!gE$m-7z_GAvVo0hu6zU;{wynQ$PyRpr1t zM6QSi#6S#vxB+0H&WGm;E!$NT92?`@-^!5Z{g%>zVq%%1!XY3rQcA^8Mf`tx@?6_V z3^AAVFr6$jGEU6UIPooyxt?Rs6SDkw3}5sQn!=`J^@%&_ZL&wl?Wv89!${WqDWLUyg2|S6XK_DTQg`1ImJYzL4G3Jn~l|wt88hjQoZ^0x{VMxy`HUS69Vj*R~ zn7`B@X8ApNNgy|EMW~=L|B*F2Imi2vtWiP{_y~WO@}Z)m%5!`nVCdhu;^7pGCo&Yo zCaTFLrm;E-2(|NpuVaLJvld8#JTfdblnNn+0fa?LhP_ddDXHdo^7oO`{*zME2PCA) zV+qoECC!o|PMRf=q?Ac!l@*>gYvy^fQeN?lB+NPuiB>U-yK?MGzUeXxj!|$=D=lJ% zuyC4QF>WDn&T!+^OxWOb(z86Y3FPl%k9}?wl=`1~;rv@OG|kCJKP#U`jbygUhjm&x zD8n&yq=lh@CeHa_A@GVUWl>GW9g|^3f^VgQ!z7;HGVYC`@$rxdumv<6^F@Ip+~bE0 zifoBc#JZHr!uCG}Rd69OOHjCM7aIwU5Bq^6S_8`hK$YSq#*QTSE=&qcJhFXq0g|^# zByL$_7w`Z%h%u+kQtqtx=#&S6vc%XTiK;TPRCLf0gPmZOh22OB8&3K108SkUkVn zwwX2|T4)6bC%c64Aq!JhF&O4T0cV(E1O{9eI@)j;BUiXbFGfLgx${iPhK2TkkknGo z0U_1OyHe*o+bvp{f3|AW@cKAS;{ZSaS-9@qF{}v%M0?NmxJVak(T}yVQ&* za6<1^DZw6bxZWKG)=5kJOAX3i@k)z`JY=Iwh+q^wqF%}|@{tDWSITC`%daNz^T z(np_8QlL3;n9_h~gs5eN6jcV1%s0_KGJdO(qsF7tLJ>whj}L?l%V0vqyxj#cC44z5 ztnQVRY|?EMBC`OSfZ%Yl4l(5{VA@cmm}VhIP@w4JP?waR;lu6_aKX_!0!+YVAek^q z5|1{Znn;&jX9OBunUJ>T@iKCqfZ{ao zgssHJKuQSG#`@qC80cLmHC~a6yhV?~jj9@l3r%4Vcol|3iNFv+d|PAdDWMb06xHlQ zQfjnXl_{j4aDlRjg|-M90wIL~5Y9gXpvYU*Lyc;Sas#mD+ybjK_NvRYrosv9BX8on zZBeyopQH>Otu}>9F;1bjJ~A^*TO%RTP6Fb651>RAeNPR+MzvK*IOi@AKw$w!;8{}; zU@jbH8U+Ao{Xd!%wFdnkP5K{A`X5dDA5Dt;A5HonP5K{A`u{ymI<<8G#}ifZNWWtR z&!9bN3yr^K$^MhKIkD>UslLmJ3pP*nUH+DVe5!Ahn(^1&K2G&rPTDl&pXMR|v#iw| zCwz|Hl27+w5mo%9N>BiK0G*QoumE`yhQj>}wC1!yktOe*sDC-|@9=uT1ptxroW&tX zpcclP35XDf2xxTNXH}zXGaO(gaybsz%{1QKt_Slv0U$*pA2#% z4}wJ_cmK#|g(pungI`1-ZUn54BrIf>;II?|;wIb_jv}GFJ945(#eI_D$xYsj6}-$u z!FFb1kyK=NN@6THH&zMmC9MGoh{Rs}5@8dIal*J$t!*6|_6>Jf zPmc;tX#@+T0U}%@p`angp&%?X4UNPO>mtQ@w1Rmwa3Z3z>t09|?vNI43B!O78ZZd! z3kFUWDb9>66~!jSLKuY%_c5WcQpo^2Ev-Yw0j;E9MGZBIt?C2IaDArLhDmA^#m;xl zKw!^Rd_M(6y1!q#hnbOIeT;}u0wfK=VR5g38!j~uxW&e1??Xkrp(;d_E;&`^y!<*T z<@Ss;YopMJL@4OAMa0K*UO9NU@3KJwF@e@bl33FDKle(|X<5qOnvju|mX@u_xe!Yf zL}4rWJa)s(%-)kcE&WImwaTw7*72{C*C;|be@Or(Ok%HBR3R$`AxQdY!2c@J{XY{6 z1u4(S z>VV}cV1l0xJviE!dEj{)w7%blo7o!YAoV(pv}Q^HO@pFu=jh_a)G3LOMd1=1p{?)5 z6k^I5^YqS8Q}k^d<@PlOhYOj3HPBjRv;`z!mKhM>kg1m(s0Rw=!@>&fg2}HQ}Aa`L|dxG6*WXB2t zJyjOC0EgRETdEue3R{VU3#*49&+&_b_nIW8n1VqRoXaFgaws0Nk@wyl%i9h$n%mqixU?6=2V7;yJki)8F zUiCbDrJN22W{XVe{ywyy%k>DswuNT0>Hgb=3E)U!?{K74Ybh&hWjiB|F>*HB#5;Vz@z3? zAtWFr)UY7j9o+f{vV~e#CYP1|p&3b$ud!UoFuo+X9hPyjBFEviZ! zA;SC@VMc_|DB-Zdz=yzLb_5HwCyz!1j0hhY0$n5u`_~M*90vCNEd>WIJbj{=I1%{3 zkcXNJ5nXO zV7SIadkYC15!O+}1MlgurqJsX!KXi`I<82$4iB)?ad;qtnQ~_#g-S?C2zNGIfU1>2 zOfu>HG$_=}j{K|2L=eqHw8|kYN~@6ri~_5raad5z18D)4VU|FVVvLMrMFJCJ9dLn- z=N}XyL=3{r8B2*E+M97vq%b2RTam!D6nSkG(oiCONZ=V33M6(AAQX5fg-^Eut<2Qa zgd?@f`sX>O#ZIF!tws9fRO@$ zP?mBbnGq6&D`E*ceaEySX-@BsvEW)-=|N`CoiQZB?bW%Vy2zHlMmnYyNtSU~j}vJh zrTNzLF2M)c0$K0soNrRXgQ5!3@`%lH+n*=WU?%@rw^Ip`A{e-j;@h5NKBE|H;zQ`Igy_Oenx;NilZbjbM&3 zSBR>xB(!#(+c0-p3FRck%)!qdzoFowam;7{Ft>^lstFBKbvXoK*0~8FE24qv44vB7 zrVof9rA01feISmM8xL-dHiW*@gJCj5NG|Y9eiW6>eU;(r~+zXd^+px5;1E6SEge7Ij zR5xolDY5HbqB4k5!nUN}bSvSm?R96V^}=PR%+W^b%7PCO>?qh!!yb z6stuHN54|u@&=LYT^=r5K%5&daw=iC9Rt%+F&`s9%&=&1x}=Ln53w@@SRcL<=lLiP z_tu3d018tTa6*a{@t=zrqK1|c>M#}na)A|KVUijX5_m%80F+WUI2}@AqlQ*+9%us% z4Twd6Ivv0OP!^5^hBFhU!RfPzA!?WdDttH(Ee8GVdlvz1I$_xE@RLHk)m#A>ET8XEe`jM@jj9IUaJEhQXlOgqQa8_08v1$zW|Xc z>K2YJ+CXwo(y?;9S}#D zbHy=HMZ5keyCPj?YL@O5J-iTtKyZzaFv>}fTN$W@BL+cN)QX(V@S@kU%yV@gcqvaZ zAco%gI8GFigdnaN#YKrUDJ9dUCtKOqMv+u$j5Q5B&7eV8JxTI#ODGM554F8c7pdb7 zCqkmE$SM#JNJp(_8{Ykru-+mM6t_e(j7X9C+&)Q(=`u5lZ7ZE*lq1f7r2fe3v-d>` z5g2$@Ws9~J%U|73WGjjy(&hj#6t3i^+y-Hh-*9_x1H%$&TtEeiBnVB)&=EwStPms6 zq(0$?+Z+So90VOnl7b^REI47g6~>SNp>VBnSfRl&NOh4+Yv(ItSb$XG+(z6_8dJ`B zM)%L#@)kUdAbHdJFjyHz2{M8+!-3cYuc=iOO3RfFcO(zjO)??9t7Z~WAaLyA z|HZiFUM0EUz?BF~zc}op#{dZtCeVcYBU|kQXKGm?EEUbJSo(K!Ba@Rd2PDX}qy*oe zPp)p$ATue`fB7aITE+c&^~kBeTO;3E5m+Oy?@1{qH^t>g&gLZT8@je>-!#F0frKv2 zJ9cW-zFnT8KmHwZ7k#4S4jbnwl63%a-_3}3tDYo!-UKc2A#OC3?$mHLZQr&-`*zLS zbxvquvCGHhl>4qdB#_SLvf z{%YLSM{6%1-CH$I`VTl-mHODuoY&;l|00>>4I9I2VU8JWDk-y%Ov^cI?ZmH^Pg{`) z+6pV>kWiE>ubh-Sm7VeAqt(Dl#)GKraF7>Rotl!7842X<`=SWkyLyf>Le_&1D5Stq zXaGRr=Hf^}QrN)rhy0g)U<-^EF^dR8-nuf&7*W0}2GaT91sUpTHb1?ZIhx3!BaqQ> zzSNssLw&$1lr_>vaFR$6=oowWqh=_?pNAdleB^TOHij0OkMDeQhvo_K?b>&2*1Ti$ zX8AM#jYRbnwHQDj&^fPq$Ojb)K;)!9D+3;=!c#q)lGW!gCAE(f)6dQbwz+HINq1&O zK>~z8s~LuZ%5dy2TqMV^)Yf}QDzFY>CV``s)FTnWUvG_u3>3m)=`bcC@^T25AwW$S zp$s#rOmueDjz|W7Deaw)2u>^lUSJ7GA$@BD>zD!>gols-ZkRs-6f!Ux5(u%{beRJW z%o}RdKx%`SQWQWM?);At^A=Y*1;PS(MiUY(klCv!YUE_U+FyTTLfa-yZ)nx7dBO4I z4@id9nmKY#V+n~s1Pda3AT5QJG8_Yr4dM<>nznAzGB${ncb$ssz$lLzA}k;cE5iHlJK$H%5^wGT@XC zVG&QPw3UK!r*)WgANV5`Bg80nh#_&(1~wo7YY~JMtizhToQ5F)_qWFgF^-{DhuOZ$ zN#L!r@En8sFwX>rC>hr1WiUpFN$e0)20WJ*#uAGx;XqTY0Wi>pY%374YGcqUc95M{ zUMx8=!V<(0)z155Y64}rC)oE7nple0yr`%I$M(F5Bd6zt(wIsgrMBJ zWDsycT)0oN)RIZ6q^Bg1dBm{_nwqvsXx6+-tEMsX$%X^p%mf<;oHB?8K8^yyVyIOR zrCk>D2i?9?OfduBi+KQX;EZsP5H7S*p}SJPnOUsH16p-z8XNZ{91k~gLQV=`on};N zrHz9ILSu1^+*8};ZDZ%20_$0&5nM3LpzyI`n4FA+72(P&WnyHmo3)A& zGW-D)%J5F;aeI;}i*gX}#PRI{59KidwBU?r?yYj*kOiJrGhhQB99tq{6eeaXazcE& zRxMgZV>TjxSQ3dK2)BLrju#6Iq$gllgoUgSm(Va7OWe(xbZ!z8&|Y_FxCY;NO{R_$ zX;nB+<^T<_!kotvbgOoqI(Lk3+ByF$ljvZlPH+`?oh2#{uwFbo7R%u3^9Wf-oPzMhR4ME*TfXHXPq$t%^gx$TkVkd!!+=`nqexa@wA&F9lfSL6}3Kb60X2nO|c_} zAmNFY5Lz%9j$eBh?KD<|>L6Ck+7s)9>;2Q#(P-fOK=~j_sKDE1jdT!>1pq)9@fx5! z#pd3^#S(SP=*&;#i&-KW_!ya62RWkQQYl2ko%+LS)lQ3;wsgDZox8U07@M|M3}lCo zggE988PeRx(8gn?B!EE05_kI!&D*tT;;mWJPBFnwpa*QiT{y5a{wg&7hcGR-+8~dkK-u$=7 zy~f(ns&gmrZXan;wxkr7nrET4oO6v%Sj^x*HRq)Ze`%|Hbcsb2rz8EaZQijldT=i>=CKuv#Noga#nSYD@^ig znLk&d6h@w^riBx5ni z_!ry}C#ggSyQlAf0BSvBQ-o;?G&dk%PK7+4;n=o$q`4|lYIZ9m1jwUB*7|z@^sO!> z6rRE&hiPn0T>dF5(LpUJMpPmJ71l;e8J5shn)-+ZD8!J9E$YZJSE7TQD{h$aE=>Er zu7j|qxHs>@M=yYSBM*u^G7tGn{u^6FMqDhx1~3k_^!*wuD+LH=xd9Ik_&*BI)5AD1 zNyjcWJCVmlK^RBN@hm% zG=>w#De_S~=N4j)h~pXuNP6DqwMoS)FpJB`^t4|$tTDi5{B2|}yb>3g@}#CGD4U$x zFM3)8JRN}CyGpCP`Us7Xl{_H6S3$ysDq<~)qTHlP?Hk43Cxx|yA;k;?B7h7Af`lXk zK*_Y0r&aI!`x@E21a>6Q4DX17oJc@bKsi)`%Wz*5<5{;r*gz|k%qvMcFFE-(KN6cq zK{k=qmPt`wdKn37K-3fn7@}=hy#k=XS!y{YOu4|b7D|;DTM-B*3Z3n^oT8*Zj0=gJ z58JJAj$-fhDVBf}NM(QmN=|$GbizDYUZP7+P0c(q9avzYL4y^5&J!bMoF+(lw+Ee% z3%soga2^@lg*qG=u_Ur{2BX*0kN}PJ9v47L znwLPPi-HJ@;*1gvX<$tlrD+1S3BvN#6nQ$GN63Gqx&9pVIMOI};xdv3hVlsioT&2t z_Yv#jl~1K+#6((0wk3?7v^Wc_mzO|5Lk=a-Oj-+FfPernuf3vAO}(`35L zOihoeG>_SWz~h)G1FbrKgsPYoUOTet~g$u*tuQgb6Z|@u&!82{lF9Fc=_9h~fd(0EK&(J1L9TZ`L@5Cq40af#Bv*x zEs-clLR;_QypQKn_?KuYEs)qh^VE-F0t+IE6VGH%J1AipX69cdY3E{GxA9eJ^n579Bly1Xl}xJHZBPFN{cig*s5^im4O({wtA6X->O}+ zgfPXwd8bYV$CN)P32k6ZxHXKCnyLWdfNN$9U;$>#nHZw(d_%|PO`637v;&GNB~1_* zra%Cg5`bI8fN&1hxVjN~ja%&vN zfrsh!+AymjFqju$P~pUK-#!+|JVL*+O>ZnFRih^*t$Y{IN-!U0Iu5ZRVKo#9wSwV9 zG%bjfibg(vZb}+GAwfZXgf5Y$1`9>97ke4%ki|p?P!>c;X-Os=h)Oc2jc!F*cA7(D z!>wyLchVnA?S#4`Y=J1PqWO((^&0016QNzvmtPv~YzXE&&1=5Dg7xj(UFq2vIKF#hQ4R zN(d=pTUUUg$DIWM}0r-G{C`zCe#&U;5OqLTI zL*1fP$4;F)w~udnLrj2s0<4*oj2nX>pHEFhn45oLT8lKtxsS zfVXSjErvR7wJ{h_-_V#b-^$^JXa4Pt;6{0W9z&DXwpF+0u~BjaI8laEp(x{kIR%yR zBpNG+Jf#kbY+sXO9xJlZ+DIIh3IfcC^R3A}J#*Oka6vjo{Hp`Y42)gtMmAa-QTyfx zN&*EG!!mo9Mn}W>HVClfS{Y}#jYXC5W2hqey3F~wJ3Rtb#n7XFB756c#oi#R#-OW)ISyN<5>Us4VEY2dfL4d+hhkpIKXC^=Z z1c3yQNV2q3CN*&+;&{Ttukdisk{PChr|7f=b{2Bf!noX`th%hc)$PnXDsL0WDPOegd}t0ttj$Xtb;bzGz-2FU@u60=2XLK(9NX4KJR%z{jD zFI3C;8B8nFdFf&t&7<=AY4EjBZ^Jk{qZ7fJm_-_NySK(&QLlWL{VTnRJ0V>S zuLvL%l;cWUl9P8#U_i$P`=T*F#`Wdf%h#7b z|JpsheDn75;_Tx3s{7OHlb^dkzCJnq)9drA>%*tHeV&f<1O~p0%wn1<<~-h7j=(TD z^@6JORE~}L>KDdkFE+5|T+ke-_R=Wrgr-tz;vFzcPO~y$7Zv?MHk$_)(6?>kGyXDw z9Sj1e0hB}rM2y0MRtArue8|#BEWHRQJcL+hNuzf}>4hGC{{_)!1HK*^DXYbpzJXz=dwj-e0a8PiF7hW)u4dIwt zJgS68H!W&;g=%+xar*lGtF!K_^Q)8BuP^_yHP}Md(ebv;(otfGCIWBrbE0x2F=*vN zCPGC}`%LRFTy?L1IlsF4_3HZUO)Chf6ufdiC`Y{4G8rnB$i@eU`RcfD8-e@jcPm2Z zzB{|ReE;tB?5Z7-@CsDCs8q6qBpD1?w3^10J!dW&+d4^r4fO81d-eV;{%r+I~BY$S+b0O#R~W z;;faqgYf6T^d#n6OO^$#qqW`$YNNo~B2O^)vVQUVckKY66-<-Df4I*ydc$#3rxdx! z3TQ$+0RW{AaB^|o3IK}d$byIneV(Qn26=nWJ3duusOH~wNPVJzA#wto9}aU z+nS%LH||budgJkz@g&_gfQ7>ACLu>lwG1%}upq4=U`nz~;jcc#&C~!WrAumUmA;vO zqE@v&B%irI<6zLd0n3_d9x&EDQQ$(BD+L-g-s3PyJuztY8P9^6)r23$SdlczRAz(K zF;MYHCQ|1e-+0=#MMIQv7z)t zlPJDy8O9=1uir0==r)I?P2R-7!I)7Q<8-OdQX5MNO;#tiUonU0LVCrKg9|sQY1BCJ zQALgk)Oj$O1P^;zGXYd7Qexz*N3C}p*mTgIC21|_*CA@@k)g6e9b3c?cU8SF%XUQS7DV2(Ge+8=QEIq404OY3rZ zz8S_|{!*m!>|p6(u#sj5p_`65)sf<}W(sP}^SU|}?rk(A6O%lXUc11+)bQ5g6*Cae zjJ9yAZti)m{LpVM|9pnt_}AMn&Z=5&i7hj9hNJ{r)_VsUo%2MJY_bp}Em{d-Acuo)y=5>GV!^UGEy@2rf<8kx9C z7!)P5GM-Vwtab*3`%@jdV3_)+2KhV~{a8c~mYG-)4WOcuRsezuR`b}xo$(Vqb+1-< z>v2o1#oab17aS!TNL#?Z)*{=;8INFi8s~FJnzcGhX{!P;R7s8`11Q|21j z+?bP-rbxL91X!LXAs7PMi}R9eL**YE2(w;y^W-?k5%u6J7-R$3Wh+7du_OS?#~tFO z4 zMWc;MSwGE@*r6G@8oDIhQdDQF!512o$s;O13BEEHQ}V$ucP8QTVn!p_zfp-ZUXItw|v&K_c^7 zX{eE`8({Gc3lB`LQovaWNdUT91QCaC4n2L`lHbYPrVEh*?p z_5g2EG)S)OU6Mp|!9ZwPRRMx}RIc z;$smtOEF`nF6qGNcQ$y&vXUWaU?_1@Ol6})-2&P>6|p}WK|8^N5|T2&7I;XchFVL4 zV2XwmbUYS8KXI}9V^J^VJP0B{FH3}gieVHn+4!6#bJBU+2K7D_v?W)F>2u?HoCw@8 z5*1C>Cr?yRN_(*Mi~+X5!V!4_YHuxALB&nr^%WRa?V#DC9fuiT+;~#QATm#65QUpw z|9*D$2*T6}?MX^G$6`>PNu~qvEutBBSqT+vJfh}Px#FIK1a2NyK^-QZ_TG3aqb4b2 z6{Kd4XQg9sPj6iwLp@)?v95Hj1E_bxt7ug6j#6bqio%m*1&z#mnaTfy#?TtHYsg+x zD?BS?mx%GivZSrT(iaINF-Q%g8RgH<96DTjz>Ly(G8~Q9NRHRT;cu0oIH?{hl3JW1 zQ=Z9_O;W=?k<^$?s(7~MZnSj>B%5G47C-^Z%__m1RaR;&6$0Bc?B`8?WY2BU8=eBj z8r!T6in^$(D!~A@G{QR_sB}q0=Zqv-GLnIQ@r^maH{0=5A_J%;QVP8hY!co~FN z7RXUhU|*o`@`Dd~;J@_2C+sQAgu+BX>#IAS`pNe6ign<_BFHja1Tc!9nj+5~L_ikzj!i$rYoGonyBv zB#V0mYXszLCNxorQINt>(UfO68iv2CZbqSM-z3-Q2`l&fup_mgg2cb==c!L-!ul1wjiCsXd&8b z5+mk@H&#$jH5k;+u&)lH;@&p8lA1zD0u(YTlY#~IBMpzna_*cj(#e|i^a#!GcJI2; zsvkB%Mw(-(eJiX`G-ZML#;GQ-%K{P9G$45;KLIWPz~7a|ZMq&n!b&?9I*l1$`CTg=6eFazK( z%ONN$Cm-j3xSXASY}!HUiNa?G!vSVfb+w}uX|1#}lv^z5$zfM%lPn2=X9{+t2WIK~ z;bC^Y;WLQvEW+vTLNBI|4Pb`#F-XM70~4U4a3cm_d|0`|-RMsLUR zO|d;;X53kAgtEZODHonoB0Rj$iKQIUe&O(oF3e)M&*S3BxS0)YfY})l(CkPo$V`LP z-szky!x|{^pJGE7i1|@3en<^K2At2~VO$nj6PlS5N*iE)7RxC5q@Ocno1+a1gv!{F zF>X>I_XhAH(J}`{EyF^*RA**W@InZ9PjvRQR-js^9NZSJcO)gM3}{%RKV9FXPWff$ z(htcV9To2$~2ReQNTZ?GlW?e6WHC7 zlAN7pI#0I9GL*`7V=mk-XnkW)h#Rt8RXQw3FP>6e%3FDMt zdJp#LLhYVe_|K-)@Uvi>2IlQ}U_OhWwTg=H2oe+ZV^4x*Jeo$TpRJ$unz}`G=DwWp zvH=8=wbWr)W+pTWVtir%Mv$Hbffw`}JtbO(V0AUOtap*Nuz?xJ6cUd#c}cC!fn{&4 z4;u5(h7dLdmSD|-Z=Yt~-8}908<;#{MshDenhUFmG}_y!9Z8Ht1C|Xr`s6oP#+Wg; zt+&c*O_oY9b#Y>zJEF9RDv_kLCOIjS{Z{wUJgRSZ-rmg8$LU=YTU==?xCqqAENJ9X z5oeqR_Ju3YvI`PMQs8ouzd+kC^k*{9R|< z`v(Tcz-!R>9)YP<>T%=7kOH0o&|nGzkwJoF79C0rM`?_PZ7N+?BJ~o0x_b_ojK{$Z z8bL$}EJmON$Llv9m`d;&aNWZ{s*+#L9xLgnsg0H`r-B2c z5rzdY&l1%^Imw;Pz^r-t3OCxsjeotbpfL(o(3sA;gFPlHQQ}YO-=1Mk-_@+k_gHK#)2gdN~2`icrYOX zi_dJw)v~Gnkw(KNJSG;X10Ds-3NKM5YZSw4*_tE=$`NbdrmAOA_L?!DwP!J5NdpfW zGNv^JmD$E9m^7dT%JyepXMYR_{U(ekN_@iDix4poBQZ>h#ten&bHZz!gg)363zt3G zG6?#8KbuShCd{uN+R#Fb3T>iUN})ui<#fe2?4hUFI1CtirrdiR%MM<*8vR zAR0G-5g?N?CW+2LM1e_+i83*wYdUa~<^CAqg{V^cE<^Pau^P8!bEjr_4vRix?MIh# z<{mF`Xi#p06bdYG^%d|O)Y3+7@SzFst_{{1!MWz>!p}??Ym;_P1VTmBX@5A11I6;X zMjEsUO_OYgN0(BxN(L?in9>=|M}jxB8MUD8f1PY6^hZrt)Qot~B>{s`h)4{UszP^` z=GiDMz6R+HKs2_K3~VB;G_f&TjHAY+dyH{{jM$ivzqXxJ<&J2=+EJ7`tpjGGRoXJ4 zTn3PwB2h+feEa(T($3p%84nxdCtf)Pf(OHZcnZqJ9H_F+N**XrDm>LG($0W1$z%i4 zg&?5&3lo*MHll}4c`PiSvlDxPvdB)_@}LZx)8#^BR62$(6As2QlhFz%QivLCCT7B+ zn4m`Ygu2{d)F4zu3!ypiTty>DYOA$NAxQ-mrLe?2=abpqxEZaMQZ7gYVEJk-ql;8~A##q&?8zNaA>BLXcy}=Rt{HlW)?;Y|MVz$WJ1;@5Iu(h-i|S52 zXL|UQdLM2Y@q#cygaX5j1(Ik6a?mmv5n~dHcuJlE+}T58Kv>Y1Tn06Y0tqA#k;?0snFKKrVsKv(lV}VQA)~M^c_D+2PI2lf zrUkW_LOO%h@|<}e2jF#5za7uy(QVE ze=^)YH?l(+k&+ljO(HgU>r)1653N8Yh|T1mZHG2PX-0$`VNV)|#!=RQoz~1GMY+QZ zdX0hBmc2Nbq|vy%g@3q0lpWCo3n?=rwRh4<&8$v%Pthc|pU`_A)YBXH2BANVsR=fZ zHPjQ~(Hm-|%APP6LJ?)Dz{1|yYdN0!?o4NTPD$Ce+35cMn|zO2bk^D%Rnd#S|x|cd6fM6p=v@g1)Ic! z>6(et1T9x4;Yotct<%#1mxMpx_S5IP;oAH~XT=woY2|vJJ+LzwcK-V2^`=Y1 z=17@E=Qq&H0prkXW*Mzl%GO(}xNta}6N%{kB7 zS}nau$uq3XWU`AGiy{pV`{kutj1h)m-Z?BsxnrKtBSGe;u+XChfCGrU&N@&UJ>Imp z5{vhEs_<47&-;~NsG`y5<19TlFK4m)$ANHj)G=OQZ4@|Wc@j6XGQspo^zSLYu zMZ-bB&4+n(R2Fm4cBkVsif-a&WELVarp&3;CWO7f z!m0iKYoANkM&#iWxyw^nk05BxYqJ zkIBjnZr1&wdYDgr_DR|1Y{yskbzsAPnA|)8yj}0cpuaVMGW94#DAyqcrhO!uXK9=w zDh2Pn`)5LVA9m5ZZJJ$37nG$sIn9if5%t&HHHp+Up!833)t^exR zi|b#`uFp?P-T&eezPLWScy;!wd;RO%v#Y}=y?xf8&T)?=WLU~z+7d&FQ8Iy=LbwPa z*yjMt$@TTScF=GRj3t({$MR#qzlpY<6M;25HP=x*IT~9H#Aa~N#ws5(P(ThbL}H!I zS_P72;!b+=maTY-eJAT{XjCQ*YXs%HG#T~M z$JCiWI8W`pJrgl|q;PrYyYaXhU71bn#X?P$ayZa#@mN#B^}c0nW1B2xbxQks>OCcq zyXcMdk^zrUIZ3Cp78_$8|JY=mo|B8yv#ai(&M#hde|mTMrh9pH_|&$~%~=uyH%ypd zqU4rE5hG8=WNvA)Mm){r-(Q`*Yi0U`3KKPG+R1S4h{)1mSzsx^24Y|WwLbkfXD1g| z-Pb3eI-UO73IsVS$0gy}2ZQc0$0-BzL-UYw5J5c=1V5f!y!y-etLtA{0Raoh*i1n; z;-T;?%WPfFE;!){v%GZ>Ksz{lclq<##o6Wit2!EVLqLEkkeOF8gK{8@SJGnc2}%tW zDf>j50%Cu@KN-2fI1fj+jWB-!ijjqBQq0XL@np+_30U9~fRL6gEm zbuOjh6t+IcVs^%6Nwa9HRNw0S-<-Ys`K){Om-Fk>U%F^Fv;zi@%sJ4B6V*ORkz(}T z3g+=xU=**;ug_syoW8!idjIaM6)-3Ri@}3}V1?qDNoK9gTqoe7QWK${%20Y# z;op-FD!fSPnUj%Zq7+jpnMeYbS`$jy{SJBVi@xH;xut}|3l>7><;(fIRhtO`dXkgK zC48}VLQHp)n+AZE5!0Y1^hE@gJSbTjlOS8oLb9IhS0oY-9g6|}b777THUK#&H6FBE zMu=ukWDyhPETsTjpC}M;dqKY7IRCOxm-n9ue*CTp_=VJ&OK-H0pik2jsKy$pBx=uq z+Z-IRP##kpj(k%nFOID)+)ZJvvQ<_SW`Z;pmWV zQR*i*ZUQVCqsB;P>q3+wGvz#{BR3*ho#dXC(Axp4=0={|N=>-Qf{T#|nmMphYi(2} zvuH)aXe*NSvC#UigUVuOgBjSFzy7W|ro8{sO(vtKal|4QnD*B>V}B_MF^)Shz)tlP z9%0UY+PQU@q;X@#V@8`T4p)<&P~1V&>GKwPqIKxWCap=(QK}%LB7(pU^q?IDW26Wh zc3&-`S&e)7WBV0;mT|jty-~NYdBzQ($AePRGft#RoGF{N25Cwi*zD-bWzC{TAAG`Q zpG*M)CE&xC#oXv*_}Eu$GNeb}b-<(6?6{K{_dEGuHMSWp|HC3HB_pas95CeWjT^*% z+E!I%KAepPh7_(WXDpeLpbk*OL8^I0RT9?Nr}yCDgpmhtb>P*RE@NQBd*z*HK>8Hs zZMXnaRs{HJQ;NeQcq>j`y($lMe|~rQ{_WwD+dex7<_ktFN7-C)a1KAR!s&U{xzl1NTAl7-irIK8L^7>tlLqHt*4W@ z4C9fT>`cUx8k`$pb@rg3*&~#;-|HQ?$N5@+^qwa z#cBy$YfyVsmfmnf@n)l-i2?7hygBD?nECV~=y zJ%y+10L}@GpkHUahGU)yYH4d(5wTF#98U(lAdYnn2$El^lpxcXEtwvFY1qZ_j;SQ_N`Xuo(rNpC7 zVyz0sn5VKD7p9pSn5Gv#CJj8)E3I;1$q6qsp)^DbyCfaoTzYf%1|z_`=dZe_CvQ(q z&#!+yd|ulp<{S;#@tk>-ctee(;C$B6i3|!Y+i)@M7&C{rC$HO@x#eIeauBGTIHj|& zG$=3@LCv7>MQ(S^>xQ*8Gj%3&;u!3&TvFM3X@qwndcrN{bj>2tj_cWgB zMY=3@bOZ2WhChLImGQC=6GDNNp@o3miJ@09AK-jiqQSZUVj0Z|G>5Tcfa#;F(i`+9 zJvSMykAivRETPS{@M%2hmNRK!MT`-VW(L}zkbz~VY@nDI$*{(k&qd1M_PS-xcq_E?k#{F_}62JXYU zgP}M0#e$df-od%ae<_cY@nW_HwbXrCN7@@;pm?+&L{wB1SM?26AWU9kVbAvb7KKXp z%lXg0fO7lO`May@!)LdBdM-1YloVjhDbVEL>kybwF@xr(q@iuk|MlfxTAjXCgn9{@ z3QY=(dkM;mwFKC@@zHXhTb};K+1ab^`NjG5`N{R=yLJ$W6n&J58R=PKVBrMJ9tOfK zBm)}%b5QPUX!dpXy5xi;>l1Yz3>TKbzNJQ3hBYNph{urFi+X>d__rxs3$fDxZXzh= z6;s4WkfJVU&p1yKbRWW5TOoj|fHj{~D%~Al?Cijdpds5q{bv?VB zLlev(m_UGdgR#zY$pTggO++{?3FngX=VSJ4@C{UOJQm;9=E}@x(Zu2qVbLkCNDSU* zqAklLN5Ld@)}}z(+$lBIWZS~-wLk}0L*Z_UPpymg_!EBK8RpLE+xNhMN1M$bb)<;6 z*#JweXq$vmbtIIOJnNt$w~TnIYzBLonwXQq61e+q=O^&FEg|EJrQBL$sun=mYKs|r zoCj1`(ph+_gXJvvkYzLnY^jwr_T`YD9=+Zm4;uh3QO`~G$p$4b*9BHm#=8PZW$&4m zhf!9MldHHOHbe6Pjzxa#lyfii(jcrP2`FZ{>XX6Gii^9|mruD8HMLMxE8~I^-dQm1 zBAE4H1*O1(aMU=A%yWl?n6Cvr4@V)z?po-#Aip2*2eABpZ!rD5hTp%&&%YnvrO<;} zbZ*Lvl$&_IJ`&F_Mp)?66Og@tv+r#ygT`u=K?6Ea)&{A(%p6#o~Ph7K7~&8>e+){5lJ2mZ;ypKNj4Hm6H&$rbmOtCatsO+KT=^2IiY<(;w4+Gf%!9_ z^J8KjO%aO@s)}cz;DsPTXCaO-Wt67&5azOm#+yXFF~L+w!euGFgJhcj`f+Jwo0UeD zc~o`0DZj&GqG`>H*N~5`MLt?tFCe>oV&Kst%U1#en59cdfZhxAd|(;%kV zVUF-SU_6n_XN% zoE*s&RE@Io{&(+2!;r?~;iy~8ZHuD7>t#^H8(h=^M^eOb0crz{6m(-HWaKe^Eyn?i zNUgwB>u8`BSX60@05y^OXk*HW=IlVH4OAo(;R1x3}1D$8?fHi#~M6;U>k} z`cv_nPVt+L%Nft~zHHhv^hu2Qg_(8lN4b$QXsy^_WvwH@sGyXyUV8_dNtpn2!bE6L zVJbc>+2-A}^b&Vo7V{}Stjfg9KESt6tp*$m@)QiwnDI3xsk77CIT>ew&RX1q<=_hj9n;5NNZq^8>-y=qx5Zh{>tyxu z#wHON!T4{E1&7U6n| z9rqC4T4ImYa_VzdRCQCrM5;WA%re1EW|X90_sp`q4)%tQM7Be@5X7rKn}Csp1JBIw`fgIBs;%^j`4=8udQHTAjQ--^BEJn~E3A zW0mFi;x@yjPTnC(3|81kCTHVy%$5dbEY*r@VQAPd^Zx1ka-1C)cg2#5ppuyos4B3J zXCJ4JPoi9{fLe>u*TFOe0m#8737jiRrSb`&O^!K@<;!?em_9EyzlKJ)^PpNJN;7bA z0=lUnA~6d#q9c@K4oWKnCAAqipA&R-xOW}om}J3gMzze;v8W8o#&AbmjD|R+{z;Lm zt69_{K9-WPpa_c;3D>|UmGB-bfD;xnONVI|z4-Zvl5cH6?k%$K-E=VN-KK5APqZxj zMw8vepQv?0<29ktIxZ~Zi3=a4i77|S&%JLdUKDDuvd>oNErVH0?A5`N8XX+wK1slq z2?6dyB@Kylsu;0`9ERod6Lt@1ay!$m17nI#B$cxFTzN^2XP}WO!G((qQ_36y!HK+9k#Q)#`_ieSDYqiM>Saj^1~ zP02PzjYr};qw#HTC%*IU^7OWI_2zs>&ZAo7JU9SlK$^d&ojFgv3r*Z6Wp(0O*}x?e zOk#3FrkJ;Z?YGu=L60+B=a0CPpBvX%1#>5^QwLN@bR@ugqDaNO)oTnEL+!2D20A84ePdq@CCJ z$@)-L$VsaD^hE%KUBI}IlOzJb2l8#mVV2k*NN@Mi)c>kByti&(x{U3TC+gC$srwl zW(Z?_a8me`8|X1m@sS45WRa_sg`knf9Ag$XWG@4ug+tBk=O%eB)C=RC7}HO) z-#pHgY>Ps@=RfW&&TBExaT=#*ojn2!*X&)MXfxiEGi}& zsfe&6HoHO67!pQkf@M&_=1?*iZX*XBG=eaYUNK9LheSbgYoVBKy4SUWLjw?iUZ}X@ znW?O;qF6mra_5{d0&HBug-t^2`i#>i#)1V=l^wf`24m{5NvFnNzf@0uMEf(OIQZImt+>S4^})G z0v9K5+CjhyXEN6TjZPM+bU{%IvR1|@ET`nj5IDd1>9Q3B6c?QMY(d-L!Us^*7zhMl z2$9>sHdH%ob@w;6>ACUDcr6$Q&gM90G^t1kEWQNB7oTjwn^@~@b8{j1;8J273tU@c zWAg9|5sU)fPeSXHzrMWeo?gCr`}*v!t<0atKxhV0oVk=KC!Rf%RC&A??x@hugVx>M zUH?m&`M431k60d;X&w?`#ATNW0|UYe3-Uh2EZbi7leceQ|Jr?b_UE&ASB-G_Z4-2c zQHPoPP`lM=>_;L&`Wek5%b^){cb_Ys%j@o^y?$&$uR*0=WMwgKiE@zZ=;2_2Tf=m) zhg>FK_-c?oZM+`)-Fht_>)q!3ZL7c*8>#_dllEMasFN1jU`lZ!v?sHJ`^nAfs7W1U7-Duy<68Dc%-rG;MH)QE^aZc0> zXu#G)j5-pUvX9Yfmvv5fUk2}&F|rQ@ExQscjFvyFP<|R(^HcPXHK7A2%MB$?f~5lr zzGT+hh-L7IAlVyQo8rn5l~Jtlx}OGL1^qP!q+^*_OfIcRpg}m|Q?`QAtfOUahurZs zsIWwC1@xCC>PK?ej&GouH6Gimo3c)PHT+&0cYKuka#L*f;L;;N!3tJ1=iBNvMl)1hhDZ zxkULnfb8P%ZqfkAj7lMWB*2BD^-_ZIo)jrEA(Nzb3VnPzdwusrFduZVG{!t4@Pk1b zOxB%hpU%JRIB4^2fBK;}82?-675sAeF^#@-7JvRY=VIH>p2|bD+3C^p&=wAl4xO%d z;kUHDw8Qqv-v9XVsq($1ibti>@#9Bp%Ri~camblk(d*rf8*e->T6k*PzN>TjP!Zz2 zqfRlx(4Pcq6vzN95ld6_iawR=Xc>%yr)dJGf-)Ld4q)U`;OQYGEsZk9TSt%YD|&T) zb=rOV%gNPQ_vhD_Kc2ikd{*118Q$u=Pv5?8WzveH z2Sdb6ttL!s1s_=t#2t{zC24iiZ_eIazWcS6c?ZFiaG38!UQS6aGOCw+d|%AB1^l;F1Z&SGZzEESPR06qp# z;AOi64li4owQ)McWPz%Q^CS`@JtfTXWVx{1`c`Lsa&d8aeR6%)4vm}OWY8`GJ*#Mw zY-e z+n~ho;FG{aZW(q4QQB=#$bY{y@|g{MZw;@Mby_y(IxpuhkL^I10S2a+?>Dh?gr-=a zBWk=I%RwA?>I#NoEdJFs5u2}d_2O7}Xwo2!dV3oAKbJqQY2u4r?cR0P{my3WypgS; zk1J1ZGiODuuxuxtkTQ#;l=7CVjPXGxgFqqq=^`N>f^zs&t#;IB9T|<0XwDgNkq{xd zfSIZmlmZNKxx6^Lxb9y6`u41lABWFt`^22Yi&TojYn_wTRyt;r=E`_Qxh16ang8|8 z>sBTn6DGfj1|!%&bqa*DM5VGhN@Q|$Pf~_1)0RLJ$so`&kvamK(oAS8T(sG2xGaLs z=>`OHt@|EbSd=uH;A1J&uGCr!01Ec13_0;&lGd4v5LC?E2pUuJJ{+LbEZ#;N4TqDJ z`)U6Fte!%;@o>-pq_{F0?#`@2dFMujTs;^{lCsq?d9Z*8$AX7SgDL2V_8wFpLK}jz z9Pa}#+oHuno5lp*)4K}9CZO|RL`% zqXZj%&PwWt@AQx5N8;L`ZZtsnNkJ-SK*bDJa#4%tDY z`Dyl>PRX=3>Mm`jEGj2ct#z44usfdmf@Sq?F`CG2l}@$lSrbNh^h!vZd}hFHvoJvr z$F)+_Z3t$YZ;Hb5?8T?p5lbkQH-?V^QqWOqr?5(~VI*@!LPqZwpk$R)qz+3hM^}lQ zYLHJ3*>5S$#C0*W2C!mT5auvRigdWC~(_EdNWKISygWwc3{C(4KS>9-+6m_ju~jmP?1fn_<#cOGrqM! z&X#k4#U6lq=I*vEZk=pGny9QP7*vkfD20wJfC}rBU{NKqsY2mO0nk#U!iTx{VL>s0 zQ65`eTSBGZ8~irDODQ&hjiiw#A24+pv(^C7N2eRWSK!5!8DyPFA{*m0=*BtN`XpDN#BSZv=|*O$qYuaat`|v|O=hIkyhZe=)Vr z810*4B}FK_?qG zLCLI32V`AFQ3nBF2*PkKC9y&)uCNlFmKHRq#Iv*JfSs^EL;v=P;B63B8iG&~>*WNQ zwZvl%P#z*E4op+4rWbyXrHMXn-5CY?1);iekb}sYnEU_yAjZGx>DN7YmpU zJnZ1{vZeiU@uT@2mY3!9pV4}Nh`#MLA*-lR#$gR}pFK&`_#B7`HYADB9gerS9>=-y zGf0!-l5q-8!=z^jVa3n^8qNz3L z;#LZqh_s4%7C_AuF?meIgw-B$(qJX=z!}3FK29+mjv2F2P512GyUTa&OxAOr4RDT> zgH>EA<}Cczx&UUhu&%Aib}ufkU!AuzXO#r3r=p-@nwSDL(MPJBBFaI5TF#GnKSV<$o|in7+GeD>z;^{=f=nZ%%BZGjE*NSO8+=$y;sLi8zG z-rkhoynlUt{`U1*JNsD}Nf?z<1{FLLQD(55EcKXTFs9Vze(s*XdHcGZSvx5sB{2t@ zybMObf=9eSW@2_h#P-Phujg0S?T9I*VY)_Glbx~F5|S9>G`lDyH*!O?!!cI+r_1*j zuiBY5^@1lXHiLoGTv3vZ6}dQ}1kTZFND-UR$Q*7dMKZ+$eQkR}QdFsoQ?rImchbX`!<}t{`&zNc4Av_KK+$ zm*D@`i-l)jbc)vg*NdX3&einx){VZ*g2Tt<+duwc-onl;o`ZSm`u!?&dLAh^|7^du zPr>W}wf*~kZ;(1?pWW?U9}iIGyZst|I~sl%Ik0KK1UR3Sf_d@p^Qtg=wu*5C zWk&iJ|9*G>X1~_3Vof#Yg^|rBzF(Wa0C^8bUpjy2oQ_iLO#sZB@}vFQ`)N8VoUHGX zLoe)$f6wIy-BJ0$N~=5WBbf5-7}h_gye|0o8ow^Q!LL&84SGea@uqzvci1;_d7_u4 zYx%{}n7Z>&pjz0iGbe9|;XF_U>!kyVvDIk1vhdVQJLzT>E461Qb&&Uw%Ireh<6*?xq(iW>J1#6H2v) zzkTmv@?~3wukQzX%C$!qn=-Evij(dR`14(4c?6p zY0C`;!-<=u#TI9u9X4}JZ&i)gO~Oq+Smjl{e`YMdgpx0psPzH2T;}pEeE796q?- zu#B)+TlVG;mz`I$Zyz6p-GP_dWg0odo0~XW1Ynf@KJAT)I-Rg@=L0LRcRm#EHM_t` z3}@2xzR}%8=}McIS5;ifa+76QlYJU2!pq8L3Mk6>lBL$~LT|sePeDtW_9unv30N$3 zQ_|XEH=%rbzpn08=7rT;uQ=~Wrnh*i?*Gp^Dt!ZAB~beZX*eBkkCqmM)TYJp8)MD3*eXSQkJHm@)BYJ*1S<41W zU9_|K%;VtF9l)i_lfM{_Ze4$&pBD?`>JEx;Yr?wH^63;5vRjNYL1a-^S#G;yelpX!xXN*j3;SJU&HZ!z03^k4NVu1?70*m z?KZXz(sEC9t}0=*4VJoG`e6@+?OASz@5grugNL>tRm239jBB4B-;Y5<`nmTp4K{Z( z9UrPOA-lm=$D4{#oy@x}66cl2p5M(hm-}xE;espur{2bddV;VW*ach0WxMwm`uF6EeD}p7DhPQv1 z3_E{)^ST)M#--vrEEQidnR_0_$clm7_69v*~ z*K~?2*PYvW>G!hv*+uL_;2wV&z^;bjugd~F`)&c|O`wV$Kwa^L-FFq!IE;FC$Qmjc z_u_t#-SU%~c&_yEdRVyCI<7Nbo!FPfK7jx1*TLDGEM4c`MjS77_;5-kF(0;yy_K4t zb;^GJr6~JZNP(+io}l30w7Bwc^K5d1p3Sk#Y3&HFi?2IZ)%TANMIAnr@)l){tPJx9 zA0Lk1f$a4IAN{PeGVf2Jg2$8{m@O}6qwH26)TGLlKCV(9L_AXEr<-25S;!!PsU?8e z@B0}SkM7saY}J5JFX(0|6O#{g>U!k>uRw{6wd)HPWZ*$ z&6hF0{sUMM)k(^Gvn+_*^x?P}-|R_bSrdz?F7fP>tAnX3y` zZ$)V2_<-JS+}#~axYNsvt>c=x@t51%1X@U_`nvz1f&M_EEcKT=#Z^-jZJl{Pom+I_ zmD)hDKW@IzRG0Ss|2?qP8XI-K>5#@@K| zFMpp7C;xLe_kos7uKX0JcQk+x=b~p^TKfAV8gcS}cKr`vd&WY0?mO6t&JU+E=22~& zesaIf`u$k_V84E6KIFM?v1n8rNadxK)OmM#dfT~rb6(JOX|+_=4KOwo^Ob2+%>)?R z?X2En6WyP_e|7S(>*CY3{fB9Ejr5Oq)C#sz-2d#nIeqo+H!(IFZmSOm5wog8l?+%h)AJPQrB~SYc%G14*9MQZ;lOL~M&Geu& z@#9!OlIC%?P#Gzm?0S9d=H&dZGr`pRd_V{2+JLcF&Zb%QuoA;+la!J|9=JH=-6Xsh zgje(iALfF!>ZQC+v^OIMX@naN^@21?XvNItf;|?2Q$0U&K=HG!58KPb%jHotG|3-< z7)OgddNxPD=NwN!5Tc`bPIZOrypR#Ndi}JrbR*z+Zu|h_z178&LJ?o~j_%(5f){%) zZF-ER-`#LLF1m#MIKDx9&6R)S_Z3f@gESk|j4CEuhF6x^JH$~ky#tLortV~j^xS2i z*SJmI7tfT(A_dWwgJM6B&9~+R-64vAuAK5;fH8eJ`T$z?KPpz0?*-C$AsFbz!#Q+I zT_)-18(Wk8hGM&0Jhxvz zKUJK*2%TSDqyBLCTXAwR>6}(@mAN8{d;^;%pKFVV)d7j}3=t{jau$YyXRRAn^suGG zkfDMgG5ll`;q-=G3`#k$yZP+qkuDE=Do#u>o!&Tw{dy@=Z(siSAKlZF(_hZe#OS-i zy|4y87jDvi-C*k3PbpT(k4uBH`lz5H_^j}`RbCs+OR#Xd_HZcGkM|o)6~$9*m2u%( z8-S#&?k4x}eDq<5#lr`&n)^Tn5CFiiQ?ZFIVD<|}&ZGNehvW9u{^v0ZWon{nnPq>b z?yOzt;=%oTLv>(7)3rtYYP<6oheC6j4Do);7a&(GNIF@+4|j}!Sncs$noLK7PMHw^ zH{v|2`nt|W#nXFI2y&DK6?82f^u~K`acp=5R0I>R9MyIF$L?Z* zLGo!h`fcGVR{4WX$1`+?kUF{=QdcGbnBTvuhPTTFtOspgP4Cbl16-q;4Zt~`eKx2* z+OO$qxXYKj=8*1qyX)b=F$efP2Ka8jhUUBl_8JI|dtBqlecG?dq8!W20s0?Tmlwse zOAQ|~;_@tXp|Rzb@lH)6bUzNm$#Sl-4dmTuy1 z18;4si!5{A>MksEO{+h;ac`9!d;IM1rmIE^HyXygxX#bLNhkD&16ZsNy-D%v@NVv- zAaLjXIQ;+=<>9{@CFeZU6){hQzY_rGWM?}tB>9(4AD{(<5e!v8;i`H%+Rh2#E&Q9ph8V$64sB<3a$m{6?duQ! z=Z6u&?&~k5B>%nsZTzdb{tMY&T@^ag?G1n6wfX=&lv0nbzfw{yuRmj4h~IU{?^^ix z|N8o0|I&G}esy1Tcn6HrLFbJdbr^yFG4`VK;?LC)Q$aEC{?T+OFFJpF(fR)6_npCL zm@~fm<_8x${cnC4+YMU-80))8c1Wzg}Fvy*j`8<_ACe z=7+a$;lr!Wi=XChm2bZJp*QIKD-GZLFzI!^$G`8+J1?rD4}Z%)E+laLTYh{0$%i!Q z4p7Y-b_<8kWH`d7@R{GwAG%Lqh@ao*FnriEr$b zsA|#7($Ur%!~tnxn;K|&fLCw0i)mGhA0N10#bvmsS+1i0@}BdN1^`CY{g0}Q{Y9W( zahV$6Tkdz>Z29OG+L-kVTes*JHu{TKY2tc#A>q~ig`5|-XQLD?yOfXrxN7!SKyyMFsGUY+p($NV`> z3db1sSue6C$Y?h`5O1|45(v5Fjzn?ZYcYV{F&&K6e&weV9APM8R$YHwlpJ>RP`+yF z3HtkhfXrhDzD2^!Q}mv8X6XQmO9u;jV-aj#1h|#OI{+ZOB~UhvJ~6!XH_V90ct2uX z(Ls)@Db=LapJoKMunQ|3Z!y_X5v5aojZzSX{h^@R*@*DN>UT&Pvy;n(ACzG2hf$S1 zVmBqNQ)+3)MxeYgTMqCu{QI{rU;gbM|A5&}aM#V>RMQ7dQJjsE`;F|%Yswp7L_L8IM2pS`;} zzq~*u)9H}UNPrL2 zzmHv1fU=NP^KtuVHp2(#tUyx$eh&IXC~o*ns(AF``c`@MpbYd}STq#&J|PE1jbyIG zl%dImCU6%ECJCbW_kaE4AF2BGUw{AWAOC2+{n!60@2h}{kUq@#TmKcSrK6|M9}%L6H*+2(P@YZRhos#)3;<&G$xJ)Mqs20e6pgWz`Rn)>rSwRS_zchdt(9!&=u$@r5Smpb(lxgaXl z+!13mYea0oe5kcns{&-}mBoovOocH){ZE+erg- zjQ{@IHA=vBS#9vqAy(B0muodv&5yy-S?zLC*fkGEIBTY~lD0NhJhrCEoz$0gLwhh@ zjIIt3^qBpc>E>y_zp<_2>h*(F8l@Fy_+n3wuX?S4#p&I0+Yg}K(8IDXz5GcS-hFv| zv|ulPw_zDO<58&F(RgqNmhB`Lot1Vqs6%+^8YNu*t~2ia150kf>wX$+>~*&py77aK zUqZik4R$de2RF#u7Jb>NFrR#B@z?DNQ~W#~mPPL^09wwnJya)d{M$G^A+WOnw1Dk= zuE&9QEl>PM8V&d1iR&3`uVTwPHnt87yt=a;g1MHzUJR_|I{m(%PL9$vYTDf?RwCS? z`J!;)EiC;`y@0v6b5Fg4do6k#@6hF7^q{19(eq2}dR&`}r{k;_ZnhB`?mM(zsEXee zN64VV3GG90AlWP)#}lw7aysAHc^L`EY}T7-919tv%5i&#>CM*&sf*@eGEO zXEmhH&uqyWz^68&#e~sgjNquZ2^yVe4|I{xpT-oobv~Z@?rfiLeC#fby1R;+^!KT& zDQo^Od+*-VIF{`T&foPZbk9UgLXJ5JhkeQqU%muQl>kc;@vMqx;ZOJXk zknR)byU$*){m{#jZA?`)j&r&aTiVaH*Iv)x+UWEV|0W6ATue{V{}c4w(3J|7=u#R7 ziz`4}C|W1{XAhAl#=zr)JMcX2%;Gf6!iNB&MIt3DfQ!&O62mq)CIYzN(VsxgpAz}=K@LVS}S@fG?Sy;)Lc2YpEx{RJ2( z*9Ia@O@mxw(2aJvs;=(E?9X88yAUp;nln3q_#CuYJH96tYUrqJL3cZzH3SUo;?OL{ zhDpt9jPoIFLzq~D4#@c&r-7M1JZs^I2!6;o3?`#gVjXp3oCYAcz(L1jmnEZsK>bH{ ze(2eo(rjkbySH}4-08C{mA2Ggdj$Ute zH;XeE-OlK>EcP??BYMb$)uC6qM3>#!m38bzf%K7JWjO>@4FngR!>e>Sp*qF`#C^RF zrsb{22{w)hx6r{SwKJHf8V%JtOAsS$$B-S$M0em(^}U%NCO|ergiPj>#emQ3W&epH zRsTI2|DboXpWzz^-d{afMf^XngWnxG-~HtWmz?le{?*GHnBw8iZthVvFZC?7d9e3C zh%C4Z`BT3G)STbGKSbf!s`t9VRcYbny zYlUB2!zqB#FccOvC_x>zQ<2V>4hNa5BbE@r9*&D%e&db8L{TzDh}zzCD7gyLzY6Z4 zR3sv82B{+VbPk{aDg8w*^EdV`y;g4xDYSL!e+zJVltTM}9EoNhrX0rNL|m*C(c{vG z?e;{Urxru7le0L6>je5xw-E!vs$O`})N<3mh<)MCPwMyShC+#Aigcmqc8AtcP1u6dmfyL>)MVZEs5M?qU z3hCzQL)=HGu2P^kyLm>ngE7Iw@U@T!uMotA%n{2M&y6&fQhW3_UY+s$?jH0)b@?d* z?BLCv1Q2;kMb)UfFbts3!3_pS3*ggF9;{h@wDgz?&w3bOUB zwYms`QCdekAFrXnvO1N9OEw_m-1%f@fAz7f_4Zde`LSq66$HNgV)u>v?EA9DyO_zqcUshHd}Zp+He($^^@1GKSXbF{Z2dyCK% zxwCm;I0<}W@pNM0AdGG$@dO4@+E?+CccaLT;44Brhd{+(Is=$lYso9}V~*fVh9em# zolKJpqe;t(g)!U)v8$T9hgWXkTi%}P~Q^p7KL{{9;XtWjc z1&uJ0g-y-9bs#s7{^n4=0qKLnB`I44xUC@|^&PLA{zEM^YFxR57^@@NP^+Knbpi4G z8J4DGWhmwAP6Md^zE+BT@!ApZHTT356GbO^I9}+x0hnY=WDMCzOxGiJr`Mj}y#u&p zv>coZjx7v+I7!+wvnznl%kwL~UCV{C>fXtBx3c4|FdnXSh$G-QIu^<)9L^;SXOO33 z`!OVky#v(#kgjl?mVi(!Z)n(l#c3a#!EPJ~T0~>{w_TRV*Qn zG7On7x%?a}rZ!^e6KmTVWQ!nUQVEL5Lie@5e{g_Xul~Ewf_3VtW!bq$G=&EmK|p&(2x&~F{<4I-Jg!j!H7P|waT$GMY6jc~bgk`S)jCO*{m zLA9`N_$9o~Uhn5Vn_Br-r^?pY93yJ^z9~w>1lRyh956;uw4lz>AjB+Iey+h`!xhb) zHgCttvMucdD<$#ou{*4m}!dn8$xYD@(vLdF1){k zIR@*ZC|2mE0hP|TXl||Bvi;(g?dwgz;Wg}XITM*J){25=ZZTVs**FG68+jLuSfZY! z`yaj3`h*@W_uO2j7A^=MF3*B2BoevT~cvqgvj zN!B|uXCrf&-yH0Pj`eT&g?2WuGP^PG)72FR_#ry(MH@5 z-F1UK#qOt=NZIK@nJ*uW*oAjV>LKGGD2?#BOjCqJ+%pu)t}}WK1l}rp4kL5Nsds19ZkV*IRXHP2Jf&umu$TPDfq* zn*BE6P#ngxg_##cSn65b^7#i2moct`QiXGc$&($mF=wuwmKMyxO^GfP3`T7@4|o-x z&rd?np`dae*+yQh-Yby_MIX+xb&!CnCy1u1TR77qFWw9smaa5twbqC%%9_>Fqnj<) zX7eRqqEXu2K$Y9rnr^dwXeKC>+9jPO&RHi*SGL8PvhM~G?Tan5#8A@k3I`Hm!Z&;% zal_giLwuq2*wF;InviF#hu+RK-lhT1tJOjz_fi{J>lPq-ANa_$Bf!%hL+ zf@=i&djkK6lSjL;T+iycG0X}CLSb=JG}eb{CKj0K)Za@3#mR8eqL`{pL-z#AOIP?W z!b$N{C12+s*HJP+ZsgX0kSeg1P}f%r<_|N0ycq-@ zm$O15o`a>BU$`~VhpYqXMpTFU9rGBrl=|a zdW2(KlPsA>WZ%HkK`)?v4OeRbg)Zfl9e9E6K#A?*rM$f*n_V-4!<^f-5^k}NOFx0Q zQu}ZiZz&e_tYamm<3r@lmPsWAMu&~)0Hv}^iyQ$U(P5OazH%9((`d>TXy@KRr(hCs ztwv4RBbtENIKHj{#H8bFX4&lf;mH=y>11#reJ&%*Sp&FsKZTIPY{*((oNW+g>bc3{R-n%~Hql~{v3lfg9?#Q!C)%y| z5F`shTP6pE9V08oQrz@iZ$8rjifFtGw8>ri=K|j_^lwr8C=68FG2j}T1{_H?^V77< zsj8DuDHLu;HAcq)LXfK7(8e(i0|ie;5GXZf7haIHf+cx?$U;{ZnF5UL41;y;Wsy0M_o?vYjQ}@VcR;GRu34#If?ts)CU2?DSMJJlg1=R!}vL=%LEmW5`rj}L(DyxhIbr4 zErsPZ&$TkbSb0)+o?2ahf@FiMXE3w{?+|&S`WfS~qlI_*72M3>hz=XUEJI2X=D1*^ zGl}3Ph@lEyfI;j-a&D_$K(xkKZ(cm&!)nbK#QRiTBH%!R;BTHC1YfD! zd1lwU z55D^&)!$U7-o)loYWj2%o8brdOShTbfl zpQV1%Q_KoR0VO9w(5Ig$0VgS!U$jMQXLrdd-(PyZ2ySUbC)z7|`&HG#?1XA?pd)oG zULzVBG7d2RIBBiBwHK4iwdz}vb*VSDH21Q7-=@LiZ}IQd;!%vn%Q?}jNvGEQ#3%j_ zTtnxN{ArK>ud6wveSos)gI<@`mIJ8A|37#OKf3t;@80jf)c@JaCy)PMy1QF12T(c+ zs1DH8KOpzJq*5V2sqd4(f;GuvZPpkpO#P9y>IXX*Rrld2=%b!Q$Ye_q?u#{B`)c4y z?C6u(1FE8tLjl`!GV{f=;JvOZW0=HoR`$L6M_xdNtd!*t&xP?p?p3t%_~`A55w=`A z%1%!qh?mEQqbhoO2(PPRREt?)0KF_BF;4pge6b9v3|jF=qyF$doQ%}$`WON{E-ivv zF-fOAJ?sS1IitqYa)r(D#J?*=buBC7OT~8jSSG0-DS05B`9lI-vuTDNgWp|RN*B{X zJlSnqqpBk45$xT9u$4L`2c?)3n&Hv@d0SbMO9^>g7iyFj?;7Dz6!)(Fz*e3HZzIRm z)8|$DI*hTD^$*MU2&Q<@W*|w(R2^mfGO?e?5VZk=Fp%;fULZ8ajP^*Pw9b)mnt_L$ z3ZKD9=PRC4x@4T7C^w14GXUusN|dMARmt-4hl<^k#UN(5j^SjUG9m#xTs!D52G|*m zNT&`V1EP3%7Ik$jsjMo4vn&$2o~mVS!E7;x8yhTY%Fv zDvxOfMF@RXSnah3ubxQ>O$x&f`2j57i~La?Bcx-;ZYz)Zk$t>!FJOiQPQ! z#A^U3gR>;q%khNUVh&`EO&0Iwr?{Aj7iut?2o^fb)Tsd+O~W7g$kKs8D#Q|W0;8z2 z!O7Ap?K5%ABM6a+FkCl*!g~)s2r!WCsvf4>=j+AK7rkFE`llDiCx5H3Us=MU3#QX` z&I^I)sT(-;CAL((Il`0bb@8BSbVszed+J`Ljmo`h;2gtr>Y5pc zce`}%!?Ak=b&jvjHJ*S68Iz|EgIys+x?zF*QPLEIeCs$WJC8Y568AK0Z z5=T>A8!=}dsSuo3lM|MS&2)9qePTIL)r~~_D|h9yM-^C~+?hID%(*)0$gs%Ijumq? zTG>bHXeu^7>Oj1KnjlJOa-Rz#B9!8$^2-*f1mhs_2Xy1mk_i)ny>~*pw1fH;)eL{7 zZ!vm7La}yGGz^ux$Dk@;1Nz(f8HtP|&a$Q~YFUw8y5ZfM4DlILB+q+4`{{>&KfP2O zZ)Y(7H}CKV-8Y#YdE^?%ui{}D<0$sXIl{SgGSSk@8>C*mwQ1fRDr%m1=V3b3YtVru zM#+kHb0IcS91nc?7)%5tAT<&Ii7D7T@dKt)lqw*i7JOi6%_nfVbW1mXfq|ClS=CAw zc@HtelSjd8Z$t-x)4h6yH@^DI5{bO8Seq5A&yGgq5t3HGgIIQ+euYb)irI1qu@=2e zKR$v#rud`Y09!OM9b+|efA}q+xIBGkxdAQNk7KME;^&>DO5q*K5 z8~NoamscyTqU3b*1~|S;!Ie;ZA%2$}q}xt>4BK_$)^T_DHpJO#}@;3K^OU zp08%sbU^tPxMFv9@k<~rjo>UGp&ICyp?m=&+At2SL$kq6AA5uxbVH%=e1u7%M{Dz7 z>4%A*-c#BO>?W@pcroJ1T!N~^f(LV-&y=X`fl$r9XWm{~b|Y8xWnDqFRnpCxIFv%`Sbz-*rSmasPJ8l zUQHWbVt}rU-!9p}IZisHZ8uH;gejLy&P0^#=X0n5s3wd@e9B z5F=(Lz#RgG%Q(nZOectkYA0cIabBzuFaWuFavs6ZIz$lre_S8dTK*rp)YX2}SA(wi z|Lngzc>g}{|9Sg%|Hc2ajZcmLNAK=)x_|T_>byUn^h2z8tmEe?vy#&&SX!D5l|KK_ zPv-+PRFJmevtvZ_#Gz8D(sHNJ(jMZpx&ue(r3a0@gkM>y({Di_1{-W~ZI8;jqgZ7C zIZw-hK9$af1`UYVsCZc|I!yKMyfV5^I!oo~TxDb`Hm)j{%HlcZN# zD1u8z&AoJ%`PJ%b@m||K%*$z=`tan-S;3havZXc2tar^uBxw-ixioiNN@x1f_12(@ z|CccTH75*)0G=_o_#`ua3BCH){j4Sb!%0wzSiSVWRQ~_)Za**ozy0yU+ZXwN8=o5a zpLh2;rGFkmo$P-fOlIJL0*-|IQY-`O=m46Ln>ZO7Ngqrr{UJv==YR&uI7&`6%Q`Y_ zQ0>uaUR@X8(pkWDC!2MmmKGB!$CKF4yw|#k<$+cDmM#p2t~)Y289q1 zqCL!Zv*-Q>O7=-}9mZf0v$KKcsr8o{kM$P_>eipH2_fH47SQs{`DH%9pc8fD@oz2X z;)c!1WFW#tT!91Zl@h$g3ux~GeE<42yfN!|RlhfhAagqRv&J%FKGlzF+ z>R&?o?daaq#F9r9A(N~vp6^&vp5kF2vCmx%But<^ACZQIdKG zAC%OVQ7Jq~hl9u!rvXTX1{Ecrz(e39>cKL9T;+M))M53iPpjAPxaPJ1kf_PkZQ`_C zS2udy$i-%g2AZF!xupyK_HY9W?gRtv5$5~|(%Rxh>b;ps_zsVjOO}$u2_3m5xnAYB zSjFw)Ror2DVx~*ST}Jh!KL}9(V6%RH^*G(JW)Xew@coB9TF3mlf2E+DHx}kMuei~3 zxk%*x_wjfs`Rbdp@ml1rTF<^~HLaO%L2UwLc_FF7a!{Ox`numey6m4G_fP&tv1yq{ zWrWdjGUjY0DrcwUFimFgxV7p7HN|fxveVCGn|M2%zJbdmiUw26OeOdr7&*M3&C|No zv#yvXku6mhjK?>O4sOL@O5^V)OoMoq3+3YQQCLhJJPOWP8cznrW=mpYd#GS*XA)dG z>_xU40{0OKqu?Fh8QUc-z>7(JXlq2e3tLP)ql`cD-M_O74VOItzjBPw&TeT$QJqXt zBT#rtB#N>SB5NgtVhj_+WgpO@F>xW=oTuLDu~lmT`^D%bh#X-=C^vZ63X;%)l>t^E zOM;h_u&sU8)&GHl*VF$G_74x<7WDu32QT{nHa_+GKkV)^>;D+bP^15k8SThs;2b1C z!Ovn4P`tdxB*67sD=h+2I2D<)U9OexlD-ba!ay~p$c!eWSmbr5W-iDIer@Y{ba~LV zQL128D|@R8>E%AX#-n}CVK(2gWxG36;#}6yKWc}~Q6QZgHKVT4QR4(IN7XMM8y0&` zTe?n{uL%9yMpYQ7ZBEPliLdDg`gX2{{NY_+iODpuO->cmt1x@|sTK$NM=*pmE=Ua= ztsO(dUcTTro5(Li%Rj@I-5)0W!C@GHu;d8OpWF(=80^_)UUVP11wPCy@g{Q$fEaitSnW5K~ z8`4@+S9ZPaB`a>SnQGP?Tiwo@FC${&lh4P!y>j;L)$?x(xkpH)g%yB6%#EiMMs4pLo}Fz5|Bzrh(Fih?=AV>o6c#XJ7Jc@$zM`7IPa*;YP_pf!I+Pv>+X_Re_Qi z3uX%)6W(EnOAd5}R@opDvvG%07Okw$-~ntNR^fO%7&%%@<0P;X1~QmV}uuc_XR<+1pAtEJ2VIwLaHd>*G=3RJ8l$_3TQJx6f7&R$jDzU53HQcOR!&}}n z$;5;>C{8en$If2qg*1!j+xDRyC91Hg$G4(@ppr2_=S z@WuXxaq4ApJJ2(u)5B1Hyo!kWdZ}2Ye;4e&SmFK!KC9UOEO*v2(;t57?SJp~58nTn zv;Q5w*#EZlDcb+6-F*hrpY1BW-Sckba#CtG=MZ(BXF%5ZpY!@~pJPAsy=$#-H?_KH z!CT9N{d7KqfJ$T5YxMqbHU~`h72lo)({!Y)?-mfRe96nqA^mYH{%jxy? zZ`U^`=XDR7r~2G%|LWwr_w}lKa$VcO`DO3wrhonQ68;M#|Esri@b&D!|M$1Ml`pB5 zZ>~rA*UL2oZe70YH*X-rzs0 z$ZZ!y#&FzoVXuC>Jn4TrJ-a!%>i>LlatVu>TfY1g7rl#<0Bb;$za@{T34iV0e7#!s z9BszY1@6Ottzus<2i*d+VV&%^G0?3%5Ny8HyEeTxM-U6sJ_w?ewp!P;hD)yNgA6wf zIE8KXccy4Pverndx6UHi+x5ZVmK+B9ck=<>ZF_*P+l~;?=_eCxDQz{(4KEc81nYAA zK86zhp2iYya~y71t1}R#B_|^#RkiVfk>^z2tn9FgfwbwerJv>+EM!XgHBJ~vv5)Z) zL73B!XjB@egyBYFwI|zO{&zqtpx?7thXg{P(3-bImPk=cA>%w9%DbvP)DZNV(^bSIl*8AHex5EdJ&c+zEr(0 zx>y$#3Gt*lg6u=ZuG68eJd^9s&|wAx0sc$~t*-fm1p<^{KFmG=D(CkZVVJ5F1Vk}- zI|(SkGGI`fj9N?2daHMBRf*w#$k7-e3CMT0ecgaY1wKY|e3Q6uDa&W13|(l4 zVU*k+dCXK&m8cCL9>vlWV1R{_pfDaP%A?bLWo_8+dLPH%Qt$78TSJSEjxY^5CE#h9 zsoSH`4#~R;5%)}NhPL!2Y|2n%Qek2c-1`q9UOxuzh|5su4EJEHCLIRRaKV7bDZ%C@ z2)Ly0Q@yn@-d`zz*M%8Zkb^}~@@zm5U;mhg!*3I4j?ujY^y@w$R9<)4$RA7h6O0#& z`c`fk??Qt!SZ8yRBl$THvd(O7YB+%QnUI^NP%2Rf*jb`SUt^$YAVerxtYyQI5rsK+ zyUF|bZ(GD9?A(q~;6ntygIawH4SvNeRSHqcv$(1P6ImjLI5cB?xB_|QuxL29JYMZq z&n?^(9eIHbL#k%Pf;Rfc7;T#%WyP^e(72O{Eqj@>ClxPcZlReT-4`fCKuIK>a>V0s z0l@f(o!aQOmPAEjX0lF*2o+W7Yc2Vy^v4^M$Pn ze2m2#KonjQ@VAws7{BNgn1b*ZB+kaxam^-aF;l(%I10T9?o!_VUtIr`h?uT&?zb!Z zWg8NOP#XF^C}_rFbeaZWn@1r<%jjZ&(L#^fjt<#jL6B2;vWgG| zss$K`0L^a^$$7{t1Z-LhFx(di8IuVOgw!BeXd|BTt)|HqV9DWjR_Adc5emg(yBG(6 zzk)@Ax&!_X!T4Y{*)2{Z)dycDea||et}+}%l%FT}s2yvdsY9|8EmH+n_QiD|@_7`w zk12+QLImI^t|i;NoKKXyWwh!Z3l%`A;>5aw<9UYFis_#dVQ^OUyHDw!!2kOve)%@T-p)(yfX;F5<>0XmK&JGo(J<3 zW*Q9Vbeb`HGQ7Lrn+L6_^DbUGZG_bt)~6S~3LVYF(KjuwiTiJi!=IN*IG>VfmNg z4y;yZo>ku~i|+_FODblzbH$?~F^B;}K9*z*YiW%YN2KzKT{qjEKU^+7)Ss{7vww~w zRuYhqJ6}j1n9j0r))l9RYa=5lp?1$qlSS|pwY5AaRqHonF3f|+fu5#!zZ=q|$?iZTVdMLy3Y5ICOSdgaYl8nuyGjFUnYLR*>I6`Z2X{-#Q(s^5|Nb z^7SrG_D`Xg%fQJ}%!O*=qt?|rYIRcMBY@i#5EIeeSR43)LphB|5uxfp!+YS`0NV&0 z1NCEzc@^9B>%9#yNKp5auO+waAv*?==VIOTW&J>V9q*K`2 zhj2u?$PTdLm<^>w{4~&A3#y#UVB|))f={kwON6)l90W7+oC&f6*OfsqD+g&4uG}$J zzU2k#ef*F9=d0e=OLREn^l9EYtptxhT-hVVxX~l4*E#2a+AU|1W!tRn7Ifd&4IaVi z<1CA(d$_s;C*(}v^6RbOEjZu94R_HyJ~81WK1b`TAy>9`e$@SPij;^7C9j;haT-if zQ<==O7wHl*dZMAY*=*V|O67nHwJ%(JrvXek!v;yT(EoBxq#H8EAD_M?v-&C*L|)(c+V@C~l~(6ey6@;UX6u z@9O&ewBud;a(+fT&UNR~UGhe!afdoLU^OKfXPld4Y~oSueZBs;%YH|aG)vdy;ok5s@%)I}KTq%1k7a$I)$; zgY1TLR>hYziBQ5xgX5=n^$LuD_#S3P*&IhaL-Y_UhP5%(`6h&$EQ_Z>b011?Bw_}B zG6}(_t*C(phw&Q$N-EubmPaMv#;&1KTD_l|0L?Ir=P6a+*E-wMK%X2ybK`i_*Iu=a zyHy~nK%XU{;*dEGXH1VL01QPEv=WGhD2E#qa52S)sZrqAJ|Ku?oabd8baX}c;e*1% zmRcx&YS%4*IzHUpldk75V-rgSf zZy6uTEZo|dTL`n@_fyWa)DPGWf)XEPJ~V?IHEfO(1Fh*W zxGM2cND^oWMS5|ckxsfILbw0KXn+kiLcfC z-ll9zAB{^YDu~!(0O3j*n#9I7zII9(nF&47?Q!8h7=rVPWpvo%LXlkM%zlmS-F_Rk zFI`)lzhWbuIHLBv{5Z}B3rT<~xctRO3FjX>_5F67B}kE_>1 zgwcSEV1CNMm?YY<89|sh8KR|)j*BI3PKp7JPP!Q7nRNFBgsiqk*UWHu7yQu3R%2 zn5gQ*ltDBhop$cOF`{Z!7@T7StwDuwVJX?9ikDH4z?DofcuKuu6_*Fgb1Y|dG74KB zsFbI7^8pvB+=13~`La%!9gnJ*X<4j$&9;ZnP48jeeEJNupUbb=-U5^vAZkatJqf1C z6dK4aUd>(KGKI*qa)_KkH4|h|M{|x7SX=@$2{w~!j3LPsE+2Ug#w|R;K{V(TvE5st z<_cd^3|>`SV-e5Qlj(hjHHl^UMe|5$EAE>186kXU*RiOGEXKNIPFK2p!T9*s{;Yui zL1+d`tA3hKJ^shx`wu_9%j16>zJ00xvz1Q)|3mNY_Q5}N*NFFPLXB#mJ=()i2p9)R zlz7cp$Oi0T?q6Q@x+m8;ObGe$=F8Q|(Q)~2yvpB!&f z&bHzTeUR4$tv3T?y<5HO)jNgvAmpH3&-Cjo9Q89#{qLq%VWR_DZ*3^fVwJ)0n;C~{ zY)SvZneUw5#QhhAltMwqI6?A`2mY+fKPef9dsDylK znh7#5fY5a5iBPXHpofNp$@~_Grojr z05M=;IwiP(kkU7abUH#%dPSG#spK6P|CnRg^gu$8I9J&YUN)H>wmF`n0!D>d-MabE z0Y(o7=IwX8t?8nhm%jh2|u0@~x=0j)K#`&yot&gjCqX#nJa{BIs|YG#iC%*k=ij&5CU8=k9dF~ zEVf^Z9U2`<+-BB=sLpUF>=9)Jqn}8UhyRbpKNQ5;9dqm98tw0Pe)#uss9!qOF}u*2 zumLpdN)Mfqk(VulWNGU2p`Fv%P|Jaq=?l5BD+&c(4DNK}NY)^YQ6@_FG(LDCIEiC&ni=lEcwKZ*bC z;7Ul+x|6%x;|PPoWzlhXGHf442Ju0GE71*zht&=0^(u02vTtpY!oGNWdl}RZB7c}-1nBOqBHI8{h7L2OKUEy3aV4oN!hY_Nxb;YjT=I( zW0xsDL*3ZyF0hm8(UXsGK=$S;G7X1LhKP_b_)D;XRJ_ zOw_oYc9j*l6Ni;k_7=tL7bS{$N((O{g|VL&X!`;#UdUPCSLK?A?ccI?;43R^#4vK8QwNixhs1 zw&^aS&2W@7=D|@~1c?j!*AQzT6zK~14JFQT90X48jm`jp{s3RxYEHcJyxh65bWouo zXT+3lr2wn8F8Cl^yVJGeB}@88$3Y*j;=UdyP?;HyMz<*p1l1&7vp5Y*rXcckY67zX zQOGJ;u*xHL94PKbB5zbG8FlizYQ>6cNmNUL9o}yf9UQ{7h6n;-h9wgtI@E}WVZDdv zFR}ryK-*#LkX;keZe3?q$Qz%~)VV8BzGu&Bn1gM>uu9DcO~M=A6jqcUpj%-&5FJeG z+Thq3!Zj#l2ijTV=z8kpyAPRo%Le$pEg+bkMEQ*{-{h|1rsFa+1g#?EHFP8`*i}W7 zQ|-#Mynqx)Dab&blAL$k3CxS)q;#A%Md>KAHqbFv@~;^=japxl*qCI|E3tGgp$2@9 zsa>%aB(=bjW@^i$j54PgOKI<1n|3)EhJH=^(y5o=ru*Ag;(Btd7!{K_mtfpA{kk zd=0C?xOG`j5*vq<>L-v55Oj+*Z@;Fjd}a4#35z?5DPV={JJQro1zvcU5PcxRWf0FX znZ7L0pwvFP`4!aBHnaOh8cOjALZ2xSKCKBRe)PLsU7Squ9zJ_XW2b5FN$pTCorQ0q%@D*8>Fid zsX>SpfJ#;cYn)|XoYc6>V8AKYh?4sf7MbjIMk^OSOxT&S1v~SIg=`KPN)4WyEecz} zZo6o{p*+2UN^jl0Rw{l$r*RZ3W}<++BeEWGeXs=KP$W=dv) z`z7s2t*$Re7sqEO{7gjBq$DWor={Z~C=tY1B^0o)UPAb?4(1uEqpEg}S;pz{t|Ssn zLMxG}n*R;e{+O1{8 zopa|FgQ$%lu6A{8iK?sa7vJE}ZT~L$^IQ{u&cj!8fmIzr+)^MfP2XrCSm!L(jAG3b z>AK^e+85vWmf;0bGs(7k$%sbX{*I9qu_)dCYD3gsCvL4l3F(U3(ei*03V658hD9kF z>NvqRP>`(}wnY)(em1*(Yav1uQg3QiT$1hlq3t;{PH1ei{C#k2%Ig;XSKgCZyR@4V z;o2;?UzF8WT67xhYF@&DgGN> zX-%WQm&Jb{{CM#GeJ=j{;K##vFY({o_>{zd@jw&1_&uU|w%Idw5yBHwwOY3gLpz;Goyn z2GHMX;&qf@&uOQS(+^+w(dPL2H9xY}B$MC{P%7HiTC18534Q(2Sv8u}@;Nn(&b^eY zi}9KRHOUz8IF&|3*RGDF5nvC2us0EE2G0Qi{lO(4scEI!6LoZXin(GC&1=v?$p=n> zx12-^M-&%a=hmq&;v7l`42Z(30tyo0*kE|kwt+Tg8akK_Ubj1UJ2QZp+D1pbpo&X-~N zI4CJ@ZU>o4a}A8RLAML{0?$((WO;2FUApxEy*7Ts4XG6%FB z7cT*0dmxS+qOo4#%db8$wJ*;7@8@6s`AP?s!7}2_b8DqyA0e1>kQ9c((HnP&wh3KA z5ey~cI>jV*pht@;Q+q<7fcgccbuB{>9`Er7_wg074v5Zbhi_&mIl@aoEeyYRU>p z8^{_7lQY5Sj`v73mxKL|63T`UT<|w<=h#mk!-&IOV)p8j?m08}1Tq|09q-l9pZP;2 zaJ`bER;sQ~+^!fCYYLR8?tfN#-*x}$=;CJp zD9&XSX!LiuPJ(#?Ro;fF<{l?j%fE2Tsl`9llG2Jm1QMbdo%Yu1dz6;Kh z!iwMmS1!XH;^iHT&cS(;#RHhqq958}WkELCYrx(8*opFz<34aPAGRHPXius45TB};& zihMdH$t%~AnrRfTy;_~Zp>UBA5f&ES;tSO`gqAB#$wcj5)}#s`fH-&|C3OhnwzxFz zzK*=iOY^10S<8fYZ>laZb<9@ZBrr1X`(dyij2dA?puF-S$BPg% zc$8h|qVEu-u00g&u~XJ1@OSOo;{If@V66ktC&mu%g}X%U%R{is(Q^r5rK4~n+=Npt z@~gY!SJZbZTjAaO64yzcHViBYoUWWe;FGQ*l_RDO2E|%!@?%la`M8(x#@>Ntp$ zPZw6FK+ot_7;csR~as9Glu-sal3R#sNPaQ zz@$6iR!{}7#w{74>a9mG4EEmVFKFxXVBCETnXiZx$$^YH`T*@ZYFF{jaJaO(&%%EO zc}AL3Fm-+#u+PY!vNFfU3O4)cbN1$2`IT!NV3Kx0lA^D zmaQ5V0xo~b!K6Bkct=K!17ao-^+1d!aJ|x@NOdS3z6O&}XX5~$I~2pMtjSxexE2oe zr$Vn`X(d?IYZ0MZqIBe6Yz%H8ol6$s||_v3lqh zdpP8|tG}>DQK5^`eitd)mDrU8T`tA14c6!2xYmUvyp}&_OG6#>i-36DB+Q|#MNC&M zaa9qR?5eGnk5fsJwNqE}Mv1oMJ`_(z?K}1dVILEUxD{bGt+pnWWGxG$2aQxky~xq8TGx zx^H{~H{Q9MAW^z0fKzf%L}2fl#pTytXz~>-uN$MT`|7*iYk%2eZ^vSZ$`#6^=ne!9 zEn&t|%v${yJS%n`Ti3J&z@=a}iKF1Qyh<}LVyHZcpkP?;Sxu9;D*^n|4<(fCQe%(c z7IldN_J&)-p<))qMYVqdY@b}4EF)JX!#H3Lsi`rEHO*rH8-ZXzH6tES7;p@TyleQi z4CS^_RUnW7YPQ!FV=0o3GxgS^${CX-#Jiz|+p0Ddi_yx;3N$^`nrrs03#9|dDe6ze z@@lpgaJCyC)Q@v0*vh$Sgq>%|xbjCeqTvd%SvI$$J+;txjNBNm;BFj^!@GH6^sN60 za16#6{ILsxPa^GHlSM}nm}yH_Vps1ldqr#4MJ#pxndh>B&n+;iMX8bkTAR2QY_81b zV;yR!zFv9}#&*r2s9;{+Oag1?*tc)I8w{+$9KU*NO@$A#<_&r80y^b9Q~%Bnb5&Jy z7FON>DoYDwHN)fMGOU~Xz)jB$3NUaQ@);XelH)7}fe?!lW3U|8>gTeCh|-39%alUI z+AAZ$IaWWhESOvAB2?y9sQJ%tC0)V(Hy`=UZGZ4tV*fih_;8T7|LyPp_+tOt#;0Ka zQ@gu;+n?$b?0%ZVpwiz2hVVbe*Hi({<9pQZP3RJvV7c4FH`-R3y7U z8;1Q5qj4Iz^}Ao`EyW(`9~|2^QcNL?_>Tc3p3v99Lz#uC$*|hwkd=(;wgRxBW;ps4 ztQ-c<*R7fQ*NTJN%n;)AcQFD8VAg>}EdqGL(f5{iLQ+lO)Qo++$Hw3vM4O78hGQg= zVp%mOcQqBjChIG+yoHoH)4+cnoh zp1mdWVoXZeixdGu(QLX)r;_%Yp5FM87NErKjUxj4m{NqJOeX+DO7joOLWQ-+sAWx* zF2%A}HfbIzMSxCe`N|THczU28WA7bEeGyI92+^FGj~Ea-u(IZq8Xc+OX?D`#ZVEL; zb=D3}T%*`>T)P9M2}K5!XozV#f5}xhpfCk^9V0Vb;PqP#7+1-fYG$$$TWooz$XWq- zzSIsEm2mM`)j_JIc&|2~u%e4xa-^{_HtI?TNno&H1k$)hBb;;43+n>Ud=w?JD~KS) zs5ES!;^jM~r;b;P>Rw8)JVG83<6k0tIESFz!m3XNW9B@@$v0Tm%kHV3CGZofAqslv zJhM57ODnY7=3UWYY0Lw#y2cpA$6g+a$%1ehL>^+>(9S%-4^jz&lULaOsM4qonVYuQzsgJ&C6a)(dbN235PaD!R#v{n<~2Z)aw6Q=dD`%4Arf8Eb& z_TMCHV*#$W|L*^I_~T*T{`>aB`xpD~Ha=zc-z0k$3$PNdmfL`@pz{4Rcq${XE3ULM z14CO%y4|Sp*Bwq9^RFJw=8e9EHEL{hp!2d)uQgTt*vFWvk}7Crj^yGi<>jB z)+nVdH5=6( zIW{2CkIk>A6`5gU8IAPk0Ho>9 zZ*`V$>?9AY%DadXS_=<7C!~MXqgw#Eml~1EdmrHwU(!tX8DowGb=F3;pDym<( zqAgeQKjB$IeZA>j_Re~rf9oHge)`n!ef*F9(ap_O|N8WQov@rz{~(ZZqX$nfKJ}pQ z|0-F$X1lU<)OF*y>Gk^E-udO($=_BP1=PM-^buWX$zYByFVBAKU!DANa&>)TceR1s zc^nF48;_b9`zjuAGS5n&vO0AX>b-`4w#a$c%eU&7P1o?R)v6-6jnyajyZyCn8gfwj z-=`C78!>qy7bNjstM6uhcHdxaJN(A$Bp3q>R?86pD6-O4WDLvK(;g*v>3+#WUvVV{ zbGXaO)`NZ_B}x5z0yW>aw>s9iR$U_+NNy&tX(}y^>qn;My3UJ_!Wovfhkq`>rWa29 z#L8pLfggc>1z%vDe5m$L1|6&PgEySa0m-U^HkL=9@*hFJNx*brS|)?OF2ByT<;QWH z%@Q?7*Ng#~pX?0q(Kd-@DLr`9^R+yqGsvyZK*ghddBc{d5C--JHJ`topMhr8ujl;RgWkhumDsxW0MvdmqS7&}>To+=ufpan9~putrlC#8^LnAlR7@xo!2 zdLjy9K1q@7M@fJL1Cm+5b>Hbp)e&otsu$#nqFK-29fXJ<*~`T`zM8B4B5w_MyfR9d zM?A9!EGf+-1H^zCi9ML9{4|>c&J@dbCJD^Ib?v|$-T9L3#tJc03n2cHoexfnYvV&0 zdxZ6Jab;nQ=P_dS!|=X4<4flNOsWPoqMW=0ZIuuBZ?@B$Duqb^}F(W#g+ znV7in0wz1+iXE3M5SvD@3QTMg2MIO;Qg0t2d0GA1sTdIDJ8CqEjB9BKQU~D)M=_EL zPyiB2ehx@gIpbsoS?_Ujr%vBLxz6x?{7C#`0_pu~Ncsy|G)R8LA3Ky+Ey#-edj~yO zR8nOW@VtU-NI1PX3Q3a$fIppK>U~k`@W3U`t#OMLM#>51=fSIMVGYa13oUi>Wac3` zIsnDS8q*j>=IPWCI;iSzT-GQk%+XpOW0l;PN`c+?RJQ@Sl;~ctwgd~q>f`?yTP&bB zoK2}vg+-|wo!L%H9rEz)%6)Ak&+~9TVX=G4n-+kM+9oU;JQ-JIcyWUERgvv)@WBM|9?GivTdP1dbG<CjGun0|6N^{AKnpQ@QygL$cn9coM4G+rC&f=Hb=xan;B@rB{Rdz?`dZQ z0IShmZbsPeS`z||T_yxA5{7Wh@HRHL-QN6~QF|ScFXuArQ@K9FQSnRxTsO%}EtYEO z3hAY(9iL?cu_@JB1;n6;Mf^gX{8AA{hVBUVO7J151D^D~pEA6@Vx){tbc>+s)rO5? zHLioTmr2d2&oi=#XjLRO!~LJooI#K=*omLJ1wbH-4Aipif64*5tH*j*uSggLf^T>k z+JQC}a*o58;Vzm@e7YG*+MUn1l8KA)tlUuj=mPJ~I1Vv~Rg^nsa z2?mw0~8?*h@iY_-iA<(PDPRxy(WOTO^bo9oQ8lq#8S_ZdifD?pRpb&@O1fbG~ha-($|-vso3z*oFh`ac{SbhzhlVGc038L>(r0fEmVVCb)@nE-*8S3F&GS%(DAE+LbKv zK|b>*8iGn69?;EF(7WdowZ#EKrd5-?nX0I1E^B5X)z&Ht5Q(T@%j+00WH1)7d>pFb z<~xG=rh+qyh)3#6D1xR7(j)hQm7<6pxKx{2+ttwjF%RbE+Ms15A>KL*Ce#V=kHTnf zZj~SnY~AuYCNmeRhSs=TMY`1Pq|}>qKA_!jPK@krJy!_JxKn;BW*EV3_IF={GBQO` zVkUD42$JA-wd!9sauaM|Ra`hI8BvZ@a%GjSvB&@uJljU_j0h@GtIgHC5mBPhu7L4~ z%kiRemz4>Cg#CaE<2H{IwQt`{@jL@$Lfm|iG;D0XD*PzR_@9f$blZb1m3qBonWXCr zg5?19$xrz{TdEtv?(Cz`C%jwTFw7!D{u7MP{Kr3b3WWllW4OPhSQwxnXEzLfzx~XcQAq&nM0!`!> z%w>?3xY~_!QPr{W9<+5Dc%_~d&$w1_oF~}+l3}7yfusngcN0|U*=4BIzqv;oPcX(p z8lbsJ1-rx}y$X%FO}z#uhW5_vhk4^rUp23r5UnIo6ZnGk_^cOn=lfA zOvrP~PF7mKsRu^~C6f(6QqlkcrOg)9Jlmttbf?L;v&Mdtm&nVzi9GEmT4n3md-byU zD{a1JnWiKo?Q)>204gQ(cAtiW4i>i*sD6)X)YZluo9z-l$`xG7Z!7rD&|OuKZx!8& z*VT2ldd$v}m8>ihE0atKtqK|2>R1R>uc;(FQZa*r zn@zMw`Q#K^P9Ny`V~h^F#vw0H1;LPqk}FTGKpeu-@+8vQA-_?AX~EK7NM@rX^Di8; zyh{9UI_$$W19wHEK;R|$-|DwK{^#L`5Bo3izuWi}?f1u9%l z=68x^{A5siJ$ZWlIN^L25*3aF`ua&=@pPcuueyjZXvU^(j+i9=5RrSxxACE3B zdN)TmCzTJ}{CaZq^KGM$Sc@RgTTs4A*Q&d(*ZogtN1ywjdpG@~v$Ni>C&&G(lk48s ztM1A5?W#es)%0dZK=8MH#K1?BLq(}8W34Wwe4X}#?d!jm#v4lilx1WOpmgB;@74v9 zDzuHX5Zokbh6Ga1p<1XR>3svkQt#sALT%Q^Q#LQz{@k3buwq0_^RrAg8_nYIr}ZO1 za{bqJ)5Zl{U=8A01uYE1+!m3Ngp>%?0f$)z@q>H1PSMctcZqTu-2HTV$RnozL9DS)KkA9|9W>DJ$UNX}Brx0o@ zWsiaXjSX5@0%|Xd_pp3c-pWISn#{3!Z$6P74B=Szp<~rhusx@_(*GEkNKO*UG?yYs z6jP`aGERj(x;#ZC$JDg3o5_X1qII3>9OE&~^g89j60Oy$U{Lw{wZNw60rIJ?$gP%M z(ROqQg}IJ(V5^!aDs@m%2*QK8fS2IEjBZ;2w^Ut>uf3Anyz(mdTHWQIeVJ3Bg{jTM z9hzITgV7UraXivx;;3kH$ErpnukHO03(W)~vGllj-*2=MPDYFjE@GlFjK0N)SwSGd zBG|x?D})QXuApP~aUZJ}Ks+OXkRh7h@$Jf9rk)TCNv+3xCa?X$)1Ft<|INMKzyh#D z|35g`&)5Hbd-(nZ|7|OuQvKiT?(`!ijH;DOKub4J1s)5pzIM31 z89-mL;L&8W23D)}Dih+((S=e$`bWpdtf5@>zFrpWm!(hjPcM$T-LF?<@LbKxxO^?D zCWIyY$>O&(h}L$!Qk;kzG7Cv~tEIZTVH~qwx=Qqv9d`iV}16V(2$YHh6e6SlGI{pSxJw_Hs;R%5b8vg`D}vZc_t z2k!Ho|EAj9RsXJQoVKr|aa!`f{P17ufR004DToN5ismfzNf~sG^9^8bs7iy`1#J%K zzNhg0@qDsEIw-KlW}Fd+_=R>w7f?3)ZK^PHIna=dbu`Wr`_$TI?lLCpWH^GL%Lc0a zXmJAWXjsEJ zVG>7}H1eRjXCo1T*`8QG{=z@P1+u$Z+Em%0-v+~$JQC=x@E8j?`i~H*;=UNRqsuh|tD=!&;F2N+%dTd^4;S@9g|_tF+*?!)Lt!FATdWCJ zazhGBxw?y$YC`dKQDs_!L2&P@;U*Hwq*sbCSs_p!?>nhZBc_4ECI5}b(^>Xikf2%5? z-h{d9rLv>EuvXbaK=hW{axxBTq)vk4bKZ6|J|NHU*gjLygrb&X&B&@`O#+ z&LNc8LC8;KitUIKXb@PzhA^ofct9V+H0apnx`*+MVgXf?5gLzRjL^W6XgeVcSaukL z98@}D0=S_s4h*$kcADTVeUg3-sg7g*8vFV5;<*3in|ut7TrjUWOC8Myg#{I6lr5gfR6>*~OAZP%^C)pmB%o zWGXr;tP!=jM6E`V5QSb=<~5isjR}+%b`Gm5v>g^tQx{F*FNzQHV;ukCN|A8CTUo7f z6zq*cC48YNirS;<5L)Fosj=J?TCh1eKQw3C`#YsLcl{@;JM2;Iy;!}ny~ zB=FV059P5V7=t|xK2K&q)r=G`>qTQ$`UH3UT8wEOap1*I@tmJ^?EfHT%_qxCfi3a> zzCAe1$A7>5aPVUP-^!=j{?EJnj6MJ!0r&yF1d|!W0>a7Xuk9!-z`{?$dbH@3YJ!=; zfCORcOqFblEA{~A)Y)? zij%q25lKN5|7KNCDoJSrYuAF1yc$aK3@NqU44#UOa-l^_ds8&0C>IWC`430~;lB=f zH(2`QOgKUVqeL{eUy+~(QxoAYQL;W1Jp%!zPJSvO0g{=L+!$7-h!-jA#C3s^UT-lldIaN&QFdmuKQ<4Hzya}-x@sm@#y0C*VE&hFSXBB z*i#!N(D5>4i65ol&#YOCn=3V>Pra-2{?*BO@0XLll?-3=@Y(6b&)3TzJ3qPleA2)E z_4KCurGMGGx@qtZ{_FJSRE?#3*1P_CwV?tR4%s&g=+I`$*HKa$^zR68wkELoI2$Mo zH&BNcaNwGa9vZ^Of0q*h!+y)K8Weg3+ZjCrzss444`{9UtTm@oIdsQqS22g?6KJd( zmkkBO0!v;^0{{E>EWQUH%veWAa$Jfn|@hUf&;*p-`y@s#0X5V7T3 z6hB7odZa5q*Cl4YS}qsxMnpsSQE7t%rPDr!qwGHI2oS7N8wZnMoj565*$e zK8)_rMQOF_2_Tb{r%BbHVT|`Ij4p|9a)qecesw4oyJF_4Ajs6W?g(GfL#bO!SGKX1 zJ16Eshrd{_Oeu#B?V(UMJuw-o_f%#gjKV44uuAa{{|Om z1(WeE2dfZVs6R$NYj8M;xg5U+!{Hekce1b`9OfZ&9AMwPsnpwd1o!)Q7+& zW5OfWfPg6=;vulAGa7gn2C75-cocqOu#fEmZ7r-bR!~dhjVsz!WaD%N2$*=7g^J-FiOW1;(WVJJdob9JvuV}I` z`><{}Ih^b^b|SBl+U~7nhQQNZu+=&zxcXOfUm8@Ch<7*V)uKDCENIEu*Lei-)Ex`9 zJI9FZP}CrKpdJ50KjBjCxTfgUYpUYZ0V?u%X=z$A6AaV{f;-7XKo%rni+{nr)v`jTAdPjI8eE^pY|(&a@Y-SzS;)?VfE74-|Wsi#c{=x8FgL~LYtz{$!~VK`36 z?NqzY>n5hzf-#=PFxz-KjqS(_b@jZu_v1+}`-CSkpdjX5cPCx-$p2l`N;D`o>{KwLWcBVY*lwO8eD*npkgvu*vj7@r}{ zgo`fEqz(|4pYeRg`YixrTh{?0rS zD>APRTKFqi^^>g16}MeH0QBx%vLNGu?zntVl~ zeUD0EPDVJWcIQQuG{@a3c_~IK$NM5=G>W7`n7DaWR=TV zUDL8T;4!*&6Kuq2QpmAslaAx^w4MojHTy;KxixIoyR=!NP}fo$Su16B*YHb<8c9@h z+foeIC`caAULPo~FX3K9(||?mry-d}9)iSF;uaUrG7y88DA(0L>%@Q3nOzQX9@QDig}xc|5JogZUyXIf*eNuPPU9<+lY07dAS8LAyq# zY;JLDICnE2e7xLh&gHJ`!Ph)^R1{Wo~Wj3@GWQ%!-yoj;c@IS%xlXrNrpynBpp=)j4P` zYg&^pHB1(3w0cGR({n7|)&$x1^4}c{C2Ru$zC`{ze1GsRFaQ1c{=w~bF;{wwb8 z)+NB=5b99CKhx7siUD2+|Gjc)FWo3{Gq)sA?#GQG(3W*-CEpl)aR{2iVi~tiR!r^z zs3u#M0rTf8-qe1#*vy}!PVLcHFUq}SI1PGi69rj93RaY~H-eL-mUuEE0~Pw5$>6&b zLBBLEs7P7ux}(0nPbXGaf9%p6TluVT|4$kv{aT;>*7ZO4-|xTN|6BPK?*Ga5@B0bd z@23zphzT8o5Sv4f0n`fndY~n9A0q=5Kz^O2n>IoXFxwC$pj)Di!P_Pm{0CGT$ zzg022ZI_%0Z(4s+8#Q*E6$ZC@N?%iZQm*F#cfN`_2^}WzvK@GkTcp?SDmBI&M+i4X zLt`KF55^FG@d$uy2&>AW2Udikan<<)@N?uy&4jpdJ?o2KPLEHIk&Xfg9P|_Lq}}^S>m1sI9!w%j_08~J?Mxwz#BorwbI^~lWP3Qp zl|#b_*fp}iyN^>`Z!81J0pd=>Nd{rguYTgBD{A+Z zuFLuAr+xM9{wvQKnn^->A=0}=rOzD$bR7yXMNl<`_z1A7!&nAzhs56yM4VZn-s_o< z>%edB%%cg!1UuDSlYoQS0*nRTy{&`*YkQI`ac6y5=NV2{{t6+~z9&3xxr-%TdaF@Uwf~y5BxF> z{|RXR@&)|aR8{9*fOl+U=;ebZ5xV8jH=@VqBLwNvreTu9fXG9>5z#iods=a_a5kU# zoEt?;qeLKCogK`vo@Mt?(Ho;RVTST+Kbr0AR$oaKS2133wO4NL7Fj{hU$*N{u;pI; zo;Q^Gy1bobXWHvte#JC$)WNCkTS_mEdEfboVg!s`REHDa;PyqJ7+e`^TVc!nXh9eU zrU_K`GyfZf(dda|Evwl)1CfDBt5_ks_7cEQO*$NW6OVUvJG&ms7`e$o$opuabT*b2 zOxI05-J$i6L77~(t)$Ba+2(QZ$T*kqEzwX?0WgM`Lvh+?-7c>k8w^} zoTO{VfB(4u;cX%Q``y8d{J)J)UjEPT?$(un`~W}`I5Ud-5r2=uUiUs!oV2%o5O@Rk zn_|#1Cj5D2z|#`nN^L!emV??5cFrl?=eZJCGBI01{Xzlk@Fvf@Dfc z*l~bT6r4EiI8$QJBT7y2bT&~UlCdnpN_9AD9gDiaIZ2h62{V6_h651M-V9@KqGIV- zZ1_H$sb>(+BJzUoKD5fkIQ(=moq{KDXgVQqCNQba{NXqMF7WP^R5cDBG4m49PSh|X z%os&LtQ9=3m4@~z-mwYB(Kz;*@I^2+UU;ZUxi@7;eD2S)kRz%SsBL%&7Hq-p%;=ER zkZN8@=$L1Iex&29)n<~3d4a}N!|wr0(iHF53BC_iE8cmS4xx?HH@)4WXrEvj0OZDU z`YM?aroku#q%DfH=4CWC0egT%6pEs{N-sz;ExzjuY*b6XN(EPb8kW52{U-ng7_Na$ zsNH|LaNOxddG;NuBjmnoOFvPB@01d#MKqDa0h8GB{$;cufr9HgW*kFmxxsc)v8Xz+;vbG1Fiz1C{l z1R$lxLl+K*kraRM{AtWyzz70Q8V#!0`EUSM4DcpI)N^Sy2 zV?v==w~2%yC9A#8{)aZH^@}^dsPe2#M^BgAYxvS$(`lF>+9J*0NzsaXTOr zH7eqE^yKbK?)%GU{m;twAINnhg#2~uf4+PB_CvA$=S%$eRz4N>AG5p9WdJfG01MEu z`~|E!%mSro0*JYlN?c?9S*>1^>aLFwy4kFl)Cv|qx;4@OiJfG%EHO-qnwAk6H@sRzCgfe3Bk>0;;PpQ@L$al z;PV?S*+@)@9@-)RM_=g?$tXbVJU>DD)EDOjkkuV%@ii)*LZ>THgV&NAyteevP&PZZ zPV~5oA=TDNc7o03(TE_>aiF}1M}lD_ZZU>g9;^Rau=&`q1OOz#aIP4YQvV6^miiw7 zj(OlGfGSqex25jL7&=NgdqgtR1`=EpJf@HLq0%2Y=YScesKDh?{b;b|Ri2RzyXz6f`5`&jv_EpP>We& zR7*LYPe?@o^BR?XAp~-tQFuqi&80XB&8Ru#p#!HCPDubbvx2(oL&X6ALr=m7P|eXK z2j9-(6fA%QkMS)CW*mt*r38!#7X26aUpR+0cBh4zYi0vO#>_z|V}bw~`WOttZ0gVY zhyfpt8J~(>#e|*gAiaTE4zAj+YQGR6W z`Fo!T@T-ZHzHEWlU)`2jF=W9-41^tZ56&Y5x7cMVNk&H@X%Yz+d?lWlITU}{F$A|0ix$}s6YoV^?98goOX}8 zU)a4xZZ;8gu^t@A&Fo(Ay{|-zJatqNB+X`wQ977T1PC2u6<1GL{tHcXw3ucsH+H&bS|T71I3^K;bNA>F|pTZ>Uq+HnW=6DW%75CRqI zl2|y?)Ko{f*Z7PSyTVxLszc?F46x! z{P;GH|M%|j!~To@w~bG&{>Qufyegnbw@M5A#5OpAxHpoolrd$q*3-uVV`RirXkOLf zF01QgC{q8Pltc{wDH&DEsOn`aSsOfQN5F1&1}lVMHzI|l@qjA?^=?vEE;|xWc^+Cy zYZS#*$um~gnz30|95YTTC58plS+=mD8`^~qaU`DhF}Mc&X0bsng7WH44K3UQNU4VqL~VQk4{KYW zblb*WZ;%(SL(4eqEs`>rK-{qJ-zyj)w>VG+ru5V&vSfZ+x0_Gm#~`iYe{0_S z+-`%b|MzQwSx^6`i0bw5{|`PWy}y9}e|Y$!|8L_{r~lLLKCAZ6A^Rn|KmX!yPvytk zvOn>YJH=Ee^#RB5#2R(MKW&X5-TV;B14;vk>lq>|O-YEK`rkL8Jv+ny18V<;@&7J# z|J5u+TiOfl{S8OoH$31iEq=op=*L{r85Ga$Q!RF5gzuVhZDmc{43u_$6nx(f?|atp zlOdk5RPEs;jg`yOcQ3^Onowki+4GvU>UM1rgRql4-Q7MWU5#yo| z9s(gcL`@sy2#QLcOmeeHF<>H$EDM{G!$&d2*G%Gg=BbUz1P``!L11`8rC}tLtdi=M zw4j~@Q>EC#&lZMRzH(gsUBBgv-XQ}HSkAAURZ%S%FIED-9XM&$>QU1C6X&}8x$rVPyRDBF3AA4!WF0gUd=FEj zI2GRRc>8&SmSZAIA=}BHNNf<&l4D+yeyTgzJ1C1&`Xi8QEBo1IEZI-br#6kBQ0EhA zLbw}pzm&=h+q6&T`u$hu$*WQO@84@vLH;XpZNq4_7eXy@B*})r$_@9?C&IExgVZ?@ zS2uYfmU|$|nT({({yEw6io!&N-uYxoXL~ACya)^7Q=2H zn(PT_nwQdW8Y+#3ib}d~oAGFOqLT|S0=zo{6)#)YKf*D}#g}YSqS=-(ivfS*uH;0za0;L2qqIh3P4q-SJuh}cf3qF7?3`UXQ=pF zOBWM2LsBbpTkGOMyqMM9pR>6j%f=~bCCvt>`W zw?xk*O@>YUA9?_5MLXaE1(W!3WBBX`t_X8b`|zRr@ZlyV;sX{_yXn9Yi;~KbzJ`A~ z6^7MVOCuT@3=-s&KB%mH;VT;?l$|tzF952v4LP&3%3+MDW#w1R;|QSuQk;Z$VT58h zs8O_9dYW#|yPks5BhX2m5LvlyHdsG&^yBiA9`=azS=&_ylruFl)ix|c)jH-hDCi8I zqG)r#NLPFm=m9zx3xlmnjqOsbVcy~-)*2=W)TFGYP{p}`gC+=T=y(G{9T6qwRxhu; zm-x@^dv}YME@20PQ4U$s9+5_t_+SSFt72|x6v2b=$XWJS>Dn=9>Rn)i2U<2s*+wD( z1w9$^s$2zF=hg{2@a8j8th;J}=rmx02S`3zBVchUKcpMmRKx?evoEpc*gEX48oII7 zwMaM1gT`@-u||F`AjYlY=cy1DSCSNO+oReSY%~>h2n0mZ5@v4;Wd#tK5g`%bjB-s% z3J`)h63<|uN33}P-x`Cu0gQpBe+9^t1n$Y;L86MJN~B;8?f_r8gQt0Xmbfzwrtp{r z_Chl|KRN$+dU4$U_#4da`s8M}gBLGkri7etq@f@Op|PkaQh>`#bt{u`JLQWJKoJ!i z?<0ab_D*uZSde#IycxX?sUXr=E7}V6qe2MXfCTClL{JZ9(AyT6Lk8tT7`ze!)d{u^ zw%n`eFMuvn_M#|yBitnkUh};>v_wt9f2yY+Sm(B(B1_c^$Cihvsi{~cAH-rvCQSSj zOO(nzqP~w35pMGX!v?Pb=GIua)be`iBF)qlV}-vx`jclhJHPNDfy(2L$H*9U~vC(ta3U*FmO zC|V6!F1w;SN_0^ITl=;{)MjKlIHnzsD~?ckv)gW( zEi^iLNbBV;30<_sJzaDb5A;>X5MG){)W+xAcPEhV=di9HDHZd?rwr!{2aOL@2e%l$ zIHZ$z2>*r?CI{@0kEI=J6wj0FzT!yHapMzp+a93TIx|hq$FhS_Gs7g^{$m>@(>OK z6O|4>(sw!K83a2XizZ>E;@Hn)qjYjj%XWYVJWS_Kiy@fFY^$PFLb*ix6`(WSw5h-T zDtees_FusOUM1-?Ja|QAm{s2Z8IA1{O5hw$hnAk<|8o<7uex84kKo_ESrB#4thtCD z&Vr|)t>fIZSz_oXBL{;p^XyndUBel-h3Fd3Ge_%MCfrjTs&+A260NNDZ96(_)js!v?>? z?=<`$ez$MW!Z^EaM9z*K;u)2q8oCS>4N`bRh`^~&oaYadI8D7l5{~WytKc9~lxC7t z6?_N=HO+a7Djz$c2{WFnl?%NSpLxSf#+HLhe9yNfu<$5=W6iwoKKwn#0D#9jlfjW@ zSGZ3G7F6cdF^lh#A4}ivwjzSy!Wx^K=&qZJC6k`r`Y333IP<;8*H9J&`y2Cev~NXV zdsb4?U=rjgN3~JHPK4!Jfk>-~k42x^@4@;&wGr2~J4kei=A2M*^JxqY!`WOL9NOCy zWT2a{DS%D2(wOjqbJ^&#a{LDyhx$y0bx|No@E_m8k2(Cu5AR;^|F`m~i2um#?sG+f zpCfEiqxuqvY@Unhciv?#fQuxW9c3be8M3QgtT-*4Wqx9})un6;$9pShyESP! zf?kf&9MS?0brntZEoXKeP3hKm(%m9)8OqEPm*wmc62sl0%2+E>m&~$2UV2H|Q zJ#o=wN~sHG_Q#buSC;?unShO32mkxv;Qhh-y!`j}-H$Kw-!?uK@}IN2&n5jigFx9Y zZ+(U1>7MB@SWED$;poNNfXnz}AYBU-n%bDgrv2(aw%o7cU-2Up-PmNe&egbNom+^u zo9S8qvGty1tyk!H!=iW%nJlG|CS%s<3wAZELUMw zNYrUAhzxAA#!h$ByX>9yKL17qfln{GXJ3y`pi1!3*;(&bEGC38ieMr}2}N>BopMc$ z4l-N4DB^M&_!0ToQF?-yHJYRo?$~mWI6$c3x^QYou?bEIKTy+nn57g^6i1c;j~3LH z-GCd%whNEZL^>x7A?^(cxM*IWTx~}i^U=Z^u#2r3=@Xo*=iX2eZr44aIXSA; zcINFtZN$#1bBUH6x@T}0@Zdv;RwU^yjK&Z;AWqBjHALc}DY@-83iSVz9RH1-`n)`_ z8kwvlJ(V5yO%jRBXgw)wGJ>%cuHx|U}eyG z!%EBl28Zx=r9AuswJqC3a(07JL)$cr(L;8MoZww*@7T}$j;=xv>u1W%<1A@E_R#jh z5Cf8e4b9M3b)mKgTwl97J%GkUrP=pA4S`i6t(Gs%Xwz#0ivnvQ%hKht``cTLszI!_ zK;fnr$RZLR*S1%uID*wyCf>-ZD5irP!Gu`j%=N#s42CHA6k)nsI?o&nL$Bn#eZ#|bW@nt@GzbXCE7i#J_DJAmI z1~%1MyxL8DQKtV?pZ5Ac7^M1;Io3@1|38+;|G#^;pV$BQKfLJwTlwVmf4#d~SN?U+ z9OW+=LvWEDjW8$=%&xz>nYt!aiLGkg|P!(>wRNy|bPgt<&+&!LAx^ zGy`A~5EVv9v#Aq((WS=5c?`V&pS?HlZX3z+MBm^36nO4)T9Sv#)Mop=tm>X4OUg8- zv^`1AWk!8?KoXQtCIJ=zN>=sh5AnX!e6WeT#Dqw@HG1yrEY6s1P zZP68HYa9I&p<}-J(hTm~Dz&u{IRIv@sIZelU!v8Q|ET^~W#RAtS|nBmi!q5=rkQ5CTl(mI`~Gc*ag=N3#Qt zGQj)gKaE(wKQ2!O$0wIJ9|xb#|8{=y+c~q`?DuD%PH*~`rzeFE7$AfB4}7@lAOBMP z_2p4t{Pk=9sQ8hK>t#={^}pcDle444qmKxK_+M#JvbJ~4in>@@+gKrhmIcsfDgo=Q zyPZ4}P`lE2WE>o@g|7O@b*dZVw8DsS&R*{2mW_`nMlU#i!Q<9kh$?+cS2ZV9aj)^(WCwU&$$xW3 zD_W}ZDRuz&r2zMa_=15h#TJ>RLJVtx;t| z>@p|jJIi|8rK>f^8INcVa_s`|&IM3IsdWy$k-Lz!?4-ZftNHw*iihwg1_rf! z7B|&?d5Mjp-o!dV@DH9KZvgk3P7E}bTRtDAfgMY&1JH4`H#5r_E_oL}i@Q=VTdd^* z5)ABI_9?nYZ!47pNvTfH<(QBDnD&B;3>PrWk^;@PhV@MKssYMl>J3tH7Hmcjlt88G z#ux$>L|)hybGt-n3{W|M@=4}0VjE_V3wPIZws+GV)vw9kWNTMbRGk*otg2pg9>_Z+ zEAtcBu7bujp}ff>QQldjC3^m0d#N?c2Kzi`#qzsKzDn8pbk$m?8b*4v1D!GeWMw_6 zkLb0U<^bPA|LA3U-qBm(scT*Zx%P{bo4pZ7G+l!$V2!wFIw1a+tBX&dX>1h@qzYQ_ z;Y2+2viiyeXS2fAO3U1GVYu05ZHHFX6WQA~SVkxzAXage)*_t=m8^e$V!e-j_i6*g zv(1{BnJX#H+|DIONkS;d*AeV42C0{U7O-jz;U0j%?k651&znfr5SA?TnqVW5Ntx8+ zXRNO=G4nE0K>RW-quh^V$o48WeTZ{}2vaE3H}j`%q`w@E#5%Z$nhka_gd$(&I-tM> zOOGrt@>?~7Ou!41NEF0gPU!)~*_VpH>Y`v$6^lu7r_vvl(xWBXUJjVLTARE%slpCQ zyQ6?2L#H#V)&K`dLatzl^++@?vFi4Lwujb1;z6j}*}6CDRC70uO^phdU(GKzRrC@D zf~UbxGK!-rxaeZ-3U_2oU`Rn2fIcFavCJIq2dKLGqlGwDy}Uk6WfbZOS~Xsn3L_mc zl?GE(x{1_-uKAeW8etww+-d1D^vp=$yvFg!4JHHEd=jq=+G&{&oZ%K!@4z}L6rV(K zT*bjVIULTWnf6tT3an6-AXynt%q6Rg`b^^D26wt)kfT8Kt`#Jru{qNFD~+*) z4<;nsJfp0iIvBUv${h0K&Zi65pp^v>PtwXTj!^^&NiZ=HD36CR~;zTe=WX-EB`k^Mp_Y-)=YhWMuoPT=q zSNGyVm4dXGHd7m-Sn&CTiugWbE_t^v-O(>mc@Fp)8 z-wO1WMWPaD1> zL{MAE2~PL}ph60+Q45T0d(5SycN zen!Y(IgP5%VY-U0t{+}n;gOl^a z52q)C>p!l~4$uE>S4I?hfe@&}01nTV#6gg!aO{C%AyHUUZx0fjU`T;B4+WlQWPcff zQ7VZ{=?thaSm>&$W#*;f{2SV^G_mOC5V8$N?}71BN}VdIL{{946VDx|a-NErhh>n- z=sXNSAl?IC#)s%QSVdX^*HnidxsK?mA1uE7g>6d&QWsO6Rt!IXa-douSN32=Th)eM z{1(sRe>G{B?0mW=sYRqfHtL99sO z4^Y#v3WYbII|(N!$vh__k!q&)a!HI=4NSIi!pVZ9_*3R%6+s|vv&^C^+IvqsX9V)G z!I;Jsw;fd9MzaPTC`N_mxSe^3m#ee62&UpbF!~`4bK*}EGz<&w(5Z)AThbcnf55=& zr2j3|{|++x-|pVQUZ?-H(K7lU>~8zIAB+lmA4&(?XylrRo1Oq6A*f zWLr%?nu{L@e(aA+%f1z;Z#k2=TiGO@HT=}2HyFTPpsTR)L>TF}=0pH%VK8@-d+_Xu ziOk&iGtR+GeuwXuk5o@XWymZ(VqC90@aGH2{1CS<9!2M~7X=%07pg+Eq zRjaiosrAcE2s!h^MQi~|vvNf{isi$FdRR*o-=vtL5wE2D7hc;H4zn*`c0C?Y?7 zMx4kER)0=#xYY5$8AXU_y0Xp6Eau9$EsrJI{Lop-5D7d_l?|O{n3?DjxEaQRx|GMk zHAU%&Q#%hG$Z-F3Rc$%#icpfbnYM7KUJ< zT!74o0b$bckY&g>@#j)~aEbo+?qK&_ zy8i3IyH5XWrRC~>>D~Q0`e1q%#eP9zZTz^ykFUTLND$4kLlYNJR}0Ub>TSJT`t0RE zf0uXyi>Iba;H+|PWo7@D`B2TW{VSPKW}PHbT6$6VkE#=uFS)Xr=B--Axi<5*f-ZYk&A_HK@# z)4;F2l+s>?%;aBHJ!MiYNgYRc+MqMkM(A)#>T-mDCQua!}1#bx?4Tghvxyk?!A1y~!JRm7EX1 zz-3Zb!(HXn^F@~zn0&Ez(`@#I`b~woH(d8s&Am)qtUvn~wKe3>V`p|)7qbJi?w6oS zr|e+Y6w@(V9!rFXb7A)=epqafxFrNX^#Hid3i?6WS(c*!H=p_~&KO@;R6kkb(SH6T*L5 zYjZZ?aL>aSU{#+W5IpB~+&HZV;msV?P^v8RgD7j_H*JQ(=g%VgMAR#s#4B=?*dc$mfi_;;Wq4(14Z_nh;M z&iQI5xa0sYl>uHz0Qjnm(lUK??6N&}xkS=`Au<0YIA$g5S;siP560P9`dV)F?SJCH zKxAKy3Q*lLF08 zI0&6%j6>y35UjAo;)iAFuhHGGh`bWJA37v-vVu;J$f=D4^%}yg4~P;-2=5*)k%greq-f2y$b2S1-4{vuxS>X(x%bJ2R`Ke#?SJUy-Ti$luI zeSU#1c}PI6%`I$OBo}5Y(H0$M=Z!zER9Gvu-T>oWZ7wBL>b#NvFyzrUL6ir!{Dxth zZ1DvnkeANiTt`);w1#w@UNgnz@+K;-D#SrXK+MvYCpZKlb>_ZRkF|t_c$IetgCtc! zxZ0udgjPTkTHPx@>z#5o)|lkV-dRoK<#)Q^MN3!7p5v0Yu4wwdoVp1hPcW|XJxJ`K z5E8vmXdZk=N00*`Zej`bGWJG*oF}c&t}|Q!7K{N%q22#NqS%OYJw%5H{xmdxPiF~Q&_g`kvn%sAdJYzp-k{Y2#I}DSs;YX@c;sA z2pL?}*~QeNjT_vAc!P^3NMsfl>oYSr$_#NZ=m+q?Mqe)d28?is&pLB2LgWsp)-d*< zRCUZahJK_$2{uvJoy*1Ef(3Z=gigpQ9AXb603;k){Yl6;nye7OtliPQSs)~#So=o; z8BkJ{gpI)NQX}vh(W`?526~lH{nXo{1STK5;nO=wRosA=6&oIq1!X7{L@b&>@U+~K zS}a~*y+LYl*dwe?A~ZoPd;z(EqQfIh{MnT6LEyO3%{(VK$zq0F3Zu|yL8Mywy9 z7^{*ybeP~QxsFPkR@84UC87kw0?LRYQ?@>m6ywLKLT5yXa&}1nfIFj^AivZ_fTRy= zNbt&{Cjjd5kr{xJl`yif%wkG`4AJJ%M!1j>b{DxwTtkK(;Y_DkEwQ!?!8zldGqeWj zFq3@|!NqbYHjIQrFyoN#3^1E%K0wqoO&Qx{obzS(p^@H1pHD&*3W z{ztG1hnoPYf=rnZa;_Y3rg$NnVHQU4#73`!; zuSF(gR*)%Jjx^+bj_jtuJ`dHg!BZPE!ar;QOI%ouA52f^{}jC3+z^>kSs-X>aC0&C zf-#0o3~RzhihcM%oHW4|eYX^+1-D6Es3dA#ZjJuV=xh*6lph|{X5+erE zT!k+Ii}ERkbn_X*At~+%JL}`}O1SyaB2EO8H5sw7jQ3%jWEdkqONaRv!4*xOuU+?q z7LEaU;$;b0K2{fq1$Uk^h4h$B`aNW>P9iSUeQ*7H%O0CXZk zZOvDFu`pWTJ&I0@_{pd24~84QXJLX6P#g0q?lr9u?YZG zt%_p>jnuiNvU=Azu1W2LlCC5XSq_jEF%fwWre+Us#^}b{Ew#*`!vt}| z)e@B+)9CD{twHkrP9^Ap4gW8l{`{hHY4g-crnvVXG2=c)nc0LMpqu451!cCiMU?Hyl{-mFpQRr!MBQ@eNpFx%ZU|6 zIFN7a&$a2wDz0|@gVcA`wkr)dO+;t@haUlGC%TeQ4qWOeP9P zEJMLwmr8afRtg;oA=MZ!gepgrEJMADLk_XTP@`H2=O1h<#5g%HuqrKiA2YAu1(i|uo&*!{oCs(PyIlQc9T(y}t9 z8MhABFTsbmddft~V5OT90Ln8SGpht|$;oOn5=Dk!Y*2uLB_f{2@=nmVp>cC$qHN$v z87hSI1g8gPdm&Q{jR9oX%}B`iceHNyNZcjy&7G3;o!DPSs+O2}Zt<$Ivmp*#>WyV8nPGL5lC+lf>B4Q_oUU7J*(C`O*| zlttQ=WswQe55)(fV%9UAVQ8XyRrC4U%)7GN*Gd8I|H`}{5@{LMug0cEc?J}9AewZ_*kZ6f{h;D}RPB%a8#yNSO+U>gp&xkH zsy8^*9^Kw$K5tbX6<>H!6omYpvcMjl^v{1iJk8u0$_0%{DQ2bJ+&WU|OfbhpHf40F ziZ%M$KVz39Pcxn#UBO_RGdtd781IOH>O<))7zvHQpFBDD;Uk}D`r!yJYf73q)P)Qs zn{^3jjPhR0x#0yzHbX)3KgueaYHE?)0VoTgDHw)T^~PG0?n$Sm(4c`!B1HXkDu0!N z3a?_QHUt#IvjF9uWNAlrrcF+4s0i{$b`i%}I0jqk7+w?;!m-dJ)K`O`U*;j{ss!SU z5Zao|r5Yl)-GP5o6|+a>&kU%6>%`r{q~hvm$G6N8wC06Kk>n0hSU<{k}}RW$F=0d{(LNp zk7_x;S_N0(C3+4^Dfadio3eF?imq2#9(E|fP$yo*Mq1sI-<6$y-kxsb^wsd~3C7R9U23qQj!V28m*^6EzRlJ=|7Sq;`6{FV zEy4eJ|MvacRQ}KY-rFw!rhmgTIWhJ}u;yr1><@n#s-fD0O%J zo3pw5>GZFE-P!6@^X|wW>=ynYa}}!J>}{<$`J;N~M-?f@6y-2Iq*i>rx~W$)nN%Kf zy@U=K6L#A$E2i9L&?Hqx{wDrYr<&Byx?nBv_S?uZS(;3wl-AtLi+UMF+N{>vURQYO zYU{Uj1u7<=JTDeA!`AJXsg#Ev#MWO>J zCzl)<4E;E(`nu?Z#Y6|G1alY&?MOO^(fMGeW|U9NxZ74SuW9&LJS~p?SUxHH{xs)B zdav5I;jWh1ozxTnOn{@*FC5 zEP(*y1!XC2vSDmX$M|BH8=8wCk_hZSnM63^s8pAjFG5}@hMPeg7z9(Y<^Y|SJ2&Iy z-c9sDkbiS!?#-`d>kLwHt#UzbD;7SBvEF(@v>t}jmadHyxfXxG*05*vm|kkF6a80@I=RRf^NF4myV>YmX*=n#oXq zo+of^Z`xZch4@9Bp`X&pDBE!}(GQ?(RDhVW< z`@}Nr%az4C5)PQ#!IcbxVS>SG8qNp-PeM+7G4>`6hm)zU{7r_cbg?SmajZ(C_>Un$ zZ&pQsEsy_ryL+(rJ{AA5C;rjJf3(qZ;y-wIzeeZ>4~;X1&cMP!Lzr$JUa!Kl%OmND1(f?bH&PA^$YOxwkKaxbPiS)ln0oWY7+s?*Jwnm3^!0r5+g%<1%~ z5@}>K4jHn?V%90v!6X6*HxZ^OhuR&@NzCdeNQJ;MG) zqMsS)m%YlX-!{{@ z^ci=F*JJOnT>SZ80I#szZkBdfJR?0KWh1onBNR2t>wv6~Oxfz~oF5C3edUTB2>b{0nOn$zy0>^vxE035Zdqf*c;y zxsifzp1AwjM?GO8U+|j}dXYcDqZ@g8;f6R=BV#q~4K`Sj{t0RzQKZ9+0cC9@CekRE z#oRULR$@;l=^IhXlB{iM!C+I}{)l%%&jExW3!HR1Ax;N4JH+T@wpd-H1xKYQvBY?) zXy%5ioJ4A#ztSO}J4t=sOJ_+EteoW)NrzldUQ@GlNM2maus3zxq6~q;Enk$T34vwu zyM-$>(ZmzG@*_sZO})f}cVJol)~ZAbZ+Z_PtXT;d!l-cRLuewW^}lfhO~sG zDSdr*JjnMyqgtj~kJkDwQJWFRz~sl*6-3|BkH?i&LSJiyfYAw*V-zt~!Q92OR~%l> z{}63KAa-h-iE&YIoMzE&gP-GtHhnVGqO^p?LIiwF?8pd5WAWS$XB9KpB>nD_t`9;= zF}&@_1&xP0GHsh@6nH`Q@v`y zXN63#81e8MG3qYBR`QuEa!n>&82l#{lPZ5-xMoTRL~=zfSE;tB)sv2`qLE<`$~Bpj|5l`r93NB}Xu7R=uQy1A41kZs_LXFarHs6gV_U^=!i zwDqkCCH!vRrEJ0ue|>iVXh4_0#Y>=c2BcQdZDJi}0rXm4hrys|yF zB+|gyJcVlRJ?CekgnYO@-s+`e8O`VeXY;WCd(ZiJx&2A}&vgi(b>dq1O)P8p7;hr5VQ|kAe|`3r4G>;qek$ z1e5}xYZBuvZsu6p#%ghm<7TnYrI@rTKhtxlAUoBKlTr+>gqZ&(|BhBB;QC=alEPQU zGy*8x2abfX_yYyn!JXY{NSp?CYWEPnO=z3MTlAJ(rNh!7q7C9MHs#k>i z!w~_!{7Q&1pNW%rvw8BQy$K4=9SVSjpkC8v{C;+-%-OUSHy``gLdd;2Is3O= z>6WOBYycX;8^FTmn=Hejiw1R0kR4{`pWy^=p40sSLMI^II@@#$WK!?KB2R@w<@(o@` ziE=Skj5g&oqM=x?B!uc0D^@ajZDe}8l$R^t9H>=wRTzK->w=NcJDIhBq@9v08SDH) z{8A2<6*ea%FJsmurxzyC6G!D^=#F8H&hu&(IyHK-QbL}BXs7A<$%d|)))oaA@jtnQ zFpv)LuSpN$L_7b>52k+L{l_guw2BXC>i?m2&Q;LM&wdn(2`22@R{Sag^ z`v1_0Mpq@S?3g4i$hzm zAv)g-t0YZ)tTC^=W2U^Q4L^q2UD6ep-of`p+58}Kx-%#dAOB>`f*}A@ETx<-+o#Oh zbmUFb-55241E;Xv|&v6rLc4MevxOv%Q-s?LsnuF6x3J zhxuECGmv!wr1A*!!Ku^BNYB2UMP%XVlx%R%0izQz$p>%xRCz5m!&K`@WlKSanWjjG zlXP*F3bzqCraK)iAZ2vS@2}oc)tRDAvv)#Kc#^K4m_Evi_4cfmK1w;g5>;Q2+h^GLFJ4ZCKhXSZ@nv+{G2=Hm@T&N= zI~s-2*w<(sndzpPxn@j7^Xfy*Ikt|*W;J&?n3Fy(}>D+Gh$pMstZVT4a;jFwMefT09;fw#e!Q;x=@q;|3zsF1|m;7N>DHtfMM zY2xT-A&E7lpuT{J1?)G1a?rGtUVC2!Q})P$YhIJ&J46T}kkAu0>2i!2g-gR7I(Cgn z%34f;8I!yiSHL6E1g*Cm%pYRAeX|<3O}o_vw3n2?WZBN*OI1l_Q<-3zA6cOlmz9fJ z%T%L3i`-Qf2%3?<_~Ioz8VOJ&-}KVew&}9SEc7i)0*JNGgq)3hsdK!mm2Hukjt&pf z22|VoXolFx`4xxyG@6wq=HZkGjY!*`p%(RL9TUN4!64bd^N~-f+MfD$=MCGW@E0E6 zj?)Id6pp#jsyvn$d>t=lB)md|Juz7sA*F1h7$hI-$P6$E^K`hc?V$@(u);Ldsn7Yc zmlwEW1ymZQq7tzZmyv^klnbToV9Cf=D?Ya$(6WQ=z=|73**=foEIVt~IWx|eDWby# zsl@aZNcvV_Ky`s$ITE#~>ra-gp%GoT+>&`a>5F$YX-A$!xvEGNa6O}gNRmWc80%?B z`@Gg0sxQ4Ykrw$2#doA(9gATutco^!hU_2Yb2`mU;K(_fB>n`7$jeqg&u_2$GxvrT znM%;9Ds{Hv_ZR)Tt5*O1Bsxy6jAN#Ox0wU}!jg}sS}Usb1tgwM&iRJqoZM~iFXi#J z0{4AN7vP0*q(fJwZOz=zz$n3S0BBL-HOg3S5*7+=mFsFmv~7BkH#=8vM!4f*BXCSP0`DRHEOJ`lq18Pl5l%nNQsW@z>ZfnZurTA7b04iV_~CS= z!Zb9g&<%0gng(f<{Jvu7Md=}GVBK2j0l8-5bh(tb%#uYQhY-D1^T0qkqmN$4NN(AV}v~Sq8WtyeHGE+s}tC_OGGPEpS~VxW#p&EB(=VWq&U;LZCRnK zBE0HWAOAIYm`$r9zfvp5f8BZa_FylC|GK-=)&Fg$rSV^3cUwn(g+T%H6>}=k3q16( zLuHRT|FwVIKcrH?9%dSy`oqYLo=SjWm%@Z{bg6~X22(-P;n;idM;^mopeb$X{Rh82 zrk?=}KKx+j&i`O$GGtJ}X;?_UgVUtUp@nD6**yRC>~yP6f`f6i%Fflw z4^_ojWEnamGj@frq=G5fdYOtp8BIg7qQO$|JfL&>i>0J%1iiQHL_Eqij6&I)LupS< zTeVAiCabgDQK()dOWv?4D(7bep)WRmbgzdK|At&WDqry9g*pmjFX04KX+y@@0JK3E zV4^jf+8|*_nW>$0e6tKk4>X++L5N}_xSqlE z<3wmgJ&7PwLa>`AFi{ouV&VN{D&puIV0>`^#zHD$)4b)~Wk`R_W&KMEZ4Qm6jH?A! zbJqd5uuQCUA(tw7lZO1MCQ*?V3-DpIZ?sb>2!$n-RHz5s6c2!8%QWWEiKE<;3InM+ zOFo2_1s=mPK*|Or_?ZbNUzH4HSqv`#6+Vv+DL5|a_)zU zaHuIqc{Mfd{G2W*qlVy<<_4I$DYz+?PJ=wt$eV$)3`(QC0QprV4TC7;-ct^BIE0XK zFONL*?lFb%FB=g^XG*|UU;k&pqlO7!iT=NPAawqe{{MDwr_=x2XlebQceiyDfD~tM zw;c(ui51TlTubv%78#36H2z~ZarN&?^nSaRniv~zsEj5|nJv}@isjoD`H!dj1!;Z| z>u1dxCVlm&!Sk5EuTj2EO0xH0E9H~5p#k2_zOTo zvq(e0%(;DPExTjSEwrZmAN)gA?|>!z9}0k_>wk$Wq2vE;w0!=LyZe>y036%A2dcs> zms|{0xovK|XP&Vwhx=#x$T~e!U)Ag{wj zH6sP2$-vw=e6Hozw!s;%;cT)QFM}Jt zWttob_t~YO3eX%;pT*^tK&!M0J{xxtN(9h+?(PlOag2fGk1m&Z=Q^2;y=ASWjJY#w zGLTM4W*|StzcqB5%P^8oR(dfJdd?0tcw0aJswW3&c% zLkj9J4c8Po;$pCH!Q)2yB|Q!&Ba$d{hNNVwSLJ@G5Fh25+E9`WX~5mr+b^@Hrhi z6dRNMmmN8-tZe{OKBBin7+t&ULu}Q3h&u(VYgTKn|0MuTSV;ve*Z+3+_ID3b`rrQU z?tZ8Lwb6?7Kib`|rUKINpatfzHdYL8NF23{gCwM1)6bt18$?+JqkHk*X)Bi)mM3V3 zyr?h9PbU6aS`$+D7tBS6$pm|(QH9n-MH^@=mDNDCm$F_x@dpLVisc%LTf5TWXwF>K z;O3g?4m`-@OTwt$~`ojVEEmc=MzTk?ul*I?UX^Lt37m3r0o3@{qO)nh(DQh_ZH0 z!4a$w$3!zWi{cs>f#6O&i99Yn$z>tnsGTlmLjsS0wH0bRhOq;(A84Nn3FtBM6QP)r zUm6f@#X&%19WGR;@DI_;JOrjHf3k@Qg~4dL7)!4>r%~MA?rfDNZ)LdI3Rzjs5kWn> z@!=5nN`k?CW)0O8f9KkIHck+&4V+6HW?R+$F^zd32nB_Lb_uny&^8uG{~s4CS=o*k3s$=1NhIG9BQ9lK z03JS7%8TB(CnzduNP?Mr)|k32G&swo2B(r-;}i-u)(!{eZc?cV&Azxs1b(G=i6wDI z3g?o?ZCr}&aqqkhIMo}cyFSwP25obaiTpt;GW2%_kxdL#5AZ45f*W{2>_aM0kBzu| z4--P?)JqT#!ZnGE_hhVMrA#)0AJ`{XCPGt`GA=2~Z)6?T$xoUaXj8j*IFH@;@Ytw0 zEMjfM-RW=U{nkZbTmpOt9P2wkp8r(tJ#HKHLH+GWz0;O51d0XU-qn<+W~X3k7*vGWpAjyHH`)X%Jiyt^AmqtI%biUDK11+7 za96M~QAa(ya4y^!OJUK2Zd^(tOLLw1-~(1No?NVWrwu0E!12C_s|BLhA6S16Wv!V<*naV*C>N)Dm29?5^vhF= z8nU-)T9KpFq9tq%4jIZV^otgF8xG6244r41>n*24&^%=7xAl9PXez2Q6)tK>H$f<0 zH{@DwlEX=#E7#32Y5=;CV7d_Ii2(2_srBZM%ag(J$>q(*!Kd@TonQQR&ctWbEtJD5 zoKRdPoO4VS7E@eC5R(wiVN_y$rYRg(VJoMuIr4`u!ad*F#^`CB0 z9RY@h{t{#U8A9V1S@Qp7Ol8UK3+2=K#nti26+$^ZBRtnGI12m_C1v7@p5=5;eYqrH zE8Fo96^5do&2MXWO{qTxJsV#p`HN-Lo-bUm?4Vlo`%k?$7a#t|;Oy||WB>f*ma>S9 zFD?&{{&x6F&KE})S9yP9`|!TL|QyM z{2h+Lf90In<@A+0JUFT=mnY{xABtHY zT^Buae0Es$)zJk&P?>LPvXZ5KS<4v*iD}~Ep$lV~Gj_L7^@P9n8adeT<`LhD3&t;Z zw8>j2?+Ria_E&IHhBN@i^0!A@dMK>37p+9); z3{;14_!!W?w$Q;4VE!R>m5pM1?(IscD9UtIWq^8Dq4mbDcI4>gH||E1V~Y1-`TDPD zg)eKA#!fLW=ay=oehlMe8^^}?rrvvG^^;ZE9XTr+wYXzQ+vI-5pP6p;t}Q(d1v_5% zg{?b8PVG}b7D^nl@RjuaB7cWDX;pq?Ts-o({eW_$;P8+IcGJvhHHz|Ym90|hOfNgO zb(hPyY~;i*(v@6>VlJN*e2F-w=s6Fk;vrqvSWm*rYu<>*F4^D4?w39B_09&^wGcd_ za81=ES2!j3u4u%cc4!!K2mNvi=9l@@ed;+IBcbi6Z*UII@zt5NfQ8fHi?wh{ftNrL z#G+||$z#Jy?sqm!{F`bkVO-jU!-sP(n7D%KMsevBX45YR12Kty0QcSpFn4}DIuvVj zKk;|ri;G#{Z(q8}y`Cp|7KUGZ@%3R6#y@@lP>&D4_u;2iUqXl#g_9r8T*1!o;EpYu zyLfB|DoBcHKyUD8;7zMefP|OAIgG+>U6ZKjY{4pzraSr&iEe_UQ$-vbqs7=&Umkrr zKC~~D>r!PZMck>F2$R5V!{#y8sT0zNF0vm+V=6x_CIWKB)Jwbo;YrDKErV(RmgW&| zqgcAFNY+svC@R7Ee*-edQ@B778}bgLtU^Le4>LE)1RibhHLZ(vnH4LSatqHimcn5U z5)y`}6LZ1jM`MiTd_dy*e@tdFBN|IUPqz_8W#@Df&?q@ z04B~RpU3zfWMa53V_0qRu9u%+(9f;{BiEb0RlK0;GP$IufjER*kRWs0Jf*I-oJ-jk zP7C~Q-e{4U6;25QEh3N37QQt>A!R3J#Lmc~M=q7a6$0M%*$wuyb(;d*jiKhb7pvo^ za`9l|kRTxbg(h?=_QuX{j79<9fFOk9V&$0CrIie?>rq+F`ll- z4O&V9RevQ^m0%nbF+U9MKy3zJK9-*B!fjw1j@*k=^qK8CC}=?i7M9eu$oXE}&0bD7 zd-c27&*^5rem4g>-5k{K=50azUrx2k4L?5Ss{ zJ_VGB9J4`0*W3m55&YfchGfNjXC?oDYUZu`v zHmbl}Edadof-&a!O5DYCCLAAG+IykG*SuKH=uMm7EzZaA5v3wd-@_kKuVft{F^puQ z*oXj#Od(7K2BDoqAKOfL1tvo?2sUGDNf2#V8reU;mbsYl$W$C|E$U(_AHJKI8-7Q@ zgMujGV&|vE-q@#D8}8Klg&fczDq1#*lX7JwOJ0P8Vf{CQYXN;cnyFu6CiB$)EaeS@ zMl?$qcX$sasK<6Xsg68~WsC;>CbT0zA}OT5w|Bzz-fU3~qoCO&1Cq_Pxc1Tnm%6m{HJ z`*-Y<6$p{C=Q)l>DZO*F7X?4hyAk76#q=EMc8(^5AiBnky=-W)rk_2aG_T>t)_Wl8AMM;S4 zQ|QGm=XM3oKfNflisl+o#JjhYwTSyKwKGl>l+WxL&-82*B{$B02t;6HF4)o7h+;OM z!`p14QX+HX0i4aDH*&$mE-QnXY9yT*y0#2I!k@D?WPirzKm9S1yja83r(|wU^IS@5D@#TQhW9moW9vY|048l=Y-K6g@%7)twH=Z z`Y-ELfLen8vh#j-CyoES|8}p7|8ApY;=gfs+mHOlVT)@(k&k@U#hz$Xvk1a`@WRZ}Xrh8&{&r zPViZ^sAS1M`mynad=L0|r88~3lC9UPvI0c3^A(iT!?R-oMWxzR{G_VALoxYgX&x9| zI+-N(<(D1uBV)wog|CVZ^2$%~%a^{g_Q6?g@vG9lze3#|p3nDE0IPrp7!XOoqbmYpI@Sfv~u94!=T`zBalZjEqC0L2iLHHPaBkZrO!ed3(<+9Ra*3lqeJBAXA z^Hx?C$>iIAqS|H4j^yek&ljw3W^)-CHcA}GfKYD2+fqV@JrZF%D-tv-o!M)G?+cVc zzp&_(jn)`9q`R7ET2x&Wu*^h;Z2<4Q{qt8$Yrr{*X!@J0nO04{S32}k1=`7K&`wH) zc2YVta=EJ1$fz(VLh?wWd-KZZAIFs>a0$*->x%g^7&x2R|2RuzHT8eQcWL|I-v0Zp z{(CDe&;G}|`&Ep9GXJR568JMcv}$vpKYVCvaN}BL&;v7&H~tV=*J`b9sVOR{2aq-^ z8ng^dE`JEWTir~aw^m=puJ*H)?-o0oI;pLv^VlFe>AZi`1Bj*P)q&4FW6c)LS$4u+ z-Xf+iOPtHfEMfMpnEl%u#M@CrK~()T(+~alPizFsBiS4aSQ(G`GnIhPdynT(+Dq$z z#fN@{>R(ODda?TO&!oe)%rUv_x^5Zx73yvEO(kX2TvJ?dSYBwC4q(VJ9T}E#UXC0p z-2Q9?!R6z!@Ixhi&8A=84t9DDCBnn+0)GU5{KFsaJd3FAc}QzKBZf;IB~%boo6elu zxSsw*hLvy9e)8P}GS%1rqj=`miT+&dI1h3GhhRMu5n0bnvs%>WD0)BfH-Ts041_g=O3pPpKyh#Px~E1bx) z#&1pOmlwZKa+tV_e~nGuou#YYzpWtBey0R5mGx7BA2xxzcY_r zbg)fImyC0%Yy?=6|MTwPeY*bh-tJyk|GAZx*8kP+wr&JaBV*NP01l9x^qM{vyhaHR z$9_BtAG}iSzkXQ)bxkSW6b~j-_b!96esghoaeDE~AA_Tdv&)O~lk=PF!Oy3MzYIQ{ z9v=Pew2v_FD*!mRkP_ycl~i!6sv@iUdZow2@5Bu&{=2-mu{m7)6o|za46Ej#xut){ zT9dCgi!Zb3D#jPx%-!U^_Sjs55W{~KAzn4kMyvRXU{~f<+`%b)Z;~C;==#z2b9Op%<*IY z`udOSo0Bv9g}JaB!Un@WXNUCT0R$40mT%M&dk&C(DNkp8;%6WWPGg_DaZIOc870!1 z)Po>iesMUr45~JDN1qWl24!KWY?&A`GoG2D2ipxcoo4tR1uyoZ`~}zRG6K*&EIX>G zpzz%o3ENcAg}P(-KojX4l{T}SJ}L2q>|l(Ifqi2d$~1IYRm@eV2=zewd}ZlkT_qAA zyEha$FkUt-+9sDmaAL;RsFXYlsQfWjRQ!tDDPajXCuMza!PMYBggyW^&LKtU0hJ}quJwwuDfu=7PYOWhx_GYs0S}`)21RiZ zunm=PG-UN?)GUq7g_l%D7)ol@#=nANK8LvU=ZH`QWP`v~j3dJDY^%#+1s{Cxkv;N= zkrEJ2CmS()@^_53f$F)qT_zrCq44AMb(lH?s1}kXUtWrUw*q5*P1O;qB2q#-9$X{@$meZ3W$nl0vC{coZtLl96sv&6*chou8DJl zU3gIxgtDrrc<+<*3vt&$XX@8%RV5HwnQMm$G8500Kt#orbaU_D6${`v@(G$-azp}{ z-!Fu?mFq}T8%VZd%!yFFquCBXw%n1o9eaXJp!tJ2rr6}a0!YwLR6_sX(?+u}U6ecm zl~OFH=gLyEFuOyL8WC%V*+)2oy7>S!S2!+>7;gz8q#Yu<7~O|R7q05kLNLbo8o3O9 z3c?s>EcWF(y@Ebgqmrjcie+hOPzszGc}-mmY|NGURZ^zC)unhdYma5C=jcR-T0B%g zpKR;W%I|^*=8yH>iUTw8?-nFn_4uf!F|u}$g(bT3^>WhapZ|JzDklpREX8@Ve`Tsv z72V-B&OLa40R}^eL*8^6^9EAM1Th}|&QBD-{Ucm#fSU*}2w8N(4<5qLd02$-YvO9C zSXgtp&-W-7@+Xo20zn+UhnF91pAhIgz*vgH2On^(yxCkFZgKX>(jSJOC5RQiB+JV} z$S|4Vh5CfFDowsx*oi#BjHK8-7qXTgE@JUE(!i>p+=P1P!P6GO?4>U-Yg?4^v2~_3@y>uRq%hL@5C_o$fLy>oyPD(98i1=rk1rJ){Ij} zFf&|F;$Rm0f}4Hf`qKqX8+3l_e3%}Y3?DGD?sHDRkXWO!o45mVrVK`mnli_=;BeLtw6BDAW;K_;Prz;!#75Sdy=n<_$6%IpOaIP1@R>ektxQR;+gE&R1|KcB=|G$lv@&Ci_ zw(t9gQNizjEo2qL67PGUA0>})TPthna{~S?4=awU843ilkpxjKk{x7>LE^lj-^_D; zAxpiysX07Geo`@!AG(>0rG*+I>E0a-5@hRQ(FO1CIcTzfGn={dfjb^Y$i8{jH0hPh z*&T=T()@@w@}Kh-W?eav0IEx9k2Tj`Lzzj|W>j}m<_Kavg#`-}Q0fBIc`S_yFS3nN z!kEiWZd(GZ83jIb<3wA#DGYAnN8-PCo{Z*Xs5rYTSPi_hg#J$Cf<;K>bZtSl@RX-Q zwE=A^k&^(^tMlMT2sh57iW#_M%Xdk0aAYwv1y_er+|#MCP@6(Z3h>5N-SMV+apvhQ zc9UStH%nX`z&D0CgW;2e6h~PLeDxFuD?0iSdin9MbASBr;>w!GxISn#PI(h9f{}ve zlP?U&BjAh_I+7o-4g%tly~du>od_yj?3tffp5i=emO{2z_=o0?*w)ZX^<9-i=FDj`-HD2UjYjaP?!O~1Rvm%_rTuiJ(Pda`yxa&>TT)U zH1kg9O`@2`I8B(0(}2t1MjYZ~T)Eh?xSw2eI5RS*fvrU1E}iqg;PdpF0m1Pe8bUD= z7+Lg{RLy-Ss0Nmjx;}m;*U>h67|*j*Pt)-|hh=5zL(Zt{oj?IU)1nHMB7Ggl3uF|9 zPtu#6-7$WElS?>>SGHO0HI^{w} z<~qjS9h!S(@Dpq-{c=p@cIe6x69w1&7;UZ~YbG3fOeYb)ROj+mBJEkm3_~apTLi@- zW1&Gkvfo>r;5qDOl4h{*Q}cYM&OxOKqff4AqVk6Fu!IlH172wk^kol(?%VoPxv6lv;e$2QDxb}65(jtIk-%~T%F;}nP%;bfb=<--bqyUua!Rj)! z5^1K51`pJ#$7+miwOI>FdlZMk;y?LmS5QY5j&g+IB%?ylzB}{>qkE4nCn=LmMSIVO zPuG9Q@VOL+lgC5Wh95o^oeb+Z_%W3Ku>=fbAq_`;q4kNtC{sr_XJ|V2dSplj*nmu$ zJ8xTPDR2>>(}W%SltrFL{F|HX|*A^?v%Fq!huEMi8td=n)qJt?VIo**97l*#OQ>YHL zQvOnT7jUwx)DjzuLdUEJSsD}SLiYAaIq1d%dn~0S&6deTW7T<5lI}Eo!T=~%#?)_Q zDYnS_7VquEUWdwexOhLMk0>2f8|O)}Bwky1ziJxO~U#e_|hI4Alp&Wg#T=;z2JPP9sWWBeHI>4p`-z@(4 z=eSm#Ht*HWg8$W81N*-WI3l-a1y8^-{GYu{{jdG~gAV_vm6oyp+q>JoC%_&bd;%w5 zr2qCtdj$j^Qel@blLN?pe>EY@8i|Wj0Z)Fvytum2VVvZiJ--lN+?<>rpB!Tq&1+_p zm4AJBb8}ViN5AgYdc6P3`Nh=<)V#g8`r~%BX^ZJKtmfIEfE8(LWl2>0bLs`FF#WG6 zpQz+~SZPIQhgL^8&WjZWgO-tk#4#=qse5s?0eX;^Jh=V1858)YR`Ji{_ai71om z#$aJ^s@lt0F{gWDs=Mq$+(ZnoY<+(OU)~xOMU~#?PjpI-72;~dI+I{RQ51i5c11t` zFTHr}cS8!3uXIe>J#!xnI5!IPAiTj{05Cl1uheUiVD=-uIvm~@M4-!0W-X5uz47i& zlUM$AH?@BxlA}0z?~BtCjqWim5OQ)xjLk#C!k}Mp5scWcB*DavJFDz>MAi^oC8198 zdV;TEYL*MfXJIU^tc{ZT%p3b4T+1I*sUR*Pw36jh@1cc!&Uk`ACFl+_b*u{QDuoO0 zD*X;|lRdDQZvNTh)wJWU9IX21>3!phzx(}C6!fwrLfxvIGiW_mik6htP6hhzFYDy;~ltE7ylBhyeX7b{z>%}-=#TKqJd0l?s>G+YsK z6oJsr{CK2UAzA^D^v3D54Vj??gsqcwn1*Es@;wfn-JQLIZLlRti-k`1oI;YY;{}-7 zZi^j8JPoV*4=&w( zI;D-7J3hHSK>(nCb2fKBo&NQ&`&+#wJqtl_SZhnF{lv;Otb@~8S2rXpXw z2$(irumXptrx(9*r-(_{%l%IL^YBznqJMFIUHItHr|X-GvlW{dF>-VsC>w0_#c%gep?Lgtfnf&AWsNzGa<}@iFN3=%T+D0C?3wFOceuQTz&@59BzW8%j|Yf`fd2w;Gnvg`#wlkG1-MRRWT1rqb71a=P2(G9Tg!yJ7`n zp(V*zviSLLV*4; zC=1WY&>KO3F<7#ud;(2m8`PPtABYPEf*8bg2o_h^fAN=&Uq`6g2gA$-Yl4;$3loat zAC}2?xo4u_as8$;4fjdj*^ZG&%i#RV()Zc(=IRZ(@{s&h%%%^3qKy!b$>%r({**Zq zZ7uiO?5#8MZ-rO4CEJQSeTG~0(wmK4y})j35nWvv@UmzMQZo-7FfBm@n>2~~5erDM zIc*u|Bgu~q!2Jm)6vN9%%M=KH)+lB_(s-LcOy$?=Usx{%cCHtHClg8<_IDWh<2$eZ z>(wgMT#Mc$u|V<|x>gtWkWbbf)Ku$h?c=+v1vCW|~gWOMG8VSrH1>cn;3SWC(%{M4??vVKU&8XHU9-w(DrCtC|GC1klVVJi* z_I}|7^%zE<6&P)ignfQ=`sw&&aNNH}Vf5q}W(*ECy z<+~VUrm}`Gz%ae?5ERPqYu33apm6hPUR=x3)R!(7p%y$zHzcxo1Ij_GAq1amLkBw1 zBEXb4Ou^Ej@t9fY9N~e>^J_`LpCc|H=@2g^cNUsS6KTD)Fpw3+9dz&TRmoVtI)tBy zEh01&z@POZaQIftU&;v?U&^p@i0)ao3{Hp}Q+XntlfYV}nTRNE8oKIiHv9{3hm++( zln?7_Mww<{Maxuh>F_8z*EPoLS@JrE;jDqpfh^8pmkJOneWxx%gxlLMXprD40Z> zKs3cx`oz0{=)EmbO~5Fs_9cXBO^GUD#wfS=ksOPC%%)NUE>v|#;9h|^!na&v^s5ib zrgrI${g^pL4+8I@FboX52tEhlV<4$&i-kzsZIW56+q}2Tw8oe|z^H|&6+dD1DNu|- z*f6#gj{zjqAaLkZ?rY2kMCS{lD;9Rd4J=cNrl%113%EQSb4d7>gbhA*e~N+bdhIdS z6VQF|xZ*LwJ;!m~2}lX)(_&ujAl@y85Ptz2~b88 zY{BY?&6!W34pKPt5{v-yrilG2UU~x;Yy;#jJh5Q(LrCLE$k8@hRv;KUc-JGcm%xKR z5>7aTzX%!;TtF3|8ILo}QSK@{%{LD&N$y(UDM1lf=#PV$Cw2;dkzNfIb$7JOa`BvD zt1%J=1Bq~Bkf&o95p<^V@lF0DuO}HlL(96YlN@zf*;M$A3cX>*lEmJ0VxoDmAw9Wk^qI?W6|Igdet&n*pzbmRPW*1?%Y+-R9Y9#| zqG?nt&CHqIyHl*?I3!4EH)1o!#C-@OLI{TFCqG7RLcdfQ>6nWyJ&MaBOq60Ek0C~S zSm3Gh5fyt8=%Mwm^wvCL@LzOC_82{XFl{W-n8;i{K-w^Hb2MGr?}My=Qx7DI5rEzX z3!;Ovj9{@XL%cDHN+s&ueTL;SW(ZLrVIa8dD3O{Uo)VSS6?tBMx8{v(mr2^rOI+O4 z;_M%nCxf5+r#B~8gTI}eTn^4J&H+&E{EIZXw=)LM%&h0!!E)de{*nxnAy z8ATZ31^5i%%J7-3%wc9B=!3lFI%sN=rv}tJA;e75tBrAINNVQeQbU$m$QT?bi2}h) z?DHzKrD7jX4u_FF@l08@fE#o^=U`y!0ZSN&87b1S0;76JzHmg4e=7O#$rcdx30Dx% zIZ=wp?_8yfs=3P{G|ZY=T`0rmm<$8|9}5V(jKY{eqb<9epQ~}nwKmev zlF+!yVQ|_m90Zp{5( z#i&S(XP0JnbzFOnmq29X777T&jB$t5^f4ly{Y@kK27$=65Y11ZGtvq#l9VfsxXyKjD**7K&7JJ&EmOPF%h?PzKx+Wa8yv;C7V}Op zb-LuVvK{TkgKGG&%ihcb%XbJ}HmY#7(rxkN6y$_MJikmkhKyY<5T5USl9ij4>ufXE zqqZgayPS%uY<~Go6i~Lq(iyZ!jYjlI}|7S@}Unntx~gM~W28 zF@{*)E5SY?`DEnH6Ds}bj!j>SB_ib904Bz0Y2Nk@T$m}O{tCDrelTAoj`HT3>`>3m zH>|ZPi5?d=_R7aPzc@QNOTq8z)OE?18TB?ZXyj!iXgw;3H9GQ~7-vo3Cj!{T$`dSq za=fQ|C+_zy61|mHKmPlXs^!!O0AG^-eQh&p ztA|S!IZX7!A4urbu-`x)}hn9OL zN!cYFb^{7i#`O#t6cn=`Ri>eI`Uyb|>;ZT8h4VLx(uJ|M9+CCZN|B|H(5xg?PSjpN z+zuy@!N(Rsd_`pgp`S^?MJiZ^hZx>g$S&@kkuQ9B**9?Kzkn$Lac6bi1a}DPci~&f z=t~0zKX$;80$LUMAAMCbpT#gK|A7}<<;O~6n;1TxyP}g2jo(t0DLWSRV{w*HYhzNi zAjfpVVcF#KJjFXGW{5>Bv$`nvqI4!$(xSrJkw%wn7NVsUX$O9$l0OsFCP*@va4Nz6 zO&_@~u1i&Le?L3jDm7s&=Uc5YEo;{>!<5b&lhz9Z7AhS>Ij@}4C%)R=H4T5+Gnjg5 zt+Aj9{c9Z3PA7PFt1th5nN2GrKT%tf|GBsOE-nA>?H+XbpRKgC{I7Pmbqzp`T!#51 zxWJ2|J&8$F#CZ}kG2oV705l28@m10WOdlavD12uAV!Gs2#d+Wi-l$&@_~@Goz)j|i z5RFugHHkd0**w&bmJgyjip_dbya=+MRJF08E7{>@FP{p3TC{T@w1tm@)PPmg_=TOk4@%0fYNjC4!*^yS2;7O8f10OjQpuMGi|=; zSH(`Vxort*8q^z0)J1UnT)Z^t(Y<{(QkroK$m|%#1HvhDeH4&y(LXH&QBwUM(g;+9 z3L~MPgrYt3V|H?w4L=*`4ZGQhVqj4$2(*;skg z@Po0#tVn|a-kUfdIpLtSG+(Iyz5=yMRIQrTo|?%q)MSDx~>gL0{!MQGtHhGQq7JZ9GzW z8dr7TL{r})IS$ySD^Gwld=FEH!Ar>gZ2Rb^dD z+LVUN{1ah_pg5+P>5gHuP`^T9fs%`d!(GQct}qN`6a*8Ujv=uC#mdM7Hv^R2Q?^x- zG`DofD5Ov@$Ojz~LAmhYi5V41zjBld7GGOULSnIUWpK=pt7<4=R#8X9?MvWLOwgh5 z-H|G;ZQP)0FEE&RC`lg<9Z)GGps55wnmR2TzHARAIKEY6^c2j@8_61v0CT#)$`#02 zsf(|o5y z{J7oKidct`28*r-)j`j}R5c0$gp&sn*x~h2zi&Pxg=CquC4<$hxIQzad}Dh5(JafJAKSM? zB9lRh+H|xTTv6!|GyB>y$}>q1AElLAcfK{FW<1;&uH)n@6?g)!=%`q&ve7LCNC0jhlQ2J*7>ja|MR9RkTQ%Ol>1aO)b4$ zk~MXTN^%!g#e`~8dCH4agUZ|V968!!Rht!Pd$h>|E=awWwjWJ9dW|d6{Jr>p$goU8 zs=nt3r6qC;iC?|qGU7)jFRS*8m)K?#Je_r1RL|GP2?^=$5RsB@1Y`*j6%Z5zlm-b! zIwf4XLj~y+rIeDESh@w2&ZWC^f!&>F(eLkhz3x97_s-0jGw1U@bMKvL^d?9!i`ig^ z=(qk#OXm|)$DjsJjmfIcPkLGU{g0VxLMDzPzOt>~V&xdm!qoIO!vIkwyPfTl};N<2|xtpWSBrx9; zhC`ahtV}U8(F<|)e%;Xfrqd`fc*IEI&%H4GUo5L59mB=O->89F@+0@#5N(V!R8+W@ zrA312$=RJl=!;hn!W|*j1-_C;kFO!jVVt9T^`rUFxAH|t0T;)xO9#*VTp;yA4Q$P( z4g*EPZ1noZ`AL@RIuv>~dl`$Kwq-??dfF+1f_d@U=Ug0Sd??u62Wy~VYaN!6s0RGI zneZu;?_l}%VNVDw#?tyG6-%M`C$?yN!KI`4Auve-Q952*PgdttgamVmC{x*zpc$?pOV_nZC= zqyJ~Itn&D+w%wP)?YP>38?QnL^YebbmKe_COSjX4`e%|WwV5KdHn$zE~-cU zxiF4n`M{>YS)Z`ttILD~4||z`O0=ywV=%kixTd^-xJzU}G|~%e0c{kdaQ5)=cvv|n zXwhuICRnGJua6j1UZ`K75y!8QDr5*FBVDly5{B=?@yyhVDkv2z^>&NbzOV-h;Rot| z#LMGt%z>z@sa6hsfG`MIK;O(WkEdbZ<+xz!DS`@) zry1QdSMjS45Zz%8IOCd}cq&7-uO}A&xFk8FkZCcN-*q4K~IhZBlwqPu;@Sm^ObABODttjwN)rc=l&{(XU;K!6#BWcVoi~hBybXQLPVy+jt&~ zhOnd~_$d6s2Sx%pNWOVB6SEh71LGE1+RNd}Ky(*=?Nv_( z0hM)C#E98Dx7WtyhWI;nSU0FG)s{A0%1LnV`CKc+YQcYYjEjFGo?SVGuCI3CJ}RsG z`_vl#kBj`&t~gJFrwnZRYfogglazbo}UU#iyDs`cxbD6@l_a@zx`{*i9H=dQJM+(Mfc=5+EEkC=PP z*dJN8Q$Kt-!aWncEQIaMe7ic_=>GS|V1iND`bg07Pr}zXzhsXsZjc5yPcF;Z@vrUY zC4RVe*979%INZhUJw!cT_2KNr;FIeSABU+usK&#Nu}Rb`EC;UZafm0MB&5~H7+vdP zzg1%$<71Y|_(HVKI1-8A51pstC$b@0r48qMU;Ag}(5?8X-DfcV3-^Tskn0`+8;fA- z)!S3ZOWmhM+XDV@ce{I_X!RDIF})|eUpVTT$s^#1xxGxVcUq6k(wq8-fZqvEGdtKx zZa$mTQv$Y$FGNv$+n&ep`&;YK#%ZE;Fh|;{lQT@`;(u`rJZg?W)$mm;sm8hB0l$k@ zz+>R})%_SYS4@eD-|}!jhdjT8Up78QW4=9wT?LmcWYN5e@h#yr;4`!Ws{S0VXI0m6 zBHe9CH(+!mX1Es+uj!TlMW|#nL41eX#nW?`55bR2H0~)z;`NR(c|@!IpDX1xAQs3ZUeUeD#?K& zzu8Sx+KtCF11^n`rgDEHV9Yus{nu=_j}j8zn1QMK-y(Jxk0Hs3C+XimqqXROt7Fa8 zYd(L=W<(8U=|zH+AkYXu2QOazjp)i?sRP-u19klWT5GOD7xiP1xns-dJ&fu8X~J)) zWTR;{KIXG$&HsdgX&9JMw$DXw0_z>HSASvpU-dr&k;9qaD6{q1^On8|;CWV$fb0Fe zOr{EWrj9LH3*hc(*uN_?{e~{T6}AUk`;h5>HM$QL-puoy1>w;|KOeZx)D158_3`R59E+>|6kBH z%5vecsRVE=&HeA()Zb9|Z7o|l(tX&R`vI)@pZ#;8kZha@VIHvOcJ`mx{91>-UKXy( z5JH1A`@e>}4=@|M>|3pX0RVq|<#dMB7g;~6{s5*9fN`OJg{J<2#vH?}(J&!&&A%4h zKi(t0D1CCxEFT+fss{cuSssw_dUCOcg#PzAA9yX}$J6%#KllR1_x`G2FdBESFKQZ) z{k;6o8hOXy&nc|N7?t&};TT&cH^`vR>i@d&Kj&6+{{c-K1wQZ|@L%h4fJkza7b

      byWGY?tt-{l5#K+8-Ney+$1ZUTX?An1(m0y6P-d=$L; zy7C(|N{3`*AX>acj+UNuU2lSqg`>aaqs{DGfae8NuDBjxhQw#ESqPc%V44Tpp8x9; zOeHhVN-_0r*xLQiPnmwhn4$RWiq8n&W2gq8vn&3y-YLsP>1zU8Wq{d)4gSwsnW}(x z2TRTv1$V6eFA{`RwSv?kFfd($w)y{N-#^*Ibl|KI_^$`ohCtNnRn`9eLvtPcKHA%j zPdWjxokh&P3;zu()7Lmy64_vu4AlHH4)?KX>4m8ZGHdrL$XxXf8%hn07+{WWB@m7z zIQoED+U8p~fK2o)1J84eC&*uTc9A=X9CqSDwv(GZ=U)E?wz3R9nH(w{r-}g^kKTr>dgV})1N0(b$&Z zX=%oIm&2kg$1n);2WtA4%9PxKKw@1^x zdoNQHPu?>;L(MAe=OEBYGk6DV?Le31FHQF!EGw*@RsQIS-tBORSfgvXdDZ7jWUKPd_QBZlRDIQIbwAV-2mypCGi+L>MR`|6>s3^ zK0iO|qbVEchBW!z$tLviQe?3a*+JaUt=Uk%B=pgVyZX7v`;B;UUn;{m{SV^TIrHDQ z$i(xe-|1;wYhSp@^mc%k#bzK0hD}>b^GN$^h^!~`()hyQI zCv=mdFzyft|@W7X&RCSS>Yez}*iRed)i~HsxnAaREW0Q&RmKXa3#CQhF$h;$( zNkQ7L$13?ovySH+1-KS`Rw>|87d+R3M5y4{JWPjip2UW+UkuZQei^RmFc3e=o(Y7jsj~ zGM`WLfp{p(%kJv>ErpXWI8IbWAPOr8Z|;%BDh50HIeHW?`=r<4`s)m=4y82%A)E={ zbLJ_eAO$+bxqGtBfA{#eUt|WWE>Gb86Uga;yoUTTxBmD*%Qy5bN!*;~_5le-t%H1* zd#33d`=awtmNF5|5qoVNZqaeb2d+US)?^9&{zv@{R<6XW%lMY@`txCTXI#DvbgNo% zGhCK=mml$lhmM(XhVtE6xW=P;>Ej+K94|Xo8#Rdveb&Qr7g@RXzR6mEik;0OHl=Ca zJ=57?eodj_T~O|km#~|PPkwvS;f)A__NRG+q^va`RgMfD^4mfnni^!BryH3zffb7} zVbDIwpJ(^82#${xMfim?qey3GTJ7WHTL^Iv@~OQ%7f0FUyP|HEFK0JI4l9Eq==;(# zxIxwm>$-qRwAqeNGmp_-3l9N>dzf9;66T6hR0NAz==|n8qLQXPU$z(Uf;A)OZzJGL z48bmkc|h<};uc7|#HDkUJppo#q#NMx8`I9gYLq0jAGbQ8gIm0>C}ZCOyp)B)5H?r{Q}dR2E0 z@wStr+s~-!JcgVEbE%5)I$k_CRCUiw#Bp#vY^fZPhm~ zgo_Cp($T{RxFg&h0okcsITo&|<^+4?l6lYpoEM~MeOcfM&2Iya`F~*{!{gNo|Ibe(hTk!0{M`~|_YzQ3DXL-Cff+#8%oTH>#>>!> z<)HDd*Ixk6Ksh!}KU#;4T#R?4Ye029M!m1TGgP@KHAmT5fN5%|$5l$P4c(gE{0%I& z?_a+UTng77F)GSc9YDxEej>6wFnjs2JGiRtZ4G5U1ejHo{B;!}3_hl*7eM?NobD*C zVRqQMlKY*MV+i~CVkvzsIKw>9^Pjs8gJ$-w6_RXh)Sk!x5&%rhpPGWwUcfOO>2?C0 zex-U0e*(NKZGJ;ugFZhj(sd~8${c^MdVUP+zZefj!*@Ln{=><;QE2|>fN2&G7$dd* zr3!;z!O9ry{xNXC;QK%R!QjM1Tujl>w^s139(E+81CFvWzfF-#vuBLIt-qX_^fWOQ z##!r+NpEC5fcp4g)EwshWIHS%XiXJ)nado*KHKg3IK@XMZDM-NZtb+H0%bjY{j-x; z0L%n6ADgl9jXm&EA7TV`8z3KiY_bv)4L1SK@0{PxVpyO}#QUUeg$oUKme);@W)jBH zch^dfHWmlS7pI}91vK1|XE9*QZtVo~ob~J=5U_tMO6upzLgSD`x3IlNqWwzu8&KbLx4uj^|mek2mCN zvD@q3YF~jmAsZJ3)A;{Kr=pirTkW~QoYQ2++&@nb$#!PjgC%_5A8)|BC;qGS>*hq zm|pN#rQ!pRbu|^nt>$4byn#+#XLlYig8QEuaV=cjG+9-H2zn%|coM7K6lLPH4IZp8 zc{ls!jYT3z=^K|{(6oo@-fpY2rbcw7=#&M*Qt4WP_QLOwnv`orwl{7V=6 z$1`{hrNK;HUuO5pDmh>c8mAlnwzepl;)XQt6}*4ey8jNi z`9uZXOCk#(Bah>uj;K4-h-mymP1+fpL)q0YW=ug!!91PO|D+kUdnij)GZ)t+c)Uc- zG3JYf+gIgKJCqnP2G4!IRAAl8zOIO9{zPV>zRnUr;hR;!y&p=|J>lu}ZXPRlLJ4Uu zh8JTOe&~tw?%G~}30;BVQ{s+K{9kx04B7_f;W4!4fggLjDm1nK#FOr+^w|%)_!4HJ z1i$yJO-1vO9nc*|Sc!Yc$!ZiDJ@J1edJo^g!-Q8d{Kz6SWEt-}_Le^LDYuPl|(!qaFr8%B@!|d6%*qvv;G*fn=Kk;)V zy%95vZfY5qm*_I_ZMJ1(zO^s#EPj@B&K{!u0vT4QVa~GBIas6l_5gaa@78}&w2n_0?Sq$y=t`N1M=CV?J!&eo%sgiEafGbUvf{d;l@6mevB2ID?3wU@euj=B*6Ty#v3 z5Tg?lNwjGaLOA%U;I~U)fWHeEQh|`aS1(1eqepg-Ww~VC0pNwZS3W?Q`nnOrksaUsRx(VtT)I#wV}hx<6_~%Y&Ag$Gamu96 zw&`LcHN2tymyKG27TQI5yH6}~<68xo1zRj$?kO!!QYy$2*#{Z$oAZs9nW{>vuqcoJ zFp$fg=JYzM91^--?MFD0IFS^9%j@wq;xx!t)uX}-u7!C}#i8j7#Yz=WKK69M{c#CS zs`~+7=of(L8U?^kBG;DRvOa9TX6-i29xGc@gUb3jp4+vX4UWA=S#P;1dmyC^50PCK zfBR?@EfDV{j3v2a$tIXm<J>S1&l(Bqs{v{QAnK|zI**Y{k`Z!n?Dx1JCiNH) z|NU|RnZ@pXHlC{$hpK-9-6uMLd29Z6!tfjd%H+mw$^p)lR{@Rkl`Z`CL7m*T!l~oW zvsv`8nFMkrCvBJbWfyd5QMm-r{`Vi~_|6RZeRjFCamYzYSk|~V_MLsxq%%PC*Pf^Y z=rp6pUa6EZUIH!{O^wF*^wqV~51_8dtq0<|7xqb9{>2E#XVi$&zH=x?B_p67E;BaX z^siC(nTHnIjy+EE|FHynUfPF%{u{Fq(5Ow_@(sIL@Z9m)$~iRT{W0j%yj);M!$h(+ z=C+{p5l4{a^Q?{`Yot#b|FdSpuQLcZ_8FU17qpS%!1Q0gw1QYef7c1%t90?nBSkx~= zYakcK%AF%`b4G4NdfIV`X!4N3x+=ud?WE?IdrV#D>mpt$o`-6>;VC?>)TTVs@?^D0 z_S#r2x1f#^(j*oRr#Vw6)2mjYZ<#P9W_u7fE7vPT$faWSUB^Yfc864}fnH9Z{H}%Y z#=W%H)Ta|Yd~Z|i;_sAI-^{}-d6Z1%q?~y4NwDOzE;luOX~D~+AX%@qLe-tGd=7FQ zAKxnzBB*YTKX7ofTqAH_AKPkhrj2&>9^ZO%`Q$F z2i%Vt$}}%?w2jbvzsMKzu6y-=!}ol8BqyJ9Y{rYaG%5e%DZ^CL;J3Hmq2R(S&n6#3 zf3?a`NZH=Irn)V^V3>)-XbMbj#ne|S=~NDViHfU9J&^Rm+1ozey+!*muq|hOo{!L+ z!*Xv!(Lew}bU__FK=yE!?|G^Sp=HJ_&*k^RmQPhBn#DReE?l=bCLyosOzECIE$2=muZknHZ<6KPq$ z=r2fe<35IVl*~}^N`yhiEx^da|avj3HKUS0xs9S zo4rk*^p*?_SXB3{ynR`2w1kO-8TPujW-@wb=@}RNAY;yrcE=vF--NXYYk6Q6nj5*D zn5${Tio_azN?9)T^_AbUP4K~ol|bOEKKI}To^H8PEf$l^qK0#hW~l1%47bkame@45Vb0BES_w{@BK*%?@;5tK#&(&Ntc@$h??pX) z*8z?!DCR%2*rpU)>ciHkj!>nUN(R~;&3X|&8I1WNiRvB|HFZzad;2oDtg_ROAf}q^ zw}3boxK!?h5^kObw+qwo&^E%+b!EL%8n3wHcINrpJ z;2r2+;hti~sCie~uI;{#qu0sX;~^*u_a~(*EpdN~w)-1oFn@`|2!7n`Z`AP4j;!#F zH~>%hPtkprvQVSUr-}qdv!?`FakD`a&^tgl^h)egmY|7J10OF#bbmE~`l*CVNMw!# zaZX&UFTsYc8`$%B4R%pSne%di5)&S8sfoDFsm{H z(wm{hvk4e+`WrMgPP5*%kvJu`hfUTOE%Ju-fQOl2Eb#!Q%u5R3bh7NPA}*!1E*GH^ zdT*v29CUFf58&UWF?V?WG0b(Kqv_c!n%=*$ytU5%wU2V}6&y1K@a=;Pc-RS|FcsD6 z@AxC(BpuJ-{44q4vwbOy+QD52?|C3=ip0?Rf8*xi61?)+h5V0M(Lm@I!69?qXbICB za_H&epYkB*FUqWR0hiA^1z0Zg>@@!EP|Clk6bg;{^SuWG-=PBER1Zw+Yi)Zk*@-Yk z3a?vyFSn$V(`6>)LgDRGcBHBe%zX7dAn0r<;3mz ztqdSA2o(&KS_WR6_Ue-R9VZ>6K z3C*b@kOT7gWv14)-Btn`rlK+aiS&K#&myjP}S0c z;#!oWbdeaSp_q~aYeD?(ErwtF5#*R{CCU8mW1Of610?@Ab)^~hD-bJpmKv*K5HQDF z(OU2_5(CJrfR~H2Eu>Ua1XVA9>yQO_7J+>Pu&~ucmoCbP?V93a3V&k=Wx$Yb)kVk* z&>`$WVnBrrnKt&iQdhu3aYpD)^Hrm)H8X(@Ne=?kR&jKUXcThCxddVo`!P<2A+(uFdbFnzHU{IpRsP3ANJJbfc6AGT!D=ng*#&~3%jc#mc|nWN z7zhT%ii>7|{$KDsT!NmF_`g0yVcO7+DPtV;Y7(@ADO<%W{y@S1#~=2e6xf|m!sTdF z``)XuPy&*!>T>6|7_UDIqO|7{`j7WKkZJhc9RY)&gl7QMzDNIuO0i(52O_g2?JVs7 z2xhO1GunR+{S}pJbY&kD`$}Fv!lo?$=egKZ0rlrQAMr7WR*W&}Us@by!`yzy7Lh|^ zdikoiu3+|X0n)Yrfv?DdT#i9-JM<;m@hV-aFv7x|Sw)PAf`3z?ifSWHxE z11P2Vcn(|1GeX#416E;hE~JGvtr$%>#W>VC6hndtIBFlZcQ^}1-(RuZ6=aJb;4GvV zyJF6+|I5KEt(e%l!tuXPZ~PhJ+=igT5n-&|ERK0@9}bntU88=?nwnhv+>Q9S>wZqX*ih$QllY zKdwRPF+l{AxI{zyBr=T2P=rq;UD42Du5nC)kaCsLL_>W_40KsFG0_B{8C&Xh@D=wi zokK>8qA@sacm$l&zuxw$z%*xI=5u7~E4&+BNZ9QAEllPZjq$-BOVFw>DIQ>L3K)L6 z0_;BklOY5EO23XH2$LB2Z-lnNUd1Gc_M<#quVJ{^nd5&bK7&}Z!D?bcZ(&aR+f9@E zrQ)>NuTP(@sexTL${`Qr_{URIOiJ>o4QM1y2ovuFLGj;>;Dr9jzDx&M%}`9ba^os1 zVZ8>_hXWlqDx`Aic7gqu8NfgOkD+zAk%I>#?605aS=l@Q(;Oh5aS+%^ETiGdyzVHt zk$`3pQ!FX;g`0$XOauu*gJy3q)E?Q-ieCtaf3vZV{s`i?ir zQ$>FpfBFdfq2Gku@I}`M>mc5W+)x{j%zdxLH2Una;OU)ll0!fHr*}LhTtWeK`$KLI zOX@+UZ_2xSoOq6G2TXsmFmo@`#}qW(Y&huHlEPeD*=PTz0o!#PW8bSk-H3yJr4BQ* z^M^bwBwU4%@p45vq(v`uVZT~T($6!m|C!4u{+Z$SMnUcGK%}C+4a8#S3qi;G*d>Fh z3HJihJu0udzTV~UWpwd&u8Tqi3%neU4NA>i=i;5nO-(G8;$%#}`;IYoZ%s)X=m(oF z__a-S)vjO7)7c~9i0+Q~m3zdEC!Sw~sA~_}YE?0RrjlL(HvbB1a)8#biv^!j` zq(&5WVrt_-We^q-of1|1RiFN8IldNeF#5k7qpGouL|B?j&x)5Hu!c2KWxNILFdZ~u~kIl!KacyI;tX_ zV_N$_ed%UHBGKj+S*~ii6zYzqTUROEkL;lY+RL6$_{2l<;0!D*_Jeup*V9A$U&YRg z`uF9Y<)#Z)Qn!d3#0wr{O~bT-Z@%cW)bf6d*o91 z;&_*E%rXUkH0W<1XIRET2X67JS7Of^*tPgB>6|uN$A1-;q3)~9VbQyZ=NyE7TD6hz zSz4u^>*tRNd><=0w-&?N5n6(%d#g8b^I8~Q&u`vlQn=2kb;8xuU^3TzuolK|d+t(b zheT+s%i5A3b~6dQQ_?ffrnL;2?OJ7!`f6H!4UziJa5HaJM2qnb5(`zd7~Ea4bj_^X zpIwks_axPNVwcLN%X(2l(tXyqC7;^ZneT>+X3?jkIovxJF7h664;o#*G44vc^xN2N zKTH1X8}gIyL5aC?4e#LRbiP3ASAj3vL$6!K`%3oHCtLsGB_lF551wOGj9;I{eaqGi zy;hMQEGxqy-xAvTrtOmLrH2qrFW+?roM+1JhvFe&?5j-7!#CS z*)u20l86$DTWXKA>MHtQe;NO2<9Y*8#f|+WEek7mZ%9{Dou0tD-C@8n!7cPOPt>2d zAUmOEGBy7|5rxxh;G5TS+b@((Ly6DkeBW!D ztO(34k3IAC!;n{UvXK#wl4yFdye`B$vX7j#i0+_I*Q9K39EH5->){J9Uj|OJNBk3S zEuOH_CiYZW2QoepCTga5*L8rKkb|Q}j5}lI$X(SYy0@ltGxX;BKG6)`A#8(bqHBQ* zind;`4;$LaI@^#~&9RV3rEEW&JnTm2ll_r;1!jJ!2Nw)(qHZMJ+_vD(x)Sc|4t-tj zZ0-sp6t-%AN`3*vVEQ>r>(ODzJ6D?ON0E%|)j*f+&wLrRKu3s(U(XcPKYsv?1_ z68~*W`MPF=z0iBdb@%BlwOI)m6|viQl~~cIB5i72n2i|lt#h3D+jo=;?6kbt6)!=) zy1jXMKw;dj#t8kN$nQ0ROt$yijH7c<*(t53{aBXt>zTp+NIZllt99O97Oke5=H4js z`lyUUvuKiSIiu@s*7^!Y9e7EVguO%+$EEG(l|_=6UKb?~~Lt$v>&r-gN&C}v$<2oj?i!0J5Mk-59Ge78A^Rj3oC)J0T<+^Ya zzV%aIB7~VB0?Th1w(ZJ&oa6+@(!4qONtBZ5o-JT`6Y3oLj-+D5*8m&I)J7AwcOp$o&%y=0D9plt{m9`IlwfV*Z|$p8vEHTfs3;AEndFihaX9hStdzNg5bJWwu}2 zO0A7r;@?|@8Ij7Hs6LZq;pwPpxItw}Y+RJ=$#G3rX+$w!fUaSdOh&CY_=KhNMkN09JXnG7>hc2zi#H4WcJ0v)wD|=qhU$;~+kM!&)95l+Fr_h(dFR&(Y z)MYRD>N6NQbyu?UQ=6I-k?tX`j8*Gg;5(T2`b?O_c3W>s8+qEJI%oZt{*i<~&pr~y z&^}|+-sLGuO;l!M-(|=ZNn=-OEG)v$%zQ;QY%inRwf}ZkV1F{6@Pf0VG820j^R|ci zDUmFJ26LdxurlmWK?gfj<4c#B?_EjKXvUEih!XeR=em@a1!c-s!QO=54)Q+aJZbN_ z@wTgYMeaLQUe{2MsQq%BAQny-g%O`NuQqn*y7N{O#S>j;4YzCE2hIs>G)JB~_NTEM zY5{)S!5n8vTTD*B5s`#RG(&gIcdQAN3!U8$cOU&0FuVI^r9I&zOMP`89hsReH)4X( z=k_v}t>vj7E3`S_$SAXLgXy~pss!7ygMzhSA$ZDvwN@rqRVYR6$~j^MHj zzIZOp>W-usk$^Bys+f{YxdX2I*RZ^LTZ;*$NPg}Q3tc)d*w0C!lvU!_cbS7V+s$-K zymMU2Rp+-AtA=ze9zS}fkkev|*AK(K$9@e`D|3ySUWz|VG-{u`F=j4F+g9PVMSOa_ z-Ae?zYtFqi=v}q5yShZBG&+!W@A`pG1AEy7gIoET>RWxSaaOTwG`^#?3_pbb^fEZL zolW{Gm6od&w3M}E+B}Nclqp;-5x+cr-d=}=J=6r$Z9kke%<$nK-;ED6w7xVW*@HIJ z-!+e3FfEKeNw%j_Pt$n)d`Bux@~u3QG4uP6C!^+6gTz6MB%AJO{-eZO>Xc*Gojq_* z_fv)3T{~(oTd0@nmIQYC$k~Ijbhc)&F!!79@TQPgd?mJ6X>Lp^D-_({;XCt%T{^lD(Sj%g*3(t*k z(C9>*(K?873`ibSv$MwF~|At1GfsJ51GdBV!w&4*}cvk>o0I*R$#1Q5KC6uHE$1m zGJ_k(gAS8l7NAf1j$fpyG3`fGz;qnAmF**awNBg|v@Pho?`rqRFb_>EF9el^W}5o+ zul^QJB_*qF<4&0Wn7u@d&Z^dS;=a~|)gNe&wMo4BT*{qgDL9(oz^kq$I7qI5q@zJ7 zz3=EbzR7p~{ty0_4{aZ~3^*9@KTB*g!%T*rK4V&MAGf_UW!+JtvP+f5D zCgpJvzepZ0lfX}9?Lv{#a35v-%0ou881IP(qQ#TvY6=7IqZ00WnG(cM>8UqL&v_Z`}}w55rdD! z!#)RIFQPZ3b{+ZpYC4thU9-M4dCfH*oq@uFB_bn+bm{V^jg*IXZzDfO=-Fa*m#ZFd z)4bQ!%h`MQj>Ra5D#O1cw`edqS?tR|`T6&pIMJZh6lu2;@ddlXG6G`3L4C8hLBtec zc*LL&#cj(0$kFO*c51HBD+&j!B!>;zBsR-^_+Yl}+yMpUz+4t>MzLGjS~ww(KZ_^? zh#3%x=Y5hJFbgT;x=DA~h*J5)0zu|@Z9rGu2%B`ovb}wTaGa zKFva&*TtA4?3?Y6+c&GK_rF0&X{R30Tpff-L!DGFJ}3(t+>No-*)-AFph7ZxhVZU_PSt1@AKc|rP-ueO>WSy`}Jed)p-k5c_03ydVHR{I=+x`lgHRL z8r^uE<04G8VsfjuF+8E=KJw-ZA?8D-=!tXPBW$_?@k&<-C%qWA3U^0!$qUm@io{Mm+I;F4IOV@kVSc~;(KoNC%Rp1JG|#%b`n!Hmd5z)Rw4iB5 zSb}l7)?D(ftiniPJ)P-qg{*(7wnh!NcZm0Ph;t@eA4PLC>~bPuMye|}Z0vTr)T1(I zhworna3mtO?&0z7+Zf0yuygHOeGBig^w&zs0WknU4y)lIgJE*+VdC78+wZy zG?e82=}%4No+#_OF@MMxrqXhxdA9I1Uuf=HIZCu&iznx#a9^yLaPl&Zvcc=RP?C8k zIbzTEE=|03$Dzxur}W+c7iOzU6ErsQnW2BpRi!t{8Tq^f=BeSfZhJ;-|g z3qcUEDa$n_r@|xfVlga+s zBtPV5KZEj<2m9yo*zXK@X0ZK5*=Ty~ll}eozjy3=ixZHUs+dWZeIXV_tv!EXQB0FG zU?31%mB=*6RGT3{D^{I79YudcO*d>~caH12X(s#JD?9fq>iCl(rd}5evchG0;dQ+HT3l=h`mw15fQVD<2!1n_~D) z)RSSudI*Qb2gU6llu=(1_VOpwb~J9k{Gbz!?bT;_FRgxR^9KEl zC{#pHk(UyFl_D^>U=A|qR?GNIcClKV-)d=N!)FBxmlR-&ernuj+0u-^xjY-lRZpnx zC0f}obFC`;=7i7Oc(Q;B8gHac_wqErs^v$!m(b5>W83#DYtVpGZKK%(wV1U5mU{e> zsc?(O&!spUI)dtar)jlbTL1CTefToBT)`V(wf$*?^0$)kQSH2Mifeoa71@fA&4h1b zUWH8qTNJr?*AUUKGcNScL`_7N>i)?)T@Fh2OBcvny&q3?#}YxND2)Rw?b@f8s; zs;)se5)qhkLssgn;sNt<=5>KRVx2~^65Q!pWVnuLSC!1QpJ%8RVcgc(ikn?o?dspH zp@kodL}2X^QuN{qT0C!Fx=RT~Jkim7%~Knf_tUHMt!LF1eW%#3Hf)#RYZakJR^0W9 z$?Qg_cuK*YpEap-h9|N)Oi89q9^4tyyJ;!*z(u|LQ@#+s$gbJllhIeV*ki0dcC-@y zHj+t<6x3S~VeeJfU1c27SS=ft{r*rmRD@^CB~_j|um}6*6NNE*qIIfIq2kSrUlyEN znIh@?&r_aR{McC2^5GjlaDzB<^^+Cj9^|Qfs+ObM%&e2(NG!|K5=d;Da_TjZ=x%F! zR?qkJuIhPz1M2xbwb;q;5BrM(@%Ohcs5Poye*T7dR76HwwE&;WQZ1BMOFO$y;u_HvSzZ+Ud?ozIjR z>fw~(2`kzQ6+o#~P=~z41KN)|q8E?lg3c7I(Xmsn%(zRG@dC%y8h1h+c)!(;1SZSnYiup4cR} zmrE~+Pp-RC!Lvi-w#tG$&t+&ufw4jTHB58d=l`mYd>*` zNrtmswNAW+xkxOTlAC%ogeh{wn#ysLmiR%v`gJ{5m-`{wUBE0K&dJ4jr+xlDBOB4^y)DkPGNB$4J`*lKmjPE~?<#GKrX z>$%fx4bJspumIll20jgesCg}CnXcNrz4=X!$eZ1ytNF4sh34v7|Bu>a|*ca`5-rDvF&Ypi09Y-?Jo3MAg^`gT-yd!Yz z(QnfP+EB`gH}Q_OWp!Jx@m$wpA(SfO5O+pc(?QE57o3-D7p*SBji!^(<5Gy&zGr<; z!^S)17H_Argpx6Xc-g@q@AHL{v#7-=jv)b`>)nc^rAlkTVugOEI1eJ7kEq-l0~Uj@ zm)f(J;?!&#s8q7c5+m^sKN0NH>f#MIIH&H0SkW|WXi*b)?xYnPKfu306(<{u@!%PbgQ|Nn9`*T}q6jG|2 z;tJ|>ZICzIgH>gN1X=#7{Etr=oBFASo=eCk4;@*Q_OC=bik(9Nd7=I{;H_6WHf458 zP}BS&4J!ldDb`JzU~~$H+s-%1!7smTzVDqk0~YF(BIR$`UmXxdc@d<6wyxUN3^q$)vJ zQ0T_KeTdD+_m~G?>#oHrj=0e__nckC%0Fkh!_n9Q73+ev*6hP|C@(d+Vz_z)GR_~a zz$RU{jp%2XPuXKGpqW4Hb3uSQD>$b=t+1PzB8mBQnnZMYQDatKa}@8?m9bV-^tZ^3LQkqaH;JFG&W}q=Pfgs$X}+timP2af}lxp z@zUd{T~-N(8>zs)+FAHBx(3c(qT~(_y#7U=tmnviQJ;IUII$n%&$h=6Lb{-pTCrZH z9ZY8(GF0#zMzNBIj$bb5KYxI^oH~I)A_XWwT|ak(CR=c_k_h;8U7{fp3~Xao%RW!3 ztB|>eagS6jFLcFYpExu)pAg6@#Lky@HvQ2Y$r)mV9>AAtm{DBsDTMOClW*W05|sab zSesSj4P3a@IO}HVLe|?6x_8Uac7m9QiuZCuPX0E>zv@=4oUNQ%K;}eo-~>T*o=CtR z3+TD@qDnw^OcO-d?Kb_sABUfi5pLyOcQC{AGKDbthm5!)kGD#X3dCXo+lr|MdQ^L- z-)0mzEfry%Z*m@Ke9YP{1OzIV<0Q~MjLDeqDeBwIzV({CIdZp2S{Z%Jz5 z-7eakq+_knK;hD0yV8Tt>W#bJ^LoOsSw|<@_)u|^_Fa6l?7PQ|w3kK7AGRgpY8Lq= zY`$U#`B8$P(LN*l-)V(|cO*nA`da)~ydtt;k$KN9v%q*A zR!&bM52=P#DebyOa~zcsUGXuA(t6y7VJjt;WOD6!;5LIxULOjo%p%tDcsB-u`U__ z`HUatQEe`txN3r3Ky`fpUQNQ1pMJjiX&hw|yqXpmqu122mja^oH_Pyb)NQCsk z(0)?b?)uM55v08LPq5GghEcNGWBS{X3wu=#cP`K)I6ep=2|EOSjt6=gYa?@Y`)NwU_sybc6`Iq=sJri?a)=07qYcm zT_b##(YJ*V?FoX%Hurpk*;M!*C1vF&b6YwXBdBS*(v9EgWv)5qe(8`XvyL;+Kj6bj zlL}Ui5eKLdns!1V=z&B&eo8|ouIB)9lBi!{n*C~qI@ zJf3V3Wq>P1|G*-lC1}_mRc}6)*iN3Gqm7^HlnWz>KKHJy>3hMUX0ZK4sYu9M(y^%D z16<|z!W+_cQZ`z7sI;>^tRuId2tRaP=*7? z9I3C1(=Ont49beUOYbEXl6#w9;ACDU!X6x!X4!%N2roZVo27|z^Nk7i?eDeX-Eqx$ z()^q8ISZ@A%izAj%$hKt&==cKi~l3+t;3>t->`2&K%`WLS@J?r?oPy-|wm>-tKsn}}42k8%>|d{ZnD&~rcdpY; z?8iE)Rk;g2alTSYgRp%%|M)P2lfa7h_7xj?3Sr7D{8M(wrwB-AYcH3I#myyU4|lpC z#Ly|<7x~+m4WbH?$Ko`$qpa9jsn!oqZ~wZV%R0_toLW5tKW?o0A~PL=qkFm*%j=38 z4sPlMkgbg2!%T+n<2@;!(A`1jy!NPGqIxwgC%+W`+Yg~~yjP})hK-^F;9Mb*dtz5- zY`-z-H!Mhp{N{mCbSzb%6#{98X*9I%S%<$#2X=NOI~chse5mw%d(Cz^`X6H`V(z}U zJ5LzB%lW2pZgMf^(hTy%&%cA%^!+V$_;Ad2AVt!(8}0L^F~%VoA|tC}?-=k|TRlQ` zzw+hZNLFXnxolH z(uruNOvmQEApviH8Ed6|HEn^KiJGRQZO)hXahig8U4VTcGXW#v1zay`Z0z2lEH=^W z0_hATZ~=mx*7GL~L^TBWkiT`!Q%X5W>M&oCj8KeKj8NPB`dgmXIb!i6g=jBHk`MV; zr{*H<#udI_sXJJ)jk7YTdOrT?)i3M#7g^Cp0|JOq8=0|7GzR*jF*Wxjj_OR1SzQgF zSNf?ix;Pc@tsKZq`@7BK+n~jwAF7U9MYerCIJhF=vbOdW|D4u4t%bolT%k|PmmU*e z&CC99OH%jsg?Y2$CvNzfmOZUw$00^MZA*b>g@yu333XRkH>NXV)+ycFVY4# zh7#pipcW3M)4#2F4_&6Ip~#Fr3SWddBE|GSt>rQ~6AG{KaBUkglu8ROIUNK|3Y1m($eaMv}-~c75@W zJxe>>PW;Ei)mK9`T4y%c`Co~%*d~RxUw@kO0r^~yF7DA}cYu{-K~JSKrki}u;X+Qr zjl@p|0ZxstODCsVTR2jjdL(MsYpq8h5)QNE;hFyY*K-cN`8;$LmxB~Gll&sHg7$fG zAPVD~8ANw%%DOCZ{BL#7xU2_R!tRBUCEcoLD8v`w!V9Npn+v)o4jw&!5c2qUYhJti zz^i~HKCc!k*0dFqHro4qwI6Q;(uCU!x2EErVR|>+y6VhjbcZq|Y4x7|_Nr9-hEXz+ z&?)$3{53gN+EM)a4O{U7?D5q+ss!^V=%{rvHO#Y-L>ztdRkrpZ?B@fB_G8Q7OW%h3 zUh}+|vNzDWxF|~ApO8prl~`u;?NuL}o)H#zA554`$v*|uRZ$K5j|&cfbi}jHExQI1 z|1+Ei>I|0gl_Chx<4*Ahq9J|z14*E2a2a|gTrQ8C|6*|$)I^EYDbTsspEAQrSuo%1}X+*+Vt zrxKUp)9&{`VdlCz;)5;JH|cI98d?S><0H6CVXe%$lfr(dWcnjpfeTLcV-_< zpT)oC%48sU=MQXL51)ne;}p?;RMQp`*T zp@@)-q09kyn_;zNZHTL`gdS?0erp9cYJaqt)=v#k{q*a*)lC$-MRdq~r6!;cL0wt#E=cL2Uctm%`e>x^eJullEdPu!Us z4pT$yCv7VHhDK*EU9-5{kXc#0Ne$=b`!MQ1-19lqW4o{S0lrG7sAjHv;lAf`-%SW4 z9rlekT!TG6a~A3D1ide}bA-Ui-!r1oj@;8RqoZ9OK;-RyK~Zbj_Fpz__C}5aXvC}_ zOx9UQ&OQg|BnyeIQ#}UJ3m-&|K$YA&80evR&VZ2sDq_&u&?IuM*7{@TIEE?emx0z_ zZ$SI6Xv_|HVYQQm=5Z3lXYNJ;(BV|H=yRDx=miMBq`+7+Yk}4=P#QA9OwEaD1=i>K z*F~_iA#9W;jAekOoy@|EU3iA2UrHM|&Y{7LJq9-w15k z1-$4A2J%-1IDzHVCScZ^VMY-fv5!vs0MKhd&D3j9j{HZ3$cZOZsO)!yUIYCN%O6Be z{={|od=Z-TLK)q$b5xVo^!h2A_ zYNFopU+YEA<{LQuIXxP(IUCCC0oHx|#NRum00NpaI|s_oiVwghYyang0bmWx3RM@FU2PT6M#YeBqeKNEiDduk(4 zd9E_dc=N7!fodcViP$Qr*i&iVMSHZPEWe&ReX7`jxvu+Y_??~?fKW6v3?v*`YPSO` zc$f_+c3(pqDR?1M7|G9S9$}Ck4oLg~8kDXo0r^aC@qY!RE4XzOU@8p0VwCp)P@qf& z3{qs9;|oU|-PAObKT&L10cUVlFRZM|KECYyoN|3v5v#dPNRMe`=kXIzhbwC`g8!?{ z$DtrBWf~cIBOWgF=kuH$9(wCfXGVc8CYS0iNMS#^tmYQsZBW_nWVCt;<^Cf(#11Q8 zqw<#Wr1CC&^3mc2bnA%6`;h0mYroV*+N)@+am6pjpC48XizvPOV&&woStfQ(ok`j} zS@VsB8Vu0C+j!?=Ya!1W%6mS6{47fhlSZ%p0K_(^1lDa!yz$6pJWitNG}1xK*XYwq z*$ze&ssICad+EYCD7%KgFY&J=Yxs?+6zdO2M}}Hv>JP9dWGw=mAuAibhxwMnUB<$j zT@e%Hp$VJ|gFF_t=#O^^q~k!dW)? z_*nJLVaq#_N{<8kZs=6e*y z3Zse)_tBso{VvUO*870scieB$$Y(4A$E4HKPbT80x*o@u$c`2uD?fj3yzK=4^t@w=9$snBCX$;wc~CTWo96e^YIQpG8|T&?n@2I$ zCKPx0lIsdexEk!V{0?5o`SkOK-b-a0^`LzwTxVOnm~yCcXnZ9gLm4%%NNBJ*!M4#M z#m>A(^ONXK&ci6<^}sQQH2i0Wsa!TBZbx+c{=Rux+QgB}p*W(BDlDt)pth7_b)#)) z<}kAS;Z0c+HrFeLW)vv2AHb}iu__Q@pZPq~-bzKI#Q)f1(Zb+&hUp`yVFl zE;*=Cq3@-opIk9)EC`%s+HKVPBKr~4lHb>9%p)B?;nD|~_0yhyXfwF;@OzP$Tw(j! z3o~V41J#Rr=2q)h>P90M6U&}0(R0lt~crQhEZr>Co;=R1Upqu&5uP2Ja z#r}q(&rjqo%Uc$Tn|_e&7Rfaf)JjB=XT8sLVbX)$mk3ne-P|!n?((u= zo21-?oyzVP4)OEeS0;mJWQra#H#aLjm)7#>irXY|$h)=^%Sg%=IuZL>UEJt2&_f}m zKY@enqw%JE^<{I*IMsV%^x_Ws%2Xdy?fr!`iyM?wTK258+meTfTv@FQuSfus_R>E; ziZ3;NipdY;ddPu*?I~PkPMftTP<~6qF8y8W?rRAI(u^Vu9t&aK&7Q$ zHIV;8Bn637E}`<54F%wNh@;N0+p=#gC9g5+xNs5m3DLf`4rS}Klzji_;Un&FpWH8c zGuCeXhtus*BGD3^B~PNg<($kGNNkoA#t|--rc++`?oyB69L^1lH9*>w6NsRypSWBbf~XA3e7< z6Sh8%*SRI3Sex`}F)ktzF0CPs0truK-aD=%fo=T?V(Pg9sn-|Ec%}qi1)5Qc(k6WW zFiuE*LTX>C#KRRYd8qi_zT*cnC2uz<@CxjHNue(qP)SfCrB$&9q&BV;^;n-wKFGrsm@;J<1n?59)1J9#Vemd07M(pJnu+jx?whqwDf-Azm-5N^7hi@P7wkiotvRUHZoV%y>YqY9f<3&x%naA?v`o{=+>&%7)30f6P!}dPkUx3L+xK3Q z`9z;c?8}8w9ihj1dHz`uq%2Mk=g+Kb@19hOWo}d^GHyOMx>eH}AMYhC%^V6Oyy#N* z`LWU{MOR6Chq?+bIXe)(m{%oy=T)qjd3ijN!b1%kX=dXIGdR?}Spv-)$Fa>U)@dawS>8EpIcHp6Ld1 zm@lQz?B`03D^&0(k^F6MZ9SSXJG}qP-0v zr>Io>LWRg^*zAqu+_3E8##-e?omr7?7JIZYw`8wxTBf2HTZvXK z7X#-k$;HpZy;|4a2yqj=64QR-?sTn%^2QmakMto)s)K}OWc-s?0_(=%V?oc;&)J{P)E_kG2sO***yURsvjui= zTc!<|MLfCl@N_4TQdcx zo4P{KR?Z~SubC%pB|S`X3V{S%(;RMtuT($C-?D1HtYNH7Um29QFXT!a#}st%Nr!-3 zrIvy9FgFW=W-tu@sqjs01_h-fTpN;9A6lUU3>u;@slvGr02^Y&YOVpk-e^~lD zOo`1rJ8ZZh6(y&6jpfCigWI;xU(HcRG(t-^?q@U|u7%~aa%Kq&A28FUY!U0!Mk^6r zx$yK&1Et8$=Ltf72Bu4GDi=wUL!^YBw){NW#7CduwNJQ;CT3y7Yf+Ia&jhkn)ce0w zz2}%QhWaE3nc$mMvN}>%pQx^)6J>Ax@_L*1lIu-Z3F(hvtqGM}=1Y7BUq0JI^-_2h z7b$sly#_N$Py$x>ubR4J2dzqf*F5PrS$gN0N>1tF>lYq(aBY9R(O3ak!7%le%TfR2 zqAN{F3YwYXai!c829B9EzJ>+2czB}1_gw!)=Dfq zu)6DeBGU5Jvm>v@EZQ7iMsL5N6-!2k76kCfi>Bq-eSR z<&{;CF}20ro39MB`>Py%MTK^aBb=pGZm0561V<#>IwcltOwZR5(p2@{eCo3HZ4wll zh-H3TpQ{pazA=nBkYhq!VaoH6dTGpDLuj(_ICO!=YOPqu)`Fz#IV60@PpOjl2NtuJ z$`@JQmyk%I^76)8>E}fsmK1nJOuP#z&3avOzV)Xdr+@$EQg8!(E-l}myu0%Wo~&=t zlL0^;>-()Zi+kPft5zsZ9|WAFo`P8e?v!ePEN$o^u`A2VX<>y{Kb9bZ=9!OX=+2+1 zl&lfeOK{@^7%&FfieHW(2O0LoC?4D3`}IVynM~w1Fn@1?Y6ReRV*n`XIe?s7Wfe0} z@9rbho_|~BJlJz1c9?o8sr(BE^}VprFN zL{a&H-x@2joSe(htSkYF_T2X7T9oUntMzN;xW%QJ>=V0=`w3JRW?scxt_q9FXt^@V zKKRsYY|$7nS^79;V-uA*P*W=-uhGD zyK1lBfZ1yASXh~*ydA9I^A{B(xz(-N6zwl6qk`>TpQLSIeE%A=5{bRS|5(Hmr@~(d z$li~zojaIkd59Jd$D2Nw0}L;II)#3oKCbb)q-Pv7=97;$CI+%?bji7AviPmnMuqnw zlg1Jc_#*}4L^HKJS~xDdC1#ngHmOYeDvTYIe!t!`b0yoKT#}M|I?Q}hm zy%Z#gc|uZWx=z2lKxEX>hj5Yw{||55m{)I%jT2e*i&a?PLB z{V^{a&=VXc48ysNJ~C`x_4z#BFIKbIn`vUMyLm8m_x9e^yK^6*-4mO=dl|D!XY!1> zN{^8~5J{_iV{E82>S4@2D>FH#m)CB#b_)mju|>|?85XQ5gesoPPpAFS{@5mYWB?K6 zc6jv*GWZRP9_i|vO$p-GvtP$`66V%|<_0{&Zu%>T*f)$Z+($X=9?)#PK0Xb&bv6Zf z7D>W!Wi_-X;0Hj@x7@6|(7-^b=^5wR%Da3>y4$HyzfKK=WVD!_GfmNVQ~2~HVJDP-#!)>>uEk$K;!Wx}7M6Bg z2~@o64m|G&=D<(uH4EkRVv5V2@+OwHL=_Sj#3y{~_A zJVud`*7r!)UNaM(M@g4FnFX6yAbb)-SzNVxBVSn<@048|Z64uv%!!Yg1~i(&P=h%D ztJjwwXS0tP&fpexxKgFaBUik;A@$qAjy>+_;o?)W;w@{*m%0{I)Gw}$~1A*7anLxDOE1yol<-4H`I860o z2i2VNaWpgt50|C3Ed5Ij(kT=5Kx;6Rz;cQCOZ46SnXW|<+`4GbeL)^)2#&Mczb_k@ zFXB6dny*3W)me|Ac3|8PU$*}Ao_-H@7`jZ5-)vPa9&1Q}s*^&f~yb)GcGQ8`gXQd*7&6}-!KRFl4_VAWn5Q*oNDbyXy z_~YWaFM80r!yy3u`C*R34(q8WN@?a zz-SmkuPg*-f`XfvgV=&U8AlKz0PRb~r3vDVzTW@Oschc?_=yT)!5pUlFvtr1`6p+4 zfQ4$Xhu^{mN=u~t6cGngf=LL#^;gDu-H8Q1gH zlhBy|lA^@G&q<*EAM*l)Ly7zBa$89>;H1c@xWPO!$25t`h6E_3L>Tcb_*IoQ`!JYRB7$xv^c_Z zp1b1zAePYZEr`-_nZ+&^&JuWzzxeZj`S4{3e+V7|0!>PLvHvxk7LcXUE{g+F&yDE+ z9gLucZb9(Kr|W>s3J(6aclhvUG_z;g*-1%FB`w>(0iOSeDm|h2H0P2-%oqZ2ma_jZ zm_Xn5L?fUHw)0P9u;GD=yaY`pd)pnr)BW?p!#P-u8Tc!GDf@B$%fEoD9kAv0ejq>u z_`v%wu>G+R`zE}gBHo2@w>azHt)n1(lGvJM`0yhTQE;A{c2dUQIP6uOLM6R{_H&#& z?SB~JwVS4%o`W7(_kcIY@Czxdz}DU+E;9U#-#IAaoZC`|Dr=I!ubzV5 z14qSG{{^Kip3&FZq-5e7z_^bc{8xZ@=`2i#8$*izS1|(l05csUBb1K8MQEsCB9N*C zlrc@0<2@9`IwU_6&PlDdLueD)vVpW_XcOql|JzHU=)u$rDYHP?*a{wQb9e3B=f4QO zmk^_pq3ihZzht$`sN1xaAfDChZ2pVPc`H+5&!J%$`&?zz;3MM6HA-+~$OrTA@IQI@ z&C6)c1S6h)oy{8QSP;%)`nBL+zbd2PSx)&CE-qWV;K%{Y7yrZ0XralfN-~t0AFlcC z`$<(x`DqxxcRHX1uWI^T4(}p-9#zh07?^@})@iF~x{_AE@b$3>R=Z{9WPxU!Grv7^ ztLp{y-}A(vAiAm13V2Bg%50M?%8(+}*`Xf6XT9qT|pSSE4gt|9@E zV;}NAyJ)Rwz6BI|25X0Y{*o$ol&%d-lK=^~@lf@1a+@={(>irSlx+6}ko^b%t0yo2m2$x2t4HDc3vd#S z|8aSupq|H?v3KYju`YchY5~QzU~Mx73uu5;yYnqa+_1f@(p_O>HHc!d9)J;^#)BO< z{`wq%@fiaTeRTu>Ks6l&>pzt2i3BpvD|S_2J+%*QX@b<0;RB&bq6grx=?oSaF-YL_ z;LkLnHiA#flvtimH`Ujb3?cv}2ku~j=JMO)KSdfJF)E%;vy6Iq(*(LPvpsLx4MVK# z)iYolgvp#^j$Gg0IDByHY=Kjf(D!Ly7A9vM-~&YqmLTil?;|GzL{ry>CMtl0{|ysb zXc{G;qC=Zdu@4LPdXoj5N6}|+9u-J*V0lc^7}gU5Wrqw1jhZL+p~`%h*wFYvu$Bad z&KZbh!JvR|K9_W)J295~VD;(Gs6_)boZ;`vV}Yk&@KJDYf>aiXY(RVma_Dg;3y&{7 z4WPlD?cqGR5{Vji&2XMGtRFc^s_B9Lr%L#M;nV~0R;2No>@&W?N>kKbmA z?#i}#6HJf)JdxBjob>CP^;^~VE6wYJv7dhMGu)_AOL}c;J$cVjtzsg<0eAG4no+R+jr=M$ng7=+|CXXW;=;V<1rZUZB*1wS~Uxn;F z4l{i%<%^Cju*-&>`fYgN-fRzB>A=cny7@ZCq= zzKs{Tg5=g4z4k;FML^2M{qBBr?ind{b8P(0hzRb(be7wht!*h)+zIThi_~7s)%c#)y>H~3op9qra_N=RIQUkmNi%yagzKg8YHg+&Ejwd|K zD&61Zy%-nt1@dGhC^Z|rD+_8H7E zw?>FAIl0pqgS_ZFIj#))*+yu5NG5XSx{_kSf+nM zEJI^m;PTbuUID`-v#T_$;%&_554YYPjI-aI$7=tKTj(2W*@HIRodbl{!I8%dxGB5Z z4wuPJOj&(Ae~(1J5(bvU&*cas$fSJ13QKAb$<|;-lF1HO;cwvo7UzFpleXsywetts z+IB@jglE!h=dF`+beW}D*U|i+r9f3QIQC_f{zwH$YbWr(v?gUF+~=|w89r0uKM>Gv z1oV_@!e3*a;dJf<&bJ0g2jNZsRPhxq;z4#;EGy~6uQ%+#SB*-L^!P_ZJkEt0J7#cVE$*&1%IiF!0Q1+ z+ko4@m6iGe=Lv#?1pxP|e`YE51?bS3C0PfQcn*9D&(9YWA?*M-l<@rY`tqjIWaObD zSZ9YDl=PziE-)0B@Y!ukVBy{H&+?o)0vZ6v!h;pP0GCR`cjxQXU2M(d2A+2v{xfhA zg_R8zTt(MJ*w)c1^*r6Z;wckCq`f)a)k&EoILynVi0dk2e-P0rWn1mYUFsmW>ri_c z_*FjpsA=YVPH%5^Lln%rLj^HWE$sJlI?*1LRAyr9)HQjc;=LpJ{opK$bhwh z`o@zh-;2ca6k*ZFEb291ucO57j}jVRJlU>(j;mnr;7aFK!@TgW6%a6X4NeBJHnKQ5;FDn;cN2)wPJ3~qg=W*= zE{eT(#X|EkMz!Nq9dC%&^KbbARfqrh7o%2uk=$8SeUCZQgWoASX7gp1c1 z4HQ(iT-f#abM12Q+Q5ZlSQ+? zT#?YA?m(p0?zaAw69$XI)cG#Ai%hTG+aQX&75MF)U_wvn5PU!r?;w;v$_}qt=bVH^ zSi=WJh<@zi8;xl}O4)<+P3-yVJ8TC?t@40@F{A6zbuj;z$MpjpU_lOe1E50id}%=p z>_w~rM-C+!?}1*N<nW->Q}wmY(6Z-D=cnL?8Y<+#4S+3d_~nGk^KC zKO}wRdjLzhv}iERu7RG-^dER)jP`aC~Gz8(IMuk&uLNdM-065Uq#?_#b9+nW1(j?#VQop^0&vBa2@pzwv8a^h-rlpKS69I8`v;Ys`? z2Z_f1G_`X<8~r^+T*1b|F+}3syffgz4!OMx{W@0)Drzp+e+S+y;%4gzuIzneET5u4 z_w%N{(Vg!7*l}OsmBGWC2V;~jUrOhjtJlVW<8~0v{?xAFK_iL#^5X>t+;}Q--G~C(Zr^v3 z6RsZJuHO%y8>b-LuK5I|yE5D-=%TEOe8jeL^}7vHQslrKtfYtb@-~0qk1Z~2FQ9AK zB0EkFbhj~~OZ#%0!n>S_wd?{kHt*`g7Xw2Dg4j^NcY>RA!(-z|-O}aTS=Oxp%-SlY z;!&QFaXxRU{bK9thy>rSM42_N9g*3ueQGo)+Olv~2R%i)l1R>uU#+(&{ni(^==in2 zni#(qv3#^fbLH7YOZr{r45vzU;^ZRTM|%&{<#CXJI+y*4fQA*QMLQOP)>{J?$<7!U zZJb1dppWXj%4!?D_H@RAId`~)Zl?|?nMxc4Sinsf$P=Ri@a6l~sZSTEMy-*MjHO>5 zvkv9p+R4cDp9pInkJuZe!F4V=A$xI1pMc2*mazKW-|@k+C%DeN4N$8G#oqXM34G1Q zihI!>f7Xu**YSw69hK%=zbU#F0ZXY>eA%Db$=3=S0ObHl#tjqsi=s5ME$-`(0t|5U zvhP1-Ty#5-^j*Cl9K5K4fWPOO7Q~;pfRFv6~hlWIi&A-x0k({=fkHx0l;qhE0#-i2>p34`!+CB*o1@+?R5L2*PEf0!v9h? zG0>2eKIs{YDQa`q?29Y!ftvH<{)jZl&o(FhuKaa)PN4@o`GOPPS%Y zw1@1|7##dNMI9bAsL()?^ZWllKzq5@FDA47U&Y(T74NPF;)W2`>7U zhmJg_>AQnyvSUQr<`}1x?S}?|8&LZfp_ow&*2A&@d0?fQSW2(S4U;M^IoAE;UCO+2 zHvQ3i&uN7c)OPY{mRg^G*TYUCnjt(ryvi$x6+82ZM2P%RZZnSss>8?;WBJp>XZ(Ce z@+&>E+Q_F`VxsqnWLM1F`~kMIMR5}2Glyd1>gD%)b~&g!yx*oQhAE>>6by2lI~b`> zg&C75+(>hjXY)^nbyWebKzf~@79_7Z%=I*feFKj&rfDCTE+uPTGI<+xH`Q)-iIC+dbiVe#9ZO4q*DVU? zYSaKKmdO3toy#N=x~@-?Z7<#FFPAHO)OkJCrf7|bqAEuI#!Kg{7Ok#`^w*oMvO<0K z=Q|el^vB#2YwhMbZMtf^cCmcZFEYnwR_$+VB?+)+2S^-WVa_bg3(k&;BuJnz;brPE zvwdQiB)}Cd5TW_KdyDH6AGfbQCTc#rLX^hXz)YOYz`dxgo_e)~bpe1i$NE#k%>JT=TnKoMtIk7rQ}9XhHBx;^dGxtW5mChSr$GljMzo zF~M!qqL7(u#;Oi>J6D*Q$?2q<0wUXQZg;FmOx04g4{13z<=2!Q2OCt_A=-=y7^G{s zFjfW1ddbQa+f=o&5%tathE}U>Q-Mrtwf8K^M>nUD-V+Qe7d1}5leU{b;^op|C0wm; zF(L0Gia!->LOIoP_&1dyVc13Fmd7?-ykZ8vo72JodiRm3U!aF@@^49XZM^3NXhs|c zGZyb+HgTBK3@Gu<7F-Vv)_z~=_&eoLEA9TE&0K$M?;)XAoqPxnrbu{oZgt01DV?>` zvXx&;fZb8VaoJ~q`Xb{(!!hmTh``|&N+5Faw&DFTc z3KQTRWCW5Z2=CGy4#tK!g}Sa9vjFqCd+X$Q4}$X9E~ux4VA;=|S@o={R57*;-MhN& zN($+vH)Crf_&kO7n(-?%dlm+y3WD4U^pfcrO5W*42IZ6dvKa4tT6ibpvTQ-!vc`{eIx>(I}y) z%WpVhJMtJ0zZ_Zve&@_F9Sc?B9G9By#v|~?k=O~xdlN!nf(TZ9u(JZ3-#cfmT_grD z#|`@DnBx(>;R@aGrg-s8oM11IY>xL3{M%?9d}eicaZWsz_9bElTGtD>ts0L5n?BXy z(;5?no37rQ4xc-Rv%7ItTOEkDmC=M_?Iw>=va&fLkF>LeS9?qQ4vtMFs5PjE{B*WT zm{I;$*VQwmlWe`FISmQab@p)Udf(%TKD27cycT4B^pFn?+Zg2|_2M2PWB;M4|97jG9wEI`;D=q;VGo5Gz5DEi&X7e$uz|!7 z*cb=LQL(a}d*2LYjg2arE53SLuo_d?hp(x{9s&IIz>A$d=*&Q61F+f~&e8)kGOs`^ zIS(z_8dY%LfrHF8MmU>mF+fw`#0QuLrFH|Cv&t7s7v~vKDLp_*q|sT(8C+(BfMkCV zC4!&tsZ2ia{8XSV8CP&iH3Dl}RRT=?@2@qY+BD!d+EQ?gikSI56D;XM@m9O!1)2>N;f+ySHk51RoWC^XEb9#$I2 z*)+3Dj4g#d#vn4C=cD7MrcCys0jsd9eg6CKgg*~ubPj-q_+r<7wq!;!CYV2K#EvTN zC#{HpA4GM0fi8c;Htg>oTNMuyx3P3R6H*(u6y#urmxZ_JTqQYl%tVSP7u)l z-2@~dR-lT55*S!=5Z|d~vz`zT5CxI0$#}UM7BSrm=W4(MGk@RtuPbl})5A8qYR}8N zg$9qIIJ;HYd;>tSdkS@5H_ibdaHgbICz%(Ve0iLrn(l>E;jqD{7)WL|4U9EPY!Mgq zVB@eb)#pnJ^ybA+EAH5&)d9T6D&_#%BsZrWlx=a%6>&5Jv*g%2$x#ZyV-dap=76zK zG#Ef19gg*K;Hi%u@i|Dbe>A@(8H&d)Y}`Y1Pr3SwpAe=m-%H`&Kx0h_i(WCGjr3KjL)G0m(8XrsspoO6XSdKgvid(xvC$E*Y}`iM zSp>ykv1QINDNl0}vr6W37HY_NejjP2HF~qfzhHhsSRbyqo&9T93y@%X34xTskD?(o zWckpO0bXt*wfOAt^@35prh80yw4K746y<2;WrCuV^>kaIFs_HDvgjtvn&n#4XW;as zY<4Xt47&{%1xKy`AVUSSIXJj2+y7$&5<$Col}`&1en#5pBm9eU#o{>zlXYij68ap9 zT?q47SX5u8c)twKQQpRQc}V57SgkLgW`T9RH9Omew(e0vutu4bWcq7 zyd)(S!%CRhHsoV1mu0~u%hYs+A`gCy3%72B0r*kQU}(vXM=HzOna?pFD5hFaB zo?#;zLOhgjI^U>NW4*sp*mIFUdBIP)&FB4x=SWOnp@9aHJnaZxtb3X z#^TzY_lF{Vc80d%O|^ToA^D)6RqV)-1vwDJWNsMnsM@jNaLmy1Y?EdXzKgR|zpS%h zgnToX(7JO594zm2_I7WCD6(dSA+9ayf4&>_i~AWPYYbJYle+YAlqN&e$Bto0#z7n> zcB3Sx6&YC2W^~qVxWO=tMc|U57_*ZwddLc{Z@yrc5{4ezYa|r zBOofos{y1+N>ZcFN6}j+vFNn6`!XJl6m6c=`R{+iT9Msq?qtb79Q(*S>Z+e5F4(Qy z71UtUn-h4j5%B#nEWism@F7N0l0k0BloVtT8{zc4sJoEg#Rdw$7=Ix}&cOt&!@SQZ z4&eRt4$7zWahBSKG@b#~bxS#O%#x4#8h#P8d3r6E<#wpO$Tq>zB&$E89kI@Pw=s+U z?S#FMyK%%|6QHM7wx&|H9*Ez?s>^oQ*gSfho-Fmg^2E&p8j5m$>uZPraP!K~U+?X5 zHpx4aUFv_PMsX`h<8n(=+pwM0kL{!5mu(hD3ew5ZcaOr5^WP(r?HBA;J#9up6j>Uz zYxw%`aA5Wtd3Go#!q*CyzmL2_+aPqvJL;PeD(oDRiuRN6)|BRY__A4Gns(~U^~uGoQXoA ziNyTE#fw^J>b8}?9*7Rk@QB%7@|4s=GT&CQrS_Ec8FC+pFYfHu4?~ECM0*57=R^x8{-JD@opq+YXl_3zf6ehrj&L zEULG6x`evEATfodtLkhKtExP_Zfk$h1k(E^zMqTAt)q;-f1t1G#9HZj*L92MZ9WHE zc~OjtIoU@RaP$K|p2zP>tANCN%+5#qP(|uGoNU2V3PJ5VThWQO%JDC-~mKzW_GV?%Uj`}b@h?}avce5;{ko5KL_ZC5h- zCGsSf*;ZZF%GIf3Qs?)3&Is?DA(T);O^Cf`e?v^2T%=COA$5E_{0EliaNg|1{AQcK zs-qT_o6}PfUTc}Ns-dt=|CSfx=?#!g6UgO{Ig+`b%JhRi{a!5D^_A&oVwoNqib^6i zE5GpQeVzZMB!@mydseIR_|!tG@7V1X@~Fb5faMUZtwZD-VgW)O*9v)l1n=dYw1Sc{#=Mb}&m}inWpq&t$3yzV}#~ zeUQtHO4Z18_$5EKUC7+a@9?skQM{&)#B0$V1pf;o|{3x^!1fk|lau;5TSu6^f|c&c4QRc@qF7V|O!H5fTnS67=p_mt#i z--cw2OtYm#ewE!D)9aGOnr|POxd`57^!nOYBziAyJX2TaEqy|UuH4%iPmyGgDMUlu z;;Iy`jD1An{@qd?HGmqX63>V4)?Qo|($YAfId%^#kg02H5xV219bVjB4~?sD0-P^C z)eyWl#pGzcLbm&OLn6P?PS^fhG9My?^BB>rAzJ){s?x|w^K2p zS8LZ#@2WeQ%ypu>7E#$QL6FJd=Vo&6u;S#j9H@zu<%{mrR6eYjj$FF<{o1Pm&q$F9 z-9USTC$ztuqlGjd2_}24@uaobGSbzg+9rfPr*f!^u4fSyr9QUIX;hg+2q#yr%s?=k z-csz1tR&DIZfnyzXq((ETCL5M4|Pn3B@$my{DhdJw%3iEGz>bS2kPpFrG~@EAFrGm zd4}Vc#}~UUlm|ES-;QFIQLE$9<&qmOM|p?OL&A?v(HjdJRq&I8MT1rSwy_w>f!pK* zh6N#p3-O|!9bXdkP4k4T9u_%CztJb#)De69DRw~r@^i!Gou22{6N%#O(=)7s?nrID zO6a?Hvr+X|gVk61Ng^2S7QLyM->&YVBl%l{kr5mFqvoT{AHfSRv4eLtzby09+oq5{ zqxqm3k)tP|7nWiFyCK|~7Ura;nyW}D zvJUJMHU@LbJrFHM#^cR}?H|9nURBeDk<57}c)uBnIfz-53<^0*G^U(_sYMQZ0}LvX zroKV3w>Ov7bYUy&(i`aI28-Z=Ds5G;B#t^9ElNxh8e}Z4xB0~Tm;ufcx1hzL|axPQEv>1`T1`emcv_EY=%UFHg8yv#MH{b z1qR>HQNkI6FX6-pGOC&r3EG@t$3Elhijr2*Z`wA4U4;gx0zyi}~Hx7^%Z*wNcpdq>AFT2d@i=|=cw zVlkn>%fU!#9)l6cI3ta)1{_BsVP&_x?VsNqzPJ%%He6Vy0)*VD09hL=dWC^xocV~O z^;95;rm+r;IE%m^z7>n@ANF4y{OxdmzPM%!%cOaT+|a@>2$xDt2&31LaIUnoHkmXF z^h$LN*9$v7xwWo_3)8EMW#Ij0OpA`n2+e6U8i(klu+BOki6_JdcFVN9Iy~8Lofe>( z{uC7PjVufWaCf~{S~5wrL5@k`s1Be~ys`e4R(y5vs=d0Wne({x&UxImc~mlm<__Fa zYSM!RG3k>8mIz+yEv@+C@KzqD;leWKJt?`HQ@oog-TOz2$!KP>+eY(0O|aM?5nk^A zjP1Yb3rt!h|7qrkCM6}cQIvE|{!5LWR+2jfW&}kVFa#|U2P8Onj@s6+Z7liUge-Xw zugT(!I}0^&s&-HfcNZw>9GK>yG*lyGsU_fpFwL+5*OEbaV+2)(cxh@(7YC+mnEys9 zH|e$h+oQw393H%A>-f=?heOwcOrWzs!5I$YSOO4Z0z8$)J({=3M0 zv3I&xkVdANA2Fu>;q_0LBHXVWXeZc;rF6CXSs9{JRqCK|AkKf&9BHOzlE`0W3Bd~#agM`jKPQ_458KozNFAheN!qc0Fd)RGA; zJOtc=IlTyg<16U0b{J|t7E zG@i_Gfh^K^9aHB@lWP(myd%rdf(1sZCQ zmRf~K6cxr=LWOq}zQ|*A8r@&uFL#R*nl3P-Wf|Yd0?}QNlrJA(X(;Dtdo``^T@}9Pi(B1sX1}vm>yE#Uw1=Z8W(}}K?_#S>*pMk=ruU1OZ+`G*f&9hUr|H0%VQ(<1`;#VG zw>$Gswd#W3uZ(jnf*jIF7*j$9p<+lq#1uj{aKKx&q{19@sY1+>t_j>}yo&vMcbInD{o?79H zA>0jL0vl;m3XcO2*BS%nKUMb#shq;8ej>Fb!>#bu_~>*SFvipVVC2Kc2XWRAU#km? z7!qan@a@rGkB1`Ku7R@O=cd`uOD3K9t^ z0}BwTVoyQpweU4)YNJAxhas(Zr9?GmlCt9$*RV=1Kt(z#oF17I;@1=NSq_LqL~QpHkim5)Abb z5#ybzvA`R0&3c@&My!?xJPml8)f%F7b+o|l7w|mf#Jn4hEx0fjqn)>8_zg9?58>RhsgY zOmUid@WyDcOcN7oGrN2XZk=W}55{o(F8Rg}+uCOM%Crh)3^!$TH@=)!4f#`J+TpNQ z-}*dVbd#ULlvO0(`?_j_pJ@I~&$!8WTD8Jow2+>SFUGL8Pi+OItdqnw#uYbGDTF2C z5);h<^EjnFsb(A-7i(;g#!9ebu+>EUVt>sR1V-g5^b!ui3yoPX36B{rDzRrP9 zM2JRnCJ~Q`N%A1qbhxjT8=_QpL#Z(W3}FZ%wQo{FYf2sVTCxzmHmc#t-X zxj?MM!d3mnV3LhXbruXW8O%Pda_1Z3tD|8-%p=Ya1z4qx0ZZovwbDrszO}7;*fG96 z!_tHY^Dr;W{vG@_L}^FE5;^ur8DymP)^Gq13CB$g5NmtlU5!%tn4~%navV%j=d^^^ z0*8)wv^|PhFSwx0Tks(w1GQr%1FzU<>k*rC>7%ked5~d%Wf*OUQqeI}jsPTsecDkG zRtT(-h=gDXAPXvEwX?tk-eAfj55e>kc=EH!!1dD(!z6UriD9y%VG&VL77X*A2+pbV z>EJ2$B$^;RXrBsSa^r?24@R9C?LTZ^8se*Kx)cRP5CU~VxYfvW%|RkqZ~{jyea&Bz zKdP`c3-TPd_mp8Xlxoz~U8I)ih-{!TSv%r6A%Y;RBm9PI-$tWNvtS;K!MMNLy=jQA zj+qtZF>^`<9IRs?AJRFYqYmJ(La1eH7SxX_vyulHaJ$qNH$o{#9kn2_Rw_YUkc4>Y zf;WV^m>QvZg9Wcn?s2qnEtm)6d@yw@nXnjM!r2g5jKNe^kuy|?*rLA8 zjiQAt*z+Nm@N6^0ijJzlQRNuI1QVb&4^cA51?CRGjLea$2#yQ#*btis`-)}nVYnG$ zW!LCmK)A~p0BWU?1O*6oz{%hqVrdaVRe!?e+M|Ckcejjas;}%%o4ayZsMCPcyX@K! zr5!WRS}|&zBg#daPJvS^XfT*r43T$~s79&Yv>%rTqry?zNgORVMh)?mDbD7qvD1;9 zpSDhh>Zn;#X$as+GmujkDe=)cM-7E=AqZu7y@YmN_l;{)<$A4+bGpVst4wZ-b={~tuc+G);W9(V zlB!rBJ&P8NsXy7u*^8LPS4<0jD05YlZK$qfS9ZpRPKrYO@55%-TTx?P{L{gcM3w}cwbYm2>5C?us9OilQ zt97=M2#mTc5h@>SW-$jX?g)3)X+fA|DH__yMDzKkga7B|-c>_1 z;BIKpienb2^jsQBxRokhN*BHIsZ&ZoH5%~R(2$?+jvL<)4ITBP44gU$yqHhD-2fEB zUFz6_u&`G7S})+``td)jJcTw>TuXd&KS7k9+mMS2JS2qGur`HAj0WL=!EXnrU4?Y= zUDPXIrV;DZQ4JmL*Z%9#gV*wHRT5aO>*T7s2KhHH*4bj>=5M?(B zEN1`8*uaBSN~cOW#3&+K3dxXDM8m&st|w$i2cr3Gca&x8I7wjD4I!y}o{Zq*YbvR5 z1S=W5fcFe3$~~_UqBiGAGzTPmD5N3AbT^DC5PoHZ0FAGliAXqQl?vJf?lAImi>o(} zu{S19AvuO`7->bh=A6}ncUR(fB!T0Q^ z9uUi14reX*#YN^?EJ2%huL;9xXg9aa%q=%U$wm>{y6H&C9TG06*Rzvg{#~7n9uDlp zOg{DYem;EKI}0NhdV|>?zoPnwY0nR)#tyrYT4m6!nv;6u2eIAcx|{f?`}P9@Crm-~ zqNJBrNui7}D!5=#y~RfL=eFI=!L^r_W`EjbH0mXCiWy9z44PI2>Yhm(S@hbwDhc(z z@n}Nxs(6H_3(%t^N=Rg*i(pj2T}zdx@p9x^*wn&u$SZ(CkTjJNdL6;j7SR)pq61fl zYU!%$41l%_JsQ=XhqoG`Kk#jkh`S+?aw`N3V=Qo+NSQZ@A+%>0r6gRe1%%;8gG2~T zB{ClC)CtKF&wZpQFolRWEHcom??KCqCvz+|lankCKu!iOv>B6W?Jf1nIi-WK2C?W& zNSEnjXHBXjf#{|^sLr^wNfn%zMtCb&1ja#{5t*)wP6udV*jvyx41nzI8f9SagUty zhSz~6Yg-2qhhx)5!tzkS0{%U{2*GEZ7w}eo`T2Rn$ z_++kd83|6t=(j`U|hl5I5?>C1ZaW`%8guE-FG*WODSBKDLZ2JVPrsXS145*4jO z5w13>2AYL*EkK?IHy(K)dA~sx?P}ae;r~)%z(z!a^2EesJRPyh3z_a~gOD459*oQ^ zEJki>MLW7>BznivJz-X3?s@8!!z|^_Nhu6?i#3__17!No=kP>DN1sf3?qRha)TK@J zDXG^%3de}E&T3ON^M*;vJ<Tkz%^dmdZUF0z^`DVG?g0?lFnpv&>_q#r+svWrAld5*INs+v7(3;fLs^e zG(=6;3Nw_-S-6Ja!AgvU7hs2t(E-A=VA-7S$}7yW!`IB#X2oS&#`?xyy;y&VnZ9$P zZd$fgFGQEc0fXTHQXhy6oTUOUsyt#ANT99NBGx5lLKLf!F1P9Rve;_^e_PcdyUB-% z((u$O0G7!m0(*g#W5ReM1@?7cb(o}7KJvp?SZuT4Oh!!H&WQb|>99I8tS&kJA&bJ< z>;4ZgvAiFwc9P^3%_SPja9M-C#k^k`u*?BdqywW0n~<2pf%``oF-&4oZ+tdx(AVY` zoHj7ryalHrUPL#%qy|0+Noq|D)rKAq(h40ZHjG+ZpJk9@qj<@~@ZJnB7l>(ymrNun zWs$^YZj2N~H%1DT0anS@qFBq>;^K^ktJ6g;A=YYP$+X8oiV!e|kRbh|Qs+8HkrhS+ zS_c}MG*m7Hy%BCNdv)i77Es?FwoUs3p)+|;O$#_iBGi#mU==-s;KD-~0ZWe2QDO;? z5cdn~>ly}_}?$u0q7dDaw>(OkP51e@{6>&ye&TKFmyfE&tN?5XNp8sig3T)qxO$b6(gS-r3;m1BNodFzdUbIFyf0u3g>^^9P&PQA zLm=1&imBwt8;M+$j3`TGl`2zMZ;dhX@XSx3r#`?bF@D7qTX7zrZt_V`^WjO{%uTOtnT&rK9 z^2gpY{Iv05X;s$aqt$|f)=Y4%xdY)0soxOtJUS8>(o)wg_Z6WVL}?y^dnkSN_T}l} z>z4-$oRX)_QOY)sQo^{SEcK94%n=v44;(RV3Fb6-Jx3|qAWHKP+(YTn+gE!>$1ko> zN?V|mZycpjQ_B%nL`xc&ky!bZJFz+tPK`!2O8Ev+nup*XN`HQH_~Mre90ol;$D0Z=McM_7~WcPusLdQJLJTx|>^F+cK3^UV3n394I-L zu6O5Pi?vB7j=>`1Wy?HxwZFIj>lNdu=F6mLDw?IfB4WCNj$~WJ&9Br8}m=3`fEup@`KA zym!Go#O<0gPlC3_+dAIW`8}x3;l2rz=2vmeq;fG3w0W51+xgcLQCGt%i_y%>fY4EG9AaL-x^eY9Z(*(GU#2 zB4W(f>&Hd>o*(;~-zVeo?CScxt;F!%7!i{U%a9^Q?5e(~#!*-zFpX6|1_=>uI@PJI zrk>SzI%&*`oxum$wUN2bLwC&()d}FoY^$HP@MQ-6V^@C5C_Y@I_(+C}33;rFuj_WV z5s_i$y+Q_Jj?^Ds8f2U%-cYQtA@%ypBJTXy_xSwxW#zXk8-!)Jm=(!}&Wx%bt88@L zF)^ASTd(T4{h9f@YrUrAIw%!PosDe z_F{O^$+dJH>u5S#b(VO^;q?`CXan^f#!6M>qjy>H*i?d|LPSGG;TgAqmz;RhQg&n% zpL+arM+6E!ZE`wJoJYb)k(!#AszhB&x!Jw`R`A?qfzbuUH8FHO~KAEwA965H({ptVPePArX~GaWh{y+ zDe2c`n{+qWT}c#x;lWjNL=l6XG$D|PDAuXRN!8y ziB(R6-$5<*F(uQ}EL)TEJUsI#p)#;jXGRapcNt?g75HWZT76zCy>HK?8+0eXO+Q~W zT^r7<4Hv9!DIKd`=y^8c@}BOhEWu^Hw)FEwb48s#p8nEI!eO~2gAP(6;f0re+>j{Z z1a)2#L<8qmA?7f}%)|&{<WPat1 zENPKqGmG4Emh{_--7cDn{_2}t()$w8U)iCym)>upiltDLnysi%nc)TXE#*oGY&5Z! zNUu0c4aB%}I*LemsPWRG)}__h*W!~>p;doN`>DU^=lJ#Kcd8R8opz=$5*aNfiu_bX zIuhQ2&~s+3G8+Ewj0xB<_>Joz87DR2)yAXI7VzBgLA)Q}b~e?NDx=d> zL8&OlysWb|B3E@k7%Zmp>BO7TT!GA|duds)>D;Eo>9}Z`<-T57ip54fEpIkC_@9Q$ zRNa=DU#B4fd5I6vr}qd&ni5K>)r3+7XR9z-Sti{}?>B-xhFxF`;$!L{ z#!%9k;59ckZ2~#t#a-kb9lttwm43R1Kl)9>h4PJaWPVWzq4%xbf0`h*fi0~a9CvYP z2P5B)L-TIhqTMopCNjJrN;nL6)Y(QM>yTuU8Wnt03;|w2EqWOo!9HEM*-Nu*+DB~x zPfds^1T%ADtaeeiRL#M!&dNlofJtf4z?y;x90lR0U7(0wI%wGo2%C7ef4N6vE=G`zD~YHOk*%yYs}OgA%;)LE?-Xo9xJd3kuQD~cW^ z=Rsr_DR7;#B66Xk)kIPV?Hme5s?=WLN{4Nn=Q3$_LU0MsQQ9?R(!xW)OP%mcTaKeu z)Qd<1;|>v1^BkpHA*4u@hQx=KZ0#32l3*LxRj6o@IS4adTJX*8;}wAh|h3xZ4>dxZeQ@3vcL;
      sS{z`kN~ibX4`x5g83n|Wm~$Jk6qciCc-m#`rCGMdeR+89#1Nm61%K<&1jVcOE#Q3#PwK)wTY42o zYAINhnjQ|3wV*0>cFM#?{a>%?gc}kmqcB*J!eC{0akN5` zR~Sdoy~K!Ayu`eqLW5U>RD^hl)RMI1wvKfXDL?;hBHh?ey?RJPB4w(wSy5FsqiEwq z3RI>G-U2rfVc{8}7)2$6fj1ePnBIW15O{Bx4(}OoJ5BC0ca7`-OkVvcB z1*G>yMB2Q%3(k9n1#mEv64=*Tj$sV1mA4Qes2cjssk{9Aw~2Ig@Q=INuE&}ZDWmRa zk-E!N&9i$|^Xowzcyru(CBXNT3d?AT^&Aih?x;Wvk-La{b@-2ig${a#8!m10K2d%d z35B9vB}WU_v-ZxW~WW)KJ0=CyaAWbZw9%-WBXATORqlF0PhRv#nI|f;r&K%C~?F(1_o|u#11J6C=4P>>w^)5-_ub)|1(|ncXDvL z6opELfakjAWloGouyaVTyeit!8XJsM$^?0alnq2m;kYFZJYh?2 zSGCx|?A%=3+N;@ctl6u7*}$d{C##bloRlOzxa=6XnLuzv1{6J=X#^^QL?z9j)0DIz}H?NP{hHeRtgq5O{iB_&D}l&bAP)*_Rds+@S-XZ zu2I+Yi_mn%Y$oN=Na1tz5!2vf=3$7sb$Xf;KHJz$UunEex#`t-7?i8T>HW>fQ)b@g|-fMyP zB~0ISo5Ms1P{1LM>7v_o-bp9k^3vPX2!MyG2c2Nsb7u1JTx)wX3Fb3+G)s378aD5E zKOS7&Wbm!=e$u=p+AxfEmL(?+t6eHlw4)_t*D^ArWI#q}Ccu$lVBc8u5n1d6;zGvS zvPiWxAYZ_&94@8=smuG zXap|noSem0N~;o283*h|oeWAz6(w*%bw6V-&2qmsu1TUbJN6POo%7XBSbtZ-$}-Ll zD{^*NSIb6;Py4r=1s#}?Sn5c;4^+k&gz>V5jc?7(&%;wwAx=Vg3=-1KXK(5jW!jWW zR;1}wVb3IXMJ$G+!_smkq+t?sE|E2$^(c-)xhm5s)y8`!wSeaiovRJ5!N&cfdw0V; znD1}O5NdVPB6wfG5DIr?2o?d^N~DNVrGp#RMXtCaJbLe`su)7y?J-0io+S)1{WO}L zh01;TY;4gfkC3^T$cL$$3@%b)q#?U0yqet27B$12`OD{^1{tEj3Pn z^)U1H`HJDKv0EOVCG7U`eE2(MG+5b%nVmIdGPb(t9p0BPna~}XjDY(iu&{!2%>#Bg zaH)d>PaeYWXsVqCm}P5BmWO9Kli5pfp(ejmR;w4+(4lW}3zCwn6H@TLgehfLL#vsN zf(w_TNQkqjkQ&8c4PmJRSzS>Cv)m6_m(t+oS*<24n4kR)Z@BUK#TZsMn^tAH{raBe z|7nOUnIVB}UZ%~is+n_ZFqDSi2=_!2P7N{e3WL+&B*m6t5f)|Ir^m04UmpMR&;I`L ztJlXz2S=wT{lC22`=$T$%f0=-zC1j+?mhnY<@L#}hHF>d7-cQ%OgO&3llq^g5~MTa zE7{*tnst>R;~6$SGOQe^H;2-R25U4#pN4u`m7FTgwx-te@GMd5*K+m9^m>hg%h7c3 zZWMf8y${D%*OS%xmd%=r>SCdW{JZ+5%k;j0e>E=T->X(b-XIWK3ZjcFvy7mq5JWVD zdJ)oziv*j-Y`qqs#q4*us6LI+M(=AXx}hi!rNKxeiCDS@ogxuE@=gllB4WaWI;?y< zfa4w#drgqEmih14n98sm9__z;`{JPg;_zhe<;&y0AG}y|X-R>P=9?#; z2o7|Xb;2NPB@YU7!J@LxC@vMPI*I@s8zWwR{-wk_>7V|3cyjX3lhcD&OX$}0jIibz zy73~qm0ok-hUu*k)_Ng=MksKnsEiW(5G^IfD_ub^<>rJgJO47eT@$T87rOqNgOlU8 zZ}tyPmXNXO(c#RU^!VPL^i4)32;q&B(Q6tMu}TOP0F!}5O*sn$VMBt~sZ1ilu`x2{ z=U*y*;G@4e?Vr4To&H@yxQ1tlVQDMV73qBm;mGFors0~K;FF9&EPx5v8wRL!h8ZGw zm84B@Y>aUE`Iiw6gsnQO4}V_VPIP$m%Mt>zrUYDhFf*Y*mJpDsjT4Xx<)vg8Qyv3F zI#Q{K<61BVahov}^h|Axfcg1z1e_mjUQR&Xlz>dHCLq%#1YF&Yo7}yoc3nsf(m;eB zsJDy?1pg1tVbm~##V81hmm~GX@zH62|JS{vUk>^YV^n<8aOrI0yqjNULNP1MHjvDH zucYX{SAx2FMaG2SnNNurEp^}#3mam9V4P^HFtZhGa^q*XTfnm<+fc=D6?=W|UH1-& zg>M=%(rUjfy)R)T)zLZ_q$yTWVTV1Fm|F0BWa^g3lo8+n)n1qCaPFZDwM}>~5BeQ` zc(-+)YswrdV|i4O<SGCsv(gNNTD#-_%ecpTWv1Dmjy>SxE3Pi>H>IwFxeEiF+} zVMDYeE~;Qm)XWHhrJo~FJrX2lfdy5V%7i}z-)|+!7Lt`r2V4Yj>FRa))Vgd3b@lL`auq zg6uIwQLN$ z%{;Kn?rLs|N!1aPK_YG)W72qs1&EEOQc{twD~Uk*8k6dgU@{BryK+oY)D4rMdXzTI z@`xjdi4iUaEJegYStP5L}Y?$VUdCaP&{5p>0=}UgoZi? zk#TCDQseWH*q=PG?>ghNqXl9j+Emm@fxbw)0BT4OCX|#KbiJtkRr*LQP#)OjHzzm6 zWk>s?yk}lx9dW7RVFNon}^2( zA`4njg6DksNGwnu*jt{_aM?YT4e`o4+9Sfj4<@Opy#=8mh9gZQr7Cg*;>2pp&K`+9 z$^*Ol?$4$;?P!yP4LBl3A_$SNkzvb%p*o6`G*hUy@$8Y9Y*Hu8W-Q>A>=P8h;8Bhncw1C@ly zRArM8@p-wu1+cd=05>|{G-O52I$|?=j)RDXN94VNR}d5;5K3W@;(U%x_DHaq1@>J> zY>IB!lw3r{G=!#Ljnh@pQA?dlcp;)8#<&`r;&EUz5A3pz+D$R3x?xf)g&g=b0`Wkx zhz^m|eb6!OjL@d`zqooFn9KwFt{jsBb;BeQTBa*-7>56(5@Z)74iE%l8fBRCq(F}Y zlX+n8WB>~A+0p(8YLO*@2+XBrl0+_XIy|4kYR6NT=Y-EkVt?|$zUz$7juwbX;gE1;N>bY~^F>}Ym^bl&2KE%?5K5%4Rb z;+7lEsd6$Y;e^XaVs`StR?%Yt7Q2Q!jxi??_`CvH8>~?VMdq-UI7v1zP27C-lIYAIX1Xuf%@{!n^Jh113cM~%!;Yroe;?UF*HdR;%6_8=xLl{Op z5m5!DiLDOoVD(5WP9E5Y+QT=+CSIMVRJbVpsYqtnlCz|^?EYXn@8eoe%-5a%lna8ox3=a%P0LK?UtSN0g=t1E=91NrbDN03|;!dp8GmaGnqtZl#f%@}SD_ zpekc+of)>|s0`L+mX_da*4ARptbH~3-J^5uxw`Bm&;kPR77dNoOTnqvN_vH(VoFe8 z5rQ~kwNs{>a`mRpgM6FCWs{X$jopIR%WmqvhRTOXtktQe#?c^=AqGiIHFYM{(1{wq zYW?_aQ9jxPyZLpruM^O^8*ZHlRuB`EbqMTu+SHWVfP*d#62(2HtO|5bGzcL@4MGU%+BnRnd;z%0jv3_wHri+^QcP?yRVq}vi;$wmcMaOJt=F8cx+#sN=2!p6n?Mrl!P`7 zF4}gd%g;V11~}pUI2g{tq)lr&kdDsnm2x1O=#8{o2ca+mFCX4{6}4f`;Xpa6N)HJu zZm+b4`RDye{`vZ#|Chs;rw4EPe?2&Oow{RHsQj^qo;Jj0Mp3dNMalHWX~d$UTyxGa z^Fb3QrPtajhP7vcNmE0wH%6oU{14FR==kVhP9)rrNGofpdg*-$kp$g1k)!}rVE7NU z5qqm>YBLjprz{HK@5-Mff^LjR`S~9p(#h$YxBI7W-z+Fa8d6HEuB9WQq?V3k`k|1! z{ZQ6~Jwc-f5#lUhNJS$Hp2uZ&{vZDe*gtnv>+=S<(XOhR3jJ*YHLk zq=zRFi%FcPGF@{*gpl4bD!mXkTAYradB^!;lCk|)y@>fF@Z&?Rmbd41)xR`#c~wTg zsUrQRx;EdzR2q+Qy4=mATdSy|S~9N{MT#{`X1CH+^p*s!HH2}_OJTgmf(d|!ut-r28{ZxmX5m@Fg@YX%HfBSSVM9^GhFz5* zGL|ZdIOWnhOb|5?z!2??GB|aQt6|%oGR(uXj19*-7Hq&QIHL)1ktQS^^Vo)@&Ii(B z&cX6=<-Gy22hJiE;IG%00KhEeEO_&N-6r(N1GIz(FQ;MR&CGmm=4*Jl(XBg&7qB;F zB(gf$P6;Vuq^^C9HI7=7sJw7YBW?*8GM4TI;7B`SYF$RudKl^3W}=-1X-NRRZB}Yb zcAX)6Nf{QUg(gf~uU?^uRIr3wX&fODTdg6iQxMD%Ts1F%S=PHx*kbnEyR+?Yu_Cne zhIVnCP|iSU6bb=Uo3(}^Y%Jm^s%ROPR1yvWafQSscewYOAZac0*HU_Q1H}A3h*!sd zJ4knVygWErc7;yE8?0by8TX78xn~@2oN$3TZn0Gov#g!}oQN5?M?P7W43D@E7mP@b_vyvPo5wQ-`wwDGDHQYu|9&upr|wK@h#nT)zV zf<>2~qh1Tq^7F5dwpRzQ9*{QHm~a_O!iy|P>D41G5GSZ8YEPVQ{^p7n@Z9mr7cSywD;Qj{jYbv+NZy&CH8vP2 z6A|_dDI18C0=xj?n2?q%X00O8z8%cY&Bc6X2$VnXl{_?auLdo;SA&(+RNvqgs=$W| z6f`^1%qtLZ5mN6LE}WLsR|U1K@zon`W0?Hx^P5ak_w<4QhM~>@Ob$fjfF&iEMg|^@ zWKnxcs83bh#zq&C%1Rh44q(edkxEAZiZbyhaYZ#Uve;TL-SBml6U)V(Mit=~lZbCn^um9T%svQIFAs!uqiwr=pggoQ}gJep@*Nz6T^l>5k7RTnFq!|7fc#H&0SC)>-T<>9%eg7LmT zo}GnB^&2=a)79+qFeUwTR>T3*iEB!KvN~Ynq$C%`8SR=!)hakI81lqQAsMmhGz-xN zGw!^uP9$CCA5;e_GEB&7DoVLBa8p8WLH zAo>s?ws9B3%W3-G;(UE0Kr)9r`JKa^|GCW|ZhU?YUfq+Qo`2g5A7^1Q>izM*FUPYV z_UnIo-#%{#4bDJ=8>1zR{2;cQoMa|1*&yMZW=5q&qh`30vxgCNlW1pycW2Lr;e8nP z&cg5_Os1_##xs!c=A1lo!%H9LEL2JF^BSt}&g#FlgG^)~6GfQMn13#tVSX@5U+N|O z)*Hv(bbKCq@p9x+Te@k_*zx<&niLt!#8oF!)DTb0Xpzx(MWq8g6V>rMQQd>IsBb#% zU0wO!S_ni&ZwcH9^8jChtqk=dqt--`S`!(yCTKI%ryFUfNdWd=zXf5K6yQFi3I*$g z`}wW8g}Bcs$D-m3E;5Quh-SDCA5){7!RQ@0MZJH#df6LKdecuMaKvW=*P09&y(nZS zGSsk^5h0@%MUlgv$s};0n-ReerZY2g?fE`ag2N^1gzzi4if}G73Q^(`oM%c{_?;4# z2XVfL0RZ_iwnuzM^-0DopZ*d=3i_&dh=bPt*7UPg7>po)q2i zeg$9|_A~lV7NvzUy;rzY?E<2!=4%g;sZIy{dV@9(5BV^DW;6GsH}DX$S1~*5rvfL$d3vV+wLfU5EH#i0Klcy8YF zxd!?6Tt2wL_4ZhA>36?QXGy+U`t7lM^3x%pIB^holD*00Xf^2KfMTXFdC$w>ia)Gw?EZi{qF4h>JG=2sLt=qwm@}< zZQc&JzA;WaWM6%;4BIIZYl&?t0|i@(qLD#LZb7V(i9u=Vh3DyV%NE$q4|ZpnP4IjN z!_9CDRtG-R8$gWTs|NrTF`kC>3;bEFr2rgpy`wFkj!axG_PDTgroFz(gcjn&tu-?c_7Q}F+Y z{{QT~`F0#fb|>t=`zg}Ycig0gOYDofC7U8C3DYFOk4rD-J9BViCCVyP!L^WtXZ%3( z8Z$5U-N>vRRfvd0K`pzRb_+mN#?8#%jl0H;8%`#78Efn%_^Q|mVocPk%{P_9nkTk? zYdabEj~z%|k#269?-_Ies`v19LT5aJc{~91aesa}olSzdNCCeee;##zJxCXUuXpm~ zwCO1Kn$48bYS=j^!AVB6FsaCn%E%-$E`W0wLiyD~ALcfUY|+nlfVHJk$|f1T}*P_m>Q} zM!{9#Q2Gb2YARKWr_VC%?Mas%(tK5Z?Qx>^L^-iScGH&uH|~GXyChlcD`imN7>UPG z*R9y@nfB}1C&a^ijl#!!CwNdAftz)IjiR`*NLwbunoS3eC|_Z?pr=HpNhfwKQ# zizBt26Ym&4XGAmN=tthETQ6NS%Xa_0Hs0<6`2XDxuPc__?(9y*|FT9x;O$GxA6Z;4 z@&Ie4EyyWEHr7F|%bvV<pvke&-W@#7{RUriO9_b=9X>5SXt#5OhlXAJnbRXd>B` z1LDnj=PA>-*UQz@^yZ@FG5tEBdmv3&hOx;8#_0L78zv(zS3r{tHB*iCBlxEvw)>=F z4Eom_YwQ+^cT+iCv=gkB(c9DdvJ$aF;XsG3O zdW`F*fbWM>yV(zDFZc2DVXM2dxU4+z2JKz#z9WJuu-{GMazNObj3kyZJvp>^md^<_ z#eI^c@V7^2^(W!?rzpcetPmLclxh6 zT!v$ZJGl~`eb(YCv-bVekggF8${O6pg^8KLr{xLL=fI9Ik-q%CuiG$^DQZ zQkB=0=-QV#nwhqu>2b=T{1Si@bt=xz2$}zsRg{mv4Qvd@EiTa@K@%6}#RtIMQX?F( z@W#bYtpgide>%)TZqBujNOi$v?2+d06;5cac}QSVRh~Sa(_?6EW=kQM+-7a}{(f1m zVHG^K^}_gUv0e=x$OHnmHGzO_BSlcZe$@V#vCo-ZhYasJ!>)ge=bJV)-MAVPugaPJ zgo*((QLdSJOx~M>zX=ij{P}n+1o&_CUZ$1e5=+v(CbKNoGMh4JoXE;qhswxOY~FlA zH*0X7uFf0t4RZax{2vC#V@{9#fD&SXbwm;&+%P@Xi@*qV@B`8t39(w!7@G*a`ij+& z*O7uvNJCi6Qqp@;?>1vSRb8iRrhVui>8E8*#Y{w&tDvQ))&Pl*3HntZBU=}wg zx6tZja6JT|x9Hi&;iVE3%m!k{>lc(`q`EIM1jaJC)X<&|Z0l(@zvq|EWUa##sGtBB zn=9SE^0VETIRPRZK({U}T@DTL8$D$}nSecgN6Qe$fN#@&-y?t)*9`p)rLA$ zh?5RjlJYy5E8DM54o8FJ6d8wFN&LN&NsmrcYyYScFh37yxI`2;tS%L0qXc&ZUe?Rt zc@^*#2DXfR~^?J&e5LLReXhtRS+*>G`BA zTNdJ$pB3e_I5U~k%U=ums2=!zQvU2fu!BtDa=h~NC6pSm$|yCb_oVgA-tF+}Ii3AN ziUIKidOc5LfR!0Zp2j&gaVgCZo1Q4Xts8SVc3AvW+UGUr5G1jnxBj6mJv2TVOJ4vp z+<2T6$FDuU>J_R|c^MI=hcxLz%=mD;{E(-(E%n}JZSk8xbN-sR$|VP8AA-e|*`*Qz zCm8=O@noVb^Y=}A3$htN@7v*cBNhj2>~iA5k$6TEcZ(#+v;JK)3_;-uCUdL|OFz#l zz@-dGhd{KMF}v%4_?h6S__K@Vbn)N;od1KxU0YkH261!AA@R=CX~I$-e=7M9@JDtV z(+b{B)*T=?wP&+Oc2~bCmlVq4&z2v~O;nn_mG#c^#9xg-%%k+3mI+;vCz z?l$6cq?~N($_bq6%ORU-96A=utFaTgEl5oW^^H=6tst>+Qf0W>(*>49n5lUCnTOU* z5S&#P$P6b)qAWU3QaTz~Mq{ME|78m?re6s{wL}dS7(J1B@vu$Y<>#y5)Xp*e?1xL^ zV^uw1oJvj93dy+wM`m{l%QHeURTPoIBlfr3<^R=*NVC^$GAKI~PNZ#jr0*myj1rQx zzz;>1=q!P292XxX1=q9M(4O4A?U1Blue>S@@Y_vy+Rl8((`SI|)&WqwX9wrs%n${N z8e8m@CrH#xCT+z$-n*s4!KDwEK3d-@W$r?nHm?@sFMxXJ*u>{bm95a#lWBp@ZQ*A% zyaNq9O{M&txWHuvxTlS7caug(ZgCiM2n@qfvE`ptD|N9)l|@5?$pa!&q?kj(*#rdDPF%I2n<2!3_w$!vmD znOm`4ow55LV{Ahz5|F?>6%MhIS{KF613|?16?5@M?q+}!$JQ+CYJ;NRROaL3orXp2 zKMbVhIW&`0ApQtb{D(5gUkL@4jWA)l>gt*kGgom}= zcrSMxkUzT=+PJOek@Ba^H;Ff49IL~ifjTB}R!<1*QJNYNf&J&DLn2pK(&#Irq!=wW z?zvPRHK2cuG&b^$ZRftW0pruFle}P0O(1>dp!aWp{&am^&ZQcX z(bIRJlcu%mZ)t&QRJ#tNyMuy9;_u%gwzI_OCVNm?QiyZALMgG52-clG4;GD;xbrEpuF5>MgxiUqLhIN1~b6gObqhqh^DL` z?h$@MZ5^BF#$(z6-tBio(b(_<_Mv+-DRmE@Qq2#%p(7kx>g1s zJ|cHM9tjW~S@UdG2fW2PRq{t^Z&#@93*F;(_=-o|QW$y{rC?b+5(mt^Q9J{)?dM8I z^>nS*kBXSXvEaX40*%tNOqQq1`ox|iL{KlrV0D+$?%*S!dwA}2sQJ)6wuZ~k`&=>o z+rKVRDFNDYg@ZCa%p*&|?8#OzFA!uJ8gT6*+=_N_b7uSi3L-wsP`L}n?)^QkRq3bf z7QDoP|q(Or7cVbg{jf^Ob%R)JZPA(;?)`>DE<6p!m20I zb1Uez?zNeTR4q^q{yQzkvihzW7DQ2GHu39!s(@F}iTch=Em|c{zI^wPdf07<_N#BICD7DPCgAu^z z1lt&n9lGv78n71L4-Wk(6}wKc9Kx3q%0#uViW9LAmxCzk1kXurZ-u@EK~!Wk1=WwB zkqZ+-jh1FNhPHX?iOyzxEoMligy_#ibb={FC&x`e3qw$yB*h1}qD(SF;P-n%=b_iF=f{vEE*A;}df`?TTp}#N!*hV2K(Gbb;yrXI^N5(fD)HurN>CfuA zY{as5&>dh~uOQ!=gYAR{5jd>l%l{Xt5T_i;Xb*vW9x0UGSW>P*Vd*oy??mc>83X%&bA zLvmZ*mpr9!Zl-@;LA0DJAk4>t%b)`Y#I7b-#1N4n?kd>|yiG27)-lfV+@bvyFEPe@ z?!SJ3ZZb1Pa^^2;)R@!k)7r_DNHuEflsrFs0f})77)yUBfD0$XS7mwxTj7#sxC4v< zYl6eNE23{7*oJvsn#a$)KI){2zBD1+Zv#MZl{sy%Voir}fO07H{8VOT>aw!KD#Kgv zzsVdd%UQ!N?|+Ny5v#wv{6ESD1d0ES5M)->jpFT(kM@@_U&!gcv1YbBC+G&990t&n zdG@jX7eb|``9C34*YQ(-KCf$q4K+);Joi9Lznqz^vCw(1lW}!wCNjzdw1;j2#V2T) z1mtWZ>RqU{`a_&H&LScE&8ghg>ZyNq+Dff9!>#kxXNuPih-*f;#t2SSc9keV<~JFs zVOK_(&+wVnlWg$z(~R!@Ui2~(Ja+UXxH-UtT7^n`v}AT~J&fxB-|;eM86|~5L@IRy zp52>Lzjx3SjTQm`(=6^G2Uo8RTVE_z!7MYy+m&MUU_Ot~>;k78;CAHf@b^M*D3)sp0G z;@YX*X{lUKyDO*PzfxXtY@`#J&dyBM@K9klcp=2iflH8818nb5VLH53U@%(TsbTaQ z=3w+TSWy@+n5LWo7fde%cF&@34CUC`>|o7rV&?{TFO7iuC4v5A#SPywzY`N`bRj#8 z;}zof@&b)SQn5q?sg7t@L#Ebo({QrRm8ozjP`>5;W&r$pxRdG);OsnPq<{R7re5&9pX)u_$sA-%o6r7?-X67J>diJ(S4{CG{WVO|r1I317LpqCcA> zXTRf1eD5yZ_0G+tE#B7*=9xQz8JALBgsL=pDtfkwBs$BQ^bfG8NRzlI_$Ig+pq0rp z6X*~4PDMY@H3z-&WolOJ9Ge+Zr$3qUbt3)qU$b+u5@6TMj>?Lo+HU%n+ETCJXf)9Y z318b`GSZA|gQv^5)s?3bIvlY6_#TEMkPUITS)|vGufOCvqZ^pbN2+vZ{k#;^axaAq z8?LQ8SjnA1)xwwL>*Qc-^mFEUZ_3V{buI56q7E755QsS;j&2q68P?uF8OU2y78?+S zRlNHEX~1vb;HQb=#~yap@sbgXS*b^&uGH6gbxh578%C^#v4$);7LE9x-LDjo6d2~F zgBo&P9kTypKI!H-;%eAM-b#|xd)he1J%a%#6%jTwOf9m_kD@8qyE`2BH z7n8MGHeF`LlJQKiJk5_Neb^l{^}}q670_eGQxE0`OJ^%V1$f1S9Re4S&f)NPs@vHV z1FMBhcDzmFua{$!nM>tmu%*V|3SOlQj>zE;q#|#V1f&v6zky8%ry^M@bS7qKrOg~| zJHH=`d?SS`w8vT8HU%G8r{L65~Wk-))Y-QB$&WkE{d_TM6msxxA?bCX5z-?Wi z|8o*UMm`{`SOSs=Llj93)GL;iJ6J$f{c{X>9BhPO4C}Qao=xgI%AS#Q0Nl}Bxe(^C zaUf=*Em`3*CyCWCw>*q_qQf(C$=mw_`5T^D?fDvlY~YvHneA&KQ0uhib`^goBrdtw zXdfgx^Z-v5rfyw7L)n?3*bDCi^n2k$>a=L604_$GYcU}}Ns-z`D5;_y^t{aYn->Jd zGSE;n#OrD-%E?dfr7&`l#n=_MjH=Vw_A^##>DDD{KLi z9KTSQQHdh*nLc|j@&w2tjuxXXN6rks{U8(W%{UpqrZohrp7#ty|(hrdi zXCfYHUtda@tmY973;MG*K0@1sAlafV$Wr)c{ISaDN?VRryH*lz`26-C_vP9uVCl;i z0?P$=<69$xg#jSD)sB>>>J&X4U2HIT!I>1orsNrYfS}4rOxjc3nO4z`>RN@yrSs6I z*f!eh*&VX+d)GTt4@1gW$3naPZ&dGKza2%6t>8`hri+BiL5d6bVd16=cLmu!p&Tr? z#DJIf@ECssQv1?td8+sMMh^DMc=3I}9~$e3pnoLxLmPIy-|KRl0j>L$4^`@W;MEQkKRtEt$Odok86e!tCZ2_+{I)qnRev?so9Vw zc7k0g`k;bvW8Kkq{)V`B4cqJqIh8z~iqT2xNQ&4wxuHm$)l6}sq+x|(Yurl&alqR1 zx{fV1=O}?^IMK3AllPo5bILX2fUbcS5CvyYb^{f3e%PuFF@u?aLQFelZ#HjZT6p9H z3%8I$OL-b)53b$d@XLM-G}F*N=Rmi5HRPXm0%ePe&Tyg(w7H}h35uo+ZJ&^gJnj4x z+NS9OW=dl@%vrr+SHVN;39fD#OF0#)xe<2hA4+YdXvqZR-5>PpDRg6t)z8ca zhN6OC{U}r|zo8iVb%%xA6K(5lVr#!VT9-q(Ue}42wrZiasdHz1Fuq*mPMr zd+)<24c&GpU-UD-nCTdl@ucyF`cF>;T!<>uP4KiJgN5s9-l+Q?V-3 zMjqcz`}k#glIwUHvxnp|2U7v-gmvDrStbYWd?Z1J8C5NQ8AnQ4KWMphZW97<@CYW8 z2=r$K$h(^wWC@f2JO8ZSZO*}-f3g>e4>#f^6I<9Gfy=XfCc)1aTleA(=~;fchU7ij zGakT8AJa^xx?pKY^H$m*<7ZSOK?F`M*zp>5YORPG z_$@ev;1^->${3$tc7M)bS~o{N-eZUW0bbe_?3y8;zezLCNumEFHieOwBHqJSwcmY| zX)bEFX+ec24GG+f#0Z9w>=k}S10~&WEi{!8Ac?D zi`fk@EL6q%@AJUBCfz;)|Hy8mbZyu?M>`B!J~v^b@pvPwX8z-@H|>^BngQ7|Mqpsl z8+4cB6zUUDi!68WDE{j-{hrULA$>#IwD`S_;i z?QVX6*NZAaKG*2G+yxJ|XOG#sIWHDZ#kwN+E>9i2v^^W=C3ArL)bJk!!8|ffK<6W~ zJ(PeyMffoR^BP@jk#Rb9l1D2mQ~BH$bFs-&5WcP`a04Fx*4UiQkv~nYxGV|1&TRU% zC^QAr1O5#`i<->u^aB+WfEul=#)|zGsAQZll@ILByrB2j_wZ&06X3gHA#WRBbF|6< zS-SO%&8jn@DS`|UoLXg<-@d-9kzNa17;dw^6F!3t3btznqf79ob~n1>$Xy+?=8u72L!&p3!*;37MqskI!RvhfMZzb~bgPC!^Q!KRWal8rw;a94 zKmsJa3m`#oweUWMb9~KiYCIwGgj+B5(5amz&QmX`NX%H+Fag&FkDu;@7Rqzy6SDjsXlT zn!$NvYn~z0aOtUbu@&q@Nc=FDp6D2F6JNlW%bxE&@(6~rgC)ZoGcc>2gF1F_`Y4Px zd3AR}!o1r#iF;V2yCDRFllBXua<_ z*pH*5cPtRmHKpHtL0H>bd%N~!ZwPTLO^)iPHjYY)Txx)kU4?USNv*%Rz0F$3xoZ4c z!1`5H{>LCf2-CEDgjWs5LQ%24N0W-cO!hf-n^T1fwD2Bnu>^~jsMf{<-KEpak4;cY z0wsRJX8FIW3$@jFU-CuB+Sg6=*)BMo&&gRHiPxq(*+*Z{-SmHwn*h*Iet3sugAH1{9|aH_szcY?}$q>7T*_LP5WNjA09&Z4mVp*7HERa<6k4lr4FAo zX-w6GC7UDWqJI`1hwdD{%36z$EL(rGLrAt!@pAZ3jFc`i3b-emz|YvG(Gwhd#4r|@ zIVuqKfXE}i3|k4?yvr4DCU3dACGqqRGYx&f#-e%SZ&P?F3Get zPg*>%JPUCTRgMZ!)U9EiRBa1on_ytP)evqG+Js23hGEO$pmH$C(A+IM6wo&i>`O(p zd%R!~(riXglHmH!@JTPF_;XJ!Gc z{LZ3ikwirtv4{Ry4;`{!ZRyt_dRQs~V9qwQd*Qy8$PFv~OJV4C2ls6poLguCw+EOsICINiy zP*q;lpEc`*AwNkO9NS>HWp0RLh0v_Sm>0-R-e{`cQh;&RH6x#Nw2Ez97Y@x9iQS8) z?$g8i6j87|PFZc;j22IN9WjK`nB|*awc*-_<)DzqVWzmwvPR#3#)Q1dt|KcR(;kLi zwASI+?w$qd^0*+lJmB*Yh`l=5y6X_RxJjoHAGKTua7Tv}eX7 zLoL-^1*#kr{zn?Tf)XVBE`ogzdWwMVZ0-mg+ufTI_7$2|svYFJf+36<6{QZwJC(WE|&x>g=vd_O++Vx{Bh z{LS{U3UUi`rMVWv?6zmlJJJG|vGZsDl_ifl zdln3EoFcLBdnL;h%gvG(k5pscbp0~cQcJa+!LbmuIw*d^P30KeVCyfgFdkEOXm##d zMy6ug?e+3~iNIpo$?X>O*LP)IdHxN(=K0{9y7q^&IEI0@qT0kXT$5K+ZWpu)B94&S z6|>$YdW1RzHk*#3opa}btdaItC%9LBmyhem%h%%St?z@a=_hDuUMV=}FQolHI7k6V zgH@6tF=pfo^Fq3E2zaN6FGs~{o_*3ZMzyB@r*0YrJ>*sl=S_jPp3IdM*j}#J>-Tkp z1%_y70Qx2KiiXRUeb9{UD zay_60wCECoP;WC;<%q6G&=bnstd5VZe0@1(OolHGU!)=6uResko+J9XxT&3QaO9z8c^5CM9*eFGklgnoXhT9f<& zOn|-!AUCeG@+opC9`3uijtrJW2J;b7=5OfZFRC4$guCX$y_Q*fj-D=C+X>i4ki@pb zE9jC`KZ`)bDeW0en5AM9j;JK#|21{x_3iZM_xZOt-s$HNK*i>X*@pUx2MDDnn~;ttBuYElb3(U2SfCgu0>hV`zzhSqH*0tU&?Wtma7An2{K}VTKy%Wr;9r z{(bX$dFhrDqBWy(m(nS)MzL)1U0myG)cV*TMuzYDjP>S}+2${bKknPMd9*pM5y{oz zd?DkDt5i-~_P8JWMfbhRW2e#=l!*KfzXbvnGP%AzR@_v!DU|-nXj{5WKrc}F6)VRe zfp|M7HJ)O-b=yD|r5&Ep7m@f!Rj3kZtb>uVYNQVAKsbb<=8IG6=5^W>XSsmy>%RQQ zx@?OlHNK2h)9*W0#}3YQ{m3q=82xb(H>@2mDGDKSB}W_#m~SHdlkx^3%p&w^!mKdh zXiWPafjf8>@b&ccoWL~WKvLp6zC~ZSrzxKu(_lz=;d5tIHZr?;=B3`WkurXq)S$H- zF1}hTJQqk{yg`eb<)RTh4nA6Hr>$0PGYGr@Wt>W)WKPWpDvUf%HZsD{j6Zmc#-3PX zob2X!Oih<185DEdq_t}~1RLUL`z~YOb|Of&mfe!R32%VBnHGMvWizR1+kr2K5>I!j zPzR&H;I%vHEc{Vb(eNApaXDut8jU5j)+_ zr@tsF7p;0% zXjK!iJGIn~m9I4+r71tRPjo0dzltV!3I(W*i-Re)WDa4X)@<^!9|AQfxiy^06|2E5 zqjciJdj(H0Wderh06qW}AR8;Nq81^5qGU^QWP_A!A0Mh0jm&`S^>Jt=nwKC>FkG9> z`d_d%YmI=Gzwgru>SX}$riXFq4^LD3KAj@ZG7yD)`jZ>>cSfK)u=&n-&48u(?U7yj z-W1^CTa&0Z^hQi0wlwC91*?(`OOr}Rccw22plI2})emIyC(m#RQLB*jwq6Jbx-8q< zy)w%_Ssw4Sl$B^ExCrkbQWs6%5GlowEIipViNhz=DSOmych_-dDv8a;)*DXx&!Mc} z{Bp}bptIb|d-&(C`QORm)CfncUUl4v;hqQaKmHwA_KH+w#ezt9qoD{At%o{0j$Crq zW%w;39mL>&Cd92n_o9E$D3u>v0#h5}GuIp9Se!rq-ramz8>_g@*5h?8&k_?j2g{6O&16a0#GI0;;dQ&~$}h`0D`2O$b$ddw*2o$sqoTOK&;#gpev%fcO4M)fl6k=EDigoa=hCPL^B8Uf8 zvLpK|Snj5fxKvHG7y1Mm0-%mPy3L&0! zhzG{0Iyp31s*4p&#Fv0vkG>7{VoVNLIzw~_WRWAnzhd)d_HBNM=i<#`a4|~AahJb! z3GfpnQXKS|a?^G^$%r$9w!fW!vUY57^@FxcsF>5IyYo|RWwS5^QLi>lOcgegO<=fu z-`p;!1lCcx%bNEV&MB^Yo^ow#?7rrMlsIFiS24IQq2gtwsCWgHd-j*c+hXz{2GrA5 z?2NcHn={H*!wY0&oo!Wk;OVwvik4O}=-T3b8~HGelk0Ion)_w}gZ%cgpQ*`KBN->V zC&um0Evmbh6cO=W7+9F1Grg$KaxglkFrsP~a~F&6fk7al1^*&VMRZh#LxBbn1GemY zUdv*Zu>;zY=|N`F>ar+N40$yrY+!fmwc6ecqPWAMzbzF?C{~_lSH*Exvm*qbbW1U# z7Sqwn%NFT9gaZTkjmA!uJ_B!K&Z`e4t=kmv$LqEZ&Z;Ky{RGcb5ZlMeofZOjgv0RH zcC{p-(95%z3n*H9*UkP#>px_U1fmejG$eK3(0`Ilu{d?3TH;5_eFL!7aWKKE3Zac8 z_1L1yqQM*^+B$gHOnwo`O<&EiH^y$OQR^)urI(?*AB8b~d~H5VhvMP*-tLd` z!P0K0tmE?*nx?N^p*T5ctdQSX)j!%!K}lmz4!7hGuxZ;i{n(`>rhp<6^Aqk3lV<~M zj{pORqUvnXq@dw@5g)4Rz=~Kga-*cSg5U`)Dl}k^@v{x|^@`(GZtQql8w*peUJ=^+ ze`%%uV`7w-!*Rc`I-giie5lEJSa{*p-a6bbEPo@-RL)t@MKZjo@0p&MoMkm&iPEA= zBc>^l?sDtL6VYeS3<)1aQC?=IQM3(_zUDQqDup+DHg@BUVp|9>P2=jx@`Sgo*0pU^yrClu(JDNr;6ccY6)kH>;l0Y1r zPZQh(uyXUcoypNGsNkB{2U`3~YSnJ)Y;@E6IBwhzDZQh;7c-SJV5@sJWO`{R*uKbF zF>Wv>17!vOk=_QUI58BLAooFygpzaxlti&=N(8V{stw}q@1Dg1rT;A4*zuBxan_^Q zpm_POSO%aSjom4+>oLDyWGjH~bAeu2H7smI7AGQ6Zlq^ZZy8A{0!@;p%3NaGH@&z4 z;>lm*61kE=1oHN@T{Mi87q^(qr_N^6{0WSowM<2&e+Y&spZRJ)h%T3^OUZi)p@P}r z@W@c@YB@GP)2JY>l&WQ{$FL zZ`^ZhOVlxtmPXLjSgI!mE+=Fo%aEAmc1(ucB~KeuaPzZ84mdLNfq#cpd#MKzN{ePA zv%G~%qtJP_?C#>=@8$9kQ%S_o;(}nk;vvaXe2yh*qEOZ@xM$!#U#jB8uVoSpd{~^E z+%Kg3tE}nb#)IQ0BmR_A1GgCdS6Jr>`_tERtnU(;$xu*kX^}_BVnZ+Pbo#Xa>C^d< zG1QizHi8@ggIkq{%PWDW5w32D11KF=15&(fOkhx>Tdp? zFDG;@331V~j`YAE(8Ez8guqXUOi`~M}ZR?*1%AL$o$-jo42Nshy{HeUY5CXcdayfW4K zkLio!wP5Kymoe*=mU-(5l%^;EK(%GVi53);*OKu$l|8utM1jlkl@*Ucq}+uRXhevo z)IinQz0%7~U^KB$G+^4yq*h06Q%%UT%?fwn;IF;UXMkW-b$&M?TbWv4KQGkpST}{U za&T-;qyfD&?eWEp7iotS*iC{P$BB@duGG=#*OZ`t*rmuhT(b%rQGOptCl6)9Hn&a; zbS-Y78}O~SZCR+7IfQe|0o@}7gt0FY)Yc(sp~c}A^RhYdg_`PFll(Q)PknC(F4z|P z)rtTk&#T{=v=}K&wfeW9v6BN2YKW~@*(=s15nrL9V>WB;OVK!Rlru0_=vuraD4wa& z#5{E_TfmVS{qxdJCfS5FS`9%0`8ss6>z6SIA7`I_0agGf3pfNI6fLz^POdho5#30~ z*U+Nflr3*XWi@SbWvsVD*VOBU?-;8Kc%r}I&7d9^HcOD%Kq5l1#Z<&9YrLm<>vXP= zXwT1Av;Wz^cMjycC62vbxN>4RBWK1Ch!bv(a6rJ8#O;HVP+I#RS~oWCz~3O-^v?UL zgEz;r%jATA4S_8@*BxAlwfY++YlI%n?J3vC{VNJjZoew2 z+ML)_c{NaLnjAb6zL5Y-tu+{<^EvX#wk9HrLo zHcfg6+6u{+#5HZ}ED_iIeiJt2o2nvEv87l5^&69F5)+x|1Ir-vjkcRBlu>$U;`9#y z)^%eq>w5*_mDRlK5q&2yDnP zOkd;QV^_!8c3C95wT_XWu5f+5t)*PkoI9jPhxo!R;hRt!A1GCFIamCMf0^B~^)(7|29pg~0$9QKN={%lq3Al~>Z-ew0?DrlsHIO*yiU zle?#D|Mx~aUa4+6&l2WDC6#;GjQY5SxL=6~m1U=b_syk=vpa9yF4@&%A<5AeWihgm zM{dF4EN-PG%*Wm(e;^W+o0SH`*|=6kHKWNct@_StYr(b`=n9jF8CGaIg_i%eRQaJv zXL*}xp`5wL0ZEj!7D#Y9gHsDLUk>D3wYIN}Uin+QiWXxWfj(5IJBD^Jj;%NGx31$M ze)uzBPEkNj(_b=PKm`h?qJMHvi1%+X-M zf{@phkVfgONAf`XsDU4mVD%UzBb612W$s@B8xpat0|mCnZGA?T3@wUdo|GAaks}z4h&dPua(hto@i1pS`c<~2>Up0Z}sse910CS()bylm~&=&|zh;8wthI!UZf(O&C5tln@!(4|{a<*a)Hc(XlR3g@wXLVU5I7YYb6AxzoBQnvX3)FOa8< z>vP7{Xu-e23N|DeL8_yu#yg2G_2^3LNYHm%q0M{Ot3rUXWz%#bRd~jq21k^dT-Gsk zoQ~SzBupzwT?&$f0W)~brG!@W16OKr5;ZXX38+~IIS5G{m+C$(HDWKD)MAX% zE1kEqvvcq&2kl{ZKM*(Z7T``jHpK^e_uIT7opIHL*I^;)ZfRCL4pjo=s9%`e8dm0T zY8r4Jw#u;qCGZJ1D#psM6MHH=80N*e|4(k_7Dpx3*8ph(IEgYwbQ{4PE=3MI5g+{i zo0z+$cJB84ft_h|?A- z0`Xb0vwLCxD~~f<=w6R;;H_gGxf@q=aq~iA{-+P%%>Tyq+yyGR>H^mI2dq^_y)On@zG?aS2h6C- zvvDf*5n#?Uk;sy;Ms&)^!PS40RGO<#jV;icN=%EGbNw-E|D(?Og}j7O%ub#%T$4{e z%?*{~-G@gI@-mfK#0M3++WmmT9WN%Ci5kz7;c_PTBSQQF8&yk8yxGd7-6yR~9c+_p z_mdy{T|{_}1BXc)-HpsmBwcIS%Gg3Bm z{0n`6-1+6)c@#k$Dq<7JvnzVV8IM2K9yTaNK+T9 zDg}8Wibr&ZV#dR6h%rYCcAMj057+C^0m?21(=40q8&i+}HnJ!s1p{niBg@Ixu_2ac}@`%I6#2$LNIRp*Z`V7Bp*w(S|sJjiFaxKJhxXNE(doI%Y?$_RPMD@^z%(k1c`oQ{W#j=pY>pFx38TD(pfWaEtu^ zs>PsQ$B}2=xoGv!7N|pPaqUhql{HE;V_9;He?i8Hd;E$JL#F4c99dAtZ`<3`CRHS^ z=7b?7R18r~(x$JfpIV?DddP66=dOZ`TWG46iwt&3^o3POaoG?p7*s)J_`y*C?0v9D zs+tv2^?`l{T|IeM`tln5jD2OBVqD=OCc;5=<3>4d{Xs6 zE_BNO(a0IVJny%K18U?bQE758A6sMeplS_8SB}_r>V2$(t0U$C#d0zf$kkUS)Ix>G zNs{PdIW&9VI_PU;e4VD=!?HP+c_VX~wS=xnqa=kT$0?v^Bg=}?qW)yB2&I;(GlaG> zXRk&+DciJR&Vt;OK-&}iSGNYNOlyOdgg+{J1egD@3GP1kKaw?U?Yvd7sUA=-4ZoK~ z@Mt~_Wh6EusYAnuhK`(hOwzDa4sanJn`BUPH}8j#B`h#2S+)p#GN>;O#3}N0)i$=m z+#Vg~JUyF>$-TC1L%_qq2Y7|#rnGg$ODD)Iz(c)OY*5{KnEzvALAABzWq4V17vl#S z*gVQ=xQqj7x{D>3r&@ocx%Jl*{w6PX4`=lcLCPf|#nRe|Y_y&-zlNd?l2cZH3iQ$z zG)E0J;G*Oe8)S5E>P0VDu-T5OREdU?H&cdtkR(D|hsC4gNz^oRBpzGai>|adQ4iQT zAIldsXFQ43Xz6)1wAndkXmhB)hFJSP3@)#`1$e{WpU07=(&Cj)sw!=WKyl^d7&jI! z0Q0L~!6Z(EunU@*GDr#WhoDyw=nHm5+SY14qaxibuP2XUbFd{z@F6D*nWy?- zw|`NLnYDnCce!U_<8(>{%CFE9e;wBp(Szi+7Ov|dk?43U~P zN2Q#YEj1#0URoJJS2s#1ECndmZCIT!haz2s&89CpHD2#$En}~@zZ(%cO_g|32vGrI zBmV)lHv2%y%#(dxC~*j=wB)x{Cozr1T}i#K{JgC{}?WA^%|kte~cuFtSAf`ZD5e%b@}m zm*4l@)hf+LqGObhuy-TYumht~5cko%(4b%*V9Uf=W$HYdjzP!Dsd>v+L)f2$$c$QA3B%St z%sn<$+C3}#{Wcx>*@UjIx3LLQyG3MZ7#gEHx*Bser$4+_VqPfAK7)X!lPv`{ct<2& z?IL^tLI_j3H-V!WzY2609VDJ~@EhO0F`cKPMTpqN1+pa?gs_QGrP<}iu~Qe%(b-YO z=YNOb0f&A(C--0h5-!MXK(q-jtQrX+<_kSFZx?RU3E$#uC;K~2#cY_yYZ95_nG`zOw$O`2{GDRhvTunZo5se2RXTt zaQx_>%6}OHlNHR;XS8t2$>mt}!_3k(Dgx{n&KQ~wU)~JT!_~-O9q>b&_K;yyv*+>5 zmCTTAqmpQ8Pqu|vW$7Z!fayi-sj@lfQU4-eY0fGM77;s4F}qe1FGxe-(4hJ-Zp5A3 z)#*|C8np4AX}?deu6M0Ca#_jknDQ`;Es`|MRy}exD+aNelJP~_q^q75A0K>O{kVbx zOl`EtK0O^u=_9mB6t@XO9tCg2U~iog*M{EPxBJW<)8+uV;g?wJIcwhQ3N%ie3dC?6 z$eC!MCl6fhlSBLJDOB=~4bLSR5@=ASx3M6T|HaffMTr(`Yr5>(W!tuG+qP}nwr$(? zF59+u*{C?aFr=LO* z&k|Gxy(TW|mJEGpc6^N)O#2>~%pK^VuTDMa=U_!GWP!_+?D9_(6U$IkWw4D>RaHa( zT`YR(5V9U&cQbuDEJdE5|FIBscdl5_IV*2J1{-8MF4k9BGqE_XxBB@9xc%I&+f=*u zK5>R(n2M{N=`)?k&o5U}>@YDD1!one@1}$7)Uq7MyWHTn_6> z;q}$P-1$-&9i#mQ!g8iaV9f$^dww{CV#?uz3Si9_1Sz<|Kgw2yn;f6>@_(t)aC_o+ zuF#D;by(H-q~sUz2$aj^{${iciJ?%{8nE^rn&1Ic3KQV{oEA-kf>Co7ozs2K`@9NOP_{E`~#N2fjRRYuc8F;a&Rs8fa7l;9s5PQ5|$9y#4NGuSq{dOauPQLHE`65!;snIB9w9m77 zH!QraJ9Dr+*~QU53%-mQ>8g~`CVB~23$tyt)1+f3XT5DNAbn3h36habJ@1!~b5Qo! z-LI2TdMFD2yO^H$vbuWyKCJ;i-Ygy2K9BpOhtt`(uh+@tQF>4ATyJk6Byw+!^z2?%voSQuAgUI(Mw$?Trj*@v)!GdSKRj6rsb4#jQ~Da-)cM~ zfD$j>*K)7#;3S-nsz;{n_paT~q1_*pPp{A79QU{}qc?Ouz^otRfS002FTs1ra17Fa z)||O=+U9SX9&o|&@P!h5`@1u8vY>|51JU|3plJ|n;r%}ae&%z0pFlq+5~_O&wo+y< z$KOexA76aDd_K?LbauMT5e?H>aJzln9xGd3k4NKqXH8^sxqW^+pKoO^b-ICD1t(vB z{U@`WQ!#iw?hl@NOr;>bOKU#+{63DP2tyaohU?-?v4rqGFv^YO#m-~(XhVxE%A{Mz z{Y6%`&z?8*xj)+>nB@8FuZnK%9tO(nZg?)7cZ-}8zk5nZL3prwr#c7vq-Nfjr+U9` zzr)0!n#XVn{d^zy&x_0sqokOy*7iwrlF)YlJ*6A__4d3pC`BBOkGRZo6`VIOUi-@h z-Ew4v#$0g4tg;MvEq&kBTTBOF@Mdx{!R)#!n+C1Zd%q-Qyv|xQiF@%L=({d&*_AvG zu;tT+r5W76c6+Qwnmr8Zqx=38V?Af>mX%gP+wd^CzOTuYy<|$D`+C`Nc43B|dqCVO zSMc-$H98A)+BrVbnPu&MR=pW_%AsL?>iyXKA-%rqlNFfcJMX2yI;#_1Y!)!(&b*G@ zao;HkAon~vk*Ip<;%KA?9{)$01}y#5Gb8)%(6wobNZZfpb_b;m(m%TZhQ)?0r^U2N zZTl6MGp{`_kzTqS!;E8gWt)S{B1ab!6n?hpb*B6ALV{jAyu15V`u0`rh52f-&`bxQ z)YD@BYXzt6`=-+g(ffEsLrZqp%mtzT>ELYV@fNsOWDrgd!E>@-h_zgeYr|0M6!%9q zmD$)}aKAuIi)b^(>!sJK2H+OB_xgIS1OGfNL(cBbnDyM3+QtU@?}Eg6b{ze^jNx$V zMMCe|BS|Jr#Ca`6I@jLUR8K|*?jkL04d(N;q>Fx|! zk=>=W{dY{1es6Ll$Y2iq0tVP$FsbGOOs_$rAog%fvENvO_V-L&@0U9Vh)@*nZ0}Si z-fp+|V+6Av-`n($6JN`l%)R}OzylxPWif>Az~au&l^vcaQ+DXEpC4Dq+vyCRUasEv z^S<3~i{Iz-z>V(%-fdrum`^hL?Nd_Bs`gCMQvdb*n0IH}aZ#Dw-jG=S*USw~4$Eu) zSC`4R_u9nCh?@aAt)`s!odWuf*2I;*iSR|23$m+S+v9;-IIYk3l{z`j<4WM7M!La0ha!WF=b~ym zTP;@1&43c~v|>G*OaH$ev~8YT@1AyZIrz4lTw*6VMSHpM^xPP_I#LNL)}K>9w!M$@ zll6P-i6XO4#n+{jPD(81+&Gh=AI z0==|k1`SCV*(W!>n7>fphPQJ$I=Q@@ug8PqEHt}W-%3xBYy`roNW76UZt3>rA!A~& z2VHlwQf5@1yIQZdDUgxISBgPn#$0B*{;=FqU?#1_U0YW<-Eqb*P(6QB`rc~-CM4Xd z`!MV`f$FY~nJw*?eO>`JB^j?Zsg6GX_q@=iT^Tc9_WHQlpYy{@Hx)Yx#u?Coo?P&g zzvf$~4vfCw1U>w-)LfZGM+g89Sv|VtnXU)7h-j`)TCy4pQH%7yUjQq z4oc1H=RfA`Ny+v@^dR0V2vaeTMoYK zJN8MvJ&>?V45JtFYxw^!e+e{r?qUc6AN|U8xFzKMDrT<@JfwR1Orf<#4B7=~^1q!d zTqZV`Q;XgnNbw$!M0Zn$i1U0kJe;!B`)004{k)Canl!9Mn2hMrtH0)DgNb@@zG|-< z7&X(c*H$+PckI}Hy)WC6aI7yscl7M;B%lPCOSmf%5eEyHw(Z24U`4Qs1M$aP8v~bv z+PN)W2#Tg{Hm9C=x~~dWYfjd$6A%@UaO8-iinZYcC^c;xo;ON-Y3?^&Ez~^LWQOO` zQ)>vMuKit*y%OoutED$jVQF+y8tDw=(x^?h4<1>&b^C+|!XO}?(gC>e^Mr=kO2YoS z2)gL4lf&nO0uOxvXi{H*sSLT&+f$=4pQ?+3YhbvCCPw?m-8ONKIJ0I^i@It2+}5Fo zce618Qu~?56}2q}9FrhW(t3Vjp0F#tIA`@xy(0gU-r#}YNc{sjDq}5INOs=bI`g-s zcu@wbjA!;QJ+=zO?(<(eyb|~4+vudfcP-!)%0+H#*u((roS2AtJ`m zVH&LHp+ba=AN%^*-t@Bg%iJ)f*|39#y|Je(0Z}kwD8(D(*4)4%qXkhmp<0kHqhpbN z^P)m$TBgwCzo0;K<|Y4GtVE@1LKIO60_4$lFIFEKtvQnEygv8m`|T{W*=I)r6}aNz z%XLaB)p&z3zFAJ+tuY$uIx@7(AIkNRFcT#K)8=4dFQ0@1Kc4LCIyH$V32_a12uj2{ z+*Fw~=!X(!41A_c=>y)u5=O$RwK|rF@>iPW!2E#0Y}f@zjjGF8o;f_(h*;bNv$LC~|(!K0{ z+hyqxW|D&&Lj=AlxVWNiu%CwV+CiZX6u?qM1KeOifr+%jq(PTEdN234_svq=-Ny~F zenx+AN7%B4pT(?O-T_Knu$MqG|W8@yA2{7fm~4Eu?L4#KNG8cpIi;j|ncgxMDgj z{qJU}B!2<7r|Fb#r~Bvpa_EAuoA+z+!c{k5*6|1&N|R}z<>XH=F@zZX|3YV}+D-#> zecXSgw9}JlHCQTRSgHH4AE4fb*%aHu=`W8&-%xJ>umlpE?PBG@Oe~}BWhbwEP!$s} z%e+s{>`H{;c9aO87oE%*?}FV*dg_cRfl7o2<;jJ@3iiN-rOKd#!t~mZjT|Z8xh5Ni zq9aVCm0?JVDf*o5SB*V$j{W_99`%_;rXGav>&M=RP{&zkQb$>8;!U@ABL7qt*WH#d=CYFbe7a>im{NR^OzKsHzUdpN&V?)fQCrZ55h5({ z;DI)Go3N9+w|di7{#P&;y(zBYfZQ~xzlxjvZWAPlM{>xu;2YB6uX@fs>CXR{Ms6Fz zPWyoD6QzX&FH>P}T+Ob+GnseIn&Kli+yckibl3N@NschWe7GsU-8SY_fZkg}4@jM~ zVOZX%+h`U8H**O$Xq^{eqxahP)wZBzJcUEV6NTwuiU(=>$Um{=ln$p@+C@Y9(Ts{9MEZdIk}?)# z3^{+*GiZ_? zo$`g%Zq_?wm-5bt!BQ{c(mj~GT<^zxakY+O7<fVaV2e)UsK?;3_kjjc+xPIiEC{Dpd6ul*nOV>iqSGN~~xk zOW(?2>UlPS%1bfLO;PpgOII9)AKGdo%MKg@!{lE_=U|{^I@%VzH#S9_&?`AY>CK+#&i;o`nJB&L z6!_%V0*aq#F)j=7F4qU3%wEDcy$9LxP@Zgz*^eaX3p({Gg4!ouYQ;m)%*KYhzl(Dn z@;o%2r`PjZ%790+(Q|sRmxlhUo#-KlcnqEq^ zY>CA>^?z2Bgd5685)TeO6jiFPDN#x8WNpe&pL)vd^0<2$2?zp^{f`!Wm~Wi)j829} zc!2nU#EGYd8t63$Nl=*(AfVxxoSJ60rl%1LAyFaIu=`~47tS~tWAl{9!(eA*B6PLY@Q>arwEezoE@fDbydS< z&f~UX`h;4BAPN*Oy~o*}^$5r8lXcOwkoBh-0Bmk^XemS(?N{Ri1%@|Hy6 zjpI1m8`tj^z_B|!|oHx6v<_k1=YNDR+3UfH=mD$>c5pA9s~;1XH51;XwtxMcd+ zY;L|xap`4yC+a^$F1$<{_H218>d%BOtWp|=Tl2PIK~&}{bZ&m5$h{9hT-bWdhH{GZ zOm7VZVZSs@GR?It8VfK=99}v3Ox#}qR%qG8^MNkh4_%pQEC-ZLfnQ0vjwCKg`aWZ5 zg}<6%eZ-lDZx|Z$Fr!sfeWF{qXXwa~h>q!GnY6y;?xE-YO6=4461DDcZCf~;vrN@t zHU(y-;OnP>(&V!=*PF8i8Sg3Qta6Y4pGLwsfyLYL*mT;ktuRcoP22sfmeeM4VcYUm zcK*7bSf?+`VKrjo)LFk3Y1=Ef3E6;O`W57kNCX63#0DT#Du^zUoIaRlK<#*9xVFOc zY`9}OxVvKlW!4bPK19V9<=K2p8UY+^;03aSGc@^L2tcT#Cj! z5&&{hSK?KN`Ere(=0c(`?}sR-sepfhm!$Y#_Oy*?m6+ZMiK4z_J9H0AytB@`W_{$R3cRYZUS3(rkz^ zH}LkG8M)d(Tgx;?f znp@9rcd_DV>O80F!cg<#=t_cM1%~2vRLFv?x6X@b&;fW@7l0l6&O~h8@E3p;>&@gW zA7kY2$z?rom53!{@M9Qd+1RceZL$!*!jL;1pQa@2lT!Xbj^jsUa@;Y&vSp348?zJ> zBa#=NkqCZAo*K#8vj5v;5~aAIMgvtOI}@cihN;rx#K%rpVEQnc5}FT$&kH(P5DrSn zV*PIM;m^-6(obLfDr2v_vQqwg$`rSjMGBRa99b`OOHaS$s>SnBjoV&R zfr1$Tem|n9c6x7sM6dJdqn+=YcKO8Xe6#%{umzur%6}KThu#Kw0PmaomrcM{N)@UA z8X73N-mb_3y`FY~AbZ=Xjb~I3m2`65Mx1nbpmh~1ng6dk zjf1O#%WKXE16`cDbU9);%8d#K+#k9sF^VEyTlznZyl2`!uBhICVu8w!BD)Ae$3!Yg z<{4_|* ze1cR0Uqt)~e{1znOHOkp{HK(H%s(42;tD2bGn}T~UTQ2lH&?PWv7!{2(E3Ow9Y%`g z(K>`8jspWN(t+BIR@|Bom2MkZ*N+PA&!UZZw8rSSp6I(8Pefh^g6iw{A4!zjuL=nt zRE`B}fYAX~_pTUoIKlflT8&l9z?+hOhj%7S>9M{av&w#~R;7oe>E~UfdCe0nAZ7-R z2%q?BPr4938`|k^(;Xf?{oEl#VA$8S-?)#1=*y4jDI6Ljl&zj)KF6=GxvSWZ$fqH`ay+JV4op}@bJ zcZ~p(gIr9E<5B1jpJq@{XI%FH;D~%87q_ry=Tk@1IKO#U#xds70&UKv=AZ3{bhIOP zjr4)AV+?{XiR>Mv0}fxv?faJzJ9YMok=Q-*fWSXFD!B1FEp1iNh+mYuVuXe4B#EyP|yL;k4zV<2Tfr1#-O_#j!Keg_YSJyii}Apk1*}gLsW1?4f+j` zRb9|S6!-_7e{jZV+LWJ)^^xZ=HvDE22vQy5j$FD z*B>WlNC~{#8yuE>9@=c9axXhpgaR-mpSI`OTW@Ods`bueex>xgV%s%y+kzdyt*I(k zgMc>C=tNJw=WC$UY8kKlXp`K!Sph^%6}J#Tz?w1*F{(--@WFt0Fh(r!AnddQ?0r>H zKiZe)xbzYX345W8l!?P91nakZNwlXzf`QHw1lr0S;OWmJ2w5gNdvJ4X*zDY#_X_eO zfJ@U>kx@*4_Ka$uXYa{n_e`<-J-REs>~l{Gx{FYe_^C-Np{`mAX>~f`0n*{yZBfYK z4j?SZy5N)|j}0WrF(&nKQV=p1%@dC!WT7sq9}?UJz4a%J3U~dU_-1;2-WDHltpb7g z6%Dl#3PS$PDJ}zgm!COFGr^QiE^p|CIEN5&uSPBXe}1!LAd_>I&VBE9$E$wUa$_e$ zeQsaV?P};!Lm6@G1Pqk%^r#p8_Xel>kN>j1ZaxlNX zEzA}d%O&%Xj(w?D?Owj*sOZ!KY}gRHE-4 z5c8Es?mMCYPyM9w>fWdfCy!259DN45Oo0&OAaVZ7kC5COC56R^wpxa^S5(}o)GZMQ zFLxX;KIWy6=L%S6`R-KdnP@8XPt~!Onyh`P)YYbxh8boCvuTiUr|JocmFA43cO7@p zfhnz39PnrQk>1xrsb-!4g#xI@0tJ9Vfno2P^~~PwYgku!xAeEzVaL*YH}p5y;l9un zPC48*+;i7~!SVljAAYd&ecvB`7`k%5&xx3Bqq8t-R!2P{7Oq5>Ia!exu`x_vo`5W% zSp|!_wlR+*x#DeRoB4q)H7mM18id)@$(!YiCkhS8;>H$7J8d`R3I%?1^(NZAHqUHl z@~9O?%8^`248l=sASFt2S@t;{z9y{z; zY!dowVf+cRcV=jDl7Hdc`hdMb81oRrnXlGkRP&oZnR^*vqPbLJi$8k3lArRMw zw~^R~c_#T-Zf1G33ju^h%XDrsVps}1jDrxUl1CL?A8f^faQZW9`0K^8us&Ok-F0c2 z!ZLu0%#Ac7!)nSOY`VWWFqw?vUHuEA!GHS~K4o4tJ!v_Va$5iC{^0enre*6BJ4?YD|gCsu_Yo+o) z>EO+BKfO)fr8fZqOJC@%haXEe851xB^`zl>TQKST{rys+g$!iALp7Hgw5gJj8sfuL zKBAybNFPJ~qLjppJ`_Jjv&s!^-gNpDp;=WRXpZlnX$GW1D(ceEEYkuB0ymW3K{wy9)3rQ@tSR+ z+t|X!XKV-&Lje<$Y=400C}C8pj1Y-*c~UI{qTRSResvVAdx^}6Vj`WSq9oyDhd>g9 zcFrjj={TzUB%?zc!T7%Rf@^j8>rBmC2*6}r zc$RnAmOB$xRIT8Y8mS*&c$-=asIhz9=V$HpM&JQG&5H`MyYX`PB_-{8Z<@>vcsKb$ z2=G&0t0+i|Y=W6sC_*R@!5hgg~^mN^plGTKnw)Y4IAMfFoIx22Dl`Ml%CsP5A3xMwCn6! z(h2lRGj*XoQU|%=zHIsrOs<+4(ZitHMUpWE23jPc#;ik+Yf=wm@M1J{Rx0tUWCRjn zEE*??CYE^*WQODq#f%ia&L+qE^Qi5 z$$}jz`s`q1deA?&1V?*d3>|Xov7rHovF9^a-T=EvZ$$@SYp2yw21t4Mdp+S%wcwWo z4L&ns(;>i>J3WFXCDF^lrlar|vky{v5eY=)1go`(!kAA!Thbsz(e&o=Xyb+3RDd;YbUaaqF~%=@8bC(KD_Ak^(j9?Bsb=lxbq|Dj@qeXXK0G z3nCvR72l;Ptu5btii%S$cK$_Cxl#C0US!3oNv_aOxR@!)8wiA&ft#Nf+LhTX;+luT zvLrJ$>v3A6qUuDaV6VVV8&SY;3YI?2<4;rBup`*!e3uI}k5_Zm%Ha2N;DUp1q&zoa zm_??}m)G|XVP#Ir3=;lOu@@Zv*IJ;07q9`W2g6ExHaRz%+k03Va7hVSc?Hlu|G6N) z5^*Qh%>$YLn72WpqwaPZ9bgNiQlO0=s#M>tr94@`A4I>9%`u;l^g=kIaN#%vauOm* z93;@<9>cK)dFhe6qI(wv9?zLAoM)dJxRkl8DF9K)YfwYo;r^qFlKmsDHaUb4#F}=I zyZ_f)MLl2q2`xL9_x)5O zG6jh;R20TRfD~y&%94T+drPV%!C8!A@xGnf15yRgon@b9@r{NMAizi)*?wwDz}GT} zE;fLdb~g1bkfkCN?TzyuC~_Zix8o@=xe-M>ukY_;19D+$fj@xk9fZQ7Jiobi7{|Dw zBvGyr{)kGrEJqN7fUcNy`r!!Gyn$?to&HRul4zH-blhEa#>-Z`HGBBY4DArHz%rzJ z<|#;2E!E6~yqLAItmHnZq&U}_ci5ol$c$WdP4dP>OXZByva4IOI4jQS z0}yW~*Pa&HN4+abD2ZNh~i4AYzxVJbv%knf4Yg|si+ewVeD_x@~#uO%Q``k zItY+4kE!nt%cuU$D($Vh-fw`&zwg;qsV3Mvk~E}ABsVs zvPmY>3pzUK3Wbjd2G3&Y{KK>ouQ@854P=ACD%5>_<$~#W%P;k`u;TJ5#ibIlAcC!8QeEkKSuh{UhoCt1`vw)+Rk=6oS#As2B4i;Ps+7P(dqvN_MVU0c( zg=^0b7)ufwZ}!|!3#-mDGO3&js|`*El@}gu!FdVK`SJeg#trF@y&UL=R{J3VMgVDg z6(*U07>iezp?n8BqIJaGAo+H z2H;xVi^jFwm;6D%Fx@FDPgkEVM;#YNFN?5q3x-`+q`%of)gIdDNHklf0gdMOW2KO= zVRS4w0l=9rE+!MlPUT-@_9(K@JV&=(6>pXfARG{rQQsS`~m+7z0jTO3{1- zqnvS+W{yiZX&n-cDo^5tKLT0&YuJZVo<9D!n~O)ALaH8H1{Y^>ly{1+@A}XfuQcP) zQ!e|@5>Kk;jz)=!*MYOT$iwd!F#B8KORnTQWCF-vS_haBMV?!Oz`6XZ4Ut$}5k6eP zSzY44S#t40g0&=M#zvN$tmx6E;f$e@3p(cssB(vDc?rWQ*e}dv-W&iqy0Dy8m7W_o zN1W>cyRfEN(WFNq4^SIWV$!OAhNHv$>VOulP_?OE@Z{D0jqR3F8rtQ%=io3ddOxFk zd|J&}e&o4YK>GV91eJYg3n>6P8W<(W-~&+N{3=+GS@;N?+@q3v-?#O?X*djvAX2ZV^!9!c0VWf+@3A3 zs@R!oi;Cc&*(++@C)$~aDL$`fhCt+1OURx_g z&~k7yp6ofH;r-mpfUUgIQ3^K;UX{Ut zdo)cgXYK#&LX$z&*A)n(&;w@vt>9WB{#6e}XvtDpAVtb6Se}bVtC#Atb`|K?oNmqR zOZJgE@R--htS1>H39bMotjx69vs8$C4CJew%%4?vmE8LH*Na7EzGzU)jaSDgYZX+7 za~q&nMHF+2hXp2FMUHgypITbXgq@ErpaD!Z?X;wA2UV2}0Un^$RE9P+YCExH!iL7h z28%%HA=cNcM0sMWFD*i#)Y)#Yq5M?aL!hGr)#46Xb8~qifz{2Jl^7B9tBXIW>%!`W z%@-9G;~p+Bkn6*^kOVQ;cb8VBt}@#X zs_nAxd)c%m+RGEj`2%-%jsos1f9D0cLQLn615N{-I(vbI90E!IOKlaWy7~FoO0HQN z;U%Xm4uTMrh8PxSbY*w6BZiCgz)SyiI*JkG+~(I5-s=7EgZX|SA6}OnhH($7T%5u* zA1r35Qp@d_)p~OfX=|fYtr!Q!ac$h@}qvyb#QcyE_zkuwZ(fReT1lHIY)wD>BFdmb>Zbjy2$r%z%ECuJ(MrdTOc^ z$+6^sOrR8Xs1K#IL{L(tA`5QS&f<2mMfJvxAwzoz%<^e>yS0qNJS!}22z}00liTl! zo)&3Gm)qgNiO$o7DW%Q8VEVLja>;<(a-rLHc0u;aOyL0@I{3 zcXT+^I}^X4t$eJ(@9}u}JP7BgNIdbJE{04#COAAx)kvdH%eBjp?3{uBN*5+w4N zXhG_Crsczn>cN(Coa|(VUK}2<=2UAY`zj^$mvu$CQ2*0tVqnEUOSb={@6B>0%3-5h zLLlcD*0hJGr^EZt^SZ}MH{_F4!Xe8bT{iEr6%QbgKr7R|SzF5K*4N1obmz;rR@36K z=(k1@s(h9vKCkvux6%iI6TgjylXpf)ODH#r?{-cy1<}4%_?Ldi%eu~v8N!y_b)-ll zXNqAlln(t@l3JUw&XiG(d+dvgtHb2+t9sxqh zfrIHhl8-0Hl#Z|1P3BSHP|?Y~$$^*8;EeGa}qiy_mq<>c#8#y38E@Ziof3(7B;rhHY9%xeqQUbZ^# zn(0%V)T*45=zFYdG`2ifOGz}<*l=P7@z_tE!!&@Y18d^1g!;`dcr4IYXUt2D-7i*y3v z3NWHg*I!{neGx@_PC@q&*H%iy#3YkCW}2>o@(>=vnS_zF(^$c%bI_I~$(lknvss*H zvS|w*#2xw_EqOHE3q4AO@~9@ z@{-4Ko7ohxHW_Vx=|~3YA{-k4k{O8WrE~5%br`jox3j7iO3RYf5|` zim2BiP_ks%lPFJ;N|w@t5ldhwoV?+bU%?i3^RwE@k22S2AN%EIhVdZC5-a6oVCA;N zLdxZ25!vDbQ`2LBr&>VO{szq*o0EK>4p)B zKQ7@0C|siDoF9-2JIA}HTd(}g&Tj95y}!(;t~Sj3C$72zt``zXX6AGF6l4;lx)|sQ z!ni;IW=q_ZLyj6+ra)y2a%r!$u%CKn=a*jT|IRDg_5PZ%A|Lg#Bp(R%kSJ$nhhDRk z4m8WIKZ;0c>NNtXU64g}X0G(ixwjVd>=}Fdy7cemYz#q&>8IwBLm6x$$u2?^jH2Th@;MzH zQSfEZso6V&B}k?5Ay9eB77CiIUe;UUeovSk3n+>qz4)5S+fTmSoj<=-0rl=TC$vI;yc7%BYNU<$AT9|AR=^TSlIp|FNWzQoNd_$8(6-g2<8?@B zgvH29hy3J{bE-^6pMv>(KXrJz!~jo2vwoZ($6Y@kT{k~pUAl&#gUA(CYy~l?v<{L` z(oS@@`6>9qX^w}h28`%EniS%#(;NM~RgyPW@8Tq>K>O7jI_;(8X?4OX zNxLtsqB1p*=OQ+|PDBy>u}lJ>NLe-)Lzm>48+E$cv$Wwhk=T?dFaSL$>lEnf{3>Pg zi%x*IweKg0E0-FjqxAad)jzo=ozMU}k*j~XFzvU%$@{(P-OE~!t`UvBa03y?6$nkp z%PcI#1t?6W2>!O85#IQcxOvU#M!6jrdpocZ;nt$?+qDX@!kFC=4H|G7=gBPAS%jvxDY9AV&DD$PJdT7sjd zKxxFa5hV^f4?|DlCQpt4FeZElC#tGgEOKCi8ep^Wbhh`?>Am}u7I*X@{iRW5_SJX zcs;0H3vGUPeJ}R*zH*l$l8g>~i&Uf(Jc$l0ZdoL&cs>b;53ymY}$q! zO*22TePeSs*D$C0jF1JDfXi_{FGuDol?mV8&6$kfszcLgKb&qjDJ-;okn(DF#y~pY zpZJ1_MVjNvQGnCY%4|H~E#xXkUzl`K=^d5R(WTrOISA4OwiVDT8>lFEsAHE{+k|Iw z5ytJ`+tMlc;toU--FAQ2s+<1ut1DLa>=+s+CYZFXYD+T|F{Ys|SBn%XFY&5C2|k;n z5IJKmd8Y9sHc`hr#&H{sx3vX=OZu?{RzW7sL( z?62kWY1*uwGoUZkgrL<3pw&oKHAeh-SQXSkEix%H6k_h5f1$kj}#0ve+)EmD~EL>KM?>`*}VySKxrUO7;|+ie)R?@ zS^zIc9BPCJ>lZiocwq;~!kBaT4=u)b4VaCu8xpITpTlL1HFebe77o=WoUGLQz zpQ^+F`bm=3yTzIj!hR~%tO6JQeUFB zc#-2vQb)*4>STP(i>xitB}Sg+bye7CNuvXWrFzmJ4*0DJR&Yz6t$2zBQb_n z(V7I>W1h_G2sF*h-3-uQr@GNL`?PUZj>@5FS7osgiNyA_xiqpn2ZD=60GG zz@NA>!iQLYll7m}R>7Lt>3mY+8kyTgawMb-$8fSnBtp~q3%YptxQ_G9Y?UEi`g2W# z9Ial;rhJaIj9Hbq)q6tg5FN8nKLTF2!{0LaIG`}OdTNc{U6gp27zW#E_*;U^DubIE zpFMr3)Jo4a8|AeT&vh|mO!~cg@KhGF1qORtpsM?j_7r&oP8U<;o3_rjf~jq3%s-|E zhKVU}SG%<%O|##}S7kr<&*OdFSH4+E9!vY-sTx;uG@~1NnyZ<>M4GRu{Nn9T<%3X> z6`pyUdKL|_0DX8=vG4xHe%&PJeT6wHg}@+eT8Xc5d(#2fzSZhDihzx;4l1a8s{T4E z2Xj^1;M#Xxu9DC#I&69+QL|9?z>+Hf^q}hJm5O5Oz>>cHyq#h|`Yk#x!!EJxhm@dk zndki2acdS9G0_4@RrD9Ac^@vzR{~y6hbHe-8xo8DHuEYJSeW%Rnx8^f#U!x!Pza%g zs|ohC%}uQKmDO!m1Fsi3%{P9PJL15xCI&htlg#>)&M`DZ{1e;)Zp*0%&2==3<4*{N z=Ee+kZ}3CG%43)|@iLkOT`zS_CiGXZ%WX*keki^qBhdgA&mha_OhCj@NRMzPQ^ADe zVkfTG4Cn#TObg+~1`O~LNgP@%rg~qm_ZNK6ZN?zt`efxJi3s=(S^1n&zhMZH9?)D~ z>uZ zEmTQwk~MIIVA-AN)H4X+(u{-Z0C#tlmU>8u%LY<7Q*vcno?f-`h63Y8IZ5FyNm}0b zvOei4dO7EZT8C=?M^odahPw2Ae?7+)G+r0tO&(bSplnFp9X^GbWKMQz>g1JR)!u4k zCci%n5i%gCMGzrI5R)WDTX-sHFOobx3F-T3%KRVRIQs>SdFjFrf(v60z!0VvM)WAH z1}Rd@#CEykIue?8@s4^xqWv!%`<2*BAZLy6EL&_%XbnJeZNdCijrvl%Y@L(>Vnzvu z-w0;o#K!c$Rt+i!X$#F;4g-PCnOft;Yy#j_>h|ObCG5>w%Wn7`A^HFtHWpEz3MjF~ zP>XvbM0TWCj#u4GCKf=jfR@-vG&GrfQ1|MA-HnjOFu(Q)oC>{}QH}JGMEv;;^TVD0 z=@1Lp%OHyZ?D4x2yOxbTJ2JW&aN@{a``pb2ohf0vxt`F5sV#oCsoe?yl(o*|z1+0j z(1*1((POauT5vvG=k*$30bc$S72DFWh9v6Siu#Ri>O+f9?=Tklt12pspv*}|elS#O z*#Bcacb)r{3-!M3567ALX(n7;CEJ;OTc2FB0OwJQs5zfgXGJz83btM-GxBMUSXb>e z+u_ALiM{QCUARqEflp;#8MnrxlTG~=wP42K>O~{Xf{*+WYSJzLH~wrk`k4A0RVVaI z?d}+TEz9F;(Q|I&<@jmlpz5N=fpv z@2Z4h`g;odC+%(}j5G}zL%QqaE`tBz#G4!TE$wl=xGURV?qXH%_@1~UTEz*0b|lFS zCt&iyZ83mp=;R|Wv$a+-eI)bWm*gxRTF7-kYwDt+zAv54uK+gW4>z#({kS)}P{WNu6J z1{H&6R?qT2E%)&Rxp{3lN{PN9C1f24cl-012K$vm$9Ckd(^y0;wOn@Bk<*lq7T1`f zB72rhy<>wk#?PvC*C|SRp=ES2!0y=aB)}$x-<-B{UJYOIkeQFfjS?)75SHDZ#DPC> zvcH8znaCK)@*$NehdUs@=fwR*Iskt7I&$zI)nR(xOylFBLlb(r z(rW*?(*HMTZ!TJ3Q^H4=>&o{hlwwIn5kqep^TRel>uXQq;p>yi4y@_H`))zn6xfZ0 zIVspgG$O-fjmd{CCnPGnpTpiD zOuWiCrD+b1j;fw_(7;4RC$>OZz3OG_Iw_VI-vI`204oL@WsdhF)5L#Yb-;VsBt_j?Cs@j2T13?K?jsCrcxV@K>uuVFn3Zc5A#+Y?q<%aDV<{W9m|qax`l1 zYM*fu1l8I~>6~F+chfG?ZWEj<^gun_v8V<0UyL!KuN|LsKq;Q|f?McKB7l!#kcNBq z;3R#{pZi3qNV+seUD`jgR>xAq2uD^rnbMMAA=xCDO0qPJV+MA}F@k%*lW4wMktv@g zVIp70u2LHeyj;D(7u^cU9PTeCEFD;Uy{VP+!|Bran$7y&GG7^f#I39=h!G z62J?57+cJXcOsD}8`%v8Vr3O67PW%9q)IK}LHphE>V{sV89TH|=hlwLs8Xzx=r0CN zNfS1AcL%xL`-7XE{px22A_hI$$j?)Th&ZYXVrh?w_y37^BSouYRO*=~4*soWk{~<0 zvsNH>LNjvW-I?&53>>c_zP4+8>r6YWf%$2WvG|v*@cw+*F+VAVyiIoX6=#+t-)q`r zOu5VsCG|^OJ&rs`1T#WM>^N&T1AH>1l)lU)%1W7tQnk&zdfA;>7Ms>*w%VZMu|&17 zi-5C>TJPxuTOy8YtS7r-G%j5_5+&Xy>il^|3k-*0x4(_Nr$Amj-N zNa`9C5oKK_d8}K|D213sWq(C^IA6T*9`G6L8 z4$Lq3HZUETQ;7z=1y>S={x7R)i`L&-uXTGlYtQegP+_1-t?|BfG)U)30#uf!! z{(<*f-*20>sR!mqz_T?O`s|Fxa8F!+)2B_u^AH7kA?MZ{g{K=wx{DN{sy81hgizV#@uhiPK=|`gxXm3U`JiA1XHl=1D&x zNvCQEWu^ZR`n|;aL}Z3i$M}ELWA2+Jr5=~kdj;5(v|84m8+ZtH{^@71;+HG8dW%uz zu9{ZX*IU5|+}^96@7uf?x7gv-rhqE${SYGxOEXH`cct^5$c7+hH~N{ue;nhU8c)^c zqRg|~eb{Y^gsuZU`3Tla7(%Rb_R;5E1&$jfI300Ffx}k~*0c!WLjz(q?I>JSAfAqq z=S-qnJU~S)mf6yl2G%!J8~VN2HH_Ba?7k^!pjoXdt2#$hgHnIYTy){xN(pT{n0QS; zN11FOb3@aM`H0t@j~F{BDGdxe7FXJX(>dL=6MWj=(~H7>Fgnh1kVTw^#B*qYmCQGh z)^0R4|O757B^E>4^=Sm{`v|H)4-_z)I;xiV_;K={Wf^gBR%?>j5hQ*|4v5!ZloTvXA7rYR@&q)jNfg|#_p%sPw z{~=K0DL*6!nUQzWa2|?;MA|Wz;&%xa=k$a=_%!@wbjjG$Vi`M5x?QZgH_z03ZEK$4 zTvA3VLud2YI(A89+J>B=gUd8hs6Iq}oQF-<%-BJ~YT6Wk3o%+(mrHj5 zAy&eKVNeS_62lT%6+t?mOBiYQGPx0rpAyowBEs<9}nGYieJ^wX;b1O$5L(ZrANK8pp~tc3;d zTEJFYuPWbZ?>X`0wZp;}3+dBMK&mm_4cn|0EO&cm4o%{7B+HMhDVXizDTJW6!jW zdg?Lz$AeVUhFp?gAHOOWLgv~236;ZWGZ{C{>SjhbIwws(p;60TxZ_@&tGCWqNiM8v z#IK{fd-F&x8pLBs6k+^=uqmYTkc~2BBOHW%wZ^w(6do8-Cz-n)9`*+cD*JD>9a5^Q4#-}0W zf~bVHpC7*n0o%{aqMKis@?|4FFl66Q#NVeoIQldq+Bnzrqo-=f@ymvl6_7bBb#6MV zAJ;)jAQevhV8On~$8^Z|lM5IgIz&U4j1>ZD8)VY0iHP1g#%wTU6Ch@8!C-O3@bd2a zDCWcM@jtu=&ZMFci`lH%S;TUpx&MO>O!k5TAih5qio4|4+Ic^_@lji{mX|>De26Hb zZP%z(JY+-;AxceyA)7)#sc%H~J)9S6(VB;=Ftc{@L;e@>qlKL_Q)c5%1zU`CU=vv~ z_b&{z@zo`T)J80dmQdk+nwB`^srfX8UdAIL{WS&Dq~QsjnE5dbY%TG0F%p#Qu9h@% zVXP6EH`s4i3jNEU5`v6-jk?)u$kUtBjnL(^a(uU|14j!>8aa`EvucQ^NDlunlxDU< zn6yz)Nq3Jthg)O63O$ovwe#E66NJ}7F+$Kqj199{<=Y-~ol9LA0|$mU zAQin+Ep5VfC?fUtbSU7OI1vZWnRIjNsxbRHfEO+K0XW6nZSH5~Nk=4C9Zakqxg~3U z8v?+b*2gL`-86F;gpm|+&2inj`q_r4>UbK z`M;R0J$9zhe5+G@^%lZ<}Piwg&4r$<$4;unib=+}HjjXw{g_ z)xa?RS zJ?D0MNd+c60#W-G^h{>lT~D8DLnNPfi$>yHtP&<3f-dm_{gwqx*W^bkD~o01PzqZq zG_OeIG|3LS=i|wwbY&^flBf!QBtOkVq_1>5G(6=UUY;~QRNx|+Ut7y?Z4|58_-Z`+ zYlEyGP@GQV`AbSH6lA%>dW=}ZP=(;(JJfb+1S$m(g>#DFVyN% z4dDGB^GCv@TtP)eEbF`vhprB;G|yMqn6`6Q1DgU{lPABqC-#8a?y0chuP`0wsh~m5 zVY(#|>D1#{43?4&2CQ?Cm2v$wxkCC1hm8#d`u$b@lTR#3Qx0dQZ3Ynez89!5^udIC zw(N)Kmb(}{XI=ZIG}*+UFP$$FZkNQY_CH`=T-4d8-Y}{0uw_zqp=1y$((U~*I7Y;7 z#?ZxIqvFFay%ArX`Rc^>bIcdjsNVO+kzW$mZO!pN5IcYD_3|bR(7XVbJy@$Pox@Ad zh>*m9991FHohn5_V_a0xTd!11Dc8LC|4&o!Wn>;4T7qz2a=xTXZrj0c-QbwIdnB-1 z8P2GCxbMj1D?g~s_iKlDAq$O!q7HK&d^Z%mbKz4yDo+b?7H>Np{0io)b>TDUeLp=W zHt=_Q3U}yv-(LlMv)lJZ^WdTxY7D9zauCVewhdljSvGnyu&e$T4y( zmpR*zYi0_@tUAkq;2)6}%gm-#-$p}*1W{-CLQne zq05qEV_M9-v-bjZlQ&;&+LLmCS~#gFj)1E9FGPeESH>I&amZ!fje~%`J`i=t7=Cy| zv8s*5_#w&<;GU-c6Y`C3wf+y^N?bCs4u+D&`75(^P&n+m6JOp6BK$R+;l(`uF9!LURCvuvk9>@DW z6MLEJ^~T*LKkZRAbpqe+o;$#^_PmC1;pI(kV7;Y|)5j(0ln;FqKzpwGpwM&xCL?C< zyW*N|`=48HK#Si4?t$NC#}y^YdX0M=%%SZDd~OR=}_}G5Kp>8*e5T7W!I*ma8-7Y%_!j- z&i-%7lwn0b<~vDW0NVqRf%oJ3-n)S_yN4%>0&i~XCzqKbRnd=^^pIL`w1nJ86TuS@ zp~Ht8?H)VFGI$hai*BM;Tcv_|JwDH;0UygrE$gDsCfkL#GDiD*!Sl-lSV81JQd}^b zTQ%_+2$$OnY37NvOuS+7DOwu%@@9J7(AJ(Y^dw4Na5kq&U7{xopSm`pY>!K#I*7QN z?~FcbavP{+O&BCF1G$Lm7v}MBgDKRFMtsJgDO&nhZy!MRtRe}7dA7e?6?c;v`=ZWs z;g=4?68;p5aiM*eBBkbQ>2xO?(VF>tUoBeldL+>h3iYL$*CQYw_0C+{V7U=)B^&$6-V^b(cfST zYC^##=?~DMJf}+cX(>FSVw&I5GOD*24v$-cR6Ut8OELzt`vLTO2bdTsYV3be4Bu^0 zq|NCJb^=VEZjkeMd;`k!nzT&XU0)5=b0Ly&LlQ-sWoVoSO!*t*Kf`o5-DoHPI7QS{_?(tpS~QGXm%3Zi2`BM_&7T zuY%9e3IjPU$$V0Hh9!&%# zZDW&yPYY>O6;O4z+w>3?XnDWP_!;zHMdTwxiyvKTQyRJUnbZETpZZRcdbH~%tkJB( zDZ%X7#bj!u8(&4sv?WA({TC4Y5CcWi**{@>$bnj(z`$SYO~v-$b?JTZUsWQvxy{^r zw$N|jNAQ|Sj=`ZME724ahcHiEY$19yA(FNIwoPsXc3Y&OQk(8)#_8YRhgqxNr~If& zgwy&D_kg7)5=&RHmR?==d7t+CjwSY`6iVYLvuL*ttd+Tb1eaLm&hv?`=3`-Coo+QmXdZjnkaY%j7F zea=*m`1zrc9^=ExzpWasU~gePu@F5$v|75{>`_6=!9r;U1`12qX2@FJ^2bV~`wW`d z(D)oHUt(||)I^7auB+4uzSAEL9-UWCg$HtKfhm(bI0ySneClQX{gQ?)ZJ(?#Tasg% zxJ3|g~+LkMlY(5rPBYP^1ab^^iQfdXSyu?(_TA_ExU7E?;m;OlE$6sd>93*y<>23 zI!qs~k+r5bwowG4U0KaA&@B*Ir()iLyGW7I|Lb1N5S}ERPV`_>UBjt!)&E{R4@6SY zCa*qUE}%8!76KnlHC>#rMMV0P8gbq)b?rU(-z|NM45`~bP4B0IiuVUnCKSP@Z$$fF z)q74}tGzZvRp~0vb&g=?7zD8LDi7DTFmxk^mW)KfP3oQ-q`_w+0xy@}^=AK>3H@o8 zw;AY#!wSGyA-renkB%8RL-t^2f#&?^_2mj7^xDG2sWW}n%MRK1S zSea@tBd2DbF0oY8#AfMweX?{eY8lbM)*6u;2{6cl_bI^F>Cu}EB77NL+)e$EkHy;jG4V)0f~}CXhZixyn4=oF^3kjFkJ!!5c<9cki37 z!+%|)j}&+GUh#i;=u$(xSY5OoudA*y-4#-ZA@Orw0xDSuIg)R z0l%=6(TNnv;>P}<%E-@oSJli2i5BVSLzXtfX^$^(V{2JN>)0oZ-0PkhbrRRG;t!w7 z$=HueQWf<#9-REggC>D5=f55_qJC|#3)-QSUafvSb%R00rTF6hA4ltTD@$>B#?n^ z<@fjJ^yFR11_d{zGn)2SC(TbEb{h)w9-kD%r60j0g5@bN*Zctla8YD07Kpp*q%-Um zOO5fya}Zd5z*q1EZA4gY^Gj?D+n@Ekbe0a9vLz|yobXkhFKupwc8fK3b0W_}DV|1d zFwM$I-GgA1%*)hkdwl=bfdqX6L3Vt{`_&_TDeAAYwQh}xR_8Mo_eXpW>z~EOxLsZE zEZYC}pzFd3!QzHQQL7e;{4@n;|fAOTX~$@IW4(mER5c> z;MBf4a{#mBv+qK^(q+)koMeDiRX1x0D%Fo8vRPa`c(3E^d0V9eogu45 zO#SB=BsRw2?%BK+Z6snv`lVo{&DJ#9Y+KvXlMbCzLX&TUbeh>!N^H-)mwSut{(|MK z$lch1q@x1Z)od)^Yydh!w74vsL;>$TANsQXCUwnDzyjTKYSl|AT3oVuopZaU#!S1j z_<#IIBB3?KFnt@+V2-N;Nm9p$J9s2*Ts|pF=y|H@r~e*KZBpKc96b$MHU3xuAVQEs z3%8qVQ!qt`Vkc;sByKi-JCMB9ftI@6%Z)c&c{CXLlh{s&LH6g`=EJ7UO2Sgg`(*o4 zmP9FD@Ey`6)6decg3NckQb4ARgEF|f86C@}C(-T&&PHPzmKDaRn#hr3#u@&9t!M^` zdyEgpkT}I^cSOH@NNC4iIyuC9^ce$u1o^xk50vf^~5%o*jOwmw9b=F;mE@Z{`{-MD^(jg6OeSQfw`6ETXE|*HOl^7#~(G)h8)S z?;pc}mRnE3`kzsNUL@YcuxgkU=IT-PC=kB6ZS%B^{L?89WyT7H(y}Y zYW0LOSURr=hae%*xhYg5VlvfDU3O%FvzfZJW?y2)Lt{wHmre!tmOb( zwo0{g4P7LZAS)L@*=X)0gSg;nP@0kNCX@`FvQdzzubo2cj9U~0kCh=H8*GKig2?CH zQ)_a$45%=MV{B37dsa7LT|AAAx35N@ivkbLE9g9kM3vt%;ut4G3F>>4W2M;`ede`eUQnP;bZr__-2yq z?PB-7n&31ehTMN%Ieg*5KddSv95=2WJ}i_eYVg!_RoE+4Q{`qnTp!JCy%mZk|^(B{WE`mF0`leO$%DQ3d)ItsrYgb z8p!EdHrF4sqKJq@P<&;5+P+8s`dly+XF3j&3Bebe|2h$5KgpB7Ii{JpVN3Qqwe8t} zzB|5G==uD7o%uQs$Cksgy&q&W@VmeBa=E@;DEpGn6ZHG{IAg&1b*~^8@Fv%QRsQN_ zjFvbawuF!;;CH*(Z9e7NT~M?5&Dk$=U}es}&i#7vY;itE7rcLNK%G+X^|DQw+FuaFHcE{#|97>2(^}PkZt`!k(%N`+G{bU~6}H-F z;Qu*jl484!Me=oj`|aR1O&L37YZzYTs^8;T3cMcMx?kaNgul?-+jc_9XlYr{2H! zV1+bF-ORkT)75t)CfS~b&P&cbWay&aX}`(Il~Z)ioGlv)qnC><*C%_N(&L}SN@ia? z7FwSo{`S-Lo!K?|uhCw19SX<($BY4;a7i8tpDc1cr&b;%7vf*`$tu@LG_su6`ncBv zHJFI)UTfY}@)AeWw4$L1>E`Tlaw1Gxgy@{%1x`j>+4^{#INjdv$eT6+y|VVMpKsW`Rswl$MN)#YnNN_3m974- z3t`a{t$BxxCDA>8Lx-l>&m@Tv2C-N4Jpz<3o;b!Gu>8Bbg`HJeNOt}P&{y_qslF2g zp2fm|ZwE(oj4Qu6??5tuYrBsKboL!GYu@(WsqOqnqYw-|Db{Rdu&hyXYfr2Jxa{iy z4Vd+kx$JWe*rrtaC5;Drm13u_4RF2ZWojXOsuytqLGIt0ZaRkWw7|!5Yomom(p;H4 z2iMo%Uqcnj2{09+LfOBJgUP9n6aw*f6Ci(9I6br;?cK2odOw{xrxVb7v-t4Ze7+2F z0t}Llb{Dqa4W6+fg{}lGKY5vX@q-)|EU&+=JOG8b@`LZay;)(||2_`x-tRmB{?96J z6W2t(Pg%WXy|ki!*^oCkr{gvZ4`hrOd_)<`&r2jRzT|!{Tw1;NKJXD40+s;|p#ki+ z$4BGMObFO^1k7Jl2-oyS{}HFfbqR8+y|)*3`W_@b(yb8$<-IAb7e%wDav)1**+pn-+^iY);-!$k;zD%_}7n-FI?O9`(gn)HjWOY z;^zW7=?8J|&S-jqHAQu=ZNDz+g)>jhcQ*+X1*-XQ@U7P^)df3_;fSIBu!B%ZJ=L+tvBmLY zl6Kn5U)`w@Sbu&weM%&Ke(vkqM;`~F_WEjX2O*#Ov#+heRf|(^=e1LQgGWCZ#2AU? zE^^_{3bb#6%Wn{f=ky}4sN9_PiQPrEughUJupO`laO`*XE}tZVNcrcF%hqvI{|}*-J@RkaJUtAW&35cE21HPU$6@tBQGw9OxF*FXU4f`=5h%T zwM~-V3?xGMMaQ8M!%o}e3R2@!n+Q@);tA|zSO{`XZ=&sJQRc!Qf0rb;nMXFe$L9p^v5Q3ya@usLt zD^Op@KyL!NQEdr{!o@Y7Q@x?-c7h4Bt{HpH-(EV6*fYJar{UN$0CSjVn8E8h@wUYh z+4oP5`=nS+4MMBW9%QtL(<_70#XP+xHaNLZu)lI@UMl3z$$TVHDia7lWo3p^n$~23 z!G!glG5|XV^<%vBUN409(w}tth~Z@zf+&FUN=xkp{$W6SA6w&?a&U;LJ_JTcGS!ia z2uG92L^wU@ZQ4zpWa`cDCDV*Yc9N8U^X>J2$SFXv^LPA<(HJ6DA8D-l@we zE}a3o*=>pd{wZ+rPViUPZV`u@X}3qT?t~$f8ki()t7>q|-0(o;=BNLc7Rs(;p`@KCRCs`5j<+`~sE%YAY zRTKMd>k|JCg-~ja|M48AfwzDmVThLmIv3@WQsquf<6LDLx2_9CrvL-&yR}_xFo=Bv zX920JW)XKbFc~stc}*ov9q`9MK}@C|lTuxZ-if##apy6C09bS~|2qL~t%NqrGR?6A z1C!RmRHOkRrg42Sa|{i%*c&jrsp_9KX#JTfaLNe>7868Z^q~XFOIB$eZffBy5y>Bf z?{ipxyKp(E;f~iy`gWrUiq9{t8tHYNGIF5pr>G1olhYa^7WD0Vf?A7_pl4e9_jCvW z*^+gREA3IodS!i5soZ3>BXtkr1g?bs|NUoN{; zjKrYFHL{AULtAJ~}ueFR)-?&rQ3) zGjx09!2Q+9%0`VwgT^(GER7E9d+BTZG0$3hxJxgma67ih*dfIV@MEO?jWuq-rE3BL zUv4Z!&+YK)qT|M+?JJXN8NS_fO*BR%rVR>8>Pco@NWLE+fN9D!>Yod)40cZ0oETpF zk;r;H*qpmW)DPDVO&o$5IYhk4>FZJ~#I34v)EzcK;Wp{RC%qDxAVlUsIaI>?NoBkQ z#jRs@Y6-Q2%@z4pX=uPPRuOx*%|DLJi*{v|vLxh2W%=mlL{ROq%BDncRWD36P(@5= zgS?+Y=0B(>5o~)1--LZNI)y}k>k0?`-Nm+qneP*|5#b5C-8#wk#4nQHRgOql!}x(O z1>u|xOOtLn8g>gi$IX`eNKkM?8+HV79d`mlp~ln5$hItxKTMUvMl2p3LR}Ng7RDWt zaXpU&D?rE=KH6Bp`t8N)jd_)Mv~pw3~y9$XG)pa0**^-a5>4cQ0_ZKIKt9<1w_bM-E#19*433aLwzVS20m?U>YL^8#lFG7&N3B=nWjEGBzvyF}N!=h7AfZ_!@uY;Mbf5+x4 z&v%mQsjZ>F*xoFlXBhw`9<1_3fJWg2ifm+qsUjN`hJdUlhG1hW6UYI>8qW-~z^ky| zVGbo>ps_gH%F*_F)(_Ni685x35K8)C_lpKa@TV#U*B$ewcf7G5M>uIx|y5GL)`l7yO;^6%%510D*Bo=e$yn_SmYx^mTL#bBsY40aXe45 z@D>EK*K};WA=P{;(?NWr%kSuo4MNWO`ZwaU)1@MjLwu$X;HN3Kry|c{61fNmLPr}H z=Vh-;=Qmm$oI2!SVTFvfAS0g{rVisxW#=&lBQ}~Rtf=K21L5T%7s~mwrT?DJi+tzO zicL#r=jQc=caYEyNworo!e_)-rcwm2JaeBR9IdMVRMS&mLaQYsv)KlrfVYX0Vl$!#28B5czcFMk3ySirE6K(NkbCp7z>JTp7~+`>To- z`dXvc>$R4KDjLgw+e0;k? zzDWxO5SeG7%H{)35pZ_a8)_tp~J!1SI;`SXWm>A!4FT~o_P5NSd$j|uQ zeA=^C2x?cMXDD9-!a9pLU)Lx2{Z+#FAZS;iMxy~KQRE~T$G&iM}dC&b+pqt$a z3AGy3{aYz!=(HGv)Cf&t74iN|vNSe{WNiyPt|q*jl{kF4S$}rveueA~&Ox;J6wv4a zzmFa*Sv#<`N=Hta_CJSh2Be8$71B4oEO_4go(=8qQK|6b!KO&lKUc@ zicsc8plPT_sl-VmABy>zWeTv^)^!?c*57W)a6J5%N*6bXUnFE|Kd%Mwk1;IYMa-O{ z=>+XRJFf>}Zyc5X-I#xlHrY*GIrK|BW52&1Xx-xozEoc;Qh!(6J<6qm-Hp}dk(R?)W%xXJ?qZhkxq zowF)}A~aD{gj{teVCl(%R@|ii6t26YGn`IJsb|CMmkL*Cu`OQAOlP`#Ca$jUDC-N1 zrKF5T^Vd^0#5gn1U*Qx#Z)**I18;1R7(w7U2y4Y*;Rb zG6s#6Zd_)#FjURz5)VXVsJz`xTBcGQ4OCxr%J(7uGYX+)CepM9iK`4!$SzeMk*}*$ z-2wjk5CVO-ds~hDWtnuGwO<01A9xUBKf8&{6@^ogrBVd>t&Ry|=#w{smFOgmip2~C zgk=`f!b&h(quKNAg#07#iHA=#<9(Qr@KxR*p{xZ(uxPF((Tuz1v8u$AB;vYPvjaP= zH5|(tfmRl?MCCpahmd2xib^z7I{sZ02Wb1y)eLtU&3(;mbvm><5y0-ht}8GbJw=n( zNIrF!naSX5CEEE_MFYg_5*sa$6%-VZBOxGgK$3^#-hJ}?Vn6gRmN$d@V?qA0fJeCh zG0A{1|EI2|*IHXk!ZiF#+HjpN07enc*~HiKhw4u_y_DapAT;Kd&0vMO_?!5P|Bf5Q z)bp-gg9#Ha+;yV+Fsd^0TLK@sl~R~9s&v=#v!n2(cL@$Nh3OK8uJnn8-zI!^@@5(s z_ceyhM5)JA*zJu27g)#xa_PlLT2zMvsGw!%R)wE9?tm z)}65naC-i}Mttt)ddkIieMeUEZbB`YR7bO4z8kbO(_XpGBGJ`s(R;hA)uD&1|Wh;Z4Kjjd5J)j-Wg-1$;5D zQI5i@R1m+&F#hAyL1S=?bLPyT{wVWUHzi_+sc8FDc(rN|>iGpVaatqtCLNq)i~xm5 zFzAQV?{Pdyy8-*D(jFhLyMLz&Wr7SlZZ0!ffr1(3!QV>h-TDqsDxIqeq9ki+KJ_<_ zzfaltdU9{>Bumu!M}r#Om`%<#759g<*Vh#Z`RcDQ2BRCs+H>tQJ6cbtan%=yG7X-+ zCH|clakO<%J^T^4LX`f{0?0u-C*p3|^*H9pK?`KY5rBVgob-v2h=nBJax;pJk; zb05-Rz4uI~Dn$Hy5_M_)Zk0^sPh1TXxLWOC$`bzi+e3wTF_k)>$Fgn=*9?*Gb-99* z-^?6Edg8w2$bZR@*^95Q$)wFW@G1tNTrG34D|h}If7^9l%{d)2&8+p~ao8SRad!%p zAULWxWDu2$iTH;F01uLs-V0 zn*iYR%U~us(C1$fk*Rn=RyHysJ#uufCa0e|610IrOw<-@mNA#}+Q6*yp#uN?{GyOQ zACEMMe@O}!fv{{0;x{-itwhD}lTHSlkr3L~!D51~U6F|+EV*pzYB76PSWlQkD!}Ku zO%&LX%ZjjYU$;d4Z#g5I2KO)-Ff_PqFhU2`^B*g4Lz}E7V>Ctv2Fm4VUE@G4NzzNW z34iqT5J5Ku1OoJXkY837E}Mq*N>BqXQXiRBaGXuGs=`Nrrr1Cm=@okfw>WjHgLPRc<%Mwu|r(;+YFGC4r(gAH2NB-8_Q_TDAoep|Nt`5O8K!v=fzT4sdh0Nt3+0E&>kSS@@cjw}6o%Um0n`)#z z26n94fgyE8qM10xr@JwOJ-KCuEgf8TSe<1#O?qcMiRP1kIgpv zd%#x$@Us@kViOqe3a90bgYH~iz1kZj-n~ruhN}8ks!^G2N>EhH0W)FHzz7gTgf_`( z>dL!;l`XhoW{dy}8@IFKec<5;FE>VYd( z*<(nV(5&T1I|et9ZH!&*@5wl(VFMFKWEdG*P|x(z!hU{=-z#ME75+hPW#F5N_h|l4 zc0o^!pPl&`geVPALv;f!TP$ru#7=+Gn;kY;QDO2njwIgaSZa z=ez&Gpio`}P0jk5Sb6DbiY*V(#e^B1BP${?#UDvkG@(FPS4&IXx4HcMUI+e_Y*V-J zmNBr7j}#Vhfi_vPGt6XsHf{Vk!yK;MS;5(KEz9JT6Eqfe73hoYi$rGZ8NX^*K+$$; zLsrkiDvVVz3q{DV#T`-;sX!0|Vw3Vdr|n<#RMPLO^(-d6uxPqSr!RVUa6k`RTFLiK z6yNpNa>NUDS6SBFZ63t60$!vzbGI<~UeG$kc7F=+PMWXam-?2d!}9yY*E}iNyCTRx zwmF$I;-1#e_1k>qvEgl%ysxKBGlVlRhnCpfm%RD>&~R|Co}98q98Nms0NTx1M+18J z88WMaC5{1_L;wf}#77*mVr)~uF4uy2y_4`)ZL^Xn%W_xbUMjYz#1zNBwxipc_UN6c z%o%ZZmG(sK1B8NXQKTj@lu<&N7hav9z-?Mj)&c8&Y8-?y!~!5}-<^6w6sWqkRHYF++;4f+ItyuxH}Th zOi!NOAM{&#+ol>){hJ_>Ff5jfJ;X6*)gBQiJM3l6Ct8$%yq9UCH6%Li)q4~_DxzOE zjJ@~jXgW$$(w)Tr2-znLIDE%RZ>1f~8~0KN#C1R84{*&r-6T!F#P>q^AwX$kGy%A^ z@Szkx;3%W^g`*=h59#pZcli#B61rMurq($VlKPUQY2fnV^?no>DoL3DaWck3OI3w& zyoiUlSE2Ot=*YTQ3fDoRAYSltV`R$V;X=!k-GWwVy-OCs`&X#rdc{G!-aQhIVoD>mX%` zp!M}twAt~h3D*I(*o7Y-?`I9$Dx3rwn8~c4k*&|$FVIKwt9c3{@d*5tH+fLg!E~QhM@#nNUzC{w%?IX#^dR@!*B#?>F33jKs z%{Cflzf{S)fF4_cU z>P}cU9~h?9J6cfL0LYn8`v42*)iQl#)pAN{0G z5QvIruNlCzR~;_Q!MnB37E!_1GtQh30zzJIE-{IB7$W>)B86jD%deIqLj26o^z68B z4bqa$HPTTK5T+59xAphx&r%%pWMN}lNo$1_BPf*L1n(5!y{m&WDJ7JwDJ>t>3|H89 z_m>WNy?*X@$9ejuSoNz4-wi;IcUta_p1$uA?-wsGuVeQY3WB*^{$`fwrj(>sFSU!H zre7~F!&$+$Rz_@;!o+Q}Q|s zV|hq|eEhDI+2~op<^_3aj6~61Sv+>TT2mZhMWN5R%UPvc{Z)tpPY-1iyOs?%{!^IJ zAN6Gq1#gDPFbKY;U$b?mJ^s4SET?k+{*3{gRs9>vfWR1@jcZ(++M~T^VzYmZm#-&$ zKG!W4PkumPFMn;8-=keG=gWC=k(?>Bfb#yWFvtAIDD?iAn*m^^nWM46N~`QgBjbwG zsP*5@Y&wD0=y$4fhcex(Z_stV=)9;m29c7lHZO#o4hXI8$6U;$Z`aMV9To{C$Ia{B zRbQGwUDY%{4tFzlbC;h=emGm+%i%p%0hx5a#l_0V?`k{_7rDC<8Dz`z;9%3way~ln z_lK~yb2itd)~SDhFLes44*jU6nT`Z$b#KG?-32qqXr)n-DlQ2 zPlMfWtJ{cm^rW74=04ZwKw|XIj&Q*HZlD%7F_$cThBFLmyp z^w@S0D=#C0LHbv}X)#p2t59g=p@ghe;sZtjv)t-zL_6*BId=#_SS=8g77{f|XAm4) z)=B>7C|DXf#lla5!x^YL*NY`*(Kj|(9Sb;E?dow$zq%2reI1PmQ!=wi!KrXvpJth;cOIN+A`?`X5-gK9s=kO zq*%Cg3r6UoT)y#!vJd|wqIH*wdLqBShe{iK^%l8p!+c6lMze30ws%_xUmprjIdZ+E zK!MRIfaj5f_9U|TjJFB<~A$UFx9gRS3~a7XKjm_t;JK*?470L`}u5dMY<{0tYWmQR5O@26$0*YffK zG1?>#wj>cI6TsGt7>iM%Lp#t2FgOi2*(XJFj>#XU0NQHO$uS*|QX{p% zH3?JO@U1>aD6J8>dC{BrYlcDo-|ZGRe6Vi=3ssV*n0Ab^hAR*LG-MzLN+`2fkVe{l zgEX8RIBx2_Cbv0jUlw#oMF;qcHWmIN3p>|=Dvvk(7}L+Ly&7gekQBd7>y(*qkNfob z3E&e5?Qs;oVU0Pm`6nitWaWOSouLM)S2}PYLx^GeSmj>bd<1x5!PJ`GscwIltIHtg z1chC`rwIY{->OKQ?x#L{ev1|2T)n)dr-9Ss=ufM~G>d%|3)E11%snGU(`Ms_0N77< z$tfB0q)!wm=D#U5Sm~_#2kDp~R^R{H6_DFw>v>x}-fx3>_&>kOmVxrU0gn&i3tx^Y z7LB8;{4cwU*KbJ<7lMw0j#G7np{@-=@atKJE&-nuj<7^X63W(1AX{imXePQ&Ke^~5 zmLSK;8SbT1pDIzN>gVn4eUH_GNsk(xSnYryki)hJN+MGkOYzeBYX)BZE~QL$x086s zoFnB`EbPR@=I5_ryox%sRB0f_n+sDq$dgSq%ZIzE&sj+d0W)q08Xu`9bb)RWpwF`u z3I%d7YYlF}k3kx`!kSnpC^S_0XxQYzu|MYOJ;SOzSz1hfFvxzzD{d&wCCEw*m0*}@URr3{mOstpxfe0Rz7_V{+Y9*T z!vjQUVVbagfg|3g3Z{5hrM3x}6`viP4X{J0;ZU=1h)wUXqT}7rh_g{|&jXo!mcGq8 zmGbT#l$`U3!_gLWWrKT+3nNFsw*nn>hgSW``{Wuat%(|H>cC%GEXnA9#s_R6^@AFW z3x`Uu*gRZ{Y#l1Y0tDF6N)Jq(<}N0@i9e$(t7QDv6J;kpQ$bENa?kjP-Ok1`nZgv^6g_yB{e)y zaeJB*Rra>3pr)*9b4OWv2(+?N1Pm@_9J-B)>4&2AFmvmv(DXAO z8&yaF)dK+!X)+o`@XeLdAD8~929_p+3gr|bNhPOJpq1s&|X}yUZy^-!CpP^ze$RzG%zRG*|bYcqcX$A1N$LM%F)z*2pN3d99?!|mjMmB z{NJu-Yz(8Xp}_(#vV%ToTly#}DE~w#A`_{I@SyC|H=~PHYfF={olh~NL^+bsgc(9Q z3S)SA~a z1oI5M=jO(}`3~czGG~lsD*ehtgm3F#9hc^*)`c_{Ew)(m3_2_yYR+P5%e6LI);vlj zT%|JR89=&FLE4vv;bZvIE8~|3A?3-$QbY4A6i9$WUgxBP8>vstmjcj$J*bjX;SUkS z-I2&&QhXO&Sm$0=L9m0(Y=n>ly_JpNiOnWY+dAnd__Mws-dguzdJ3!Z9IHo8x4c+w zrYTIpM|ZoSyXe40Q{A30?~YYZ&w@*#HQO2UH4fPN{tqR#qxU%q)N~nSz15hS(2&-N zsVh5SDa1D~nDKA11ew^0YJa=>h;g?gSols4LA<3;rZE`J)|hsLRU(^Ad&qxat1}{G zY3Tinl_%!fK-dknQR`v}Ju1%~E}g~mb5FEq;!LsM-S_C}KgN;I?C|Yv4P-2EJC7`M zT)wqKFx^zps(S;VjK!m_6WHRxT_ ziz%4YSOEQiKXMS>IwRL)*8hjHcZ|^`{JS;VyKURHZQHhO+qP}(wr$%scH4IM^#7eR zIqx|cWRj2kH#=H&y-9`F5*or9A#QO zj$9IPzk4Ttv40lxX-d|GXII>y-E(%H#*9AkQauSjzaL7Y4pxeI&sWb>|?mLG$FB}CkiAZlg$@&E197&^A3?DNoj@~(I6OgRioqaGsPoC1T5yl z2lBHQC=;Hupcb;K`dG$G%Prm+KH=eM(3r^vVOD1d4RUq)wp1Cj6tr+3?p)jYZp)Ls z`z5uCXrCXO8u3kaPCOEkie{13l8gzW1?wg5&Y0b5;Skt_4A}QUMd3 zhO1d!lVHp1V5D@lRlfFV)f%{JzYyCK{bKkE-tyjR?)ij(5JK7R`IubOemwB_+}`s1 z*5C3ba|?C@7z-b0K_7J>Pdkz4+$i#I6#4z$kmsPZ+i~}4p_=Tbveu&r*o8+3dwewV zx#ZNhWS&pPf`=W}vxJn&JsS`P(v8cYAe{4hz5VVVryJ33jFiqiTY!W6A2cR3vbpox zf@cckZ)lmEvYLh+C^A|@6>n&59NaK+krq%#NnBxveYHuC=X4Jhsc$X~MXXhiVOq0a zl3Ln2m1ij|q7Lu5!b)kb=~0}#HxAmQrwV>AF*5vlmQ11@HWV)NtUzgJzg_r#gcJdu zlu=te&RNyH%+U1YjBWF=i_T=F`p6-cB-A)!R_h>7K1N5V4u=OwwuNL`^$q1 z!av1V(0mISgbI9>UqV&jSVcMDPGMkRDu!$-yf=}LhPEUS72vAed^bI86%QEyDED03 zEzk}*&d)!P>QAgLq<}vRLCcaqkv_YXzL-C!D8UO#tPMPtSz6;61VL1mgr9g1_pI<- z`-rFj8rWZ?&5-IijY%KpI-J-ztu3s(4BLlRIj#7WpOB@G!$Ik91gbC!xaAJu~<-4T1(z7xl9 zdE@gX%`P|3_viZRVzJdmvC}{M2D@zpcS=e(LhuA#il35_g5;QQ3PrH1JYdodO#A0G zE8t`QE6R;#p~ip9i2F$5$pW!)W*DHFGGhoC9i!F}3zm*SINdNdr3P7HYFc+LhhUoT zTeG;^_wI4}V^K{`PPfbB`2>|hZBJFrlntL$^fL+)v61!YV8MdKSOw!u4ALK@MoF{%~W9s(^pTb~)pOf&;^-(c29~wg^eBT;HSwTKXYSK|moz zC|#(qQg9Gv@AGbWJj%_^&;9OrcoXi1t@NDG;LI8ygo{k;hqIaurMR>)09TGi`)=vi zEVgrf9pt{gofaQRYL8o0(ld&`QpKN`n$K84Yp8ibA`g!t7093vgtt2-j#D`O_My9c zJo9L5C*c4DcsaftuD0}8-j!2nx*ybUu7o+c!GvUuVS7Kt?N0weiVV>H2f!l?0K74( zdgdoYDo8(0zE7eAZ_M=%A+a%^c1V*l_;hR-N$G}YC{;03kuiqWmbheWGAd}f3xZ%$ zTV(GIi}q1d8!ye%(LZmyOA_kY^em-4S>jyhL1Mz~Te>VV1UMy9Z?yQ=VS2IygLUFz z$>60T9i=Y3<78LMx<3Bs2@P~E`1L^JMCIZoc%o_*Sy25h!zW8|M5p_g?f?!A^~(e{ z8{A-)pmM~ALVb9K5h)RRx(pqxf6B)t4Q7Z?HGWJVrtlADd#t6nB$*3)HlLHnW=n(X z6q|tfz6_VvY)2C5VXtes)a)xOfl0ylkc)&T!ITpDs_{9zYoh< zfAY~#sT3gz;2-iBOT6<#ygriXgVgvQZc{_fGr-M?C0TdQjs6=i_K?9m0h?`OWjjRK z5AugxjTvo(9XR;7V+o~ML&;vHmLmbn<3o2e#uk|B+|q8Q2b@;vpMj#pxQ)Rzg>P~Z z^Lo2{Fo``O&8#B{wNx&ZIz-X+1{bO{Dx!HZ5=~oaT~%68(%ACu3uUUsca^Ww?R?!HJbvNn<#K=AEggTG*M;_2(-dAYyqGr!+Ka^pha+ex5BSIJ zLn;u1RMW45f+Pc9yzW3tysSsQ8|J+lX8=PD44U7df zCws|rYa~E;Yv(?GoSF^B{GUgfq~PfdMOMj9&wOVWG{n2 zzJLoqc6SI}?PpH9sWfi$I1CLX_5`rp6G{<*YSwDIdv+s~Vst5Z1$5HAgok5;NEe*L z@!@bYVB5T3ckdWISk8*t%)mRpel(7=?YjCfRln5!V21Z^4Zb{NdHX#mnyIlhdd)*Y z_liH~b^lD@^2O#W#>F8WT^J7?tHeJ3v-DMX)de5y#FKWzt;svo@6gIUCV{PkqY#))He4$EB@KDno9We6?2bD(_P8_^qS|x6 z^1#~Q8geK**LyLGztqUf>;5Ra)09)EZSs`Q@$!QP35am#6Gmi`gXaJ|N&AzM7oyY4 z)l$5r(93e$i8N-xC!;G1#t?`^s|NOC1IIvuWsnl0+1jFm z`08Z0vcGR8xsRR06+k_Q&ttb}*xw#kr_2$XjRCJR+Bf6g<+ifJXx{)p z1mvpsx$57~D&J4=CTrg&ZVEq>^i9xP8Tkvo3CZphnqN2Z}9=DFEHX#PrKR@i>xi&aow z%2`S@etQm4ASDU%M3G3FB13A(Nl*tq1H;7b^m*2dr^C)=BU>JmV6&QB&>k_yUHw!t zF@+98R509JViqV3bT}J}H)q?QxFL&nGM&Y5d` z7E>ulBsMniTi}U$n0zuK2EC5sT;^_+(H&qE2^&JK|G(u`o}t*CQotqUY183ib$~rD~Q1lB?Ykf;Ruv@eJFbAEUyb zn%K%Jlx?L>D>)(L?IT@kact|3#mtL!S~w-kWv!RzOtvslwfdv(Mgx{ZOV%dk%JKR4 z8mdPBgK;OVy7?4rzsDYjK zknPf#O5P6+m@4Uf`MOB3DqpPuxD{CFr0M+Mzi>;Q|5QPjcqI7rCq2Jz7~4k6YseIjK$YF zIkS=4>MDM5zvV*g7{UhN#Am2Z8M&2(nCQOsjy>?g&P?kt4N>Zmp~n7oDFPUW=^~r6|vrLhU7GlC7K)S_^a3l^IQf`!7Ln3K+?*1X;MqJO&5$9?GkTe!lMkh zk5^TQ;c4mZ`x2AZ_;t~5B`=a>UnX0eE%b^e$xY#`)yDQb=8s)%ejsw zhKa~lnbYXnia4j)-oy^R36uww=n#I9&09nKZY?KcpW&A2VniTW(z{N zjS@PW_LJ3ywf}Z+)~Hm+4$L@0_31hkMZNvgaZOZ!Rj07K!=}kf6UnA$`uf}UUVBKJ1^UlmpBV%EDTtTXTi+$$dv4i*P*mdOx5Dx<*|j8 zopDnthL2^DZ|2Ex)B6_p(#SizIVaM!S(&snpR*uBmQk@NZm{89)Z?_CCaQ?$DDQio z0`~F*)07EoYziV#Af{UW;uX|e3gwsv*5yU*`OxeZHGI7=Shnx@Hz@|a*#I}g$84mx za{jiE_jH{)=1>6=5#9CA(SwnEN1EjqLz}iuH(&%=s12>*MUw0H>Hes$2G=jA{;NGF zM|Wr60C;?3-sBM0b|&7>lXuOJf(i55Nf%IPrGUj9?ugXViK&XutX;EHJ^o8t2{N6< zHThw%bJ*eHV$)vJ%vUvAj3MCkT@$S9F#O3$@&_mx;Ap`3mW%|Yl+ZBDIYB{{kIHtI z2KwG-z3FScS#-PEd~xt{Q&<0qTkm92nx6J%)S(xp{|5*c}VSyPa6;}x{P;7@VIOw9Pk zob8aXvo{hUhqYTVd4VN?{7syLAUw}_XvWCVhMNdZ0N_{SvI^v>VD`(hng=6ji6L%eg zIe|6CLRBk@%EWUq$0lw$W1e^@lLn7;-JM4;k~hZy#9-4XG;$TnVYI$xVK^s#-v7kJ zc8dJ*e&Fc14KsOvauy|^I9cp>=V(;%r-1ZY54c{v5BW8c zvhy+QJLT%B!4Z2x*Sh=l1lSt29k9uL?zk+R_u*Yslx1dqXC@HAFNH>-l2~%}F4x#S(*9-oY`&_@1WZ8lyrS z(^3UDxf8;Q&Jx*(9b?=rnU?XeBp9>`dfHGFqy~EUfDrc2PS46-Uxycv zh0ihW2KZ;|O%LmhjK=6Y__y;~p!(W7RbA-d%I+%W+WXsBA{E)@gk-MfMDzi%1`Z6P zl72Kc7W4&CK>!2v(OCI}+OxkqJLOaPGyg=4s{|XE zsp9cP?G{^Ua0dwT51(tbyYXTC5EvRR z+K}nLu$Bjr|3|FFjql@?gVS~M8Xo74$laQC^$yt}?Ab0V(kP1|(0}pn*0Q*XD0++m z03f=4>YJ61s+YjfKOY(qgu)~lI2{lKf3SDF&+hrw$%HK{Lvqts73~G;?d`dBc9*xY zUnN7t`gt+zMz`BL6$cv^?+1a8i`Uopp8I1lj;vNMBL=D==`1B>pZ_^7POpn&EVXTn z>=J!!yz_9jg~?n??uR>@nwf`^Yy_6|b1L@rt&k6Wb<4aRi#)hotJAHSdb$>hhv9Rw z%d7myb@}7JxE5|Wo51p*&=gG7>i^sdzeg-zQ)Dj!B&41~5}sgX$3mSxJU1 zFGAi}8A;72*6WdQSW=`(B2czfkr-Rf1!ycM3zFWMV5Ulj*pnb&*plo zkFKlmpp=5ZEFc#68*7L8w+Vi8=G<-+Zr6E_V+m3@%F2&Kr@+x>0>9|Aey*1wSGkTbj?t`^6Sg}!F`tF?dxTOoiGi1rgyF}-{<4`Eztxnw%-%oOGRbC zCfv)lnIBtUOVwU;##MK1udn*}x4PWV&(qpm9w%Q1ckk!>{_4$kSnZA9!}9F$?tn5J z4Ujfxzi9?cj`rBjo;^MvE_DX%bHv;I+->hekmxRxUfV3}o0?B68(QvJPY=8L*jB}d z%*tE?8z&8fLbN<3Brt5XyGXzogd#B=lo98zDSn6lsdnP;V)d>UA`^%TC|DJ;Fga}< zLoHM(ds)1Zk!@N!^?QIRusWx!ReM1;7AeE-)gqu3W(|S;q17l1tZH=adnbod&7X9e zqBnOJyh>o!(mu)7nEg8I;_WFz2yT?hMr$e5$&i1^3>v%vWr8lL1^x^%{V&$;9y|@+ z3?I8cT$g1_vE&@YfN(3th4_eP~pAVFEN-3 zRgEFWz!2rc))AYDaz7RcJa)lmBY%RHL`p0NYU5$C0uvBM+zFT-(82@n^}T!l&wP0i zuV@9FCkrsN%$cUTyLNMWq)`T6GO#VIoB%e=eLAX)4X>2<{at8FkmnIvVnL7x1nSK9 zo(p)48_9qG<&Tc#N%K+42ojcyVH0Z+ImTUc@>jdX?MvTZ$5~|$ciBVV+6jK_e8<^S z4?$PYy}wu~)k`tw%mpm`xZk0QigH2K7=x|FBV>)QK8neiNSdh8Oj(&qiGlWmKgtxw zuuWN6(_B58PbNGzp(=yX=-sZDvMGg&x)>^;NVlnbceC=6<&+VXkZH*(C;*z{g$E_X zC?=v7E+ij}zDWKW;QpK#ej4{(-oEdbXL53R-P{hVMFhfgipJ7A zF{xrXk}_2a^EoJrDWUvDQmEvY8_~Fg68t`~$Td5>Z0&;w>_Pfn1povh@%{b1Jdd~n zv>@8`he)N-Mp$Qm3r*i-<%J%EkyZD0h_BvoWPw?*+q$+IySO3De?gx$)o-(U!ol&) z6T282ipk4E_77%8%(cNw#ki5~`fj?4ADV@cK&|Qm+m>uRmz60%wia#u2%S@gg1txx zl<;RSG5TAwZiFuCyH~4RpwG z3$s3mKpMY$(il1uL0+DdRYJ!aClR2l7`uG^+ND&#w@qfxGF#6l)dL#Ea@ULI)^F^& z%-~usBSQ;7RObT0y;QRm$x#Ro&Qge^@wY1QV5z&C*L^hVLj5XJV*ugj&r11{&E$j9z~n}4_ZQ5EBsaGf zp?uI*u)Jv4V8W;~y;^Tk9CB8@FD0k^4eZjbi)`qk1UXPQuZi}VaH6N0FQBa*X$j2? z6DB;?c|jK-25AN^sfeegv>nq^=2t8NI~JxShKlBJh%5&si3C2%jAGyCzn?9Sb&mx^ zv>g=lBjeaZRFJR%Qk!9+5P*e}2~O^_hvNW6)CDfi6JihR{ScwW>M)JFmJ(0QCt6yx znV{ez#*N@lwDwJG|didT(zJXtWRXpT8oWzq{;exnE^OOY@Vn`HK z444iLZQLD8nq*jMr8K>A(6=zYKM(Cjc0X3-^tv}<`Ozc! z9dpsr(^vDS{SAAjVoZdCX`7cw*1(p^Tx#x6*b6@bpk~};>%WIJ`i{p@^U4s}r7J*S zL(0_Z@z_{^Y_^w@A##94pr&0y*og`OItmpPl~pR7p?6I@)>;u=B1hAR<-IY!Q zNX8sajU&t&jLGJ^0dcC(pE-A~8_&_4vl0+g#8O%a7%GVnChWwl z)TP2Bu|Q9j>WFqPFWsb5zkau}r{`W1>|D=hqNAMC1U>&*rCHXJx2rm7Lk{vMYahy< zCPth#_!b^U0ERjvBvS)5UhC1=j8RBa3WE&t7jr$1bvUk>&CoDN3G$itG0+K6RTWx? z63IXtp8l=n#=76C+{?Ay7cf`uO}Ex)q7&R4Ix~b#!cG%uj+gMPY`13iI8u@%MI5%%rNR&L23JoNT ziGpPWbDaT>Fuu6sUlpGvf52#i83dnQ=L6MXfyFpi zHy_8bu7c;OHWsrYl+gQhGmQ~E7&P?4dPA+x_{YJZUWn%U>5geYLOYIfciNOT7q;Yz zjN-`U&d4aDG|S*W*d`&trpfSzEe;S*r+xo zuz#W*i{KFy0SZ7@_?4jz0x|+cFDlfC5}7&tb|)E4if1o}KeUc%2ZxNpkm~e=NIwgy zNpTOz=v~ge94QPA=Gn*7*rK_*PNE{j*hnNg{*qCmHGT;%>4$1LQWXKn6C;m739Fbq za}{DLV_TR6LxUFU!pI(|{;qg;d_6e`Ea@KFXqRbd3PBi8RcFt?H;!;SeU*qT>C3(H zn6~m3f-%MQj3g3T8p1-TT#fes62+dTyCLQk>yu^2pvJ9H_IOhqNWpyOcJj8 zi_6BON>$H})P$1NyZY_2=|nz_^qR?T*JVWp{AsW_aBxT}E}kAT8i8-XgUN2{KD&}T&__!u z^#}GU+N8&luP7`BXnpyqOvHyQf!D0&naH`C*c>V6S)GK4Xp48ObZ<85F{+j=^>^g-D-sGiE>%GbcZu+W;ray4UjUTL}(I6lPec9Uoa_ndpLe9cA0s# zrXcV(mQ)nvNenC0uM;+tBSZEAlXEabINz^MCVo0MuulG+4y00SsxI<00E z^eTfOLvAFmJ)fLwTn_^c36xe2@jYp${n4oU)_5dEyT5Px+rVSjQJO&olF9RN7DUys z(fDL_alBsku&=%e=Tac|u{I_=SmqhTMAWI1HTiJiAUE#&{OofqseA6Ah+vh*InMG> zNMJX&x61ixZvJ<`T6BoHb=|S(Qoyw_4Thb=Vx!GcG;h%|h$-us8>C9~%A)VQ7win! zO3jUuO~_4G;9GRiCgj8J+zP5gvqhc5O@VA8)qZ_!L*#))i`HDb5+Cb8kB#s%Cs#Yh znqd1a+tN;56-KPZ`@KZNb6IJz-Gr4x)RfE}ImXaWvjZHtb>z}3OqJrJe-8gg0+ zySgZMtKE_L{!4_KygbHlUoi0AI*nqjI;QfNWfg?a0PLvAJO5%B@~yKV7=>H47VUxU zds~}se*2a_T27l;1k}RmFji>uOo{8hX7<7L%RDpL2Hi(ER#>)9LE8xSPbB*ko;S=5 zLS~u}-c`xa*<(JAzsIuc8Rzn(53T>TN$Qk$_&%MIV@S0i%V4K+N>t#*j`IAw-HpEE zGv3s+<$tRb^?n?I@oR<6-!OQbLpf&2_9HbuziH&OYb}WM&9JpN;^HsmJMt|Xv(~D? zN6nC#BsYd_;B?z+vv%ev6A?KAaZzRQ_!;C-4HZwkIu za5Y3}I+lt$!-!%z_1XToUNa8|yE3ww(~Aj3gR0onF3Eb6SZJ@GhTPy7`8p!t8g`$w zOjZETW7~?f>kRwo9)BY2_*lG2t+TPWX0UoJD{Ptbd#A5)Ys;R}+FBGd6T2Rk+dv6n zqto>3>97v)Xak=5uxfRUd`m4cETZSLYeRXM{a2z)m9DmUqx$0EU_%{ssaq|$tGt1^ z!rPMJZ{(LTEbFjUgKxHVY`bBzySbp+r@gcBq*lr0rEgtWuR18uPG)-@Stv@> zG@0;#=d}R(S(dA}(8F|?d3c@l+9jo+g>5Z7=6bM6&%Ck&g+ zI-z3{7j8Z6Wg{%$I?J2ggb(hux62{$s&wuq39n;zD_0br#nX%*aTjv=Qe-|L9^X5` z#8VRP@Eeg}|A%;gHe;7U!dc!AKL%3!@G6`wT}SwPN!#jkw7DIM+#wxRV`gST)saL|89hlp4tAW-&+< zXzxw37uO@&Y~RJBGC_VTo#xmi7VWKj-$(7K7(mao&kuSZ+ttAUR13D`=n(djkenP0 zC%-@2jVv@!V$y3cE~Tezk8W+|3+$BGI$W%PbZ8d5$1cv?4!3{%_*r5%2(61EvE!%O z08#wnxv$66Gy3lPso?D0w-;7dXXn@ehUeF+Akp0BeXK>*UIy#77xHZC7{@MX7yP>G zVY;^f2{s&E%SFgM@|?uPUwh1TrO--yyS?cZEPCe!;f*EszrP)~6mEk#Rz^2uGYIri ztru{77#IpQea0?_GE*g$TJ-GBt9$agbIBXM5V0y%w%cNIFn;l0u&C*y zG`GtC`SLnOp>hNaagn1+N8?EGs3A9@#|G(zI-UGeEEabToCnV)30;_r(lPp7&D_?rB23eHEWoDrm{b z(VMX&hp)5u=hl&zyEI&EXi=k)8L6SJO*6T5w7=t--OP1vu0mAhMCpOJpC zvD-Dg|K+~S>h|I;NfP>KE%7(<+RonlKSk=I(f=t@SN1aOMVp$o3K9vD|DkU*>EU>j z0rPDP%cJTXomSp>ZtQ5&8=GzI_4$6zIBNNS7pXCP0UMGMu%mHWQ@#!l(d=LwNRFQ% zxO!afuU{Llpf^?)`QXT)Wa1_yJoMMgaqb>O{OD^k_8i$n`{7-zUTRWH-dqZPhnSge za8J86o_Kh8+?5{B1u6t^n6S3Q!Qb3}vHXnUe4<5fUkAru!rJ$JtvKHn_ruD%SjuRhMspX!t_KJI zx)uAet2Wf)t#(U$CiVE<7h$L5RT+F)qT*h-UVVwFZogF`AdBvq+-!qQ_uM?ilxkWaA2Iaa}kMT@P8Yc5gz%%)} zQhxqCvQzVP_IXUZ3y={x$o((trI8nkB|Ca;i*C9d(MDitHV#*Wiqg2UzeY^IrS1qm zUpa|4#}wFL#M!0ctHLTQ^g|+G_at87`=Eo*9y88+Yja!PlaYbt96pTzrunl=sdF!1 zOF>Og3>H=hG20_gqsL69sXDErNaM*_mb-W zm-kYj{D1LYmPY=U_ww^U-b<$G|J{4p0CMh|bX@sAyqC$51O7r(x(fJ?fym>Ngmm&o zN-zJ30+Q{9{Mt!MCn%?+*Dt{rbOyj}(;_I$=nS&w zDWu;3-0qe2##X+sx1%gP?c&4R1$tAVO3}ns?gv7F2hLcmWKXaX2#rO5 zvS}MIqlRl3>y7RWn%m1VxS#L)>4%pxK2e&5q&n6hdUwu}C#KWX#XIZdV&jHBr9SE) zcI;yow%k(mY+R8gyaUwp0(0?1)N=w2@t33p1pea;a43rL;|7iz8Fw!V#VP8o#fPO9807?454-B?3G`U1Z(^Eu`xSX%7dHDqXee7#*ML2A{yq|9YKq8 z7>={h9+QTKPGH3Kf+8Zx`2!jKL-h+7XbsXTKk z%St?04OpC9`x!Z>>FBu7qP9xWo2WDZ_7q@a&mNpLQmEYJf53zM%iPJKsc_#-N&?Fw z$%!dQoC#j$z|cMtAUVt_P|%Hw9m z?3gpU9>D$%bhnM=juP0u+p=U=?BI?$?!qlX0>j8*@HT^sW(&RXlvYho+MIQBI@b`2 z9K}7xjUkwQIaCg57X$cb80X@ce+zC2=z3xlJTQnWk{FDF%S$4!Sc^MDcq@DUZ%R(T zgC^NYt-!>gs)n+Of5(5BF1FjvX=D7EKVLR0+KfNvr5>>OIrF}*!U|SnW6?;c-bI!f z>&Kho$F-z!vH;(B|t0b;f}bk*FgK19v*jQ#TQ%C#w^N3~HwglN|97CE2`wM<>1yfVv1NE_MO zkN(nz!>V#!Aq96`3fZ;~Y{QaWGYOCy^Vs)~Imncjhf-02Ef!e6Prq8b4H}Pnrys66 ztNa42W!=`&Ql(XKx-X*!bnTSc%aBdY3i@-NiHLsNSHC)Qrr9r4;-H~A9iJ79DMlw# zQH{Z>tqWZ_HNK;7-HU7HGYN&0TS|cnY*!A5?#bj>VRpkqFx?0Jk@q}dzVUna$9NY;tRz(} z&&`9*+%K(|d%quJbC`r;_9`OU@6L-FDy{f;O8&4fSFe_+sco|EDnw~P>)@u+kh3MQ zKKWGM21UItYg-CJ)5P~?%1z-V)Hu~RCPEm;El6*XfEy8%STjcucgycC$2J)+#)hbH8l)>_AH4OLIfcuS9;Jme295k;PzQ^yF+j3lU_ItQ61u4H`?qF~Tu4U*yN zMD$No*g!D)Uut|u`kQoPlm^e*5nkS-^Lil>gq=QYUZ@LYJU1~j+DmNL3 z5e+05x?!DRc`$rZB*r1o{E^coDN7F4;wOryTco=yj6{d4%tI=%YH9_1d;MSX!E`A_ zM$)>4Orq&1Nq9E4%$t~@&j$_S`bItQh=juOI)d6ReH0T96>#Gzm1&f@#1nv;W1eUd z+VgoT^F-bL4a77?RL%m(6n_d;RQbiOiAu$_3F-lzKMm&}-{F&dc`idHo-Uid6gJma z1dS~Ovk1l`+{Pn`W6=+(#;Oj#JrG$mDZtV2N|{c?>?^-}ZyGCx@wc6^DZV@rMl1`B zT+O)6zt~!go$-ggE66RXqfUxrc-Gc&yryXe);Fy|fo-FthreSz51_k7>??_=xUPfl zP5I-si;Zo{^W6L=Y6^3lf4EP4a*97raqoE#Il+u_Iwad846_v*ugjW#*iL^q?~hM2 zn-Lfuj zS}w*)xdW5%wLAv0JzJV%rZRh4*rG;78@*QkVY^hG1$|1J`c}g|{Ou=r*gITv&`SV@ zyr1=icdPUH!s~l|(CY_!w;T4Q%RsMqLJRx(-+wJb0ka$rI^3_dB)Hi3dg9#d?&jaY zr?ixxdAyXL%ab=d-tJ$Isv==zGiS7tpQxe{tAy9I;-B}w2dy|aN#JUb5@z7yov^HD zg~0roMN;bE^P)irNM<^_k861i#YrFmHGfJH5HdW*Ab^p$F(75XLia)W&>4ac9bPeX z*(k6Q%h%(?u_49{U5nFb!I?q`RJqyUT%GY%6kpa~S{kEsV6TRId$es|T=dsnIFRJ9 zKXWFyw=b}TuVr^HQhRWaD*v%*aeH;e%n1vbx3erb6(dkHho&pZOTsD-Lrg$TnT6$F zgDgTjpL4opk%Sj!Im?(SrlfC%!wsR+q4akdSCvDK{hg8$`Ma(TI@&8bhI{E%(U2f@_RB9A8bk>Ps*7*}cB|lX(Qk8veB7cVSTUzU72{>+71{ z|B>-PX8N<+eVSU}{$x&K&0_N$(o+X9Z%GP+JEQ8E{Ri%B9$iDRkN!cNbp*)OYZ=d% z)BXNzE2nBH>vgA_0+-E>iGC3UQUY>tB%PKxSejf16I28WNJ<&G2`Fl7S+RUG(ehP6 z%cTq9V)#k3bh9|wX%@GG#{0+jdD9bZ7fxk0L#(Dgt682E*s`?R3|2gBhW*i@XjcM^ zB#k4UdR6hSpk##OP_QYt8b{N(OxPi(MWK;u%j#(TeU=9?jg}gz$%ABdc57mCXm=9 z+i4GCX0j}oIF79!7Ui#hxMx!qb=Wv(-k_;(xaKw+E|wSkU9JtlWuToj-k6F%Y|onm+VuuoqHaU z`Fas`+bU_qM~=#^i1xn(j>>I_^xtXUcfAS?%4O$$_?&@3yZ$`|7kT(>>Dqd6i#|mVAe{UZDUpaZv-_fGuEK(;`w8@EFCl?Z1R3lV zh)+<6^R^qfIIvBLrjvbq192WqC6E)~nnYHPR0HO+<8ivc<2+-~i?a5HX73{KPXRg} zJa<_zm#80wB@bhWQf-8FGQ*%8+i_4Ee#m@S^23hDk%a7K`I7`Wf33)8PcICK7#VB+lK9=;|enHlUSBYa$Dx98IKyPZ_SL z`~W2GuRg<$T&~L?$Efq^Lnj9RDQJy0#ZrnLB1~Uxf9$5|KbN zHFz3#&jMe_^By@MDfSp04m*h;*JvZaFza%=5f~_LT40GuANHEU z4Uk?%q=Zn_H)vVIF|_iqBY_qKljAqnKm*q*$HIpOn@iW-h`u|6wocxg`;dHnLuWWL zVmw7wM({Rg=!Q|+Q@IPe6!^C$bjfEX{AQTCo{^7;_Yf^z1!IP5#6flpbA&6Uc3`0_neq)+mwyVn##`LPF-8nDob| z{-)U_mM{((s~~Yn>BT7_iKX_{Q5&eM!^*2j0I&>|E2|&>AAG%2kZ8f$ZCTi5+x9No zwr$(CZQHhO+qP?$ZL{l~|K5n(-O>G&E7pqjoRK5PoL>foab?Q7wu)<5!CX@np)R8q&!a1s^I3 z0tI=?E@^s7e~bM8B|@sE*=f1ertL@^wFYvQSYI(6juS-ScSa+RY;KtAcr-|!n7eG? zRNLe&^Bo@JMob||F&~PrM&z|IE_X02$B{)+3+NKUVBQ-w3WM(eDZ;on91sS%*j5n8 z%JB%e!Ik`eSr88Ue8}P?luhH%Kq|o%!r1*@uw|sl;n-PE&0ji{|A7BET2IZ<1OmV7 zUQ5k+bq`X21&k;A#>r0-A05k_@@1c!~*5S-?UrIX=)L=Yd7sxQoW7-}-=-iV4qX}66Q z5fRgST&dcBfg;56h`40+A-UHy;U^^YAtA)Zkx@W!#gkEC%x@;L1IRBZxF<_s0;=i9 zF;YlckXH+#(2wB9kq}EPQ<92LRQB55JY{N@cVGYehPfA#Ad*OYT&1n*^9YDSkZvD| z<+^JR+tEI_k@0^TA|!ezsktMPrD81DU(pHV&)KI5`$F125Y5S82n{^CWUXvjkoZ z_D8epY=4;sPm@~mue6}GZ2nrhFIkM^1f1+vOJmz}^6bycxx1GuR_Q)MRkYz6UvX_L ziOjDr&B3(cX6r)7Yt?O!>qIWGP!Xg0F8 z)iKGP2{p9lO}i0!GAuMjKil~|6d2v6_!>RsJ8$tCz4+_v?k} zB}@-Jyq=On^j@cNLHD{hPJhzy@;+<4!?7BgU@o<8k$c8%Um63q$YijfvWpRt8mwqP`M^8>FQsl2G@ckXR#+cB-bOcOm^e2eV$Ib1& zxtX^4rm3hIJ~S}j=F8BIb+L07za+UCqF^`GF7Opzf7U-%u2^iSwm+X0@iWHNCc+E= zol~h@ITH>}v3FI7OBWYQQ&qI(5EqflO;C)@J0AGHFd1oG?8^V5(hkG;6;Y8LYOn}5 z_z7IWTy_ImdEq@*)&SJT`fKYi53`^Uu~O7?B6W}RKFbFij^H+E)6y;~iRfMaeHKL- z8gB)*{zVC0m;;Q`U@P#s=Br3j$S)XSNhgwrQ-r!maPqA9v>QBfW6>u#Yl_^CP_{#k|8>d3OxLnPICFpV ztG`sk8YFJ$qKj6oKxm0}BK6e;VP@+^qlfCjr76QGRBX(#S6SQ`^B}W6EPfd<|5i+I z&ndBn*%TCBGYb@_onuvOx?R_mob`z?(bicfG2LvSF}$EDU3jI~Rcf@s&jfLd5KR=O zm7!X+pIbF~n}p`py}-DJ z;Xqkl0CC9`=R?)igwT+lH04P}VN~w$4DfnUy-1VqhMPJVC+OyzcBY+5AceHbrIP+m zB+Edt7-`U%#;vOt9hTIJN*7KM-t=%w2ekJUCqSw;-63 zJXY(-RIVhBj$1Rz`o{zaQV;20hUI;A%GPgvdOJ?2>TyOytNaA)2w=;pYX}J{BreeIF4PEEGqAr`~>P zrTjAV+oDYBIJdND(p%6Oo(|V6d(U1ZS?w9$CAQ;-3LbM(M#tZX%+I>bug9}RevYor z-lD+3f2R$UTk;shTsPXfGfL6-@(xXkC}Xy?u5+b28d^A4dXww?s!gu$%Gg(HZeYS+ z1w9F^$#^0IVE+J31mdp@b;q9_*@p)ob9x^%d)@ArQy)1_A)j2w{C)j8t0bK#N3U;t z-+-No_-UQu;YJICAnz=81{>1M@8Eq+Yu8;bH~$b_!e4geTxg=(yJ^gRL8|L=_gPML zQdv$^JWcUzq1}6YKaGDJJn;Iu1-BW@hsN%9vvZ4ZX4|~TKHIl?I`{Z&{B&j+r8@XXbmhG*(cM49(=&-bnRl8l1%k=i4d6&Y!Y*AQ{Hp!>b!%FHKG=-JzYfO6)Jp0lC3~l=~1PVq!qc^A!yVK zbb6)WZ4)px@G7_&9_LlR9(QD+|IjpNjwGLfOW@koSM2$om(kgJG4~Osutbe@mq@>Z zdX0WCTI!_8=>0_87P;SCNcbKA`k4Rfr)_5oBJh!?OxuBTK((mviJMKaX=-Iyl8_eB z*7r3g`)y=#_2H7xQ|!e#t6j)X%ZW;B?J8z4GeM&tk4%?bz&mEhqOtvIcG7X?)+&*L zLb!&@L261TN;Z!)|Jn`ND%Ps-Kh;-7_D$9x_I4+qop)^^JfJoI37oqZL) z997y1kgj)wpK$VGUn{4frM!GJAAwW{qv=j5mfLP>$ci%4@PwjW;HqAvqByqWqz%F% zk6jAm9Fz0=kuUnB=ol93QRa~aFMvcfg69LH*sn-~1bl^)&W$MviRu!`zo{cP$`TPa zn!9q7uQs5~aq1QJy=)|yc&CK=S(j>O`yAA^XTpVnJt%N>PBTie1mhQ3^NLfLbY?(Y zObd#~*-vUqA0$0-Nm>Kqro+M3-g!(fZHA5L1nU02Epe2bYuzUM>B)=+GvKF`s$Yb#S(GbbfI9IZJ=Nb-Gzk)LritQRLJD+`m+MN>k=- zkMRhc!SC2khpc>~y_|$)^i}0lo*U|c&kepG^`>XR>YeB5-Z96Qobz#pXS#}}Q5Y5H z8g(8_3lAjqiogbi&7^8f*M?8DASq=Pdq1#vp1bLuYY)yGYB?&-MtZSW>H_!jV&0zGD2y5 zsT?><*Qng{^!R4*HJSzD`$EugXsNeHlsyqE1o68j5<0U7}fMNPAp4`VMK7IWP<<0H!oOT>ni`6Ghe_FWL z`jhEr-ZBZeaYWu+S?Q{X)>b~QZwLiUIMOnre*nm9O$FERdG@$H{=u8A{h9X^1yBh% za4xE<$fH_P*$f)T#*)|uwsc-DsipDnUdy>16QB2#y9|zLoYi9vpp2QWg87eyci!S1 zDu8i}N!}Ei;r&?P9hAN2eL(3-BY7N%&J>PJc6Ke~r(k`#pCF4F(;Jd5Me; zPA~h%?YSDvP8rU$U@5o5Sp&4!Awkl-aP?i}3~%=fCZ@gD;N(w0C>>1 znD`R^(>2zJ7;k)z=k92~)g`1L7=l%+cw!#1gdtROKJBUrF<>hEvRRG*K)^QN-tyA| z?X5&E-L?|ravx{X6=FLx@sFIDvDBFk<@DNeuGjt$snA%Wc&Hb$^#uqiFvM!ExfOIS z+PS$kOfrm)a}BxZgc>I%d{?zLAdMkjPh#gx@4L;}p4U&>)+(~9u*HBfm zj&){_GlGeB9?B*$+U7sjJhDcDZ#}3j0ckkPyk&Q2SzFa=R-*2)_oNxKqhSC{N?Rd1$B~UoN zddb}!yqsUPs!)^RZ5R6{OIR^$Tc)zIReo3mn4Y1(J;^~lc5;e5uCG|a?7VS0(DKWG z72%#zj4>+Yy~mqcigyP+08CU@ii!!w^=5Xok;k8V7j%NoTjdX1e%55)q>G&Zj51MM zD0~(%QDW27SaicJPkiGLEP8&{pJonV)_sJVMuFLrpwO+>Nk^u@$Ez$1y#R(h4cgN) zB!lUAI^U1y1x*}74*7C0hnBNN+cQTQm6XJBdOhu^Smp41mLZU8i*P z_3FFw%+a6EL$2NepsS*6cmGi8(P$vlSYe80@6BPA6k(n_Ma1c%m^(KXi5eOMk990? zr~%?u-B_k!8%TI&LfahB9;XBB93B=p|983Ihs&T7*H}lIno`Aq5{gegcfv790 z`z?sayC`DyF5<(oEtkGX56p*Lp3E1%@27$>JCk*{eV9F_bRn=6lJB~36of5P2&h0912ACJKvDNQuv@w4K5-oKs= z*F{gWmU2#wd#ls@Rhe`@7b1wqC}c)}_*H%GTu2Rl+Rg$ZiGBCx0qfW!Pw8)Wg=5kU zOOin6L+VtyYs{H({?4<5Qoj9)421`B8Hx1(r+5CP+!%so!}by7hD0`Qa}=5YL45wU z48~A?X{6vuz?CEI{7-3r0SL44z0xQQ!H1agjfq45xyg}B5dJZUw@Vyt5X7g0kOo2$ zbST>92vbbPhEETA27V&wlMZR54?e{`72CRb{Tg*Wp_Kg+#IFE1C9AS3Y5*+*r6$m` z5|m}Pcy}U6&^%&WM@d*y+zti@R78JwWa;fDcoO69)PgHDy*>B$5Cpuyq|u;I!q713 z3VIsbIPp-uR`d&p9Rz_RK;Aej+Xm8{tp44Pu2Fmcu0;7~oS3>vG5x&dR=|+)JvF*0 zHm|eD)qWjO?dak2$9(lnSuka)TQ`;p{zaI0xPzG;6FuYZ)TTB6W866f6B}~ImLGto zC^R32{p$JQVeRVQLP;`90IQLGa$p(3BkzQ=t$>`b$UYS>HZSr>(5xpKv3fY!*G1F4dB<5LIPun$4+6NFkono-R%^g4scGSxFbu52g%<4qk-49DPiDn327_q8SJ{h70}~3ba9t-d*ex z4caKzpn?B)Ey^$`R8suUvX8k88ANNuxJIi8aey`8>#wL>VyPbSW03QrkfWQ?v5Xu! z&6NJKZ-J^rfS?aL$baH7_GcGql(JOS1BPA)xnHbBj#INNdzWr$CTJ2DHjkjb20OYn z(m7zBfucTbtOsy-L2{EoO{c_MTzLhF(SXS2Bm8zR3K-^Jbw2fk;tLAL*{aO znPUSw#{(MWlW58%(=wdRhYY<})U2&&R~EE$&jzHLJAN5+N;NAH=W@%(?-S=V8r%Bk z*em%L7p@R=&Vr?qRrGK|y^2jLrTjWOr|mP8nJ2<`TRLXk|BU1k9>C7Ur`nQbuW7UzZcHZy~k#j=!yiMTX4umEQnvP8Zw-jTkY4(zoo% zRMn|?JYDY2_W3V%mO_=5diUL?1Y38RG_m`S`fn>?c%ubA-JZ2@gVhwUhVrNR9o6l- zydJl$Awds>S1>TdRSdc-UEhHaloRUnamM zBd|#(y_w!{{;}7%CVeSdfU)(2_o}_c{_v6)m3rmI0q(N}{ za5+*mE@nkv!tN8Lhf!vC_S{Op64)&}vc+;Z`G7Q;O=pF{xQv@Dy04Kp0inwRS?Q9U z0Y1**n`b!GW7edf*&aRT5GD~$q%3}3ESRvN9Un6sBgMmK3{uA${Vwl|PInt~o?h&2heSkJ4mWRV z&Fu*xvtb+lUFWpC0xVvk%N(x@eIG8%mX6la%H%9jN+YT`)dUVhZOX$0~95 zTfkii4VAbg)WMTK7ouz0AP%F#aB&*@+C9>J*Y$JYrP%foLVVw&UH&-VYhUp5W*?6j z^1rf`E5kmFXrs1tY}ip`PAA(XK9*IW0>oYgHG&1^iB>Im|zKZvjD+vIIqr+B)-_{=JZ&$+!yOmKJis6heFap zI8K{=sQSHonsv1n^ZCqf-tCAbM`D2yI4c+!^BZ-tKnQLQ*9QWV6}4cIETlTH^{u~_ z;oL|U+EAdhFH^BaNg@qzt${d3aEH&c-H~-SH7Q2inss!2PU>D+WC|;PvEbZO1$$=` zUb;8emXt<@2jPTuKinwwQ}`>R^Qx`Q{WZhhf>egJ zdHAl|yJ=u7+rb8({H(h={@fAw6;dWx1;U?zl!EQi1cXNhX)FG!`gdwZQ$-&7v7mm? zgQy{~4)**^vMTdtkJtV2dK~>1T?t^w1W&smx8!hoczyKXK-JU~`$u?8uwLG; z7xGetXjKnKAu3LNQDPj2T*~{CEvAc{G#}41{XlM1W^3;Gpf4huI5It5zfokzC3ylU zgN+GtfbCWc8!49^k<|rgvXOCIHkh(X$HRXtQL!yS-dH6}AoXxYMq6wM5DVypMFUD-f1c;r3`=2=LQIJzE?K~1q1HqysKBKb>WsG`7=wK^`yttA z8Pwh-lA6$#&Ly`RKwxbwC)FP0`Z;DmXOu!t>mseUh3M-N6`Q32P6TJwer=3^i{Ilp zU58z%8tz7UVA=V=xlFGVF|T@@0t$ETnUoRj3Ae_;D#*1mPWpvH0L}f)erh;F2BmGq zd7S>45W%uVP>RH(dZG8d`oJi? zNK!A3(Oh(_tK@#?)~jT3Im~+b=TAomLW;kDry(r!;S{Ks&^23peSn)SD=Gg<+zOJ^ zzv<%0VodLcPz(j}i?J-}y$ZF{J>q6?vlaqB!5F&hulhl|FetN4PLWU~Ux+5+*LH3T z6+g<*w+mBkWjk(sIJnup*QFZ1W#i8>cTdz~YRnx_U_9QKb%A=R68%1~r~C?q%|%uC zde~dM8<}G7<&4??84><`U+xc1KH$;p^n7CIBc3uN-oCr!UGkrx5+U%8{h+nY`zk*+ z@C|UZ2u`=m(A4h`cU$aCed9#W$j^3|3WsSNJ5Bjs|a~_0wyn%>v>JL`ttq$xe^HL}x>f@W@a87Q+ z;Y5Q9vXHnrzh9T8+A2MPxgn40Og1z+ctIT27>=rwuz(?s)EoW@y#^@RzMJyA5G-L( zrt~&oSg(U$Hq|FR$7`=H;|Y7jv7dldKi|f=#hkex-*E&%MamT-h7LOj<-h#nvo{3z zv3y4_9RSTa4xMMg&=vogoj}*{1uEkVEMXm~(So!8XK_ikacR&8wKE)Vw4N=7)sU?1 zHXWKgMs178G_3z}#8r^%3s>pIQL z+Xv(*V&@cv)B4(3ga1OZA=QnKA-iknuA0!d>uq%KO$Q+WQntZ4{y|SbtI8EK-#3fP zIH?p$IzILXF^tv3F}%Mq(mu)3i}>kg(#dvPl@hzoJ6A?G`aF5}o&lHG<9_< z1G7k$@0iskyZWCNAvZqg+?e<(2wWdu3A+n3ng2~lU`*O80fyT#`H3j|&2Sctzz=vVe5bst5izsK%^3A_U!+T~2gp7SUG?p`tXq>=R+a95LQ0%d^z zZ(;feWi3qWv(jpg1PtCtFO#`kUkVsy4YFdUG`v_uc;XP3E5&io>OUmV3=i@BiId-b zCgNYmW(nb7)|Wj(V>*-QlusFo;jptR{teDY{))*%LRp1zdkG%Ox}6hsaG_&EfrkI_ z5%M4u{uAzO(GKOzv)_^@_8v-V({;%M45u63_Csxw<(i^yF@VCAy=Fysi#VTwTHWa0 zI(%mB^+MpF1bAxviIL6uhJHpooe^S~nI6efbK_9B zHf=rO=wv|LD>50&aLaF&a-9wp#(uwm>KKxGHKq517wu+NM(4}P{_}e<_9j*sjh!O_ z@f_TYs4VhJGl{s|P#)2QXU0w}5I>q*fQWON3b7c1G2P2GLKS9Njby07T>FsJ1-_Hb z&U4mt$66gF2jhE)}p!PWVOLuPdz)D0tqjZSYb6B5pI*;qFz1OG}Ip3L!FIX zGJg%uFO1hukp|OLzR3t@vzzK(=0SF&BP4c4#F@gW0P%J_JsvNI4ZBA_uIr!f!uNzGU5l zSSh6u#a_*X6G^nej88~6`9M&IdEA>m_J~YINP4!Bzn9OdSqIQ+w^PS`@L@ANfN7eZ ztl@h>;z~p58V{aXt}WdGKENqmf4@fHqiIAnq`!)_m8I_GmHE{*5`bqK`g|-BfKVFz z=jIk|cE_60WD)@RXiycepdY~ANKh4-Am6q<5&(L7oU+3oa6eb6DDp)J0ClM`1Eeb6 zFERi=dV=p8!*^K#Ga~_@LF)z;Ui?t@g{;`pa3lv2w~P=MbcS)ctTvkjAsarivDx-5 zJ3l3RsAV1iHVnj?p8Nh|$H2q)5<{^!2&D@ib22+Hfzlb$@;8-Jz z4VVIvdznm#50+Ja?4J&Q&V|mqAtO3%^e1_XSHfF(a5q&R#bR=>JFF0)%*vppuTOMg z!f^aSP?a$gEbt6wjP_(ScFEwFi$aVsenFMQiSt@9xfi}uUG{F{EfHqOQiC>T(HiXM zQY`Q;R6$tb=GA%tX8#&5EF&S4q|_AO4xWNQiu z+xJ6N9}^P6?YIKgDy!s>_QZhcITrZ*h+u?1!~*XgG1yG_Okyy~Bw)ZTqw+2x;)rCh zVOp}4!KK0DY@|&Vs(r2Th!d9oNXw_3!UEuLX0ZJ`zMle*i;|8?sE7E^a$5lrcO#`G ztx*RV+^yWXXypgf-Lkqx^I0I~^2gPR7|vM7uGTrfFTNB$9@l#YpFagyZ`*{>0HSB+7R!LVAN~+F!B_DLzuuZk6U_Xo5ebF1gqOT(0W@TG=5J7c$tg5WO6XPI*Z4p>tn^M;=px zOY%2DbF#(!@dwrn|8z2OV}d-x<=CZA7yl8^ zd%u6Yk9E#wZRIX=70T(U>wzRvoJ*#$hSTIhr^BLcE5-qYg6sHVlW7tDesBdOWtdoevT7m41P^-RrK&>sPGK6aOF<4*IP>BmFAoxYc%>% zD{U1ISCy44VhwnaCCv-Z>U~~}1+A<|T9e1Vo!a$3rc7NTpDM-iAAtpF^@`ybJS6}T z?q8<3__H%cacIqgqISg(9Dc$-8IS~#78PTAe9Aq^Zz^kE0Y{x7*;U4<0VfA}BQ%H_ zO5&Y=UP>n#%I;m-rQB_gpYHX_nf9|PwFU(0c&beGB_s|6qu8ekGaNo8*l+pS)z~X@ zI~3`u6@y(e3-e+ej_|G;cuiG87f&Hx8yMQCchkP|R#}I?{9FF~GgQJvWa3IJCg9aE zay4;@I~HCJHYLu8O>nVykl~rP4CcqJJL{*bJRFB~Aiv3fj1Ra%L~P^#Eg}m1cLwWz z;tdiXrHxzxFTSdCC9y-eRlFFG%^qy2Z==zV?}2B2C?NxNVN9y;%yJ@SoRzS>%pQ;z zn&)jztyCwk9gn1!43AKG7#l8uF(Ad}-=h%pU!UQn$I6WEGd9S#wJG`6nBQBmLwcC# zTHp~Y5@$h#c^-{5m=ZMk6u60rY1In~sqm+z%+N-8f)#}d<3yfFix02l;OMz03XQ!f za|=wF;pMqU%zF=*ftHjFrYD#S70d;3=+TY7x6s6YVbZoXA%Pa&R`CM9EQ@7gbt_Bc zUZ_ffg%@0E9X!h`%QTDj*2$)__A9(pY(?#$PqSFIJvk%2-Iv=7{__rJMqv-Y0}?m` z&9p`>*kxC5T^%ac_U>8XASv{ry_0Hg^0JG?TvI9#>?$2IzXFI+Q~9p|;-d8*0pu*u zFw&zD`ZBJoPB`o)xQ^ouhBCgsW|sE&qiufg8=xEKIEz$NkM5yoQBu8Wd-B>Htnwo_ z3Tx;2z9^|n586~C{(~+nf6;Dwr5;Gzx(~wee8ca;!p!hp$l&8WobK=C2GscOCXcZZ z@4ZjAf+-6;UQ&HN5l>l7$ZLgAoXef~{&_gOdw3-M#ZJTN!Zo!J_t^n$rQ%iu~;wY=?Cd57WH?D6kzQ(_I#b+uGSx8P3#wWjlSvBvCV@wOQmg;YCj zH6NnNINjs2^s!1B(ATb(4)nc_<6I$%F`d647~aVO&J+@r6Vr+)sa@avhajc&m6K34lFhEm>5GtvleHm* zK+KMn&cVm$kT5d5DrlHmsReTrQKrj0Dy2fU6_LTsfWYz$eCFo(Hf87r-Q;R1K?eF_ zHaP~+dYe7_OiJ19>t_3xW-PA){yXwd@k(WcsoYI=awPGG3Ff6m`ohyp&e{YZ8v;NW zxXeL+R+_cMP*RHwoEBB4@og%w4_-4XBR{CT+R+szW4SIJQWEAI z1@1f#gOMk1&PzAHs!9f|+h2;^w%%HK?INw(h<#GtOBY`6cc(bmn`_#$Jw3LL%LwJG z1%KZEnlaNze_~uJfZnc-VBeP{BP$DWX5d0=%x>;0*f#3#U?bjzy-92-c|n5U27sr6 z2scN260S}hB0|r&eNS3_?hY%*FY+jpHVDAJ0k2C2i!@ax+OLO>w#D|cbPfma$ny*C zbkDk}CJpl8_irwlA7-XnZq%}PfjVnONzc&LgG7OJ2`(zZ+@jq>^`zCCbJjyY1axM5 zdE9-yzE9w4;Z>>LZ|^!;OGnL07q7m@d9Gb#XJqGQd9!-G2RTxMXG9S)WpC{Tr2*~SV44C8vQff;y!9(dw2WxCesr%<|pBG<>|S^ zhO4zLDEL3bnE7Z)_Uq995o5*(*#1Y1se`aQ@L;bh#<&WD`w&a(D%%}TER+4eSuwj9 zzJvU)p2OS;njW5^dj5EmPI?4Q73ExsdG#8!vUz(OMtbautJe38igN>4nGZ(b6{>M{e2LN> z@{t;*mN=Iy*_-T_adubNFO_9f8RM`!Yo-c5FG)Tsvb4SW+a>mZE#G+f%5fYc{pxq$ z7uy#2*zg%kcqBVdEplJ&Kqdg6jFP1}E(rUNRE-A0dVgY_`J_0mF$? zN2zixl5E>{9`D1-tKmDMrf?FF8urId6+2oqaIo!E8;3OgXoEivVHS>}S&NK_-dLYF zGv?o~5F^OFYvSL+mYoF~Lu30sHLU?QtnIJk>$cc_R5U63?cEBQ?fNpun^xD3;Wnw! z`SEz>gZkvC@%_VO`bFE$(bnGK-tqG&<@H<8bU9vosasf%Qv+b%Q0XyMk$XGb@Lw4w zg7&{MjBLne`98vP@GDgk?{#GT`fK#_*^>+~UhH!v@RYf&Q#^;ve*KvzI-~vE(5x0E zGKXz`!p9@G^*Q&NG{UGYFF%G%JmL!E}t%jpU_=aPxPW!W+N zC$fkd0NacLZC}Lt2Yz`o;*wDK-XdY-TS(rKZUdKLn?jGgKLS+ujT}RS=-IF$-KPNg zsb4&ZyeFSte|~+Kp4IY287#9>>m8Y>`BDCxlo&O$hu$B7-|Q_#^oXm+m80J?yUEqy zXvOtLV)NJ{$i_uQ^GlS1)9=AGS9Z4>HT-)J>-cc3%~Z#IC~LvasrGkl zh*@gs5)C(|mmd-)!S0@39SENR;iWk?72a*)(LFkj=|}G?{{GOp5n{JzxU!#%aTf|)xhGdKO0Y+4q zM%N~c!(!BIxe&VVn5oaLZni5XaeS-R-gI+vf82iMkOx)7_rtHv)Y6;ZYm4WLovzXf zIQ)&wLL=pXGZeUor}(79|Apu)ZdXzJ93!^er>1|$er|iBhF0=$?D?SDWmE)gl;8iJ zJ~b&a3@N{q>vj5+&Tri<9ELRjvdJ1NF6I*Imx92%5YBGsg@N396sYUW77J>= zhPK#$ZI3b*@?QZS&k@1#lyUdrdOUl8HiNA(&aQvvJp%wAx0?iR07IvooV_CZT=y*J zkI_cIp1~VnQxtX&w)ed-X*tr02Dl`#QIBgY&r=x zmB4GAq7)2*POwXlfXep~BJk-}GATKJs8lk^WWP4V?6NS_!X2eeTViD*Nrd<&b1c&0 zWnjRh9de<=rELRW4(T49HJ9I7uf~n$1ntvO^CVLu~dD zl>OmQsObd81ght2n*i0vD5MMb@pZZTck~8_W~=)hW!F7Zy(Wau0uBrUM{G?jOIig@ zIUDx|wY1jzm!lj$jB-G(Jv#b{l>O|y7)T(zcRYSu5=C8%+7E7-fq!v?uLbgBo7l^% zOn3>DXT~jp)t1oeu0E;lvmCjT@B<0d!E)^eE0%#ij&;z7b%C4D(*~nj*n7L?(>b7f zrDIpI#2u``cK(ZWk|a6kuy5WnCck&z6>ot=m5 zHiQWH4V8=f=otg$obgJb=D@sDZ+%whpe+^Q4`*G+z(d5TS;*g-Wf#hs1$xjZ)|M4Z zlhtTEb;yj-2ojX?eMjJH5L!aUw-eq}dyyL0xpK{+YyTc&1Vfs8a+Yw^fgHj-PK2sz+$y6EgTeXm!LZQ^sqT6uTwyr=6JXNx z;~`Qdf(BJAe}IufDWabzP9XSXO_7=Oju0A|KX0ELbWN!K3O$;&FL5f~*hk#)Wqit; z!B!P!1As=-DpR&^>Fj~7?;^~4SM1DBunt%-_EF2fgj@W8ym5gI8Yovz0NaERh|}Po z2&!fbr?8Fu0MYOZ68K}tj49XxPlFOLklzx*Y#hhm4k5oO1gv;=1N;+^&K*PN@aqbQ zv>_7l%SQ60X*(eWT6~NfN|mG%e-!r|FQ3LgQf=46&!rp~H~4@d*o z1`JAHu%z~=^YJnDe;A_bTGI@D6J@Z*I0tgZQMo`Jg6l++@E%)FJN&yyE~$5gxBald z7_#b2kvjp|CD$~ioNO2x0MHKIGjOgKllfZ6KelX^iIZRZv#=}YPljAQJ-N8UBl+Fm z@Wzq`b{ul7fjP+q@kz1fjg(oO&?DRfdaE|T07CacLJBMNz3vT|#A<9^nsZP<8&2T* zGiw?qX02DICb|o)+yHJ)gC)+et_t?sfc^v8*dsE4?N zR!afBxcHflwF@Csp#Oq{i+Oog;>+>VjX6L7Of)MBdIeMf5;E?tSAZ(PK#S|Dkb=fE zWC9Fm?rs-lx?M7a`d?8FdC)jX(g)o6^Xxw#8d_Yhzw>=w(#GVXq~dzxKR!mg901`v zKvPY-=iWhc02qt_WKykx@*N_lWp$16`TT_q9PQBi-At9u;S%LAgNUJVGBjFb1E&rk zj?^*LiO0c{XYn$w^aGq})$6kN4?WY8H=ot=4D8FAHYIPCE*Sw4-NvPWZg`O`hxw{s zAF9t0@m*8Y4qxh@h5Y{L7_3*y9wd`?Q7YSn0 zfj35&<~WyNuyb%tB~(}%7K&cTXl}^W@IMz8Z*ykJwuY85F%{M?0Qznm17Q*Rwu%>J zr@ZTecm5S@yUVw>Jovyrj?=v0am_MS%KNTBMzu(kUU_1f0OrR=q|;h=Z+^r!0n#i2 z5OH9Vb=U2@f@O?A#AylXe-?E&OA8Tipr!rO&1IM&;_M}u_;{KZwISlHC8G4W|GP9u zL-42v%M_wM6lOA3Y=YnS>PYnIwB92!zS zj9LO^cbo67ycwgZ2jLXPiVZZ0GFKHR`m=|Ub7t4x~KPF6`+>*z1$y(knE1$RMP_3xtA;e zuQ;@M{Bk-467#rZjbiCT?0@r2C!ak8FRjz@-A+%PA=bP&Up8K;2n#liQjs=q92V)- zEt^`BC`{N)kt1IQvts;1P|7ICN-pp^z5c_!`v!8IdZpw;7LQ@J^Ip`{1w6GA;1&Ly zj0-NYf%au#$jz40e!Z(FaNEu>cKY>(h0ex?=3Th5wq1isE11|2NR11o;JeV734MKu>Kv@E7PA_x}RD+8kjt zH4M5Jv_j7pho(LQ`QJmXuA3y-rXEdhueuqF2$07pVNs)mL7u@Gur z_uae2q2nF@E7IFjgV~;Fy%QCv@FI>KuiVbzFCHZF0nwclV0>9|fJulqjDb`W9^A_} z!GWpu64=03P}53J$@!Nj16%yYhmR4n7Ik96R+cigQZ8dJr>&Z+7Z4i5vzkKP0NO31 zT7e8L^E}13ECb}CJUub2IFF92ROg9t#s=N&44vDtG
      0||9g+f7tJO}(}T1!wg2Q3Ya5Pt^vm6jdoG04{J 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�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 z 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

      @0J1{p(tQ_h7uwojt3) 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 z z^l0fof4LWX3xoP~`_Xjj{e{v|bb`^?#{`c59G819RD{$3_$ClRUsyMO+Z)fmcP1d& zSqw0X0ti~oNPwq8B07d>!|hwW&H8rzse8X*73?&BY$Z!Nw}b-8Km@Xn0&Y+6+$~eJ za)F=fjB@I+*7jCCryk$1{6v>GAP!MNLk=E{{lev^a^d_LP)b2j?Esic;hQ4pVLmzZ z|38%q`XNq$1^S<@XV111^#94`lV{)P|JV2+{kJC@PXMK7h=J6_7q?{lB_;S8EEF^3 zYz5GQ5U}+33uD0M9vAh08fDOv#KaWzO*$tK3&zus?v$n&Pd(B`8hkH$9z|0?4}@r( zJw;(@a9Wb!$fv}Jn)F`zR!&m6tp6DL+N8rbWA783D zhli7BMwzQ|xMesfX5x8BSwH(9&=_ut!O3IE>5LcNs*7l(H}=+M@nnsxAlC%Onl((6 zw@qcN3#W2BLt`G2>J1MtTtO87&X=2Eox>mFw|gpmcr=@MjO1wBZX-kt0mk)A%*qf+ z`~BEkMKeAXogTV^pgaW zRXybthcZO#VQoDcV+h+aMhw02Z(|zD{&0qi$-ltGfx+N!rxaZhZ=zHXeQ6{%%U6a9 zwLUU0G3PrOPhnc|&YMOX#sTW0A}NSzBCHV^L>SwW8pAs>9oj##^iYy!hc;7{H!kLf zhM@#RZ-ms)x+Wbo+xh9ufQ9sK;I!|yH5B*4m`y$9HQE5AFmnG5r|lU`{2R<5X`mXI zRkO-4=>CAN{y4?ARTp@9KP;R77X<^e;D@;-yXHv z%}(wZ>H^s?+J}38%^m@IlYzCYS%iJq-tRR!dv97lHgnf@vRuwobbgjVe!Xt9{VKCJ z$ujx4(bVtl_4ay)xp>)S=J)bVqq9$2l!m0Mq77vBG+8zuGKQaPbu#ANeV?;za%)>J z7mN?g31W+(G}T7S?OJYy`6CD4$%_AI?&>h5GAJKz|F@0T=rNF@eCAya$pnmFADraS zOnI4KwbN`LHuih3+KtyK{IklWA?-JhpmSY`y!f_x{N`{!1uC=9qO~oXx_5Bc>l`1q z=1*Lz^!!v;5&y-L2Gv&NgpCr9~&mtSWeQ@ls_+pqQx zvJXwW!2Dgd|1*q!YfpMUmp~?p<}x#!(g}A$ubw@dQyJgRsr-8HFLNs6+x(ef==Fj~?-0~qM+l1*}3OB3V{H3)Jw|q#+Hap8Lw9Yast+RNkb(UCb znIt6rJ{yr&K)i_qg>so_I0Z6bNX+E@-hQL=Q|o}KX*Ufjr`#O*7Z&s0(NQ*8unS~L znP?Ev#Dli?uP29i2hiwbAeB=tPi|c#kuNEZQ?YDvsbA$*+sm!Bms=^DuIpFIlPXjH zLpR>z%ZJi2EYSZv+1h$)>3^P~{(pVz={Nn)*Z8db&RaVV$7}Hwx$cnrvZT9~G_4oG zjdvZP8F)zXB4lxpN?M|?$Mr&i6HY1(@#gx*A8YGdwe@H9^{waLig$9nS4cSrZG8Xz z)7s|x=Eh=cfkU0)+Pg7&pjQ)rT>a_&$-w*5HU0Y{oJ92*^kq5;{9(QC|4^mI z%&ntfo}nPZ*hg%z>u7kC+K03{nD{iDlD#;GyqE@)QLHS5ab#X&nqhzF9nH>%Vc%W) z>8t2ktoQMbU9P}qad0skqK*fz+tK~`@Z{KQ9Q^G4)aY~?2gg4@*PajoM)p8R7~dd7 z7YTm?vogJ9qwBZL&fXiS(RkTvw~l{C^k21(51QSs_v*0YH9Vlj$F04ScBA7RopeA{ z!{k(5*3LlvIb%r~_##SYJoUq2OkMsNW-kWBh6C12O@e+9Qtmuf-YuLW98A*Fi6X*` zAO}(yN7E|ZK>z7#I=zl}*4A!rZt9ogSv{Iut_>MTy!HcO)8K?%K|iEK&i#NruPIm7 zJR~U75qfX0*lI?th@oX9Iy7HTFwLS)6_1$*o!q=0?@*5tV3T(hY#^lus?xF_`L{}K zqnEcVQBquKT&NSYevs1YceNe;(oaZf$bDX=#v?KMY!*ua<%@S;`=vFVyT_1^o{?qcjD3_y~)N5=IHd6F@SI==Bl7_>8?^jNStr{SP%(wHTEkdKMu)Wj|*c+L^+2i1fu5%_p}&CXaRlSHIQxzkvP>`R_HiNh4c) zUw{!k6}3gZUiXj<=rrDvW8cZ!=D{&OEfhMlu~*J~N3njUGYLI_bBYIqKlq3$Y|_W^ z;>3OE4Q4?BhExGM53rItHgJhV5q1q46gU4J>PJ;3oh>*qvE0zVWw@*zk|c3h_#+lp zRMAt;J?eqAR!przm)*%=XccChrVU$HnkUb!4f=K!_&5dpW3&yMP)~>F;a_YD>Ys-( zA>w(re!tH>xEKbXjHRpoj(yo2`LI}j6m;2bA)s}rP(zP6%yBN>ChYP6Man>FYA_r4 zZ<(UT6v~%na;4%}N&}t_TF=UH3N>*s+FkS@IGCg6R`v}X6{tM{Og#X6!PpJNl^p~-{5Y-|mIoyJ`ij+_(_$#?>Kej+IwLl*|l}fN& z+EAe_ipg@zQWZ^CRI40&X~pYE#yU!iu1H$dwgiZ|Dkt8r7mB49#pm#A7rH-Whuh~jurCjJODm`oKhH4c(ROo=0O1dotm9Pv+7-UA7}A=->P4gJ(maqW}Rn{rcD zIFL|Tk3J>ALt6q$gZG?M{_8A+Y+{ISIOF~>{2(SJaHe9G9g83$5W`B4&B~a#A`ZY+ z7dpI&oP};)5hIz-cq-}6v1d(u)W_6+Pq##otri5V6Us%YtOS5H3NRZr`h>)a-f%8| zJfA4;yo49>am)8Z#7#k?Q<8IIj*+3o6O@joN$|H>I0+<8Z#WJ|vyow-^l>E<^K?re zSfluIw+N$g4(G$IqG!cIFih6j*nFldkt-XGA0Ma?uw?|V3K+H5tk-3?7R+V z*4hp93m6+LQUE&9Qyg;&oZ^L40ce#`?+K&ktyT)Z7F5Wl4IOxpY4C4~8tItFL^{yE zhqk!A2#p<)XOj?>I&7!tfcR4>iT9dn>j$@F3$0<|$Se>Aop~kvCAL6EFm`0iGa0a{ z1|0XxHH)BrSXgqjy_PDZCQ-kT$V>|AZ|bo6%^YF(8%#O~?=+ZLV{Mty{G#z&epHCq zd@dA_aQB2?k>!Uz!s2J5$AM!jDt7P!0}o()ZYehCNx9u$xYg1|(fiFq@>yo)Z0+Ci zd|q3FO>aGLf77q>FL%E1I}KLdxyi#a zoYqyrB!ws|e9Gx1&I|g!hyr^?sMaY+u8U~N9q#$qF&Y{8Aw9V-c5k6B4piMAeIa^? zMG`qCu=gK1nY{XF`%92xEL_|a#mc~KMAtc$~A;W*qA@#j-{kBZl*Nf?ngYGH1g@=o53S-`RvFopM=A z6};EnBX)@buuT~qXe~*T ziRq+e0Vt@QMe}$a1Qc`?mnn{_3Sf*-adKQpG)FWnyrfm)V0{-#O(_A(=6mZ4c}0uG ztHJ1O00X!7Q=@axI(WU~t(9HUVSljnX0?Rn^)o2{!|yi>9MlA;i$7KCb%MLkzCrL- zgHO2i*t8nfHAs@8kP+Mg3WkgzQLu_4wDXn^L%Agw%s5YfLb|Th3tBiVV5D25$P{M& ze2CX#D;~xf+3{BW!Ju}9ad69Q3tq#>u<`^A+A(d^=o}f2aq3_U!4i4b=Z`Jp1PV{Z&2~wKwJ8jj<2#h0)gjzyFK=dfVP! z822NuOLtQ-D`!2gfqorWEcT2iTP_Ur`THZ(1Tr(HE~xTok?}n{yxFXK9F;mk zZ=%^XUDNl`-3VT8rC%bYosswAcAeFP;~IqttFn;K+|+ms)Vj}MrOx3OVPq^c4w}d9 z!#%ca?Cl+PnrGEhI$s)Ap7J+8CCXG%MYOTZ-kGFgY;=3ASF5KSAN*5kyGVH`J{8aG za2%(7=+mG6)I5BJQJOLG@`@fFJUN*x;As`mdnl;jE8j$nWzRwWNb7kK_HmH7qQtmo z?p4C-O@aX`yT?<3LRvAJPSm#6gF0zKDc%-9cD=SJcq5f1FT6=mjs?m%(oRVf^G$h9 z;aeHwJv0UH?v{8o`Iqzl=*TT0zwI*ZeW!^0bV{^dc6XBxU~XDJHjbOSYUsMbbau@; zbl}53h67--={k-q3Jz%Ss3?zP5AVTmDSUfsYD;zzivJG960@v&NG7mo!~5#6^LF*r zuF0-avaGr%FT2O9&bU>w-^mzdzm?(1c?si^|3-~i#Tqg34`US``j8I8eux4LvO%bn zq2Ov1K^{Goo8)9_w75=f6#(vWule?6bAP|N-+QdykxMWT4_<^5SXL2U90(ZL{>XT; zU!#s0NY4hSOeb{>y633{Ng54WtKL`vQET-gWTD9*1`B*P23`!6fn`!xnXaMsS*2HL zfh0@G9WJCG^&4?Y)*#Ij2`<+7sxcw5NmL8nIXR|d#C-z>8d&%bWHBScsc)(^S_ss1!~wYTD$KGJuw}YBGCW>nT)Q z+*!FcyPm3`_k3bO&#TnlZ|v{ymP@Nl1mK+N(cr@|RS`yNEpxQWbD<*PC?%)JElg$3 zvUg2l5Ed1hyK&vFE-FJC`F@0n!V22Ix6Uxo2XYeWL((N*=$@hw<2O)tZ}rrV`HI~P zlba6=HjJEV5^Pq4#p|IzMcG8vbGqX9F&Weaoa8+PpU=~bE^X|N)%n*G3A6`iSd5|& z2v$;E38$4}W`n%`Z{T!@ZsNSbo8Qt;Tv>O_w3NtSRoWqm;mQ9d5AU^*ngw6Z|uLHt)u+^baU&Q{QosRj{Uba?_Le_KcM&q&*E8# zp?~-V-{;-a;#-3LEMf8ezsFE}<$s~2_R2R??f=%M+KCuiTGg(@m7@l$3fv?G@nd^Z zT7;K#tV(f7#b|?ijoJq?*@HTNQsrv$*jSXmZSOYy*IZLfP0D!oO*{?MhXafj5 zUNjN&L4blN05}wkk~q` z?|7xhMN;O75l@c_%M;S7Y@#a3ey6S8=#uSVzi@(&(fZh-yEXbnhDa0~yjB}Vmo=IR zjHG}CCb9XQ&_A8lYOFY_$&IAU)TsZl3np3R zxY<3fb@w{0qhs&X`cYFh0DVEuBzTCV_v>a9QjCU>DE_Bj%)EZ zi29U}gZB^X9kpq1y@10F(}8XGD9fkv2*8rOe90ISu)$!*@E!{M#F54#57k{9h>Pva zg)$Lqr;bBFdtS{EP(J8@@6?^l#;AhB>FUXJfe=@qN$Sxg;ZMnUjg!HPk>roU%@x_P zDu;^8DLPaPqCQW@Y{EAhE9t|qOgG1OLyS!*@AhT6qsO+A+t&kSv8^ErDdNFg=D z6;F?DvWS{<0HcO6S;Sho70(`_WI=cNqvf$PzNzA=rC#weMm$-qBELk0qKA(wo=q}} z;rOFJ3) zO6JbF9!E|i$}&JD^-0vV78~>!MSo+_{a1{6Mu$C|D)H^O&%8)^7@n{Bqct)kt^1>$ z(yBk|^`_I?9zlyMWxTot&ULr^e@@q*Z*7dq9%bdh$Cs0_Jl>?ouYv0v^8Tp6+gJe*fGn38134 zVZGT}x8H19Z?-p_I$QRuE$7t};%5x8MvewZFDr#Gv|k^#qL^Y3=9CK6O}v3-K2zkg zF&f_}7>3b=s?e%HE1EbMqN0GzSI|S1cnfA8VMN$S&N~EIfT|$37>&zQHrpq&m6(K? zRqb8`yvWMdlV?vcW%-WxgSBWy+pKpw}gI6z>4m^J8FQu z0g?c296aW{OOyoxZ2^-0=)&ze)d9-saUEEdREMhQI?ywzGmfarvu9L?s=)H4D&4=f zj(X6cN<+dL&@t5`+e0Y(NyF$asrV$S{h?txPgv zm+Jr-lafn(P!TniK^W&}B7-jf1FNHCPmsw|e2rW^+GN#%RwyuuJ+QIy$Bk_?Rbti~ z{RhlJD3nE(nO@74#P+a8Obrx8^BrS&T@CtIn1|1$U!eu~3-s;tj@6RDxCFV%9x5n2 z8%|lZ&DLia+596a*c8jB;P23J%oPAKd;u&Cl~koJhtat|tYsC>C@t%RiqN<0Vz`28 z;kYKiVPK#Jt*b6aWT90YzuH4*&oF diff --git a/3rd-party/hwloc-2.7.1/COPYING b/3rd-party/hwloc-2.7.1/COPYING new file mode 100644 index 0000000000..e77516e180 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/COPYING @@ -0,0 +1,39 @@ +Copyright © 2004-2006 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All rights reserved. +Copyright © 2004-2005 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. +Copyright © 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved. +Copyright © 2004-2005 The Regents of the University of California. All rights reserved. +Copyright © 2009 CNRS +Copyright © 2009-2016 Inria. All rights reserved. +Copyright © 2009-2015 Université Bordeaux +Copyright © 2009-2015 Cisco Systems, Inc. All rights reserved. +Copyright © 2009-2012 Oracle and/or its affiliates. All rights reserved. +Copyright © 2010 IBM +Copyright © 2010 Jirka Hladky +Copyright © 2012 Aleksej Saushev, The NetBSD Foundation +Copyright © 2012 Blue Brain Project, EPFL. All rights reserved. +Copyright © 2013-2014 University of Wisconsin-La Crosse. All rights reserved. +Copyright © 2015 Research Organization for Information Science and Technology (RIST). All rights reserved. +Copyright © 2015-2016 Intel, Inc. All rights reserved. +See COPYING in top-level directory. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/3rd-party/hwloc-2.7.1/Makefile.am b/3rd-party/hwloc-2.7.1/Makefile.am new file mode 100644 index 0000000000..1996b4becd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/Makefile.am @@ -0,0 +1,103 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +# Note that the -I directory must *exactly* match what was specified +# via AC_CONFIG_MACRO_DIR in configure.ac. +ACLOCAL_AMFLAGS = -I ./config + +# +# "make distcheck" requires that tarballs are able to be able to "make +# dist", so we have to include config/distscript.sh. +# +EXTRA_DIST = \ + README VERSION COPYING AUTHORS \ + config/hwloc_get_version.sh \ + config/distscript.sh \ + config/libtool-big-sur-fixup.patch + +SUBDIRS = include hwloc + +if HWLOC_BUILD_STANDALONE +if BUILD_NETLOC +SUBDIRS += netloc +endif +SUBDIRS += utils tests contrib/systemd contrib/completion contrib/misc contrib/hwloc-ps.www +# We need doc/ if HWLOC_BUILD_DOXYGEN, or during make install if HWLOC_INSTALL_DOXYGEN. +# There's no INSTALL_SUBDIRS, so always enter doc/ and check HWLOC_BUILD/INSTALL_DOXYGEN there +SUBDIRS += doc +endif + +# Do not let automake automatically add the non-standalone dirs to the +# distribution tarball if we're building in embedded mode. +DIST_SUBDIRS = $(SUBDIRS) +if HWLOC_BUILD_STANDALONE +DIST_SUBDIRS += contrib/windows +EXTRA_DIST += contrib/windows-cmake +if !BUILD_NETLOC +DIST_SUBDIRS += netloc +endif +endif + +# Only install the pkg file if we're building in standalone mode (and not on Windows) +if HWLOC_BUILD_STANDALONE +hwlocpkgconfigdir = $(libdir)/pkgconfig +hwlocpkgconfig_DATA = hwloc.pc +if BUILD_NETLOC +# JMS Need to compare hwloc.pc and netloc.pc -- I think netloc.pc is +# missing some things. +# pkgconfig_DATA += netloc.pc Disabled until the netloc API is public +EXTRA_DIST += netloc.pc +if BUILD_NETLOCSCOTCH +hwlocpkgconfig_DATA += netlocscotch.pc +endif BUILD_NETLOCSCOTCH +endif BUILD_NETLOC +endif HWLOC_BUILD_STANDALONE + +# Only install the valgrind suppressions file if we're building in +# standalone mode +if HWLOC_BUILD_STANDALONE +dist_pkgdata_DATA = contrib/hwloc-valgrind.supp +endif + +if HWLOC_BUILD_STANDALONE +dist-hook: + sh "$(top_srcdir)/config/distscript.sh" "$(top_srcdir)" "$(distdir)" "$(HWLOC_VERSION)" +else !HWLOC_BUILD_STANDALONE +# Create directories needed by embedders' autogen (directories ignored by embedded dist) +dist-hook: + @MKDIR_P@ \ + $(distdir)/doc \ + $(distdir)/netloc \ + $(distdir)/utils \ + $(distdir)/tests \ + $(distdir)/contrib/completion \ + $(distdir)/contrib/hwloc-ps.www \ + $(distdir)/contrib/misc \ + $(distdir)/contrib/systemd \ + $(distdir)/contrib/windows +endif !HWLOC_BUILD_STANDALONE + +if HWLOC_BUILD_STANDALONE +if HWLOC_HAVE_WINDOWS +# +# Winball specific rules +# +install-data-local: + sed -e 's/$$/'$$'\015'/ < $(srcdir)/README > $(DESTDIR)$(prefix)/README.txt + sed -e 's/$$/'$$'\015'/ < $(srcdir)/NEWS > $(DESTDIR)$(prefix)/NEWS.txt + sed -e 's/$$/'$$'\015'/ < $(srcdir)/COPYING > $(DESTDIR)$(prefix)/COPYING.txt +uninstall-local: + rm -f $(DESTDIR)$(prefix)/README.txt $(DESTDIR)$(prefix)/NEWS.txt $(DESTDIR)$(prefix)/COPYING.txt +endif HWLOC_HAVE_WINDOWS +endif HWLOC_BUILD_STANDALONE + +# +# Build the documenation and top-level README file +# +if HWLOC_BUILD_STANDALONE +.PHONY: doc readme +doc readme: + $(MAKE) -C doc +endif HWLOC_BUILD_STANDALONE diff --git a/3rd-party/hwloc-2.7.1/NEWS b/3rd-party/hwloc-2.7.1/NEWS new file mode 100644 index 0000000000..75557e5f43 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/NEWS @@ -0,0 +1,1978 @@ +Copyright © 2009 CNRS +Copyright © 2009-2022 Inria. All rights reserved. +Copyright © 2009-2013 Université Bordeaux +Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. +Copyright © 2020 Hewlett Packard Enterprise. All rights reserved. + +$COPYRIGHT$ + +Additional copyrights may follow + +$HEADER$ + +=========================================================================== + +This file contains the main features as well as overviews of specific +bug fixes (and other actions) for each version of hwloc since version +0.9. + + +Version 2.7.1 +------------- +* Workaround crashes when virtual machines report incoherent x86 CPUID + information about numbers of cores and threads. + Thanks to Peter Bense for the report. +* Use setenv() instead of putenv() when trying to force enable oneAPI L0 + support, to avoid issues with applications that touch the environment, + thanks to Josh Hursey for the patch. +* Add some warnings at the end of configure when GPU libraries are + missing on the system or their path is missing in the environment. + + +Version 2.7.0 +------------- +* Backends + + Add support for NUMA nodes and caches with more than 64 PUs across + multiple processor groups on Windows 11 and Windows Server 2022. + + Group objects are not created for Windows processor groups anymore, + except if HWLOC_WINDOWS_PROCESSOR_GROUP_OBJS=1 in the environment. + + Expose "Cluster" group objects on Linux kernel 5.16+ for CPUs + that share some internal cache or bus. This can be equivalent + to the L2 Cache level on some platforms (e.g. x86) or a specific + level between L2 and L3 on others (e.g. ARM Kungpeng 920). + Thanks to Jonathan Cameron for the help. + - HWLOC_DONT_MERGE_CLUSTER_GROUPS=1 may be set in the environment + to prevent these groups from being merged with identical caches, etc. + + Improve the oneAPI LevelZero backend: + - Expose subdevices such as "ze0.1" inside root OS devices ("ze0") + when the hardware contains multiple subdevices. + - Add many new attributes to describe device type, and the + numbers of slices, subslices, execution units and threads. + - Expose the memory information as LevelZeroHBM/DDR/MemorySize infos. + + Ignore the max frequencies of cores in Linux cpukinds when the + base frequencies are available (to avoid exposing hybrid CPUs + when Intel Turbo Boost Max 3.0 gives slightly different max + frequencies to CPU cores). + - May be reverted by setting HWLOC_CPUKINDS_MAXFREQ=1 in the environment. +* Tools + + Add --grey and --palette options to switch lstopo to greyscale or + white-background-only graphics, or to tune individual colors. +* Build + + Windows CMake builds now support non-MSVC compilers, detect several + features at build time, can build/run tests, etc. + Thanks to Michael Hirsch and Alexander Neumann . + + +Version 2.6.0 +------------- +* Backends + + Expose two cpukinds for energy-efficient cores (icestorm) and + high-performance cores (firestorm) on Apple M1 on Mac OS X. + + Use sysfs CPU "capacity" to rank hybrid cores by efficiency + on Linux when available (mostly on recent ARM platforms for now). + + Improve HWLOC_MEMBIND_BIND (without the STRICT flag) on Linux kernel + >= 5.15: If more than one node is given, the kernel may now use all + of them instead of only the first one before falling back to others. + + Expose cache os_index when available on Linux, it may be needed + when using resctrl to configure cache partitioning, memory bandwidth + monitoring, etc. + + Add a "XGMIHops" distances matrix in the RSMI backend for AMD GPU + interconnected through XGMI links. + + Expose AMD GPU memory information (VRAM and GTT) in the RSMI backend. + + Add OS devices such as "bxi0" for Atos/Bull BXI HCAs on Linux. +* Tools + + lstopo has a better placement algorithm with respect to I/O + objects, see --children-order in the manpage for details. + + hwloc-annotate may now change object subtypes and cache or memory + sizes. +* Build + + Allow to specify the ROCm installation for building the RSMI backend: + - Use a custom installation path if specified with --with-rocm=

      . + - Use /opt/rocm- if specified with --with-rocm-version= + or the ROCM_VERSION environment variable. + - Try /opt/rocm if it exists. + - See "How do I enable ROCm SMI and select which version to use?" + in the FAQ for details. + + Add a CMakeLists for Windows under contrib/windows-cmake/ . +* Documentation + + Add FAQ entry "How do I create a custom heterogeneous and + asymmetric topology?" + + +Version 2.5.0 +------------- +* API + + Add hwloc/windows.h to query Windows processor groups. + + Add hwloc_get_obj_with_same_locality() to convert between objects + with same locality, for instance NUMA nodes and Packages, + or OS devices within a PCI device. + + Add hwloc_distances_transform() to modify distances structures. + - hwloc-annotate and lstopo have new distances-transform options. + + hwloc_distances_add() is replaced with _add_create() followed by + _add_values() and _add_commit(). See hwloc/distances.h for details. + + Add topology flags to mitigate binding modifications during + hwloc discovery, especially on Windows: + - HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING and _MEMBINDING + restrict discovery to PUs and NUMA nodes inside the binding. + - HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING prevents from ever + changing the binding during discovery. +* Backends + + Add a levelzero backend for oneAPI L0 devices, exposed as OS devices + of subtype "LevelZero" and name such as "ze0". + - Add hwloc/levelzero.h for interoperability between converting + between L0 API devices and hwloc cpusets or OS devices. + + Expose NEC Vector Engine cards on Linux as OS devices of subtype + "VectorEngine" and name "ve0", etc. + Thanks to Anara Kozhokanova, Tim Cramer and Erich Focht for the help. + + Add a NVLinkBandwidth distances structure between NVIDIA GPUs + (and POWER processor or NVSwitches) in the NVML backend, + and a XGMIBandwidth distances structure between AMD GPUs + in the RSMI backends. + - See "Topology Attributes: Distances, Memory Attributes and CPU Kinds" + in the documentation for details about these new distances. + + Add support for NUMA node 0 being offline in Linux, thanks to Jirka Hladky. +* Build + + Add --with-cuda-version= or look at the CUDA_VERSION + environment variable to find the appropriate CUDA pkg-config files. + Thanks to Stephen Herbein for the suggestion. + - Also add --with-cuda= to specify the CUDA installation path + manually (and its NVML and OpenCL components). + Thanks to Andrea Bocci for the suggestion. + - See "How do I enable CUDA and select which CUDA version to use?" + in the FAQ for details. +* Tools + + lstopo now has a --windows-processor-groups option on Windows. + + hwloc-ps now has a --short-name option to avoid long/truncated + command path. + + hwloc-ps now has a --single-ancestor option to return a single + (possibly too large) object where a process is bound. + + hwloc-ps --pid-cmd may now query environment variables, + including MPI-specific variables to find out process ranks. + + +Version 2.4.1 +------------- +* Fix AMD OpenCL device locality when PCI bus or device number >= 128. + Thanks to Edgar Leon for reporting the issue. + + Applications using any of the following inline functions must + be recompiled to get the fix: hwloc_opencl_get_device_pci_busid() + hwloc_opencl_get_device_cpuset(), hwloc_opencl_get_device_osdev(). +* Fix the ranking of cpukinds on non-Windows systems, + thanks to Ivan Kochin for the report. +* Fix the insertion of custom Groups after loading the topology, + thanks to Scott Hicks. +* Add support for CPU0 being offline in Linux, thanks to Garrett Clay. +* Fix missing x86 Package and Core objects FreeBSD/NetBSD. + Thanks to Thibault Payet and Yuri Victorovich for the report. +* Fix the import of very large distances with heterogeneous object types. +* Fix a memory leak in the Linux backend, + thanks to Perceval Anichini. + + +Version 2.4.0 +------------- +* API + + Add hwloc/cpukinds.h for reporting information about hybrid CPUs. + - Use Linux cpufreq frequencies to rank cores by efficiency. + - Use x86 CPUID hybrid leaf and future Linux kernels sysfs CPU type + files to identify Intel Atom and Core cores. + - Use the Windows native EfficiencyClass to separate kinds. +* Backends + + Properly handle Linux kernel 5.10+ exposing ACPI HMAT information + with knowledge of Generic Initiators. +* Tools + + lstopo has new --cpukinds and --no-cpukinds options for showing + CPU kinds or not in textual and graphical modes respectively. + + hwloc-calc has a new --cpukind option for filtering PUs by kind. + + hwloc-annotate has a new cpukind command for modifying CPU kinds. +* Misc + + Fix hwloc_bitmap_nr_ulongs(), thanks to Norbert Eicker. + + Add a documentation section about + "Topology Attributes: Distances, Memory Attributes and CPU Kinds". + + Silence some spurious warnings in the OpenCL backend and when showing + process binding with lstopo --ps. + + +Version 2.3.0 +------------- +* API + + Add hwloc/memattrs.h for exposing latency/bandwidth information + between initiators (CPU sets for now) and target NUMA nodes, + typically on heterogeneous platforms. + - When available, bandwidths and latencies are read from the ACPI HMAT + table exposed by Linux kernel 5.2+. + - Attributes may also be customized to expose user-defined performance + information. + + Add hwloc_get_local_numanode_objs() for listing NUMA nodes that are + local to some locality. + + The new topology flag HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT causes + support arrays to be loaded from XML exported with hwloc 2.3+. + - hwloc_topology_get_support() now returns an additional "misc" + array with feature "imported_support" set when support was imported. + + Add hwloc_topology_refresh() to refresh internal caches after modifying + the topology and before consulting the topology in a multithread context. +* Backends + + Add a ROCm SMI backend and a hwloc/rsmi.h helper file for getting + the locality of AMD GPUs, now exposed as "rsmi" OS devices. + Thanks to Mike Li. + + Remove POWER device-tree-based topology on Linux, + (it was disabled by default since 2.1). +* Tools + + Command-line options for specifying flags now understand comma-separated + lists of flag names (substrings). + + hwloc-info and hwloc-calc have new --local-memory --local-memory-flags + and --best-memattr options for reporting local memory nodes and filtering + by memory attributes. + + hwloc-bind has a new --best-memattr option for filtering by memory attributes + among the memory binding set. + + Tools that have a --restrict option may now receive a nodeset or + some custom flags for restricting the topology. + + lstopo now has a --thickness option for changing line thickness in the + graphical output. + + Fix lstopo drawing when autoresizing on Windows 10. + + Pressing the F5 key in lstopo X11 and Windows graphical/interactive outputs + now refreshes the display according to the current topology and binding. + + Add a tikz lstopo graphical backend to generate picture easily included into + LaTeX documents. Thanks to Clement Foyer. +* Misc + + The default installation path of the Bash completion file has changed to + ${datadir}/bash-completion/completions/hwloc. Thanks to Tomasz Kłoczko. + + +Version 2.2.0 +------------- +* API + + Add hwloc_bitmap_singlify_by_core() to remove SMT from a given cpuset, + thanks to Florian Reynier for the suggestion. + + Add --enable-32bits-pci-domain to stop ignoring PCI devices with domain + >16bits (e.g. 10000:02:03.4). Enabling this option breaks the library ABI. + Thanks to Dylan Simon for the help. +* Backends + + Add support for Linux cgroups v2. + + Add NUMA support for FreeBSD. + + Add get_last_cpu_location support for FreeBSD. + + Remove support for Intel Xeon Phi (MIC, Knights Corner) co-processors. +* Tools + + Add --uid to filter the hwloc-ps output by uid on Linux. + + Add a GRAPHICAL OUTPUT section in the manpage of lstopo. +* Misc + + Use the native dlopen instead of libltdl, + unless --disable-plugin-dlopen is passed at configure time. + + +Version 2.1.0 +------------- +* API + + Add a new "Die" object (HWLOC_OBJ_DIE) for upcoming x86 processors + with multiple dies per package, in the x86 and Linux backends. + + Add the new HWLOC_OBJ_MEMCACHE object type for memory-side caches. + - They are filtered-out by default, except in command-line tools. + - They are only available on very recent platforms running Linux 5.2+ + and uptodate ACPI tables. + - The KNL MCDRAM in cache mode is still exposed as a L3 unless + HWLOC_KNL_MSCACHE_L3=0 in the environment. + + Add HWLOC_RESTRICT_FLAG_BYNODESET and _REMOVE_MEMLESS for restricting + topologies based on some memory nodes. + + Add hwloc_topology_set_components() for blacklisting some components + from being enabled in a topology. + + Add hwloc_bitmap_nr_ulongs() and hwloc_bitmap_from/to_ulongs(), + thanks to Junchao Zhang for the suggestion. + + Improve the API for dealing with disallowed resources + - HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM is replaced with FLAG_INCLUDE_DISALLOWED + and --whole-system command-line options with --disallowed. + . Former names are still accepted for backward compatibility. + - Add hwloc_topology_allow() for changing allowed sets after load(). + - Add the HWLOC_ALLOW=all environment variable to totally ignore + administrative restrictions such as Linux Cgroups. + - Add disallowed_pu and disallowed_numa bits to the discovery support + structure. + + Group objects have a new "dont_merge" attribute to prevent them from + being automatically merged with identical parent or children. + + Add more distances-related features: + - Add hwloc_distances_get_name() to retrieve a string describing + what a distances structure contain. + - Add hwloc_distances_get_by_name() to retrieve distances structures + based on their name. + - Add hwloc_distances_release_remove() + - Distances may now cover objects of different types with new kind + HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES. +* Backends + + Add support for Linux 5.3 new sysfs cpu topology files with Die information. + + Add support for Intel v2 Extended Topology Enumeration in the x86 backend. + + Improve memory locality on Linux by using HMAT initiators (exposed + since Linux 5.2+), and NUMA distances for CPU-less NUMA nodes. + + The x86 backend now properly handles offline CPUs. + + Detect the locality of NVIDIA GPU OpenCL devices. + + Ignore NUMA nodes that correspond to NVIDIA GPU by default. + - They may be unignored if HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES=1 in the environment. + - Fix their CPU locality and add info attributes to identify them. + Thanks to Max Katz and Edgar Leon for the help. + + Add support for IBM S/390 drawers. + + Rework the heuristics for discovering KNL Cluster and Memory modes + to stop assuming all CPUs are online (required for mOS support). + Thanks to Sharath K Bhat for testing patches. + + Ignore NUMA node information from AMD topoext in the x86 backend, + unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment. + + Expose Linux DAX devices as hwloc Block OS devices. + + Remove support for /proc/cpuinfo-only topology discovery in Linux + kernel prior to 2.6.16. + + Disable POWER device-tree-based topology on Linux by default. + - It may be reenabled by setting HWLOC_USE_DT=1 in the environment. + + Discovery components are now divided in phases that may be individually + blacklisted. + - The linuxio component has been merged back into the linux component. +* Tools + + lstopo + - lstopo factorizes objects by default in the graphical output when + there are more than 4 identical children. + . New options --no-factorize and --factorize may be used to configure this. + . Hit the 'f' key to disable factorizing in interactive outputs. + - Both logical and OS/physical indexes are now displayed by default + for PU and NUMA nodes. + - The X11 and Windows interactive outputs support many keyboard + shortcuts to dynamically customize the attributes, legend, etc. + - Add --linespacing and change default margins and linespacing. + - Add --allow for changing allowed sets. + - Add a native SVG backend. Its graphical output may be slightly less + pretty than Cairo (still used by default if available) but the SVG + code provides attributes to manipulate objects from HTML/JS. + See dynamic_SVG_example.html for an example. + + Add --nodeset options to hwloc-calc for converting between cpusets and + nodesets. + + Add --no-smt to lstopo, hwloc-bind and hwloc-calc to ignore multiple + PU in SMT cores. + + hwloc-annotate may annotate multiple locations at once. + + Add a HTML/JS version of hwloc-ps. See contrib/hwloc-ps.www/README. + + Add bash completions. +* Misc + + Add several FAQ entries in "Compatibility between hwloc versions" + about API version, ABI, XML, Synthetic strings, and shmem topologies. + + +Version 2.0.4 (also included in 1.11.13 when appropriate) +------------- +* Add support for Linux 5.3 new sysfs cpu topology files with Die information. +* Add support for Intel v2 Extended Topology Enumeration in the x86 backend. +* Tiles, Modules and Dies are exposed as Groups for now. + + HWLOC_DONT_MERGE_DIE_GROUPS=1 may be set in the environment to prevent + Die groups from being automatically merged with identical parent or children. +* Ignore NUMA node information from AMD topoext in the x86 backend, + unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment. +* Group objects have a new "dont_merge" attribute to prevent them from + being automatically merged with identical parent or children. + + +Version 2.0.3 (also included in 1.11.12 when appropriate) +------------- +* Fix build on Cygwin, thanks to Marco Atzeri for the patches. +* Fix a corner case of hwloc_topology_restrict() where children would + become out-of-order. +* Fix the return length of export_xmlbuffer() functions to always + include the ending \0. +* Fix lstopo --children-order argument parsing. + + +Version 2.0.2 (also included in 1.11.11 when appropriate) +------------- +* Add support for Hygon Dhyana processors in the x86 backend, + thanks to Pu Wen for the patch. +* Fix symbol renaming to also rename internal components, + thanks to Evan Ramos for the patch. +* Fix build on HP-UX, thanks to Richard Lloyd for reporting the issues. +* Detect PCI link speed without being root on Linux >= 4.13. +* Add HWLOC_VERSION* macros to the public headers, + thanks to Gilles Gouaillardet for the suggestion. + + +Version 2.0.1 (also included in 1.11.10 when relevant) +------------- +* Bump the library soname to 15:0:0 to avoid conflicts with hwloc 1.11.x + releases. The hwloc 2.0.0 soname was buggy (12:0:0), applications will + have to be recompiled. +* Serialize pciaccess discovery to fix concurrent topology loads in + multiple threads. +* Fix hwloc-dump-hwdata to only process SMBIOS information that correspond + to the KNL and KNM configuration. +* Add a heuristic for guessing KNL/KNM memory and cluster modes when + hwloc-dump-hwdata could not run as root earlier. +* Add --no-text lstopo option to remove text from some boxes in the + graphical output. Mostly useful for removing Group labels. +* Some minor fixes to memory binding. + + +Version 2.0.0 +------------- +*** The ABI of the library has changed. *** + For instance some hwloc_obj fields were reordered, added or removed, see below. + + HWLOC_API_VERSION and hwloc_get_api_version() now give 0x00020000. + + See "How do I handle ABI breaks and API upgrades ?" in the FAQ + and "Upgrading to hwloc 2.0 API" in the documentation. +* Major API changes + + Memory, I/O and Misc objects are now stored in dedicated children lists, + not in the usual children list that is now only used for CPU-side objects. + - hwloc_get_next_child() may still be used to iterate over these 4 lists + of children at once. + - hwloc_obj_type_is_normal(), _memory() and _io() may be used to check + the kind of a given object type. + + Topologies always have at least one NUMA object. On non-NUMA machines, + a single NUMA object is added to describe the entire machine memory. + The NUMA level cannot be ignored anymore. + + The NUMA level is special since NUMA nodes are not in the main hierarchy + of objects anymore. Its depth is a fake negative depth that should not be + compared with normal levels. + - If all memory objects are attached to parents at the same depth, + it may be retrieved with hwloc_get_memory_parents_depth(). + + The HWLOC_OBJ_CACHE type is replaced with 8 types HWLOC_OBJ_L[1-5]CACHE + and HWLOC_OBJ_L[1-3]ICACHE that remove the need to disambiguate levels + when looking for caches with _by_type() functions. + - New hwloc_obj_type_is_{,d,i}cache() functions may be used to check whether + a given type is a cache. + + Reworked ignoring/filtering API + - Replace hwloc_topology_ignore*() functions with hwloc_topology_set_type_filter() + and hwloc_topology_set_all_types_filter(). + . Contrary to hwloc_topology_ignore_{type,all}_keep_structure() which + removed individual objects, HWLOC_TYPE_FILTER_KEEP_STRUCTURE only removes + entire levels (so that topology do not become too asymmetric). + - Remove HWLOC_TOPOLOGY_FLAG_ICACHES in favor of hwloc_topology_set_icache_types_filter() + with HWLOC_TYPE_FILTER_KEEP_ALL. + - Remove HWLOC_TOPOLOGY_FLAG_IO_DEVICES, _IO_BRIDGES and _WHOLE_IO in favor of + hwloc_topology_set_io_types_filter() with HWLOC_TYPE_FILTER_KEEP_ALL or + HWLOC_TYPE_FILTER_KEEP_IMPORTANT. + + The distance API has been completely reworked. It is now described + in hwloc/distances.h. + + Return values + - Most functions in hwloc/bitmap.h now return an int that may be negative + in case of failure to realloc/extend the internal storage of a bitmap. + - hwloc_obj_add_info() also returns an int in case allocations fail. +* Minor API changes + + Object attributes + - obj->memory is removed. + . local_memory and page_types attributes are now in obj->attr->numanode + . total_memory moves obj->total_memory. + - Objects do not have allowed_cpuset and allowed_nodeset anymore. + They are only available for the entire topology using + hwloc_topology_get_allowed_cpuset() and hwloc_topology_get_allowed_nodeset(). + - Objects now have a "subtype" field that supersedes former "Type" and + "CoProcType" info attributes. + + Object and level depths are now signed ints. + + Object string printing and parsing + - hwloc_type_sscanf() deprecates the old hwloc_obj_type_sscanf(). + - hwloc_type_sscanf_as_depth() is added to convert a type name into + a level depth. + - hwloc_obj_cpuset_snprintf() is deprecated in favor of hwloc_bitmap_snprintf(). + + Misc objects + - Replace hwloc_topology_insert_misc_object_by_cpuset() with + hwloc_topology_insert_group_object() to precisely specify the location + of an additional hierarchy level in the topology. + - Misc objects have their own level and depth to iterate over all of them. + - Misc objects may now only be inserted as a leaf object with + hwloc_topology_insert_misc_object() which deprecates + hwloc_topology_insert_misc_object_by_parent(). + + hwloc_topology_restrict() doesn't remove objects that contain memory + by default anymore. + - The list of existing restrict flags was modified. + + The discovery support array now contains some NUMA specific bits. + + XML export functions take an additional flags argument, + for instance for exporting XMLs that are compatible with hwloc 1.x. + + Functions diff_load_xml*(), diff_export_xml*() and diff_destroy() in + hwloc/diff.h do not need a topology as first parameter anymore. + + hwloc_parse_cpumap_file () superseded by hwloc_linux_read_path_as_cpumask() + in hwloc/linux.h. + + HWLOC_MEMBIND_DEFAULT and HWLOC_MEMBIND_FIRSTTOUCH were clarified. +* New APIs and Features + + Add hwloc/shmem.h for sharing topologies between processes running on + the same machine (for reducing the memory footprint). + + Add the experimental netloc subproject. It is disabled by default + and can be enabled with --enable-netloc. + It currently brings command-line tools to gather and visualize the + topology of InfiniBand fabrics, and an API to convert such topologies + into Scotch architectures for process mapping. + See the documentation for details. +* Removed APIs and features + + Remove the online_cpuset from struct hwloc_obj. Offline PUs get unknown + topologies on Linux nowadays, and wrong topology on Solaris. Other OS + do not support them. And one cannot do much about them anyway. Just keep + them in complete_cpuset. + + Remove the now-unused "System" object type HWLOC_OBJ_SYSTEM, + defined to MACHINE for backward compatibility. + + The almost-unused "os_level" attribute has been removed from the + hwloc_obj structure. + + Remove the custom interface for assembling the topologies of different + nodes as well as the hwloc-assembler tools. + + hwloc_topology_set_fsroot() is removed, the environment variable + HWLOC_FSROOT may be used for the same remote testing/debugging purpose. + + Remove the deprecated hwloc_obj_snprintf(), hwloc_obj_type_of_string(), + hwloc_distribute[v](). + * Remove Myrinet Express interoperability (hwloc/myriexpress.h). + + Remove Kerrighed support from the Linux backend. + + Remove Tru64 (OSF/1) support. + - Remove HWLOC_MEMBIND_REPLICATE which wasn't available anywhere else. +* Backend improvements + + Linux + - OS devices do not have to be attached through PCI anymore, + for instance enabling the discovery of NVDIMM block devices. + - Remove the dependency on libnuma. + - Add a SectorSize attribute to block OS devices. + + Mac OS X + - Fix detection of cores and hyperthreads. + - Add CPUVendor, Model, ... attributes. + + Windows + - Add get_area_memlocation(). +* Tools + + lstopo and hwloc-info have a new --filter option matching the new filtering API. + + lstopo can be given --children-order=plain to force a basic displaying + of memory and normal children together below their parent. + + hwloc-distances was removed and replaced with lstopo --distances. +* Misc + + Exports + - Exporting to synthetic now ignores I/O and Misc objects. + + PCI discovery + - Separate OS device discovery from PCI discovery. Only the latter is disabled + with --disable-pci at configure time. Both may be disabled with --disable-io. + - The `linuxpci' component is now renamed into `linuxio'. + - The old `libpci' component name from hwloc 1.6 is not supported anymore, + only the `pci' name from hwloc 1.7 is now recognized. + - The HWLOC_PCI___LOCALCPUS environment variables are superseded + with a single HWLOC_PCI_LOCALITY where bus ranges may be specified. + - Do not set PCI devices and bridges name automatically. Vendor and device + names are already in info attributes. + + Components and discovery + - Add HWLOC_SYNTHETIC environment variable to enforce a synthetic topology + as if hwloc_topology_set_synthetic() had been called. + - HWLOC_COMPONENTS doesn't support xml or synthetic component attributes + anymore, they should be passed in HWLOC_XMLFILE or HWLOC_SYNTHETIC instead. + - HWLOC_COMPONENTS takes precedence over other environment variables + for selecting components. + + hwloc now requires a C99 compliant compiler. + + +Version 1.11.13 (also included in 2.0.4) +--------------- +* Add support for Linux 5.3 new sysfs cpu topology files with Die information. +* Add support for Intel v2 Extended Topology Enumeration in the x86 backend. +* Tiles, Modules and Dies are exposed as Groups for now. + + HWLOC_DONT_MERGE_DIE_GROUPS=1 may be set in the environment to prevent + Die groups from being automatically merged with identical parent or children. +* Ignore NUMA node information from AMD topoext in the x86 backend, + unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment. +* Group objects have a new "dont_merge" attribute to prevent them from + being automatically merged with identical parent or children. + + +Version 1.11.12 (also included in 2.0.3) +--------------- +* Fix a corner case of hwloc_topology_restrict() where children would + become out-of-order. +* Fix the return length of export_xmlbuffer() functions to always + include the ending \0. + + +Version 1.11.11 (also included in 2.0.2) +--------------- +* Add support for Hygon Dhyana processors in the x86 backend, + thanks to Pu Wen for the patch. +* Fix symbol renaming to also rename internal components, + thanks to Evan Ramos for the patch. +* Fix build on HP-UX, thanks to Richard Lloyd for reporting the issues. +* Detect PCI link speed without being root on Linux >= 4.13. + + +Version 1.11.10 (also included in 2.0.1) +--------------- +* Fix detection of cores and hyperthreads on Mac OS X. +* Serialize pciaccess discovery to fix concurrent topology loads in + multiple threads. +* Fix first touch area memory binding on Linux when thread memory + binding is different. +* Some minor fixes to memory binding. +* Fix hwloc-dump-hwdata to only process SMBIOS information that correspond + to the KNL and KNM configuration. +* Add a heuristic for guessing KNL/KNM memory and cluster modes when + hwloc-dump-hwdata could not run as root earlier. +* Fix discovery of NVMe OS devices on Linux >= 4.0. +* Add get_area_memlocation() on Windows. +* Add CPUVendor, Model, ... attributes on Mac OS X. + + +Version 1.11.9 +-------------- +* Add support for Zhaoxin ZX-C and ZX-D processors in the x86 backend, + thanks to Jeff Zhao for the patch. +* Fix AMD Epyc 24-core L3 cache locality in the x86 backend. +* Don't crash in the x86 backend when the CPUID vendor string is unknown. +* Fix the missing pu discovery support bit on some OS. +* Fix the management of the lstopoStyle info attribute for custom colors. +* Add verbose warnings when failing to load hwloc v2.0+ XMLs. + + +Version 1.11.8 +-------------- +* Multiple Solaris improvements, thanks to Maureen Chew for the help: + + Detect caches on Sparc. + + Properly detect allowed/disallowed PUs and NUMA nodes with processor sets. + + Add hwloc_get_last_cpu_location() support for the current thread. +* Add support for CUDA compute capability 7.0 and fix support for 6.[12]. +* Tools improvements + + Fix search for objects by physical index in command-line tools. + + Add missing "cpubind:get_thisthread_last_cpu_location" in the output + of hwloc-info --support. + + Add --pid and --name to specify target processes in hwloc-ps. + + Display thread names in lstopo and hwloc-ps on Linux. +* Doc improvements + + Add a FAQ entry about building on Windows. + + Install missing sub-manpage for hwloc_obj_add_info() and + hwloc_obj_get_info_by_name(). + + +Version 1.11.7 +-------------- +* Fix hwloc-bind --membind for CPU-less NUMA nodes (again). + Thanks to Gilles Gouaillardet for reporting the issue. +* Fix a memory leak on IBM S/390 platforms running Linux. +* Fix a memory leak when forcing the x86 backend first on amd64/topoext + platforms running Linux. +* Command-line tools now support "hbm" instead "numanode" for filtering + only high-bandwidth memory nodes when selecting locations. + + hwloc-bind also support --hbm and --no-hbm for filtering only or + no HBM nodes. + Thanks to Nicolas Denoyelle for the suggestion. +* Add --children and --descendants to hwloc-info for listing object + children or object descendants of a specific type. +* Add --no-index, --index, --no-attrs, --attrs to disable/enable display + of index numbers or attributes in the graphical lstopo output. +* Try to gather hwloc-dump-hwdata output from all possible locations + in hwloc-gather-topology. +* Updates to the documentation of locations in hwloc(7) and + command-line tools manpages. + + +Version 1.11.6 +-------------- +* Make the Linux discovery about twice faster, especially on the CPU side, + by trying to avoid sysfs file accesses as much as possible. +* Add support for AMD Family 17h processors (Zen) SMT cores in the Linux + and x86 backends. +* Add the HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES flag (and the + HWLOC_THISSYSTEM_ALLOWED_RESOURCES environment variable) for reading the + set of allowed resources from the local operating system even if the + topology was loaded from XML or synthetic. +* Fix hwloc_bitmap_set/clr_range() for infinite ranges that do not + overlap currently defined ranges in the bitmap. +* Don't reset the lstopo zoom scale when moving the X11 window. +* lstopo now has --flags for manually setting topology flags. +* hwloc_get_depth_type() returns HWLOC_TYPE_DEPTH_UNKNOWN for Misc objects. + + +Version 1.11.5 +-------------- +* Add support for Knights Mill Xeon Phi, thanks to Piotr Luc for the patch. +* Reenable distance gathering on Solaris, disabled by mistake since v1.0. + Thanks to TU Wien for the help. +* Fix hwloc_get_*obj*_inside_cpuset() functions to ignore objects with + empty CPU sets, for instance, CPU-less NUMA nodes such as KNL MCDRAM. + Thanks to Nicolas Denoyelle for the report. +* Fix XML import of multiple distance matrices. +* Add a FAQ entry about "hwloc is only a structural model, it ignores + performance models, memory bandwidth, etc.?" + + +Version 1.11.4 +-------------- +* Add MemoryMode and ClusterMode attributes in the Machine object on KNL. + Add doc/examples/get-knl-modes.c for an example of retrieving them. + Thanks to Grzegorz Andrejczuk. +* Fix Linux build with -m32 with respect to libudev. + Thanks to Paul Hargrove for reporting the issue. +* Fix build with Visual Studio 2015, thanks to Eloi Gaudry for reporting + the issue and providing the patch. +* Don't forget to display OS device children in the graphical lstopo. +* Fix a memory leak on Solaris, thanks to Bryon Gloden for the patch. +* Properly handle realloc() failures, thanks to Bryon Gloden for reporting + the issue. +* Fix lstopo crash in ascii/fig/windows outputs when some objects have a + lstopoStyle info attribute. + + +Version 1.11.3 +-------------- +* Bug fixes + + Fix a memory leak on Linux S/390 hosts with books. + + Fix /proc/mounts parsing on Linux by using mntent.h. + Thanks to Nathan Hjelm for reporting the issue. + + Fix a x86 infinite loop on VMware due to the x2APIC feature being + advertised without actually being fully supported. + Thanks to Jianjun Wen for reporting the problem and testing the patch. + + Fix the return value of hwloc_alloc() on mmap() failure. + Thanks to Hugo Brunie for reporting the issue. + + Fix the return value of command-line tools in some error cases. + + Do not break individual thread bindings during x86 backend discovery in a + multithreaded process. Thanks to Farouk Mansouri for the report. + + Fix hwloc-bind --membind for CPU-less NUMA nodes. + + Fix some corner cases in the XML export/import of application userdata. +* API Improvements + + Add HWLOC_MEMBIND_BYNODESET flag so that membind() functions accept + either cpusets or nodesets. + + Add hwloc_get_area_memlocation() to check where pages are actually + allocated. Only implemented on Linux for now. + - There's no _nodeset() variant, but the new flag HWLOC_MEMBIND_BYNODESET + is supported. + + Make hwloc_obj_type_sscanf() parse back everything that may be outputted + by hwloc_obj_type_snprintf(). +* Detection Improvements + + Allow the x86 backend to add missing cache levels, so that it completes + what the Solaris backend lacks. + Thanks to Ryan Zezeski for reporting the issue. + + Do not filter-out FibreChannel PCI adapters by default anymore. + Thanks to Matt Muggeridge for the report. + + Add support for CUDA compute capability 6.x. +* Tools + + Add --support to hwloc-info to list supported features, just like with + hwloc_topology_get_support(). + - Also add --objects and --topology to explicitly switch between the + default modes. + + Add --tid to let hwloc-bind operate on individual threads on Linux. + + Add --nodeset to let hwloc-bind report memory binding as NUMA node sets. + + hwloc-annotate and lstopo don't drop application userdata from XMLs anymore. + - Add --cu to hwloc-annotate to drop these application userdata. + + Make the hwloc-dump-hwdata dump directory configurable through configure + options such as --runstatedir or --localstatedir. +* Misc Improvements + + Add systemd service template contrib/systemd/hwloc-dump-hwdata.service + for launching hwloc-dump-hwdata at boot on Linux. + Thanks to Grzegorz Andrejczuk. + + Add HWLOC_PLUGINS_BLACKLIST environment variable to prevent some plugins + from being loaded. Thanks to Alexandre Denis for the suggestion. + + Small improvements for various Windows build systems, + thanks to Jonathan L Peyton and Marco Atzeri. + + +Version 1.11.2 +-------------- +* Improve support for Intel Knights Landing Xeon Phi on Linux: + + Group local NUMA nodes of normal memory (DDR) and high-bandwidth memory + (MCDRAM) together through "Cluster" groups so that the local MCDRAM is + easy to find. + - See "How do I find the local MCDRAM NUMA node on Intel Knights + Landing Xeon Phi?" in the documentation. + - For uniformity across all KNL configurations, always have a NUMA node + object even if the host is UMA. + + Fix the detection of the memory-side cache: + - Add the hwloc-dump-hwdata superuser utility to dump SMBIOS information + into /var/run/hwloc/ as root during boot, and load this dumped + information from the hwloc library at runtime. + - See "Why do I need hwloc-dump-hwdata for caches on Intel Knights + Landing Xeon Phi?" in the documentation. + Thanks to Grzegorz Andrejczuk for the patches and for the help. +* The x86 and linux backends may now be combined for discovering CPUs + through x86 CPUID and memory from the Linux kernel. + This is useful for working around buggy CPU information reported by Linux + (for instance the AMD Bulldozer/Piledriver bug below). + Combination is enabled by passing HWLOC_COMPONENTS=x86 in the environment. +* Fix L3 cache sharing on AMD Opteron 63xx (Piledriver) and 62xx (Bulldozer) + in the x86 backend. Thanks to many users who helped. +* Fix the overzealous L3 cache sharing fix added to the x86 backend in 1.11.1 + for AMD Opteron 61xx (Magny-Cours) processors. +* The x86 backend may now add the info attribute Inclusive=0 or 1 to caches + it discovers, or to caches discovered by other backends earlier. + Thanks to Guillaume Beauchamp for the patch. +* Fix the management on alloc_membind() allocation failures on AIX, HP-UX + and OSF/Tru64. +* Fix spurious failures to load with ENOMEM on AIX in case of Misc objects + below PUs. +* lstopo improvements in X11 and Windows graphical mode: + + Add + - f 1 shortcuts to manually zoom-in, zoom-out, reset the scale, + or fit the entire window. + + Display all keyboard shortcuts in the console. +* Debug messages may be disabled at runtime by passing HWLOC_DEBUG_VERBOSE=0 + in the environment when --enable-debug was passed to configure. +* Add a FAQ entry "What are these Group objects in my topology?". + + +Version 1.11.1 +-------------- +* Detection fixes + + Hardwire the topology of Fujitsu K-computer, FX10, FX100 servers to + workaround buggy Linux kernels. + Thanks to Takahiro Kawashima and Gilles Gouaillardet. + + Fix L3 cache information on AMD Opteron 61xx Magny-Cours processors + in the x86 backend. Thanks to Guillaume Beauchamp for the patch. + + Detect block devices directly attached to PCI without a controller, + for instance NVMe disks. Thanks to Barry M. Tannenbaum. + + Add the PCISlot attribute to all PCI functions instead of only the + first one. +* Miscellaneous internal fixes + + Ignore PCI bridges that could fail assertions by reporting buggy + secondary-subordinate bus numbers + Thanks to George Bosilca for reporting the issue. + + Fix an overzealous assertion when inserting an intermediate Group object + while Groups are totally ignored. + + Fix a memory leak on Linux on AMD processors with dual-core compute units. + Thanks to Bob Benner. + + Fix a memory leak on failure to load a xml diff file. + + Fix some segfaults when inputting an invalid synthetic description. + + Fix a segfault when plugins fail to find core symbols. + Thanks to Guy Streeter. +* Many fixes and improvements in the Windows backend: + + Fix the discovery of more than 32 processors and multiple processor + groups. Thanks to Barry M. Tannenbaum for the help. + + Add thread binding set support in case of multiple process groups. + + Add thread binding get support. + + Add get_last_cpu_location() support for the current thread. + + Disable the unsupported process binding in case of multiple processor + groups. + + Fix/update the Visual Studio support under contrib/windows. + Thanks to Eloi Gaudry for the help. +* Tools fixes + + Fix a segfault when displaying logical indexes in the graphical lstopo. + Thanks to Guillaume Mercier for reporting the issue. + + Fix lstopo linking with X11 libraries, for instance on Mac OS X. + Thanks to Scott Atchley and Pierre Ramet for reporting the issue. + + hwloc-annotate, hwloc-diff and hwloc-patch do not drop unavailable + resources from the output anymore and those may be annotated as well. + + Command-line tools may now import XML from the standard input with -i -.xml + + Add missing documentation for the hwloc-info --no-icaches option. + + +Version 1.11.0 +-------------- +* API + + Socket objects are renamed into Package to align with the terminology + used by processor vendors. The old HWLOC_OBJ_SOCKET type and "Socket" + name are still supported for backward compatibility. + + HWLOC_OBJ_NODE is replaced with HWLOC_OBJ_NUMANODE for clarification. + HWLOC_OBJ_NODE is still supported for backward compatibility. + "Node" and "NUMANode" strings are supported as in earlier releases. +* Detection improvements + + Add support for Intel Knights Landing Xeon Phi. + Thanks to Grzegorz Andrejczuk and Lukasz Anaczkowski. + + Add Vendor, Model, Revision, SerialNumber, Type and LinuxDeviceID + info attributes to Block OS devices on Linux. Thanks to Vineet Pedaballe + for the help. + - Add --disable-libudev to avoid dependency on the libudev library. + + Add "MemoryModule" Misc objects with information about DIMMs, on Linux + when privileged and when I/O is enabled. + Thanks to Vineet Pedaballe for the help. + + Add a PCISlot attribute to PCI devices on Linux when supported to + identify the physical PCI slot where the board is plugged. + + Add CPUStepping info attribute on x86 processors, + thanks to Thomas Röhl for the suggestion. + + Ignore the device-tree on non-Power architectures to avoid buggy + detection on ARM. Thanks to Orion Poplawski for reporting the issue. + + Work-around buggy Xeon E5v3 BIOS reporting invalid PCI-NUMA affinity + for the PCI links on the second processor. + + Add support for CUDA compute capability 5.x, thanks Benjamin Worpitz. + + Many fixes to the x86 backend + - Add L1i and fix L2/L3 type on old AMD processors without topoext support. + - Fix Intel CPU family and model numbers when basic family isn't 6 or 15. + - Fix package IDs on recent AMD processors. + - Fix misc issues due to incomplete APIC IDs on x2APIC processors. + - Avoid buggy discovery on old SGI Altix UVs with non-unique APIC IDs. + + Gather total machine memory on NetBSD. +* Tools + + lstopo + - Collapse identical PCI devices unless --no-collapse is given. + This avoids gigantic outputs when a PCI device contains dozens of + identical virtual functions. + - The ASCII art output is now called "ascii", for instance in + "lstopo -.ascii". + The former "txt" extension is retained for backward compatibility. + - Automatically scales graphical box width to the inner text in Cairo, + ASCII and Windows outputs. + - Add --rect to lstopo to force rectangular layout even for NUMA nodes. + - Add --restrict-flags to configure the behavior of --restrict. + - Objects may have a "Type" info attribute to specify a better type name + and display it in lstopo. + - Really export all verbose information to the given output file. + + hwloc-annotate + - May now operate on all types of objects, including I/O. + - May now insert Misc objects in the topology. + - Do not drop instruction caches and I/O devices from the output anymore. + + Fix lstopo path in hwloc-gather-topology after install. +* Misc + + Fix hwloc/cudart.h for machines with multiple PCI domains, + thanks to Imre Kerr for reporting the problem. + + Fix PCI Bridge-specific depth attribute. + + Fix hwloc_bitmap_intersect() for two infinite bitmaps. + + Fix some corner cases in the building of levels on large NUMA machines + with non-uniform NUMA groups and I/Os. + + Improve the performance of object insertion by cpuset for large + topologies. + + Prefix verbose XML import errors with the source name. + + Improve pkg-config checks and error messages. + + Fix excluding after a component with an argument in the HWLOC_COMPONENTS + environment variable. +* Documentation + + Fix the recommended way in documentation and examples to allocate memory + on some node, it should use HWLOC_MEMBIND_BIND. + Thanks to Nicolas Bouzat for reporting the issue. + + Add a "Miscellaneous objects" section in the documentation. + + Add a FAQ entry "What happens to my topology if I disable symmetric + multithreading, hyper-threading, etc. ?" to the documentation. + + +Version 1.10.1 +-------------- +* Actually remove disallowed NUMA nodes from nodesets when the whole-system + flag isn't enabled. +* Fix the gathering of PCI domains. Thanks to James Custer for reporting + the issue and providing a patch. +* Fix the merging of identical parent and child in presence of Misc objects. + Thanks to Dave Love for reporting the issue. +* Fix some misordering of children when merging with ignore_keep_structure() + in partially allowed topologies. +* Fix an overzealous assertion in the debug code when running on a single-PU + host with I/O. Thanks to Thomas Van Doren for reporting the issue. +* Don't forget to setup NUMA node object nodesets in x86 backend (for BSDs) + and OSF/Tru64 backend. +* Fix cpuid-x86 build error with gcc -O3 on x86-32. Thanks to Thomas Van Doren + for reporting the issue. +* Fix support for future very large caches in the x86 backend. +* Fix vendor/device names for SR-IOV PCI devices on Linux. +* Fix an unlikely crash in case of buggy hierarchical distance matrix. +* Fix PU os_index on some AIX releases. Thanks to Hendryk Bockelmann and + Erik Schnetter for helping debugging. +* Fix hwloc_bitmap_isincluded() in case of infinite sets. +* Change hwloc-ls.desktop into a lstopo.desktop and only install it if + lstopo is built with Cairo/X11 support. It cannot work with a non-graphical + lstopo or hwloc-ls. +* Add support for the renaming of Socket into Package in future releases. +* Add support for the replacement of HWLOC_OBJ_NODE with HWLOC_OBJ_NUMANODE + in future releases. +* Clarify the documentation of distance matrices in hwloc.h and in the manpage + of the hwloc-distances. Thanks to Dave Love for the suggestion. +* Improve some error messages by displaying more information about the + hwloc library in use. +* Document how to deal with the ABI break when upgrading to the upcoming 2.0 + See "How do I handle ABI breaks and API upgrades ?" in the FAQ. + + +Version 1.10.0 +-------------- +* API + + Add hwloc_topology_export_synthetic() to export a topology to a + synthetic string without using lstopo. See the Synthetic topologies + section in the documentation. + + Add hwloc_topology_set/get_userdata() to let the application save + a private pointer in the topology whenever it needs a way to find + its own object corresponding to a topology. + + Add hwloc_get_numanode_obj_by_os_index() and document that this function + as well as hwloc_get_pu_obj_by_os_index() are good at converting + nodesets and cpusets into objects. + + hwloc_distrib() does not ignore any objects anymore when there are + too many of them. They get merged with others instead. + Thanks to Tim Creech for reporting the issue. +* Tools + + hwloc-bind --get now executes the command after displaying + the binding instead of ignoring the command entirely. + Thanks to John Donners for the suggestion. + + Clarify that memory sizes shown in lstopo are local by default + unless specified (total memory added in the root object). +* Synthetic topologies + + Synthetic topology descriptions may now specify attributes such as + memory sizes and OS indexes. See the Synthetic topologies section + in the documentation. + + lstopo now exports in this fully-detailed format by default. + The new option --export-synthetic-flags may be used to revert + back the old format. +* Documentation + + Add the doc/examples/ subdirectory with several real-life examples, + including the already existing hwloc-hello.C for basics. + Thanks to Rob Aulwes for the suggestion. + + Improve the documentation of CPU and memory binding in the API. + + Add a FAQ entry about operating system errors, especially on AMD + platforms with buggy cache information. + + Add a FAQ entry about loading many topologies in a single program. +* Misc + + Work around buggy Linux kernels reporting 2 sockets instead + 1 socket with 2 NUMA nodes for each Xeon E5 v3 (Haswell) processor. + + pciutils/libpci support is now removed since libpciaccess works + well and there's also a Linux-specific PCI backend. For the record, + pciutils was GPL and therefore disabled by default since v1.6.2. + + Add --disable-cpuid configure flag to work around buggy processor + simulators reporting invalid CPUID information. + Thanks for Andrew Friedley for reporting the issue. + + Fix a racy use of libltdl when manipulating multiple topologies in + different threads. + Thanks to Andra Hugo for reporting the issue and testing patches. + + Fix some build failures in private/misc.h. + Thanks to Pavan Balaji and Ralph Castain for the reports. + + Fix failures to detect X11/Xutil.h on some Solaris platforms. + Thanks to Siegmar Gross for reporting the failure. + + The plugin ABI has changed, this release will not load plugins + built against previous hwloc releases. + + +Version 1.9.1 +------------- +* Fix a crash when the PCI locality is invalid. Attach to the root object + instead. Thanks to Nicolas Denoyelle for reporting the issue. +* Fix -f in lstopo manpage. Thanks to Jirka Hladky for reporting the issue. +* Fix hwloc_obj_type_sscanf() and others when strncasecmp() is not properly + available. Thanks to Nick Papior Andersen for reporting the problem. +* Mark Linux file descriptors as close-on-exec to avoid leaks on exec. +* Fix some minor memory leaks. + + +Version 1.9.0 +------------- +* API + + Add hwloc_obj_type_sscanf() to extend hwloc_obj_type_of_string() with + type-specific attributes such as Cache/Group depth and Cache type. + hwloc_obj_type_of_string() is moved to hwloc/deprecated.h. + + Add hwloc_linux_get_tid_last_cpu_location() for retrieving the + last CPU where a Linux thread given by TID ran. + + Add hwloc_distrib() to extend the old hwloc_distribute[v]() functions. + hwloc_distribute[v]() is moved to hwloc/deprecated.h. + + Don't mix total and local memory when displaying verbose object attributes + with hwloc_obj_attr_snprintf() or in lstopo. +* Backends + + Add CPUVendor, CPUModelNumber and CPUFamilyNumber info attributes for + x86, ia64 and Xeon Phi sockets on Linux, to extend the x86-specific + support added in v1.8.1. Requested by Ralph Castain. + + Add many CPU- and Platform-related info attributes on ARM and POWER + platforms, in the Machine and Socket objects. + + Add CUDA info attributes describing the number of multiprocessors and + cores and the size of the global, shared and L2 cache memories in CUDA + OS devices. + + Add OpenCL info attributes describing the number of compute units and + the global memory size in OpenCL OS devices. + + The synthetic backend now accepts extended types such as L2Cache, L1i or + Group3. lstopo also exports synthetic strings using these extended types. +* Tools + + lstopo + - Do not overwrite output files by default anymore. + Pass -f or --force to enforce it. + - Display OpenCL, CUDA and Xeon Phi numbers of cores and memory sizes + in the graphical output. + - Fix export to stdout when specifying a Cairo-based output type + with --of. + + hwloc-ps + - Add -e or --get-last-cpu-location to report where processes/threads + run instead of where they are bound. + - Report locations as likely-more-useful objects such as Cores or Sockets + instead of Caches when possible. + + hwloc-bind + - Fix failure on Windows when not using --pid. + - Add -e as a synonym to --get-last-cpu-location. + + hwloc-distrib + - Add --reverse to distribute using last objects first and singlify + into last bits first. Thanks to Jirka Hladky for the suggestion. + + hwloc-info + - Report unified caches when looking for data or instruction cache + ancestor objects. +* Misc + + Add experimental Visual Studio support under contrib/windows. + Thanks to Eloi Gaudry for his help and for providing the first draft. + + Fix some overzealous assertions and warnings about the ordering of + objects on a level with respect to cpusets. The ordering is only + guaranteed for complete cpusets (based on the first bit in sets). + + Fix some memory leaks when importing xml diffs and when exporting a + "too complex" entry. + + +Version 1.8.1 +------------- +* Fix the cpuid code on Windows 64bits so that the x86 backend gets + enabled as expected and can populate CPU information. + Thanks to Robin Scher for reporting the problem. +* Add CPUVendor/CPUModelNumber/CPUFamilyNumber attributes when running + on x86 architecture. Thanks to Ralph Castain for the suggestion. +* Work around buggy BIOS reporting duplicate NUMA nodes on Linux. + Thanks to Jeff Becker for reporting the problem and testing the patch. +* Add a name to the lstopo graphical window. Thanks to Michael Prokop + for reporting the issue. + + +Version 1.8.0 +------------- +* New components + + Add the "linuxpci" component that always works on Linux even when + libpciaccess and libpci aren't available (and even with a modified + file-system root). By default the old "pci" component runs first + because "linuxpci" lacks device names (obj->name is always NULL). +* API + + Add the topology difference API in hwloc/diff.h for manipulating + many similar topologies. + + Add hwloc_topology_dup() for duplicating an entire topology. + + hwloc.h and hwloc/helper.h have been reorganized to clarify the + documentation sections. The actual inline code has moved out of hwloc.h + into the new hwloc/inlines.h. + + Deprecated functions are now in hwloc/deprecated.h, and not in the + official documentation anymore. +* Tools + + Add hwloc-diff and hwloc-patch tools together with the new diff API. + + Add hwloc-compress-dir to (de)compress an entire directory of XML files + using hwloc-diff and hwloc-patch. + + Object colors in the graphical output of lstopo may be changed by adding + a "lstopoStyle" info attribute. See CUSTOM COLORS in the lstopo(1) manpage + for details. Thanks to Jirka Hladky for discussing the idea. + + hwloc-gather-topology may now gather I/O-related files on Linux when + --io is given. Only the linuxpci component supports discovering I/O + objects from these extended tarballs. + + hwloc-annotate now supports --ri to remove/replace info attributes with + a given name. + + hwloc-info supports "root" and "all" special locations for dumping + information about the root object. + + lstopo now supports --append-legend to append custom lines of text + to the legend in the graphical output. Thanks to Jirka Hladky for + discussing the idea. + + hwloc-calc and friends have a more robust parsing of locations given + on the command-line and they report useful error messages about it. + + Add --whole-system to hwloc-bind, hwloc-calc, hwloc-distances and + hwloc-distrib, and add --restrict to hwloc-bind for uniformity among + tools. +* Misc + + Calling hwloc_topology_load() or hwloc_topology_set_*() on an already + loaded topology now returns an error (deprecated since release 1.6.1). + + Fix the initialisation of cpusets and nodesets in Group objects added + when inserting PCI hostbridges. + + Never merge Group objects that were added explicitly by the user with + hwloc_custom_insert_group_object_by_parent(). + + Add a sanity check during dynamic plugin loading to prevent some + crashes when hwloc is dynamically loaded by another plugin mechanisms. + + Add --with-hwloc-plugins-path to specify the install/load directories + of plugins. + + Add the MICSerialNumber info attribute to the root object when running + hwloc inside a Xeon Phi to match the same attribute in the MIC OS device + when running in the host. + + +Version 1.7.2 +------------- +* Do not create invalid block OS devices on very old Linux kernel such + as RHEL4 2.6.9. +* Fix PCI subvendor/device IDs. +* Fix the management of Misc objects inserted by parent. + Thanks to Jirka Hladky for reporting the problem. +* Add a PortState into attribute to OpenFabrics OS devices. +* Add a MICSerialNumber info attribute to Xeon PHI/MIC OS devices. +* Improve verbose error messages when failing to load from XML. + + +Version 1.7.1 +------------- +* Fix a failed assertion in the distance grouping code when loading a XML + file that already contains some groups. + Thanks to Laercio Lima Pilla for reporting the problem. +* Remove unexpected Group objects when loading XML topologies with I/O + objects and NUMA distances. + Thanks to Elena Elkina for reporting the problem and testing patches. +* Fix PCI link speed discovery when using libpciaccess. +* Fix invalid libpciaccess virtual function device/vendor IDs when using + SR-IOV PCI devices on Linux. +* Fix GL component build with old NVCtrl releases. + Thanks to Jirka Hladky for reporting the problem. +* Fix embedding breakage caused by libltdl. + Thanks to Pavan Balaji for reporting the problem. +* Always use the system-wide libltdl instead of shipping one inside hwloc. +* Document issues when enabling plugins while embedding hwloc in another + project, in the documentation section Embedding hwloc in Other Software. +* Add a FAQ entry "How to get useful topology information on NetBSD?" + in the documentation. +* Somes fixes in the renaming code for embedding. +* Miscellaneous minor build fixes. + + +Version 1.7.0 +------------- +* New operating system backends + + Add BlueGene/Q compute node kernel (CNK) support. See the FAQ in the + documentation for details. Thanks to Jeff Hammond, Christopher Samuel + and Erik Schnetter for their help. + + Add NetBSD support, thanks to Aleksej Saushev. +* New I/O device discovery + + Add co-processor OS devices such as "mic0" for Intel Xeon Phi (MIC) + on Linux. Thanks to Jerome Vienne for helping. + + Add co-processor OS devices such as "cuda0" for NVIDIA CUDA-capable GPUs. + + Add co-processor OS devices such as "opencl0d0" for OpenCL GPU devices + on the AMD OpenCL implementation. + + Add GPU OS devices such as ":0.0" for NVIDIA X11 displays. + + Add GPU OS devices such as "nvml0" for NVIDIA GPUs. + Thanks to Marwan Abdellah and Stefan Eilemann for helping. + These new OS devices have some string info attributes such as CoProcType, + GPUModel, etc. to better identify them. + See the I/O Devices and Attributes documentation sections for details. +* New components + + Add the "opencl", "cuda", "nvml" and "gl" components for I/O device + discovery. + + "nvml" also improves the discovery of NVIDIA GPU PCIe link speed. + All of these new components may be built as plugins. They may also be + disabled entirely by passing --disable-opencl/cuda/nvml/gl to configure. + See the I/O Devices, Components and Plugins, and FAQ documentation + sections for details. +* API + + Add hwloc_topology_get_flags(). + + Add hwloc/plugins.h for building external plugins. + See the Adding new discovery components and plugins section. +* Interoperability + + Add hwloc/opencl.h, hwloc/nvml.h, hwloc/gl.h and hwloc/intel-mic.h + to retrieve the locality of OS devices that correspond to AMD OpenCL + GPU devices or indexes, to NVML devices or indexes, to NVIDIA X11 + displays, or to Intel Xeon Phi (MIC) device indexes. + + Add new helpers in hwloc/cuda.h and hwloc/cudart.h to convert + between CUDA devices or indexes and hwloc OS devices. + + Add hwloc_ibv_get_device_osdev() and clarify the requirements + of the OpenFabrics Verbs helpers in hwloc/openfabrics-verbs.h. +* Tools + + hwloc-info is not only a synonym of lstopo -s anymore, it also + dumps information about objects given on the command-line. +* Documentation + + Add a section "Existing components and plugins". + + Add a list of common OS devices in section "Software devices". + + Add a new FAQ entry "Why is lstopo slow?" about lstopo slowness + issues because of GPUs. + + Clarify the documentation of inline helpers in hwloc/myriexpress.h + and hwloc/openfabrics-verbs.h. +* Misc + + Improve cache detection on AIX. + + The HWLOC_COMPONENTS variable now excludes the components whose + names are prefixed with '-'. + + lstopo --ignore PU now works when displaying the topology in + graphical and textual mode (not when exporting to XML). + + Make sure I/O options always appear in lstopo usage, not only when + using pciutils/libpci. + + Remove some unneeded Linux specific includes from some interoperability + headers. + + Fix some inconsistencies in hwloc-distrib and hwloc-assembler-remote + manpages. Thanks to Guy Streeter for the report. + + Fix a memory leak on AIX when getting memory binding. + + Fix many small memory leaks on Linux. + + The `libpci' component is now called `pci' but the old name is still + accepted in the HWLOC_COMPONENTS variable for backward compatibility. + + +Version 1.6.2 +------------- +* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. + pciutils/libpci is only used if --enable-libpci is given to configure + because its GPL license may taint hwloc. See the Installation section + in the documentation for details. +* Fix get_cpubind on Solaris when bound to a single PU with + processor_bind(). Thanks to Eugene Loh for reporting the problem + and providing a patch. + + +Version 1.6.1 +------------- +* Fix some crash or buggy detection in the x86 backend when Linux + cgroups/cpusets restrict the available CPUs. +* Fix the pkg-config output with --libs --static. + Thanks to Erik Schnetter for reporting one of the problems. +* Fix the output of hwloc-calc -H --hierarchical when using logical + indexes in the output. +* Calling hwloc_topology_load() multiple times on the same topology + is officially deprecated. hwloc will warn in such cases. +* Add some documentation about existing plugins/components, package + dependencies, and I/O devices specification on the command-line. + + +Version 1.6.0 +------------- +* Major changes + + Reorganize the backend infrastructure to support dynamic selection + of components and dynamic loading of plugins. For details, see the + new documentation section Components and plugins. + - The HWLOC_COMPONENTS variable lets one replace the default discovery + components. + - Dynamic loading of plugins may be enabled with --enable-plugins + (except on AIX and Windows). It will build libxml2 and libpci + support as separated modules. This helps reducing the dependencies + of the core hwloc library when distributed as a binary package. +* Backends + + Add CPUModel detection on Darwin and x86/FreeBSD. + Thanks to Robin Scher for providing ways to implement this. + + The x86 backend now adds CPUModel info attributes to socket objects + created by other backends that do not natively support this attribute. + + Fix detection on FreeBSD in case of cpuset restriction. Thanks to + Sebastian Kuzminsky for reporting the problem. +* XML + + Add hwloc_topology_set_userdata_import/export_callback(), + hwloc_export_obj_userdata() and _userdata_base64() to let + applications specify how to save/restore the custom data they placed + in the userdata private pointer field of hwloc objects. +* Tools + + Add hwloc-annotate program to add string info attributes to XML + topologies. + + Add --pid-cmd to hwloc-ps to append the output of a command to each + PID line. May be used for showing Open MPI process ranks, see the + hwloc-ps(1) manpage for details. + + hwloc-bind now exits with an error if binding fails; the executable + is not launched unless binding suceeeded or --force was given. + + Add --quiet to hwloc-calc and hwloc-bind to hide non-fatal error + messages. + + Fix command-line pid support in windows tools. + + All programs accept --verbose as a synonym to -v. +* Misc + + Fix some DIR descriptor leaks on Linux. + + Fix I/O device lists when some were filtered out after a XML import. + + Fix the removal of I/O objects when importing a I/O-enabled XML topology + without any I/O topology flag. + + When merging objects with HWLOC_IGNORE_TYPE_KEEP_STRUCTURE or + lstopo --merge, compare object types before deciding which one of two + identical object to remove (e.g. keep sockets in favor of caches). + + Add some GUID- and LID-related info attributes to OpenFabrics + OS devices. + + Only add CPUType socket attributes on Solaris/Sparc. Other cases + don't report reliable information (Solaris/x86), and a replacement + is available as the Architecture string info in the Machine object. + + Add missing Backend string info on Solaris in most cases. + + Document object attributes and string infos in a new Attributes + section in the documentation. + + Add a section about Synthetic topologies in the documentation. + + +Version 1.5.2 (some of these changes are in 1.6.2 but not in 1.6) +------------- +* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. + pciutils/libpci is only used if --enable-libpci is given to configure + because its GPL license may taint hwloc. See the Installation section + in the documentation for details. +* Fix get_cpubind on Solaris when bound to a single PU with + processor_bind(). Thanks to Eugene Loh for reporting the problem + and providing a patch. +* Fix some DIR descriptor leaks on Linux. +* Fix I/O device lists when some were filtered out after a XML import. +* Add missing Backend string info on Solaris in most cases. +* Fix the removal of I/O objects when importing a I/O-enabled XML topology + without any I/O topology flag. +* Fix the output of hwloc-calc -H --hierarchical when using logical + indexes in the output. +* Fix the pkg-config output with --libs --static. + Thanks to Erik Schnetter for reporting one of the problems. + + +Version 1.5.1 +------------- +* Fix block OS device detection on Linux kernel 3.3 and later. + Thanks to Guy Streeter for reporting the problem and testing the fix. +* Fix the cpuid code in the x86 backend (for FreeBSD). Thanks to + Sebastian Kuzminsky for reporting problems and testing patches. +* Fix 64bit detection on FreeBSD. +* Fix some corner cases in the management of the thissystem flag with + respect to topology flags and environment variables. +* Fix some corner cases in command-line parsing checks in hwloc-distrib + and hwloc-distances. +* Make sure we do not miss some block OS devices on old Linux kernels + when a single PCI device has multiple IDE hosts/devices behind it. +* Do not disable I/O devices or instruction caches in hwloc-assembler output. + + +Version 1.5.0 +------------- +* Backends + + Do not limit the number of processors to 1024 on Solaris anymore. + + Gather total machine memory on FreeBSD. Thanks to Cyril Roelandt. + + XML topology files do not depend on the locale anymore. Float numbers + such as NUMA distances or PCI link speeds now always use a dot as a + decimal separator. + + Add instruction caches detection on Linux, AIX, Windows and Darwin. + + Add get_last_cpu_location() support for the current thread on AIX. + + Support binding on AIX when threads or processes were bound with + bindprocessor(). Thanks to Hendryk Bockelmann for reporting the issue + and testing patches, and to Farid Parpia for explaining the binding + interfaces. + + Improve AMD topology detection in the x86 backend (for FreeBSD) using + the topoext feature. +* API + + Increase HWLOC_API_VERSION to 0x00010500 so that API changes may be + detected at build-time. + + Add a cache type attribute describind Data, Instruction and Unified + caches. Caches with different types but same depth (for instance L1d + and L1i) are placed on different levels. + + Add hwloc_get_cache_type_depth() to retrieve the hwloc level depth of + of the given cache depth and type, for instance L1i or L2. + It helps disambiguating the case where hwloc_get_type_depth() returns + HWLOC_TYPE_DEPTH_MULTIPLE. + + Instruction caches are ignored unless HWLOC_TOPOLOGY_FLAG_ICACHES is + passed to hwloc_topology_set_flags() before load. + + Add hwloc_ibv_get_device_osdev_by_name() OpenFabrics helper in + openfabrics-verbs.h to find the hwloc OS device object corresponding to + an OpenFabrics device. +* Tools + + Add lstopo-no-graphics, a lstopo built without graphical support to + avoid dependencies on external libraries such as Cairo and X11. When + supported, graphical outputs are only available in the original lstopo + program. + - Packagers splitting lstopo and lstopo-no-graphics into different + packages are advised to use the alternatives system so that lstopo + points to the best available binary. + + Instruction caches are enabled in lstopo by default. Use --no-icaches + to disable them. + + Add -t/--threads to show threads in hwloc-ps. +* Removal of obsolete components + + Remove the old cpuset interface (hwloc/cpuset.h) which is deprecated and + superseded by the bitmap API (hwloc/bitmap.h) since v1.1. + hwloc_cpuset and nodeset types are still defined, but all hwloc_cpuset_* + compatibility wrappers are now gone. + + Remove Linux libnuma conversion helpers for the deprecated and + broken nodemask_t interface. + + Remove support for "Proc" type name, it was superseded by "PU" in v1.0. + + Remove hwloc-mask symlinks, it was replaced by hwloc-calc in v1.0. +* Misc + + Fix PCIe 3.0 link speed computation. + + Non-printable characters are dropped from strings during XML export. + + Fix importing of escaped characters with the minimalistic XML backend. + + Assert hwloc_is_thissystem() in several I/O related helpers. + + Fix some memory leaks in the x86 backend for FreeBSD. + + Minor fixes to ease native builds on Windows. + + Limit the number of retries when operating on all threads within a + process on Linux if the list of threads is heavily getting modified. + + +Version 1.4.3 +------------- +* This release is only meant to fix the pciutils license issue when upgrading + to hwloc v1.5 or later is not possible. It contains several other minor + fixes but ignores many of them that are only in v1.5 or later. +* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. + pciutils/libpci is only used if --enable-libpci is given to configure + because its GPL license may taint hwloc. See the Installation section + in the documentation for details. +* Fix PCIe 3.0 link speed computation. +* Fix importing of escaped characters with the minimalistic XML backend. +* Fix a memory leak in the x86 backend. + + +Version 1.4.2 +------------- +* Fix build on Solaris 9 and earlier when fabsf() is not a compiler + built-in. Thanks to Igor Galić for reporting the problem. +* Fix support for more than 32 processors on Windows. Thanks to Hartmut + Kaiser for reporting the problem. +* Fix process-wide binding and cpulocation routines on Linux when some + threads disappear in the meantime. Thanks to Vlad Roubtsov for reporting + the issue. +* Make installed scripts executable. Thanks to Jirka Hladky for reporting + the problem. +* Fix libtool revision management when building for Windows. This fix was + also released as hwloc v1.4.1.1 Windows builds. Thanks to Hartmut Kaiser + for reporting the problem. +* Fix the __hwloc_inline keyword in public headers when compiling with a + C++ compiler. +* Add Port info attribute to network OS devices inside OpenFabrics PCI + devices so as to identify which interface corresponds to which port. +* Document requirements for interoperability helpers: I/O devices discovery + is required for some of them; the topology must match the current host + for most of them. + + +Version 1.4.1 (contains all 1.3.2 changes) +------------- +* Fix hwloc_alloc_membind, thanks Karl Napf for reporting the issue. +* Fix memory leaks in some get_membind() functions. +* Fix helpers converting from Linux libnuma to hwloc (hwloc/linux-libnuma.h) + in case of out-of-order NUMA node ids. +* Fix some overzealous assertions in the distance grouping code. +* Workaround BIOS reporting empty I/O locality in CUDA and OpenFabrics + helpers on Linux. Thanks to Albert Solernou for reporting the problem. +* Install a valgrind suppressions file hwloc-valgrind.supp (see the FAQ). +* Fix memory binding documentation. Thanks to Karl Napf for reporting the + issues. + + +Version 1.4.0 (does not contain all 1.3.2 changes) +------------- +* Major features + + Add "custom" interface and "assembler" tools to build multi-node + topology. See the Multi-node Topologies section in the documentation + for details. +* Interface improvements + + Add symmetric_subtree object attribute to ease assumptions when consulting + regular symmetric topologies. + + Add a CPUModel and CPUType info attribute to Socket objects on Linux + and Solaris. + + Add hwloc_get_obj_index_inside_cpuset() to retrieve the "logical" index + of an object within a subtree of the topology. + + Add more NVIDIA CUDA helpers in cuda.h and cudart.h to find hwloc objects + corresponding to CUDA devices. +* Discovery improvements + + Add a group object above partial distance matrices to make sure + the matrices are available in the final topology, except when this + new object would contradict the existing hierarchy. + + Grouping by distances now also works when loading from XML. + + Fix some corner cases in object insertion, for instance when dealing + with NUMA nodes without any CPU. +* Backends + + Implement hwloc_get_area_membind() on Linux. + + Honor I/O topology flags when importing from XML. + + Further improve XML-related error checking and reporting. + + Hide synthetic topology error messages unless HWLOC_SYNTHETIC_VERBOSE=1. +* Tools + + Add synthetic exporting of symmetric topologies to lstopo. + + lstopo --horiz and --vert can now be applied to some specific object types. + + lstopo -v -p now displays distance matrices with physical indexes. + + Add hwloc-distances utility to list distances. +* Documentation + + Fix and/or document the behavior of most inline functions in hwloc/helper.h + when the topology contains some I/O or Misc objects. + + Backend documentation enhancements. +* Bug fixes + + Fix missing last bit in hwloc_linux_get_thread_cpubind(). + Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue. + + Fix FreeBSD build without cpuid support. + + Fix several Windows build issues. + + Fix inline keyword definition in public headers. + + Fix dependencies in the embedded library. + + Improve visibility support detection. Thanks to Dave Love for providing + the patch. + + Remove references to internal symbols in the tools. + + +Version 1.3.3 +------------- +* This release is only meant to fix the pciutils license issue when upgrading + to hwloc v1.4 or later is not possible. It contains several other minor + fixes but ignores many of them that are only in v1.4 or later. +* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. + pciutils/libpci is only used if --enable-libpci is given to configure + because its GPL license may taint hwloc. See the Installation section + in the documentation for details. + + +Version 1.3.2 +------------- +* Fix missing last bit in hwloc_linux_get_thread_cpubind(). + Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue. +* Fix build with -mcmodel=medium. Thanks to Devendar Bureddy for reporting + the issue. +* Fix build with Solaris Studio 12 compiler when XML is disabled. + Thanks to Paul H. Hargrove for reporting the problem. +* Fix installation with old GNU sed, for instance on Red Hat 8. + Thanks to Paul H. Hargrove for reporting the problem. +* Fix PCI locality when Linux cgroups restrict the available CPUs. +* Fix floating point issue when grouping by distance on mips64 architecture. + Thanks to Paul H. Hargrove for reporting the problem. +* Fix conversion from/to Linux libnuma when some NUMA nodes have no memory. +* Fix support for gccfss compilers with broken ffs() support. Thanks to + Paul H. Hargrove for reporting the problem and providing a patch. +* Fix FreeBSD build without cpuid support. +* Fix several Windows build issues. +* Fix inline keyword definition in public headers. +* Fix dependencies in the embedded library. +* Detect when a compiler such as xlc may not report compile errors + properly, causing some configure checks to be wrong. Thanks to + Paul H. Hargrove for reporting the problem and providing a patch. +* Improve visibility support detection. Thanks to Dave Love for providing + the patch. +* Remove references to internal symbols in the tools. +* Fix installation on systems with limited command-line size. + Thanks to Paul H. Hargrove for reporting the problem. +* Further improve XML-related error checking and reporting. + + +Version 1.3.1 +------------- +* Fix pciutils detection with pkg-config when not installed in standard + directories. +* Fix visibility options detection with the Solaris Studio compiler. + Thanks to Igor Galić and Terry Dontje for reporting the problems. +* Fix support for old Linux sched.h headers such as those found + on Red Hat 8. Thanks to Paul H. Hargrove for reporting the problems. +* Fix inline and attribute support for Solaris compilers. Thanks to + Dave Love for reporting the problems. +* Print a short summary at the end of the configure output. Thanks to + Stefan Eilemann for the suggestion. +* Add --disable-libnuma configure option to disable libnuma-based + memory binding support on Linux. Thanks to Rayson Ho for the + suggestion. +* Make hwloc's configure script properly obey $PKG_CONFIG. Thanks to + Nathan Phillip Brink for raising the issue. +* Silence some harmless pciutils warnings, thanks to Paul H. Hargrove + for reporting the problem. +* Fix the documentation with respect to hwloc_pid_t and hwloc_thread_t + being either pid_t and pthread_t on Unix, or HANDLE on Windows. + + +Version 1.3.0 +------------- +* Major features + + Add I/O devices and bridges to the topology using the pciutils + library. Only enabled after setting the relevant flag with + hwloc_topology_set_flags() before hwloc_topology_load(). See the + I/O Devices section in the documentation for details. +* Discovery improvements + + Add associativity to the cache attributes. + + Add support for s390/z11 "books" on Linux. + + Add the HWLOC_GROUPING_ACCURACY environment variable to relax + distance-based grouping constraints. See the Environment Variables + section in the documentation for details about grouping behavior + and configuration. + + Allow user-given distance matrices to remove or replace those + discovered by the OS backend. +* XML improvements + + XML is now always supported: a minimalistic custom import/export + code is used when libxml2 is not available. It is only guaranteed + to read XML files generated by hwloc. + + hwloc_topology_export_xml() and export_xmlbuffer() now return an + integer. + + Add hwloc_free_xmlbuffer() to free the buffer allocated by + hwloc_topology_export_xmlbuffer(). + + Hide XML topology error messages unless HWLOC_XML_VERBOSE=1. +* Minor API updates + + Add hwloc_obj_add_info to customize object info attributes. +* Tools + + lstopo now displays I/O devices by default. Several options are + added to configure the I/O discovery. + + hwloc-calc and hwloc-bind now accept I/O devices as input. + + Add --restrict option to hwloc-calc and hwloc-distribute. + + Add --sep option to change the output field separator in hwloc-calc. + + Add --whole-system option to hwloc-ps. + + +Version 1.2.2 +------------- +* Fix build on AIX 5.2, thanks Utpal Kumar Ray for the report. +* Fix XML import of very large page sizes or counts on 32bits platform, + thanks to Karsten Hopp for the RedHat ticket. +* Fix crash when administrator limitations such as Linux cgroup require + to restrict distance matrices. Thanks to Ake Sandgren for reporting the + problem. +* Fix the removal of objects such as AMD Magny-Cours dual-node sockets + in case of administrator restrictions. +* Improve error reporting and messages in case of wrong synthetic topology + description. +* Several other minor internal fixes and documentation improvements. + + +Version 1.2.1 +------------- +* Improve support of AMD Bulldozer "Compute-Unit" modules by detecting + logical processors with different core IDs on Linux. +* Fix hwloc-ps crash when listing processes from another Linux cpuset. + Thanks to Carl Smith for reporting the problem. +* Fix build on AIX and Solaris. Thanks to Carl Smith and Andreas Kupries + for reporting the problems. +* Fix cache size detection on Darwin. Thanks to Erkcan Özcan for reporting + the problem. +* Make configure fail if --enable-xml or --enable-cairo is given and + proper support cannot be found. Thanks to Andreas Kupries for reporting + the XML problem. +* Fix spurious L1 cache detection on AIX. Thanks to Hendryk Bockelmann + for reporting the problem. +* Fix hwloc_get_last_cpu_location(THREAD) on Linux. Thanks to Gabriele + Fatigati for reporting the problem. +* Fix object distance detection on Solaris. +* Add pthread_self weak symbol to ease static linking. +* Minor documentation fixes. + + +Version 1.2.0 +------------- +* Major features + + Expose latency matrices in the API as an array of distance structures + within objects. Add several helpers to find distances. + + Add hwloc_topology_set_distance_matrix() and environment variables + to provide a matrix of distances between a given set of objects. + + Add hwloc_get_last_cpu_location() and hwloc_get_proc_last_cpu_location() + to retrieve the processors where a process or thread recently ran. + - Add the corresponding --get-last-cpu-location option to hwloc-bind. + + Add hwloc_topology_restrict() to restrict an existing topology to a + given cpuset. + - Add the corresponding --restrict option to lstopo. +* Minor API updates + + Add hwloc_bitmap_list_sscanf/snprintf/asprintf to convert between bitmaps + and strings such as 4-5,7-9,12,15- + + hwloc_bitmap_set/clr_range() now support infinite ranges. + + Clarify the difference between inserting Misc objects by cpuset or by + parent. + + hwloc_insert_misc_object_by_cpuset() now returns NULL in case of error. +* Discovery improvements + + x86 backend (for freebsd): add x2APIC support + + Support standard device-tree phandle, to get better support on e.g. ARM + systems providing it. + + Detect cache size on AIX. Thanks Christopher and IBM. + + Improve grouping to support asymmetric topologies. +* Tools + + Command-line tools now support "all" and "root" special locations + consisting in the entire topology, as well as type names with depth + attributes such as L2 or Group4. + + hwloc-calc improvements: + - Add --number-of/-N option to report the number of objects of a given + type or depth. + - -I is now equivalent to --intersect for listing the indexes of + objects of a given type or depth that intersects the input. + - Add -H to report the output as a hierarchical combination of types + and depths. + + Add --thissystem to lstopo. + + Add lstopo-win, a console-less lstopo variant on Windows. +* Miscellaneous + + Remove C99 usage from code base. + + Rename hwloc-gather-topology.sh into hwloc-gather-topology + + Fix AMD cache discovery on freebsd when there is no L3 cache, thanks + Andriy Gapon for the fix. + + +Version 1.1.2 +------------- +* Fix a segfault in the distance-based grouping code when some objects + are not placed in any group. Thanks to Bernd Kallies for reporting + the problem and providing a patch. +* Fix the command-line parsing of hwloc-bind --mempolicy interleave. + Thanks to Guy Streeter for reporting the problem. +* Stop truncating the output in hwloc_obj_attr_snprintf() and in the + corresponding lstopo output. Thanks to Guy Streeter for reporting the + problem. +* Fix object levels ordering in synthetic topologies. +* Fix potential incoherency between device tree and kernel information, + when SMT is disabled on Power machines. +* Fix and document the behavior of hwloc_topology_set_synthetic() in case + of invalid argument. Thanks to Guy Streeter for reporting the problem. +* Add some verbose error message reporting when it looks like the OS + gives erroneous information. +* Do not include unistd.h and stdint.h in public headers on Windows. +* Move config.h files into their own subdirectories to avoid name + conflicts when AC_CONFIG_HEADERS adds -I's for them. +* Remove the use of declaring variables inside "for" loops. +* Some other minor fixes. +* Many minor documentation fixes. + + +Version 1.1.1 +------------- +* Add hwloc_get_api_version() which returns the version of hwloc used + at runtime. Thanks to Guy Streeter for the suggestion. +* Fix the number of hugepages reported for NUMA nodes on Linux. +* Fix hwloc_bitmap_to_ulong() right after allocating the bitmap. + Thanks to Bernd Kallies for reporting the problem. +* Fix hwloc_bitmap_from_ith_ulong() to properly zero the first ulong. + Thanks to Guy Streeter for reporting the problem. +* Fix hwloc_get_membind_nodeset() on Linux. + Thanks to Bernd Kallies for reporting the problem and providing a patch. +* Fix some file descriptor leaks in the Linux discovery. +* Fix the minimum width of NUMA nodes, caches and the legend in the graphical + lstopo output. Thanks to Jirka Hladky for reporting the problem. +* Various fixes to bitmap conversion from/to taskset-strings. +* Fix and document snprintf functions behavior when the buffer size is too + small or zero. Thanks to Guy Streeter for reporting the problem. +* Fix configure to avoid spurious enabling of the cpuid backend. + Thanks to Tim Anderson for reporting the problem. +* Cleanup error management in hwloc-gather-topology.sh. + Thanks to Jirka Hladky for reporting the problem and providing a patch. +* Add a manpage and usage for hwloc-gather-topology.sh on Linux. + Thanks to Jirka Hladky for providing a patch. +* Memory binding documentation enhancements. + + +Version 1.1.0 +------------- + +* API + + Increase HWLOC_API_VERSION to 0x00010100 so that API changes may be + detected at build-time. + + Add a memory binding interface. + + The cpuset API (hwloc/cpuset.h) is now deprecated. It is replaced by + the bitmap API (hwloc/bitmap.h) which offers the same features with more + generic names since it applies to CPU sets, node sets and more. + Backward compatibility with the cpuset API and ABI is still provided but + it will be removed in a future release. + Old types (hwloc_cpuset_t, ...) are still available as a way to clarify + what kind of hwloc_bitmap_t each API function manipulates. + Upgrading to the new API only requires to replace hwloc_cpuset_ function + calls with the corresponding hwloc_bitmap_ calls, with the following + renaming exceptions: + - hwloc_cpuset_cpu -> hwloc_bitmap_only + - hwloc_cpuset_all_but_cpu -> hwloc_bitmap_allbut + - hwloc_cpuset_from_string -> hwloc_bitmap_sscanf + + Add an `infos' array in each object to store couples of info names and + values. It enables generic storage of things like the old dmi board infos + that were previously stored in machine specific attributes. + + Add linesize cache attribute. +* Features + + Bitmaps (and thus CPU sets and node sets) are dynamically (re-)allocated, + the maximal number of CPUs (HWLOC_NBMAXCPUS) has been removed. + + Improve the distance-based grouping code to better support irregular + distance matrices. + + Add support for device-tree to get cache information (useful on Power + architectures). +* Helpers + + Add NVIDIA CUDA helpers in cuda.h and cudart.h to ease interoperability + with CUDA Runtime and Driver APIs. + + Add Myrinet Express helper in myriexpress.h to ease interoperability. +* Tools + + lstopo now displays physical/OS indexes by default in graphical mode + (use -l to switch back to logical indexes). The textual output still uses + logical by default (use -p to switch to physical indexes). + + lstopo prefixes logical indexes with `L#' and physical indexes with `P#'. + Physical indexes are also printed as `P#N' instead of `phys=N' within + object attributes (in parentheses). + + Add a legend at the bottom of the lstopo graphical output, use --no-legend + to remove it. + + Add hwloc-ps to list process' bindings. + + Add --membind and --mempolicy options to hwloc-bind. + + Improve tools command-line options by adding a generic --input option + (and more) which replaces the old --xml, --synthetic and --fsys-root. + + Cleanup lstopo output configuration by adding --output-format. + + Add --intersect in hwloc-calc, and replace --objects with --largest. + + Add the ability to work on standard input in hwloc-calc. + + Add --from, --to and --at in hwloc-distrib. + + Add taskset-specific functions and command-line tools options to + manipulate CPU set strings in the format of the taskset program. + + Install hwloc-gather-topology.sh on Linux. + + +Version 1.0.3 +------------- + +* Fix support for Linux cpuset when emulated by a cgroup mount point. +* Remove unneeded runtime dependency on libibverbs.so in the library and + all utils programs. +* Fix hwloc_cpuset_to_linux_libnuma_ulongs in case of non-linear OS-indexes + for NUMA nodes. +* lstopo now displays physical/OS indexes by default in graphical mode + (use -l to switch back to logical indexes). The textual output still uses + logical by default (use -p to switch to physical indexes). + + +Version 1.0.2 +------------- + +* Public headers can now be included directly from C++ programs. +* Solaris fix for non-contiguous cpu numbers. Thanks to Rolf vandeVaart for + reporting the issue. +* Darwin 10.4 fix. Thanks to Olivier Cessenat for reporting the issue. +* Revert 1.0.1 patch that ignored sockets with unknown ID values since it + only slightly helped POWER7 machines with old Linux kernels while it + prevents recent kernels from getting the complete POWER7 topology. +* Fix hwloc_get_common_ancestor_obj(). +* Remove arch-specific bits in public headers. +* Some fixes in the lstopo graphical output. +* Various man page clarifications and minor updates. + + +Version 1.0.1 +------------- + +* Various Solaris fixes. Thanks to Yannick Martin for reporting the issue. +* Fix "non-native" builds on x86 platforms (e.g., when building 32 + bit executables with compilers that natively build 64 bit). +* Ignore sockets with unknown ID values (which fixes issues on POWER7 + machines). Thanks to Greg Bauer for reporting the issue. +* Various man page clarifications and minor updates. +* Fixed memory leaks in hwloc_setup_group_from_min_distance_clique(). +* Fix cache type filtering on MS Windows 7. Thanks to Αλέξανδρος + Παπαδογιαννάκ for reporting the issue. +* Fixed warnings when compiling with -DNDEBUG. + + +Version 1.0.0 +------------- + +* The ABI of the library has changed. +* Backend updates + + Add FreeBSD support. + + Add x86 cpuid based backend. + + Add Linux cgroup support to the Linux cpuset code. + + Support binding of entire multithreaded process on Linux. + + Fix and enable Group support in Windows. + + Cleanup XML export/import. +* Objects + + HWLOC_OBJ_PROC is renamed into HWLOC_OBJ_PU for "Processing Unit", + its stringified type name is now "PU". + + Use new HWLOC_OBJ_GROUP objects instead of MISC when grouping + objects according to NUMA distances or arbitrary OS aggregation. + + Rework memory attributes. + + Add different cpusets in each object to specify processors that + are offline, unavailable, ... + + Cleanup the storage of object names and DMI infos. +* Features + + Add support for looking up specific PID topology information. + + Add hwloc_topology_export_xml() to export the topology in a XML file. + + Add hwloc_topology_get_support() to retrieve the supported features + for the current topology context. + + Support non-SYSTEM object as the root of the tree, use MACHINE in + most common cases. + + Add hwloc_get_*cpubind() routines to retrieve the current binding + of processes and threads. +* API + + Add HWLOC_API_VERSION to help detect the currently used API version. + + Add missing ending "e" to *compare* functions. + + Add several routines to emulate PLPA functions. + + Rename and rework the cpuset and/or/xor/not/clear operators to output + their result in a dedicated argument instead of modifying one input. + + Deprecate hwloc_obj_snprintf() in favor of hwloc_obj_type/attr_snprintf(). + + Clarify the use of parent and ancestor in the API, do not use father. + + Replace hwloc_get_system_obj() with hwloc_get_root_obj(). + + Return -1 instead of HWLOC_OBJ_TYPE_MAX in the API since the latter + isn't public. + + Relax constraints in hwloc_obj_type_of_string(). + + Improve displaying of memory sizes. + + Add 0x prefix to cpuset strings. +* Tools + + lstopo now displays logical indexes by default, use --physical to + revert back to OS/physical indexes. + + Add colors in the lstopo graphical outputs to distinguish between online, + offline, reserved, ... objects. + + Extend lstopo to show cpusets, filter objects by type, ... + + Renamed hwloc-mask into hwloc-calc which supports many new options. +* Documentation + + Add a hwloc(7) manpage containing general information. + + Add documentation about how to switch from PLPA to hwloc. + + Cleanup the distributed documentation files. +* Miscellaneous + + Many compilers warning fixes. + + Cleanup the ABI by using the visibility attribute. + + Add project embedding support. + + +Version 0.9.4 (unreleased) +------------- + +* Fix reseting colors to normal in lstopo -.txt output. +* Fix Linux pthread_t binding error report. + + +Version 0.9.3 +------------- + +* Fix autogen.sh to work with Autoconf 2.63. +* Fix various crashes in particular conditions: + - xml files with root attributes + - offline CPUs + - partial sysfs support + - unparseable /proc/cpuinfo + - ignoring NUMA level while Misc level have been generated +* Tweak documentation a bit +* Do not require the pthread library for binding the current thread on Linux +* Do not erroneously consider the sched_setaffinity prototype is the old version + when there is actually none. +* Fix _syscall3 compilation on archs for which we do not have the + sched_setaffinity system call number. +* Fix AIX binding. +* Fix libraries dependencies: now only lstopo depends on libtermcap, fix + binutils-gold link +* Have make check always build and run hwloc-hello.c +* Do not limit size of a cpuset. + + +Version 0.9.2 +------------- + +* Trivial documentation changes. + + +Version 0.9.1 +------------- + +* Re-branded to "hwloc" and moved to the Open MPI project, relicensed under the + BSD license. +* The prefix of all functions and tools is now hwloc, and some public + functions were also renamed for real. +* Group NUMA nodes into Misc objects according to their physical distance + that may be reported by the OS/BIOS. + May be ignored by setting HWLOC_IGNORE_DISTANCES=1 in the environment. +* Ignore offline CPUs on Solaris. +* Improved binding support on AIX. +* Add HP-UX support. +* CPU sets are now allocated/freed dynamically. +* Add command line options to tune the lstopo graphical output, add + semi-graphical textual output +* Extend topobind to support multiple cpusets or objects on the command + line as topomask does. +* Add an Infiniband-specific helper hwloc/openfabrics-verbs.h to retrieve + the physical location of IB devices. + + +Version 0.9 (formerly named "libtopology") +----------- + +* First release. diff --git a/3rd-party/hwloc-2.7.1/README b/3rd-party/hwloc-2.7.1/README new file mode 100644 index 0000000000..43210e636c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/README @@ -0,0 +1,85 @@ +Introduction + +The Hardware Locality (hwloc) software project aims at easing the process of +discovering hardware resources in parallel architectures. It offers +command-line tools and a C API for consulting these resources, their locality, +attributes, and interconnection. hwloc primarily aims at helping +high-performance computing (HPC) applications, but is also applicable to any +project seeking to exploit code and/or data locality on modern computing +platforms. + +hwloc is actually made of two subprojects distributed together: + + * The original hwloc project for describing the internals of computing nodes. + It is described in details starting at section Hardware Locality (hwloc) + Introduction. + * The network-oriented companion called netloc (Network Locality), described + in details starting with section Network Locality (netloc). + +See also the Related pages tab above for links to other sections. + +Netloc may be disabled, but the original hwloc cannot. Both hwloc and netloc +APIs are documented after these sections. + +Installation + +hwloc (https://www.open-mpi.org/projects/hwloc/) is available under the BSD +license. It is hosted as a sub-project of the overall Open MPI project (https:/ +/www.open-mpi.org/). Note that hwloc does not require any functionality from +Open MPI -- it is a wholly separate (and much smaller!) project and code base. +It just happens to be hosted as part of the overall Open MPI project. + +Basic Installation + +Installation is the fairly common GNU-based process: + +shell$ ./configure --prefix=... +shell$ make +shell$ make install + +hwloc- and netloc-specific configure options and requirements are documented in +sections hwloc Installation and Netloc Installation respectively. + +Also note that if you install supplemental libraries in non-standard locations, +hwloc's configure script may not be able to find them without some help. You +may need to specify additional CPPFLAGS, LDFLAGS, or PKG_CONFIG_PATH values on +the configure command line. + +For example, if libpciaccess was installed into /opt/pciaccess, hwloc's +configure script may not find it be default. Try adding PKG_CONFIG_PATH to the +./configure command line, like this: + +./configure PKG_CONFIG_PATH=/opt/pciaccess/lib/pkgconfig ... + +Running the "lstopo" tool is a good way to check as a graphical output whether +hwloc properly detected the architecture of your node. Netloc command-line +tools can be used to display the network topology interconnecting your nodes. + +Installing from a Git clone + +Additionally, the code can be directly cloned from Git: + +shell$ git clone https://github.com/open-mpi/hwloc.git +shell$ cd hwloc +shell$ ./autogen.sh + +Note that GNU Autoconf >=2.63, Automake >=1.11 and Libtool >=2.2.6 are required +when building from a Git clone. + +Nightly development snapshots are available on the web site, they can be +configured and built without any need for Git or GNU Autotools. + +Questions and Bugs + +Bugs should be reported in the tracker (https://github.com/open-mpi/hwloc/ +issues). Opening a new issue automatically displays lots of hints about how to +debug and report issues. + +Questions may be sent to the users or developers mailing lists (https:// +www.open-mpi.org/community/lists/hwloc.php). + +There is also a #hwloc IRC channel on Libera Chat (irc.libera.chat). + + + +See https://www.open-mpi.org/projects/hwloc/doc/ for more hwloc documentation. diff --git a/3rd-party/hwloc-2.7.1/VERSION b/3rd-party/hwloc-2.7.1/VERSION new file mode 100644 index 0000000000..d17fb44e23 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/VERSION @@ -0,0 +1,47 @@ +# This is the VERSION file for hwloc, describing the precise version +# of hwloc in this distribution. The various components of the version +# number below are combined to form a single version number string. + +# major, minor, and release are generally combined in the form +# ... If release is zero, then it is omitted. + +# Please update HWLOC_VERSION* in contrib/windows/hwloc_config.h too. + +major=2 +minor=7 +release=1 + +# greek is used for alpha or beta release tags. If it is non-empty, +# it will be appended to the version number. It does not have to be +# numeric. Common examples include a1 (alpha release 1), b1 (beta +# release 1), sc2005 (Super Computing 2005 release). The only +# requirement is that it must be entirely printable ASCII characters +# and have no white space. + +greek= + +# The date when this release was created + +date="Mar 20, 2022" + +# If snapshot=1, then use the value from snapshot_version as the +# entire hwloc version (i.e., ignore major, minor, release, and +# greek). This is only set to 1 when making snapshot tarballs. +snapshot=0 +snapshot_version=${major}.${minor}.${release}${greek}-git + +# The shared library version of hwloc's public library. This version +# is maintained in accordance with the "Library Interface Versions" +# chapter from the GNU Libtool documentation. Notes: + +# 1. Since version numbers are associated with *releases*, the version +# number maintained on the hwloc git master (and developer branches) +# is always 0:0:0. + +# 2. Version numbers are described in the Libtool current:revision:age +# format. + +libhwloc_so_version=20:3:5 +libnetloc_so_version=0:0:0 + +# Please also update the lines in contrib/windows/libhwloc.vcxproj diff --git a/3rd-party/hwloc-2.7.1/config/distscript.sh b/3rd-party/hwloc-2.7.1/config/distscript.sh new file mode 100644 index 0000000000..d72a3fd305 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/distscript.sh @@ -0,0 +1,130 @@ +#!/bin/sh -f +# +# Copyright © 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright © 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright © 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright © 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright © 2010-2014 Inria. All rights reserved. +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +builddir="`pwd`" + +srcdir=$1 +cd "$srcdir" +srcdir=`pwd` +cd "$builddir" + +distdir="$builddir/$2" +HWLOC_VERSION=$3 + +if test "$distdir" = ""; then + echo "Must supply relative distdir as argv[2] -- aborting" + exit 1 +elif test "$HWLOC_VERSION" = ""; then + echo "Must supply version as argv[1] -- aborting" + exit 1 +fi + +#======================================================================== + +start=`date` +cat <=2.70 or AC_PROG_CC_C99 is stored in ac_cv_prog_cc_c99 + if test "x$ac_cv_prog_cc_c99" = xno ; then + AC_MSG_WARN([hwloc requires a C99 compiler]) + AC_MSG_ERROR([Aborting.]) + fi + + # GCC specifics. + _HWLOC_C_COMPILER_VENDOR([hwloc_c_vendor]) + if test "$hwloc_c_vendor" = "gnu"; then + HWLOC_GCC_CFLAGS="-Wall -Wmissing-prototypes -Wundef" + HWLOC_GCC_CFLAGS="$HWLOC_GCC_CFLAGS -Wpointer-arith -Wcast-align" + fi + + # Enample system extensions for O_DIRECTORY, fdopen, fssl, etc. + AH_VERBATIM([USE_HPUX_SYSTEM_EXTENSIONS], +[/* Enable extensions on HP-UX. */ +#ifndef _HPUX_SOURCE +# undef _HPUX_SOURCE +#endif +]) + AC_DEFINE([_HPUX_SOURCE], [1], [Are we building for HP-UX?]) + + AC_LANG_PUSH([C]) + + # Check to see if we're producing a 32 or 64 bit executable by + # checking the sizeof void*. Note that AC CHECK_SIZEOF even works + # when cross compiling (!), according to the AC 2.64 docs. This + # check is needed because on some systems, you can instruct the + # compiler to specifically build 32 or 64 bit executables -- even + # though the $target may indicate something different. + AC_CHECK_SIZEOF([void *]) + + # + # List of components to be built, either statically or dynamically. + # To be enlarged below. + # + hwloc_components="noos xml synthetic xml_nolibxml" + + # + # Check OS support + # + AC_MSG_CHECKING([which OS support to include]) + case ${target} in + powerpc64-bgq-linux*) # must be before Linux + AC_DEFINE(HWLOC_BGQ_SYS, 1, [Define to 1 on BlueGene/Q]) + hwloc_bgq=yes + AC_MSG_RESULT([bgq]) + hwloc_components="$hwloc_components bgq" + ;; + *-*-linux*) + AC_DEFINE(HWLOC_LINUX_SYS, 1, [Define to 1 on Linux]) + hwloc_linux=yes + AC_MSG_RESULT([Linux]) + hwloc_components="$hwloc_components linux" + if test "x$enable_io" != xno; then + AC_DEFINE(HWLOC_HAVE_LINUXIO, 1, [Define to 1 for I/O discovery in the Linux component]) + hwloc_linuxio_happy=yes + if test x$enable_pci != xno; then + AC_DEFINE(HWLOC_HAVE_LINUXPCI, 1, [Define to 1 if enabling Linux-specific PCI discovery in the Linux I/O component]) + hwloc_linuxpci_happy=yes + fi + fi + ;; + *-*-irix*) + AC_DEFINE(HWLOC_IRIX_SYS, 1, [Define to 1 on Irix]) + hwloc_irix=yes + AC_MSG_RESULT([IRIX]) + # no irix component yet + ;; + *-*-darwin*) + AC_DEFINE(HWLOC_DARWIN_SYS, 1, [Define to 1 on Darwin]) + hwloc_darwin=yes + AC_MSG_RESULT([Darwin]) + hwloc_components="$hwloc_components darwin" + ;; + *-*-solaris*) + AC_DEFINE(HWLOC_SOLARIS_SYS, 1, [Define to 1 on Solaris]) + hwloc_solaris=yes + AC_MSG_RESULT([Solaris]) + hwloc_components="$hwloc_components solaris" + ;; + *-*-aix*) + AC_DEFINE(HWLOC_AIX_SYS, 1, [Define to 1 on AIX]) + hwloc_aix=yes + AC_MSG_RESULT([AIX]) + hwloc_components="$hwloc_components aix" + ;; + *-*-hpux*) + AC_DEFINE(HWLOC_HPUX_SYS, 1, [Define to 1 on HP-UX]) + hwloc_hpux=yes + AC_MSG_RESULT([HP-UX]) + hwloc_components="$hwloc_components hpux" + ;; + *-*-mingw*|*-*-cygwin*) + AC_DEFINE(HWLOC_WIN_SYS, 1, [Define to 1 on WINDOWS]) + hwloc_windows=yes + AC_MSG_RESULT([Windows]) + hwloc_components="$hwloc_components windows" + ;; + *-*-*freebsd*) + AC_DEFINE(HWLOC_FREEBSD_SYS, 1, [Define to 1 on *FREEBSD]) + hwloc_freebsd=yes + AC_MSG_RESULT([FreeBSD]) + hwloc_components="$hwloc_components freebsd" + ;; + *-*-*netbsd*) + AC_DEFINE(HWLOC_NETBSD_SYS, 1, [Define to 1 on *NETBSD]) + hwloc_netbsd=yes + AC_MSG_RESULT([NetBSD]) + hwloc_components="$hwloc_components netbsd" + ;; + *) + AC_MSG_RESULT([Unsupported! ($target)]) + AC_DEFINE(HWLOC_UNSUPPORTED_SYS, 1, [Define to 1 on unsupported systems]) + AC_MSG_WARN([***********************************************************]) + AC_MSG_WARN([*** hwloc does not support this system.]) + AC_MSG_WARN([*** hwloc will *attempt* to build (but it may not work).]) + AC_MSG_WARN([*** hwloc run-time results may be reduced to showing just one processor,]) + AC_MSG_WARN([*** and binding will not be supported.]) + AC_MSG_WARN([*** You have been warned.]) + AC_MSG_WARN([*** Pausing to give you time to read this message...]) + AC_MSG_WARN([***********************************************************]) + sleep 10 + ;; + esac + + # + # Check CPU support + # + AC_MSG_CHECKING([which CPU support to include]) + case ${target} in + i*86-*-*|x86_64-*-*|amd64-*-*) + case ${ac_cv_sizeof_void_p} in + 4) + AC_DEFINE(HWLOC_X86_32_ARCH, 1, [Define to 1 on x86_32]) + hwloc_x86_32=yes + HWLOC_MS_LIB_ARCH=X86 + AC_MSG_RESULT([x86_32]) + ;; + 8) + AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64]) + hwloc_x86_64=yes + HWLOC_MS_LIB_ARCH=X64 + AC_MSG_RESULT([x86_64]) + ;; + *) + AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64]) + hwloc_x86_64=yes + HWLOC_MS_LIB_ARCH=X64 + AC_MSG_RESULT([unknown -- assuming x86_64]) + ;; + esac + ;; + *) + AC_MSG_RESULT([unknown]) + ;; + esac + AC_SUBST(HWLOC_MS_LIB_ARCH) + + AC_CHECK_SIZEOF([unsigned long]) + AC_DEFINE_UNQUOTED([HWLOC_SIZEOF_UNSIGNED_LONG], $ac_cv_sizeof_unsigned_long, [The size of `unsigned long', as computed by sizeof]) + AC_CHECK_SIZEOF([unsigned int]) + AC_DEFINE_UNQUOTED([HWLOC_SIZEOF_UNSIGNED_INT], $ac_cv_sizeof_unsigned_int, [The size of `unsigned int', as computed by sizeof]) + + # + # Check for compiler attributes and visibility + # + _HWLOC_CHECK_ATTRIBUTES + _HWLOC_CHECK_VISIBILITY + HWLOC_CFLAGS="$HWLOC_FLAGS $HWLOC_VISIBILITY_CFLAGS" + AS_IF([test "$HWLOC_VISIBILITY_CFLAGS" != ""], + [AC_MSG_WARN(["$HWLOC_VISIBILITY_CFLAGS" has been added to the hwloc CFLAGS])]) + + # Make sure the compiler returns an error code when function arg + # count is wrong, otherwise sched_setaffinity checks may fail. + HWLOC_STRICT_ARGS_CFLAGS= + hwloc_args_check=0 + AC_MSG_CHECKING([whether the C compiler rejects function calls with too many arguments]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + extern int one_arg(int x); + int foo(void) { return one_arg(1, 2); } + ]])], + [AC_MSG_RESULT([no])], + [hwloc_args_check=1 + AC_MSG_RESULT([yes])]) + AC_MSG_CHECKING([whether the C compiler rejects function calls with too few arguments]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + extern int two_arg(int x, int y); + int foo(void) { return two_arg(3); } + ]])], + [AC_MSG_RESULT([no])], + [hwloc_args_check=`expr $hwloc_args_check + 1` + AC_MSG_RESULT([yes])]) + AS_IF([test "$hwloc_args_check" != "2"],[ + AC_MSG_WARN([Your C compiler does not consider incorrect argument counts to be a fatal error.]) + case "$hwloc_c_vendor" in + ibm) + HWLOC_STRICT_ARGS_CFLAGS="-qhalt=e" + ;; + intel) + HWLOC_STRICT_ARGS_CFLAGS="-we140" + ;; + *) + HWLOC_STRICT_ARGS_CFLAGS=FAIL + AC_MSG_WARN([Please report this warning and configure using a different C compiler if possible.]) + ;; + esac + AS_IF([test "$HWLOC_STRICT_ARGS_CFLAGS" != "FAIL"],[ + AC_MSG_WARN([Configure will append '$HWLOC_STRICT_ARGS_CFLAGS' to the value of CFLAGS when needed.]) + AC_MSG_WARN([Alternatively you may configure with a different compiler.]) + ]) + ]) + + AS_IF([test "$hwloc_mode" = "standalone"],[ + # For the common developer case, if we're in a developer checkout and + # using the GNU compilers, turn on maximum warnings unless + # specifically disabled by the user. + AC_MSG_CHECKING([whether to enable "picky" compiler mode]) + hwloc_want_picky=0 + AS_IF([test "$hwloc_c_vendor" = "gnu"], + [AS_IF([test -e "$srcdir/.git"], + [hwloc_want_picky=1])]) + if test "$enable_picky" = "yes"; then + if test "$hwloc_c_vendor" = "gnu"; then + AC_MSG_RESULT([yes]) + hwloc_want_picky=1 + else + AC_MSG_RESULT([no]) + AC_MSG_WARN([Warning: --enable-picky used, but is currently only defined for the GCC compiler set -- automatically disabled]) + hwloc_want_picky=0 + fi + elif test "$enable_picky" = "no"; then + AC_MSG_RESULT([no]) + hwloc_want_picky=0 + else + if test "$hwloc_want_picky" = 1; then + AC_MSG_RESULT([yes (default)]) + else + AC_MSG_RESULT([no (default)]) + fi + fi + if test "$hwloc_want_picky" = 1; then + add="-Wall -Wextra -Wunused-parameter -Wundef -Wno-long-long -Wsign-compare" + add="$add -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes" + add="$add -Wcomment -pedantic -Wshadow -Wwrite-strings -Wnested-externs" + add="$add -Wpointer-arith -Wbad-function-cast -Wold-style-definition" + add="$add -Werror-implicit-function-declaration" + + _HWLOC_CHECK_CC_OPTION([-Wdiscarded-qualifiers], [add]) + _HWLOC_CHECK_CC_OPTION([-Wvariadic-macros], [add]) + _HWLOC_CHECK_CC_OPTION([-Wtype-limits], [add]) + _HWLOC_CHECK_CC_OPTION([-Wstack-usage=262144], [add]) + + # -Wextra enables some -Wfoo that we want to disable it at some place + _HWLOC_CHECK_CC_OPTION([-Wmissing-field-initializers], [add], [AC_DEFINE(HWLOC_HAVE_GCC_W_MISSING_FIELD_INITIALIZERS, 1, [Define to 1 if gcc -Wmissing-field-initializers is supported and enabled])]) + _HWLOC_CHECK_CC_OPTION([-Wcast-function-type], [add], [AC_DEFINE(HWLOC_HAVE_GCC_W_CAST_FUNCTION_TYPE, 1, [Define to 1 if gcc -Wcast-function-type is supported and enabled])]) + + HWLOC_CFLAGS="$HWLOC_CFLAGS $add" + fi + ]) + + # + # Now detect support + # + + AC_CHECK_HEADERS([unistd.h]) + AC_CHECK_HEADERS([dirent.h]) + AC_CHECK_HEADERS([strings.h]) + AC_CHECK_HEADERS([ctype.h]) + + AC_CHECK_FUNCS([strcasecmp], [ + _HWLOC_CHECK_DECL([strcasecmp], [ + AC_DEFINE([HWLOC_HAVE_DECL_STRCASECMP], [1], [Define to 1 if function `strcasecmp' is declared by system headers]) + ]) + ]) + AC_CHECK_FUNCS([strncasecmp], [ + _HWLOC_CHECK_DECL([strncasecmp], [ + AC_DEFINE([HWLOC_HAVE_DECL_STRNCASECMP], [1], [Define to 1 if function `strncasecmp' is declared by system headers]) + ]) + ]) + + AC_CHECK_FUNCS([strftime]) + AC_CHECK_FUNCS([setlocale]) + + AC_CHECK_HEADER([stdint.h], [ + AC_DEFINE([HWLOC_HAVE_STDINT_H], [1], [Define to 1 if you have the header file.]) + ]) + AC_CHECK_HEADERS([sys/mman.h]) + + if test x$hwloc_freebsd = xyes; then + echo + echo "**** FreeBSD-specific checks" + + AC_CHECK_HEADERS([sys/domainset.h]) + AC_CHECK_HEADERS([sys/thr.h]) + AC_CHECK_HEADERS([pthread_np.h]) + AC_CHECK_HEADERS([sys/cpuset.h],,,[[#include ]]) + AC_CHECK_FUNCS([cpuset_setaffinity]) + AC_CHECK_FUNCS([cpuset_setid]) + + echo "**** end of FreeBSD-specific checks" + echo + fi + + if test x$hwloc_windows = xyes; then + echo + echo "**** Windows-specific checks" + + AC_CHECK_HEADER([windows.h], [ + AC_DEFINE([HWLOC_HAVE_WINDOWS_H], [1], [Define to 1 if you have the `windows.h' header.]) + ]) + + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0601" + AC_CHECK_TYPES([KAFFINITY, + PROCESSOR_CACHE_TYPE, + CACHE_DESCRIPTOR, + LOGICAL_PROCESSOR_RELATIONSHIP, + RelationProcessorPackage, + GROUP_AFFINITY, + PROCESSOR_RELATIONSHIP, + NUMA_NODE_RELATIONSHIP, + CACHE_RELATIONSHIP, + PROCESSOR_GROUP_INFO, + GROUP_RELATIONSHIP, + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, + PSAPI_WORKING_SET_EX_BLOCK, + PSAPI_WORKING_SET_EX_INFORMATION, + PROCESSOR_NUMBER], + [],[],[[#include ]]) + CPPFLAGS="$old_CPPFLAGS" + + AC_CHECK_DECLS([GetModuleFileName], [], [], [#include ]) + + AC_CHECK_LIB([gdi32], [main], + [HWLOC_LIBS="-lgdi32 $HWLOC_LIBS" + AC_DEFINE([HAVE_LIBGDI32], 1, [Define to 1 if we have -lgdi32])]) + AC_CHECK_LIB([user32], [PostQuitMessage], [hwloc_have_user32="yes"]) + + AC_PATH_PROGS([HWLOC_MS_LIB], [lib]) + + echo "**** end of Windows-specific checks" + echo + fi + + if test x$hwloc_solaris = xyes; then + echo + echo "**** Solaris-specific checks" + + AC_CHECK_HEADERS([sys/lgrp_user.h], [ + AC_CHECK_LIB([lgrp], [lgrp_init], + [HWLOC_LIBS="-llgrp $HWLOC_LIBS" + AC_DEFINE([HAVE_LIBLGRP], 1, [Define to 1 if we have -llgrp]) + AC_CHECK_DECLS([lgrp_latency_cookie],,,[[#include ]]) + ]) + ]) + AC_CHECK_HEADERS([kstat.h], [ + AC_CHECK_LIB([kstat], [main], + [HWLOC_LIBS="-lkstat $HWLOC_LIBS" + AC_DEFINE([HAVE_LIBKSTAT], 1, [Define to 1 if we have -lkstat])]) + ]) + + AC_CHECK_HEADERS([picl.h], [ + AC_CHECK_LIB([picl], [picl_initialize], + [HWLOC_LIBS="-lpicl $HWLOC_LIBS"])]) + + echo "**** end of Solaris-specific checks" + echo + fi + + if test x$hwloc_aix = xyes; then + echo + echo "**** AIX-specific checks" + + AC_SEARCH_LIBS([pthread_getthrds_np], [pthread], [ + AC_DEFINE([HWLOC_HAVE_PTHREAD_GETTHRDS_NP], 1, `Define to 1 if you have pthread_getthrds_np') + ]) + + echo "**** end of AIX-specific checks" + echo + fi + + if test x$hwloc_darwin = xyes; then + echo + echo "**** Darwin-specific checks" + + AC_MSG_CHECKING([for the Foundation framework]) + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -framework Foundation" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ +#include + ], [ +return CFDictionaryGetTypeID(); + ])], + [AC_MSG_RESULT(yes) + HWLOC_DARWIN_LDFLAGS="$HWLOC_DARWIN_LDFLAGS -framework Foundation" + AC_DEFINE(HWLOC_HAVE_DARWIN_FOUNDATION, 1, `Define to 1 if you have the Foundation Darwin framework')], + [AC_MSG_RESULT(no)]) + LDFLAGS="$tmp_save_LDFLAGS" + + AC_MSG_CHECKING([for the IOKit framework]) + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -framework IOKit" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ +#include + ], [ +io_registry_entry_t service = IORegistryGetRootEntry(kIOMasterPortDefault); + ])], + [AC_MSG_RESULT(yes) + HWLOC_DARWIN_LDFLAGS="$HWLOC_DARWIN_LDFLAGS -framework IOKit" + AC_DEFINE(HWLOC_HAVE_DARWIN_IOKIT, 1, `Define to 1 if you have the IOKit Darwin framework')], + [AC_MSG_RESULT(no)]) + LDFLAGS="$tmp_save_LDFLAGS" + + AC_SUBST(HWLOC_DARWIN_LDFLAGS) + + echo "**** end of Darwin-specific checks" + echo + fi + + if test x$hwloc_linux = xyes; then + echo + echo "**** Linux-specific checks" + + AC_CHECK_DECLS([sched_getcpu],,[:],[[ + #ifndef _GNU_SOURCE + # define _GNU_SOURCE + #endif + #include + ]]) + + _HWLOC_CHECK_DECL([sched_setaffinity], [ + hwloc_have_sched_setaffinity=yes + AC_DEFINE([HWLOC_HAVE_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides a prototype of sched_setaffinity()]) + AS_IF([test "$HWLOC_STRICT_ARGS_CFLAGS" = "FAIL"],[ + AC_MSG_WARN([Support for sched_setaffinity() requires a C compiler which]) + AC_MSG_WARN([considers incorrect argument counts to be a fatal error.]) + AC_MSG_ERROR([Cannot continue.]) + ]) + AC_MSG_CHECKING([for old prototype of sched_setaffinity]) + hwloc_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $HWLOC_STRICT_ARGS_CFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + #ifndef _GNU_SOURCE + # define _GNU_SOURCE + #endif + #include + static unsigned long mask; + ]], [[ sched_setaffinity(0, (void*) &mask); ]])], + [AC_DEFINE([HWLOC_HAVE_OLD_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides the old prototype (without length) of sched_setaffinity()]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + CFLAGS=$hwloc_save_CFLAGS + ], , [[ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif +#include + ]]) + + AC_MSG_CHECKING([for working CPU_SET]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + #include + cpu_set_t set; + ]], [[ CPU_ZERO(&set); CPU_SET(0, &set);]])], + [AC_DEFINE([HWLOC_HAVE_CPU_SET], [1], [Define to 1 if the CPU_SET macro works]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + AC_MSG_CHECKING([for working CPU_SET_S]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + #include + cpu_set_t *set; + ]], [[ + set = CPU_ALLOC(1024); + CPU_ZERO_S(CPU_ALLOC_SIZE(1024), set); + CPU_SET_S(CPU_ALLOC_SIZE(1024), 0, set); + CPU_FREE(set); + ]])], + [AC_DEFINE([HWLOC_HAVE_CPU_SET_S], [1], [Define to 1 if the CPU_SET_S macro works]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + AC_MSG_CHECKING([for working syscall with 6 parameters]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + #include + #include + ]], [[syscall(0, 1, 2, 3, 4, 5, 6);]])], + [AC_DEFINE([HWLOC_HAVE_SYSCALL], [1], [Define to 1 if function `syscall' is available with 6 parameters]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + # Linux libudev support + if test "x$enable_libudev" != xno; then + AC_CHECK_HEADERS([libudev.h], [ + AC_CHECK_LIB([udev], [udev_device_new_from_subsystem_sysname], [ + HWLOC_LIBS="$HWLOC_LIBS -ludev" + AC_DEFINE([HWLOC_HAVE_LIBUDEV], [1], [Define to 1 if you have libudev.]) + ]) + ]) + fi + + echo "**** end of Linux-specific checks" + echo + fi + + if test "x$hwloc_linux" != "xyes" ; then + # Don't look for sys/sysctl.h on Linux because it's deprecated and + # generates a warning in GCC10. Also it's unneeded. + AC_CHECK_HEADERS([sys/param.h]) + AC_CHECK_HEADERS([sys/sysctl.h], [ + AC_CHECK_DECLS([CTL_HW, HW_NCPU, HW_REALMEM64, HW_MEMSIZE64, HW_PHYSMEM64, HW_USERMEM64, HW_REALMEM, HW_MEMSIZE, HW_PHYSMEM, HW_USERMEM],,,[[ + #if HAVE_SYS_PARAM_H + #include + #endif + #include + ]]) + ],,[ + AC_INCLUDES_DEFAULT + #if HAVE_SYS_PARAM_H + #include + #endif + ]) + + # Don't detect sysctl* on Linux because its sysctl() syscall is + # long deprecated and unneeded. Some libc still expose the symbol + # and raise a big warning at link time. + + # Do a full link test instead of just using AC_CHECK_FUNCS, which + # just checks to see if the symbol exists or not. For example, + # the prototype of sysctl uses u_int, which on some platforms + # (such as FreeBSD) is only defined under __BSD_VISIBLE, __USE_BSD + # or other similar definitions. So while the symbols "sysctl" and + # "sysctlbyname" might still be available in libc (which autoconf + # checks for), they might not be actually usable. + AC_MSG_CHECKING([for sysctl]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #include + #include + #include + ], [ + return sysctl(NULL,0,NULL,NULL,NULL,0); + ])], + [AC_DEFINE([HAVE_SYSCTL],[1],[Define to '1' if sysctl is present and usable]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + AC_MSG_CHECKING([for sysctlbyname]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #include + #include + #include + ], [ + return sysctlbyname(NULL,NULL,NULL,NULL,0); + ])], + [AC_DEFINE([HAVE_SYSCTLBYNAME],[1],[Define to '1' if sysctlbyname is present and usable]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + fi + + AC_CHECK_DECLS([pthread_setaffinity_np],,[:],[[ + #include + #ifdef HAVE_PTHREAD_NP_H + # include + #endif + ]]) + AC_CHECK_DECLS([pthread_getaffinity_np],,[:],[[ + #include + #ifdef HAVE_PTHREAD_NP_H + # include + #endif + ]]) + + AC_CHECK_DECLS([fabsf], [ + AC_CHECK_LIB([m], [fabsf], + [need_libm=yes]) + ], [], [[#include ]]) + AC_CHECK_DECLS([modff], [ + AC_CHECK_LIB([m], [modff], + [need_libm=yes]) + ], [], [[#include ]]) + if test x$need_libm = xyes; then + HWLOC_LIBS="-lm $HWLOC_LIBS" + fi + + AC_CHECK_DECLS([_SC_NPROCESSORS_ONLN, + _SC_NPROCESSORS_CONF, + _SC_NPROC_ONLN, + _SC_NPROC_CONF, + _SC_PAGESIZE, + _SC_PAGE_SIZE, + _SC_LARGE_PAGESIZE],,[:],[[#include ]]) + + AC_CHECK_HEADERS([mach/mach_init.h]) + AC_CHECK_HEADERS([mach_init.h]) + AC_CHECK_HEADERS([mach/mach_host.h], [ + AC_CHECK_FUNCS([host_info]) + ]) + + AC_CHECK_DECLS([strtoull], [], [AC_CHECK_FUNCS([strtoull])], [AC_INCLUDES_DEFAULT]) + + # Needed for Windows in private/misc.h + AC_CHECK_TYPES([ssize_t]) + AC_CHECK_DECLS([snprintf], [], [], [AC_INCLUDES_DEFAULT]) + # strdup and putenv are declared in windows headers but marked deprecated + AC_CHECK_DECLS([_strdup], [], [], [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([_putenv], [], [], [AC_INCLUDES_DEFAULT]) + # Could add mkdir and access for hwloc-gather-cpuid.c on Windows + + broken_snprintf=no + AC_MSG_CHECKING([whether snprintf is correct]) + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +#include +#include + ]], [[ +char buf[7]; +assert(snprintf(buf, 7, "abcdef") == 6); +assert(snprintf(buf, 6, "abcdef") == 6); +assert(snprintf(buf, 5, "abcdef") == 6); +assert(snprintf(buf, 0, "abcdef") == 6); +assert(snprintf(NULL, 0, "abcdef") == 6); +return 0; + ]])], + AC_MSG_RESULT([yes]), + [ + AC_MSG_RESULT([no]) + broken_snprintf=yes + ], [ + AC_MSG_RESULT([don't know (cross-compiling)]) + broken_snprintf=maybe + ]) + + if test x$broken_snprintf = xno; then + AC_DEFINE([HWLOC_HAVE_CORRECT_SNPRINTF], 1, [Define to 1 if snprintf supports NULL output buffer and returns the correct length on truncation]) + fi + + AC_CHECK_DECLS([getprogname], [], [], [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([getexecname], [], [], [AC_INCLUDES_DEFAULT]) + # program_invocation_name and __progname may be available but not exported in headers + AC_MSG_CHECKING([for program_invocation_name]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #ifndef _GNU_SOURCE + # define _GNU_SOURCE + #endif + #include + #include + extern char *program_invocation_name; + ], [ + return printf("%s\n", program_invocation_name); + ])], + [AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], [1], [Define to '1' if program_invocation_name is present and usable]) + AC_MSG_RESULT([yes]) + ], [AC_MSG_RESULT([no])]) + AC_MSG_CHECKING([for __progname]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #include + extern char *__progname; + ], [ + return printf("%s\n", __progname); + ])], + [AC_DEFINE([HAVE___PROGNAME], [1], [Define to '1' if __progname is present and usable]) + AC_MSG_RESULT([yes]) + ],[AC_MSG_RESULT([no])]) + + case ${target} in + *-*-mingw*|*-*-cygwin*) + hwloc_pid_t=HANDLE + hwloc_thread_t=HANDLE + ;; + *) + hwloc_pid_t=pid_t + AC_CHECK_TYPES([pthread_t], [hwloc_thread_t=pthread_t], [:], [[#include ]]) + ;; + esac + AC_DEFINE_UNQUOTED(hwloc_pid_t, $hwloc_pid_t, [Define this to the process ID type]) + if test "x$hwloc_thread_t" != "x" ; then + AC_DEFINE_UNQUOTED(hwloc_thread_t, $hwloc_thread_t, [Define this to the thread ID type]) + fi + + AC_PATH_PROG([BASH], [bash]) + + AC_CHECK_FUNCS([ffs], [ + _HWLOC_CHECK_DECL([ffs],[ + AC_DEFINE([HWLOC_HAVE_DECL_FFS], [1], [Define to 1 if function `ffs' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_FFS], [1], [Define to 1 if you have the `ffs' function.]) + if ( $CC --version | grep gccfss ) >/dev/null 2>&1 ; then + dnl May be broken due to + dnl https://forums.oracle.com/forums/thread.jspa?threadID=1997328 + dnl TODO: a more selective test, since bug may be version dependent. + dnl We can't use AC_TRY_LINK because the failure does not appear until + dnl run/load time and there is currently no precedent for AC_TRY_RUN + dnl use in hwloc. --PHH + dnl For now, we're going with "all gccfss compilers are broken". + dnl Better to be safe and correct; it's not like this is + dnl performance-critical code, after all. + AC_DEFINE([HWLOC_HAVE_BROKEN_FFS], [1], + [Define to 1 if your `ffs' function is known to be broken.]) + fi + ]) + AC_CHECK_FUNCS([ffsl], [ + _HWLOC_CHECK_DECL([ffsl],[ + AC_DEFINE([HWLOC_HAVE_DECL_FFSL], [1], [Define to 1 if function `ffsl' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_FFSL], [1], [Define to 1 if you have the `ffsl' function.]) + ]) + + AC_CHECK_FUNCS([fls], [ + _HWLOC_CHECK_DECL([fls],[ + AC_DEFINE([HWLOC_HAVE_DECL_FLS], [1], [Define to 1 if function `fls' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_FLS], [1], [Define to 1 if you have the `fls' function.]) + ]) + AC_CHECK_FUNCS([flsl], [ + _HWLOC_CHECK_DECL([flsl],[ + AC_DEFINE([HWLOC_HAVE_DECL_FLSL], [1], [Define to 1 if function `flsl' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_FLSL], [1], [Define to 1 if you have the `flsl' function.]) + ]) + + AC_CHECK_FUNCS([clz], [ + _HWLOC_CHECK_DECL([clz],[ + AC_DEFINE([HWLOC_HAVE_DECL_CLZ], [1], [Define to 1 if function `clz' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_CLZ], [1], [Define to 1 if you have the `clz' function.]) + ]) + AC_CHECK_FUNCS([clzl], [ + _HWLOC_CHECK_DECL([clzl],[ + AC_DEFINE([HWLOC_HAVE_DECL_CLZL], [1], [Define to 1 if function `clzl' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_CLZL], [1], [Define to 1 if you have the `clzl' function.]) + ]) + + AS_IF([test "$hwloc_c_vendor" != "android"], [AC_CHECK_FUNCS([openat], [hwloc_have_openat=yes])]) + + AC_CHECK_HEADERS([malloc.h]) + AC_CHECK_FUNCS([getpagesize memalign posix_memalign]) + + AC_CHECK_HEADERS([sys/utsname.h]) + AC_CHECK_FUNCS([uname]) + + # Components and pciaccess require pthread_mutex, see if it needs -lpthread + hwloc_pthread_mutex_happy=no + # Try without explicit -lpthread first + AC_CHECK_FUNC([pthread_mutex_lock], + [hwloc_pthread_mutex_happy=yes + HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE -lpthread" + ], + [AC_MSG_NOTICE([trying again with -lpthread ...]) + # Try again with explicit -lpthread + $as_unset ac_cv_func_pthread_mutex_lock + tmp_save_LIBS=$LIBS + LIBS="$LIBS -lpthread" + AC_CHECK_FUNC([pthread_mutex_lock], + [hwloc_pthread_mutex_happy=yes + HWLOC_LIBS="$HWLOC_LIBS -lpthread" + ]) + LIBS="$tmp_save_LIBS" + ]) + AS_IF([test "x$hwloc_pthread_mutex_happy" = "xyes"], + [AC_DEFINE([HWLOC_HAVE_PTHREAD_MUTEX], 1, [Define to 1 if pthread mutexes are available])]) + + AS_IF([test "x$hwloc_pthread_mutex_happy" != xyes -a "x$hwloc_windows" != xyes], + [AC_MSG_WARN([pthread_mutex_lock not available, required for thread-safe initialization on non-Windows platforms.]) + AC_MSG_WARN([Please report this to the hwloc-devel mailing list.]) + AC_MSG_ERROR([Cannot continue])]) + + dnl Don't check for valgrind in embedded mode because this may conflict + dnl with the embedder projects also checking for it. + dnl We only use Valgrind to nicely disable the x86 backend with a warning, + dnl but we can live without it in embedded mode (it auto-disables itself + dnl because of invalid CPUID outputs). + dnl Non-embedded checks usually go to hwloc_internal.m4 but this one is + dnl is really for the core library. + AS_IF([test "$hwloc_mode" != "embedded"], + [AC_CHECK_HEADERS([valgrind/valgrind.h]) + AC_CHECK_DECLS([RUNNING_ON_VALGRIND],,[:],[[#include ]]) + ],[ + AC_DEFINE([HAVE_DECL_RUNNING_ON_VALGRIND], [0], [Embedded mode; just assume we do not have Valgrind support]) + ]) + + AS_IF([test "x$enable_32bits_pci_domain" = "xyes"], [ + AC_DEFINE([HWLOC_HAVE_32BITS_PCI_DOMAIN], 1, + [Define to 1 if --enable-32bits-pci-domain is called.]) + ]) + + # PCI support via libpciaccess. NOTE: we do not support + # libpci/pciutils because that library is GPL and is incompatible + # with our BSD license. + hwloc_pciaccess_happy=no + if test "x$enable_io" != xno && test "x$enable_pci" != xno; then + echo + echo "**** pciaccess configuration" + + hwloc_pciaccess_happy=yes + HWLOC_PKG_CHECK_MODULES([PCIACCESS], [pciaccess], [pci_slot_match_iterator_create], [pciaccess.h], [:], [hwloc_pciaccess_happy=no]) + + # Only add the REQUIRES if we got pciaccess through pkg-config. + # Otherwise we don't know if pciaccess.pc is installed + AS_IF([test "$hwloc_pciaccess_happy" = "yes"], [HWLOC_PCIACCESS_REQUIRES=pciaccess]) + + # Just for giggles, if we didn't find a pciaccess pkg-config, + # just try looking for its header file and library. + AS_IF([test "$hwloc_pciaccess_happy" != "yes"], + [AC_CHECK_HEADER([pciaccess.h], + [AC_CHECK_LIB([pciaccess], [pci_slot_match_iterator_create], + [hwloc_pciaccess_happy=yes + HWLOC_PCIACCESS_LIBS="-lpciaccess" + AC_SUBST(HWLOC_PCIACCESS_LIBS) + ]) + ]) + ]) + + AS_IF([test "$hwloc_pciaccess_happy" = "yes"], + [hwloc_components="$hwloc_components pci" + hwloc_pci_component_maybeplugin=1]) + + echo "**** end of pciaccess configuration" + fi + # If we asked for pci support but couldn't deliver, fail + AS_IF([test "$enable_pci" = "yes" -a "$hwloc_pciaccess_happy" = "no"], + [AC_MSG_WARN([Specified --enable-pci switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + if test "x$enable_io" != xno && test "x$enable_opencl" != xno -o "x$enable_cuda" != xno -o "x$enable_nvml" != xno; then + echo + echo "**** NVIDIA-common configuration" + + # Try to find CUDA pkg-config using a specific CUDA version + # Use --with-cuda-version first, or $CUDA_VERSION + cuda_version=$CUDA_VERSION + if test "x$with_cuda_version" != xno -a "x$with_cuda_version" != x; then + cuda_version=$with_cuda_version + fi + if test x$cuda_version != x; then + AC_MSG_CHECKING([if cuda-$cuda_version.pc exists]) + HWLOC_PKG_CHECK_EXISTS([cuda-$cuda_version], [ + cudapc=cuda-$cuda_version + AC_MSG_RESULT(yes) + _HWLOC_PKG_CONFIG(cuda_includedir, [variable=includedir], $cudapc) + _HWLOC_PKG_CONFIG(cuda_libdir, [variable=libdir], $cudapc) + ], [AC_MSG_RESULT(no)]) + AC_MSG_CHECKING([if cudart-$cuda_version.pc exists]) + HWLOC_PKG_CHECK_EXISTS([cudart-$cuda_version], [ + cudartpc=cudart-$cuda_version + AC_MSG_RESULT(yes) + ], [AC_MSG_RESULT(no)]) + fi + + # OpenCL/NVML/CUDA may use CUDA directories, define common directories + # libnvidia-ml.so (and libcuda.so for tests) is under stubs + # when the driver isn't installed on the build machine. + # hwloc programs will fail to link if libnvidia-ml.so.1 is not available there too. + if test "x$with_cuda" != xno -a "x$with_cuda" != x; then + AC_MSG_NOTICE([using custom CUDA install path $with_cuda ...]) + if test "x${ac_cv_sizeof_void_p}" = x4; then + HWLOC_CUDA_COMMON_LDFLAGS="-L$with_cuda/lib/ -L$with_cuda/lib/stubs/" + else + HWLOC_CUDA_COMMON_LDFLAGS="-L$with_cuda/lib64/ -L$with_cuda/lib64/stubs/" + fi + HWLOC_CUDA_COMMON_CPPFLAGS="-I$with_cuda/include/" + + else if test x$HWLOC_pkg_cv_cuda_includedir != x -a x$HWLOC_pkg_cv_cuda_libdir != x; then + # or use cuda libdir/includedir from cuda.pc above + AC_MSG_NOTICE([using CUDA libdir and includedir from ${cudapc}.pc ...]) + HWLOC_CUDA_COMMON_LDFLAGS="-L$HWLOC_pkg_cv_cuda_libdir -L$HWLOC_pkg_cv_cuda_libdir/stubs/" + HWLOC_CUDA_COMMON_CPPFLAGS="-I$HWLOC_pkg_cv_cuda_includedir" + + else if test -f /usr/local/cuda/include/cuda.h; then + # or try the default /usr/local/cuda + AC_MSG_NOTICE([using default CUDA install path /usr/local/cuda ...]) + HWLOC_CUDA_COMMON_LDFLAGS="-L/usr/local/cuda/lib64/ -L/usr/local/cuda/lib64/stubs/" + HWLOC_CUDA_COMMON_CPPFLAGS="-I/usr/local/cuda/include/" + fi fi fi + + AC_MSG_NOTICE([common CUDA/OpenCL/NVML CPPFLAGS: $HWLOC_CUDA_COMMON_CPPFLAGS]) + AC_MSG_NOTICE([common CUDA/OpenCL/NVML LDFLAGS: $HWLOC_CUDA_COMMON_LDFLAGS]) + + echo "**** end of NVIDIA-common configuration" + fi + + # CUDA support + hwloc_have_cuda=no + hwloc_have_cudart=no + if test "x$enable_io" != xno && test "x$enable_cuda" != "xno"; then + echo + echo "**** CUDA configuration" + + # Look for CUDA first, for our test only + if test "x$cudapc" != x; then + HWLOC_PKG_CHECK_MODULES([CUDA], [$cudapc], [cuInit], [cuda.h], [hwloc_have_cuda=yes]) + else + HWLOC_CUDA_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS" + HWLOC_CUDA_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS" + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_CUDA_CPPFLAGS" + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_CUDA_LDFLAGS" + AC_CHECK_HEADERS([cuda.h], [ + AC_MSG_CHECKING(if CUDA_VERSION >= 3020) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#ifndef CUDA_VERSION +#error CUDA_VERSION undefined +#elif CUDA_VERSION < 3020 +#error CUDA_VERSION too old +#endif]], [[int i = 3;]])], + [AC_MSG_RESULT(yes) + AC_CHECK_LIB([cuda], [cuInit], [ + HWLOC_CUDA_LIBS="-lcuda" + hwloc_have_cuda=yes + ]) + ], + [AC_MSG_RESULT(no)])]) + CPPFLAGS="$tmp_save_CPPFLAGS" + LDFLAGS="$tmp_save_LDFLAGS" + fi + if test x$hwloc_have_cuda = xyes; then + AC_SUBST(HWLOC_CUDA_CPPFLAGS) + AC_SUBST(HWLOC_CUDA_CFLAGS) + AC_SUBST(HWLOC_CUDA_LIBS) + AC_SUBST(HWLOC_CUDA_LDFLAGS) + AC_DEFINE([HAVE_CUDA], 1, [Define to 1 if we have -lcuda]) + fi + + # Look for CUDART now, for library and tests + if test "x$cudartpc" != x; then + HWLOC_PKG_CHECK_MODULES([CUDART], [$cudartpc], [cudaGetDeviceProperties], [cuda_runtime_api.h], [ + hwloc_have_cudart=yes + HWLOC_CUDART_REQUIRES=$cudartpc + ]) + else + HWLOC_CUDART_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS" + HWLOC_CUDART_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS" + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_CUDART_CPPFLAGS" + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_CUDART_LDFLAGS" + AC_CHECK_HEADERS([cuda_runtime_api.h], [ + AC_MSG_CHECKING(if CUDART_VERSION >= 3020) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#ifndef CUDART_VERSION +#error CUDART_VERSION undefined +#elif CUDART_VERSION < 3020 +#error CUDART_VERSION too old +#endif]], [[int i = 3;]])], + [AC_MSG_RESULT(yes) + AC_CHECK_LIB([cudart], [cudaGetDeviceProperties], [ + HWLOC_CUDART_LIBS="-lcudart" + hwloc_have_cudart=yes + ]) + ]) + ]) + CPPFLAGS="$tmp_save_CPPFLAGS" + LDFLAGS="$tmp_save_LDFLAGS" + fi + if test x$hwloc_have_cudart = xyes; then + AC_MSG_CHECKING([whether a program linked with -lcudart can run]) + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_CUDART_LDFLAGS" + tmp_save_LIBS="$LIBS" + LIBS="$LIBS $HWLOC_CUDART_LIBS" + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +int cudaGetDeviceCount(int *); +]], [[ +int n; +cudaGetDeviceCount(&n); /* may fail if using stubs, but we're looking for libcudart load error instead only */ +return 0; +]] + )], + [AC_MSG_RESULT([yes]) + hwloc_cuda_warning=no], + [AC_MSG_RESULT([no]) + hwloc_cuda_warning=yes], + [AC_MSG_RESULT([don't know (cross-compiling)])]) + LDFLAGS="$tmp_save_LDFLAGS" + LIBS="$tmp_save_LIBS" + AC_SUBST(HWLOC_CUDART_CPPFLAGS) + AC_SUBST(HWLOC_CUDART_CFLAGS) + AC_SUBST(HWLOC_CUDART_LIBS) + AC_SUBST(HWLOC_CUDART_LDFLAGS) + AC_DEFINE([HWLOC_HAVE_CUDART], [1], [Define to 1 if you have the `cudart' SDK.]) + fi + + AS_IF([test "$enable_cuda" = "yes" -a "$hwloc_have_cudart" = "no"], + [AC_MSG_WARN([Specified --enable-cuda switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + AS_IF([test "x$with_cuda_version" != x -a "$hwloc_have_cudart" = "no"], + [AC_MSG_WARN([Specified --with-cuda-version switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + + if test "x$hwloc_have_cudart" = "xyes"; then + hwloc_components="$hwloc_components cuda" + hwloc_cuda_component_maybeplugin=1 + fi + + echo "**** end of CUDA configuration" + fi + # don't add LIBS/CFLAGS yet, depends on plugins + + # NVML support + hwloc_nvml_happy=no + hwloc_nvml_warning=no + if test "x$enable_io" != xno && test "x$enable_nvml" != "xno"; then + echo + echo "**** NVML configuration" + + hwloc_nvml_happy=yes + HWLOC_NVML_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS" + HWLOC_NVML_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS" + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_NVML_CPPFLAGS" + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_NVML_LDFLAGS" + tmp_save_LIBS="$LIBS" + AC_CHECK_HEADERS([nvml.h], [ + AC_CHECK_LIB([nvidia-ml], + [nvmlInit], + [AC_MSG_CHECKING([whether a program linked with -lnvidia-ml can run]) + HWLOC_NVML_LIBS="-lnvidia-ml" + LIBS="$LIBS $HWLOC_NVML_LIBS" + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +char nvmlInit (); +]], [[ + return nvmlInit (); +]] + )], + [AC_MSG_RESULT([yes]) + hwloc_nvml_warning=no], + [AC_MSG_RESULT([no]) + hwloc_nvml_warning=yes], + [AC_MSG_RESULT([don't know (cross-compiling)]) + hwloc_nvml_happy=maybe])], + [hwloc_nvml_happy=no]) + ], [hwloc_nvml_happy=no]) + LIBS="$tmp_save_LIBS" + CPPFLAGS="$tmp_save_CPPFLAGS" + LDFLAGS="$tmp_save_LDFLAGS" + + if test "x$hwloc_nvml_happy" = "xyes"; then + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_NVML_CPPFLAGS" + AC_CHECK_DECLS([nvmlDeviceGetMaxPcieLinkGeneration],,[:],[[#include ]]) + CPPFLAGS="$tmp_save_CPPFLAGS" + fi + + echo "**** end of NVML configuration" + fi + AC_SUBST(HWLOC_NVML_LIBS) + AC_SUBST(HWLOC_NVML_LDFLAGS) + AC_SUBST(HWLOC_NVML_CPPFLAGS) + # If we asked for nvml support but couldn't deliver, fail + AS_IF([test "$enable_nvml" = "yes" -a "$hwloc_nvml_happy" = "no"], + [AC_MSG_WARN([Specified --enable-nvml switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + if test "x$hwloc_nvml_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_NVML], [1], [Define to 1 if you have the `NVML' library.]) + AC_SUBST([HWLOC_HAVE_NVML], [1]) + hwloc_components="$hwloc_components nvml" + hwloc_nvml_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_NVML], [0]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # RSMI support, rocm_smi64 is just library name and not related to 32/64 bits + hwloc_rsmi_happy=no + if test "x$enable_io" != xno && test "x$enable_rsmi" != "xno"; then + echo + echo "**** RSMI configuration" + + # Try to find the ROCm default path a specific ROCm version + # Use --with-rocm-version first, or $CUDA_VERSION + rocm_version=$ROCM_VERSION + if test "x$with_rocm_version" != xno -a "x$with_rocm_version" != x; then + rocm_version=$with_rocm_version + fi + if test "x$with_rocm" != x -a "x$with_rocm" != xyes; then + rocm_dir=$with_rocm + AC_MSG_NOTICE([using custom ROCm install path $rocm_dir ...]) + else if test "x$rocm_version" != x; then + rocm_dir=/opt/rocm-${rocm_version} + AC_MSG_NOTICE([assuming ROCm $rocm_version is installed in $rocm_dir ...]) + else if test -d /opt/rocm; then + rocm_dir=/opt/rocm + AC_MSG_NOTICE([using standard ROCm install path $rocm_dir ...]) + else + AC_MSG_NOTICE([assuming ROCm is installed in standard directories ...]) + fi fi fi + if test "x$rocm_dir" != x; then + HWLOC_RSMI_CPPFLAGS="-I$rocm_dir/rocm_smi/include/" + HWLOC_RSMI_LDFLAGS="-L$rocm_dir/rocm_smi/lib/" + fi + + hwloc_rsmi_happy=yes + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_RSMI_CPPFLAGS" + AC_CHECK_HEADERS([rocm_smi/rocm_smi.h], [ + LDFLAGS_save="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_RSMI_LDFLAGS" + LIBS_save="$LIBS" + AC_CHECK_LIB([rocm_smi64], + [rsmi_init], + [AC_MSG_CHECKING([whether a program linked with -lrocm_smi64 can run]) + HWLOC_RSMI_LIBS="-lrocm_smi64" + LIBS="$LIBS $HWLOC_RSMI_LIBS" + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +char rsmi_init(int); +]], [[ +return rsmi_init(0); +]] + )], + [AC_MSG_RESULT([yes]) + hwloc_rsmi_warning=no], + [AC_MSG_RESULT([no]) + hwloc_rsmi_warning=yes], + [AC_MSG_RESULT([don't know (cross-compiling)])])], + [hwloc_rsmi_happy=no]) + LDFLAGS="$LDFLAGS_save" + LIBS="$LIBS_save" + ], [hwloc_rsmi_happy=no]) + CPPFLAGS="$CPPFLAGS_save" + + echo "**** end of RSMI configuration" + fi + AC_SUBST(HWLOC_RSMI_CPPFLAGS) + AC_SUBST(HWLOC_RSMI_LDFLAGS) + AC_SUBST(HWLOC_RSMI_LIBS) + # If we asked for rsmi support but couldn't deliver, fail + AS_IF([test "$enable_rsmi" = "yes" -a "$hwloc_rsmi_happy" = "no"], + [AC_MSG_WARN([Specified --enable-rsmi switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + if test "x$hwloc_rsmi_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_RSMI], [1], [Define to 1 if you have the `RSMI' library.]) + AC_SUBST([HWLOC_HAVE_RSMI], [1]) + hwloc_components="$hwloc_components rsmi" + hwloc_rsmi_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_RSMI], [0]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # OpenCL support + hwloc_opencl_happy=no + if test "x$enable_io" != xno && test "x$enable_opencl" != "xno"; then + echo + echo "**** OpenCL configuration" + + hwloc_opencl_happy=yes + case ${target} in + *-*-darwin*) + # On Darwin, only use the OpenCL framework + AC_CHECK_HEADERS([OpenCL/cl_ext.h], [ + AC_MSG_CHECKING([for the OpenCL framework]) + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -framework OpenCL" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ +#include + ]], [[ +return clGetDeviceIDs(0, 0, 0, NULL, NULL); + ]])], + [AC_MSG_RESULT(yes) + HWLOC_OPENCL_LDFLAGS="-framework OpenCL"], + [AC_MSG_RESULT(no) + hwloc_opencl_happy=no]) + LDFLAGS="$tmp_save_LDFLAGS" + ], [hwloc_opencl_happy=no]) + ;; + *) + # On Others, look for OpenCL at normal locations + HWLOC_OPENCL_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS" + HWLOC_OPENCL_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS" + if test "x$rocm_dir" != x; then + HWLOC_OPENCL_CPPFLAGS="$HWLOC_OPENCL_CPPFLAGS -I$rocm_dir/opencl/include/" + HWLOC_OPENCL_LDFLAGS="$HWLOC_OPENCL_LDFLAGS -L$rocm_dir/opencl/lib/" + fi + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_OPENCL_CPPFLAGS" + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_OPENCL_LDFLAGS" + AC_CHECK_HEADERS([CL/cl_ext.h], [ + AC_CHECK_LIB([OpenCL], [clGetDeviceIDs], [HWLOC_OPENCL_LIBS="-lOpenCL"], [hwloc_opencl_happy=no]) + ], [hwloc_opencl_happy=no]) + CPPFLAGS="$tmp_save_CPPFLAGS" + LDFLAGS="$tmp_save_LDFLAGS" + ;; + esac + + echo "**** end of OpenCL configuration" + fi + AC_SUBST(HWLOC_OPENCL_CPPFLAGS) + AC_SUBST(HWLOC_OPENCL_LIBS) + AC_SUBST(HWLOC_OPENCL_LDFLAGS) + # If we asked for opencl support but couldn't deliver, fail + AS_IF([test "$enable_opencl" = "yes" -a "$hwloc_opencl_happy" = "no"], + [AC_MSG_WARN([Specified --enable-opencl switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + if test "x$hwloc_opencl_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_OPENCL], [1], [Define to 1 if you have the `OpenCL' library.]) + AC_SUBST([HWLOC_HAVE_OPENCL], [1]) + hwloc_components="$hwloc_components opencl" + hwloc_opencl_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_OPENCL], [0]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # LevelZero support + hwloc_levelzero_happy=no + if test "x$enable_io" != xno && test "x$enable_levelzero" != "xno"; then + echo + echo "**** LevelZero configuration" + + HWLOC_PKG_CHECK_MODULES([LEVELZERO], [libze_loader], [zesDevicePciGetProperties], [level_zero/zes_api.h], + [hwloc_levelzero_happy=yes + HWLOC_LEVELZERO_REQUIRES=libze_loader + ], [hwloc_levelzero_happy=no]) + if test x$hwloc_levelzero_happy = xno; then + hwloc_levelzero_happy=yes + AC_CHECK_HEADERS([level_zero/ze_api.h], [ + AC_CHECK_LIB([ze_loader], [zeInit], [ + AC_CHECK_HEADERS([level_zero/zes_api.h], [ + AC_CHECK_LIB([ze_loader], [zesDevicePciGetProperties], [HWLOC_LEVELZERO_LIBS="-lze_loader"], [hwloc_levelzero_happy=no]) + ], [hwloc_levelzero_happy=no]) + ], [hwloc_levelzero_happy=no]) + ], [hwloc_levelzero_happy=no]) + fi + + echo "**** end of LevelZero configuration" + fi + AC_SUBST(HWLOC_LEVELZERO_LIBS) + # If we asked for LevelZero support but couldn't deliver, fail + AS_IF([test "$enable_levelzero" = "yes" -a "$hwloc_levelzero_happy" = "no"], + [AC_MSG_WARN([Specified --enable-levelzero switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + if test "x$hwloc_levelzero_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_LEVELZERO], [1], [Define to 1 if you have the `LevelZero' library.]) + AC_SUBST([HWLOC_HAVE_LEVELZERO], [1]) + hwloc_components="$hwloc_components levelzero" + hwloc_levelzero_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_LEVELZERO], [0]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # GL Support + hwloc_gl_happy=no + if test "x$enable_io" != xno && test "x$enable_gl" != "xno"; then + echo + echo "**** NVIDIA GL configuration" + + hwloc_gl_happy=yes + + # some X11 support (less then lstopo in hwloc_internal.m4) + AC_PATH_XTRA + + CPPFLAGS_save=$CPPFLAGS + LIBS_save=$LIBS + + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" + AC_CHECK_HEADERS([X11/Xlib.h], + [AC_CHECK_LIB([X11], [XOpenDisplay], + [hwloc_enable_X11=yes]) + ]) + CPPFLAGS=$CPPFLAGS_save + LIBS=$LIBS_save + + AS_IF([test "$hwloc_enable_X11" != "yes"], + [AC_MSG_WARN([X11 not found; GL disabled]) + hwloc_gl_happy=no]) + + AC_CHECK_HEADERS([NVCtrl/NVCtrl.h], [ + AC_CHECK_LIB([XNVCtrl], [XNVCTRLQueryTargetAttribute], [:], [hwloc_gl_happy=no], [-lXext]) + ], [hwloc_gl_happy=no]) + + if test "x$hwloc_gl_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_GL], [1], [Define to 1 if you have the GL module components.]) + HWLOC_GL_LIBS="-lXNVCtrl -lXext -lX11" + AC_SUBST(HWLOC_GL_LIBS) + # FIXME we actually don't know if xext.pc and x11.pc are installed + # since we didn't look for Xext and X11 using pkg-config + HWLOC_GL_REQUIRES="xext x11" + hwloc_have_gl=yes + hwloc_components="$hwloc_components gl" + hwloc_gl_component_maybeplugin=1 + else + AS_IF([test "$enable_gl" = "yes"], [ + AC_MSG_WARN([Specified --enable-gl switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue]) + ]) + fi + + echo "**** end of NVIDIA GL configuration" + fi + # don't add LIBS/CFLAGS yet, depends on plugins + + # libxml2 support + hwloc_libxml2_happy= + if test "x$enable_libxml2" != "xno"; then + echo + echo "**** libxml2 configuration" + + HWLOC_PKG_CHECK_MODULES([LIBXML2], [libxml-2.0], [xmlNewDoc], [libxml/parser.h], + [hwloc_libxml2_happy=yes], + [hwloc_libxml2_happy=no]) + + echo "**** end of libxml2 configuration" + fi + if test "x$hwloc_libxml2_happy" = "xyes"; then + HWLOC_LIBXML2_REQUIRES="libxml-2.0" + AC_DEFINE([HWLOC_HAVE_LIBXML2], [1], [Define to 1 if you have the `libxml2' library.]) + AC_SUBST([HWLOC_HAVE_LIBXML2], [1]) + + hwloc_components="$hwloc_components xml_libxml" + hwloc_xml_libxml_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_LIBXML2], [0]) + AS_IF([test "$enable_libxml2" = "yes"], + [AC_MSG_WARN([--enable-libxml2 requested, but libxml2 was not found]) + AC_MSG_ERROR([Cannot continue])]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # Try to compile the x86 cpuid inlines + if test "x$enable_cpuid" != "xno"; then + echo + echo "**** x86 CPUID configuration" + + AC_MSG_CHECKING([for x86 cpuid]) + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I$HWLOC_top_srcdir/include" + # We need hwloc_uint64_t but we can't use autogen/config.h before configure ends. + # So pass #include/#define manually here for now. + CPUID_CHECK_HEADERS= + CPUID_CHECK_DEFINE= + if test "x$hwloc_windows" = xyes; then + X86_CPUID_CHECK_HEADERS="#include " + X86_CPUID_CHECK_DEFINE="#define hwloc_uint64_t DWORDLONG" + else + X86_CPUID_CHECK_DEFINE="#define hwloc_uint64_t uint64_t" + if test "x$ac_cv_header_stdint_h" = xyes; then + X86_CPUID_CHECK_HEADERS="#include " + fi + fi + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + $X86_CPUID_CHECK_HEADERS + $X86_CPUID_CHECK_DEFINE + #define __hwloc_inline + #include + ]], [[ + if (hwloc_have_x86_cpuid()) { + unsigned eax = 0, ebx, ecx = 0, edx; + hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx); + printf("highest x86 cpuid %x\n", eax); + return 0; + } + ]])], + [AC_MSG_RESULT([yes]) + AC_DEFINE(HWLOC_HAVE_X86_CPUID, 1, [Define to 1 if you have x86 cpuid]) + hwloc_have_x86_cpuid=yes], + [AC_MSG_RESULT([no])]) + if test "x$hwloc_have_x86_cpuid" = xyes; then + hwloc_components="$hwloc_components x86" + fi + CPPFLAGS="$old_CPPFLAGS" + + echo "**** end of x86 CPUID configuration" + fi + + # + # Now enable registration of listed components + # + echo + echo "**** component and plugin-specific configuration" + + # Plugin support + AC_MSG_CHECKING([if plugin support is enabled]) + # Plugins (even core support) are totally disabled by default. + # Pass --enable-plugins=foo (with "foo" NOT an existing component) to enable plugins but build none of them. + if test "x$enable_plugins" = xyes; then + hwloc_have_plugins=yes + requested_plugins="$hwloc_components" + else if test "x$enable_plugins" != xno -a "x$enable_plugins" != x; then + hwloc_have_plugins=yes + requested_plugins=`echo $enable_plugins | sed -e 's/,/ /g'` + else + hwloc_have_plugins=no + fi fi + AC_MSG_RESULT($hwloc_have_plugins) + + if test "x$hwloc_have_plugins" = xyes; then + # dlopen and ltdl (at least 2.4.2) doesn't work on AIX + # posix linkers don't work well with plugins and windows dll constraints + if test "x$enable_plugin_dlopen" = x; then + if test "x$hwloc_aix" = "xyes"; then + AC_MSG_WARN([dlopen does not work on AIX, disabled by default.]) + enable_plugin_dlopen=no + else if test "x$hwloc_windows" = "xyes"; then + AC_MSG_WARN([dlopen not supported on non-native Windows build, disabled by default.]) + enable_plugin_dlopen=no + fi fi + fi + if test "x$enable_plugin_ltdl" = x; then + if test "x$hwloc_aix" = "xyes"; then + AC_MSG_WARN([ltdl does not work on AIX, disabled by default.]) + enable_plugin_dlopen=no + else if test "x$hwloc_windows" = "xyes"; then + AC_MSG_WARN([ltdl not supported on non-native Windows build, disabled by default.]) + enable_plugin_dlopen=no + fi fi + fi + + # Look for dlopen + if test "x$enable_plugin_dlopen" != xno; then + HWLOC_CHECK_DLOPEN([hwloc_dlopen_ready], [hwloc_dlopen_libs]) + fi + # Look for ltdl + if test "x$enable_plugin_ltdl" != xno; then + HWLOC_CHECK_LTDL([hwloc_ltdl_ready], [hwloc_ltdl_libs]) + fi + + # Now use dlopen by default, or ltdl, or just fail to enable plugins + AC_MSG_CHECKING([which library to use for loading plugins]) + if test "x$hwloc_dlopen_ready" = xyes; then + AC_MSG_RESULT([dlopen]) + hwloc_plugins_load=dlopen + # Now enable dlopen libs + HWLOC_DL_LIBS="$hwloc_dlopen_libs" + AC_SUBST(HWLOC_DL_LIBS) + else if test x$hwloc_ltdl_ready = xyes; then + AC_MSG_RESULT([ltdl]) + hwloc_plugins_load=ltdl + # Now enable ltdl libs + AC_DEFINE([HWLOC_HAVE_LTDL], 1, [Define to 1 if the hwloc library should use ltdl for loading plugins]) + HWLOC_LTDL_LIBS="$hwloc_ltdl_libs" + AC_SUBST(HWLOC_LTDL_LIBS) + # Add ltdl static-build dependencies to hwloc.pc + HWLOC_CHECK_LTDL_DEPS + else + AC_MSG_RESULT([none]) + AC_MSG_WARN([Plugin support requested, but could not enable dlopen or ltdl]) + AC_MSG_ERROR([Cannot continue]) + fi fi + + AC_DEFINE([HWLOC_HAVE_PLUGINS], 1, [Define to 1 if the hwloc library should support dynamically-loaded plugins]) + fi + + AC_ARG_WITH([hwloc-plugins-path], + AS_HELP_STRING([--with-hwloc-plugins-path=dir:...], + [Colon-separated list of plugin directories. Default: "$prefix/lib/hwloc". Plugins will be installed in the first directory. They will be loaded from all of them, in order.]), + [HWLOC_PLUGINS_PATH="$with_hwloc_plugins_path"], + [HWLOC_PLUGINS_PATH="\$(libdir)/hwloc"]) + AC_SUBST(HWLOC_PLUGINS_PATH) + HWLOC_PLUGINS_DIR=`echo "$HWLOC_PLUGINS_PATH" | cut -d: -f1` + AC_SUBST(HWLOC_PLUGINS_DIR) + + # Static components output file + hwloc_static_components_dir=${HWLOC_top_builddir}/hwloc + mkdir -p "${hwloc_static_components_dir}" + hwloc_static_components_file=${hwloc_static_components_dir}/static-components.h + rm -f "${hwloc_static_components_file}" + + HWLOC_PREPARE_FILTER_COMPONENTS([$requested_plugins]) + # Now we have some hwloc__component_wantplugin=1 + + # See which core components want plugin and support it + HWLOC_FILTER_COMPONENTS + # Now we have some hwloc__component=plugin/static + # and hwloc_static/plugin_components=list (space separated) + AC_MSG_CHECKING([components to build statically]) + AC_MSG_RESULT($hwloc_static_components) + HWLOC_LIST_STATIC_COMPONENTS(["$hwloc_static_components_file"], [$hwloc_static_components]) + AC_MSG_CHECKING([components to build as plugins]) + AC_MSG_RESULT([$hwloc_plugin_components]) + + AS_IF([test "$hwloc_pci_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_PCIACCESS_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_PCIACCESS_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_PCIACCESS_CPPFLAGS $HWLOC_PCIACCESS_CFLAGS" + HWLOC_REQUIRES="$HWLOC_PCIACCESS_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_PCI_COMPONENT_BUILTIN], 1, [Define if the PCI component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_opencl_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_OPENCL_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_OPENCL_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_OPENCL_CPPFLAGS $HWLOC_OPENCL_CFLAGS" + HWLOC_REQUIRES="$HWLOC_OPENCL_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_OPENCL_COMPONENT_BUILTIN], 1, [Define if the OpenCL component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_cuda_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_CUDART_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_CUDART_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_CUDART_CPPFLAGS $HWLOC_CUDART_CFLAGS" + HWLOC_REQUIRES="$HWLOC_CUDART_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_CUDA_COMPONENT_BUILTIN], 1, [Define if the CUDA component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_nvml_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_NVML_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_NVML_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_NVML_CPPFLAGS $HWLOC_NVML_CFLAGS" + HWLOC_REQUIRES="$HWLOC_NVML_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_NVML_COMPONENT_BUILTIN], 1, [Define if the NVML component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_rsmi_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_RSMI_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_RSMI_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_RSMI_CPPFLAGS $HWLOC_RSMI_CFLAGS" + HWLOC_REQUIRES="$HWLOC_RSMI_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_RSMI_COMPONENT_BUILTIN], 1, [Define if the RSMI component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_levelzero_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LEVELZERO_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_LEVELZERO_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_LEVELZERO_CPPFLAGS $HWLOC_LEVELZERO_CFLAGS" + HWLOC_REQUIRES="$HWLOC_LEVELZERO_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_LEVELZERO_COMPONENT_BUILTIN], 1, [Define if the LevelZero component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_gl_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_GL_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_GL_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_GL_CPPFLAGS $HWLOC_GL_CFLAGS" + HWLOC_REQUIRES="$HWLOC_GL_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_GL_COMPONENT_BUILTIN], 1, [Define if the GL component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_xml_libxml_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LIBXML2_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_LIBXML2_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_LIBXML2_CPPFLAGS $HWLOC_LIBXML2_CFLAGS" + HWLOC_REQUIRES="$HWLOC_LIBXML2_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_XML_LIBXML_COMPONENT_BUILTIN], 1, [Define if the libxml XML component is built statically inside libhwloc])]) + + echo "**** end of component and plugin configuration" + + # + # Setup HWLOC's C, CPP, and LD flags, and LIBS + # + AC_SUBST(HWLOC_REQUIRES) + AC_SUBST(HWLOC_CFLAGS) + HWLOC_CPPFLAGS='-I"$(HWLOC_top_builddir)"/include -I"$(HWLOC_top_srcdir)"/include' + AC_SUBST(HWLOC_CPPFLAGS) + AC_SUBST(HWLOC_LDFLAGS) + AC_SUBST(HWLOC_LIBS) + AC_SUBST(HWLOC_LIBS_PRIVATE) + + # Set these values explicitly for embedded builds. Exporting + # these values through *_EMBEDDED_* values gives us the freedom to + # do something different someday if we ever need to. There's no + # need to fill these values in unless we're in embedded mode. + # Indeed, if we're building in embedded mode, we want HWLOC_LIBS + # to be empty so that nothing is linked into libhwloc_embedded.la + # itself -- only the upper-layer will link in anything required. + + AS_IF([test "$hwloc_mode" = "embedded"], + [HWLOC_EMBEDDED_CFLAGS=$HWLOC_CFLAGS + HWLOC_EMBEDDED_CPPFLAGS=$HWLOC_CPPFLAGS + HWLOC_EMBEDDED_LDFLAGS=$HWLOC_LDFLAGS + HWLOC_EMBEDDED_LDADD='$(HWLOC_top_builddir)/hwloc/libhwloc_embedded.la' + HWLOC_EMBEDDED_LIBS=$HWLOC_LIBS + HWLOC_LIBS=]) + AC_SUBST(HWLOC_EMBEDDED_CFLAGS) + AC_SUBST(HWLOC_EMBEDDED_CPPFLAGS) + AC_SUBST(HWLOC_EMBEDDED_LDFLAGS) + AC_SUBST(HWLOC_EMBEDDED_LDADD) + AC_SUBST(HWLOC_EMBEDDED_LIBS) + + # Always generate these files + AC_CONFIG_FILES( + hwloc_config_prefix[Makefile] + hwloc_config_prefix[include/Makefile] + hwloc_config_prefix[hwloc/Makefile] + ) + + # Cleanup + AC_LANG_POP + + # Success + $2 +])dnl + +#----------------------------------------------------------------------- + +# Specify the symbol prefix +AC_DEFUN([HWLOC_SET_SYMBOL_PREFIX],[ + hwloc_symbol_prefix_value=$1 +])dnl + +#----------------------------------------------------------------------- + +# This must be a standalone routine so that it can be called both by +# HWLOC_INIT and an external caller (if HWLOC_INIT is not invoked). +AC_DEFUN([HWLOC_DO_AM_CONDITIONALS],[ + AS_IF([test "$hwloc_did_am_conditionals" != "yes"],[ + AM_CONDITIONAL([HWLOC_BUILD_STANDALONE], [test "$hwloc_mode" = "standalone"]) + + AM_CONDITIONAL([HWLOC_HAVE_GCC], [test "x$GCC" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_MS_LIB], [test "x$HWLOC_MS_LIB" != "x"]) + AM_CONDITIONAL([HWLOC_HAVE_OPENAT], [test "x$hwloc_have_openat" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_SCHED_SETAFFINITY], + [test "x$hwloc_have_sched_setaffinity" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_PTHREAD], + [test "x$hwloc_have_pthread" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_LINUX_LIBNUMA], + [test "x$hwloc_have_linux_libnuma" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_LIBIBVERBS], + [test "x$hwloc_have_libibverbs" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_CUDA], + [test "x$hwloc_have_cuda" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_GL], + [test "x$hwloc_have_gl" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_CUDART], + [test "x$hwloc_have_cudart" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_LIBXML2], [test "$hwloc_libxml2_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_CAIRO], [test "$hwloc_cairo_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_PCIACCESS], [test "$hwloc_pciaccess_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_OPENCL], [test "$hwloc_opencl_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_NVML], [test "$hwloc_nvml_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_RSMI], [test "$hwloc_rsmi_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_LEVELZERO], [test "$hwloc_levelzero_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_BUNZIPP], [test "x$BUNZIPP" != "xfalse"]) + AM_CONDITIONAL([HWLOC_HAVE_USER32], [test "x$hwloc_have_user32" = "xyes"]) + + AM_CONDITIONAL([HWLOC_BUILD_DOXYGEN], + [test "x$hwloc_generate_doxs" = "xyes"]) + AM_CONDITIONAL([HWLOC_BUILD_README], + [test "x$hwloc_generate_readme" = "xyes" -a \( "x$hwloc_install_doxs" = "xyes" -o "x$hwloc_generate_doxs" = "xyes" \) ]) + AM_CONDITIONAL([HWLOC_INSTALL_DOXYGEN], + [test "x$hwloc_install_doxs" = "xyes"]) + + AM_CONDITIONAL([HWLOC_HAVE_LINUX], [test "x$hwloc_linux" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_BGQ], [test "x$hwloc_bgq" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_IRIX], [test "x$hwloc_irix" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_DARWIN], [test "x$hwloc_darwin" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_FREEBSD], [test "x$hwloc_freebsd" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_NETBSD], [test "x$hwloc_netbsd" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_SOLARIS], [test "x$hwloc_solaris" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_AIX], [test "x$hwloc_aix" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_HPUX], [test "x$hwloc_hpux" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_WINDOWS], [test "x$hwloc_windows" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_MINGW32], [test "x$target_os" = "xmingw32"]) + + AM_CONDITIONAL([HWLOC_HAVE_X86], [test "x$hwloc_x86_32" = "xyes" -o "x$hwloc_x86_64" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_X86_32], [test "x$hwloc_x86_32" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_X86_64], [test "x$hwloc_x86_64" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_X86_CPUID], [test "x$hwloc_have_x86_cpuid" = "xyes"]) + + AM_CONDITIONAL([HWLOC_HAVE_32BITS_PCI_DOMAIN], [test "x$enable_32bits_pci_domain" = "xyes"]) + + AM_CONDITIONAL([HWLOC_HAVE_PLUGINS], [test "x$hwloc_have_plugins" = "xyes"]) + AM_CONDITIONAL([HWLOC_PCI_BUILD_STATIC], [test "x$hwloc_pci_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_OPENCL_BUILD_STATIC], [test "x$hwloc_opencl_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_CUDA_BUILD_STATIC], [test "x$hwloc_cuda_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_NVML_BUILD_STATIC], [test "x$hwloc_nvml_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_RSMI_BUILD_STATIC], [test "x$hwloc_rsmi_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_LEVELZERO_BUILD_STATIC], [test "x$hwloc_levelzero_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_GL_BUILD_STATIC], [test "x$hwloc_gl_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_XML_LIBXML_BUILD_STATIC], [test "x$hwloc_xml_libxml_component" = "xstatic"]) + + AM_CONDITIONAL([HWLOC_HAVE_CXX], [test "x$hwloc_have_cxx" = "xyes"]) + ]) + hwloc_did_am_conditionals=yes + + # For backwards compatibility (i.e., packages that only call + # HWLOC_DO_AM_CONDITIONS, not NETLOC DO_AM_CONDITIONALS), we also have to + # do the netloc AM conditionals here + NETLOC_DO_AM_CONDITIONALS +])dnl + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_DECL +dnl +dnl Check that the declaration of the given function has a complete prototype +dnl with argument list by trying to call it with an insane dnl number of +dnl arguments (10). Success means the compiler couldn't really check. +AC_DEFUN([_HWLOC_CHECK_DECL], [ + AC_CHECK_DECL([$1], [ + AC_MSG_CHECKING([whether function $1 has a complete prototype]) + AC_REQUIRE([AC_PROG_CC]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [AC_INCLUDES_DEFAULT([$4])], + [$1(1,2,3,4,5,6,7,8,9,10);] + )], + [AC_MSG_RESULT([no]) + $3], + [AC_MSG_RESULT([yes]) + $2] + )], [$3], $4 + ) +]) + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_DECLS +dnl +dnl Same as HWLOCK_CHECK_DECL, but defines HAVE_DECL_foo to 1 or 0 depending on +dnl the result. +AC_DEFUN([_HWLOC_CHECK_DECLS], [ + HWLOC_CHECK_DECL([$1], [ac_have_decl=1], [ac_have_decl=0], [$4]) + AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_DECL_$1]), [$ac_have_decl], + [Define to 1 if you have the declaration of `$1', and to 0 if you don't]) +]) + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_DLOPEN +dnl +dnl set $1 to yes or not +dnl set $2 to -ldl or so +AC_DEFUN([HWLOC_CHECK_DLOPEN], [ + [$1]=no + AC_MSG_CHECKING([for dlopen]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + #include + #include + void *handle; + ]], [[ + handle = dlopen(NULL, RTLD_NOW|RTLD_LOCAL); + ]])], + [AC_MSG_RESULT([yes]) + [$1]=yes], + [AC_MSG_RESULT([no]) + AC_CHECK_HEADER([dlfcn.h], + [AC_CHECK_LIB([dl], [dlopen], + [[$1]=yes + [$2]=-ldl]) + ]) + ]) +]) + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_LTDL +dnl +dnl set $1 to yes or not +dnl set $2 to -lltdl or so +AC_DEFUN([HWLOC_CHECK_LTDL], [ + [$1]=no + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_LIB([ltdl], [lt_dlopenext], + [[$1]=yes + [$2]=-lltdl]) + ]) +]) + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_LTDL_DEPS +dnl +dnl Add ltdl dependencies to HWLOC_LIBS_PRIVATE +AC_DEFUN([HWLOC_CHECK_LTDL_DEPS], [ + # save variables that we'll modify below + save_lt_cv_dlopen="$lt_cv_dlopen" + save_lt_cv_dlopen_libs="$lt_cv_dlopen_libs" + save_lt_cv_dlopen_self="$lt_cv_dlopen_self" + ########################################################### + # code stolen from LT_SYS_DLOPEN_SELF in libtool.m4 + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + # end of code stolen from LT_SYS_DLOPEN_SELF in libtool.m4 + ########################################################### + + HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE $lt_cv_dlopen_libs" + + # restore modified variable in case the actual libtool code uses them + lt_cv_dlopen="$save_lt_cv_dlopen" + lt_cv_dlopen_libs="$save_lt_cv_dlopen_libs" + lt_cv_dlopen_self="$save_lt_cv_dlopen_self" +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4 new file mode 100644 index 0000000000..5062beb4dd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4 @@ -0,0 +1,555 @@ +# This macro set originally copied from Open MPI: +# Copyright © 2004-2007 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright © 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright © 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright © 2004-2005 The Regents of the University of California. +# All rights reserved. +# and renamed for hwloc: +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009 Université Bordeaux +# Copyright © 2010 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# - Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# - Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer listed +# in this license in the documentation and/or other materials +# provided with the distribution. +# +# - Neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# The copyright holders provide no reassurances that the source code +# provided does not infringe any patent, copyright, or any other +# intellectual property rights of third parties. The copyright holders +# disclaim any liability to any recipient for claims brought against +# recipient by any third party for infringement of that parties +# intellectual property rights. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# +# Search the generated warnings for +# keywords regarding skipping or ignoring certain attributes +# Intel: ignore +# Sun C++: skip +# +AC_DEFUN([_HWLOC_ATTRIBUTE_FAIL_SEARCH],[ + # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) + m4_ifdef([AC_PROG_GREP], + [AC_REQUIRE([AC_PROG_GREP])], + [GREP=grep]) + + if test -s conftest.err ; then + for i in ignore skip ; do + $GREP -iq $i conftest.err + if test "$?" = "0" ; then + hwloc_cv___attribute__[$1]=0 + break; + fi + done + fi +]) + +# +# HWLOC: Remove C++ compiler check. It can result in a circular +# dependency in embedded situations. +# +# Check for one specific attribute by compiling with C +# and possibly using a cross-check. +# +# If the cross-check is defined, a static function "usage" should be +# defined, which is to be called from main (to circumvent warnings +# regarding unused function in main file) +# static int usage (int * argument); +# +# The last argument is for specific CFLAGS, that need to be set +# for the compiler to generate a warning on the cross-check. +# This may need adaption for future compilers / CFLAG-settings. +# +AC_DEFUN([_HWLOC_CHECK_SPECIFIC_ATTRIBUTE], [ + AC_MSG_CHECKING([for __attribute__([$1])]) + AC_CACHE_VAL(hwloc_cv___attribute__[$1], [ + # + # Try to compile using the C compiler + # + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([$2], [])], + [ + # + # In case we did succeed: Fine, but was this due to the + # attribute being ignored/skipped? Grep for IgNoRe/skip in conftest.err + # and if found, reset the hwloc_cv__attribute__var=0 + # + hwloc_cv___attribute__[$1]=1 + _HWLOC_ATTRIBUTE_FAIL_SEARCH([$1]) + ], + [hwloc_cv___attribute__[$1]=0]) + + # + # If the attribute is supported by both compilers, + # try to recompile a *cross-check*, IFF defined. + # + if test '(' "$hwloc_cv___attribute__[$1]" = "1" -a "[$3]" != "" ')' ; then + ac_c_werror_flag_safe=$ac_c_werror_flag + ac_c_werror_flag="yes" + CFLAGS_safe=$CFLAGS + CFLAGS="$CFLAGS [$4]" + + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [$3], + [ + int i=4711; + i=usage(&i); + ]) + ], + [hwloc_cv___attribute__[$1]=0], + [ + # + # In case we did NOT succeed: Fine, but was this due to the + # attribute being ignored? Grep for IgNoRe in conftest.err + # and if found, reset the hwloc_cv__attribute__var=0 + # + hwloc_cv___attribute__[$1]=1 + _HWLOC_ATTRIBUTE_FAIL_SEARCH([$1]) + ]) + + ac_c_werror_flag=$ac_c_werror_flag_safe + CFLAGS=$CFLAGS_safe + fi + ]) + + if test "$hwloc_cv___attribute__[$1]" = "1" ; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +]) + + +# +# Test the availability of __attribute__ and with the help +# of _HWLOC_CHECK_SPECIFIC_ATTRIBUTE for the support of +# particular attributes. Compilers, that do not support an +# attribute most often fail with a warning (when the warning +# level is set). +# The compilers output is parsed in _HWLOC_ATTRIBUTE_FAIL_SEARCH +# +# To add a new attributes __NAME__ add the +# hwloc_cv___attribute__NAME +# add a new check with _HWLOC_CHECK_SPECIFIC_ATTRIBUTE (possibly with a cross-check) +# _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([name], [int foo (int arg) __attribute__ ((__name__));], [], []) +# and define the corresponding +# AC_DEFINE_UNQUOTED(_HWLOC_HAVE_ATTRIBUTE_NAME, [$hwloc_cv___attribute__NAME], +# [Whether your compiler has __attribute__ NAME or not]) +# and decide on a correct macro (in opal/include/opal_config_bottom.h): +# # define __opal_attribute_NAME(x) __attribute__(__NAME__) +# +# Please use the "__"-notation of the attribute in order not to +# clash with predefined names or macros (e.g. const, which some compilers +# do not like..) +# + + +AC_DEFUN([_HWLOC_CHECK_ATTRIBUTES], [ + AC_MSG_CHECKING(for __attribute__) + + AC_CACHE_VAL(hwloc_cv___attribute__, [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [ + #include + ], [ + /* Check for the longest available __attribute__ (since gcc-2.3) */ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ])], + [], + [hwloc_cv___attribute__=1], + [hwloc_cv___attribute__=0], + ) + + if test "$hwloc_cv___attribute__" = "1" ; then + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [ + #include + ], [ + /* Check for the longest available __attribute__ (since gcc-2.3) */ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ])], + [], + [hwloc_cv___attribute__=1], + [hwloc_cv___attribute__=0], + ) + fi + ]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE, [$hwloc_cv___attribute__], + [Whether your compiler has __attribute__ or not]) + +# +# Now that we know the compiler support __attribute__ let's check which kind of +# attributed are supported. +# + if test "$hwloc_cv___attribute__" = "0" ; then + AC_MSG_RESULT([no]) + hwloc_cv___attribute__aligned=0 + hwloc_cv___attribute__always_inline=0 + hwloc_cv___attribute__cold=0 + hwloc_cv___attribute__const=0 + hwloc_cv___attribute__deprecated=0 + hwloc_cv___attribute__constructor=0 + hwloc_cv___attribute__format=0 + hwloc_cv___attribute__hot=0 + hwloc_cv___attribute__malloc=0 + hwloc_cv___attribute__may_alias=0 + hwloc_cv___attribute__no_instrument_function=0 + hwloc_cv___attribute__nonnull=0 + hwloc_cv___attribute__noreturn=0 + hwloc_cv___attribute__packed=0 + hwloc_cv___attribute__pure=0 + hwloc_cv___attribute__sentinel=0 + hwloc_cv___attribute__unused=0 + hwloc_cv___attribute__warn_unused_result=0 + hwloc_cv___attribute__weak_alias=0 + else + AC_MSG_RESULT([yes]) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([aligned], + [struct foo { char text[4]; } __attribute__ ((__aligned__(8)));], + [], + []) + + # + # Ignored by PGI-6.2.5; -- recognized by output-parser + # + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([always_inline], + [int foo (int arg) __attribute__ ((__always_inline__));], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([cold], + [ + int foo(int arg1, int arg2) __attribute__ ((__cold__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([const], + [ + int foo(int arg1, int arg2) __attribute__ ((__const__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([deprecated], + [ + int foo(int arg1, int arg2) __attribute__ ((__deprecated__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([constructor], + [ + void foo(void) __attribute__ ((__constructor__)); + void foo(void) { return; } + ], + [], + []) + + + HWLOC_ATTRIBUTE_CFLAGS= + case "$hwloc_c_vendor" in + gnu) + HWLOC_ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we want specifically the warning on format string conversion + HWLOC_ATTRIBUTE_CFLAGS="-we181" + ;; + esac + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([format], + [ + int this_printf (void *my_object, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); + ], + [ + static int usage (int * argument); + extern int this_printf (int arg1, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); + + static int usage (int * argument) { + return this_printf (*argument, "%d", argument); /* This should produce a format warning */ + } + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$HWLOC_ATTRIBUTE_CFLAGS]) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([hot], + [ + int foo(int arg1, int arg2) __attribute__ ((__hot__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([malloc], + [ +#ifdef HAVE_STDLIB_H +# include +#endif + int * foo(int arg1) __attribute__ ((__malloc__)); + int * foo(int arg1) { return (int*) malloc(arg1); } + ], + [], + []) + + + # + # Attribute may_alias: No suitable cross-check available, that works for non-supporting compilers + # Ignored by intel-9.1.045 -- turn off with -wd1292 + # Ignored by PGI-6.2.5; ignore not detected due to missing cross-check + # The test case is chosen to match our only use in topology-xml-*.c, and reproduces an xlc-13.1.0 bug. + # + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([may_alias], + [struct { int i; } __attribute__ ((__may_alias__)) * p_value;], + [], + []) + + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([no_instrument_function], + [int * foo(int arg1) __attribute__ ((__no_instrument_function__));], + [], + []) + + + # + # Attribute nonnull: + # Ignored by intel-compiler 9.1.045 -- recognized by cross-check + # Ignored by PGI-6.2.5 (pgCC) -- recognized by cross-check + # + HWLOC_ATTRIBUTE_CFLAGS= + case "$hwloc_c_vendor" in + gnu) + HWLOC_ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings, but rather real warnings + HWLOC_ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([nonnull], + [ + int square(int *arg) __attribute__ ((__nonnull__)); + int square(int *arg) { return *arg; } + ], + [ + static int usage(int * argument); + int square(int * argument) __attribute__ ((__nonnull__)); + int square(int * argument) { return (*argument) * (*argument); } + + static int usage(int * argument) { + return square( ((void*)0) ); /* This should produce an argument must be nonnull warning */ + } + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$HWLOC_ATTRIBUTE_CFLAGS]) + + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([noreturn], + [ +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif + void fatal(int arg1) __attribute__ ((__noreturn__)); + void fatal(int arg1) { exit(arg1); } + ], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([packed], + [ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([pure], + [ + int square(int arg) __attribute__ ((__pure__)); + int square(int arg) { return arg * arg; } + ], + [], + []) + + # + # Attribute sentinel: + # Ignored by the intel-9.1.045 -- recognized by cross-check + # intel-10.0beta works fine + # Ignored by PGI-6.2.5 (pgCC) -- recognized by output-parser and cross-check + # Ignored by pathcc-2.2.1 -- recognized by cross-check (through grep ignore) + # + HWLOC_ATTRIBUTE_CFLAGS= + case "$hwloc_c_vendor" in + gnu) + HWLOC_ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings + HWLOC_ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([sentinel], + [ + int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); + ], + [ + static int usage(int * argument); + int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); + + static int usage(int * argument) { + void * last_arg_should_be_null = argument; + return my_execlp ("lala", "/home/there", last_arg_should_be_null); /* This should produce a warning */ + } + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$HWLOC_ATTRIBUTE_CFLAGS]) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([unused], + [ + int square(int arg1 __attribute__ ((__unused__)), int arg2); + int square(int arg1, int arg2) { return arg2; } + ], + [], + []) + + + # + # Attribute warn_unused_result: + # Ignored by the intel-compiler 9.1.045 -- recognized by cross-check + # Ignored by pathcc-2.2.1 -- recognized by cross-check (through grep ignore) + # + HWLOC_ATTRIBUTE_CFLAGS= + case "$hwloc_c_vendor" in + gnu) + HWLOC_ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings + HWLOC_ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([warn_unused_result], + [ + int foo(int arg) __attribute__ ((__warn_unused_result__)); + int foo(int arg) { return arg + 3; } + ], + [ + static int usage(int * argument); + int foo(int arg) __attribute__ ((__warn_unused_result__)); + + int foo(int arg) { return arg + 3; } + static int usage(int * argument) { + foo (*argument); /* Should produce an unused result warning */ + return 0; + } + + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$HWLOC_ATTRIBUTE_CFLAGS]) + + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([weak_alias], + [ + int foo(int arg); + int foo(int arg) { return arg + 3; } + int foo2(int arg) __attribute__ ((__weak__, __alias__("foo"))); + ], + [], + []) + + fi + + # Now that all the values are set, define them + + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_ALIGNED, [$hwloc_cv___attribute__aligned], + [Whether your compiler has __attribute__ aligned or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE, [$hwloc_cv___attribute__always_inline], + [Whether your compiler has __attribute__ always_inline or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_COLD, [$hwloc_cv___attribute__cold], + [Whether your compiler has __attribute__ cold or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_CONST, [$hwloc_cv___attribute__const], + [Whether your compiler has __attribute__ const or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_DEPRECATED, [$hwloc_cv___attribute__deprecated], + [Whether your compiler has __attribute__ deprecated or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_CONSTRUCTOR, [$hwloc_cv___attribute__constructor], + [Whether your compiler has __attribute__ constructor or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_FORMAT, [$hwloc_cv___attribute__format], + [Whether your compiler has __attribute__ format or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_HOT, [$hwloc_cv___attribute__hot], + [Whether your compiler has __attribute__ hot or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_MALLOC, [$hwloc_cv___attribute__malloc], + [Whether your compiler has __attribute__ malloc or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS, [$hwloc_cv___attribute__may_alias], + [Whether your compiler has __attribute__ may_alias or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION, [$hwloc_cv___attribute__no_instrument_function], + [Whether your compiler has __attribute__ no_instrument_function or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NONNULL, [$hwloc_cv___attribute__nonnull], + [Whether your compiler has __attribute__ nonnull or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NORETURN, [$hwloc_cv___attribute__noreturn], + [Whether your compiler has __attribute__ noreturn or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_PACKED, [$hwloc_cv___attribute__packed], + [Whether your compiler has __attribute__ packed or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_PURE, [$hwloc_cv___attribute__pure], + [Whether your compiler has __attribute__ pure or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_SENTINEL, [$hwloc_cv___attribute__sentinel], + [Whether your compiler has __attribute__ sentinel or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_UNUSED, [$hwloc_cv___attribute__unused], + [Whether your compiler has __attribute__ unused or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT, [$hwloc_cv___attribute__warn_unused_result], + [Whether your compiler has __attribute__ warn unused result or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS, [$hwloc_cv___attribute__weak_alias], + [Whether your compiler has __attribute__ weak alias or not]) +]) + diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4 new file mode 100644 index 0000000000..24c3be8aa9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4 @@ -0,0 +1,262 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright © 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright © 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright © 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright © 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright © 2011 Cisco Systems, Inc. All rights reserved. +dnl Copyright © 2015-2021 Inria. All rights reserved. +dnl Copyright © 2020 IBM Corporation. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +dnl ------------------------------------------------------------------ +dnl This m4 file originally copied from Open MPI +dnl config/ompi_check_vendor.m4. +dnl ------------------------------------------------------------------ + + +# HWLOC_C_COMPILER_VENDOR(VENDOR_VARIABLE) +# --------------------------------------- +# Set shell variable VENDOR_VARIABLE to the name of the compiler +# vendor for the current C compiler. +# +# See comment for _HWLOC_CHECK_COMPILER_VENDOR for a complete +# list of currently detected compilers. +AC_DEFUN([_HWLOC_C_COMPILER_VENDOR], [ + AC_REQUIRE([AC_PROG_CC]) + + AC_CACHE_CHECK([for the C compiler vendor], + [hwloc_cv_c_compiler_vendor], + [AC_LANG_PUSH(C) + _HWLOC_CHECK_COMPILER_VENDOR([hwloc_cv_c_compiler_vendor]) + AC_LANG_POP(C)]) + + $1="$hwloc_cv_c_compiler_vendor" +]) + + +# workaround to avoid syntax error with Autoconf < 2.68: +m4_ifndef([AC_LANG_DEFINES_PROVIDED], + [m4_define([AC_LANG_DEFINES_PROVIDED])]) + +# HWLOC_IFDEF_IFELSE(symbol, [action-if-defined], +# [action-if-not-defined]) +# ---------------------------------------------- +# Run compiler to determine if preprocessor symbol "symbol" is +# defined by the compiler. +AC_DEFUN([HWLOC_IFDEF_IFELSE], [ + AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED +#ifndef $1 +#error "symbol $1 not defined" +choke me +#endif], [$2], [$3])]) + + +# HWLOC_IF_IFELSE(symbol, [action-if-defined], +# [action-if-not-defined]) +# ---------------------------------------------- +# Run compiler to determine if preprocessor symbol "symbol" is +# defined by the compiler. +AC_DEFUN([HWLOC_IF_IFELSE], [ + AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED +#if !( $1 ) +#error "condition $1 not met" +choke me +#endif], [$2], [$3])]) + + +# _HWLOC_CHECK_COMPILER_VENDOR(VENDOR_VARIABLE) +# -------------------------------------------- +# Set shell variable VENDOR_VARIABLE to the name of the compiler +# vendor for the compiler for the current language. Language must be +# one of C, OBJC, or C++. +# +# thanks to http://predef.sourceforge.net/precomp.html for the list +# of defines to check. +AC_DEFUN([_HWLOC_CHECK_COMPILER_VENDOR], [ + hwloc_check_compiler_vendor_result="unknown" + + # GNU is probably the most common, so check that one as soon as + # possible. Intel and Android pretend to be GNU, so need to + # check Intel and Android before checking for GNU. + + # Android + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__ANDROID__], + [hwloc_check_compiler_vendor_result="android"])]) + + # Intel + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__INTEL_COMPILER) || defined(__ICC)], + [hwloc_check_compiler_vendor_result="intel"])]) + + # Portland Group + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__PGI], + [hwloc_check_compiler_vendor_result="portland group"])]) + + # Borland Turbo C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__TURBOC__], + [hwloc_check_compiler_vendor_result="borland"])]) + + # Borland C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__BORLANDC__], + [hwloc_check_compiler_vendor_result="borland"])]) + + # Comeau C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__COMO__], + [hwloc_check_compiler_vendor_result="comeau"])]) + + # Compaq C/C++ + # OSF part actually not needed anymore but doesn't hurt + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__DECC) || defined(VAXC) || defined(__VAXC)], + [hwloc_check_compiler_vendor_result="compaq"], + [HWLOC_IF_IFELSE([defined(__osf__) && defined(__LANGUAGE_C__)], + [hwloc_check_compiler_vendor_result="compaq"], + [HWLOC_IFDEF_IFELSE([__DECCXX], + [hwloc_check_compiler_vendor_result="compaq"])])])]) + + # Cray C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([_CRAYC], + [hwloc_check_compiler_vendor_result="cray"])]) + + # Diab C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__DCC__], + [hwloc_check_compiler_vendor_result="diab"])]) + + # Digital Mars + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__DMC__) || defined(__SC__) || defined(__ZTC__)], + [hwloc_check_compiler_vendor_result="digital mars"])]) + + # HP ANSI C / aC++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__HP_cc) || defined(__HP_aCC)], + [hwloc_check_compiler_vendor_result="hp"])]) + + # IBM XL C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__ibmxl__)], + [hwloc_check_compiler_vendor_result="ibm"], + [HWLOC_IF_IFELSE([defined(_AIX) && !defined(__GNUC__)], + [hwloc_check_compiler_vendor_result="ibm"])])]) + + # KAI C++ (rest in peace) + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__KCC], + [hwloc_check_compiler_vendor_result="kai"])]) + + # LCC + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__LCC__], + [hwloc_check_compiler_vendor_result="lcc"])]) + + # MetaWare High C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__HIGHC__], + [hwloc_check_compiler_vendor_result="metaware high"])]) + + # Metrowerks Codewarrior + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__MWERKS__], + [hwloc_check_compiler_vendor_result="metrowerks"])]) + + # MIPSpro (SGI) + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(sgi) || defined(__sgi)], + [hwloc_check_compiler_vendor_result="sgi"])]) + + # MPW C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)], + [hwloc_check_compiler_vendor_result="mpw"])]) + + # Microsoft + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [# Always use C compiler when checking for Microsoft, as + # Visual C++ doesn't recognize .cc as a C++ file. + AC_LANG_PUSH(C) + HWLOC_IF_IFELSE([defined(_MSC_VER) || defined(__MSC_VER)], + [hwloc_check_compiler_vendor_result="microsoft"]) + AC_LANG_POP(C)]) + + # Norcroft C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__CC_NORCROFT], + [hwloc_check_compiler_vendor_result="norcroft"])]) + + # Pelles C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__POCC__], + [hwloc_check_compiler_vendor_result="pelles"])]) + + # SAS/C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(SASC) || defined(__SASC) || defined(__SASC__)], + [hwloc_check_compiler_vendor_result="sas"])]) + + # Sun Workshop C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__SUNPRO_C) || defined(__SUNPRO_CC)], + [hwloc_check_compiler_vendor_result="sun"])]) + + # TenDRA C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__TenDRA__], + [hwloc_check_compiler_vendor_result="tendra"])]) + + # Tiny C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__TINYC__], + [hwloc_check_compiler_vendor_result="tiny"])]) + + # USL C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__USLC__], + [hwloc_check_compiler_vendor_result="usl"])]) + + # Watcom C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__WATCOMC__], + [hwloc_check_compiler_vendor_result="watcom"])]) + + # GNU + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__GNUC__], + [hwloc_check_compiler_vendor_result="gnu"])]) + + $1="$hwloc_check_compiler_vendor_result" + unset hwloc_check_compiler_vendor_result +]) + +# _HWLOC_CHECK_CC_OPTION([option], [variable to append the option to], [action if supported]) +# ---------------------------------------------- +# Run gcc to determine if option is supported. +AC_DEFUN([_HWLOC_CHECK_CC_OPTION], [ + tmp_save_CFLAGS="$CFLAGS" + CFLAGS="$1 -Werror" + AC_MSG_CHECKING([if gcc supports $1]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int i;]])], + [AC_MSG_RESULT(yes) + $2="$$2 $1" + $3], + [AC_MSG_RESULT(no)]) + CFLAGS="$tmp_save_CFLAGS" +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4 new file mode 100644 index 0000000000..8ba2d391c9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4 @@ -0,0 +1,131 @@ +# This macro set originally copied from Open MPI: +# Copyright © 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright © 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright © 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright © 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright © 2006-2007 Cisco Systems, Inc. All rights reserved. +# and renamed/modified for hwloc: +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2010 Université Bordeaux +# Copyright © 2010-2012 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# - Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# - Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer listed +# in this license in the documentation and/or other materials +# provided with the distribution. +# +# - Neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# The copyright holders provide no reassurances that the source code +# provided does not infringe any patent, copyright, or any other +# intellectual property rights of third parties. The copyright holders +# disclaim any liability to any recipient for claims brought against +# recipient by any third party for infringement of that parties +# intellectual property rights. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# _HWLOC_CHECK_VISIBILITY +# -------------------------------------------------------- +AC_DEFUN([_HWLOC_CHECK_VISIBILITY],[ + # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) + m4_ifdef([AC_PROG_GREP], + [AC_REQUIRE([AC_PROG_GREP])], + [GREP=grep]) + + # Check if the compiler has support for visibility, like some + # versions of gcc, icc, Sun Studio cc. + AC_ARG_ENABLE(visibility, + AS_HELP_STRING([--enable-visibility], + [enable visibility feature of certain compilers/linkers (default: enabled on platforms that support it)])) + + case ${target} in + *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*) + enable_visibility=no + ;; + esac + + hwloc_visibility_define=0 + hwloc_msg="whether to enable symbol visibility" + if test "$enable_visibility" = "no"; then + AC_MSG_CHECKING([$hwloc_msg]) + AC_MSG_RESULT([no (disabled)]) + else + CFLAGS_orig=$CFLAGS + + hwloc_add= + case "$hwloc_c_vendor" in + sun) + # Check using Sun Studio -xldscope=hidden flag + hwloc_add=-xldscope=hidden + CFLAGS="$CFLAGS_orig $hwloc_add -errwarn=%all" + ;; + + *) + # Check using -fvisibility=hidden + hwloc_add=-fvisibility=hidden + CFLAGS="$CFLAGS_orig $hwloc_add -Werror" + ;; + esac + + AC_MSG_CHECKING([if $CC supports $hwloc_add]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + __attribute__((visibility("default"))) int foo; + ]],[[fprintf(stderr, "Hello, world\n");]])], + [AS_IF([test -s conftest.err], + [$GREP -iq visibility conftest.err + # If we find "visibility" in the stderr, then + # assume it doesn't work + AS_IF([test "$?" = "0"], [hwloc_add=])]) + ], [hwloc_add=]) + AS_IF([test "$hwloc_add" = ""], + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([yes])]) + + CFLAGS=$CFLAGS_orig + HWLOC_VISIBILITY_CFLAGS=$hwloc_add + + if test "$hwloc_add" != "" ; then + hwloc_visibility_define=1 + AC_MSG_CHECKING([$hwloc_msg]) + AC_MSG_RESULT([yes (via $hwloc_add)]) + elif test "$enable_visibility" = "yes"; then + AC_MSG_ERROR([Symbol visibility support requested but compiler does not seem to support it. Aborting]) + else + AC_MSG_CHECKING([$hwloc_msg]) + AC_MSG_RESULT([no (unsupported)]) + fi + unset hwloc_add + fi + + AC_DEFINE_UNQUOTED([HWLOC_C_HAVE_VISIBILITY], [$hwloc_visibility_define], + [Whether C compiler supports symbol visibility or not]) +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_components.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_components.m4 new file mode 100644 index 0000000000..e4a8c3a5d7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_components.m4 @@ -0,0 +1,64 @@ +# Copyright © 2012-2020 Inria. All rights reserved. +# See COPYING in top-level directory. + + +# HWLOC_PREPARE_FILTER_COMPONENTS +# +# Given a list of names, define hwloc__component_maybeplugin=1. +# +# $1 = space-separated list of components to build as plugins +# +AC_DEFUN([HWLOC_PREPARE_FILTER_COMPONENTS], [ + for name in [$1] ; do + str="hwloc_${name}_component_wantplugin=1" + eval $str + done +]) + + +# HWLOC_FILTER_COMPONENTS +# +# For each component in hwloc_components, +# check if hwloc__component_wantplugin=1, +# and check if hwloc__component_maybeplugin=1. +# Add to hwloc_[static|plugin]_components accordingly. +# And set hwloc__component=[static|plugin] accordingly. +# +AC_DEFUN([HWLOC_FILTER_COMPONENTS], [ +for name in $hwloc_components ; do + str="maybeplugin=\$hwloc_${name}_component_maybeplugin" + eval $str + str="wantplugin=\$hwloc_${name}_component_wantplugin" + eval $str + if test x$hwloc_have_plugins = xyes -a x$maybeplugin = x1 -a x$wantplugin = x1; then + hwloc_plugin_components="$hwloc_plugin_components $name" + str="hwloc_${name}_component=plugin" + else + hwloc_static_components="$hwloc_static_components $name" + str="hwloc_${name}_component=static" + fi + eval $str +done +]) + + +# HWLOC_LIST_STATIC_COMPONENTS +# +# Append to file $1 an array of components by listing component names in $2. +# +# $1 = filename +# $2 = list of component names +# +AC_DEFUN([HWLOC_LIST_STATIC_COMPONENTS], [ +cat <>[$1] +#include +static const struct hwloc_component * hwloc_static_components[[]] = { +EOF +for comp in [$2]; do + echo " &hwloc_${comp}_component," >>[$1] +done +cat <>[$1] + NULL +}; +EOF +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh b/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh new file mode 100644 index 0000000000..4bc4f2933b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh @@ -0,0 +1,114 @@ +#!/bin/sh +# +# Copyright © 2004-2006 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright © 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright © 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright © 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright © 2008-2014 Cisco Systems, Inc. All rights reserved. +# Copyright © 2014-2018 Inria. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +srcfile="$1" +option="$2" + +if test -z "$srcfile"; then + option="--help" +else + : ${srcdir=.} + + if test -f "$srcfile"; then + ompi_vers=`sed -n " + t clear + : clear + s/^major/HWLOC_MAJOR_VERSION/ + s/^minor/HWLOC_MINOR_VERSION/ + s/^release/HWLOC_RELEASE_VERSION/ + s/^greek/HWLOC_GREEK_VERSION/ + s/\\\${major}/\\\${HWLOC_MAJOR_VERSION}/ + s/\\\${minor}/\\\${HWLOC_MINOR_VERSION}/ + s/\\\${release}/\\\${HWLOC_RELEASE_VERSION}/ + s/\\\${greek}/\\\${HWLOC_GREEK_VERSION}/ + s/^date/HWLOC_RELEASE_DATE/ + s/^snapshot_version/HWLOC_SNAPSHOT_VERSION/ + s/^snapshot/HWLOC_SNAPSHOT/ + t print + b + : print + p" < "$srcfile"` + eval "$ompi_vers" + + HWLOC_VERSION="$HWLOC_MAJOR_VERSION.$HWLOC_MINOR_VERSION.$HWLOC_RELEASE_VERSION${HWLOC_GREEK_VERSION}" + + # If HWLOC_SNAPSHOT=1, then use HWLOC_SNAPSHOT_VERSION + if test "$HWLOC_SNAPSHOT" = "1"; then + # First, verify that HWLOC_SNAPSHOT_VERSION isn't empty. + if test -z "$HWLOC_SNAPSHOT_VERSION"; then + echo "*** ERROR: $1 contains snapshot=1, but an empty value for snapshot_version" 1>&2 + exit 1 + fi + HWLOC_VERSION=$HWLOC_SNAPSHOT_VERSION + fi + fi + + if test "$option" = ""; then + option="--version" + fi +fi + +case "$option" in + --version) + echo $HWLOC_VERSION + ;; + --major) + echo $HWLOC_MAJOR_VERSION + ;; + --minor) + echo $HWLOC_MINOR_VERSION + ;; + --release) + echo $HWLOC_RELEASE_VERSION + ;; + --greek) + echo $HWLOC_GREEK_VERSION + ;; + --release-date) + echo $HWLOC_RELEASE_DATE + ;; + --snapshot) + echo $HWLOC_SNAPSHOT + ;; + -h|--help) + cat < ], + [Specify the CUDA installation directory, used for NVIDIA NVML and OpenCL too. If a non-existent directory is given, all dependencies installed by CUDA are disabled (CUDA, NVML and NVIDIA OpenCL).])) + + # RSMI? + AC_ARG_ENABLE([rsmi], + AS_HELP_STRING([--disable-rsmi], + [Disable the ROCm SMI device discovery])) + # ROCm version (for selecting /opt/rocm-x.y/) + AC_ARG_WITH([rocm-version], + AS_HELP_STRING([--with-rocm-version=], + [Specify the ROCm version (e.g. 4.2.0) for selecting the default ROCm installation path (e.g. /opt/rocm-4.2.0)])) + AC_ARG_VAR([ROCM_VERSION], [The ROCm version (e.g. 4.2.0) for selecting the default ROCm installation path (e.g. /opt/rocm-4.2.0)]) + # ROCm install path + AC_ARG_WITH([rocm], + AS_HELP_STRING([--with-rocm=], + [Specify the ROCm installation directory])) + + # LevelZero + AC_ARG_ENABLE([levelzero], + AS_HELP_STRING([--disable-levelzero], + [Disable the oneAPI Level Zero device discovery])) + + # GL/Display + AC_ARG_ENABLE([gl], + AS_HELP_STRING([--disable-gl], + [Disable the GL display device discovery (instead of only disabling GL at runtime by default)])) + + # LibUdev + AC_ARG_ENABLE([libudev], + AS_HELP_STRING([--disable-libudev], + [Disable the Linux libudev])) + + # Plugins + AC_ARG_ENABLE([plugins], + AS_HELP_STRING([--enable-plugins=name,...], + [Build the given components as dynamically-loaded plugins])) + + # Look for dlopen + # Not --disable-dlopen because $enable_dlopen is already used/set + AC_ARG_ENABLE([plugin-dlopen], + AS_HELP_STRING([--disable-plugin-dlopen], + [Do not use dlopen for loading plugins.])) + # Look for ltdl + # Not --disable-ltdl for consistency wrt dlopen above + AC_ARG_ENABLE([plugin-ltdl], + AS_HELP_STRING([--disable-plugin-ltdl], + [Do not use ltdl for loading plugins.])) + +])dnl + +#----------------------------------------------------------------------- + +dnl We only build documentation if this is a developer checkout. +dnl Distribution tarballs just install pre-built documentation that was +dnl included in the tarball. + +# Probably only ever invoked by hwloc's configure.ac +AC_DEFUN([HWLOC_SETUP_DOCS],[ + cat < /dev/null` + + AC_ARG_VAR([PDFLATEX], [Location of the pdflatex program (required for building the hwloc doxygen documentation)]) + AC_PATH_TOOL([PDFLATEX], [pdflatex]) + + AC_ARG_VAR([MAKEINDEX], [Location of the makeindex program (required for building the hwloc doxygen documentation)]) + AC_PATH_TOOL([MAKEINDEX], [makeindex]) + + AC_ARG_VAR([FIG2DEV], [Location of the fig2dev program (required for building the hwloc doxygen documentation)]) + AC_PATH_TOOL([FIG2DEV], [fig2dev]) + + AC_ARG_VAR([GS], [Location of the gs program (required for building the hwloc doxygen documentation)]) + AC_PATH_TOOL([GS], [gs]) + + AC_ARG_VAR([EPSTOPDF], [Location of the epstopdf program (required for building the hwloc doxygen documentation)]) + AC_PATH_TOOL([EPSTOPDF], [epstopdf]) + + AC_MSG_CHECKING([if can build doxygen docs]) + AS_IF([test "x$DOXYGEN" != "x" -a "x$PDFLATEX" != "x" -a "x$MAKEINDEX" != "x" -a "x$FIG2DEV" != "x" -a "x$GS" != "x" -a "x$EPSTOPDF" != "x"], + [hwloc_generate_doxs=yes], [hwloc_generate_doxs=no]) + AC_MSG_RESULT([$hwloc_generate_doxs]) + AS_IF([test "x$hwloc_generate_doxs" = xyes -a "x$HWLOC_DOXYGEN_VERSION" = x1.6.2], + [hwloc_generate_doxs="no"; AC_MSG_WARN([doxygen 1.6.2 has broken short name support, disabling])]) + AS_IF([test "x$hwloc_generate_doxs" = xyes -a "x$HWLOC_DOXYGEN_VERSION" = x1.8.16 -a "$HWLOC_top_builddir" = "$HWLOC_top_srcdir"], + [hwloc_generate_doxs="no"; AC_MSG_WARN([doxygen 1.8.16 fails when building inside the source-tree, disabling])]) + + AC_REQUIRE([AC_PROG_SED]) + + # Making the top-level README requires w3m or lynx. + AC_ARG_VAR([W3M], [Location of the w3m program (required to building the top-level hwloc README file)]) + AC_PATH_TOOL([W3M], [w3m]) + AC_ARG_VAR([LYNX], [Location of the lynx program (required to building the top-level hwloc README file)]) + AC_PATH_TOOL([LYNX], [lynx]) + + AC_MSG_CHECKING([if can build top-level README]) + AS_IF([test "x$W3M" != "x"], + [hwloc_generate_readme=yes + HWLOC_W3_GENERATOR=$W3M], + [AS_IF([test "x$LYNX" != "x"], + [hwloc_generate_readme=yes + HWLOC_W3_GENERATOR="$LYNX -dump -nolist"], + [hwloc_generate_readme=no])]) + AC_SUBST(HWLOC_W3_GENERATOR) + AC_MSG_RESULT([$hwloc_generate_readme]) + + # If any one of the above tools is missing, we will refuse to make dist. + AC_MSG_CHECKING([if will build doxygen docs]) + AS_IF([test "x$hwloc_generate_doxs" = "xyes" -a "x$enable_doxygen" != "xno"], + [], [hwloc_generate_doxs=no]) + AC_MSG_RESULT([$hwloc_generate_doxs]) + + # See if we want to install the doxygen docs + AC_MSG_CHECKING([if will install doxygen docs]) + AS_IF([test "x$hwloc_generate_doxs" = "xyes" -o \ + -f "$srcdir/doc/doxygen-doc/man/man3/hwloc_distrib.3" -a \ + -f "$srcdir/doc/doxygen-doc/hwloc-a4.pdf" -a \ + -f "$srcdir/doc/doxygen-doc/hwloc-letter.pdf"], + [hwloc_install_doxs=yes], + [hwloc_install_doxs=no]) + AC_MSG_RESULT([$hwloc_install_doxs]) + + # Generate some files for the docs + AC_CONFIG_FILES( + hwloc_config_prefix[doc/Makefile] + hwloc_config_prefix[doc/examples/Makefile] + hwloc_config_prefix[doc/doxygen-config.cfg]) +]) + +#----------------------------------------------------------------------- + +# Probably only ever invoked by hwloc's configure.ac +AC_DEFUN([HWLOC_SETUP_UTILS],[ + cat <= 2.70 and in some backports + if test "x${runstatedir}" != "x"; then + HWLOC_runstatedir=${runstatedir} + else + HWLOC_runstatedir='${localstatedir}/run' + fi + AC_SUBST([HWLOC_runstatedir]) + + # X11 support + AC_PATH_XTRA + + CPPFLAGS_save=$CPPFLAGS + LIBS_save=$LIBS + + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" + AC_CHECK_HEADERS([X11/Xlib.h], + [AC_CHECK_LIB([X11], [XOpenDisplay], + [ AC_CHECK_HEADERS([X11/Xutil.h], + [AC_CHECK_HEADERS([X11/keysym.h], + [AC_DEFINE([HWLOC_HAVE_X11_KEYSYM], [1], [Define to 1 if X11 headers including Xutil.h and keysym.h are available.]) + hwloc_x11_keysym_happy=yes + HWLOC_X11_CPPFLAGS="$X_CFLAGS" + AC_SUBST([HWLOC_X11_CPPFLAGS]) + HWLOC_X11_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS" + AC_SUBST([HWLOC_X11_LIBS])]) + ], [], [#include ]) + ]) + ]) + CPPFLAGS=$CPPFLAGS_save + LIBS=$LIBS_save + + # Cairo support + hwloc_cairo_happy=no + if test "x$enable_cairo" != "xno"; then + HWLOC_PKG_CHECK_MODULES([CAIRO], [cairo], [cairo_fill], [cairo.h], + [hwloc_cairo_happy=yes], + [hwloc_cairo_happy=no]) + fi + + if test "x$hwloc_cairo_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_CAIRO], [1], [Define to 1 if you have the `cairo' library.]) + AC_MSG_CHECKING([whether lstopo Cairo/X11 interactive graphical output is supported]) + if test "x$hwloc_x11_keysym_happy" = xyes; then + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_CAIRO_CFLAGS $HWLOC_X11_CPPFLAGS" + AC_PREPROC_IFELSE([ + AC_LANG_PROGRAM([[ + #include + ]], [[ + #ifndef CAIRO_HAS_XLIB_SURFACE + #error + #endif + ]]) + ], [ + AC_MSG_RESULT([yes]) + lstopo_have_x11=yes + AC_DEFINE([LSTOPO_HAVE_X11], 1, [Define if lstopo Cairo/X11 interactive graphical output is supported]) + ], [ + AC_MSG_RESULT([no (missing CAIRO_HAS_XLIB_SURFACE)]) + ]) + CPPFLAGS="$save_CPPFLAGS" + else + AC_MSG_RESULT([no (missing X11)]) + fi + else + AS_IF([test "$enable_cairo" = "yes"], + [AC_MSG_WARN([--enable-cairo requested, but Cairo/X11 support was not found]) + AC_MSG_ERROR([Cannot continue])]) + fi + + AC_CHECK_TYPES([wchar_t], [ + AC_CHECK_FUNCS([putwc]) + ], [], [[#include ]]) + + HWLOC_XML_LOCALIZED=1 + AC_CHECK_HEADERS([locale.h xlocale.h], [ + AC_CHECK_FUNCS([setlocale]) + AC_CHECK_FUNCS([uselocale], [HWLOC_XML_LOCALIZED=0]) + ]) + AC_SUBST([HWLOC_XML_LOCALIZED]) + AC_CHECK_HEADERS([langinfo.h], [ + AC_CHECK_FUNCS([nl_langinfo]) + ]) + hwloc_old_LIBS="$LIBS" + chosen_curses="" + for curses in ncurses curses + do + for lib in "" -l${curses}w -l$curses -ltinfo -ltermcap + do + AC_MSG_CHECKING(termcap support using $curses and $lib) + LIBS="$hwloc_old_LIBS $lib" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include <$curses.h> +#include +]], [[tparm(NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0)]])], [ + AC_MSG_RESULT(yes) + AC_SUBST([HWLOC_TERMCAP_LIBS], ["$LIBS"]) + AC_DEFINE([HWLOC_HAVE_LIBTERMCAP], [1], + [Define to 1 if you have a library providing the termcap interface]) + chosen_curses=$curses + ], [ + AC_MSG_RESULT(no) + ]) + test "x$chosen_curses" != "x" && break + done + test "x$chosen_curses" != "x" && break + done + if test "$chosen_curses" = ncurses + then + AC_DEFINE([HWLOC_USE_NCURSES], [1], [Define to 1 if ncurses works, preferred over curses]) + fi + LIBS="$hwloc_old_LIBS" + unset hwloc_old_LIBS + + _HWLOC_CHECK_DIFF_U + _HWLOC_CHECK_DIFF_W + + # Solaris needs -lsocket for socket/bind/... in hwloc-ps + AC_CHECK_DECLS([bind], [ + AC_CHECK_LIB([socket], [bind], + [need_libsocket=yes]) + ], [], [[#include ]]) + if test x$need_libsocket = xyes; then + # keep -lsocket first in case there's also -lnsl which cannot be before -lsocket + HWLOC_PS_LIBS="-lsocket $HWLOC_PS_LIBS" + fi + AC_SUBST(HWLOC_PS_LIBS) + + AC_CHECK_HEADERS([time.h], [ + AC_CHECK_FUNCS([clock_gettime]) + ]) + + # Only generate this if we're building the utilities + # Even the netloc library Makefile is here because + # we don't embed libnetloc yet, it's useless without tools + AC_CONFIG_FILES( + hwloc_config_prefix[utils/Makefile] + hwloc_config_prefix[utils/hwloc/Makefile] + hwloc_config_prefix[utils/lstopo/Makefile] + hwloc_config_prefix[hwloc.pc] + + hwloc_config_prefix[netloc/Makefile] + hwloc_config_prefix[utils/netloc/infiniband/Makefile] + hwloc_config_prefix[utils/netloc/draw/Makefile] + hwloc_config_prefix[utils/netloc/scotch/Makefile] + hwloc_config_prefix[utils/netloc/mpi/Makefile] + hwloc_config_prefix[netloc.pc] + hwloc_config_prefix[netlocscotch.pc] + ) +])dnl + +#----------------------------------------------------------------------- + +# Probably only ever invoked by hwloc's configure.ac +AC_DEFUN([HWLOC_SETUP_TESTS],[ + cat <]) + ])]) + + AC_CHECK_HEADERS([stdlib.h], [ + AC_CHECK_FUNCS([mkstemp]) + ]) + + AC_CHECK_HEADERS([infiniband/verbs.h], [ + AC_CHECK_LIB([ibverbs], [ibv_open_device], + [AC_DEFINE([HAVE_LIBIBVERBS], 1, [Define to 1 if we have -libverbs]) + hwloc_have_libibverbs=yes + HWLOC_IBVERBS_LIBS=-libverbs + AC_SUBST(HWLOC_IBVERBS_LIBS) + ]) + ]) + + AC_CHECK_PROGS(XMLLINT, [xmllint]) + + AC_CHECK_PROGS(BUNZIPP, bunzip2, false) + + AC_MSG_CHECKING(if CXX works) + AC_LANG_PUSH([C++]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +using namespace std; +int foo(void) { + cout << "test" << endl; + return 0; +} + ]])], [hwloc_have_cxx=yes], [hwloc_have_cxx=no]) + AC_LANG_POP([C++]) + AC_MSG_RESULT([$hwloc_have_cxx]) + + _HWLOC_CHECK_DIFF_U + + # Only generate these files if we're making the tests + AC_CONFIG_FILES( + hwloc_config_prefix[tests/Makefile] + hwloc_config_prefix[tests/hwloc/Makefile] + hwloc_config_prefix[tests/hwloc/linux/Makefile] + hwloc_config_prefix[tests/hwloc/linux/allowed/Makefile] + hwloc_config_prefix[tests/hwloc/linux/gather/Makefile] + hwloc_config_prefix[tests/hwloc/x86/Makefile] + hwloc_config_prefix[tests/hwloc/x86+linux/Makefile] + hwloc_config_prefix[tests/hwloc/xml/Makefile] + hwloc_config_prefix[tests/hwloc/ports/Makefile] + hwloc_config_prefix[tests/hwloc/rename/Makefile] + hwloc_config_prefix[tests/hwloc/linux/allowed/test-topology.sh] + hwloc_config_prefix[tests/hwloc/linux/gather/test-gather-topology.sh] + hwloc_config_prefix[tests/hwloc/linux/test-topology.sh] + hwloc_config_prefix[tests/hwloc/x86/test-topology.sh] + hwloc_config_prefix[tests/hwloc/x86+linux/test-topology.sh] + hwloc_config_prefix[tests/hwloc/xml/test-topology.sh] + hwloc_config_prefix[tests/hwloc/wrapper.sh] + hwloc_config_prefix[utils/hwloc/hwloc-compress-dir] + hwloc_config_prefix[utils/hwloc/hwloc-gather-topology] + hwloc_config_prefix[utils/hwloc/test-hwloc-annotate.sh] + hwloc_config_prefix[utils/hwloc/test-hwloc-calc.sh] + hwloc_config_prefix[utils/hwloc/test-hwloc-compress-dir.sh] + hwloc_config_prefix[utils/hwloc/test-hwloc-diffpatch.sh] + hwloc_config_prefix[utils/hwloc/test-hwloc-distrib.sh] + hwloc_config_prefix[utils/hwloc/test-hwloc-info.sh] + hwloc_config_prefix[utils/hwloc/test-build-custom-topology.sh] + hwloc_config_prefix[utils/hwloc/test-fake-plugin.sh] + hwloc_config_prefix[utils/hwloc/test-parsing-flags.sh] + hwloc_config_prefix[utils/hwloc/test-hwloc-dump-hwdata/Makefile] + hwloc_config_prefix[utils/hwloc/test-hwloc-dump-hwdata/test-hwloc-dump-hwdata.sh] + hwloc_config_prefix[utils/lstopo/test-lstopo.sh] + hwloc_config_prefix[utils/lstopo/test-lstopo-shmem.sh] + hwloc_config_prefix[utils/netloc/infiniband/netloc_ib_gather_raw] + hwloc_config_prefix[contrib/hwloc-ps.www/Makefile] + hwloc_config_prefix[contrib/systemd/Makefile] + hwloc_config_prefix[contrib/completion/Makefile] + hwloc_config_prefix[contrib/misc/Makefile] + hwloc_config_prefix[contrib/windows/Makefile] + hwloc_config_prefix[tests/netloc/Makefile] + hwloc_config_prefix[tests/netloc/tests.sh] + ) + + AC_CONFIG_COMMANDS([chmoding-scripts], [chmod +x] \ + hwloc_config_prefix[tests/hwloc/linux/test-topology.sh] \ + hwloc_config_prefix[tests/hwloc/x86/test-topology.sh] \ + hwloc_config_prefix[tests/hwloc/x86+linux/test-topology.sh] \ + hwloc_config_prefix[tests/hwloc/xml/test-topology.sh] \ + hwloc_config_prefix[tests/hwloc/linux/allowed/test-topology.sh] \ + hwloc_config_prefix[tests/hwloc/linux/gather/test-gather-topology.sh] \ + hwloc_config_prefix[tests/hwloc/wrapper.sh] \ + hwloc_config_prefix[utils/hwloc/hwloc-compress-dir] \ + hwloc_config_prefix[utils/hwloc/hwloc-gather-topology] \ + hwloc_config_prefix[utils/hwloc/test-hwloc-annotate.sh] \ + hwloc_config_prefix[utils/hwloc/test-hwloc-calc.sh] \ + hwloc_config_prefix[utils/hwloc/test-hwloc-compress-dir.sh] \ + hwloc_config_prefix[utils/hwloc/test-hwloc-diffpatch.sh] \ + hwloc_config_prefix[utils/hwloc/test-hwloc-distrib.sh] \ + hwloc_config_prefix[utils/hwloc/test-hwloc-info.sh] \ + hwloc_config_prefix[utils/hwloc/test-build-custom-topology.sh] \ + hwloc_config_prefix[utils/hwloc/test-fake-plugin.sh] \ + hwloc_config_prefix[utils/hwloc/test-parsing-flags.sh] \ + hwloc_config_prefix[utils/hwloc/test-hwloc-dump-hwdata/test-hwloc-dump-hwdata.sh] \ + hwloc_config_prefix[utils/lstopo/test-lstopo.sh] \ + hwloc_config_prefix[utils/lstopo/test-lstopo-shmem.sh] \ + hwloc_config_prefix[utils/netloc/infiniband/netloc_ib_gather_raw] \ + hwloc_config_prefix[tests/netloc/tests.sh]) + + # These links are only needed in standalone mode. It would + # be nice to m4 foreach this somehow, but whenever I tried + # it, I got obscure "invalid tag" errors from + # AC_CONFIG_LINKS. :-\ Since these tests are only run when + # built in standalone mode, only generate them in + # standalone mode. + AC_CONFIG_LINKS( + hwloc_config_prefix[tests/hwloc/ports/topology-solaris.c]:hwloc_config_prefix[hwloc/topology-solaris.c] + hwloc_config_prefix[tests/hwloc/ports/topology-solaris-chiptype.c]:hwloc_config_prefix[hwloc/topology-solaris-chiptype.c] + hwloc_config_prefix[tests/hwloc/ports/topology-aix.c]:hwloc_config_prefix[hwloc/topology-aix.c] + hwloc_config_prefix[tests/hwloc/ports/topology-windows.c]:hwloc_config_prefix[hwloc/topology-windows.c] + hwloc_config_prefix[tests/hwloc/ports/topology-darwin.c]:hwloc_config_prefix[hwloc/topology-darwin.c] + hwloc_config_prefix[tests/hwloc/ports/topology-freebsd.c]:hwloc_config_prefix[hwloc/topology-freebsd.c] + hwloc_config_prefix[tests/hwloc/ports/topology-netbsd.c]:hwloc_config_prefix[hwloc/topology-netbsd.c] + hwloc_config_prefix[tests/hwloc/ports/topology-hpux.c]:hwloc_config_prefix[hwloc/topology-hpux.c] + hwloc_config_prefix[tests/hwloc/ports/topology-bgq.c]:hwloc_config_prefix[hwloc/topology-bgq.c] + hwloc_config_prefix[tests/hwloc/ports/topology-opencl.c]:hwloc_config_prefix[hwloc/topology-opencl.c] + hwloc_config_prefix[tests/hwloc/ports/topology-cuda.c]:hwloc_config_prefix[hwloc/topology-cuda.c] + hwloc_config_prefix[tests/hwloc/ports/topology-nvml.c]:hwloc_config_prefix[hwloc/topology-nvml.c] + hwloc_config_prefix[tests/hwloc/ports/topology-rsmi.c]:hwloc_config_prefix[hwloc/topology-rsmi.c] + hwloc_config_prefix[tests/hwloc/ports/topology-levelzero.c]:hwloc_config_prefix[hwloc/topology-levelzero.c] + hwloc_config_prefix[tests/hwloc/ports/topology-gl.c]:hwloc_config_prefix[hwloc/topology-gl.c] + hwloc_config_prefix[tests/hwloc/ports/lstopo-windows.c]:hwloc_config_prefix[utils/lstopo/lstopo-windows.c] + hwloc_config_prefix[tests/hwloc/ports/lstopo-android.c]:hwloc_config_prefix[utils/lstopo/lstopo-android.c]) + ]) +])dnl + +#----------------------------------------------------------------------- + +AC_DEFUN([_HWLOC_PROG_DIFF], [ + AC_ARG_VAR(DIFF, [diff tool]) + AC_PATH_PROG([DIFF], [diff]) +]) + +AC_DEFUN([_HWLOC_CHECK_DIFF_U], [ + AC_REQUIRE([_HWLOC_PROG_DIFF]) + AC_MSG_CHECKING([whether diff accepts -u]) + if $DIFF -u /dev/null /dev/null 2> /dev/null + then + AC_MSG_RESULT([yes]) + HWLOC_DIFF_U="-u" + else + AC_MSG_RESULT([no]) + HWLOC_DIFF_U="" + fi + AC_SUBST([HWLOC_DIFF_U]) +]) + +AC_DEFUN([_HWLOC_CHECK_DIFF_W], [ + AC_REQUIRE([_HWLOC_PROG_DIFF]) + AC_MSG_CHECKING([whether diff accepts -w]) + if $DIFF -w /dev/null /dev/null 2> /dev/null + then + AC_MSG_RESULT([yes]) + HWLOC_DIFF_W="-w" + else + AC_MSG_RESULT([no]) + HWLOC_DIFF_W="" + fi + AC_SUBST([HWLOC_DIFF_W]) +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_pkg.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_pkg.m4 new file mode 100644 index 0000000000..9da70fa77a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_pkg.m4 @@ -0,0 +1,207 @@ +# Copyright © 2010-2020 Cisco Systems, Inc. All rights reserved. +# Copyright © 2015 Inria. All rights reserved. +# See COPYING in top-level directory. +# +# hwloc modification to the following PKG_* macros -- add HWLOC_ +# prefix to make it "safe" to embed these macros in other packages. +# Originally copied from the pkg-config package; see copyright and +# license below. + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# +# Copyright © 2004 Scott James Remnant . +# +# 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 program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# HWLOC_PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +# hwloc note: Per https://git.open-mpi.org/trac/hwloc/ticket/55, keep +# the environment variable $PKG_CONFIG (vs. renaming it +# $HWLOC_PKG_CONFIG). Short explanation: $PKG_CONFIG is a well-known +# environment variable that can be set by users to override what these +# .m4 macros do. There's no reason we should have a different env +# variable name (e.g., $HWLOC_PKG_CONFIG). So leave it named +# $PKG_CONFIG both here in this specific macro, and all the other +# macros that use it. +AC_DEFUN([HWLOC_PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + HWLOC_pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $HWLOC_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $HWLOC_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi + +fi[]dnl +])# HWLOC_PKG_PROG_PKG_CONFIG + +# HWLOC_PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to HWLOC_PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# +# Similar to HWLOC_PKG_CHECK_MODULES, make sure that the first instance of +# this or HWLOC_PKG_CHECK_MODULES is called, or make sure to call +# HWLOC_PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([HWLOC_PKG_CHECK_EXISTS], +[AC_REQUIRE([HWLOC_PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --silence-errors "$1"]); then + m4_ifval([$2], [$2], [:]) + m4_ifvaln([$3], [else + $3])dnl +fi]) + + +# _HWLOC_PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_HWLOC_PKG_CONFIG], +[if test -n "$PKG_CONFIG"; then + if test -n "$$1"; then + HWLOC_pkg_cv_[]$1="$$1" + else + HWLOC_PKG_CHECK_EXISTS([$3], + [HWLOC_pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [HWLOC_pkg_failed=yes]) + fi +else + HWLOC_pkg_failed=untried +fi[] +])# _HWLOC_PKG_CONFIG + +# _HWLOC_PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_HWLOC_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([HWLOC_PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + HWLOC_pkg_short_errors_supported=yes +else + HWLOC_pkg_short_errors_supported=no +fi[]dnl +])# _HWLOC_PKG_SHORT_ERRORS_SUPPORTED + + +# HWLOC_PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, FUNCTION, HEADER, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# HWLOC_PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to HWLOC_PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([HWLOC_PKG_CHECK_MODULES],[ + AC_REQUIRE([HWLOC_PKG_PROG_PKG_CONFIG])dnl + AC_ARG_VAR([HWLOC_]$1[_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl + AC_ARG_VAR([HWLOC_]$1[_LIBS], [linker flags for $1, overriding pkg-config])dnl + + HWLOC_pkg_failed=no + AC_MSG_CHECKING([for $1]) + + _HWLOC_PKG_CONFIG([HWLOC_][$1][_CFLAGS], [cflags], [$2]) + _HWLOC_PKG_CONFIG([HWLOC_][$1][_LIBS], [libs], [$2]) + + m4_define([_HWLOC_PKG_TEXT], [Alternatively, you may set the environment variables HWLOC_[]$1[]_CFLAGS +and HWLOC_[]$1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + + # Check for failure of pkg-config + if test $HWLOC_pkg_failed = yes; then + _HWLOC_PKG_SHORT_ERRORS_SUPPORTED + if test $HWLOC_pkg_short_errors_supported = yes; then + HWLOC_[]$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2" 2>&1` + else + HWLOC_[]$1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$HWLOC_[]$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + ifelse([$6], , [AC_MSG_ERROR(dnl +[Package requirements ($2) were not met: + +$HWLOC_$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_HWLOC_PKG_TEXT +])], + [AC_MSG_RESULT([no]) + $6]) + elif test $HWLOC_pkg_failed = untried; then + ifelse([$6], , [AC_MSG_FAILURE(dnl +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_HWLOC_PKG_TEXT + +To get pkg-config, see .])], + [AC_MSG_RESULT([cannot check without pkg-config]) + $6]) + else + AC_MSG_RESULT([yes]) + + # If we got good results from pkg-config, check that they + # actually work (i.e., that we can link against the resulting + # $LIBS). The canonical example why we do this is if + # pkg-config returns 64 bit libraries but ./configure was run + # with CFLAGS=-m32 LDFLAGS=-m32. pkg-config gave us valid + # results, but we'll fail if we try to link. So detect that + # failure now. + # There are also cases on Mac where pkg-config returns paths + # that do not actually exists until some magic is applied. + # https://www.open-mpi.org/community/lists/hwloc-devel/2015/03/4402.php + # So check whether we find the header as well. + hwloc_cflags_save=$CFLAGS + hwloc_cppflags_save=$CPPFLAGS + hwloc_libs_save=$LIBS + CFLAGS="$CFLAGS $HWLOC_pkg_cv_HWLOC_[]$1[]_CFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_pkg_cv_HWLOC_[]$1[]_CFLAGS" + LIBS="$LIBS $HWLOC_pkg_cv_HWLOC_[]$1[]_LIBS" + AC_CHECK_HEADER([$4], [ + AC_CHECK_FUNC([$3], [hwloc_result=yes], [hwloc_result=no]) + ], [hwloc_result=no]) + CFLAGS=$hwloc_cflags_save + CPPFLAGS=$hwloc_cppflags_save + LIBS=$hwloc_libs_save + + AC_MSG_CHECKING([for final $1 support]) + AS_IF([test "$hwloc_result" = "yes"], + [HWLOC_[]$1[]_CFLAGS=$HWLOC_pkg_cv_HWLOC_[]$1[]_CFLAGS + HWLOC_[]$1[]_LIBS=$HWLOC_pkg_cv_HWLOC_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + ifelse([$5], , :, [$5])], + [AC_MSG_RESULT([no]) + ifelse([$6], , :, [$6])]) + fi[]dnl +])# HWLOC_PKG_CHECK_MODULES diff --git a/3rd-party/hwloc-2.7.1/config/libtool-big-sur-fixup.patch b/3rd-party/hwloc-2.7.1/config/libtool-big-sur-fixup.patch new file mode 100644 index 0000000000..be0251758c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/libtool-big-sur-fixup.patch @@ -0,0 +1,32 @@ +Updated from libtool.m4 patch: + +[PATCH] Improve macOS version detection to support macOS 11 and simplify legacy logic + +Signed-off-by: Jeremy Huddleston Sequoia + +--- hwloc/configure.old 2020-11-25 16:03:04.225097149 +0100 ++++ hwloc/configure 2020-11-25 16:02:29.368995613 +0100 +@@ -8846,16 +8846,13 @@ + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; +- darwin*) # darwin 5.x on +- # if running on 10.5 or later, the deployment target defaults +- # to the OS version, if on x86, and 10.4, the deployment +- # target defaults to 10.4. Don't you love it? +- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in +- 10.0,*86*-darwin8*|10.0,*-darwin[91]*) +- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; +- 10.[012][,.]*) +- _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; +- 10.*) ++ darwin*) ++ # Open MPI patched for Darwin / MacOS Big Sur. See ++ # http://lists.gnu.org/archive/html/bug-libtool/2015-07/msg00001.html ++ case ${MACOSX_DEPLOYMENT_TARGET},$host in ++ 10.[012],*|,*powerpc*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; diff --git a/3rd-party/hwloc-2.7.1/config/netloc.m4 b/3rd-party/hwloc-2.7.1/config/netloc.m4 new file mode 100644 index 0000000000..7c4b0025d8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/netloc.m4 @@ -0,0 +1,102 @@ +dnl -*- Autoconf -*- +dnl +dnl Copyright © 2014 Cisco Systems, Inc. All rights reserved. +dnl +dnl Copyright © 2014-2018 Inria. All rights reserved. +dnl See COPYING in top-level directory. + +# Main hwloc m4 macro, to be invoked by the user +# +# Expects: +# 1. Configuration prefix +# 2. What to do upon success +# 3. What to do upon failure +# 4. If non-empty, print the announcement banner +# +AC_DEFUN([NETLOC_SETUP_CORE],[ + AC_REQUIRE([HWLOC_SETUP_CORE]) + AC_REQUIRE([AC_PROG_CC]) + + AS_IF([test "x$4" != "x"], + [cat </dev/null` + MPI_LDADD=`mpicc -showme:link 2>/dev/null` + AC_SUBST(MPI_CPPFLAGS) + AC_SUBST(MPI_LDADD) + break;]) + + AC_CHECK_PROG([xz],[xz],[yes],[no]) +])dnl + +AC_DEFUN([NETLOC_DO_AM_CONDITIONALS], [ + AM_CONDITIONAL([BUILD_NETLOC], [test "$netloc_happy" = "yes"]) + AM_CONDITIONAL([BUILD_NETLOCSCOTCH], [test "x$scotch_found_headers" = "xyes"]) + AM_CONDITIONAL([BUILD_MPITOOLS], [test "x$mpi_found_headers" = "xyes"]) + AM_CONDITIONAL([FOUND_XZ], [test "x$xz" = xyes]) +])dnl diff --git a/3rd-party/hwloc-2.7.1/config/test-driver b/3rd-party/hwloc-2.7.1/config/test-driver new file mode 100644 index 0000000000..be73b80adf --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/test-driver @@ -0,0 +1,153 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 2011-2021 Free Software Foundation, Inc. +# +# 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, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <"$log_file" +"$@" >>"$log_file" 2>&1 +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>"$log_file" + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/3rd-party/hwloc-2.7.1/configure.ac b/3rd-party/hwloc-2.7.1/configure.ac new file mode 100644 index 0000000000..efad7cc12b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/configure.ac @@ -0,0 +1,357 @@ +# -*- shell-script -*- +# +# Copyright © 2009 CNRS +# Copyright © 2009-2022 Inria. All rights reserved. +# Copyright © 2009, 2011-2012 Université Bordeaux +# Copyright © 2009-2020 Cisco Systems, Inc. All rights reserved. +# +# See COPYING in top-level directory. +# +# Additional copyrights may follow +# +# $HEADER$ +# + +#################################################################### +# Autoconf, Automake, and Libtool bootstrapping +#################################################################### + +AC_INIT([hwloc], + [m4_normalize(esyscmd([sh config/hwloc_get_version.sh VERSION --version]))], + [https://github.com/open-mpi/hwloc/issues], [hwloc]) +AC_PREREQ(2.63) +AC_CONFIG_AUX_DIR(./config) +# Note that this directory must *exactly* match what was specified via +# -I in ACLOCAL_AMFLAGS in the top-level Makefile.am. +AC_CONFIG_MACRO_DIR(./config) + +cat <0 and <3), +# but it is necessary in AM 1.12.x. +m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) + +LT_INIT([dlopen win32-dll]) +LT_LANG([C]) +LT_LANG([C++]) + +#################################################################### +# Setup C, C++ compilers +#################################################################### + +CFLAGS_save=$CFLAGS +AC_PROG_CC +AM_PROG_CC_C_O +# AC_PROG_CC_C99 obsolete, detected inside AC_PROG_CC, since autoconf 2.70 +m4_version_prereq([2.70], [], [AC_PROG_CC_C99]) +CFLAGS=$CFLAGS_save + +#################################################################### +# CLI arguments +#################################################################### + +# Define hwloc's configure arguments +HWLOC_DEFINE_ARGS + +# If debug mode, add -g +AS_IF([test "$hwloc_debug" = "1"], + [CFLAGS="$CFLAGS -g"]) + +# If the user didn't specifically ask for embedding mode, default to +# standalone mode +AS_IF([test "$enable_embedded_mode" != "yes"], + [AS_IF([test ! -d "$srcdir/doc"], + [AC_MSG_WARN([The hwloc source tree looks incomplete for a standalone]) + AC_MSG_WARN([build. Perhaps this hwloc tree is intended for an embedded]) + AC_MSG_WARN([build? Try using the --enable-embedded-mode switch.]) + AC_MSG_ERROR([Cannot build standalone hwloc])], + [HWLOC_BUILD_STANDALONE])]) + +#################################################################### +# Setup for the hwloc API +#################################################################### + +AC_SUBST([libhwloc_so_version]) +AC_SUBST([libhwloc_so_name]) + +# Setup the hwloc core +HWLOC_SETUP_CORE([], [], [AC_MSG_ERROR([Cannot build hwloc core])], [1]) + +#################################################################### +# Setup the netloc API +#################################################################### + +AC_SUBST([libnetloc_so_version]) + +AC_ARG_ENABLE([netloc], + [AS_HELP_STRING([--enable-netloc], + [The Netloc functionality is disabled by default. Using --enable-netloc will cause configure to abort if Netloc cannot be build (e.g., not supported on your platform).]) + ]) + +AS_IF([test "$enable_netloc" = "yes" -a "$hwloc_mode" = "standalone"], + [NETLOC_SETUP_CORE([], [], + [AS_IF([test "$enable_netloc" = "yes"], + [AC_MSG_ERROR([Cannot build netloc core])]) + ], + [1]) + ]) + +#################################################################### +# Version information +#################################################################### + +# HWLOC_VERSION was setup by HWLOC_SETUP_CORE above. + +# Make configure depend on the VERSION file, since it's used in AC_INIT +AC_SUBST([CONFIGURE_DEPENDENCIES], ['$(top_srcdir)/VERSION']) + +# Override/fixup the version numbers set by AC_INIT, since on +# developer builds, there's no good way to know what the version is +# before running configure :(. We only use the base version number +# for the version set in AC_INIT. This will always match reality +# because we add the VERSION file (the only way to change the +# major.minor.release{greek}) into the configure dependencies. +PACKAGE_VERSION="$HWLOC_VERSION" +PACKAGE_STRING="${PACKAGE_NAME} ${PACKAGE_VERSION}" +VERSION="${PACKAGE_VERSION}" + +# For standalone configurations, we also include a .so version number. + +. $srcdir/VERSION + +libhwloc_so_version_current=`echo $libhwloc_so_version | cut -d: -f1` +libhwloc_so_version_age=`echo $libhwloc_so_version | cut -d: -f3` +libhwloc_so_name=`expr $libhwloc_so_version_current - $libhwloc_so_version_age` + +#################################################################### +# Setup the rest of the infrastructure +#################################################################### + +# Setup hwloc's docs, utils, and tests +AS_IF([test "$hwloc_mode" = "standalone"], + [HWLOC_SETUP_DOCS + HWLOC_SETUP_UTILS + HWLOC_SETUP_TESTS]) + +cat <,,..." for --index/attrs/text but "," is not a completion word separator + elif [[ $COMP_CWORD -ge 3 && "$prev" == "=" && " --horiz --vert --rect --text --no-text --index --no-index --attrs --no-attrs --no-factorize --factorize " =~ " ${COMP_WORDS[COMP_CWORD-2]} " ]] ; then + COMPREPLY=( `compgen -W "${TYPES[*]}" -- "$cur"` ) + elif [[ "$cur" == "=" && "--factorize" = "$prev" ]] ; then + COMPREPLY=( `compgen -W "${TYPES[*]}"` "" "" ) + else + case "$prev" in + --of | --output-format) + COMPREPLY=( `compgen -W "${OUTPUT_FORMAT[*]}" -- "$cur"` ) + ;; + --only | --ignore) + COMPREPLY=( `compgen -W "${TYPES[*]}" -- "$cur"` ) + ;; + --filter) + COMPREPLY=( `compgen -W "${TYPES[*]/%/:} cache: icache: io:" -- "$cur"` ) && compopt -o nospace + ;; + --restrict) + COMPREPLY=( `compgen -W "binding " -- "$cur"` ) + ;; + -i | --input) + _filedir xml + ;; + --if | --input-format) + COMPREPLY=( `compgen -W "${INPUT_FORMAT[*]}" -- "$cur"` ) + ;; + --pid) + COMPREPLY=( "" "" ) + ;; + --allow) + COMPREPLY=( `compgen -W "all local nodeset=" -- "$cur"` ) + ;; + --restrict-flags | --export-xml-flags | --export-synthetic-flags | --fontsize | --gridsize | --linespacing | --thickness) + COMPREPLY=( "" "" ) + ;; + --append-legend) + COMPREPLY=( "" "" ) + ;; + --palette) + COMPREPLY=( `compgen -W "grey" "greyscale" "default" "colors" "white" "none" -- "$cur"` ) + ;; + --binding-color | --disallowed-color | --top-color) + COMPREPLY=( `compgen -W "none <#rrggbb>" -- "$cur"` ) + ;; + --children-order) + COMPREPLY=( `compgen -W "plain memoryabove" -- "$cur"` ) + ;; + --distances-transform) + COMPREPLY=( `compgen -W "links merge-switch-ports transitive-closure" -- "$cur"` ) + ;; + esac + fi +} +complete -F _lstopo lstopo +complete -F _lstopo lstopo-no-graphics +complete -F _lstopo hwloc-ls + + +_hwloc_info(){ + local TYPES=("Machine" "Misc" "Group" "NUMANode" "MemCache" "Package" "Die" "L1" "L2" "L3" "L4" "L5" "L1i" "L2i" "L3i" "Core" "Bridge" "PCIDev" "OSDev" "PU") + local FILTERKINDS=("none" "all" "structure" "important") + local OPTIONS=(--objects + --topology + --support + -v --verbose + -s --silent + --ancestors + --ancestor + --children + --descendants + --local-memory + --local-memory-flags + --best-memattr + -n + --restrict + --restrict-flags + --filter + --no-icaches + --no-io + --no-bridges + --whole-io + --input -i + --input-format --if + --thissystem + --pid + --disallowed --whole-system + -l --logical + -p --physical + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + elif [[ $COMP_CWORD -ge 3 && "${COMP_WORDS[COMP_CWORD-2]}" == "--filter" && "$cur" == ":" ]] ; then + COMPREPLY=( `compgen -W "${FILTERKINDS[*]}"` ) + elif [[ $COMP_CWORD -ge 4 && "${COMP_WORDS[COMP_CWORD-3]}" == "--filter" && "$prev" == ":" ]] ; then + COMPREPLY=( `compgen -W "${FILTERKINDS[*]}" -- "$cur"` ) + else + case "$prev" in + --restrict) + COMPREPLY=( `compgen -W "binding " -- "$cur"` ) + ;; + --restrict-flags) + COMPREPLY=( "" "" ) + ;; + -i | --input) + _filedir xml + ;; + --if | --input-format) + COMPREPLY=( `compgen -W "${INPUT_FORMAT[*]}" -- "$cur"` ) + ;; + --pid) + COMPREPLY=( "" "" ) + ;; + --filter) + COMPREPLY=( `compgen -W "${TYPES[*]/%/:} cache: icache: io:" -- "$cur"` ) && compopt -o nospace + ;; + --ancestor | --descendants) + COMPREPLY=( `compgen -W "${TYPES[*]}" -- "$cur"` ) + ;; + --local-memory-flags) + COMPREPLY=( "" "" ) + ;; + --best-memattr) + COMPREPLY=( "" "" ) + ;; + esac + fi +} +complete -F _hwloc_info hwloc-info + + +_hwloc_bind(){ + local OPTIONS=(--cpubind + --membind + --mempolicy + --best-memattr + --logical -l + --physical -p + --single + --strict + --get + -e --get-last-cpu-location + --nodeset + --pid + --tid + --taskset + --restrict + --restrict-flags + --disallowed --whole-system + --hbm + --no-hbm + --no-smt --no-smt=N + -f --force + -q --quiet + -v --verbose + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + else + case "$prev" in + --mempolicy) + COMPREPLY=( `compgen -W "default firsttouch bind interleave nexttouch" -- "$cur"` ) + ;; + --pid) + COMPREPLY=( "" "" ) + ;; + --tid) + COMPREPLY=( "" "" ) + ;; + --restrict) + COMPREPLY=( "" "" ) + ;; + --restrict-flags) + COMPREPLY=( "" "" ) + ;; + --best-memattr) + COMPREPLY=( "" "" ) + ;; + esac + fi +} +complete -F _hwloc_bind hwloc-bind + + +_hwloc_calc(){ + local TYPES=("Machine" "Misc" "Group" "NUMANode" "MemCache" "Package" "Die" "L1" "L2" "L3" "L4" "L5" "L1i" "L2i" "L3i" "Core" "Bridge" "PCIDev" "OSDev" "PU") + local OPTIONS=(-N --number-of + -I --intersect + -H --hierarchical + --largest + --local-memory + --local-memory-flags + --best-memattr + -l --logical + -p --physical + --li --logical-input + --lo --logical-output + --pi --physical-input + --po --physical-output + -n --nodeset + --ni --nodeset-input + --no --nodeset-output + --sep + --taskset + --single + --restrict + --restrict-flags + --disallowed --whole-system + --cpukind + --input -i + --input-format --if + --no-smt --no-smt=N + -q --quiet + -v --verbose + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + else + case "$prev" in + -N | --number-of | -I | --intersect) + COMPREPLY=( `compgen -W "${TYPES[*]}" -- "$cur"` ) + ;; + -H | --hierarchical) + COMPREPLY=( "...." "" ) + ;; + --sep) + COMPREPLY=( "" "" ) + ;; + -i | --input) + _filedir xml + ;; + --if | --input-format) + COMPREPLY=( `compgen -W "${INPUT_FORMAT[*]}" -- "$cur"` ) + ;; + --restrict) + COMPREPLY=( "" "" ) + ;; + --restrict-flags) + COMPREPLY=( "" "" ) + ;; + --local-memory-flags) + COMPREPLY=( "" "" ) + ;; + --best-memattr) + COMPREPLY=( "" "" ) + ;; + --cpukind) + COMPREPLY=( "=" "" "" ) + ;; + esac + fi +} +complete -F _hwloc_calc hwloc-calc + + +_hwloc_annotate(){ + local OPTIONS=(--ci --ri --cu --cd --version -h --help) + local cur=${COMP_WORDS[COMP_CWORD]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"`) + fi + _filedir xml +} +complete -F _hwloc_annotate hwloc-annotate + + +_hwloc_diff(){ + local OPTIONS=(--refname + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + else + case "$prev" in + --refname) + COMPREPLY=( "" "") + ;; + esac + fi + _filedir xml +} +complete -F _hwloc_diff hwloc-diff + + +_hwloc_patch(){ + local OPTIONS=(--R --reverse + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + fi + _filedir xml +} +complete -F _hwloc_patch hwloc-patch + + +_hwloc_compress_dir(){ + local OPTIONS=(-R --reverse + -v --verbose + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + fi + _filedir -d +} +complete -F _hwloc_compress_dir hwloc-compress-dir + + +_hwloc_distrib(){ + local TYPES=("Machine" "Misc" "Group" "NUMANode" "MemCache" "Package" "Die" "L1" "L2" "L3" "L4" "L5" "L1i" "L2i" "L3i" "Core" "Bridge" "PCIDev" "OSDev" "PU") + local OPTIONS=(--ignore + --from + --to + --at + --reverse + --restrict + --restrict-flags + --disallowed --whole-system + --input -i + --input-format --if + --single + --taskset + -v --verbose + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + else + case "$prev" in + --ignore | --from | --to | --at) + COMPREPLY=( `compgen -W "${TYPES[*]}" -- "$cur"` ) + ;; + -i | --input) + _filedir xml + ;; + --if | --input-format) + COMPREPLY=( `compgen -W "${INPUT_FORMAT[*]}" -- "$cur"` ) + ;; + --restrict) + COMPREPLY=( "" "" ) + ;; + --restrict-flags) + COMPREPLY=( "" "" ) + ;; + esac + fi +} +complete -F _hwloc_distrib hwloc-distrib + + +_hwloc_ps(){ + local OPTIONS=(-a + --pid + --name + --uid + -l --logical + -p --physical + -c --cpuset + --single-ancestor + -t --threads + -e --get-last-cpu-location + --pid-cmd + --short-name + --disallowed --whole-system + --json-server + --json-port + -v --verbose + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + else + case "$prev" in + --name) + COMPREPLY=( "" "" ) + ;; + --uid) + COMPREPLY=( "" "all" "" ) + ;; + --pid) + COMPREPLY=( "" "" ) + ;; + --pid-cmd) + _filedir + ;; + --json-port) + COMPREPLY=( "" "" ) + ;; + esac + fi +} +complete -F _hwloc_ps hwloc-ps + + +_hwloc_gather_cpuid(){ + local OPTIONS=(-c + -s --silent + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + else + case "$prev" in + -c) + COMPREPLY=( "" "" ) + ;; + esac + fi +} +complete -F _hwloc_gather_cpuid hwloc-gather-cpuid + + +_hwloc_gather_topology(){ + local OPTIONS=(--io + --dmi + --no-cpuid + --keep + --version + -h --help + ) + local cur=${COMP_WORDS[COMP_CWORD]} + + if [[ $COMP_CWORD == 1 || $cur == -* ]] ; then + COMPREPLY=( `compgen -W "${OPTIONS[*]}" -- "$cur"` ) + fi +} +complete -F _hwloc_gather_topology hwloc-gather-topology diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/Makefile.am b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/Makefile.am new file mode 100644 index 0000000000..8c71ff3631 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/Makefile.am @@ -0,0 +1,13 @@ +# Copyright © 2019 Inria. All rights reserved. +# See COPYING in top-level directory. + +jsdir = $(pkgdatadir)/hwloc-ps.www +dist_js_DATA = client.js \ + package.json \ + README + +jsassetsdir = $(jsdir)/assets +dist_jsassets_DATA = assets/index.html \ + assets/main.css \ + assets/script.js \ + assets/style.css diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/README b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/README new file mode 100644 index 0000000000..009c53321d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/README @@ -0,0 +1,61 @@ +This tool displays process and thread binding in an interative web page. + + +1) Basic Usage + +Run the hwloc-ps tool in JSON server mode: + + $ hwloc-ps --json-server + server running on port 8888... + +Export the topology as a SVG file using the native backend: + + $ lstopo filename.svg --of nativesvg + +Now run the client side for displaying the binding: + + $ cd /path/to/hwloc-ps.www/ + $ node client.js /path/to/filename.svg + +This should open a webpage in your browser. +Otherwise add -u to see the URL that you should open (usually http://localhost:3000). + + +2) Installing node.js and JS dependencies + +The "node" command is available in the "nodejs" package in most Linux distributions, +but you should rather install the "npm" package to get additional utilities: + + # apt instal npm + # yum install npm + +Then install the dependencies needed by client.js: + + $ cd /path/to/hwloc-ps.www/ + $ npm install + +If you don't have write-access to the hwloc-ps.www/ directory, +copy it somewhere else, run "npm install" from there, +and then run the client from there: + + $ cp -a /path/to/hwloc-ps.www/ $HOME/myhwloc-ps.www/ + $ cd $HOME/myhwloc-ps.www/ + $ npm install + $ node client.js /path/to/filename.svg + + +3) Running on a remote server + +This tool is often useful for debugging process placement on remote servers, hence: + +* hwloc-ps and lstopo should run on that remote server + (this requires a recent hwloc on the remote side). + +* you must copy the SVG file back to your machine: + + $ scp target:/path/to/filename.svg . + +* if the target machine port 8888 is not directly accessible, you may + have to forward its 8888 port: + + $ ssh target -L 8888:localhost:8888 -Nf diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/index.html b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/index.html new file mode 100644 index 0000000000..9e253f6a3f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/index.html @@ -0,0 +1,65 @@ + + + + + + + + Dynamic SVG + + + + + + + + + Your browser does not support SVG. + +
      + +
      + + +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/main.css b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/main.css new file mode 100644 index 0000000000..4d1ab75388 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/main.css @@ -0,0 +1,115 @@ +/* Copyright © 2019 Inria. All rights reserved. */ + +/*////////////////////////////////////////////////////////////////// +[ Scroll bar ]*/ +.js-pscroll { + position: relative; + overflow: hidden; +} + +.table100 .ps__rail-y { + width: 9px; + background-color: transparent; + opacity: 1 !important; + right: 5px; +} + +.table100 .ps__rail-y::before { + content: ""; + display: block; + position: absolute; + background-color: #ebebeb; + border-radius: 5px; + width: 50%; + height: calc(100% - 30px); + top: 15px; +} + +.table100 .ps__rail-y .ps__thumb-y { + width: 50%; + background-color: transparent; + opacity: 1 !important; +} + +.table100 .ps__rail-y .ps__thumb-y::before { + content: ""; + display: block; + position: absolute; + background-color: #cccccc; + border-radius: 5px; + width: 50%; + height: calc(100% - 30px); + left: 0; + top: 15px; +} + +/*////////////////////////////////////////////////////////////////// +[ Table ]*/ +.table100 { + margin-top: 30px; + width: 22.5%; + background-color: #5d5e60; + min-width: 250px; + left: 38.8%; +} + +.column1{ + left:0; +} + +th { + width: 33%; + font-weight: unset; +} + +td { + width: 33%; +} + +tr, table, thead { + width: 100%; +} + + +.table100-head th { + padding-top: 10px; + padding-bottom: 10px; +} + +/*================================================================== +Table*/ +.table100 { + position: relative; + padding-top: 60px; +} + +.table100-head { + position: absolute; + width: 100%; + top: 0; + left: 0; +} + +.table100-body { + max-height: 585px; + overflow: auto; +} + +.table100.ver2 th { + font-size: 13px; + color: white; + line-height: 1.4; + background-color: transparent; +} + +.table100.ver2 td { + font-size: 11px; + color: white; + line-height: 1.4; + padding-left: 22px; + padding-right: 17px; +} + +.table100.ver2 { + border-radius: 10px; +} diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/script.js b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/script.js new file mode 100644 index 0000000000..8bdbe0ba3a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/script.js @@ -0,0 +1,489 @@ +/* Copyright © 2019 Inria. All rights reserved. */ + +function start(svgObject){ + const texts = svgObject.getElementsByTagName('text') + for (let text of texts) { + text.setAttribute("style", text.getAttribute("style") + "; pointer-events:none") + } +} + +async function createProcesses(svgdoc, req, json = null){ + await clear(svgdoc) + clearTable() + if(!json){ + response = await fetch("/" + req) + json = await response.json() + } + json.forEach(proc => { + displayProcess(svgdoc, proc, req) + }) + createTooltip(svgdoc) + if (/^proc\/\d+$/.test(req)) { + //only show if single PID + displayInfo(svgdoc, json) + //threads auto-enabled for single PID + document.getElementById('threads').checked = true + } +} + +async function displayProcess(svgdoc, proc, req = null){ + if(!proc.object) + return + //create table except when looking at a single process + if(!/proc\/\d+$/.test(req)) + fillTable(svgdoc, proc) + bullet(svgdoc, proc, "") + text(svgdoc, proc, "") + if(proc.threads){ + proc.threads.forEach(async thread =>{ + if(thread.object){ + bullet(svgdoc, thread, "thread") + text(svgdoc, thread, "thread") + } + }) + } +} + +function bullet(svgdoc, obj, objType){ + let bulletCircle = svgdoc.getElementById("bulletCircle" + objType + "_" + obj.object.replace(':','_')) + //if a bullet doesn't already exist, if it does, just add the process id to the bullet attributes + if(!bulletCircle){ + let id = obj.object.replace(':','_')+"_rect" + let rect = svgdoc.getElementById(id) + + bulletCircle = svgdoc.createElementNS("http://www.w3.org/2000/svg","rect") + + //difference thread and process + if(objType === "thread"){ + bulletCircle.setAttribute("thread", true) + bulletCircle.setAttribute("height", "15") + bulletCircle.setAttribute("fill", "#7cacf9") + bulletCircle.setAttribute("y", rect.y.animVal.value + 12) + }else{ + bulletCircle.setAttribute("y", rect.y.animVal.value - 5) + bulletCircle.setAttribute("height", "15") + bulletCircle.setAttribute("fill", "#FFFFFF") + } + + //set the bullet in the middle if the process is on machine_O + if(id == "Machine_0_rect"){ + const svg = svgdoc.getElementsByTagName('svg')[0] + bulletCircle.setAttribute("x", svg.width.baseVal.value / 2 - 10) + bulletCircle.setAttribute("y", 5) + if(objType === "thread"){ + bulletCircle.setAttribute("x", svg.width.baseVal.value / 2 + 45) + bulletCircle.setAttribute("y", 5) + } + }else{ + bulletCircle.setAttribute("x", rect.x.animVal.value-5) + } + bulletCircle.setAttribute("rx", 10) + bulletCircle.setAttribute("ry", 10) + bulletCircle.setAttribute("circle", true) + bulletCircle.setAttribute("stroke-width", "1") + bulletCircle.setAttribute("stroke", "#000000") + bulletCircle.classList.add("tooltip-trigger") + rect.parentNode.appendChild(bulletCircle) + bulletCircle.id = "bulletCircle" + objType + "_" + obj.object.replace(':','_') + let secondId + if(objType === "thread") + secondId = "thread id : " + obj.PID + else + secondId = "process id : " + obj.PID + bulletCircle.setAttribute('secondId', secondId) + }else { + let secondId = bulletCircle.getAttribute('secondId') + if(objType === "thread") + secondId += ';' + "thread id : " + obj.PID + else + secondId += ';' + "process id : " + obj.PID + bulletCircle.setAttribute('secondId', secondId) + } +} + +function text(svgdoc, obj, objType){ + let id = obj.object.replace(':','_')+"_rect" + let rect = svgdoc.getElementById(id) + let bulletText = svgdoc.createElementNS("http://www.w3.org/2000/svg","text") + let bulletCircle = svgdoc.getElementById("bulletCircle" + objType + "_" + obj.object.replace(':','_')) + + //if a bullet doesn't already exist, if it does, increment the text + if(!svgdoc.getElementById("bulletText" + objType + "_" + obj.object.replace(':','_'))){ + + bulletText.setAttribute("circle", true) + + //set the text in the middle if the process is on machine_O + if(id == "Machine_0_rect"){ + const svg = svgdoc.getElementsByTagName('svg')[0] + bulletText.setAttribute("x", svg.width.baseVal.value / 2 - 3) + bulletText.setAttribute("y", 15) + if(objType === "thread"){ + bulletText.setAttribute("x", svg.width.baseVal.value / 2 + 52) + bulletText.setAttribute("y", 15) + } + }else{ + bulletText.setAttribute("x", rect.x.animVal.value+2) + bulletText.setAttribute("y", rect.y.animVal.value+6) + } + + //difference thread and process + if(objType === "thread" && id != "Machine_0_rect"){ + bulletText.setAttribute("thread", true) + bulletText.setAttribute("y", rect.y.animVal.value+22) + } + + bulletText.setAttribute("style", bulletText.getAttribute("style") + "; pointer-events:none") + bulletText.setAttribute("font-size", "10px") + updateBulletText(bulletText, obj.PID, bulletCircle) + bulletText.id = "bulletText" + objType + "_" + obj.object.replace(':','_') + rect.parentNode.appendChild(bulletText) + }else{ + let text = svgdoc.getElementById("bulletText" + objType + "_" + obj.object.replace(':','_')) + updateBulletText(text, findPid(text, '+'), bulletCircle) + + //set the text in the middle if the process is on machine_O + if(id == "Machine_0_rect"){ + if (text.textContent == 10) + text.setAttribute("x", parseInt(text.getAttribute('x')) - 3) + else if(text.textContent == 100) + text.setAttribute("x", parseInt(text.getAttribute('x')) - 4) + return + } + } +} + +async function updateBulletText(text, pid, bulletCircle){ + text.textContent = await pid + let length = text.getComputedTextLength() + bulletCircle.setAttribute("width", length + 15) +} + +function findPid(text, op){ + let nb + if(!text.getAttribute('nb')){ + nb = "[2]" + text.setAttribute('nb', nb) + }else{ + nb = text.getAttribute('nb') + nb = nb.replace('[','') + nb = nb.replace(']','') + if(op == '+') + nb = parseInt(nb) + 1 + else{ + nb = parseInt(nb) - 1 + } + nb = '[' + nb + ']' + text.setAttribute('nb', nb) + } + return nb +} + +function clear(svgdoc){ + document.getElementById('searchId').value = '' + const info = document.getElementById('info') + info.classList = 'hidden' + const infoNotFound = document.getElementById('info-not-found') + infoNotFound.classList = 'hidden' + svgElements = svgdoc.getElementsByTagName('svg')[0].children + let i = 0; + for(element of svgElements){ + if(element.id.includes('bulletCircle')) + i += 2 + } + if(i == 0) + return + for(i ; i >= 0 ; i--){ + svgElements[svgElements.length - 1].remove() + } +} + +function createTooltip(svgdoc){ + if(svgdoc.getElementById('tooltip')) + svgdoc.getElementById('tooltip').remove() + //Create tooltip to display process id + const g = svgdoc.createElementNS("http://www.w3.org/2000/svg","g") + const blackRect = svgdoc.createElementNS("http://www.w3.org/2000/svg",'rect') + const whiteRect = svgdoc.createElementNS("http://www.w3.org/2000/svg",'rect') + const tooltip = svgdoc.createElementNS("http://www.w3.org/2000/svg",'text') + + blackRect.setAttribute('fill','black') + blackRect.setAttribute('opacity','0.4') + blackRect.setAttribute('rx','2') + blackRect.setAttribute('ry','2') + blackRect.setAttribute('x','2') + blackRect.setAttribute('y','-8') + blackRect.setAttribute('height','11') + blackRect.setAttribute('opacity','0.4') + whiteRect.setAttribute('y','-10') + whiteRect.setAttribute('fill','white') + whiteRect.setAttribute('rx','2') + whiteRect.setAttribute('ry','2') + whiteRect.setAttribute('height','11') + tooltip.setAttribute('x','4') + tooltip.setAttribute('y','6') + + g.setAttribute('visibility', 'hidden') + g.id = "tooltip" + + g.appendChild(blackRect) + g.appendChild(whiteRect) + g.appendChild(tooltip) + svgdoc.getElementsByTagName('svg')[0].appendChild(g) + + let triggers = svgdoc.getElementsByClassName('tooltip-trigger') + for (let i = 0; i < triggers.length; i++) { + triggers[i].onmousemove = showTooltip + triggers[i].onmouseout = hideTooltip + triggers[i].onclick = async function(){ + //on click : display process info for the first process in the bullet + procs = triggers[i].getAttribute('secondId').split(";") + let data = new Array() + response = await fetch("/json") + json = await response.json() + await procs.forEach(proc => { + json.forEach(jsonProcess => { + if(proc.substring(13) == jsonProcess.PID) + data.push(jsonProcess) + }) + }) + let req = data.length == 1 ? "proc/" + data[0].PID : null + createProcesses(svgdoc, req, data) + } + } + + function showTooltip(evt) { + const tooltip = svgdoc.getElementById('tooltip') + let tooltipText = tooltip.getElementsByTagName('text')[0] + let tooltipRects = tooltip.getElementsByTagName('rect') + + //clear tooltip + while(tooltipText.firstChild){ + tooltipText.removeChild(tooltipText.firstChild) + for (let i = 0; i < tooltipRects.length; i++) { + tooltipRects[i].setAttribute("height", parseInt(tooltipRects[i].getAttribute("height")) - 15) + } + } + + //display all processes id in the bullet + let text = evt.target.getAttribute('secondId') + let tspan + text = text.split(';') + let length = 0 + for (str of text ) { + //create the text element + tspan = svgdoc.createElementNS("http://www.w3.org/2000/svg",'tspan') + if(text.indexOf(str) !== 0) + tspan.setAttribute('dy', '1em') + tspan.setAttribute('x', '0') + tspan.textContent = str + tooltipText.appendChild(tspan) + //find the length of the longest text + if(tspan.getComputedTextLength() > length) + length = tspan.getComputedTextLength() + //ajust the height of the tooltip element ( and its shadow ) + for (let i = 0; i < tooltipRects.length; i++) { + tooltipRects[i].setAttribute("height", parseInt(tooltipRects[i].getAttribute("height")) + 15) + } + //display "..." if there is more than 5 processes + if(text.indexOf(str) === 5){ + tspan.textContent = '\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0...' + tooltipText.appendChild(tspan) + break + } + } + //set the tooltip ( and its shadow ) width according to the longest element + for (let i = 0; i < tooltipRects.length; i++) { + tooltipRects[i].setAttributeNS(null, "width", length + 8) + } + //display the tooltip at the mouse coordonates + let CTM = svgdoc.getElementsByTagName('svg')[0].getScreenCTM() + let x = (evt.clientX - CTM.e + 6) / CTM.a; + let y = (evt.clientY - CTM.f + 20) / CTM.d; + tooltip.setAttributeNS(null, "transform", "translate(" + x + " " + y + ")"); + tooltip.setAttributeNS(null, "visibility", "visible") + } + + function hideTooltip() { + const tooltip = svgdoc.getElementById('tooltip') + tooltip.setAttributeNS(null, "visibility", "hidden") + } +} + +async function displayInfo(svgdoc, data){ + //handle 2 div : one if the process is found, and one if it isn't + const info = document.getElementById('info') + const infoNotFound = document.getElementById('info-not-found') + info.classList = 'hidden' + infoNotFound.classList = 'hidden' + + if(!data[0].object){ + infoNotFound.classList.toggle('hidden') + return + } + const infos = info.children[0].children + infos[0].innerHTML = 'Process: ' + data[0].PID + infos[1].innerHTML = 'Name: ' + data[0].name + infos[2].innerHTML = 'Object: ' + data[0].object.replace(':',' L#') + if(data[0].threads){ + infos[3].innerHTML = 'Threads: ' + (data[0].threads.length - 1) + }else{ + infos[3].classList = 'hidden' + } + info.classList.toggle('hidden') +} + +function fillTable(svgdoc, proc){ + document.getElementById('processTable').classList = "table100 ver2 m-b-110" + const table = document.getElementById('table') + const tr = document.createElement('tr') + const td = document.createElement('td') + const td2 = document.createElement('td') + const td3 = document.createElement('td') + const checkbox = document.getElementById('mainCheck') + + tr.classList.add("row100", "head") + td.classList.add("cell100", "column1") + td2.classList.add("cell100", "column1") + td3.classList.add("cell100", "column1") + + tr.setAttribute("object", proc.object) + td.innerHTML = proc.PID + td2.innerHTML = proc.name + td3.innerHTML = "" + td3.children[0].addEventListener('change', displayTableElement) + checkbox.checked = true + checkbox.onchange = changeAll + + tr.appendChild(td) + tr.appendChild(td2) + tr.appendChild(td3) + table.appendChild(tr) + + //toggle dispay - hide according to checkbox value + function displayTableElement(event){ + const tr = event.target.parentElement.parentElement + const tds = tr.children + const proc = { PID : tds[0].innerHTML, name : tds[1].innerHTML, object : tr.getAttribute('object') } + if(event.target.checked == false){ + const element = svgdoc.getElementById("bulletCircle" + "_" + proc.object.replace(':','_')) + removeProc(element, proc) + }else{ + bullet(svgdoc, proc, "") + text(svgdoc, proc, "") + createTooltip(svgdoc) + } + } + + function removeProc(element, proc){ + let id = element.id + let text = svgdoc.getElementById(id.replace('bulletCircle', 'bulletText')) + let secondId = element.getAttribute('secondId').replace('process id : ' + proc.PID + ';', '') + if(!text.getAttribute('nb') || text.getAttribute('nb') == '[1]'){ + text.remove() + element.remove() + }else{ + updateBulletText(text, findPid(text, '-'), element) + } + element.setAttribute('secondId', secondId) + } + + //handle click on main checkbox -> set all checkbox value to its value + function changeAll(event){ + const checkboxes = document.getElementsByClassName('subCheck') + size = checkboxes.length + for(let i = 0 ; i < size ; i++ ){ + if(checkboxes[i].checked != event.target.checked){ + checkboxes[i].checked = event.target.checked + displayTableElement({target: checkboxes[i]}) + } + } + } +} + +function clearProc(){ + document.getElementById('searchId').value = "" + const checkboxes = document.getElementsByClassName('checkbox') + for( let i = 0 ; i < checkboxes.length ; i++ ){ + checkboxes[i].checked = false + } + + let svgObject = document.getElementById('svg-object').contentDocument + clear(svgObject) +} + +function clearTable(){ + const table = document.getElementById("table"); + while (table.firstChild) { + table.removeChild(table.firstChild); + } + document.getElementById("processTable").classList = "table100 ver2 m-b-110 hidden" +} + +function handleProcButton(){ + let functionIsRunning = false + //use function is running so that the function doesn't run twice if the user double click. + async function addProc(req){ + if (!functionIsRunning) { + functionIsRunning = true + if(req == 'bound' || req == 'all'){ + clearProc() + clearTable() + } + let svgObject = document.getElementById('svg-object').contentDocument + await createProcesses(svgObject, req) + functionIsRunning = false + } + } + + const procButtons = document.getElementsByClassName('procButton') + for(let i = 0 ; i < procButtons.length ; i++){ + procButtons[i].addEventListener('click', function(){ + addProc(procButtons[i].type) + }) + } +} + +function handleCheckbox(){ + const checkboxes = document.getElementsByClassName('checkbox') + for( let i = 0 ; i < checkboxes.length ; i++ ){ + checkboxes[i].checked = false + checkboxes[i].addEventListener('change',function(e){ + clearTable() + let svgObject = document.getElementById('svg-object').contentDocument + createProcesses(svgObject, e.target.id) + }) + } +} + +function procByid(){ + let svgObject = document.getElementById('svg-object').contentDocument + let id = document.getElementById('searchId').value + clearProc() + createProcesses(svgObject, 'proc/'+id) +} + +//time out so that the svg has the time to load +setTimeout(function() { + handleCheckbox() + handleProcButton() + const input = document.getElementById('searchId') + input.value = '' + input.addEventListener('keyup',function(event){ + if(event.keyCode === 13){ + event.preventDefault() + procByid() + } + }) + + let svgObject = document.getElementById('svg-object').contentDocument + let svgElement = svgObject.getElementById('Machine_0_rect') + + if(svgObject.getElementById('Machine_0_rect')){ + createProcesses(svgObject, 'bound') + start(svgObject) + }else{ + const h1 = document.createElement('h1') + h1.innerHTML = "Your svg file doesn't have the good format to load javascript" + document.body.appendChild(h1) + } +}, 200) diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/style.css b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/style.css new file mode 100644 index 0000000000..d687742459 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/assets/style.css @@ -0,0 +1,142 @@ +/* Copyright © 2019 Inria. All rights reserved. */ + +.navul { + position: fixed; + left: 0; + top: 0; + width: 100%; + list-style-type: none; + margin: 0; + padding: 0; + overflow: hidden; + background-color: #5d5e60; +} + +.navli { + float: left; +} + +li a{ + display: block; + color: white; + text-align: center; + padding: 14px 16px; + text-decoration: none; +} + +.draggable { + display: inline; +} + +/* Change the link color to #111 (black) on hover */ +li a:hover{ + background-color: #111; +} + +label { + display: inline-block; + padding-left: 15px; + text-indent: -15px; + color: white; + text-align: center; + padding: 14px 16px; + text-decoration: none; + } + +.checkbox { + width: 13px; + height: 13px; + padding: 0; + margin:0; + vertical-align: bottom; + position: relative; + top: -2px; + *overflow: hidden; + margin-left: 14px; +} + +#mainCheck{ + width: 13px; + height: 13px; + padding: 0; + margin:0; + vertical-align: bottom; + position: relative; + top: -2px; + *overflow: hidden; +} + +input{ + margin-top:7px; +} + +.button { + position:fixed; + right: 10px; + background-color: #7f8082; + border: none; + color: white; + padding: 7px 16px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + border-radius: 4px; + -webkit-transition-duration: 0.4s; /* Safari */ + transition-duration: 0.4s; +} + +#searchId{ + position: fixed; + right: 150px; +} + +.button:hover { + background-color: #111; /* Green */ + color: white; +} + +#info{ + padding-top : 5px; + color: black; + border-radius: 5px; + background-color: white; + width:300px; + min-height:200px; + box-shadow: 5px 10px #888888; + text-align: left; +} + +#info-not-found{ + padding-top : 5px; + color: black; + border: 2x solid black; + border-radius: 5px; + background-color: white; + width:300px; + min-height:200px; + box-shadow: 5px 10px #888888; + text-align: left; +} + +.hidden{ + display:none; +} + +@media only screen and (max-width: 1175px) { + .show-mobile { + display: block; + } + .hide-mobile { + display: none; + } +} + +@media only screen and (min-width: 1176px) { + .show-mobile { + display: none; + } + .hide-mobile { + display: block; + } +} diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/client.js b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/client.js new file mode 100644 index 0000000000..24a2af4b05 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/client.js @@ -0,0 +1,188 @@ +/* Copyright © 2019 Inria. All rights reserved. */ + +var express = require('express') +var path = require('path') +var app = express() +var net = require('net') +var HOST = 'localhost' +var HPPORT = 8888 +var NPORT = 3000 +var verbose = 0 +var open = 1 +var fs = require('fs') +var open = require("open") +var lastRequest = '' +var client = new net.Socket() +var svg +var json + +function usage() { + console.log(path.basename(process.argv[0]) + " " + path.basename(process.argv[1]) + " [options] ") + console.log(" SVG file must be generated with lstopo --of nativesvg ") + console.log("Options:") + console.log(" --hp Change hwloc-ps JSON server port (default is "+HPPORT+")") + console.log(" --np Change node port (default is "+NPORT+")") + console.log(" -u Display the webpage URL instead of opening it") + console.log(" -v --verbose Increase verbosity") + console.log(" -h --help Show this help") +} + +var currentarg = 2 +while(process.argv.length > currentarg){ + if(process.argv[currentarg] === '-h' || process.argv[currentarg] === '-help'){ + usage() + return + }else if (process.argv[currentarg] === '-v' || process.argv[currentarg] === '--verbose'){ + verbose++ + currentarg++ + }else if (process.argv[currentarg] === '-u'){ + open = 0 + currentarg++ + }else if (process.argv[currentarg] === '--hp'){ + if(currentarg+2 > process.argv.length){ + console.err("Missing argument after --hp") + usage() + return + } + HPPORT = process.argv[currentarg + 1] + currentarg += 2 + }else if (process.argv[currentarg] === '--np'){ + if(currentarg+2 > process.argv.length){ + console.err("Missing argument after --np") + usage() + return + } + NPORT = process.argv[currentarg + 1] + currentarg += 2 + }else{ + if(svg != undefined){ + console.err("Unexpected parameter after SVG filename.") + usage() + return + } + svg = process.argv[currentarg] + currentarg++ + } +} +if(svg === undefined){ + console.err("Missing SVG filename.") + usage() + return +} + +client.on('data', function(data) { + if (verbose > 0) + console.log('##########################\n' + + 'Client received:\n' + + data + + '##########################\n') + json += data +}) + +client.on('close', function() { + console.log('Client closed') +}) + +client.on('error', function(err) { + console.error(err) +}) + +app.get('/svg', function (req, res, next) { + res.setHeader('Content-Type', 'image/svg+xml') + res.sendFile(path.resolve(__dirname, svg)) +}) + +app.get('/js', function (req, res, next) { + res.setHeader('Content-Type', 'text/javascript') + res.sendFile(path.join(__dirname, './assets/script.js')) +}) + +app.get('/json', function (req, res, next) { + res.setHeader('Content-Type', 'application/json') + res.send(json) +}) + +app.get('/stylecss', function (req, res, next) { + res.setHeader('Content-Type', 'text/css') + res.sendFile(path.join(__dirname, './assets/style.css')) +}) + +app.get('/maincss', function (req, res, next) { + res.setHeader('Content-Type', 'text/css') + res.sendFile(path.join(__dirname, './assets/main.css')) +}) + +app.get('/', function(req, res){ + res.sendFile(path.join(__dirname+'/assets/index.html')) +}) + +app.get('/bound', async (req, res) =>{ + json = "" + lastRequest = 'bound' + await client.write(lastRequest) + setTimeout(function(){ + res.setHeader('Content-Type', 'application/json') + res.send(JSON.parse(json)) + }, 500) +}) + +app.get('/all', async (req, res) =>{ + json = "" + lastRequest = 'all' + await client.write(lastRequest) + setTimeout(function(){ + res.setHeader('Content-Type', 'application/json') + res.send(json) + }, 500) +}) + +app.get('/proc/:filter', async (req, res) =>{ + json = "" + if (/^\d+$/.test(req.params.filter)) + lastRequest = 'threads pid=' + req.params.filter + else + lastRequest = 'name=' + req.params.filter + await client.write(lastRequest) + setTimeout(function(){ + res.setHeader('Content-Type', 'application/json') + res.send(json) + }, 500) +}) + +app.get('/threads', async (req, res) =>{ + json = "" + if(!lastRequest.includes('threads')) + lastRequest = 'threads ' + lastRequest + else + lastRequest = lastRequest.replace('threads ', '') + await client.write(lastRequest) + setTimeout(function(){ + res.setHeader('Content-Type', 'application/json') + res.send(json) + }, 500) +}) + +app.get('/lastcpulocation', async (req, res) =>{ + json = "" + if(!lastRequest.includes('lastcpulocation')) + lastRequest = 'lastcpulocation ' + lastRequest + else + lastRequest = lastRequest.replace('lastcpulocation ', '') + await client.write(lastRequest) + setTimeout(function(){ + res.setHeader('Content-Type', 'application/json') + res.send(json) + }, 500) +}) + +client.connect(HPPORT, HOST, function() { + console.log('Client connected to hwloc-ps JSON server running on ' + HOST + ':' + HPPORT) + + let serv = app.listen(NPORT) + + if(open){ + open("http://localhost:" + NPORT) + }else{ + console.log("Page is available from http://localhost:" + NPORT) + } +}) diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/package.json b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/package.json new file mode 100644 index 0000000000..04e2b4a68d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-ps.www/package.json @@ -0,0 +1,17 @@ +{ + "name": "js", + "version": "1.0.0", + "description": "", + "main": "client.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "grunt": "grunt", + "server": "node server.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "express": "^4.16.4", + "open": ">=6.0.0" + } +} diff --git a/3rd-party/hwloc-2.7.1/contrib/hwloc-valgrind.supp b/3rd-party/hwloc-2.7.1/contrib/hwloc-valgrind.supp new file mode 100644 index 0000000000..96f73c59b5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/hwloc-valgrind.supp @@ -0,0 +1,161 @@ +# Copyright © 2012-2018 Inria. All rights reserved. +# See COPYING in top-level directory. + +# suppressions file to be passed to valgrind with +# --suppressions=/path/to/hwloc-valgrind.supp + +# zlib (brought by libpci or libxml2) doesn't cleanup its global state +{ + inflate_init + Memcheck:Cond + fun:inflateReset2 + fun:inflateInit2_ +} + +# hwloc cannot free the global parser (with xmlCleanupParser()) because other threads may be using it +{ + xml_init_parser + Memcheck:Leak + ... + fun:xmlInitParser +} + +# hwloc cannot free the global xml dict RMutex because it cannot call xmlCleanupParser() as explained above +{ + xml_dict_create_new_rmutex + Memcheck:Leak + fun:malloc + fun:xmlNewRMutex + ... + fun:xmlDictCreate +} + +# ltdl dlopen global state? +{ + ltdl_dlopen_doit_leak + Memcheck:Leak + ... + fun:dl_open_worker + fun:_dl_catch_error + fun:_dl_open + fun:dlopen_doit +} + +# ltdl_dlclose_leak +{ + ltdl_dlclose_leak + Memcheck:Leak + ... + fun:_dl_close_worker + fun:_dl_close + ... + fun:dlclose +} + +# lt_dlforeachfile abusing paths +{ + lt_dlforeachfile_addr8 + Memcheck:Addr8 + fun:_wordcopy_fwd_dest_aligned + fun:__GI_memmove + fun:argz_insert + ... + fun:lt_dlforeachfile +} + +# cuda +{ + cuda_leak + Memcheck:Leak + ... + obj:*libcuda* +} + +# nvml +{ + nvmlInit_cond + Memcheck:Cond + ... + obj:*nvidia-ml* + ... + fun:nvmlInit +} + +# amd opencl +{ + atical_leak + Memcheck:Leak + ... + obj:*libatical* +} +{ + atical_cond + Memcheck:Cond + ... + obj:*libatical* +} +{ + amdocl_leak + Memcheck:Leak + ... + obj:*libamdocl* +} +{ + amdocl_param + Memcheck:Param + write(buf) + fun:*write* + obj:*libamdocl* +} +{ + opencl_leak + Memcheck:Leak + ... + obj:*libOpenCL* + ... + fun:clGetPlatformIDs +} +{ + libatiadl_xcb_leak + Memcheck:Leak + ... + obj:*libxcb* + ... + fun:XOpenDisplay + ... + obj:*libatiadl* +} + +# libpciaccess global state leak +{ + libpciaccess_device_name_leak + Memcheck:Leak + ... + fun:pci_device_get_device_name + fun:hwloc_look_pci +} +{ + libpciaccess_leak + Memcheck:Leak + ... + obj:*libpciaccess* + ... + fun:hwloc_look_pci +} + +# libudev global hashes +{ + libudev_hashmap_property + Memcheck:Leak + fun:malloc + ... + fun:udev_device_get_property_value +} +{ + libudev_hashmap_sysname + Memcheck:Leak + fun:malloc + ... + fun:udev_device_new_from_subsystem_sysname +} + diff --git a/3rd-party/hwloc-2.7.1/contrib/misc/Makefile.am b/3rd-party/hwloc-2.7.1/contrib/misc/Makefile.am new file mode 100644 index 0000000000..c3c916ffc0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/misc/Makefile.am @@ -0,0 +1,17 @@ +# Copyright © 2009-2020 Inria. All rights reserved. +# +# See COPYING in top-level directory. + +# This makefile is only reached when building in standalone mode + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +LDADD = $(HWLOC_top_builddir)/hwloc/libhwloc.la + +check_PROGRAMS = hwloc-tweak-osindex + +dist_doc_DATA = dynamic_SVG_example.html + +EXTRA_DIST = hwloc-export-sysfs diff --git a/3rd-party/hwloc-2.7.1/contrib/misc/dynamic_SVG_example.html b/3rd-party/hwloc-2.7.1/contrib/misc/dynamic_SVG_example.html new file mode 100644 index 0000000000..8ef3315ed9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/misc/dynamic_SVG_example.html @@ -0,0 +1,163 @@ + + + + + + Dynamic SVG + + +

      + This page is an example of HTML/JS interacting with the lstopo SVG output. +

      +

      + Load a SVG that was exported with lstopo's native SVG backend + (e.g. with lstopo --of nativesvg foo.svg): +

      + +
      +
      + + +
      + + + +
      + +
      + diff --git a/3rd-party/hwloc-2.7.1/contrib/misc/hwloc-export-sysfs b/3rd-party/hwloc-2.7.1/contrib/misc/hwloc-export-sysfs new file mode 100644 index 0000000000..f79296c487 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/misc/hwloc-export-sysfs @@ -0,0 +1,95 @@ +#!/bin/bash + +# Copyright © 2016-2017 Inria. All rights reserved. +# See COPYING in top-level directory. + +# This tool exports a topology as a Linux sysfs filesystem inside the +# output directory given as the first argument. +# The goal is to test the Linux import code back from there. +# +# It may be used to export from XML by setting HWLOC_XMLFILE=file.xml in the environment, +# or from synthetic by setting HWLOC_SYNTHETIC="node:4 core:4 pu:2". +# +# The export isn't complete. It lacks /proc/cpuinfo and several other files (see below). +# But at least it takes care of generating the annoying files (bitmasks for each cpu and node). + +if test "x$1" = "x"; then + echo "Missing output directory argument." + exit 1 +fi + +outdir="$1" + +Ppus=$(hwloc-calc -I pu --po --sep " " root) + +for Ppu in $Ppus; do + Lpu=$(hwloc-calc --pi --lo -I pu pu:$Ppu) + echo "Exporting PU L#${Lpu} = P#${Ppu}..." + mkdir -p "$outdir/sys/devices/system/cpu/cpu${Ppu}/topology" + + Lcore=$(hwloc-calc -I core pu:$Lpu) + Pcore=$(hwloc-calc --po -I core pu:$Lpu) + if test "x$Lcore" != x; then + echo " Adding core L#${Lcore} = P#${Pcore}..." + echo $Pcore > "$outdir/sys/devices/system/cpu/cpu${Ppu}/topology/core_id" + hwloc-calc core:$Lcore | sed -e 's/0x//g' -e 's/,,/,00000000,/g' > "$outdir/sys/devices/system/cpu/cpu${Ppu}/topology/thread_siblings" + # FIXME: thread_siblings_list isn't used so far + else + echo " No core." + fi + + Lpack=$(hwloc-calc -I pack pu:$Lpu) + Ppack=$(hwloc-calc --po -I pack pu:$Lpu) + if test "x$Lpack" != x; then + echo " Adding package L#${Lpack} = P#${Ppack}..." + echo $Ppack > "$outdir/sys/devices/system/cpu/cpu${Ppu}/topology/physical_package_id" + hwloc-calc pack:$Lpack | sed -e 's/0x//g' -e 's/,,/,00000000,/g' > "$outdir/sys/devices/system/cpu/cpu${Ppu}/topology/core_siblings" + # FIXME: core_siblings_list isn't used so far + else + echo "No package." + fi + + Lnumas=$(hwloc-calc -I numanode pu:$Lpu --sep " ") + if test "x$Lnumas" != x; then + # 2.0 with always NUMA node but possibly multiple of them + for Lnuma in $Lnumas; do + Pnuma=$(hwloc-calc --po -I numanode numa:$Lnuma) + echo " Adding NUMAnode L#${Lnuma} = P#${Pnuma}..." + mkdir -p "$outdir/sys/devices/system/node/node${Pnuma}" + hwloc-calc numanode:$Lnuma | sed -e 's/0x//g' -e 's/,,/,00000000,/g' > "$outdir/sys/devices/system/node/node${Pnuma}/cpumap" + bytes=$(hwloc-info numanode:$Lnuma | sed -rn -e 's/^ local memory = //p') + echo "Node $Pnuma MemTotal: "$((bytes/1024))" kB" > "$outdir/sys/devices/system/node/node${Pnuma}/meminfo" + done + else + # 1.x with single local NUMA node but possibly none + echo " Adding single NUMAnode L#0 = P#0..." + mkdir -p "$outdir/sys/devices/system/node/node0" + hwloc-calc all | sed -e 's/0x//g' -e 's/,,/,00000000,/g' > "$outdir/sys/devices/system/node/node0/cpumap" + bytes=$(hwloc-info root | sed -rn -e 's/^ local memory = //p') + echo "Node 0 MemTotal: "$((bytes/1024))" kB" > "$outdir/sys/devices/system/node/node0/meminfo" + fi +# FIXME: symlinks between cpu and node aren't needed so far + + cachetypes=$(hwloc-info --ancestors pu:$Lpu | sed -nre 's/^ full type = //p' | grep -i Cache) + index=0 + for cachetype in $cachetypes; do + mkdir -p "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}" + hwloc-info --ancestor $cachetype pu:${Lpu} | sed -rn -e 's/^ cpuset = //p' | sed -e 's/0x//g' -e 's/,,/,00000000,/g' > "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}/shared_cpu_map" + hwloc-info --ancestor $cachetype pu:${Lpu} | sed -rn -e 's/^ attr cache depth = //p' > "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}/level" + hwloc-info --ancestor $cachetype pu:${Lpu} | sed -rn -e 's/^ attr cache type = //p' > "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}/type" + bytes=$(hwloc-info --ancestor $cachetype pu:${Lpu} | sed -rn -e 's/^ attr cache size = //p') + echo $((bytes/1024))K > "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}/size" + hwloc-info --ancestor $cachetype pu:${Lpu} | sed -rn -e 's/^ attr cache line size = //p' > "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}/coherency_line_size" + ways=$(hwloc-info --ancestor $cachetype pu:${Lpu} | sed -rn -e 's/^ attr cache ways = //p') + echo 1 > "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}/physical_line_partition" + echo $((bytes/ways)) > "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}/number_of_sets" + echo $ways > "$outdir/sys/devices/system/cpu/cpu${Ppu}/cache/index${index}/ways_of_associativity" + index=$((index+1)) + done +done + +# FIXME: /sys/devices/system/cpu/{online,offline,possible,present,kernel_max} + +# command-line tools look for /proc to autoguess that -i means fake fsroot +mkdir -p "$outdir/proc" +# FIXME: /proc/cpuinfo diff --git a/3rd-party/hwloc-2.7.1/contrib/misc/hwloc-tweak-osindex.c b/3rd-party/hwloc-2.7.1/contrib/misc/hwloc-tweak-osindex.c new file mode 100644 index 0000000000..4a1b6f21a9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/misc/hwloc-tweak-osindex.c @@ -0,0 +1,196 @@ +/* + * Copyright © 2016-2018 Inria. All rights reserved. + * See COPYING in top-level directory. + * + * This program modifies PU and NUMA node os_index for debugging. + * Applications are not supposed to do that! + * And it may cause warnings since objects may become out-of-order + * with respect to their cpusets. + */ + +#include "hwloc.h" + +#include +#include +#include + +#if HWLOC_API_VERSION >= 0x20000 +#define HWLOC2 +#endif + +static void usage(FILE *output, const char *callname) +{ + fprintf(output, "%s \n", callname); + fprintf(output, " Replaces object type os_index with \n"); + fprintf(output, " should be PU or NUMANode\n"); +} + +static void switch_set_index(hwloc_bitmap_t set, unsigned old_index, unsigned new_index) +{ + if (hwloc_bitmap_isset(set, old_index)) { + hwloc_bitmap_clr(set, old_index); + hwloc_bitmap_set(set, new_index); + } +} + +static void switch_pu_index(hwloc_obj_t obj, unsigned old_index, unsigned new_index) +{ + hwloc_obj_t child; + + if (obj->type == HWLOC_OBJ_PU) { + assert(obj->os_index == old_index); + obj->os_index = new_index; + } + + switch_set_index(obj->cpuset, old_index, new_index); +#ifndef HWLOC2 + switch_set_index(obj->online_cpuset, old_index, new_index); +#endif + switch_set_index(obj->complete_cpuset, old_index, new_index); + + for(child = obj->first_child; child; child = child->next_sibling) + if (child->complete_cpuset && hwloc_bitmap_isset(child->complete_cpuset, old_index)) + switch_pu_index(child, old_index, new_index); + for(child = obj->memory_first_child; child; child = child->next_sibling) + if (child->complete_cpuset && hwloc_bitmap_isset(child->complete_cpuset, old_index)) + switch_pu_index(child, old_index, new_index); +} + +static void switch_numa_index(hwloc_obj_t obj, unsigned old_index, unsigned new_index) +{ + hwloc_obj_t child; + + if (obj->type == HWLOC_OBJ_NUMANODE) { + assert(obj->os_index == old_index); + obj->os_index = new_index; + } + + switch_set_index(obj->nodeset, old_index, new_index); + switch_set_index(obj->complete_nodeset, old_index, new_index); + + for(child = obj->first_child; child; child = child->next_sibling) + if (child->complete_nodeset && hwloc_bitmap_isset(child->complete_nodeset, old_index)) + switch_numa_index(child, old_index, new_index); + for(child = obj->memory_first_child; child; child = child->next_sibling) + if (child->complete_nodeset && hwloc_bitmap_isset(child->complete_nodeset, old_index)) + switch_numa_index(child, old_index, new_index); +} + +int main(int argc, char *argv[]) +{ + hwloc_obj_type_t type; + unsigned old_index, new_index; + const char *callname = argv[0]; + hwloc_topology_t topology; + int err; + + if (argc < 6) { + usage(stderr, callname); + exit(EXIT_FAILURE); + } + +#ifdef HWLOC2 + err = hwloc_type_sscanf(argv[3], &type, NULL, 0); +#else + err = hwloc_obj_type_sscanf(argv[3], &type, NULL, NULL, 0); +#endif + if (err < 0) { + fprintf(stderr, "Failed to recognize type `%s'\n", argv[3]); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + if (type != HWLOC_OBJ_PU && type != HWLOC_OBJ_NUMANODE) { + fprintf(stderr, "Invalid type `%s', should be PU or NUMA node\n", argv[3]); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + + old_index = atoi(argv[4]); + new_index = atoi(argv[5]); + if (old_index == new_index) { + fprintf(stderr, "Nothing to do\n"); + exit(EXIT_SUCCESS); + } + + err = hwloc_topology_init(&topology); + if (err < 0) { + fprintf(stderr, "hwloc_topology_init() failed (%s)\n", strerror(errno)); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + + err = hwloc_topology_set_xml(topology, argv[1]); + if (err < 0) { + fprintf(stderr, "hwloc_topology_set_xml() on file `%s' failed (%s)\n", argv[1], strerror(errno)); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + +#ifdef HWLOC2 + err = hwloc_topology_set_flags(topology, + HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED); + err = hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); +#else + err = hwloc_topology_set_flags(topology, + HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED + | HWLOC_TOPOLOGY_FLAG_WHOLE_IO + | HWLOC_TOPOLOGY_FLAG_ICACHES); +#endif + + err = hwloc_topology_load(topology); + if (err < 0) { + fprintf(stderr, "hwloc_topology_load() failed (%s)\n", strerror(errno)); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + + if (HWLOC_OBJ_PU == type) { + hwloc_const_bitmap_t cpset = hwloc_topology_get_complete_cpuset(topology); + if (!hwloc_bitmap_isset(cpset, old_index)) { + fprintf(stderr, "Old PU os_index %u doesn't exist\n", old_index); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + if (hwloc_bitmap_isset(cpset, new_index)) { + fprintf(stderr, "New PU os_index %u already exists\n", new_index); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + + switch_set_index((hwloc_bitmap_t)hwloc_topology_get_allowed_cpuset(topology), old_index, new_index); + switch_pu_index(hwloc_get_root_obj(topology), old_index, new_index); + + } else if (HWLOC_OBJ_NUMANODE == type) { + hwloc_const_bitmap_t cnset = hwloc_topology_get_complete_nodeset(topology); + if (!cnset || hwloc_bitmap_isfull(cnset)) { + fprintf(stderr, "Topology doesn't have NUMA nodes\n"); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + if (!hwloc_bitmap_isset(cnset, old_index)) { + fprintf(stderr, "Old NUMA node os_index %u doesn't exist\n", old_index); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + if (hwloc_bitmap_isset(cnset, new_index)) { + fprintf(stderr, "New NUMA node os_index %u already exists\n", new_index); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + + switch_set_index((hwloc_bitmap_t)hwloc_topology_get_allowed_nodeset(topology), old_index, new_index); + switch_numa_index(hwloc_get_root_obj(topology), old_index, new_index); + } + + err = hwloc_topology_export_xml(topology, argv[2], 0); + if (err < 0) { + fprintf(stderr, "hwloc_topology_export_xml() on file `%s' failed (%s)\n", argv[2], strerror(errno)); + usage(stderr, callname); + exit(EXIT_FAILURE); + } + + hwloc_topology_destroy(topology); + + printf("Beware that hwloc may warn about out-of-order objects when reloading %s\n", argv[2]); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/contrib/systemd/Makefile.am b/3rd-party/hwloc-2.7.1/contrib/systemd/Makefile.am new file mode 100644 index 0000000000..adf009be00 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/systemd/Makefile.am @@ -0,0 +1,22 @@ +# Copyright © 2016 Inria. All rights reserved. +# Copyright © 2016 Université Bordeaux +# See COPYING in top-level directory. + +# We can't use autoconf because we don't want $sbindir to be replaced with ${exec_prefix}/sbin +# Also don't install since , let the packagers do it. + +EXTRA_DIST = hwloc-dump-hwdata.service.in + +if HWLOC_HAVE_LINUX +nodist_pkgdata_DATA = hwloc-dump-hwdata.service +# depend on Makefile in case we rerun configure with different directory arguments +hwloc-dump-hwdata.service: hwloc-dump-hwdata.service.in Makefile + @echo Creating $@... + @ $(SED) \ + -e 's/#SBINDIR#/$(subst /,\/,$(sbindir))/g' \ + -e 's/#RUNSTATEDIR#/$(subst /,\/,$(HWLOC_runstatedir))/g' \ + > $@ < $< + +distclean-local: + rm -f hwloc-dump-hwdata.service +endif diff --git a/3rd-party/hwloc-2.7.1/contrib/systemd/hwloc-dump-hwdata.service.in b/3rd-party/hwloc-2.7.1/contrib/systemd/hwloc-dump-hwdata.service.in new file mode 100644 index 0000000000..dead89d4ca --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/systemd/hwloc-dump-hwdata.service.in @@ -0,0 +1,21 @@ +# +# Copyright © 2015-2016 Intel, Inc. All rights reserved. +# Copyright © 2016 Inria. All rights reserved. +# See COPYING in top-level directory. +# +# #RUNSTATEDIR#/hwloc was specified at configure time. +# It may be changed by passing configure options such as --runstatedir, +# --localstatedir or --prefix. +# It may also be manually changed before installing this file in systemd directories. +# + +[Unit] +Description=Dump hardware topology and locality information to #RUNSTATEDIR#/hwloc + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=#SBINDIR#/hwloc-dump-hwdata -o #RUNSTATEDIR#/hwloc + +[Install] +WantedBy=multi-user.target diff --git a/3rd-party/hwloc-2.7.1/contrib/windows-cmake/CMakeLists.txt b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/CMakeLists.txt new file mode 100644 index 0000000000..774d53d68e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/CMakeLists.txt @@ -0,0 +1,241 @@ +cmake_minimum_required(VERSION 3.15) +project(hwloc + LANGUAGES C + VERSION 2.7.1) + +enable_testing() + +option(HWLOC_ENABLE_TESTING "Enable testing" ON) +option(HWLOC_SKIP_LSTOPO "don't build/install lstopo") +option(HWLOC_SKIP_TOOLS "don't build/install other hwloc tools") +option(HWLOC_SKIP_INCLUDES "don't install headers") +option(HWLOC_WITH_LIBXML2 "use libxml2 instead of minimal XML") +option(HWLOC_WITH_OPENCL "enable OpenCL support") +if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.17) + option(HWLOC_WITH_CUDA "enable CUDA support") +endif() +option(HWLOC_BUILD_SHARED_LIBS "build shared libraries" ${BUILD_SHARED_LIBS}) + +set(TOPDIR ${PROJECT_SOURCE_DIR}/../..) + +# "libhwloc.*" naming for MSVC and non-MSVC + +configure_file(${TOPDIR}/contrib/windows/hwloc_config.h include/hwloc/autogen/config.h COPYONLY) + +# Configure dynamically based on platform capabilities +include(CheckIncludeFile) +include(CheckSymbolExists) +include(CheckCSourceCompiles) + +check_include_file("dirent.h" HAVE_DIRENT_H) +check_include_file("unistd.h" HAVE_UNISTD_H) +check_include_file("malloc.h" HAVE_MALLOC_H) +check_include_file("memory.h" HAVE_MEMORY_H) + +check_symbol_exists(mkstemp "stdlib.h" HAVE_MKSTEMP) +check_symbol_exists(memalign "malloc.h" HAVE_MEMALIGN) + +check_symbol_exists(strncasecmp "strings.h" HAVE_STRNCASECMP) +if(MSVC AND HAVE_STRNCASECMP) + set(hwloc_strncasecmp 1) + set(hwloc_strncasecmp_fcn strncasecmp) +else() + set(hwloc_strncasecmp 0) + set(hwloc_strncasecmp_fcn strncmp) +endif() + + +set(SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) +# disable x86 entirely by default +set(HWLOC_X86_32_ARCH) +set(HWLOC_X86_64_ARCH) +set(HWLOC_HAVE_X86_CPUID 1) +if (CMAKE_SYSTEM_PROCESSOR MATCHES "(^AMD64$|^x86_64$)") + # "AMD64" on Windows, "x86_64" on Linux + set(HWLOC_X86_64_ARCH 1) +elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "(^x86$|i.86)") + # "x86" on Windows, "i.86" on Linux + set(HWLOC_X86_32_ARCH 1) +else() + set(HWLOC_HAVE_X86_CPUID 0) +endif() + +check_c_source_compiles("int main(void) {int cpuinfo[4]; __cpuidex(cpuinfo,0,0); return 0;}" +HWLOC_HAVE_MSVC_CPUIDEX +) + +# the following lines are disabled until we are sure they are safe with old build environmentx +# - snprintf() returned broken values in the past, hwloc detects it during configure (see 7a4ee26510c06b55fc04aaccbfa18d0ca3b87198) +# set(HAVE_DECL_SNPRINTF 1) +# - strtoull() had some issues in the past (see 9559bd08b79ef63dce45df87fb7f875b73ecb512) +# set(HAVE_DECL_STRTOULL 1) + +# --- optional external libraries +set(HWLOC_HAVE_LIBXML2) +if(HWLOC_WITH_LIBXML2) + find_package(LibXml2 REQUIRED) + set(HWLOC_HAVE_LIBXML2 1) +endif() + +set(HWLOC_HAVE_OPENCL) +if(HWLOC_WITH_OPENCL) + find_package(OpenCL REQUIRED) + set(HWLOC_HAVE_OPENCL 1) +endif() + +set(HAVE_CUDA) +set(HAVE_CUDA_H) +set(HAVE_CUDA_RUNTIME_API_H) +set(HWLOC_HAVE_CUDART) +if(HWLOC_WITH_CUDA) + find_package(CUDAToolkit REQUIRED) + set(HAVE_CUDA 1) + set(HAVE_CUDA_H 1) + set(HAVE_CUDA_RUNTIME_API_H 1) + set(HWLOC_HAVE_CUDART 1) +endif() + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/private_config.h.in include/private/autogen/config.h) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/static-components.h.in include/static-components.h) + +# Library + +add_compile_definitions($<$:HWLOC_DEBUG=1>) + +# FIXME dll soname +add_library(hwloc + ${TOPDIR}/hwloc/topology.c + ${TOPDIR}/hwloc/traversal.c + ${TOPDIR}/hwloc/distances.c + ${TOPDIR}/hwloc/memattrs.c + ${TOPDIR}/hwloc/cpukinds.c + ${TOPDIR}/hwloc/components.c + ${TOPDIR}/hwloc/bind.c + ${TOPDIR}/hwloc/bitmap.c + ${TOPDIR}/hwloc/pci-common.c + ${TOPDIR}/hwloc/diff.c + ${TOPDIR}/hwloc/shmem.c + ${TOPDIR}/hwloc/misc.c + ${TOPDIR}/hwloc/base64.c + ${TOPDIR}/hwloc/topology-noos.c + ${TOPDIR}/hwloc/topology-synthetic.c + ${TOPDIR}/hwloc/topology-xml.c + ${TOPDIR}/hwloc/topology-xml-nolibxml.c + ${TOPDIR}/hwloc/topology-windows.c + ${TOPDIR}/hwloc/topology-x86.c + $<$:${TOPDIR}/hwloc/topology-xml-libxml.c> + $<$:${TOPDIR}/hwloc/topology-opencl.c> + $<$:${TOPDIR}/hwloc/topology-cuda.c> +) + +target_link_libraries(hwloc PRIVATE + $<$:LibXml2::LibXml2> + $<$:OpenCL::OpenCL> + "$<$:CUDA::cudart;CUDA::cuda_driver>" +) + +if(HWLOC_BUILD_SHARED_LIBS) + target_compile_definitions(hwloc PRIVATE $<$:_USRDLL>) +endif() + +target_include_directories(hwloc PUBLIC + "$" + $ +) + +# Tools under utils/hwloc + +if(NOT HWLOC_SKIP_TOOLS) + + set(TOOLS + hwloc-bind + hwloc-calc + hwloc-diff + hwloc-distrib + hwloc-gather-cpuid + hwloc-info + hwloc-patch + ) + + foreach(tool IN ITEMS ${TOOLS}) + add_executable(${tool} + ${TOPDIR}/utils/hwloc/${tool}.c) + target_link_libraries(${tool} PRIVATE hwloc) + endforeach(tool) + +endif() + +# lstopo + +if(NOT HWLOC_SKIP_LSTOPO) + + set(LSTOPOS + lstopo-no-graphics + lstopo + lstopo-win + ) + + set(LSTOPO_COMMON_SOURCES + ${TOPDIR}/utils/lstopo/lstopo.c + ${TOPDIR}/utils/lstopo/lstopo-draw.c + ${TOPDIR}/utils/lstopo/lstopo-tikz.c + ${TOPDIR}/utils/lstopo/lstopo-fig.c + ${TOPDIR}/utils/lstopo/lstopo-svg.c + ${TOPDIR}/utils/lstopo/lstopo-ascii.c + ${TOPDIR}/utils/lstopo/lstopo-text.c + ${TOPDIR}/utils/lstopo/lstopo-xml.c + ${TOPDIR}/utils/hwloc/common-ps.c + ) + + add_executable(lstopo-no-graphics + ${LSTOPO_COMMON_SOURCES} + ) + target_link_libraries(lstopo-no-graphics PRIVATE hwloc) + + add_executable(lstopo + ${LSTOPO_COMMON_SOURCES} + ${TOPDIR}/utils/lstopo/lstopo-windows.c + ) + target_compile_definitions(lstopo PRIVATE LSTOPO_HAVE_GRAPHICS) + + add_executable(lstopo-win WIN32 + ${LSTOPO_COMMON_SOURCES} + ${TOPDIR}/utils/lstopo/lstopo-windows.c + ) + target_compile_definitions(lstopo-win PRIVATE LSTOPO_HAVE_GRAPHICS) + target_link_options(lstopo-win PRIVATE "$<$:/subsystem:windows;/entry:mainCRTStartup>") + + foreach(tool IN ITEMS ${LSTOPOS}) + target_include_directories(${tool} PRIVATE ${TOPDIR}/utils/hwloc) + target_link_libraries(${tool} PRIVATE hwloc) + endforeach(tool) + +endif() + +# Misc + +foreach(target IN ITEMS hwloc ${TOOLS} ${LSTOPOS}) + target_compile_definitions(${target} PRIVATE $<$:_CRT_SECURE_NO_WARNINGS>) +endforeach(target) + +# Install + +install(TARGETS hwloc) + +if(NOT HWLOC_SKIP_TOOLS) + install(TARGETS ${TOOLS}) +endif() + +if(NOT HWLOC_SKIP_LSTOPO) + install(TARGETS ${LSTOPOS}) +endif() + +if(NOT HWLOC_SKIP_INCLUDES) + install(FILES ${TOPDIR}/include/hwloc.h TYPE INCLUDE) + install(DIRECTORY ${TOPDIR}/include/hwloc TYPE INCLUDE FILES_MATCHING PATTERN "*.h") + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/hwloc/autogen/config.h DESTINATION include/hwloc/autogen) +endif() + +if(HWLOC_ENABLE_TESTING) + add_subdirectory(${TOPDIR}/tests/hwloc ${CMAKE_CURRENT_BINARY_DIR}/tests/hwloc) +endif() diff --git a/3rd-party/hwloc-2.7.1/contrib/windows-cmake/README b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/README new file mode 100644 index 0000000000..d754498a09 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/README @@ -0,0 +1,25 @@ +This CMake support for Windows builds is inspired from + https://github.com/microsoft/vcpkg/blob/7e495c0773353de69f24f3af8aea0ae9a129508c/ports/hwloc/CMakeLists.txt +(before vcpkg switched from CMake to autotools). + +May be used with: +$ cmake [options] -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=\path\to\install . +$ cmake --build . +$ cmake --build . --target INSTALL + +The "Debug" build type is also available, it enables lots of +verbose debug messages and assertions. + +Options: +-DHWLOC_SKIP_LSTOPO=1 to ignore lstopo +-DHWLOC_SKIP_TOOLS=1 to ignore other hwloc command-line tools +-DHWLOC_SKIP_INCLUDES=1 to ignore header installation + +See contrib/ci.inria.fr/job-1-wincmake.bat for an example. + + +hwloc-compress-dir not built because it needs work. + +hwloc-gather-topology is Linux specific. + +hwloc-ps is not built because it does nothing on Windows anyway (see #367). diff --git a/3rd-party/hwloc-2.7.1/contrib/windows-cmake/check-versions.sh b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/check-versions.sh new file mode 100644 index 0000000000..c3d426febd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/check-versions.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# +# Copyright © 2018-2021 Inria. All rights reserved. +# $COPYRIGHT$ +# + +function die() { + echo "$@" + exit 1 +} + +if test "x$1" = "x-h" -o "x$1" = "x--help"; then + echo "$0 [--quiet] [git root directory]" + exit 0 +fi + +echo=echo +if test "x$1" = "x--quiet"; then + echo=true + shift +fi + +if test "x$1" = "x--update"; then + update=1 + shift +fi + +rootdir=. +if test "x$1" != x; then + rootdir="$1" +fi + +windows_cmakelists="$rootdir/contrib/windows-cmake/CMakeLists.txt" +version_file="$rootdir/VERSION" + +if ! test -f "$version_file"; then + die "Couldn't find $version_file" +fi + +### EXTRACT MAIN VERSION ### +$echo "Looking for official version $version_file ..." +official_major=$(grep ^major= $version_file | cut -d= -f2) +official_minor=$(grep ^minor= $version_file | cut -d= -f2) +official_release=$(grep ^release= $version_file | cut -d= -f2) +official_greek=$(grep ^greek= $version_file | cut -d= -f2) +if [ -z "$official_major" -o -z "$official_minor" -o -z "$official_release" ]; then + die "ERROR in $version_file: Failed to get official HWLOC_VERSION_MAJOR/MINOR/RELEASE/GREEK" +fi +$echo " Found major=$official_major minor=$official_minor release=$official_release greek=$official_greek" +official_version_nogreek="$official_major.$official_minor.$official_release" +# CMake only allows version x.y.z[.t], no greek + +$echo + +### CMAKE UPDATE? ### +if test "x$update" = "x1"; then + $echo "Updating CMake VERSION in $windows_cmakelists ..." + # look for " VERSION xxx" + sed -r -e '/^ *VERSION /s/[0-9\.]+/'$official_version_nogreek'/' -i "$windows_cmakelists" + $echo +fi + +### CMAKE CHECKS ### +$echo "Looking for Windows-CMake-specific version in $windows_cmakelists ..." +windows_cmake_version=$(sed -n -r -e 's/.* VERSION ([0-9\.]+)\).*/\1/p' $windows_cmakelists) +if [ -z "$windows_cmake_version" ]; then + die "ERROR in $windows_cmakelists: Failed to get Windows-CMake-specific HWLOC_VERSION" +fi +$echo " Found Windows-CMake-specific HWLOC_VERSION \"$windows_cmake_version\"" + +# check that the version string matches +if [ "$windows_cmake_version" != "$official_version_nogreek" ]; then + die "ERROR in $windows_cmakelists: Windows-CMake-specific HWLOC_VERSION \"$windows_cmake_version\" doesn't match HWLOC_VERSION without GREEK \"$official_version_nogreek\"" +fi +$echo " Windows-CMake-specific HWLOC_VERSION \"$windows_cmake_version\" matches HWLOC_VERSION without GREEK" diff --git a/3rd-party/hwloc-2.7.1/contrib/windows-cmake/private_config.h.in b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/private_config.h.in new file mode 100644 index 0000000000..8555946796 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/private_config.h.in @@ -0,0 +1,674 @@ +/* + * Copyright © 2009, 2011, 2012 CNRS. All rights reserved. + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009, 2011, 2012, 2015 Université Bordeaux. All rights reserved. + * Copyright © 2009-2020 Cisco Systems, Inc. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#ifndef HWLOC_CONFIGURE_H +#define HWLOC_CONFIGURE_H + +#define DECLSPEC_EXPORTS + +#cmakedefine HWLOC_HAVE_MSVC_CPUIDEX @HWLOC_HAVE_MSVC_CPUIDEX@ + +#cmakedefine HAVE_MKSTEMP @HAVE_MKSTEMP@ + +#cmakedefine HWLOC_HAVE_X86_CPUID @HWLOC_HAVE_X86_CPUID@ + +/* Define to 1 if the system has the type `CACHE_DESCRIPTOR'. */ +#define HAVE_CACHE_DESCRIPTOR 0 + +/* Define to 1 if the system has the type `CACHE_RELATIONSHIP'. */ +#define HAVE_CACHE_RELATIONSHIP 0 + +/* Define to 1 if you have the `clz' function. */ +/* #undef HAVE_CLZ */ + +/* Define to 1 if you have the `clzl' function. */ +/* #undef HAVE_CLZL */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CL_CL_EXT_H */ + +/* Define to 1 if you have the `cpuset_setaffinity' function. */ +/* #undef HAVE_CPUSET_SETAFFINITY */ + +/* Define to 1 if you have the `cpuset_setid' function. */ +/* #undef HAVE_CPUSET_SETID */ + +/* Define to 1 if we have -lcuda */ +#cmakedefine HAVE_CUDA @HAVE_CUDA@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_CUDA_H @HAVE_CUDA_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_CUDA_RUNTIME_API_H @HAVE_CUDA_RUNTIME_API_H@ + +/* Define to 1 if you have the declaration of `CL_DEVICE_TOPOLOGY_AMD', and to + 0 if you don't. */ +/* #undef HAVE_DECL_CL_DEVICE_TOPOLOGY_AMD */ + +/* Define to 1 if you have the declaration of `CTL_HW', and to 0 if you don't. + */ +/* #undef HAVE_DECL_CTL_HW */ + +/* Define to 1 if you have the declaration of `fabsf', and to 0 if you don't. + */ +#define HAVE_DECL_FABSF 1 + +/* Define to 1 if you have the declaration of `modff', and to 0 if you don't. + */ +#define HAVE_DECL_MODFF 1 + +/* Define to 1 if you have the declaration of `HW_NCPU', and to 0 if you + don't. */ +/* #undef HAVE_DECL_HW_NCPU */ + +/* Define to 1 if you have the declaration of + `nvmlDeviceGetMaxPcieLinkGeneration', and to 0 if you don't. */ +/* #undef HAVE_DECL_NVMLDEVICEGETMAXPCIELINKGENERATION */ + +/* Define to 1 if you have the declaration of `pthread_getaffinity_np', and to + 0 if you don't. */ +#define HAVE_DECL_PTHREAD_GETAFFINITY_NP 0 + +/* Define to 1 if you have the declaration of `pthread_setaffinity_np', and to + 0 if you don't. */ +#define HAVE_DECL_PTHREAD_SETAFFINITY_NP 0 + +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOULL 0 + +/* Define to 1 if you have the declaration of `strcasecmp', and to 0 if you + don't. */ +/* #undef HWLOC_HAVE_DECL_STRCASECMP */ + +/* Define to 1 if you have the declaration of `snprintf', and to 0 if you + don't. */ +#define HAVE_DECL_SNPRINTF 0 + +/* Define to 1 if you have the declaration of `_strdup', and to 0 if you + don't. */ +#define HAVE_DECL__STRDUP 1 + +/* Define to 1 if you have the declaration of `_putenv', and to 0 if you + don't. */ +#define HAVE_DECL__PUTENV 1 + +/* Define to 1 if you have the declaration of `_SC_LARGE_PAGESIZE', and to 0 + if you don't. */ +#define HAVE_DECL__SC_LARGE_PAGESIZE 0 + +/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_CONF', and to 0 + if you don't. */ +#define HAVE_DECL__SC_NPROCESSORS_CONF 0 + +/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_ONLN', and to 0 + if you don't. */ +#define HAVE_DECL__SC_NPROCESSORS_ONLN 0 + +/* Define to 1 if you have the declaration of `_SC_NPROC_CONF', and to 0 if + you don't. */ +#define HAVE_DECL__SC_NPROC_CONF 0 + +/* Define to 1 if you have the declaration of `_SC_NPROC_ONLN', and to 0 if + you don't. */ +#define HAVE_DECL__SC_NPROC_ONLN 0 + +/* Define to 1 if you have the declaration of `_SC_PAGESIZE', and to 0 if you + don't. */ +#define HAVE_DECL__SC_PAGESIZE 0 + +/* Define to 1 if you have the declaration of `_SC_PAGE_SIZE', and to 0 if you + don't. */ +#define HAVE_DECL__SC_PAGE_SIZE 0 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DIRENT_H @HAVE_DIRENT_H@ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define to 1 if you have the `ffs' function. */ +/* #undef HAVE_FFS */ + +/* Define to 1 if you have the `ffsl' function. */ +/* #undef HAVE_FFSL */ + +/* Define to 1 if you have the `fls' function. */ +/* #undef HAVE_FLS */ + +/* Define to 1 if you have the `flsl' function. */ +/* #undef HAVE_FLSL */ + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if the system has the type `GROUP_AFFINITY'. */ +#define HAVE_GROUP_AFFINITY 1 + +/* Define to 1 if the system has the type `GROUP_RELATIONSHIP'. */ +#define HAVE_GROUP_RELATIONSHIP 1 + +/* Define to 1 if you have the `host_info' function. */ +/* #undef HAVE_HOST_INFO */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_INFINIBAND_VERBS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if the system has the type `KAFFINITY'. */ +#define HAVE_KAFFINITY 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_KSTAT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LANGINFO_H */ + +/* Define to 1 if we have -lgdi32 */ +#define HAVE_LIBGDI32 1 + +/* Define to 1 if we have -libverbs */ +/* #undef HAVE_LIBIBVERBS */ + +/* Define to 1 if we have -lkstat */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if we have -llgrp */ +/* #undef HAVE_LIBLGRP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if the system has the type `LOGICAL_PROCESSOR_RELATIONSHIP'. */ +#define HAVE_LOGICAL_PROCESSOR_RELATIONSHIP 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_HOST_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_INIT_H */ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MALLOC_H @HAVE_MALLOC_H@ + +/* Define to 1 if you have the `memalign' function. */ +#cmakedefine HAVE_MEMALIGN @HAVE_MEMALIGN@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H @HAVE_MEMORY_H@ + +/* Define to 1 if you have the `nl_langinfo' function. */ +/* #undef HAVE_NL_LANGINFO */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NUMAIF_H */ + +/* Define to 1 if the system has the type `NUMA_NODE_RELATIONSHIP'. */ +#define HAVE_NUMA_NODE_RELATIONSHIP 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NVCTRL_NVCTRL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NVML_H */ + +/* Define to 1 if you have the `openat' function. */ +/* #undef HAVE_OPENAT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_PICL_H */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if the system has the type `PROCESSOR_CACHE_TYPE'. */ +#define HAVE_PROCESSOR_CACHE_TYPE 1 + +/* Define to 1 if the system has the type `PROCESSOR_GROUP_INFO'. */ +#define HAVE_PROCESSOR_GROUP_INFO 1 + +/* Define to 1 if the system has the type `PROCESSOR_RELATIONSHIP'. */ +#define HAVE_PROCESSOR_RELATIONSHIP 1 + +/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_BLOCK'. */ +/* #undef HAVE_PSAPI_WORKING_SET_EX_BLOCK */ + +/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_INFORMATION'. + */ +/* #undef HAVE_PSAPI_WORKING_SET_EX_INFORMATION */ + +/* Define to 1 if the system has the type `PROCESSOR_NUMBER'. */ +#define HAVE_PROCESSOR_NUMBER 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_PTHREAD_NP_H */ + +/* Define to 1 if the system has the type `pthread_t'. */ +/* #undef HAVE_PTHREAD_T */ +#undef HAVE_PTHREAD_T + +/* Define to 1 if you have the `putwc' function. */ +#define HAVE_PUTWC 1 + +/* Define to 1 if the system has the type `RelationProcessorPackage'. */ +/* #undef HAVE_RELATIONPROCESSORPACKAGE */ + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the header file. */ +/* #define HAVE_STRINGS_H 1*/ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#cmakedefine HAVE_STRNCASECMP @HAVE_STRNCASECMP@ + +/* Define to '1' if sysctl is present and usable */ +/* #undef HAVE_SYSCTL */ + +/* Define to '1' if sysctlbyname is present and usable */ +/* #undef HAVE_SYSCTLBYNAME */ + +/* Define to 1 if the system has the type + `SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX'. */ +#define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_CPUSET_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_LGRP_USER_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MMAN_H */ + +/* Define to 1 if you have the header file. */ +/* #define HAVE_SYS_PARAM_H 1 */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_UTSNAME_H */ + +/* Define to 1 if you have the `uname' function. */ +/* #undef HAVE_UNAME */ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H @HAVE_UNISTD_H@ + +/* Define to 1 if you have the `uselocale' function. */ +/* #undef HAVE_USELOCALE */ + +/* Define to 1 if the system has the type `wchar_t'. */ +#define HAVE_WCHAR_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_X11_KEYSYM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_X11_XLIB_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_X11_XUTIL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_XLOCALE_H */ + +/* Define to 1 on AIX */ +/* #undef HWLOC_AIX_SYS */ + +/* Define to 1 on BlueGene/Q */ +/* #undef HWLOC_BGQ_SYS */ + +/* Whether C compiler supports symbol visibility or not */ +#define HWLOC_C_HAVE_VISIBILITY 0 + +/* Define to 1 on Darwin */ +/* #undef HWLOC_DARWIN_SYS */ + +/* Whether we are in debugging mode or not */ +/* #undef HWLOC_DEBUG */ + +/* Define to 1 on *FREEBSD */ +/* #undef HWLOC_FREEBSD_SYS */ + +/* Whether your compiler has __attribute__ or not */ +/* #define HWLOC_HAVE_ATTRIBUTE 1 */ +#undef HWLOC_HAVE_ATTRIBUTE + +/* Whether your compiler has __attribute__ aligned or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_ALIGNED 1 */ + +/* Whether your compiler has __attribute__ always_inline or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE 1 */ + +/* Whether your compiler has __attribute__ cold or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_COLD 1 */ + +/* Whether your compiler has __attribute__ const or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_CONST 1 */ + +/* Whether your compiler has __attribute__ deprecated or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_DEPRECATED 1 */ + +/* Whether your compiler has __attribute__ format or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_FORMAT 1 */ + +/* Whether your compiler has __attribute__ hot or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_HOT 1 */ + +/* Whether your compiler has __attribute__ malloc or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_MALLOC 1 */ + +/* Whether your compiler has __attribute__ may_alias or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS 1 */ + +/* Whether your compiler has __attribute__ nonnull or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_NONNULL 1 */ + +/* Whether your compiler has __attribute__ noreturn or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_NORETURN 1 */ + +/* Whether your compiler has __attribute__ no_instrument_function or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION 1 */ + +/* Whether your compiler has __attribute__ packed or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_PACKED 1 */ + +/* Whether your compiler has __attribute__ pure or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_PURE 1 */ + +/* Whether your compiler has __attribute__ sentinel or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_SENTINEL 1 */ + +/* Whether your compiler has __attribute__ unused or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_UNUSED 1 */ + +/* Whether your compiler has __attribute__ warn unused result or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT 1 */ + +/* Whether your compiler has __attribute__ weak alias or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS 1 */ + +/* Define to 1 if your `ffs' function is known to be broken. */ +/* #undef HWLOC_HAVE_BROKEN_FFS */ + +/* Define to 1 if you have the `cairo' library. */ +/* #undef HWLOC_HAVE_CAIRO */ + +/* Define to 1 if you have the `clz' function. */ +/* #undef HWLOC_HAVE_CLZ */ + +/* Define to 1 if you have the `clzl' function. */ +/* #undef HWLOC_HAVE_CLZL */ + +/* Define to 1 if you have cpuid */ +/* #undef HWLOC_HAVE_CPUID */ + +/* Define to 1 if the CPU_SET macro works */ +/* #undef HWLOC_HAVE_CPU_SET */ + +/* Define to 1 if the CPU_SET_S macro works */ +/* #undef HWLOC_HAVE_CPU_SET_S */ + +/* Define to 1 if you have the `cudart' SDK. */ +#cmakedefine HWLOC_HAVE_CUDART @HWLOC_HAVE_CUDART@ + +/* Define to 1 if function `clz' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_CLZ */ + +/* Define to 1 if function `clzl' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_CLZL */ + +/* Define to 1 if function `ffs' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_FFS */ + +/* Define to 1 if function `ffsl' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_FFSL */ + +/* Define to 1 if function `fls' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_FLS */ + +/* Define to 1 if function `flsl' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_FLSL */ + +/* Define to 1 if you have the `ffs' function. */ +/* #undef HWLOC_HAVE_FFS */ + +/* Define to 1 if you have the `ffsl' function. */ +/* #undef HWLOC_HAVE_FFSL */ + +/* Define to 1 if you have the `fls' function. */ +/* #undef HWLOC_HAVE_FLS */ + +/* Define to 1 if you have the `flsl' function. */ +/* #undef HWLOC_HAVE_FLSL */ + +/* Define to 1 if you have the GL module components. */ +/* #undef HWLOC_HAVE_GL */ + +/* Define to 1 if you have a library providing the termcap interface */ +/* #undef HWLOC_HAVE_LIBTERMCAP */ + +/* Define to 1 if you have the `libxml2' library. */ +#cmakedefine HWLOC_HAVE_LIBXML2 @HWLOC_HAVE_LIBXML2@ + +/* Define to 1 if building the Linux PCI component */ +/* #undef HWLOC_HAVE_LINUXPCI */ + +/* Define to 1 if you have the `NVML' library. */ +/* #undef HWLOC_HAVE_NVML */ + +/* Define to 1 if glibc provides the old prototype (without length) of + sched_setaffinity() */ +/* #undef HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + +/* Define to 1 if you have the `OpenCL' library. */ +#cmakedefine HWLOC_HAVE_OPENCL @HWLOC_HAVE_OPENCL@ + +/* Define to 1 if the hwloc library should support dynamically-loaded plugins + */ +/* #undef HWLOC_HAVE_PLUGINS */ + +/* `Define to 1 if you have pthread_getthrds_np' */ +/* #undef HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ + +/* Define to 1 if pthread mutexes are available */ +/* #undef HWLOC_HAVE_PTHREAD_MUTEX */ + +/* Define to 1 if glibc provides a prototype of sched_setaffinity() */ +#define HWLOC_HAVE_SCHED_SETAFFINITY 1 + +/* Define to 1 if you have the header file. */ +#define HWLOC_HAVE_STDINT_H 1 + +/* Define to 1 if you have the `windows.h' header. */ +#define HWLOC_HAVE_WINDOWS_H 1 + +/* Define to 1 if X11 headers including Xutil.h and keysym.h are available. */ +/* #undef HWLOC_HAVE_X11_KEYSYM */ + +/* Define to 1 if function `syscall' is available */ +/* #undef HWLOC_HAVE_SYSCALL */ + +/* Define to 1 on HP-UX */ +/* #undef HWLOC_HPUX_SYS */ + +/* Define to 1 on Linux */ +/* #undef HWLOC_LINUX_SYS */ + +/* Define to 1 on *NETBSD */ +/* #undef HWLOC_NETBSD_SYS */ + +/* The size of `unsigned int', as computed by sizeof */ +#define HWLOC_SIZEOF_UNSIGNED_INT 4 + +/* The size of `unsigned long', as computed by sizeof */ +#define HWLOC_SIZEOF_UNSIGNED_LONG 4 + +/* Define to 1 on Solaris */ +/* #undef HWLOC_SOLARIS_SYS */ + +/* The hwloc symbol prefix */ +#define HWLOC_SYM_PREFIX hwloc_ + +/* The hwloc symbol prefix in all caps */ +#define HWLOC_SYM_PREFIX_CAPS HWLOC_ + +/* Whether we need to re-define all the hwloc public symbols or not */ +#define HWLOC_SYM_TRANSFORM 0 + +/* Define to 1 on unsupported systems */ +/* #undef HWLOC_UNSUPPORTED_SYS */ + +/* Define to 1 if ncurses works, preferred over curses */ +/* #undef HWLOC_USE_NCURSES */ + +/* Define to 1 on WINDOWS */ +#define HWLOC_WIN_SYS 1 + +/* Define to 1 on x86_32 */ +#cmakedefine HWLOC_X86_32_ARCH @HWLOC_X86_32_ARCH@ + +/* Define to 1 on x86_64 */ +#cmakedefine HWLOC_X86_64_ARCH @HWLOC_X86_64_ARCH@ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "hwloc" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "https://www.open-mpi.org/projects/hwloc/" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "hwloc" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "hwloc" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "hwloc" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION HWLOC_VERSION + +/* The size of `unsigned int', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_INT 4 + +/* The size of `unsigned long', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_LONG 4 + +/* The size of `void *', as computed by sizeof. */ +#cmakedefine SIZEOF_VOID_P @SIZEOF_VOID_P@ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Enable extensions on HP-UX. */ +#ifndef _HPUX_SOURCE +# define _HPUX_SOURCE 1 +#endif + + +/* Enable extensions on AIX 3, Interix. */ +/* +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +*/ + +/* Enable GNU extensions on systems that have them. */ +/* +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +*/ +/* Enable threading extensions on Solaris. */ +/* +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +*/ +/* Enable extensions on HP NonStop. */ +/* +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +*/ +/* Enable general extensions on Solaris. */ +/* +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif +*/ + + +/* Version number of package */ +#define VERSION HWLOC_VERSION + +/* Define to 1 if the X Window System is missing or not being used. */ +#define X_DISPLAY_MISSING 1 + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define this to the process ID type */ +#define hwloc_pid_t HANDLE + +/* Define this to either strncasecmp or strncmp */ +#cmakedefine hwloc_strncasecmp @hwloc_strncasecmp_fcn@ + +/* Define this to the thread ID type */ +#define hwloc_thread_t HANDLE + +/* Define to 1 if you have the declaration of `GetModuleFileName', and to 0 if + you don't. */ +#define HAVE_DECL_GETMODULEFILENAME 1 + + +#endif /* HWLOC_CONFIGURE_H */ diff --git a/3rd-party/hwloc-2.7.1/contrib/windows-cmake/static-components.h.in b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/static-components.h.in new file mode 100644 index 0000000000..14f80dc9c7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows-cmake/static-components.h.in @@ -0,0 +1,32 @@ +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_noos_component; +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_xml_component; +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_synthetic_component; +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_xml_nolibxml_component; +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_windows_component; +#ifdef HWLOC_HAVE_X86_CPUID +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_x86_component; +#endif +#ifdef HWLOC_HAVE_LIBXML2 +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_xml_libxml_component; +#endif +#ifdef HWLOC_HAVE_OPENCL +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_opencl_component; +#endif + +static const struct hwloc_component * hwloc_static_components[] = { + &hwloc_noos_component, + &hwloc_xml_component, + &hwloc_synthetic_component, + &hwloc_xml_nolibxml_component, + &hwloc_windows_component, +#ifdef HWLOC_HAVE_X86_CPUID + &hwloc_x86_component, +#endif +#ifdef HWLOC_HAVE_OPENCL + &hwloc_opencl_component, +#endif +#ifdef HWLOC_HAVE_LIBXML2 + &hwloc_xml_libxml_component, +#endif + NULL +}; diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/Makefile.am b/3rd-party/hwloc-2.7.1/contrib/windows/Makefile.am new file mode 100644 index 0000000000..0270e4b4b7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/Makefile.am @@ -0,0 +1,35 @@ +# Copyright © 2009-2020 Inria. All rights reserved. +# See COPYING in top-level directory. + +EXTRA_DIST = \ + README \ + hwloc.sln \ + hwloc_config.h \ + private_config.h \ + static-components.h \ + libhwloc.vcxproj \ + libhwloc.vcxproj.filters \ + hwloc-annotate.vcxproj \ + hwloc-annotate.vcxproj.filters \ + hwloc-bind.vcxproj \ + hwloc-bind.vcxproj.filters \ + hwloc-calc.vcxproj \ + hwloc-calc.vcxproj.filters \ + hwloc-diff.vcxproj \ + hwloc-diff.vcxproj.filters \ + hwloc-distrib.vcxproj \ + hwloc-distrib.vcxproj.filters \ + hwloc-gather-cpuid.vcxproj \ + hwloc-gather-cpuid.vcxproj.filters \ + hwloc-info.vcxproj \ + hwloc-info.vcxproj.filters \ + hwloc-patch.vcxproj \ + hwloc-patch.vcxproj.filters \ + lstopo-no-graphics.vcxproj \ + lstopo-no-graphics.vcxproj.filters \ + lstopo-win.vcxproj \ + lstopo-win.vcxproj.filters \ + lstopo.vcxproj \ + lstopo.vcxproj.filters \ + app.manifest \ + check-versions.sh diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/README b/3rd-party/hwloc-2.7.1/contrib/windows/README new file mode 100644 index 0000000000..b3a23ddd57 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/README @@ -0,0 +1,19 @@ +This Visual Studio support is experimental. +Thanks to Eloi Gaudry for contributing most of these files. + +This may be directly open in VS, or built from the command-line with: + %MSBUILD_PATH%\MSBuild hwloc.sln /p:Configuration=Release /p:Platform=x64 + +If the specified platform toolset is too recent for your VS installation: + "The builds tools for v142 (Platform Toolset = 'v142') cannot be found." +You may force the build using your old one by adding + /p:PlatformToolset=v110 + +See contrib/ci.inria.fr/job-1-visualstudio.bat for an example. + + +hwloc-compress-dir not built because it needs work. + +hwloc-gather-topology is Linux specific. + +hwloc-ps is not built because it does nothing on Windows anyway (see #367). diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/app.manifest b/3rd-party/hwloc-2.7.1/contrib/windows/app.manifest new file mode 100644 index 0000000000..86c543721f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/check-versions.sh b/3rd-party/hwloc-2.7.1/contrib/windows/check-versions.sh new file mode 100644 index 0000000000..2fdacfc06f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/check-versions.sh @@ -0,0 +1,127 @@ +#!/bin/bash +# +# Copyright © 2018-2021 Inria. All rights reserved. +# $COPYRIGHT$ +# + +function die() { + echo "$@" + exit 1 +} + +if test "x$1" = "x-h" -o "x$1" = "x--help"; then + echo "$0 [--quiet] [git root directory]" + exit 0 +fi + +echo=echo +if test "x$1" = "x--quiet"; then + echo=true + shift +fi + +if test "x$1" = "x--update"; then + update=1 + shift +fi + +rootdir=. +if test "x$1" != x; then + rootdir="$1" +fi + +windows_config_h="$rootdir/contrib/windows/hwloc_config.h" +vcxproj_file="$rootdir/contrib/windows/libhwloc.vcxproj" +version_file="$rootdir/VERSION" + +if ! test -f "$version_file"; then + die "Couldn't find $version_file" +fi + +### EXTRACT MAIN VERSION ### +$echo "Looking for official version $version_file ..." +official_major=$(grep ^major= $version_file | cut -d= -f2) +official_minor=$(grep ^minor= $version_file | cut -d= -f2) +official_release=$(grep ^release= $version_file | cut -d= -f2) +official_greek=$(grep ^greek= $version_file | cut -d= -f2) +if [ -z "$official_major" -o -z "$official_minor" -o -z "$official_release" ]; then + die "ERROR in $version_file: Failed to get official HWLOC_VERSION_MAJOR/MINOR/RELEASE/GREEK" +fi +$echo " Found major=$official_major minor=$official_minor release=$official_release greek=$official_greek" +official_version="$official_major.$official_minor.$official_release$official_greek" + +$echo + +### WINDOWS UPDATE? ### +if test "x$update" = "x1"; then + $echo "Updating Windows VERSION in $windows_config_h ..." + sed -r -e '/define HWLOC_VERSION "/s/"[0-9a-zA-Z\.-]+"/"'$official_version'"/' -i "$windows_config_h" + sed -r -e '/define HWLOC_VERSION_MAJOR /s/[0-9]+/'$official_major'/' -i "$windows_config_h" + sed -r -e '/define HWLOC_VERSION_MINOR /s/[0-9]+/'$official_minor'/' -i "$windows_config_h" + sed -r -e '/define HWLOC_VERSION_RELEASE /s/[0-9]+/'$official_release'/' -i "$windows_config_h" + sed -r -e '/define HWLOC_VERSION_GREEK "/s/"[0-9a-zA-Z\.-]*"/"'$official_greek'"/' -i "$windows_config_h" + $echo +fi + +### WINDOWS CHECKS ### +$echo "Looking for Windows-specific version in $windows_config_h ..." +windows_major=$(grep -w HWLOC_VERSION_MAJOR $windows_config_h | grep -oP '[0-9]+') +windows_minor=$(grep -w HWLOC_VERSION_MINOR $windows_config_h | grep -oP '[0-9]+') +windows_release=$(grep -w HWLOC_VERSION_RELEASE $windows_config_h | grep -oP '[0-9]+') +windows_greek=$(grep -w HWLOC_VERSION_GREEK $windows_config_h | grep -oP '".*"' | tr -d \") +if [ -z "$windows_major" -o -z "$windows_minor" -o -z "$windows_release" ]; then + # greek is likely empty on purpose, ignore it + die "ERROR in $windows_config_h: Failed to get Windows-specific HWLOC_VERSION_MAJOR/MINOR/RELEASE" +fi +$echo " Found Windows-specific major=$windows_major minor=$windows_minor release=$windows_release greek=$windows_greek" + +# check that the version string matches +windows_version=$(grep -w HWLOC_VERSION $windows_config_h | grep -oP '".+"' | tr -d \") +$echo " Found windows-specific HWLOC_VERSION \"$windows_version\"" +expected_windows_version="$windows_major.$windows_minor.$windows_release$windows_greek" +if [ "$windows_version" != "$expected_windows_version" ]; then + die "ERROR in $windows_config_h: Windows-specific HWLOC_VERSION \"$windows_version\" doesn't match HWLOC_VERSION_MAJOR/MINOR/RELEASE/GREEK components \"$expected_windows_version\"" +fi +$echo " Windows-specific HWLOC_VERSION \"$windows_version\" matches HWLOC_VERSION_MAJOR/MINOR/RELEASE/GREEK components" + +# check that it matches the official version +if [ "$official_version" != "$windows_version" ]; then + die "ERROR in $windows_config_h: Windows-specific HWLOC_VERSION \"$windows_version\" doesn't match the official \"$official_version\"" +fi +$echo " Windows-specific HWLOC_VERSION \"$windows_version\" matches official version" + +$echo + +# get the windows soname +$echo "Looking in $vcxproj_file ..." +if [ `grep '' $vcxproj_file | uniq -c | wc -l` != 1 ]; then + die "ERROR in $vcxproj_file: Couldn't find a single value for lines" +fi +windows_lib_soname=$(grep -m1 '' $vcxproj_file | grep -oP '\d+') +if [ -z "$windows_lib_soname" ]; then + die "ERROR in $vcxproj_file: Failed to get the Windows-specific soname" +fi +$echo " Found Windows-specific soname $windows_lib_soname" + +# get the official soname +$echo "Looking in $version_file ..." +official_lib_version=$(grep -w "libhwloc_so_version" $version_file | grep -oP '\d+:\d+:\d+') +if [ -z "$official_lib_version" ]; then + die "ERROR in $version_file: Failed to get the official lib version" +fi +$echo " Found official lib version \"$official_lib_version\"" + +# bashisms to extract the soname from the version +IFS=':' arr=(${official_lib_version}) +declare -i official_lib_soname=${arr[0]}-${arr[2]} +$echo " Extracted official lib soname $official_lib_soname" + +# check that sonames match only if on a release branch +if [ "$official_lib_version" != "0:0:0" ] ; then + if [ "$windows_lib_soname" != "$official_lib_soname" ]; then + die "ERROR in $vcxproj_file: Windows-specific lib soname $windows_lib_soname differs from official $official_lib_soname (from \"$official_lib_version\")" + fi + $echo " Windows-specific lib soname $windows_lib_soname matches official lib soname" +else + $echo " Ignoring unset lib soname" +fi diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-annotate.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-annotate.vcxproj new file mode 100644 index 0000000000..8d2e3534d1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-annotate.vcxproj @@ -0,0 +1,102 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8F} + hwloc-bind + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-annotate.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-annotate.vcxproj.filters new file mode 100644 index 0000000000..b5c50ca6b6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-annotate.vcxproj.filters @@ -0,0 +1,66 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-bind.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-bind.vcxproj new file mode 100644 index 0000000000..0305f95e70 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-bind.vcxproj @@ -0,0 +1,103 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB91} + hwloc-bind + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-bind.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-bind.vcxproj.filters new file mode 100644 index 0000000000..f5f2597f2f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-bind.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-calc.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-calc.vcxproj new file mode 100644 index 0000000000..91b6a378e0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-calc.vcxproj @@ -0,0 +1,103 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB92} + hwloc-calc + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-calc.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-calc.vcxproj.filters new file mode 100644 index 0000000000..eb7b555904 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-calc.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-diff.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-diff.vcxproj new file mode 100644 index 0000000000..ac460231d1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-diff.vcxproj @@ -0,0 +1,101 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB93} + hwloc-bind + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-diff.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-diff.vcxproj.filters new file mode 100644 index 0000000000..4bb352486e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-diff.vcxproj.filters @@ -0,0 +1,63 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-distrib.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-distrib.vcxproj new file mode 100644 index 0000000000..c98ae5ee6a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-distrib.vcxproj @@ -0,0 +1,102 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB95} + hwloc-bind + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-distrib.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-distrib.vcxproj.filters new file mode 100644 index 0000000000..b96cbedcc1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-distrib.vcxproj.filters @@ -0,0 +1,66 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-gather-cpuid.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-gather-cpuid.vcxproj new file mode 100644 index 0000000000..c51bfab8de --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-gather-cpuid.vcxproj @@ -0,0 +1,91 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB9A} + hwloc-bind + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-gather-cpuid.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-gather-cpuid.vcxproj.filters new file mode 100644 index 0000000000..1a908bf69f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-gather-cpuid.vcxproj.filters @@ -0,0 +1,33 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-info.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-info.vcxproj new file mode 100644 index 0000000000..006c024693 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-info.vcxproj @@ -0,0 +1,103 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB96} + hwloc-info + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-info.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-info.vcxproj.filters new file mode 100644 index 0000000000..b5845619e6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-info.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-patch.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-patch.vcxproj new file mode 100644 index 0000000000..1726e32953 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-patch.vcxproj @@ -0,0 +1,101 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB97} + hwloc-bind + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-patch.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-patch.vcxproj.filters new file mode 100644 index 0000000000..3c5756a95c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc-patch.vcxproj.filters @@ -0,0 +1,63 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc.sln b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc.sln new file mode 100644 index 0000000000..93b4ebba3b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc.sln @@ -0,0 +1,82 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29306.81 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhwloc", "libhwloc.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo-no-graphics", "lstopo-no-graphics.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-annotate", "hwloc-annotate.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-bind", "hwloc-bind.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB91}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-calc", "hwloc-calc.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB92}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-diff", "hwloc-diff.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB93}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-distrib", "hwloc-distrib.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB95}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-info", "hwloc-info.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB96}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-patch", "hwloc-patch.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB97}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo", "lstopo.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB98}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo-win", "lstopo-win.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB99}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-gather-cpuid", "hwloc-gather-cpuid.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB9A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Release|x64 = Release|x64 + ReleaseStatic|x64 = ReleaseStatic|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9DE76C6D-4773-4766-9F93-69C56166CB8D}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8D}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8D}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8D}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8E}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8E}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8E}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8F}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8F}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB8F}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB91}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB91}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB91}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB92}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB92}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB92}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB93}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB93}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB93}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB95}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB95}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB95}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB96}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB96}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB96}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB97}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB97}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB97}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB98}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB98}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB98}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB99}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB99}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB99}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB99}.ReleaseStatic|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB9A}.Release|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB9A}.Release|x64.Build.0 = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB9A}.ReleaseStatic|x64.ActiveCfg = Release|x64 + {9DE76C6D-4773-4766-9F93-69C56166CB9A}.ReleaseStatic|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A91DB611-31B4-4CBC-A866-C9E529108BD0} + EndGlobalSection +EndGlobal diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/hwloc_config.h b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc_config.h new file mode 100644 index 0000000000..d6093360fc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/hwloc_config.h @@ -0,0 +1,59 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +/* The configuration file */ + +#ifndef HWLOC_CONFIG_H +#define HWLOC_CONFIG_H + +#define HWLOC_VERSION "2.7.1rc1" +#define HWLOC_VERSION_MAJOR 2 +#define HWLOC_VERSION_MINOR 7 +#define HWLOC_VERSION_RELEASE 1 +#define HWLOC_VERSION_GREEK "rc1" + +#define __hwloc_restrict +#define __hwloc_inline __inline + +#define __hwloc_attribute_unused +#define __hwloc_attribute_malloc +#define __hwloc_attribute_const +#define __hwloc_attribute_pure +#define __hwloc_attribute_deprecated +#define __hwloc_attribute_may_alias +#define __hwloc_attribute_warn_unused_result + +/* Defined to 1 if you have the `windows.h' header. */ +#define HWLOC_HAVE_WINDOWS_H 1 +#define hwloc_pid_t HANDLE +#define hwloc_thread_t HANDLE + +#include +#include +typedef DWORDLONG hwloc_uint64_t; + +#if defined( _USRDLL ) /* dynamic linkage */ +#if defined( DECLSPEC_EXPORTS ) +#define HWLOC_DECLSPEC __declspec(dllexport) +#else +#define HWLOC_DECLSPEC __declspec(dllimport) +#endif +#else /* static linkage */ +#define HWLOC_DECLSPEC +#endif + +/* Whether we need to re-define all the hwloc public symbols or not */ +#define HWLOC_SYM_TRANSFORM 0 + +/* The hwloc symbol prefix */ +#define HWLOC_SYM_PREFIX hwloc_ + +/* The hwloc symbol prefix in all caps */ +#define HWLOC_SYM_PREFIX_CAPS HWLOC_ + +#endif /* HWLOC_CONFIG_H */ diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/libhwloc.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/libhwloc.vcxproj new file mode 100644 index 0000000000..8b354baa41 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/libhwloc.vcxproj @@ -0,0 +1,258 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + libhwloc + Win32Proj + 10.0 + + + + DebugStatic + x64 + + + DebugDll + x64 + + + ReleaseStatic + x64 + + + Release + x64 + + + + + DynamicLibrary + true + MultiByte + v142 + + + StaticLibrary + true + MultiByte + v142 + + + DynamicLibrary + false + true + MultiByte + v142 + + + StaticLibrary + false + true + MultiByte + v142 + + + + + + + + + + + + + + + + + + + false + true + $(ProjectName)-15 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + false + true + $(ProjectName)-15 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + false + true + $(ProjectName)-15 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + false + true + $(ProjectName)-15 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + + copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\hwloc\static-components.h + + + + + Level3 + Disabled + WIN32;WIN64;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + + + app.manifest + + + + + copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\hwloc\static-components.h + + + + + Level3 + Disabled + WIN32;WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + + + app.manifest + + + + + copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\hwloc\static-components.h + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + $(OutDir)$(ProjectName).lib + true + $(OutDir)$(TargetName).dll + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + + + app.manifest + + + + + copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\hwloc\static-components.h + + + Level3 + + + MaxSpeed + true + MultiThreaded + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\hwloc + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + $(OutDir)$(ProjectName).lib + true + $(OutDir)$(TargetName).lib + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/libhwloc.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/libhwloc.vcxproj.filters new file mode 100644 index 0000000000..d68d2e1d47 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/libhwloc.vcxproj.filters @@ -0,0 +1,144 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-no-graphics.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-no-graphics.vcxproj new file mode 100644 index 0000000000..1dbe89b448 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-no-graphics.vcxproj @@ -0,0 +1,113 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8E} + lstopo-no-graphics + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc;..\..\utils\lstopo + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-no-graphics.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-no-graphics.vcxproj.filters new file mode 100644 index 0000000000..87efc9bf2e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-no-graphics.vcxproj.filters @@ -0,0 +1,99 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-win.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-win.vcxproj new file mode 100644 index 0000000000..5264a7035b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-win.vcxproj @@ -0,0 +1,115 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB99} + lstopo-no-graphics + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + LSTOPO_HAVE_GRAPHICS=1;PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc;..\..\utils\lstopo + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Windows + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + mainCRTStartup + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-win.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-win.vcxproj.filters new file mode 100644 index 0000000000..d8e9431121 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo-win.vcxproj.filters @@ -0,0 +1,102 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/lstopo.vcxproj b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo.vcxproj new file mode 100644 index 0000000000..897470250c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo.vcxproj @@ -0,0 +1,114 @@ + + + + {9DE76C6D-4773-4766-9F93-69C56166CB98} + lstopo-no-graphics + Win32Proj + 10.0 + + + + Release + x64 + + + + + Application + false + true + MultiByte + v142 + + + + + + + + + + false + true + $(ProjectName)-12 + $(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Level3 + + + MaxSpeed + true + MultiThreadedDLL + true + true + LSTOPO_HAVE_GRAPHICS=1;PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\include;..\..\utils\hwloc;..\..\utils\lstopo + + + $(IntDir)$(TargetFileName).intermediate.manifest + false + false + false + libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + $(OutDir)$(TargetName).exe + $(OutDir)$(ProjectName).pdb + LinkVerboseLib + Console + true + MachineX64 + NoErrorReport + $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) + libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + app.manifest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {9DE76C6D-4773-4766-9F93-69C56166CB8D} + false + + + + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/lstopo.vcxproj.filters b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo.vcxproj.filters new file mode 100644 index 0000000000..d8e9431121 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/lstopo.vcxproj.filters @@ -0,0 +1,102 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/3rd-party/hwloc-2.7.1/contrib/windows/private_config.h b/3rd-party/hwloc-2.7.1/contrib/windows/private_config.h new file mode 100644 index 0000000000..5bf22fac85 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/contrib/windows/private_config.h @@ -0,0 +1,672 @@ +/* + * Copyright © 2009, 2011, 2012 CNRS. All rights reserved. + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009, 2011, 2012, 2015 Université Bordeaux. All rights reserved. + * Copyright © 2009-2020 Cisco Systems, Inc. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#ifndef HWLOC_CONFIGURE_H +#define HWLOC_CONFIGURE_H + +#define DECLSPEC_EXPORTS + +#define HWLOC_HAVE_MSVC_CPUIDEX 1 + +/* Define to 1 if the system has the type `CACHE_DESCRIPTOR'. */ +#define HAVE_CACHE_DESCRIPTOR 0 + +/* Define to 1 if the system has the type `CACHE_RELATIONSHIP'. */ +#define HAVE_CACHE_RELATIONSHIP 0 + +/* Define to 1 if you have the `clz' function. */ +/* #undef HAVE_CLZ */ + +/* Define to 1 if you have the `clzl' function. */ +/* #undef HAVE_CLZL */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CL_CL_EXT_H */ + +/* Define to 1 if you have the `cpuset_setaffinity' function. */ +/* #undef HAVE_CPUSET_SETAFFINITY */ + +/* Define to 1 if you have the `cpuset_setid' function. */ +/* #undef HAVE_CPUSET_SETID */ + +/* Define to 1 if we have -lcuda */ +/* #undef HAVE_CUDA */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CUDA_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CUDA_RUNTIME_API_H */ + +/* Define to 1 if you have the declaration of `CL_DEVICE_TOPOLOGY_AMD', and to + 0 if you don't. */ +/* #undef HAVE_DECL_CL_DEVICE_TOPOLOGY_AMD */ + +/* Define to 1 if you have the declaration of `CTL_HW', and to 0 if you don't. + */ +/* #undef HAVE_DECL_CTL_HW */ + +/* Define to 1 if you have the declaration of `fabsf', and to 0 if you don't. + */ +#define HAVE_DECL_FABSF 1 + +/* Define to 1 if you have the declaration of `modff', and to 0 if you don't. + */ +#define HAVE_DECL_MODFF 1 + +/* Define to 1 if you have the declaration of `HW_NCPU', and to 0 if you + don't. */ +/* #undef HAVE_DECL_HW_NCPU */ + +/* Define to 1 if you have the declaration of + `nvmlDeviceGetMaxPcieLinkGeneration', and to 0 if you don't. */ +/* #undef HAVE_DECL_NVMLDEVICEGETMAXPCIELINKGENERATION */ + +/* Define to 1 if you have the declaration of `pthread_getaffinity_np', and to + 0 if you don't. */ +#define HAVE_DECL_PTHREAD_GETAFFINITY_NP 0 + +/* Define to 1 if you have the declaration of `pthread_setaffinity_np', and to + 0 if you don't. */ +#define HAVE_DECL_PTHREAD_SETAFFINITY_NP 0 + +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOULL 0 + +/* Define to 1 if you have the declaration of `strcasecmp', and to 0 if you + don't. */ +/* #undef HWLOC_HAVE_DECL_STRCASECMP */ + +/* Define to 1 if you have the declaration of `snprintf', and to 0 if you + don't. */ +#define HAVE_DECL_SNPRINTF 0 + +/* Define to 1 if you have the declaration of `_strdup', and to 0 if you + don't. */ +#define HAVE_DECL__STRDUP 1 + +/* Define to 1 if you have the declaration of `_putenv', and to 0 if you + don't. */ +#define HAVE_DECL__PUTENV 1 + +/* Define to 1 if you have the declaration of `_SC_LARGE_PAGESIZE', and to 0 + if you don't. */ +#define HAVE_DECL__SC_LARGE_PAGESIZE 0 + +/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_CONF', and to 0 + if you don't. */ +#define HAVE_DECL__SC_NPROCESSORS_CONF 0 + +/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_ONLN', and to 0 + if you don't. */ +#define HAVE_DECL__SC_NPROCESSORS_ONLN 0 + +/* Define to 1 if you have the declaration of `_SC_NPROC_CONF', and to 0 if + you don't. */ +#define HAVE_DECL__SC_NPROC_CONF 0 + +/* Define to 1 if you have the declaration of `_SC_NPROC_ONLN', and to 0 if + you don't. */ +#define HAVE_DECL__SC_NPROC_ONLN 0 + +/* Define to 1 if you have the declaration of `_SC_PAGESIZE', and to 0 if you + don't. */ +#define HAVE_DECL__SC_PAGESIZE 0 + +/* Define to 1 if you have the declaration of `_SC_PAGE_SIZE', and to 0 if you + don't. */ +#define HAVE_DECL__SC_PAGE_SIZE 0 + +/* Define to 1 if you have the header file. */ +/* #define HAVE_DIRENT_H 1 */ +#undef HAVE_DIRENT_H + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define to 1 if you have the `ffs' function. */ +/* #undef HAVE_FFS */ + +/* Define to 1 if you have the `ffsl' function. */ +/* #undef HAVE_FFSL */ + +/* Define to 1 if you have the `fls' function. */ +/* #undef HAVE_FLS */ + +/* Define to 1 if you have the `flsl' function. */ +/* #undef HAVE_FLSL */ + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if the system has the type `GROUP_AFFINITY'. */ +#define HAVE_GROUP_AFFINITY 1 + +/* Define to 1 if the system has the type `GROUP_RELATIONSHIP'. */ +#define HAVE_GROUP_RELATIONSHIP 1 + +/* Define to 1 if you have the `host_info' function. */ +/* #undef HAVE_HOST_INFO */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_INFINIBAND_VERBS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if the system has the type `KAFFINITY'. */ +#define HAVE_KAFFINITY 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_KSTAT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LANGINFO_H */ + +/* Define to 1 if we have -lgdi32 */ +#define HAVE_LIBGDI32 1 + +/* Define to 1 if we have -libverbs */ +/* #undef HAVE_LIBIBVERBS */ + +/* Define to 1 if we have -lkstat */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if we have -llgrp */ +/* #undef HAVE_LIBLGRP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if the system has the type `LOGICAL_PROCESSOR_RELATIONSHIP'. */ +#define HAVE_LOGICAL_PROCESSOR_RELATIONSHIP 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_HOST_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_INIT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define to 1 if you have the `memalign' function. */ +/* #undef HAVE_MEMALIGN */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +/* #undef HAVE_NL_LANGINFO */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NUMAIF_H */ + +/* Define to 1 if the system has the type `NUMA_NODE_RELATIONSHIP'. */ +#define HAVE_NUMA_NODE_RELATIONSHIP 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NVCTRL_NVCTRL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NVML_H */ + +/* Define to 1 if you have the `openat' function. */ +/* #undef HAVE_OPENAT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_PICL_H */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if the system has the type `PROCESSOR_CACHE_TYPE'. */ +#define HAVE_PROCESSOR_CACHE_TYPE 1 + +/* Define to 1 if the system has the type `PROCESSOR_GROUP_INFO'. */ +#define HAVE_PROCESSOR_GROUP_INFO 1 + +/* Define to 1 if the system has the type `PROCESSOR_RELATIONSHIP'. */ +#define HAVE_PROCESSOR_RELATIONSHIP 1 + +/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_BLOCK'. */ +/* #undef HAVE_PSAPI_WORKING_SET_EX_BLOCK */ + +/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_INFORMATION'. + */ +/* #undef HAVE_PSAPI_WORKING_SET_EX_INFORMATION */ + +/* Define to 1 if the system has the type `PROCESSOR_NUMBER'. */ +#define HAVE_PROCESSOR_NUMBER 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_PTHREAD_NP_H */ + +/* Define to 1 if the system has the type `pthread_t'. */ +/* #undef HAVE_PTHREAD_T */ +#undef HAVE_PTHREAD_T + +/* Define to 1 if you have the `putwc' function. */ +#define HAVE_PUTWC 1 + +/* Define to 1 if the system has the type `RelationProcessorPackage'. */ +/* #undef HAVE_RELATIONPROCESSORPACKAGE */ + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the header file. */ +/* #define HAVE_STRINGS_H 1*/ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to '1' if sysctl is present and usable */ +/* #undef HAVE_SYSCTL */ + +/* Define to '1' if sysctlbyname is present and usable */ +/* #undef HAVE_SYSCTLBYNAME */ + +/* Define to 1 if the system has the type + `SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX'. */ +#define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_CPUSET_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_LGRP_USER_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MMAN_H */ + +/* Define to 1 if you have the header file. */ +/* #define HAVE_SYS_PARAM_H 1 */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_UTSNAME_H */ + +/* Define to 1 if you have the `uname' function. */ +/* #undef HAVE_UNAME */ + +/* Define to 1 if you have the header file. */ +/* #define HAVE_UNISTD_H 1 */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `uselocale' function. */ +/* #undef HAVE_USELOCALE */ + +/* Define to 1 if the system has the type `wchar_t'. */ +#define HAVE_WCHAR_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_X11_KEYSYM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_X11_XLIB_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_X11_XUTIL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_XLOCALE_H */ + +/* Define to 1 on AIX */ +/* #undef HWLOC_AIX_SYS */ + +/* Define to 1 on BlueGene/Q */ +/* #undef HWLOC_BGQ_SYS */ + +/* Whether C compiler supports symbol visibility or not */ +#define HWLOC_C_HAVE_VISIBILITY 0 + +/* Define to 1 on Darwin */ +/* #undef HWLOC_DARWIN_SYS */ + +/* Whether we are in debugging mode or not */ +/* #undef HWLOC_DEBUG */ + +/* Define to 1 on *FREEBSD */ +/* #undef HWLOC_FREEBSD_SYS */ + +/* Whether your compiler has __attribute__ or not */ +/* #define HWLOC_HAVE_ATTRIBUTE 1 */ +#undef HWLOC_HAVE_ATTRIBUTE + +/* Whether your compiler has __attribute__ aligned or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_ALIGNED 1 */ + +/* Whether your compiler has __attribute__ always_inline or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE 1 */ + +/* Whether your compiler has __attribute__ cold or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_COLD 1 */ + +/* Whether your compiler has __attribute__ const or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_CONST 1 */ + +/* Whether your compiler has __attribute__ deprecated or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_DEPRECATED 1 */ + +/* Whether your compiler has __attribute__ format or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_FORMAT 1 */ + +/* Whether your compiler has __attribute__ hot or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_HOT 1 */ + +/* Whether your compiler has __attribute__ malloc or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_MALLOC 1 */ + +/* Whether your compiler has __attribute__ may_alias or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS 1 */ + +/* Whether your compiler has __attribute__ nonnull or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_NONNULL 1 */ + +/* Whether your compiler has __attribute__ noreturn or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_NORETURN 1 */ + +/* Whether your compiler has __attribute__ no_instrument_function or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION 1 */ + +/* Whether your compiler has __attribute__ packed or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_PACKED 1 */ + +/* Whether your compiler has __attribute__ pure or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_PURE 1 */ + +/* Whether your compiler has __attribute__ sentinel or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_SENTINEL 1 */ + +/* Whether your compiler has __attribute__ unused or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_UNUSED 1 */ + +/* Whether your compiler has __attribute__ warn unused result or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT 1 */ + +/* Whether your compiler has __attribute__ weak alias or not */ +/* #define HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS 1 */ + +/* Define to 1 if your `ffs' function is known to be broken. */ +/* #undef HWLOC_HAVE_BROKEN_FFS */ + +/* Define to 1 if you have the `cairo' library. */ +/* #undef HWLOC_HAVE_CAIRO */ + +/* Define to 1 if you have the `clz' function. */ +/* #undef HWLOC_HAVE_CLZ */ + +/* Define to 1 if you have the `clzl' function. */ +/* #undef HWLOC_HAVE_CLZL */ + +/* Define to 1 if you have cpuid */ +/* #undef HWLOC_HAVE_CPUID */ + +/* Define to 1 if the CPU_SET macro works */ +/* #undef HWLOC_HAVE_CPU_SET */ + +/* Define to 1 if the CPU_SET_S macro works */ +/* #undef HWLOC_HAVE_CPU_SET_S */ + +/* Define to 1 if you have the `cudart' SDK. */ +/* #undef HWLOC_HAVE_CUDART */ + +/* Define to 1 if function `clz' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_CLZ */ + +/* Define to 1 if function `clzl' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_CLZL */ + +/* Define to 1 if function `ffs' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_FFS */ + +/* Define to 1 if function `ffsl' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_FFSL */ + +/* Define to 1 if function `fls' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_FLS */ + +/* Define to 1 if function `flsl' is declared by system headers */ +/* #undef HWLOC_HAVE_DECL_FLSL */ + +/* Define to 1 if you have the `ffs' function. */ +/* #undef HWLOC_HAVE_FFS */ + +/* Define to 1 if you have the `ffsl' function. */ +/* #undef HWLOC_HAVE_FFSL */ + +/* Define to 1 if you have the `fls' function. */ +/* #undef HWLOC_HAVE_FLS */ + +/* Define to 1 if you have the `flsl' function. */ +/* #undef HWLOC_HAVE_FLSL */ + +/* Define to 1 if you have the GL module components. */ +/* #undef HWLOC_HAVE_GL */ + +/* Define to 1 if you have a library providing the termcap interface */ +/* #undef HWLOC_HAVE_LIBTERMCAP */ + +/* Define to 1 if you have the `libxml2' library. */ +/* #undef HWLOC_HAVE_LIBXML2 */ + +/* Define to 1 if building the Linux PCI component */ +/* #undef HWLOC_HAVE_LINUXPCI */ + +/* Define to 1 if you have the `NVML' library. */ +/* #undef HWLOC_HAVE_NVML */ + +/* Define to 1 if glibc provides the old prototype (without length) of + sched_setaffinity() */ +/* #undef HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + +/* Define to 1 if you have the `OpenCL' library. */ +/* #undef HWLOC_HAVE_OPENCL */ + +/* Define to 1 if the hwloc library should support dynamically-loaded plugins + */ +/* #undef HWLOC_HAVE_PLUGINS */ + +/* `Define to 1 if you have pthread_getthrds_np' */ +/* #undef HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ + +/* Define to 1 if pthread mutexes are available */ +/* #undef HWLOC_HAVE_PTHREAD_MUTEX */ + +/* Define to 1 if glibc provides a prototype of sched_setaffinity() */ +#define HWLOC_HAVE_SCHED_SETAFFINITY 1 + +/* Define to 1 if you have the header file. */ +#define HWLOC_HAVE_STDINT_H 1 + +/* Define to 1 if you have the `windows.h' header. */ +#define HWLOC_HAVE_WINDOWS_H 1 + +/* Define to 1 if X11 headers including Xutil.h and keysym.h are available. */ +/* #undef HWLOC_HAVE_X11_KEYSYM */ + +/* Define to 1 if function `syscall' is available */ +/* #undef HWLOC_HAVE_SYSCALL */ + +/* Define to 1 on HP-UX */ +/* #undef HWLOC_HPUX_SYS */ + +/* Define to 1 on Linux */ +/* #undef HWLOC_LINUX_SYS */ + +/* Define to 1 on *NETBSD */ +/* #undef HWLOC_NETBSD_SYS */ + +/* The size of `unsigned int', as computed by sizeof */ +#define HWLOC_SIZEOF_UNSIGNED_INT 4 + +/* The size of `unsigned long', as computed by sizeof */ +#define HWLOC_SIZEOF_UNSIGNED_LONG 4 + +/* Define to 1 on Solaris */ +/* #undef HWLOC_SOLARIS_SYS */ + +/* The hwloc symbol prefix */ +#define HWLOC_SYM_PREFIX hwloc_ + +/* The hwloc symbol prefix in all caps */ +#define HWLOC_SYM_PREFIX_CAPS HWLOC_ + +/* Whether we need to re-define all the hwloc public symbols or not */ +#define HWLOC_SYM_TRANSFORM 0 + +/* Define to 1 on unsupported systems */ +/* #undef HWLOC_UNSUPPORTED_SYS */ + +/* Define to 1 if ncurses works, preferred over curses */ +/* #undef HWLOC_USE_NCURSES */ + +/* Define to 1 on WINDOWS */ +#define HWLOC_WIN_SYS 1 + +/* Define to 1 on x86_32 */ +/* #undef HWLOC_X86_32_ARCH */ + +/* Define to 1 on x86_64 */ +#define HWLOC_X86_64_ARCH 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "hwloc" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "https://www.open-mpi.org/projects/hwloc/" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "hwloc" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "hwloc" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "hwloc" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION HWLOC_VERSION + +/* The size of `unsigned int', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_INT 4 + +/* The size of `unsigned long', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_LONG 4 + +/* The size of `void *', as computed by sizeof. */ +#define SIZEOF_VOID_P 8 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Enable extensions on HP-UX. */ +#ifndef _HPUX_SOURCE +# define _HPUX_SOURCE 1 +#endif + + +/* Enable extensions on AIX 3, Interix. */ +/* +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +*/ + +/* Enable GNU extensions on systems that have them. */ +/* +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +*/ +/* Enable threading extensions on Solaris. */ +/* +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +*/ +/* Enable extensions on HP NonStop. */ +/* +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +*/ +/* Enable general extensions on Solaris. */ +/* +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif +*/ + + +/* Version number of package */ +#define VERSION HWLOC_VERSION + +/* Define to 1 if the X Window System is missing or not being used. */ +#define X_DISPLAY_MISSING 1 + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define this to the process ID type */ +#define hwloc_pid_t HANDLE + +/* Define this to either strncasecmp or strncmp */ +#define hwloc_strncasecmp strncasecmp + +/* Define this to the thread ID type */ +#define hwloc_thread_t HANDLE + +/* Define to 1 if you have the declaration of `GetModuleFileName', and to 0 if + you don't. */ +#define HAVE_DECL_GETMODULEFILENAME 1 + + +#endif /* HWLOC_CONFIGURE_H */ diff --git a/3rd-party/hwloc-2.7.1/doc/Makefile.am b/3rd-party/hwloc-2.7.1/doc/Makefile.am new file mode 100644 index 0000000000..09c43267f5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/Makefile.am @@ -0,0 +1,946 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2013, 2021 Université Bordeaux +# Copyright © 2009-2016 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) + +DOCDIR = $(HWLOC_top_builddir)/doc +DOX_CONFIG = $(HWLOC_top_srcdir)/doc/doxygen.cfg + +DOX_DIR = doxygen-doc +DOX_HTML_DIR = $(DOX_DIR)/html +DOX_MAN_DIR = $(DOX_DIR)/man +DOX_LATEX_DIR = $(DOX_DIR)/latex +DOX_A4PDF = doxygen-doc/$(PACKAGE)-a4.pdf +DOX_LETTERPDF = doxygen-doc/$(PACKAGE)-letter.pdf +DOX_HTML_README = $(DOX_HTML_DIR)/readme.tmp.html +DOX_TAG = $(DOX_DIR)/$(PACKAGE).tag + +# +# The goal is that Doxygen output (i.e., the documentation) is +# included in release tarballs; there is no need to build anything +# from tarballs. Developers will need to build the docs the first +# time they build after a checkout (or if something in the docs +# changes, etc.). +# + +# images already available in repository +PREBUILT_IMAGES = images/dudley.png images/emmett.png images/hagrid.png \ + images/ppc64-with-smt.png images/ppc64-without-smt.png images/ppc64-full-with-smt.png \ + images/devel09-pci.png \ + images/netloc_design.png images/netloc_draw.png +# images built from repository before inclusion in make dist +BUILT_IMAGES = images/diagram.png images/diagram.eps + +EXTRA_DIST = \ + main.doxy \ + hwloc.doxy \ + netloc.doxy \ + README.sed \ + doxygen.css \ + doxygen.cfg \ + images/diagram.fig \ + www.open-mpi.org.cfg \ + www.open-mpi.org-css.inc \ + www.open-mpi.org-footer.inc \ + www.open-mpi.org-header.inc \ + $(PREBUILT_IMAGES) \ + $(BUILT_IMAGES) + + + +if HWLOC_BUILD_DOXYGEN + +# +# Files where the doxygen inputs live (i.e., dependencies). Make the +# generated tagfile depend on these files, which will force them to be +# regenerated (i.e., re-run doxygen) whenever any of these files +# change. +# + +hwloc_include_dir = $(HWLOC_top_srcdir)/include + +dox_inputs = $(DOX_CONFIG) \ + $(srcdir)/main.doxy \ + $(srcdir)/hwloc.doxy \ + $(hwloc_include_dir)/hwloc.h \ + $(hwloc_include_dir)/hwloc/helper.h \ + $(hwloc_include_dir)/hwloc/bitmap.h \ + $(hwloc_include_dir)/hwloc/export.h \ + $(hwloc_include_dir)/hwloc/distances.h \ + $(hwloc_include_dir)/hwloc/memattrs.h \ + $(hwloc_include_dir)/hwloc/cpukinds.h \ + $(hwloc_include_dir)/hwloc/diff.h \ + $(hwloc_include_dir)/hwloc/shmem.h \ + $(hwloc_include_dir)/hwloc/plugins.h \ + $(hwloc_include_dir)/hwloc/glibc-sched.h \ + $(hwloc_include_dir)/hwloc/linux.h \ + $(hwloc_include_dir)/hwloc/linux-libnuma.h \ + $(hwloc_include_dir)/hwloc/opencl.h \ + $(hwloc_include_dir)/hwloc/cuda.h \ + $(hwloc_include_dir)/hwloc/cudart.h \ + $(hwloc_include_dir)/hwloc/nvml.h \ + $(hwloc_include_dir)/hwloc/rsmi.h \ + $(hwloc_include_dir)/hwloc/levelzero.h \ + $(hwloc_include_dir)/hwloc/gl.h \ + $(hwloc_include_dir)/hwloc/windows.h \ + $(hwloc_include_dir)/hwloc/openfabrics-verbs.h \ + $(srcdir)/netloc.doxy \ + $(hwloc_include_dir)/netloc.h + +# +# Create the images that we need for the PDF output and the HTML +# output. There is not an easy way to check if the output of +# AC_PATH_PROG found something in configure.ac (!), so we have to put +# a run-time check here to see if fig2dev was found. :-( +# +# Note that BUILD_DOXYGEN will automatically be false if we're not +# building standalone. +# + +BUILT_SOURCES = $(BUILT_IMAGES) + +images/diagram.png: $(srcdir)/images/diagram.fig + $(MKDIR_P) images + @if test "x$(FIG2DEV)" = "x"; then \ + echo "ERROR: Cannot find the 'fig2dev' executable -- cannot make $@"; \ + exit 1; \ + fi + $(FIG2DEV) -m 1.5 -L png $< $@ + +images/diagram.eps: $(srcdir)/images/diagram.fig + $(MKDIR_P) images + @if test "x$(FIG2DEV)" = "x"; then \ + echo "ERROR: Cannot find the 'fig2dev' executable -- cannot make $@"; \ + exit 1; \ + fi + $(FIG2DEV) -L eps $< $@ + +# +# Rules for running doxygen. It depends on the built images and the +# dox_inputs. +# Remove useless manpages, they have too long filenames anyway because +# of nested structurre/union declarations. +# + +# +# Note that we want to use our own doxygen.css file; not the one that +# doxygen installs in the HTML directory. So manually copy it over. +# Be a little clever: only copy the doxygen.css file over if it exists +# in DOX_HTML_DIR (which is in the build tree). If the html tree +# doesn't exist in the build tree, then we're using an html tree in +# the source tree, and we don't need to copy over the doxygen.css +# because we didn't build the html tree (e.g., the html tree came +# pre-bundled in a tarball). +# + +$(DOX_TAG): $(BUILT_SOURCES) $(dox_inputs) $(PREBUILT_IMAGES) + rm -fr $(DOX_DIR) + $(DOXYGEN) $(DOX_CONFIG) + sed -i -e 's@\\hyperlink{a[[:digit:]][[:digit:]]*_source}{@\\textbf{@g' $(DOX_DIR)/latex/*.tex + @echo "Work-around spurious leading _ in doxygen filenames..." + -(cd $(DOX_DIR)/man/man3 ; \ + for i in _hwloc* ; do \ + [ ! -f $$i ] || mv $$i $${i#_} ; \ + done) + @echo "Removing useless manpages..." + @mkdir $(DOX_DIR)/man.tmp + @mv $(DOX_MAN_DIR)/man3/hwloc* $(DOX_MAN_DIR)/man3/HWLOC* $(DOX_DIR)/man.tmp/ + @rm -rf $(DOX_MAN_DIR)/man3 + @mv $(DOX_DIR)/man.tmp $(DOX_MAN_DIR)/man3 + @echo "Copying custom doxygen.css..." + if test -d $(DOX_HTML_DIR) -a -f $(DOX_HTML_DIR)/doxygen.css; then \ + cp -f $(srcdir)/doxygen.css $(DOX_HTML_DIR); \ + fi + +# +# Rules for building the PDF +# + +# The Doxygen config is set to generate a4 latex -- no transformation +# is necessary. +$(DOX_A4PDF): $(DOX_TAG) + cd $(DOX_LATEX_DIR); \ + rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ + cp refman.tex a4-refman.tex; \ + $(PDFLATEX) a4-refman.tex; \ + $(MAKEINDEX) a4-refman.idx; \ + $(PDFLATEX) a4-refman.tex; \ + done=0; repeat=5; \ + while test $$done = 0 -a $$repeat -gt 0; do \ + if $(EGREP) 'Rerun (LaTeX|to get cross-references right)' a4-refman.log > /dev/null 2>&1; then \ + $(PDFLATEX) a4-refman.tex; \ + repeat=`expr $$repeat - 1`; \ + else \ + done=1; \ + fi; \ + done; \ + mv a4-refman.pdf $(DOCDIR)/$(DOX_A4PDF) + +# The Doxygen config is set to generate a4 latex -- slightly transform +# to make suitable for US letter. +$(DOX_LETTERPDF): $(DOX_TAG) + cd $(DOX_LATEX_DIR); \ + rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ + $(SED) -e 's/a4paper/letterpaper/g' refman.tex > letter-refman.tex; \ + $(PDFLATEX) letter-refman.tex; \ + $(MAKEINDEX) letter-refman.idx; \ + $(PDFLATEX) letter-refman.tex; \ + done=0; repeat=5; \ + while test $$done = 0 -a $$repeat -gt 0; do \ + if $(EGREP) 'Rerun (LaTeX|to get cross-references right)' letter-refman.log > /dev/null 2>&1; then \ + $(PDFLATEX) letter-refman.tex; \ + repeat=`expr $$repeat - 1`; \ + else \ + done=1; \ + fi; \ + done; \ + mv letter-refman.pdf $(DOCDIR)/$(DOX_LETTERPDF) + +doc: $(DOX_TAG) $(DOX_LETTERPDF) $(DOX_A4PDF) + +else !HWLOC_BUILD_DOXYGEN + +# When we don't have doxygen, nothing to do for a normal build +doc: + +if !HWLOC_INSTALL_DOXYGEN +# But if the user tries to "make dist" and doesn't have all the right +# tools, and prebuilt doc aren't available, fail with a helpful error +$(BUILT_IMAGES) $(DOX_A4PDF) $(DOX_LETTERPDF): + @echo " " + @echo "*** ERROR: You do not have all the documentation generation tools" + @echo "*** that hwloc needs. Check the output from when you ran 'configure'" + @echo "*** (in section \"Configuring hwloc documentation\") to see what tools" + @echo "*** you are missing." + @echo "***" + @echo "*** 'make' will now abort with an error." + @echo " " + @exit 1 +endif !HWLOC_INSTALL_DOXYGEN + +endif !HWLOC_BUILD_DOXYGEN +# there are also a bunch of doxygen-build-dependencies later in this file + + + +if HWLOC_INSTALL_DOXYGEN + +# +# Un/install the generated PDF and man pages (just like BUILD_DOXYGEN, +# INSTALL_DOXYGEN will automatically be false if we're not building in +# standalone mode). +# + +pdf_DATA = $(DOX_A4PDF) $(DOX_LETTERPDF) + +# +# Install the HWLOC_* and hwloc_* man pages. It would be great to +# figure out how to not have to list every installable man page here +# in the Makefile.am... :-( +# + +# We have so many man pages that if we put them all in man3_MANS, we +# exceed the maximum command line length on some systems (during "make +# install"). :-( So we have to split them up so that the total +# command line length will be shorter. It seemed logical to split +# them by small-ish groups. Put at least one group in man3_MANS so +# that the proper $mandir/man/man3 is created, and then put the rest +# in _DATA suffix names, because AM won't allow us to do things like +# man3_extra_MANS = ...group... + +# When adding a new _DATA line below, remember to add it to the +# list of dependencies too. + +man3_MANS = \ + $(DOX_MAN_DIR)/man3/hwlocality_api_version.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_API_VERSION.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_api_version.3 + +man3_object_setsdir = $(man3dir) +man3_object_sets_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_object_sets.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_const_bitmap_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_const_cpuset_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_nodeset_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_const_nodeset_t.3 + +man3_object_typesdir = $(man3dir) +man3_object_types_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_object_types.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_BRIDGE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_CORE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_GROUP.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_L1CACHE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_L2CACHE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_L3CACHE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_L4CACHE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_L5CACHE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_L1ICACHE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_L2ICACHE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_L3ICACHE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_MACHINE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_MISC.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_NUMANODE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OS_DEVICE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_PU.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_PCI_DEVICE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_PACKAGE.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_t.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_CACHE_UNIFIED.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_CACHE_DATA.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_CACHE_INSTRUCTION.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_cache_type_e.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_cache_type_t.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_BRIDGE_HOST.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_BRIDGE_PCI.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_bridge_type_e.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_bridge_type_t.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_BLOCK.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_DMA.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_GPU.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_NETWORK.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_OPENFABRICS.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_COPROC.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_osdev_type_e.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_osdev_type_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_compare_types.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_UNORDERED.3 + +man3_objectsdir = $(man3dir) +man3_objects_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_objects.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_numanode_attr_s.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_numanode_attr_s_hwloc_memory_page_type_s.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_bridge_attr_s.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_cache_attr_s.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_group_attr_s.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_osdev_attr_s.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_pcidev_attr_s.3 \ + $(DOX_MAN_DIR)/man3/hwloc_info_s.3 + +man3_creationdir = $(man3dir) +man3_creation_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_creation.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_init.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_load.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_destroy.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_dup.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_abi_check.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_check.3 + +man3_levelsdir = $(man3dir) +man3_levels_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_levels.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_type_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_type_depth_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_MULTIPLE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_UNKNOWN.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_BRIDGE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_PCI_DEVICE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_OS_DEVICE.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_memory_parents_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_type_or_above_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_type_or_below_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_depth_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_nbobjs_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_nbobjs_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_root_obj.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_obj_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_obj_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_by_type.3 + +man3_object_stringsdir = $(man3dir) +man3_object_strings_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_object_strings.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_string.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_snprintf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_attr_snprintf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_type_sscanf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_type_sscanf_as_depth.3 + +man3_object_info_attrsdir = $(man3dir) +man3_object_info_attrs_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_info_attr.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_get_info_by_name.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_add_info.3 + +man3_cpubindingdir = $(man3dir) +man3_cpubinding_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_cpubinding.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_CPUBIND_NOMEMBIND.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_CPUBIND_PROCESS.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_CPUBIND_STRICT.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_CPUBIND_THREAD.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpubind_flags_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_set_cpubind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_cpubind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_set_proc_cpubind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_proc_cpubind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_set_thread_cpubind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_thread_cpubind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_proc_last_cpu_location.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_last_cpu_location.3 + +man3_membindingdir = $(man3dir) +man3_membinding_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_membinding.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_BIND.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_DEFAULT.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_FIRSTTOUCH.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_INTERLEAVE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_MIGRATE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_MIXED.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_NEXTTOUCH.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_NOCPUBIND.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_BYNODESET.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_PROCESS.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_STRICT.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_THREAD.3 \ + $(DOX_MAN_DIR)/man3/hwloc_membind_flags_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_membind_policy_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_set_membind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_membind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_set_proc_membind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_proc_membind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_set_area_membind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_area_membind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_area_memlocation.3 \ + $(DOX_MAN_DIR)/man3/hwloc_alloc.3 \ + $(DOX_MAN_DIR)/man3/hwloc_alloc_membind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_alloc_membind_policy.3 \ + $(DOX_MAN_DIR)/man3/hwloc_free.3 + +man3_setsourcedir = $(man3dir) +man3_setsource_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_setsource.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_pid.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_synthetic.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_xml.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_xmlbuffer.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_components_flag_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_components.3 + +man3_configurationdir = $(man3dir) +man3_configuration_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_configuration.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_flags_e.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_flags.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_flags.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_is_thissystem.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_discovery_support.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_cpubind_support.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_membind_support.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_misc_support.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_support.3 \ + $(DOX_MAN_DIR)/man3/hwloc_type_filter_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_FILTER_KEEP_ALL.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_FILTER_KEEP_NONE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_FILTER_KEEP_STRUCTURE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TYPE_FILTER_KEEP_IMPORTANT.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_type_filter.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_all_types_filter.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_cache_types_filter.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_icache_types_filter.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_io_types_filter.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_type_filter.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_userdata.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_userdata.3 + +man3_tinkerdir = $(man3dir) +man3_tinker_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_tinker.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_RESTRICT_FLAG_REMOVE_CPULESS.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_RESTRICT_FLAG_BYNODESET.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_RESTRICT_FLAG_ADAPT_IO.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_RESTRICT_FLAG_ADAPT_MISC.3 \ + $(DOX_MAN_DIR)/man3/hwloc_restrict_flags_e.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_restrict.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_ALLOW_FLAG_ALL.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_ALLOW_FLAG_CUSTOM.3 \ + $(DOX_MAN_DIR)/man3/hwloc_allow_flags_e.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_allow.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_insert_misc_object.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_alloc_group_object.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_insert_group_object.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_add_other_obj_sets.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_refresh.3 + +man3_xmlexportdir = $(man3dir) +man3_xmlexport_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_xmlexport.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_export_xml.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_export_xmlbuffer.3 \ + $(DOX_MAN_DIR)/man3/hwloc_free_xmlbuffer.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_userdata_export_callback.3 \ + $(DOX_MAN_DIR)/man3/hwloc_export_obj_userdata.3 \ + $(DOX_MAN_DIR)/man3/hwloc_export_obj_userdata_base64.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_set_userdata_import_callback.3 + +man3_syntheticexportdir = $(man3dir) +man3_syntheticexport_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_syntheticexport.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_export_synthetic.3 + +man3_shmemdir = $(man3dir) +man3_shmem_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_shmem.3 \ + $(DOX_MAN_DIR)/man3/hwloc_shmem_topology_get_length.3 \ + $(DOX_MAN_DIR)/man3/hwloc_shmem_topology_write.3 \ + $(DOX_MAN_DIR)/man3/hwloc_shmem_topology_adopt.3 + +man3_bitmapdir = $(man3dir) +man3_bitmap_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_bitmap.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_allbut.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_alloc.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_alloc_full.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_and.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_andnot.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_asprintf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_clr.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_clr_range.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_compare.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_compare_first.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_copy.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_dup.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_fill.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_first.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_foreach_begin.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_foreach_end.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_free.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_from_ith_ulong.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_from_ulong.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_from_ulongs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_intersects.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_isequal.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_isfull.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_isincluded.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_isset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_iszero.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_last.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_list_asprintf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_list_snprintf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_list_sscanf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_next.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_not.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_nr_ulongs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_only.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_or.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_set.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_set_ith_ulong.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_set_range.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_singlify.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_snprintf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_sscanf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_taskset_asprintf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_taskset_snprintf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_taskset_sscanf.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_to_ith_ulong.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_to_ulong.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_to_ulongs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_weight.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_xor.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_zero.3 + +man3_helper_find_insidedir = $(man3dir) +man3_helper_find_inside_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_find_inside.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_first_largest_obj_inside_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_largest_objs_inside_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_inside_cpuset_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_inside_cpuset_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_obj_inside_cpuset_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_obj_inside_cpuset_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_nbobjs_inside_cpuset_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_nbobjs_inside_cpuset_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_obj_index_inside_cpuset.3 + +man3_helper_find_coveringdir = $(man3dir) +man3_helper_find_covering_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_find_covering.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_child_covering_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_obj_covering_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_covering_cpuset_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_covering_cpuset_by_type.3 + +man3_helper_ancestorsdir = $(man3dir) +man3_helper_ancestors_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_ancestors.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_ancestor_obj_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_ancestor_obj_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_common_ancestor_obj.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_is_in_subtree.3 + +man3_helper_find_typesdir = $(man3dir) +man3_helper_find_types_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_types.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_is_normal.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_is_memory.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_is_io.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_is_cache.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_is_dcache.3 \ + $(DOX_MAN_DIR)/man3/hwloc_obj_type_is_icache.3 + +man3_helper_find_cachedir = $(man3dir) +man3_helper_find_cache_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_find_cache.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_cache_type_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_cache_covering_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_shared_cache_covering_obj.3 + +man3_helper_find_miscdir = $(man3dir) +man3_helper_find_misc_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_find_misc.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bitmap_singlify_per_core.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_pu_obj_by_os_index.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_child.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_closest_objs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_obj_below_array_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_obj_below_by_type.3 + +man3_helper_distributedir = $(man3dir) +man3_helper_distribute_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_distribute.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distrib_flags_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTRIB_FLAG_REVERSE.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distrib.3 + +man3_helper_topology_setsdir = $(man3dir) +man3_helper_topology_sets_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_topology_sets.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_allowed_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_complete_nodeset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_topology_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_allowed_nodeset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_complete_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_get_topology_nodeset.3 + +man3_helper_nodeset_convertdir = $(man3dir) +man3_helper_nodeset_convert_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_helper_nodeset_convert.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_nodeset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_nodeset.3 + +man3_helper_advanced_iodir = $(man3dir) +man3_helper_advanced_io_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_advanced_io.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_non_io_ancestor_obj.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_pcidev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_pcidev_by_busid.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_pcidev_by_busidstring.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_osdev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_next_bridge.3 \ + $(DOX_MAN_DIR)/man3/hwloc_bridge_covers_pcibus.3 + +man3_distancesdir = $(man3dir) +man3_distances_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_distances_get.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_s.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_kind_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_KIND_FROM_OS.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_KIND_FROM_USER.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_KIND_MEANS_LATENCY.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_get.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_get_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_get_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_get_by_name.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_get_name.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_release.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_transform_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_TRANSFORM_LINKS.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_transform.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_distances_consult.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_obj_index.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_obj_pair_values.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_distances_add.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_add_handle_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_add_flag_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_ADD_FLAG_GROUP.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_add_create.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_add_values.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_add_commit.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_distances_remove.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_remove.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_remove_by_depth.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_remove_by_type.3 \ + $(DOX_MAN_DIR)/man3/hwloc_distances_release_remove.3 + +man3_memattrsdir = $(man3dir) +man3_memattrs_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_memattrs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_id_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMATTR_ID_CAPACITY.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMATTR_ID_LOCALITY.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMATTR_ID_BANDWIDTH.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMATTR_ID_LATENCY.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_id_t.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_get_by_name.3 \ + $(DOX_MAN_DIR)/man3/hwloc_location.3 \ + $(DOX_MAN_DIR)/man3/hwloc_location_type_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_LOCATION_TYPE_OBJECT.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_LOCATION_TYPE_CPUSET.3 \ + $(DOX_MAN_DIR)/man3/hwloc_local_numanode_flag_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_LOCAL_NUMANODE_FLAG_ALL.3 \ + $(DOX_MAN_DIR)/man3/hwloc_get_local_numanode_objs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_get_value.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_get_best_target.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_get_best_initiator.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_memattrs_manage.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_get_name.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_get_flags.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_flag_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMATTR_FLAG_HIGHER_FIRST.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMATTR_FLAG_LOWER_FIRST.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_MEMATTR_FLAG_NEED_INITIATOR.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_register.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_set_value.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_get_targets.3 \ + $(DOX_MAN_DIR)/man3/hwloc_memattr_get_initiators.3 + +man3_cpukindsdir = $(man3dir) +man3_cpukinds_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_cpukinds.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpukinds_get_nr.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpukinds_get_by_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpukinds_get_info.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpukinds_register.3 + +man3_diffdir = $(man3dir) +man3_diff_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_diff.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_obj_attr_type_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_obj_attr_u.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_type_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_DIFF_OBJ_ATTR.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_u.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_build.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_apply_flags_e.3 \ + $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_apply.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_destroy.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_load_xml.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_export_xml.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_load_xmlbuffer.3 \ + $(DOX_MAN_DIR)/man3/hwloc_topology_diff_export_xmlbuffer.3 + +man3_gpudir = $(man3dir) +man3_gpu_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_opencl.3 \ + $(DOX_MAN_DIR)/man3/hwloc_opencl_get_device_pci_busid.3 \ + $(DOX_MAN_DIR)/man3/hwloc_opencl_get_device_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_opencl_get_device_osdev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_opencl_get_device_osdev_by_index.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_cuda.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_pci_ids.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_pcidev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_osdev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_osdev_by_index.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_cudart.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cudart_get_device_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cudart_get_device_pci_ids.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cudart_get_device_pcidev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cudart_get_device_osdev_by_index.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_nvml.3 \ + $(DOX_MAN_DIR)/man3/hwloc_nvml_get_device_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_nvml_get_device_osdev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_nvml_get_device_osdev_by_index.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_rsmi.3 \ + $(DOX_MAN_DIR)/man3/hwloc_rsmi_get_device_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_rsmi_get_device_osdev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_rsmi_get_device_osdev_by_index.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_levelzero.3 \ + $(DOX_MAN_DIR)/man3/hwloc_levelzero_get_device_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_levelzero_get_device_osdev.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_gl.3 \ + $(DOX_MAN_DIR)/man3/hwloc_gl_get_display_osdev_by_port_device.3 \ + $(DOX_MAN_DIR)/man3/hwloc_gl_get_display_osdev_by_name.3 \ + $(DOX_MAN_DIR)/man3/hwloc_gl_get_display_by_osdev.3 + +man3_glibc_scheddir = $(man3dir) +man3_glibc_sched_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_glibc_sched.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_glibc_sched_affinity.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_glibc_sched_affinity.3 + +man3_linuxdir = $(man3dir) +man3_linux_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_linux.3 \ + $(DOX_MAN_DIR)/man3/hwloc_linux_set_tid_cpubind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_linux_get_tid_cpubind.3 \ + $(DOX_MAN_DIR)/man3/hwloc_linux_get_tid_last_cpu_location.3 \ + $(DOX_MAN_DIR)/man3/hwloc_linux_read_path_as_cpumask.3 + +man3_linux_libnumadir = $(man3dir) +man3_linux_libnuma_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_linux_libnuma_bitmask.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_linux_libnuma_bitmask.3 \ + $(DOX_MAN_DIR)/man3/hwloc_nodeset_from_linux_libnuma_bitmask.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_linux_libnuma_bitmask.3 \ + $(DOX_MAN_DIR)/man3/hwloc_nodeset_to_linux_libnuma_bitmask.3 \ + $(DOX_MAN_DIR)/man3/hwlocality_linux_libnuma_ulongs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_linux_libnuma_ulongs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_nodeset_from_linux_libnuma_ulongs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_linux_libnuma_ulongs.3 \ + $(DOX_MAN_DIR)/man3/hwloc_nodeset_to_linux_libnuma_ulongs.3 + +man3_windowsdir = $(man3dir) +man3_windows_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_windows.3 \ + $(DOX_MAN_DIR)/man3/hwloc_windows_get_nr_processor_groups.3 \ + $(DOX_MAN_DIR)/man3/hwloc_windows_get_processor_group_cpuset.3 + +man3_openfabricsdir = $(man3dir) +man3_openfabrics_DATA = \ + $(DOX_MAN_DIR)/man3/hwlocality_openfabrics.3 \ + $(DOX_MAN_DIR)/man3/hwloc_ibv_get_device_cpuset.3 \ + $(DOX_MAN_DIR)/man3/hwloc_ibv_get_device_osdev.3 \ + $(DOX_MAN_DIR)/man3/hwloc_ibv_get_device_osdev_by_name.3 + +# end of manpages(3) if HWLOC_BUILD_DOXYGEN + +endif HWLOC_INSTALL_DOXYGEN + + + +if HWLOC_BUILD_DOXYGEN + +# Put in these rules to force the generation of the man pages and get +# all the dependencies right. Additionally, this forces a +# serialization during parallel builds (e.g., "make -j X") to ensure +# that we don't get partial target errors (i.e., doxygen must be run +# *first* before we can try to process/install man pages, the HTML, +# run pdflatex, .etc.). + +# The list below should match the list of _DATA lines above + +$(man3_MANS): $(DOX_TAG) +$(man3_object_sets_DATA): $(DOX_TAG) +$(man3_object_types_DATA): $(DOX_TAG) +$(man3_objects_DATA): $(DOX_TAG) +$(man3_creation_DATA): $(DOX_TAG) +$(man3_configuration_DATA): $(DOX_TAG) +$(man3_levels_DATA): $(DOX_TAG) +$(man3_object_strings_DATA): $(DOX_TAG) +$(man3_object_info_attrs_DATA): $(DOX_TAG) +$(man3_cpubinding_DATA): $(DOX_TAG) +$(man3_membinding_DATA): $(DOX_TAG) +$(man3_tinker_DATA): $(DOX_TAG) +$(man3_setsource_DATA): $(DOX_TAG) +$(man3_xmlexport_DATA): $(DOX_TAG) +$(man3_syntheticexport_DATA): $(DOX_TAG) +$(man3_shmem_DATA): $(DOX_TAG) +$(man3_bitmap_DATA): $(DOX_TAG) +$(man3_helper_find_inside_DATA): $(DOX_TAG) +$(man3_helper_find_covering_DATA): $(DOX_TAG) +$(man3_helper_ancestors_DATA): $(DOX_TAG) +$(man3_helper_find_types_DATA): $(DOX_TAG) +$(man3_helper_find_cache_DATA): $(DOX_TAG) +$(man3_helper_find_misc_DATA): $(DOX_TAG) +$(man3_helper_distribute_DATA): $(DOX_TAG) +$(man3_helper_topology_sets_DATA): $(DOX_TAG) +$(man3_helper_nodeset_convert_DATA): $(DOX_TAG) +$(man3_helper_advanced_io_DATA): $(DOX_TAG) +$(man3_distances_DATA): $(DOX_TAG) +$(man3_memattrs_DATA): $(DOX_TAG) +$(man3_cpukinds_DATA): $(DOX_TAG) +$(man3_diff_DATA): $(DOX_TAG) +$(man3_gpu_DATA): $(DOX_TAG) +$(man3_cuda_DATA): $(DOX_TAG) +$(man3_glibc_sched_DATA): $(DOX_TAG) +$(man3_linux_DATA): $(DOX_TAG) +$(man3_linux_libnuma_DATA): $(DOX_TAG) +$(man3_windows_DATA): $(DOX_TAG) +$(man3_openfabrics_DATA): $(DOX_TAG) + +$(DOX_LETTERPDF): $(DOX_TAG) +$(DOX_HTML_DIR): $(DOX_TAG) +$(DOX_LATEX_DIR): $(DOX_TAG) +$(DOX_MAN_DIR): $(DOX_TAG) + +# Additionally, we have to ensure that the A4 and Letter PDFs aren't +# built at the same time during a parallel build (e.g., "make -j X"). +# So arbitrarily make the A4 PDF dependent upon the Letter PDF. +$(DOX_A4PDF): $(DOX_TAG) $(DOX_LETTERPDF) + +endif HWLOC_BUILD_DOXYGEN + + + +# +# Only remove the actual generated documentation files for maintainers +# + +MAINTAINERCLEANFILES = $(DOX_TAG) \ + -r \ + $(DOX_HTML_DIR) \ + $(DOX_MAN_DIR) \ + $(DOX_LATEX_DIR) \ + $(DOX_A4PDF) \ + $(DOX_LETTERPDF) \ + $(DOX_HTML_README) + +if HWLOC_BUILD_README + +# +# Rules for creating the top-level README file. There does not appear +# to be an easy way to know if AC_PATH_PROG found something in +# configure.ac (!), so put a run-time check here to see if we have +# w3c. +# +# Just like BUILD_DOXYGEN, BUILD_README will automatically be false if +# we're not building standalone. +# +readme: $(HWLOC_top_srcdir)/README +$(HWLOC_top_srcdir)/README: $(DOX_TAG) + sed -n -f $(srcdir)/README.sed $(DOX_HTML_DIR)/index.html > $(DOX_HTML_README) + LC_ALL=C $(HWLOC_W3_GENERATOR) $(DOX_HTML_README) \ + | $(SED) -n -e 's/^ //' -e '/^Introduction$$/,$$p' \ + | $(SED) -e '/^--*-$$/,$$ d' \ + > $@ + echo >> $@ + echo >> $@ + echo "See https://www.open-mpi.org/projects/hwloc/doc/ for more hwloc documentation." >> $@ + rm -f $(DOX_HTML_README) + +else + +# When we don't have what's needed to build the README, nothing to do +readme: doc + +endif + +all-local: doc readme + +SUBDIRS = examples diff --git a/3rd-party/hwloc-2.7.1/doc/README.sed b/3rd-party/hwloc-2.7.1/doc/README.sed new file mode 100644 index 0000000000..5571d4a3f9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/README.sed @@ -0,0 +1,4 @@ +s/\–/--/g +s/©/(c)/g +s/é/é/g +p diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-config.cfg.in b/3rd-party/hwloc-2.7.1/doc/doxygen-config.cfg.in new file mode 100644 index 0000000000..c62320c3eb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-config.cfg.in @@ -0,0 +1,42 @@ +# Copyright © 2010-2021 Inria. All rights reserved. +# Copyright © 2009 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +# See big comments in doxygen.cfg about the purpose of this file. + +PROJECT_NUMBER = @PACKAGE_VERSION@ + +# no need to input hwloc.doxy and netloc.doxy, those are included from main.doxy +INPUT = \ + @top_srcdir@/doc/main.doxy \ + @top_srcdir@/doc/hwloc.doxy \ + @top_srcdir@/include/hwloc.h \ + @top_srcdir@/include/hwloc/helper.h \ + @top_srcdir@/include/hwloc/bitmap.h \ + @top_srcdir@/include/hwloc/export.h \ + @top_srcdir@/include/hwloc/distances.h \ + @top_srcdir@/include/hwloc/memattrs.h \ + @top_srcdir@/include/hwloc/cpukinds.h \ + @top_srcdir@/include/hwloc/linux.h \ + @top_srcdir@/include/hwloc/linux-libnuma.h \ + @top_srcdir@/include/hwloc/windows.h \ + @top_srcdir@/include/hwloc/glibc-sched.h \ + @top_srcdir@/include/hwloc/opencl.h \ + @top_srcdir@/include/hwloc/cuda.h \ + @top_srcdir@/include/hwloc/cudart.h \ + @top_srcdir@/include/hwloc/nvml.h \ + @top_srcdir@/include/hwloc/rsmi.h \ + @top_srcdir@/include/hwloc/levelzero.h \ + @top_srcdir@/include/hwloc/gl.h \ + @top_srcdir@/include/hwloc/openfabrics-verbs.h \ + @top_srcdir@/include/hwloc/diff.h \ + @top_srcdir@/include/hwloc/shmem.h \ + @top_srcdir@/include/hwloc/plugins.h \ + @top_srcdir@/doc/netloc.doxy \ + @top_srcdir@/include/netloc.h + +EXAMPLE_PATH = @top_srcdir@/doc @top_srcdir@/tests/netloc + +IMAGE_PATH = @top_srcdir@/doc/images images + +INCLUDE_PATH = @top_srcdir@/doc diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00125_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00125_source.html new file mode 100644 index 0000000000..efa14affe1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00125_source.html @@ -0,0 +1,938 @@ + + + + + + + +Hardware Locality (hwloc): hwloc.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      hwloc.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2009 CNRS
      +
      3  * Copyright © 2009-2021 Inria. All rights reserved.
      +
      4  * Copyright © 2009-2012 Université Bordeaux
      +
      5  * Copyright © 2009-2020 Cisco Systems, Inc. All rights reserved.
      +
      6  * See COPYING in top-level directory.
      +
      7  */
      +
      8 
      +
      9 /*=====================================================================
      +
      10  * PLEASE GO READ THE DOCUMENTATION!
      +
      11  * ------------------------------------------------
      +
      12  * $tarball_directory/doc/doxygen-doc/
      +
      13  * or
      +
      14  * https://www.open-mpi.org/projects/hwloc/doc/
      +
      15  *=====================================================================
      +
      16  *
      +
      17  * FAIR WARNING: Do NOT expect to be able to figure out all the
      +
      18  * subtleties of hwloc by simply reading function prototypes and
      +
      19  * constant descrptions here in this file.
      +
      20  *
      +
      21  * Hwloc has wonderful documentation in both PDF and HTML formats for
      +
      22  * your reading pleasure. The formal documentation explains a LOT of
      +
      23  * hwloc-specific concepts, provides definitions, and discusses the
      +
      24  * "big picture" for many of the things that you'll find here in this
      +
      25  * header file.
      +
      26  *
      +
      27  * The PDF/HTML documentation was generated via Doxygen; much of what
      +
      28  * you'll see in there is also here in this file. BUT THERE IS A LOT
      +
      29  * THAT IS IN THE PDF/HTML THAT IS ***NOT*** IN hwloc.h!
      +
      30  *
      +
      31  * There are entire paragraph-length descriptions, discussions, and
      +
      32  * pretty pictures to explain subtle corner cases, provide concrete
      +
      33  * examples, etc.
      +
      34  *
      +
      35  * Please, go read the documentation. :-)
      +
      36  *
      +
      37  * Moreover there are several examples of hwloc use under doc/examples
      +
      38  * in the source tree.
      +
      39  *
      +
      40  *=====================================================================*/
      +
      41 
      +
      53 #ifndef HWLOC_H
      +
      54 #define HWLOC_H
      +
      55 
      +
      56 #include "hwloc/autogen/config.h"
      +
      57 
      +
      58 #include <sys/types.h>
      +
      59 #include <stdio.h>
      +
      60 #include <string.h>
      +
      61 #include <limits.h>
      +
      62 
      +
      63 /*
      +
      64  * Symbol transforms
      +
      65  */
      +
      66 #include "hwloc/rename.h"
      +
      67 
      +
      68 /*
      +
      69  * Bitmap definitions
      +
      70  */
      +
      71 
      +
      72 #include "hwloc/bitmap.h"
      +
      73 
      +
      74 
      +
      75 #ifdef __cplusplus
      +
      76 extern "C" {
      +
      77 #endif
      +
      78 
      +
      79 
      +
      96 #define HWLOC_API_VERSION 0x00020500
      +
      97 
      +
      102 HWLOC_DECLSPEC unsigned hwloc_get_api_version(void);
      +
      103 
      +
      105 #define HWLOC_COMPONENT_ABI 7
      +
      106 
      + + +
      143 
      + + +
      161 
      +
      176 typedef enum {
      +
      177 
      +
      179 #define HWLOC_OBJ_TYPE_MIN HWLOC_OBJ_MACHINE /* Sentinel value */
      + + + +
      201  HWLOC_OBJ_PU,
      + + + + + + + + + + + + + + + +
      318  HWLOC_OBJ_DIE,
      +
      322  HWLOC_OBJ_TYPE_MAX
      + +
      324 
      + + + + + +
      331 
      + + + + +
      337 
      + + + + + + + + +
      357 
      +
      377 HWLOC_DECLSPEC int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) __hwloc_attribute_const;
      +
      378 
      +
      380 #define HWLOC_TYPE_UNORDERED INT_MAX
      +
      381 
      +
      390 union hwloc_obj_attr_u;
      +
      391 
      +
      396 struct hwloc_obj {
      +
      397  /* physical information */
      + +
      399  char *subtype;
      +
      401  unsigned os_index;
      +
      406 #define HWLOC_UNKNOWN_INDEX (unsigned)-1
      +
      407 
      +
      408  char *name;
      +
      413  hwloc_uint64_t total_memory;
      + +
      418  /* global position */
      +
      419  int depth;
      +
      434  unsigned logical_index;
      +
      441  /* cousins are all objects of the same type (and depth) across the entire topology */
      + + +
      445  /* children of the same parent are siblings, even if they may have different type and depth */
      +
      446  struct hwloc_obj *parent;
      +
      447  unsigned sibling_rank;
      + + +
      452  unsigned arity;
      +
      456  struct hwloc_obj **children;
      + + + +
      472  unsigned memory_arity;
      + +
      490  unsigned io_arity;
      + +
      502  unsigned misc_arity;
      + +
      511  /* cpusets and nodesets */
      + + + + +
      578  struct hwloc_info_s *infos;
      +
      579  unsigned infos_count;
      +
      581  /* misc */
      +
      582  void *userdata;
      +
      587  hwloc_uint64_t gp_index;
      +
      592 };
      +
      596 typedef struct hwloc_obj * hwloc_obj_t;
      +
      597 
      + + +
      602  hwloc_uint64_t local_memory;
      +
      603  unsigned page_types_len;
      + +
      610  hwloc_uint64_t size;
      +
      611  hwloc_uint64_t count;
      + + +
      614 
      + +
      617  hwloc_uint64_t size;
      +
      618  unsigned depth;
      +
      619  unsigned linesize;
      + + +
      623  } cache;
      + +
      626  unsigned depth;
      +
      628  unsigned kind;
      +
      629  unsigned subkind;
      +
      630  unsigned char dont_merge;
      +
      631  } group;
      + +
      634 #ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
      +
      635  unsigned short domain; /* Only 16bits PCI domains are supported by default */
      +
      636 #else
      +
      637  unsigned int domain; /* 32bits PCI domain support break the library ABI, hence it's disabled by default */
      +
      638 #endif
      +
      639  unsigned char bus, dev, func;
      +
      640  unsigned short class_id;
      + +
      642  unsigned char revision;
      +
      643  float linkspeed; /* in GB/s */
      + + +
      647  union {
      +
      648  struct hwloc_pcidev_attr_s pci;
      + + +
      651  union {
      +
      652  struct {
      +
      653 #ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
      +
      654  unsigned short domain; /* Only 16bits PCI domains are supported by default */
      +
      655 #else
      +
      656  unsigned int domain; /* 32bits PCI domain support break the library ABI, hence it's disabled by default */
      +
      657 #endif
      + +
      659  } pci;
      + + +
      662  unsigned depth;
      + + + +
      667  } osdev;
      +
      668 };
      +
      669 
      +
      674 struct hwloc_info_s {
      +
      675  char *name;
      +
      676  char *value;
      +
      677 };
      +
      678 
      +
      687 struct hwloc_topology;
      +
      692 typedef struct hwloc_topology * hwloc_topology_t;
      +
      693 
      +
      700 HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp);
      +
      701 
      +
      722 HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology);
      +
      723 
      +
      728 HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology);
      +
      729 
      +
      740 HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology);
      +
      741 
      +
      759 HWLOC_DECLSPEC int hwloc_topology_abi_check(hwloc_topology_t topology);
      +
      760 
      +
      772 HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology);
      +
      773 
      +
      794 HWLOC_DECLSPEC int hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
      +
      795 
      +
      819 HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type);
      +
      820 
      + + + + + + + + + +
      830 };
      +
      831 
      +
      851 HWLOC_DECLSPEC int hwloc_get_memory_parents_depth (hwloc_topology_t topology);
      +
      852 
      +
      866 static __hwloc_inline int
      +
      867 hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
      +
      868 
      +
      882 static __hwloc_inline int
      +
      883 hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
      +
      884 
      +
      892 HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
      +
      893 
      +
      896 HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
      +
      897 
      +
      903 static __hwloc_inline int
      +
      904 hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
      +
      905 
      +
      910 static __hwloc_inline hwloc_obj_t
      +
      911 hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
      +
      912 
      +
      914 HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, int depth, unsigned idx) __hwloc_attribute_pure;
      +
      915 
      +
      922 static __hwloc_inline hwloc_obj_t
      +
      923 hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
      +
      924 
      +
      929 static __hwloc_inline hwloc_obj_t
      + +
      931 
      +
      938 static __hwloc_inline hwloc_obj_t
      + +
      940  hwloc_obj_t prev);
      +
      941 
      +
      958 HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
      +
      959 
      +
      977 HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size,
      +
      978  hwloc_obj_t obj,
      +
      979  int verbose);
      +
      980 
      +
      992 HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size,
      +
      993  hwloc_obj_t obj, const char * __hwloc_restrict separator,
      +
      994  int verbose);
      +
      995 
      +
      1019 HWLOC_DECLSPEC int hwloc_type_sscanf(const char *string,
      +
      1020  hwloc_obj_type_t *typep,
      +
      1021  union hwloc_obj_attr_u *attrp, size_t attrsize);
      +
      1022 
      +
      1044 HWLOC_DECLSPEC int hwloc_type_sscanf_as_depth(const char *string,
      +
      1045  hwloc_obj_type_t *typep,
      +
      1046  hwloc_topology_t topology, int *depthp);
      +
      1047 
      +
      1063 static __hwloc_inline const char *
      +
      1064 hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
      +
      1065 
      +
      1082 HWLOC_DECLSPEC int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value);
      +
      1083 
      +
      1155 typedef enum {
      + +
      1159 
      + +
      1163 
      + +
      1188 
      +
      1204  HWLOC_CPUBIND_NOMEMBIND = (1<<3)
      + +
      1206 
      +
      1212 HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
      +
      1213 
      +
      1220 HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
      +
      1221 
      +
      1233 HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
      +
      1234 
      +
      1250 HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
      +
      1251 
      +
      1252 #ifdef hwloc_thread_t
      +
      1260 HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags);
      +
      1261 #endif
      +
      1262 
      +
      1263 #ifdef hwloc_thread_t
      +
      1275 HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
      +
      1276 #endif
      +
      1277 
      +
      1295 HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
      +
      1296 
      +
      1317 HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
      +
      1318 
      +
      1398 typedef enum {
      + +
      1407 
      + +
      1418 
      + +
      1422 
      + +
      1431 
      + +
      1438 
      +
      1445  HWLOC_MEMBIND_MIXED = -1
      + +
      1447 
      +
      1461 typedef enum {
      + +
      1467 
      + +
      1472 
      + +
      1480 
      + +
      1486 
      + +
      1499 
      +
      1509  HWLOC_MEMBIND_BYNODESET = (1<<5)
      + +
      1511 
      +
      1527 HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
      +
      1528 
      +
      1576 HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
      +
      1577 
      +
      1590 HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
      +
      1591 
      +
      1634 HWLOC_DECLSPEC int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
      +
      1635 
      +
      1646 HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
      +
      1647 
      +
      1678 HWLOC_DECLSPEC int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
      +
      1679 
      +
      1700 HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags);
      +
      1701 
      +
      1709 HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
      +
      1710 
      +
      1725 HWLOC_DECLSPEC void *hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
      +
      1726 
      +
      1739 static __hwloc_inline void *
      +
      1740 hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
      +
      1741 
      +
      1745 HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len);
      +
      1746 
      +
      1783 HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
      +
      1784 
      +
      1813 HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
      +
      1814 
      +
      1841 HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
      +
      1842 
      +
      1869 HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
      +
      1870 
      + + +
      1878 };
      +
      1879 
      +
      1894 HWLOC_DECLSPEC int hwloc_topology_set_components(hwloc_topology_t __hwloc_restrict topology, unsigned long flags, const char * __hwloc_restrict name);
      +
      1895 
      + + +
      1937 
      + +
      1957 
      + +
      1978 
      + +
      2002 
      + +
      2027 
      + +
      2049 
      + +
      2064 };
      +
      2065 
      +
      2077 HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
      +
      2078 
      +
      2088 HWLOC_DECLSPEC unsigned long hwloc_topology_get_flags (hwloc_topology_t topology);
      +
      2089 
      +
      2097 HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
      +
      2098 
      + +
      2102  unsigned char pu;
      +
      2104  unsigned char numa;
      +
      2106  unsigned char numa_memory;
      +
      2108  unsigned char disallowed_pu;
      +
      2110  unsigned char disallowed_numa;
      +
      2112  unsigned char cpukind_efficiency;
      +
      2113 };
      +
      2114 
      + +
      2122  unsigned char set_thisproc_cpubind;
      +
      2124  unsigned char get_thisproc_cpubind;
      +
      2126  unsigned char set_proc_cpubind;
      +
      2128  unsigned char get_proc_cpubind;
      +
      2130  unsigned char set_thisthread_cpubind;
      +
      2132  unsigned char get_thisthread_cpubind;
      +
      2134  unsigned char set_thread_cpubind;
      +
      2136  unsigned char get_thread_cpubind;
      + + + +
      2143 };
      +
      2144 
      + +
      2152  unsigned char set_thisproc_membind;
      +
      2154  unsigned char get_thisproc_membind;
      +
      2156  unsigned char set_proc_membind;
      +
      2158  unsigned char get_proc_membind;
      +
      2160  unsigned char set_thisthread_membind;
      +
      2162  unsigned char get_thisthread_membind;
      +
      2164  unsigned char set_area_membind;
      +
      2166  unsigned char get_area_membind;
      +
      2168  unsigned char alloc_membind;
      +
      2170  unsigned char firsttouch_membind;
      +
      2172  unsigned char bind_membind;
      +
      2174  unsigned char interleave_membind;
      +
      2176  unsigned char nexttouch_membind;
      +
      2178  unsigned char migrate_membind;
      +
      2180  unsigned char get_area_memlocation;
      +
      2181 };
      +
      2182 
      + +
      2187  unsigned char imported_support;
      +
      2188 };
      +
      2189 
      + + + + + +
      2201 };
      +
      2202 
      +
      2224 HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology);
      +
      2225 
      + + +
      2242 
      + +
      2250 
      + +
      2264 
      + +
      2279 };
      +
      2280 
      + +
      2284 
      + +
      2288 
      + +
      2294 
      + +
      2300 
      + +
      2306 
      + +
      2310 
      +
      2321 HWLOC_DECLSPEC void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata);
      +
      2322 
      +
      2328 HWLOC_DECLSPEC void * hwloc_topology_get_userdata(hwloc_topology_t topology);
      +
      2329 
      + + +
      2346 
      + +
      2352 
      + +
      2359 
      + +
      2365 
      +
      2370  HWLOC_RESTRICT_FLAG_ADAPT_IO = (1UL<<2)
      +
      2371 };
      +
      2372 
      +
      2397 HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_bitmap_t set, unsigned long flags);
      +
      2398 
      + + +
      2406 
      + +
      2415 
      +
      2418  HWLOC_ALLOW_FLAG_CUSTOM = (1UL<<2)
      +
      2419 };
      +
      2420 
      +
      2436 HWLOC_DECLSPEC int hwloc_topology_allow(hwloc_topology_t __hwloc_restrict topology, hwloc_const_cpuset_t cpuset, hwloc_const_nodeset_t nodeset, unsigned long flags);
      +
      2437 
      +
      2459 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name);
      +
      2460 
      + +
      2469 
      + +
      2517 
      + +
      2528 
      +
      2543 HWLOC_DECLSPEC int hwloc_topology_refresh(hwloc_topology_t topology);
      +
      2544 
      +
      2549 #ifdef __cplusplus
      +
      2550 } /* extern "C" */
      +
      2551 #endif
      +
      2552 
      +
      2553 
      +
      2554 /* high-level helpers */
      +
      2555 #include "hwloc/helper.h"
      +
      2556 
      +
      2557 /* inline code of some functions above */
      +
      2558 #include "hwloc/inlines.h"
      +
      2559 
      +
      2560 /* memory attributes */
      +
      2561 #include "hwloc/memattrs.h"
      +
      2562 
      +
      2563 /* kinds of CPU cores */
      +
      2564 #include "hwloc/cpukinds.h"
      +
      2565 
      +
      2566 /* exporting to XML or synthetic */
      +
      2567 #include "hwloc/export.h"
      +
      2568 
      +
      2569 /* distances */
      +
      2570 #include "hwloc/distances.h"
      +
      2571 
      +
      2572 /* topology diffs */
      +
      2573 #include "hwloc/diff.h"
      +
      2574 
      +
      2575 /* deprecated headers */
      +
      2576 #include "hwloc/deprecated.h"
      +
      2577 
      +
      2578 #endif /* HWLOC_H */
      +
      unsigned hwloc_get_api_version(void)
      Indicate at runtime which hwloc API version was used at build time.
      +
      hwloc_const_bitmap_t hwloc_const_cpuset_t
      A non-modifiable hwloc_cpuset_t.
      Definition: hwloc.h:142
      +
      hwloc_const_bitmap_t hwloc_const_nodeset_t
      A non-modifiable hwloc_nodeset_t.
      Definition: hwloc.h:160
      +
      hwloc_bitmap_t hwloc_nodeset_t
      A node set is a bitmap whose bits are set according to NUMA memory node physical OS indexes.
      Definition: hwloc.h:157
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      int hwloc_compare_types(hwloc_obj_type_t type1, hwloc_obj_type_t type2)
      Compare the depth of two object types.
      +
      hwloc_obj_bridge_type_e
      Type of one side (upstream or downstream) of an I/O bridge.
      Definition: hwloc.h:333
      +
      enum hwloc_obj_cache_type_e hwloc_obj_cache_type_t
      Cache type.
      +
      hwloc_obj_osdev_type_e
      Type of a OS device.
      Definition: hwloc.h:339
      +
      hwloc_obj_cache_type_e
      Cache type.
      Definition: hwloc.h:326
      +
      enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t
      Type of a OS device.
      +
      enum hwloc_obj_bridge_type_e hwloc_obj_bridge_type_t
      Type of one side (upstream or downstream) of an I/O bridge.
      +
      hwloc_obj_type_t
      Type of topology object.
      Definition: hwloc.h:176
      +
      @ HWLOC_OBJ_BRIDGE_HOST
      Host-side of a bridge, only possible upstream.
      Definition: hwloc.h:334
      +
      @ HWLOC_OBJ_BRIDGE_PCI
      PCI-side of a bridge.
      Definition: hwloc.h:335
      +
      @ HWLOC_OBJ_OSDEV_COPROC
      Operating system co-processor device. For instance "opencl0d0" for a OpenCL device,...
      Definition: hwloc.h:353
      +
      @ HWLOC_OBJ_OSDEV_OPENFABRICS
      Operating system openfabrics device. For instance the "mlx4_0" InfiniBand HCA, "hfi1_0" Omni-Path int...
      Definition: hwloc.h:347
      +
      @ HWLOC_OBJ_OSDEV_BLOCK
      Operating system block device, or non-volatile memory device. For instance "sda" or "dax2....
      Definition: hwloc.h:340
      +
      @ HWLOC_OBJ_OSDEV_DMA
      Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux.
      Definition: hwloc.h:351
      +
      @ HWLOC_OBJ_OSDEV_GPU
      Operating system GPU device. For instance ":0.0" for a GL display, "card0" for a Linux DRM device.
      Definition: hwloc.h:342
      +
      @ HWLOC_OBJ_OSDEV_NETWORK
      Operating system network device. For instance the "eth0" interface on Linux.
      Definition: hwloc.h:345
      +
      @ HWLOC_OBJ_CACHE_UNIFIED
      Unified cache.
      Definition: hwloc.h:327
      +
      @ HWLOC_OBJ_CACHE_INSTRUCTION
      Instruction cache (filtered out by default).
      Definition: hwloc.h:329
      +
      @ HWLOC_OBJ_CACHE_DATA
      Data cache.
      Definition: hwloc.h:328
      +
      @ HWLOC_OBJ_MEMCACHE
      Memory-side cache (filtered out by default). A cache in front of a specific NUMA node.
      Definition: hwloc.h:305
      +
      @ HWLOC_OBJ_L2ICACHE
      Level 2 instruction Cache (filtered out by default).
      Definition: hwloc.h:220
      +
      @ HWLOC_OBJ_L2CACHE
      Level 2 Data (or Unified) Cache.
      Definition: hwloc.h:214
      +
      @ HWLOC_OBJ_MISC
      Miscellaneous objects (filtered out by default). Objects without particular meaning,...
      Definition: hwloc.h:290
      +
      @ HWLOC_OBJ_L3CACHE
      Level 3 Data (or Unified) Cache.
      Definition: hwloc.h:215
      +
      @ HWLOC_OBJ_MACHINE
      Machine. A set of processors and memory with cache coherency.
      Definition: hwloc.h:182
      +
      @ HWLOC_OBJ_OS_DEVICE
      Operating system device (filtered out by default).
      Definition: hwloc.h:279
      +
      @ HWLOC_OBJ_GROUP
      Group objects. Objects which do not fit in the above but are detected by hwloc and are useful to take...
      Definition: hwloc.h:223
      +
      @ HWLOC_OBJ_L4CACHE
      Level 4 Data (or Unified) Cache.
      Definition: hwloc.h:216
      +
      @ HWLOC_OBJ_L1CACHE
      Level 1 Data (or Unified) Cache.
      Definition: hwloc.h:213
      +
      @ HWLOC_OBJ_PCI_DEVICE
      PCI device (filtered out by default).
      Definition: hwloc.h:269
      +
      @ HWLOC_OBJ_L5CACHE
      Level 5 Data (or Unified) Cache.
      Definition: hwloc.h:217
      +
      @ HWLOC_OBJ_BRIDGE
      Bridge (filtered out by default). Any bridge (or PCI switch) that connects the host or an I/O bus,...
      Definition: hwloc.h:257
      +
      @ HWLOC_OBJ_NUMANODE
      NUMA node. An object that contains memory that is directly and byte-accessible to the host processors...
      Definition: hwloc.h:236
      +
      @ HWLOC_OBJ_PACKAGE
      Physical package. The physical package that usually gets inserted into a socket on the motherboard....
      Definition: hwloc.h:191
      +
      @ HWLOC_OBJ_PU
      Processing Unit, or (Logical) Processor. An execution unit (may share a core with some other logical ...
      Definition: hwloc.h:201
      +
      @ HWLOC_OBJ_L3ICACHE
      Level 3 instruction Cache (filtered out by default).
      Definition: hwloc.h:221
      +
      @ HWLOC_OBJ_CORE
      Core. A computation unit (may be shared by several PUs, aka logical processors).
      Definition: hwloc.h:197
      +
      @ HWLOC_OBJ_DIE
      Die within a physical package. A subpart of the physical package, that contains multiple cores.
      Definition: hwloc.h:318
      +
      @ HWLOC_OBJ_L1ICACHE
      Level 1 instruction Cache (filtered out by default).
      Definition: hwloc.h:219
      +
      struct hwloc_obj * hwloc_obj_t
      Convenience typedef; a pointer to a struct hwloc_obj.
      Definition: hwloc.h:596
      +
      int hwloc_topology_init(hwloc_topology_t *topologyp)
      Allocate a topology context.
      +
      int hwloc_topology_abi_check(hwloc_topology_t topology)
      Verify that the topology is compatible with the current hwloc library.
      +
      int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology)
      Duplicate a topology.
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      void hwloc_topology_destroy(hwloc_topology_t topology)
      Terminate and free a topology context.
      +
      int hwloc_topology_load(hwloc_topology_t topology)
      Build the actual topology.
      +
      void hwloc_topology_check(hwloc_topology_t topology)
      Run internal checks on a topology structure.
      +
      unsigned hwloc_get_nbobjs_by_depth(hwloc_topology_t topology, int depth)
      Returns the width of level at depth depth.
      +
      static hwloc_obj_t hwloc_get_root_obj(hwloc_topology_t topology)
      Returns the top-object of the topology-tree.
      +
      hwloc_obj_t hwloc_get_obj_by_depth(hwloc_topology_t topology, int depth, unsigned idx)
      Returns the topology object at logical index idx from depth depth.
      +
      hwloc_obj_type_t hwloc_get_depth_type(hwloc_topology_t topology, int depth)
      Returns the type of objects at depth depth.
      +
      static hwloc_obj_t hwloc_get_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx)
      Returns the topology object at logical index idx with type type.
      +
      static hwloc_obj_t hwloc_get_next_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, hwloc_obj_t prev)
      Returns the next object of type type.
      +
      static int hwloc_get_nbobjs_by_type(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the width of level type type.
      +
      static int hwloc_get_type_or_below_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the depth of objects of type type or below.
      +
      static int hwloc_get_type_or_above_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the depth of objects of type type or above.
      +
      int hwloc_get_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the depth of objects of type type.
      +
      static hwloc_obj_t hwloc_get_next_obj_by_depth(hwloc_topology_t topology, int depth, hwloc_obj_t prev)
      Returns the next object at depth depth.
      +
      int hwloc_topology_get_depth(hwloc_topology_t restrict topology)
      Get the depth of the hierarchical tree of objects.
      +
      int hwloc_get_memory_parents_depth(hwloc_topology_t topology)
      Return the depth of parents where memory objects are attached.
      +
      hwloc_get_type_depth_e
      Definition: hwloc.h:821
      +
      @ HWLOC_TYPE_DEPTH_UNKNOWN
      No object of given type exists in the topology.
      Definition: hwloc.h:822
      +
      @ HWLOC_TYPE_DEPTH_NUMANODE
      Virtual depth for NUMA nodes.
      Definition: hwloc.h:824
      +
      @ HWLOC_TYPE_DEPTH_MEMCACHE
      Virtual depth for MemCache object.
      Definition: hwloc.h:829
      +
      @ HWLOC_TYPE_DEPTH_MISC
      Virtual depth for Misc object.
      Definition: hwloc.h:828
      +
      @ HWLOC_TYPE_DEPTH_PCI_DEVICE
      Virtual depth for PCI device object level.
      Definition: hwloc.h:826
      +
      @ HWLOC_TYPE_DEPTH_MULTIPLE
      Objects of given type exist at different depth in the topology (only for Groups).
      Definition: hwloc.h:823
      +
      @ HWLOC_TYPE_DEPTH_BRIDGE
      Virtual depth for bridge object level.
      Definition: hwloc.h:825
      +
      @ HWLOC_TYPE_DEPTH_OS_DEVICE
      Virtual depth for software device object level.
      Definition: hwloc.h:827
      +
      int hwloc_type_sscanf(const char *string, hwloc_obj_type_t *typep, union hwloc_obj_attr_u *attrp, size_t attrsize)
      Return an object type and attributes from a type string.
      +
      int hwloc_type_sscanf_as_depth(const char *string, hwloc_obj_type_t *typep, hwloc_topology_t topology, int *depthp)
      Return an object type and its level depth from a type string.
      +
      const char * hwloc_obj_type_string(hwloc_obj_type_t type)
      Return a constant stringified object type.
      +
      int hwloc_obj_attr_snprintf(char *restrict string, size_t size, hwloc_obj_t obj, const char *restrict separator, int verbose)
      Stringify the attributes of a given topology object into a human-readable form.
      +
      int hwloc_obj_type_snprintf(char *restrict string, size_t size, hwloc_obj_t obj, int verbose)
      Stringify the type of a given topology object into a human-readable form.
      +
      static const char * hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name)
      Search the given key name in object infos and return the corresponding value.
      +
      int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value)
      Add the given info name and value pair to the given object.
      +
      hwloc_cpubind_flags_t
      Process/Thread binding flags.
      Definition: hwloc.h:1155
      +
      int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags)
      Bind a process pid on CPUs given in physical bitmap set.
      +
      int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags)
      Bind current process or thread on CPUs given in physical bitmap set.
      +
      int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags)
      Get the last physical CPU where a process ran.
      +
      int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags)
      Get the current physical binding of process pid.
      +
      int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
      Get current process or thread binding.
      +
      int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags)
      Bind a thread thread on CPUs given in physical bitmap set.
      +
      int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags)
      Get the current physical binding of thread tid.
      +
      int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
      Get the last physical CPU where the current process or thread ran.
      +
      @ HWLOC_CPUBIND_PROCESS
      Bind all threads of the current (possibly) multithreaded process.
      Definition: hwloc.h:1158
      +
      @ HWLOC_CPUBIND_NOMEMBIND
      Avoid any effect on memory binding.
      Definition: hwloc.h:1204
      +
      @ HWLOC_CPUBIND_STRICT
      Request for strict binding from the OS.
      Definition: hwloc.h:1187
      +
      @ HWLOC_CPUBIND_THREAD
      Bind current thread of current process.
      Definition: hwloc.h:1162
      +
      int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
      Set the default memory binding policy of the current process or thread to prefer the NUMA node(s) spe...
      +
      void * hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
      Allocate some memory on NUMA memory nodes specified by set.
      +
      int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
      Query the default memory binding policy and physical locality of the specified process.
      +
      int hwloc_free(hwloc_topology_t topology, void *addr, size_t len)
      Free memory that was previously allocated by hwloc_alloc() or hwloc_alloc_membind().
      +
      int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags)
      Get the NUMA nodes where memory identified by (addr, len ) is physically allocated.
      +
      void * hwloc_alloc(hwloc_topology_t topology, size_t len)
      Allocate some memory.
      +
      int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
      Query the CPUs near the physical NUMA node(s) and binding policy of the memory identified by (addr,...
      +
      hwloc_membind_flags_t
      Memory binding flags.
      Definition: hwloc.h:1461
      +
      static void * hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
      Allocate some memory on NUMA memory nodes specified by set.
      +
      int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
      Set the default memory binding policy of the specified process to prefer the NUMA node(s) specified b...
      +
      hwloc_membind_policy_t
      Memory binding policy.
      Definition: hwloc.h:1398
      +
      int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
      Query the default memory binding policy and physical locality of the current process or thread.
      +
      int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
      Bind the already-allocated memory identified by (addr, len) to the NUMA node(s) specified by set.
      +
      @ HWLOC_MEMBIND_STRICT
      Definition: hwloc.h:1479
      +
      @ HWLOC_MEMBIND_PROCESS
      Set policy for all threads of the specified (possibly multithreaded) process. This flag is mutually e...
      Definition: hwloc.h:1466
      +
      @ HWLOC_MEMBIND_THREAD
      Set policy for a specific thread of the current process. This flag is mutually exclusive with HWLOC_M...
      Definition: hwloc.h:1471
      +
      @ HWLOC_MEMBIND_BYNODESET
      Consider the bitmap argument as a nodeset.
      Definition: hwloc.h:1509
      +
      @ HWLOC_MEMBIND_MIGRATE
      Migrate existing allocated memory. If the memory cannot be migrated and the HWLOC_MEMBIND_STRICT flag...
      Definition: hwloc.h:1485
      +
      @ HWLOC_MEMBIND_NOCPUBIND
      Avoid any effect on CPU binding.
      Definition: hwloc.h:1498
      +
      @ HWLOC_MEMBIND_DEFAULT
      Reset the memory allocation policy to the system default. Depending on the operating system,...
      Definition: hwloc.h:1406
      +
      @ HWLOC_MEMBIND_MIXED
      Returned by get_membind() functions when multiple threads or parts of a memory area have differing me...
      Definition: hwloc.h:1445
      +
      @ HWLOC_MEMBIND_FIRSTTOUCH
      Allocate each memory page individually on the local NUMA node of the thread that touches it.
      Definition: hwloc.h:1417
      +
      @ HWLOC_MEMBIND_BIND
      Allocate memory on the specified nodes.
      Definition: hwloc.h:1421
      +
      @ HWLOC_MEMBIND_INTERLEAVE
      Allocate memory on the given nodes in an interleaved / round-robin manner. The precise layout of the ...
      Definition: hwloc.h:1430
      +
      @ HWLOC_MEMBIND_NEXTTOUCH
      For each page bound with this policy, by next time it is touched (and next time only),...
      Definition: hwloc.h:1437
      +
      int hwloc_topology_set_xmlbuffer(hwloc_topology_t restrict topology, const char *restrict buffer, int size)
      Enable XML based topology using a memory buffer (instead of a file, as with hwloc_topology_set_xml())...
      +
      int hwloc_topology_set_pid(hwloc_topology_t restrict topology, hwloc_pid_t pid)
      Change which process the topology is viewed from.
      +
      int hwloc_topology_set_synthetic(hwloc_topology_t restrict topology, const char *restrict description)
      Enable synthetic topology.
      +
      int hwloc_topology_set_xml(hwloc_topology_t restrict topology, const char *restrict xmlpath)
      Enable XML-file based topology.
      +
      hwloc_topology_components_flag_e
      Flags to be passed to hwloc_topology_set_components()
      Definition: hwloc.h:1873
      +
      int hwloc_topology_set_components(hwloc_topology_t restrict topology, unsigned long flags, const char *restrict name)
      Prevent a discovery component from being used for a topology.
      +
      @ HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST
      Blacklist the target component from being used.
      Definition: hwloc.h:1877
      +
      unsigned long hwloc_topology_get_flags(hwloc_topology_t topology)
      Get OR'ed flags of a topology.
      +
      int hwloc_topology_set_io_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
      Set the filtering for all I/O object types.
      +
      int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter)
      Get the current filtering for the given object type.
      +
      void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata)
      Set the topology-specific userdata pointer.
      +
      int hwloc_topology_set_cache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
      Set the filtering for all CPU cache object types.
      +
      int hwloc_topology_set_icache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
      Set the filtering for all CPU instruction cache object types.
      +
      int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
      Does the topology context come from this system?
      +
      void * hwloc_topology_get_userdata(hwloc_topology_t topology)
      Retrieve the topology-specific userdata pointer.
      +
      hwloc_type_filter_e
      Type filtering flags.
      Definition: hwloc.h:2235
      +
      int hwloc_topology_set_all_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
      Set the filtering for all object types.
      +
      int hwloc_topology_set_flags(hwloc_topology_t topology, unsigned long flags)
      Set OR'ed flags to non-yet-loaded topology.
      +
      const struct hwloc_topology_support * hwloc_topology_get_support(hwloc_topology_t restrict topology)
      Retrieve the topology support.
      +
      int hwloc_topology_set_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e filter)
      Set the filtering for the given object type.
      +
      hwloc_topology_flags_e
      Flags to be set onto a topology context before load.
      Definition: hwloc.h:1914
      +
      @ HWLOC_TYPE_FILTER_KEEP_NONE
      Ignore all objects of this type.
      Definition: hwloc.h:2249
      +
      @ HWLOC_TYPE_FILTER_KEEP_IMPORTANT
      Only keep likely-important objects of the given type.
      Definition: hwloc.h:2278
      +
      @ HWLOC_TYPE_FILTER_KEEP_STRUCTURE
      Only ignore objects if their entire level does not bring any structure.
      Definition: hwloc.h:2263
      +
      @ HWLOC_TYPE_FILTER_KEEP_ALL
      Keep all objects of this type.
      Definition: hwloc.h:2241
      +
      @ HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED
      Detect the whole system, ignore reservations, include disallowed objects.
      Definition: hwloc.h:1936
      +
      @ HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES
      Get the set of allowed resources from the local operating system even if the topology was loaded from...
      Definition: hwloc.h:1977
      +
      @ HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING
      Do not consider resources outside of the process memory binding.
      Definition: hwloc.h:2048
      +
      @ HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM
      Assume that the selected backend provides the topology for the system on which we are running.
      Definition: hwloc.h:1956
      +
      @ HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING
      Do not consider resources outside of the process CPU binding.
      Definition: hwloc.h:2026
      +
      @ HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT
      Import support from the imported topology.
      Definition: hwloc.h:2001
      +
      @ HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING
      Do not ever modify the process or thread binding during discovery.
      Definition: hwloc.h:2063
      +
      hwloc_obj_t hwloc_topology_insert_group_object(hwloc_topology_t topology, hwloc_obj_t group)
      Add more structure to the topology by adding an intermediate Group.
      +
      hwloc_allow_flags_e
      Flags to be given to hwloc_topology_allow().
      Definition: hwloc.h:2400
      +
      hwloc_obj_t hwloc_topology_alloc_group_object(hwloc_topology_t topology)
      Allocate a Group object to insert later with hwloc_topology_insert_group_object().
      +
      int hwloc_topology_refresh(hwloc_topology_t topology)
      Refresh internal structures after topology modification.
      +
      int hwloc_topology_restrict(hwloc_topology_t restrict topology, hwloc_const_bitmap_t set, unsigned long flags)
      Restrict the topology to the given CPU set or nodeset.
      +
      hwloc_restrict_flags_e
      Flags to be given to hwloc_topology_restrict().
      Definition: hwloc.h:2339
      +
      int hwloc_obj_add_other_obj_sets(hwloc_obj_t dst, hwloc_obj_t src)
      Setup object cpusets/nodesets by OR'ing another object's sets.
      +
      hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name)
      Add a MISC object as a leaf of the topology.
      +
      int hwloc_topology_allow(hwloc_topology_t restrict topology, hwloc_const_cpuset_t cpuset, hwloc_const_nodeset_t nodeset, unsigned long flags)
      Change the sets of allowed PUs and NUMA nodes in the topology.
      +
      @ HWLOC_ALLOW_FLAG_CUSTOM
      Allow a custom set of objects, given to hwloc_topology_allow() as cpuset and/or nodeset parameters.
      Definition: hwloc.h:2418
      +
      @ HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS
      Only allow objects that are available to the current process.
      Definition: hwloc.h:2414
      +
      @ HWLOC_ALLOW_FLAG_ALL
      Mark all objects as allowed in the topology.
      Definition: hwloc.h:2405
      +
      @ HWLOC_RESTRICT_FLAG_ADAPT_MISC
      Move Misc objects to ancestors if their parents are removed during restriction. If this flag is not s...
      Definition: hwloc.h:2364
      +
      @ HWLOC_RESTRICT_FLAG_REMOVE_CPULESS
      Remove all objects that became CPU-less. By default, only objects that contain no PU and no memory ar...
      Definition: hwloc.h:2345
      +
      @ HWLOC_RESTRICT_FLAG_ADAPT_IO
      Move I/O objects to ancestors if their parents are removed during restriction. If this flag is not se...
      Definition: hwloc.h:2370
      +
      @ HWLOC_RESTRICT_FLAG_BYNODESET
      Restrict by nodeset instead of CPU set. Only keep objects whose nodeset is included or partially incl...
      Definition: hwloc.h:2351
      +
      @ HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS
      Remove all objects that became Memory-less. By default, only objects that contain no PU and no memory...
      Definition: hwloc.h:2358
      +
      struct hwloc_bitmap_s * hwloc_bitmap_t
      Set of bits represented as an opaque pointer to an internal bitmap.
      Definition: bitmap.h:68
      +
      const struct hwloc_bitmap_s * hwloc_const_bitmap_t
      a non-modifiable hwloc_bitmap_t
      Definition: bitmap.h:70
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      struct hwloc_obj ** children
      Normal children, children[0 .. arity -1].
      Definition: hwloc.h:456
      +
      hwloc_nodeset_t nodeset
      NUMA nodes covered by this object or containing this object.
      Definition: hwloc.h:540
      +
      unsigned logical_index
      Horizontal index in the whole list of similar objects, hence guaranteed unique across the entire mach...
      Definition: hwloc.h:434
      +
      int symmetric_subtree
      Set if the subtree of normal objects below this object is symmetric, which means all normal children ...
      Definition: hwloc.h:461
      +
      unsigned misc_arity
      Number of Misc children. These children are listed in misc_first_child.
      Definition: hwloc.h:502
      +
      int depth
      Vertical index in the hierarchy.
      Definition: hwloc.h:419
      +
      struct hwloc_obj * misc_first_child
      First Misc child. Misc objects are listed here (misc_arity and misc_first_child) instead of in the no...
      Definition: hwloc.h:505
      +
      char * subtype
      Subtype string to better describe the type field.
      Definition: hwloc.h:399
      +
      unsigned os_index
      OS-provided physical index number. It is not guaranteed unique across the entire machine,...
      Definition: hwloc.h:401
      +
      hwloc_cpuset_t cpuset
      CPUs covered by this object.
      Definition: hwloc.h:512
      +
      unsigned memory_arity
      Number of Memory children. These children are listed in memory_first_child.
      Definition: hwloc.h:472
      +
      hwloc_uint64_t total_memory
      Total memory (in bytes) in NUMA nodes below this object.
      Definition: hwloc.h:413
      +
      void * userdata
      Application-given private data pointer, initialized to NULL, use it as you wish. See hwloc_topology_s...
      Definition: hwloc.h:582
      +
      unsigned io_arity
      Number of I/O children. These children are listed in io_first_child.
      Definition: hwloc.h:490
      +
      struct hwloc_obj * prev_sibling
      Previous object below the same parent (inside the same list of children).
      Definition: hwloc.h:449
      +
      struct hwloc_obj * next_sibling
      Next object below the same parent (inside the same list of children).
      Definition: hwloc.h:448
      +
      struct hwloc_obj * last_child
      Last normal child.
      Definition: hwloc.h:458
      +
      struct hwloc_obj * next_cousin
      Next object of same type and depth.
      Definition: hwloc.h:442
      +
      struct hwloc_info_s * infos
      Array of stringified info type=name.
      Definition: hwloc.h:578
      +
      struct hwloc_obj * io_first_child
      First I/O child. Bridges, PCI and OS devices are listed here (io_arity and io_first_child) instead of...
      Definition: hwloc.h:493
      +
      hwloc_cpuset_t complete_cpuset
      The complete CPU set of processors of this object,.
      Definition: hwloc.h:527
      +
      hwloc_uint64_t gp_index
      Global persistent index. Generated by hwloc, unique across the topology (contrary to os_index) and pe...
      Definition: hwloc.h:587
      +
      unsigned infos_count
      Size of infos array.
      Definition: hwloc.h:579
      +
      unsigned sibling_rank
      Index in parent's children[] array. Or the index in parent's Memory, I/O or Misc children list.
      Definition: hwloc.h:447
      +
      unsigned arity
      Number of normal children. Memory, Misc and I/O children are not listed here but rather in their dedi...
      Definition: hwloc.h:452
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      struct hwloc_obj * memory_first_child
      First Memory child. NUMA nodes and Memory-side caches are listed here (memory_arity and memory_first_...
      Definition: hwloc.h:475
      +
      hwloc_nodeset_t complete_nodeset
      The complete NUMA node set of this object,.
      Definition: hwloc.h:562
      +
      struct hwloc_obj * prev_cousin
      Previous object of same type and depth.
      Definition: hwloc.h:443
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj * parent
      Parent, NULL if root (Machine object)
      Definition: hwloc.h:446
      +
      struct hwloc_obj * first_child
      First normal child.
      Definition: hwloc.h:457
      +
      Object type-specific Attributes.
      Definition: hwloc.h:599
      +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
      +
      struct hwloc_obj_attr_u::hwloc_bridge_attr_s bridge
      +
      struct hwloc_obj_attr_u::hwloc_cache_attr_s cache
      +
      struct hwloc_obj_attr_u::hwloc_group_attr_s group
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      struct hwloc_obj_attr_u::hwloc_numanode_attr_s numanode
      +
      NUMA node-specific Object Attributes.
      Definition: hwloc.h:601
      +
      unsigned page_types_len
      Size of array page_types.
      Definition: hwloc.h:603
      +
      hwloc_uint64_t local_memory
      Local memory (in bytes)
      Definition: hwloc.h:602
      +
      struct hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s * page_types
      +
      Array of local memory page types, NULL if no local memory and page_types is 0.
      Definition: hwloc.h:609
      +
      hwloc_uint64_t size
      Size of pages.
      Definition: hwloc.h:610
      +
      hwloc_uint64_t count
      Number of pages of this size.
      Definition: hwloc.h:611
      +
      Cache-specific Object Attributes.
      Definition: hwloc.h:616
      +
      unsigned depth
      Depth of cache (e.g., L1, L2, ...etc.)
      Definition: hwloc.h:618
      +
      unsigned linesize
      Cache-line size in bytes. 0 if unknown.
      Definition: hwloc.h:619
      +
      hwloc_uint64_t size
      Size of cache in bytes.
      Definition: hwloc.h:617
      +
      int associativity
      Ways of associativity, -1 if fully associative, 0 if unknown.
      Definition: hwloc.h:620
      +
      hwloc_obj_cache_type_t type
      Cache type.
      Definition: hwloc.h:622
      +
      Group-specific Object Attributes.
      Definition: hwloc.h:625
      +
      unsigned kind
      Internally-used kind of group.
      Definition: hwloc.h:628
      +
      unsigned subkind
      Internally-used subkind to distinguish different levels of groups with same kind.
      Definition: hwloc.h:629
      +
      unsigned depth
      Depth of group object. It may change if intermediate Group objects are added.
      Definition: hwloc.h:626
      +
      unsigned char dont_merge
      Flag preventing groups from being automatically merged with identical parent or children.
      Definition: hwloc.h:630
      +
      PCI Device specific Object Attributes.
      Definition: hwloc.h:633
      +
      unsigned char revision
      Definition: hwloc.h:642
      +
      unsigned short device_id
      Definition: hwloc.h:641
      +
      unsigned char dev
      Definition: hwloc.h:639
      +
      unsigned short subvendor_id
      Definition: hwloc.h:641
      +
      float linkspeed
      Definition: hwloc.h:643
      +
      unsigned char func
      Definition: hwloc.h:639
      +
      unsigned short domain
      Definition: hwloc.h:635
      +
      unsigned short vendor_id
      Definition: hwloc.h:641
      +
      unsigned char bus
      Definition: hwloc.h:639
      +
      unsigned short subdevice_id
      Definition: hwloc.h:641
      +
      unsigned short class_id
      Definition: hwloc.h:640
      +
      Bridge specific Object Attributes.
      Definition: hwloc.h:646
      +
      hwloc_obj_bridge_type_t upstream_type
      Definition: hwloc.h:650
      +
      unsigned short domain
      Definition: hwloc.h:654
      +
      unsigned depth
      Definition: hwloc.h:662
      +
      union hwloc_obj_attr_u::hwloc_bridge_attr_s::@1 downstream
      +
      struct hwloc_pcidev_attr_s pci
      Definition: hwloc.h:648
      +
      union hwloc_obj_attr_u::hwloc_bridge_attr_s::@0 upstream
      +
      hwloc_obj_bridge_type_t downstream_type
      Definition: hwloc.h:661
      +
      unsigned char secondary_bus
      Definition: hwloc.h:658
      +
      unsigned char subordinate_bus
      Definition: hwloc.h:658
      +
      OS Device specific Object Attributes.
      Definition: hwloc.h:665
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      Object info.
      Definition: hwloc.h:674
      +
      char * name
      Info name.
      Definition: hwloc.h:675
      +
      char * value
      Info value.
      Definition: hwloc.h:676
      +
      Flags describing actual discovery support for this topology.
      Definition: hwloc.h:2100
      +
      unsigned char numa
      Detecting the number of NUMA nodes is supported.
      Definition: hwloc.h:2104
      +
      unsigned char disallowed_numa
      Detecting and identifying NUMA nodes that are not available to the current process is supported.
      Definition: hwloc.h:2110
      +
      unsigned char cpukind_efficiency
      Detecting the efficiency of CPU kinds is supported, see Kinds of CPU cores.
      Definition: hwloc.h:2112
      +
      unsigned char pu
      Detecting the number of PU objects is supported.
      Definition: hwloc.h:2102
      +
      unsigned char numa_memory
      Detecting the amount of memory in NUMA nodes is supported.
      Definition: hwloc.h:2106
      +
      unsigned char disallowed_pu
      Detecting and identifying PU objects that are not available to the current process is supported.
      Definition: hwloc.h:2108
      +
      Flags describing actual PU binding support for this topology.
      Definition: hwloc.h:2120
      +
      unsigned char get_proc_last_cpu_location
      Definition: hwloc.h:2140
      +
      unsigned char set_thread_cpubind
      Definition: hwloc.h:2134
      +
      unsigned char set_thisthread_cpubind
      Definition: hwloc.h:2130
      +
      unsigned char get_thisthread_last_cpu_location
      Definition: hwloc.h:2142
      +
      unsigned char get_thisproc_cpubind
      Definition: hwloc.h:2124
      +
      unsigned char get_thisthread_cpubind
      Definition: hwloc.h:2132
      +
      unsigned char get_thread_cpubind
      Definition: hwloc.h:2136
      +
      unsigned char set_thisproc_cpubind
      Definition: hwloc.h:2122
      +
      unsigned char set_proc_cpubind
      Definition: hwloc.h:2126
      +
      unsigned char get_proc_cpubind
      Definition: hwloc.h:2128
      +
      unsigned char get_thisproc_last_cpu_location
      Definition: hwloc.h:2138
      +
      Flags describing actual memory binding support for this topology.
      Definition: hwloc.h:2150
      +
      unsigned char set_thisthread_membind
      Definition: hwloc.h:2160
      +
      unsigned char get_area_membind
      Definition: hwloc.h:2166
      +
      unsigned char firsttouch_membind
      Definition: hwloc.h:2170
      +
      unsigned char get_area_memlocation
      Definition: hwloc.h:2180
      +
      unsigned char set_thisproc_membind
      Definition: hwloc.h:2152
      +
      unsigned char interleave_membind
      Definition: hwloc.h:2174
      +
      unsigned char get_thisproc_membind
      Definition: hwloc.h:2154
      +
      unsigned char set_area_membind
      Definition: hwloc.h:2164
      +
      unsigned char get_thisthread_membind
      Definition: hwloc.h:2162
      +
      unsigned char set_proc_membind
      Definition: hwloc.h:2156
      +
      unsigned char get_proc_membind
      Definition: hwloc.h:2158
      +
      unsigned char migrate_membind
      Definition: hwloc.h:2178
      +
      unsigned char nexttouch_membind
      Definition: hwloc.h:2176
      +
      unsigned char alloc_membind
      Definition: hwloc.h:2168
      +
      unsigned char bind_membind
      Definition: hwloc.h:2172
      +
      Flags describing miscellaneous features.
      Definition: hwloc.h:2185
      +
      unsigned char imported_support
      Definition: hwloc.h:2187
      +
      Set of flags describing actual support for this topology.
      Definition: hwloc.h:2196
      +
      struct hwloc_topology_misc_support * misc
      Definition: hwloc.h:2200
      +
      struct hwloc_topology_membind_support * membind
      Definition: hwloc.h:2199
      +
      struct hwloc_topology_cpubind_support * cpubind
      Definition: hwloc.h:2198
      +
      struct hwloc_topology_discovery_support * discovery
      Definition: hwloc.h:2197
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00128_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00128_source.html new file mode 100644 index 0000000000..1a6ea69458 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00128_source.html @@ -0,0 +1,809 @@ + + + + + + + +Hardware Locality (hwloc): helper.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      helper.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2009 CNRS
      +
      3  * Copyright © 2009-2021 Inria. All rights reserved.
      +
      4  * Copyright © 2009-2012 Université Bordeaux
      +
      5  * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
      +
      6  * See COPYING in top-level directory.
      +
      7  */
      +
      8 
      +
      13 #ifndef HWLOC_HELPER_H
      +
      14 #define HWLOC_HELPER_H
      +
      15 
      +
      16 #ifndef HWLOC_H
      +
      17 #error Please include the main hwloc.h instead
      +
      18 #endif
      +
      19 
      +
      20 #include <stdlib.h>
      +
      21 #include <errno.h>
      +
      22 
      +
      23 
      +
      24 #ifdef __cplusplus
      +
      25 extern "C" {
      +
      26 #endif
      +
      27 
      +
      28 
      +
      41 static __hwloc_inline hwloc_obj_t
      + +
      43 {
      +
      44  hwloc_obj_t obj = hwloc_get_root_obj(topology);
      +
      45  if (!hwloc_bitmap_intersects(obj->cpuset, set))
      +
      46  return NULL;
      +
      47  while (!hwloc_bitmap_isincluded(obj->cpuset, set)) {
      +
      48  /* while the object intersects without being included, look at its children */
      +
      49  hwloc_obj_t child = obj->first_child;
      +
      50  while (child) {
      +
      51  if (hwloc_bitmap_intersects(child->cpuset, set))
      +
      52  break;
      +
      53  child = child->next_sibling;
      +
      54  }
      +
      55  if (!child)
      +
      56  /* no child intersects, return their father */
      +
      57  return obj;
      +
      58  /* found one intersecting child, look at its children */
      +
      59  obj = child;
      +
      60  }
      +
      61  /* obj is included, return it */
      +
      62  return obj;
      +
      63 }
      +
      64 
      + +
      70  hwloc_obj_t * __hwloc_restrict objs, int max);
      +
      71 
      +
      84 static __hwloc_inline hwloc_obj_t
      + +
      86  int depth, hwloc_obj_t prev)
      +
      87 {
      +
      88  hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev);
      +
      89  if (!next)
      +
      90  return NULL;
      +
      91  while (next && (hwloc_bitmap_iszero(next->cpuset) || !hwloc_bitmap_isincluded(next->cpuset, set)))
      +
      92  next = next->next_cousin;
      +
      93  return next;
      +
      94 }
      +
      95 
      +
      108 static __hwloc_inline hwloc_obj_t
      + +
      110  hwloc_obj_type_t type, hwloc_obj_t prev)
      +
      111 {
      +
      112  int depth = hwloc_get_type_depth(topology, type);
      +
      113  if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE)
      +
      114  return NULL;
      +
      115  return hwloc_get_next_obj_inside_cpuset_by_depth(topology, set, depth, prev);
      +
      116 }
      +
      117 
      +
      126 static __hwloc_inline hwloc_obj_t
      + +
      128  int depth, unsigned idx) __hwloc_attribute_pure;
      +
      129 static __hwloc_inline hwloc_obj_t
      + +
      131  int depth, unsigned idx)
      +
      132 {
      +
      133  hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0);
      +
      134  unsigned count = 0;
      +
      135  if (!obj)
      +
      136  return NULL;
      +
      137  while (obj) {
      +
      138  if (!hwloc_bitmap_iszero(obj->cpuset) && hwloc_bitmap_isincluded(obj->cpuset, set)) {
      +
      139  if (count == idx)
      +
      140  return obj;
      +
      141  count++;
      +
      142  }
      +
      143  obj = obj->next_cousin;
      +
      144  }
      +
      145  return NULL;
      +
      146 }
      +
      147 
      +
      160 static __hwloc_inline hwloc_obj_t
      + +
      162  hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
      +
      163 static __hwloc_inline hwloc_obj_t
      + +
      165  hwloc_obj_type_t type, unsigned idx)
      +
      166 {
      +
      167  int depth = hwloc_get_type_depth(topology, type);
      +
      168  if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE)
      +
      169  return NULL;
      +
      170  return hwloc_get_obj_inside_cpuset_by_depth(topology, set, depth, idx);
      +
      171 }
      +
      172 
      +
      181 static __hwloc_inline unsigned
      + +
      183  int depth) __hwloc_attribute_pure;
      +
      184 static __hwloc_inline unsigned
      + +
      186  int depth)
      +
      187 {
      +
      188  hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0);
      +
      189  unsigned count = 0;
      +
      190  if (!obj)
      +
      191  return 0;
      +
      192  while (obj) {
      +
      193  if (!hwloc_bitmap_iszero(obj->cpuset) && hwloc_bitmap_isincluded(obj->cpuset, set))
      +
      194  count++;
      +
      195  obj = obj->next_cousin;
      +
      196  }
      +
      197  return count;
      +
      198 }
      +
      199 
      +
      212 static __hwloc_inline int
      + +
      214  hwloc_obj_type_t type) __hwloc_attribute_pure;
      +
      215 static __hwloc_inline int
      + +
      217  hwloc_obj_type_t type)
      +
      218 {
      +
      219  int depth = hwloc_get_type_depth(topology, type);
      +
      220  if (depth == HWLOC_TYPE_DEPTH_UNKNOWN)
      +
      221  return 0;
      +
      222  if (depth == HWLOC_TYPE_DEPTH_MULTIPLE)
      +
      223  return -1; /* FIXME: agregate nbobjs from different levels? */
      +
      224  return (int) hwloc_get_nbobjs_inside_cpuset_by_depth(topology, set, depth);
      +
      225 }
      +
      226 
      +
      240 static __hwloc_inline int
      +
      241 hwloc_get_obj_index_inside_cpuset (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set,
      +
      242  hwloc_obj_t obj) __hwloc_attribute_pure;
      +
      243 static __hwloc_inline int
      + +
      245  hwloc_obj_t obj)
      +
      246 {
      +
      247  int idx = 0;
      +
      248  if (!hwloc_bitmap_isincluded(obj->cpuset, set))
      +
      249  return -1;
      +
      250  /* count how many objects are inside the cpuset on the way from us to the beginning of the level */
      +
      251  while ((obj = obj->prev_cousin) != NULL)
      +
      252  if (!hwloc_bitmap_iszero(obj->cpuset) && hwloc_bitmap_isincluded(obj->cpuset, set))
      +
      253  idx++;
      +
      254  return idx;
      +
      255 }
      +
      256 
      +
      271 static __hwloc_inline hwloc_obj_t
      +
      272 hwloc_get_child_covering_cpuset (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set,
      +
      273  hwloc_obj_t parent) __hwloc_attribute_pure;
      +
      274 static __hwloc_inline hwloc_obj_t
      + +
      276  hwloc_obj_t parent)
      +
      277 {
      +
      278  hwloc_obj_t child;
      +
      279  if (hwloc_bitmap_iszero(set))
      +
      280  return NULL;
      +
      281  child = parent->first_child;
      +
      282  while (child) {
      +
      283  if (child->cpuset && hwloc_bitmap_isincluded(set, child->cpuset))
      +
      284  return child;
      +
      285  child = child->next_sibling;
      +
      286  }
      +
      287  return NULL;
      +
      288 }
      +
      289 
      +
      294 static __hwloc_inline hwloc_obj_t
      +
      295 hwloc_get_obj_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set) __hwloc_attribute_pure;
      +
      296 static __hwloc_inline hwloc_obj_t
      + +
      298 {
      +
      299  struct hwloc_obj *current = hwloc_get_root_obj(topology);
      +
      300  if (hwloc_bitmap_iszero(set) || !hwloc_bitmap_isincluded(set, current->cpuset))
      +
      301  return NULL;
      +
      302  while (1) {
      +
      303  hwloc_obj_t child = hwloc_get_child_covering_cpuset(topology, set, current);
      +
      304  if (!child)
      +
      305  return current;
      +
      306  current = child;
      +
      307  }
      +
      308 }
      +
      309 
      +
      320 static __hwloc_inline hwloc_obj_t
      + +
      322  int depth, hwloc_obj_t prev)
      +
      323 {
      +
      324  hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev);
      +
      325  if (!next)
      +
      326  return NULL;
      +
      327  while (next && !hwloc_bitmap_intersects(set, next->cpuset))
      +
      328  next = next->next_cousin;
      +
      329  return next;
      +
      330 }
      +
      331 
      +
      347 static __hwloc_inline hwloc_obj_t
      + + +
      350 {
      +
      351  int depth = hwloc_get_type_depth(topology, type);
      + +
      353  return NULL;
      +
      354  return hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, prev);
      +
      355 }
      +
      356 
      +
      377 static __hwloc_inline hwloc_obj_t
      +
      378 hwloc_get_ancestor_obj_by_depth (hwloc_topology_t topology __hwloc_attribute_unused, int depth, hwloc_obj_t obj) __hwloc_attribute_pure;
      +
      379 static __hwloc_inline hwloc_obj_t
      +
      380 hwloc_get_ancestor_obj_by_depth (hwloc_topology_t topology __hwloc_attribute_unused, int depth, hwloc_obj_t obj)
      +
      381 {
      +
      382  hwloc_obj_t ancestor = obj;
      +
      383  if (obj->depth < depth)
      +
      384  return NULL;
      +
      385  while (ancestor && ancestor->depth > depth)
      +
      386  ancestor = ancestor->parent;
      +
      387  return ancestor;
      +
      388 }
      +
      389 
      +
      397 static __hwloc_inline hwloc_obj_t
      +
      398 hwloc_get_ancestor_obj_by_type (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_type_t type, hwloc_obj_t obj) __hwloc_attribute_pure;
      +
      399 static __hwloc_inline hwloc_obj_t
      + +
      401 {
      +
      402  hwloc_obj_t ancestor = obj->parent;
      +
      403  while (ancestor && ancestor->type != type)
      +
      404  ancestor = ancestor->parent;
      +
      405  return ancestor;
      +
      406 }
      +
      407 
      +
      409 static __hwloc_inline hwloc_obj_t
      +
      410 hwloc_get_common_ancestor_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj1, hwloc_obj_t obj2) __hwloc_attribute_pure;
      +
      411 static __hwloc_inline hwloc_obj_t
      +
      412 hwloc_get_common_ancestor_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj1, hwloc_obj_t obj2)
      +
      413 {
      +
      414  /* the loop isn't so easy since intermediate ancestors may have
      +
      415  * different depth, causing us to alternate between using obj1->parent
      +
      416  * and obj2->parent. Also, even if at some point we find ancestors of
      +
      417  * of the same depth, their ancestors may have different depth again.
      +
      418  */
      +
      419  while (obj1 != obj2) {
      +
      420  while (obj1->depth > obj2->depth)
      +
      421  obj1 = obj1->parent;
      +
      422  while (obj2->depth > obj1->depth)
      +
      423  obj2 = obj2->parent;
      +
      424  if (obj1 != obj2 && obj1->depth == obj2->depth) {
      +
      425  obj1 = obj1->parent;
      +
      426  obj2 = obj2->parent;
      +
      427  }
      +
      428  }
      +
      429  return obj1;
      +
      430 }
      +
      431 
      +
      437 static __hwloc_inline int
      +
      438 hwloc_obj_is_in_subtree (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj, hwloc_obj_t subtree_root) __hwloc_attribute_pure;
      +
      439 static __hwloc_inline int
      +
      440 hwloc_obj_is_in_subtree (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj, hwloc_obj_t subtree_root)
      +
      441 {
      +
      442  return obj->cpuset && subtree_root->cpuset && hwloc_bitmap_isincluded(obj->cpuset, subtree_root->cpuset);
      +
      443 }
      +
      444 
      +
      455 static __hwloc_inline hwloc_obj_t
      +
      456 hwloc_get_next_child (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t parent, hwloc_obj_t prev)
      +
      457 {
      +
      458  hwloc_obj_t obj;
      +
      459  int state = 0;
      +
      460  if (prev) {
      +
      461  if (prev->type == HWLOC_OBJ_MISC)
      +
      462  state = 3;
      +
      463  else if (prev->type == HWLOC_OBJ_BRIDGE || prev->type == HWLOC_OBJ_PCI_DEVICE || prev->type == HWLOC_OBJ_OS_DEVICE)
      +
      464  state = 2;
      +
      465  else if (prev->type == HWLOC_OBJ_NUMANODE)
      +
      466  state = 1;
      +
      467  obj = prev->next_sibling;
      +
      468  } else {
      +
      469  obj = parent->first_child;
      +
      470  }
      +
      471  if (!obj && state == 0) {
      +
      472  obj = parent->memory_first_child;
      +
      473  state = 1;
      +
      474  }
      +
      475  if (!obj && state == 1) {
      +
      476  obj = parent->io_first_child;
      +
      477  state = 2;
      +
      478  }
      +
      479  if (!obj && state == 2) {
      +
      480  obj = parent->misc_first_child;
      +
      481  state = 3;
      +
      482  }
      +
      483  return obj;
      +
      484 }
      +
      485 
      +
      512 HWLOC_DECLSPEC int
      + +
      514 
      +
      523 HWLOC_DECLSPEC int
      + +
      525 
      +
      534 HWLOC_DECLSPEC int
      + +
      536 
      +
      543 HWLOC_DECLSPEC int
      + +
      545 
      +
      552 HWLOC_DECLSPEC int
      + +
      554 
      +
      561 HWLOC_DECLSPEC int
      + +
      563 
      +
      593 static __hwloc_inline int
      + +
      595  unsigned cachelevel, hwloc_obj_cache_type_t cachetype)
      +
      596 {
      +
      597  int depth;
      +
      598  int found = HWLOC_TYPE_DEPTH_UNKNOWN;
      +
      599  for (depth=0; ; depth++) {
      +
      600  hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, 0);
      +
      601  if (!obj)
      +
      602  break;
      +
      603  if (!hwloc_obj_type_is_dcache(obj->type) || obj->attr->cache.depth != cachelevel)
      +
      604  /* doesn't match, try next depth */
      +
      605  continue;
      +
      606  if (cachetype == (hwloc_obj_cache_type_t) -1) {
      +
      607  if (found != HWLOC_TYPE_DEPTH_UNKNOWN) {
      +
      608  /* second match, return MULTIPLE */
      + +
      610  }
      +
      611  /* first match, mark it as found */
      +
      612  found = depth;
      +
      613  continue;
      +
      614  }
      +
      615  if (obj->attr->cache.type == cachetype || obj->attr->cache.type == HWLOC_OBJ_CACHE_UNIFIED)
      +
      616  /* exact match (either unified is alone, or we match instruction or data), return immediately */
      +
      617  return depth;
      +
      618  }
      +
      619  /* went to the bottom, return what we found */
      +
      620  return found;
      +
      621 }
      +
      622 
      +
      627 static __hwloc_inline hwloc_obj_t
      +
      628 hwloc_get_cache_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set) __hwloc_attribute_pure;
      +
      629 static __hwloc_inline hwloc_obj_t
      + +
      631 {
      +
      632  hwloc_obj_t current = hwloc_get_obj_covering_cpuset(topology, set);
      +
      633  while (current) {
      +
      634  if (hwloc_obj_type_is_dcache(current->type))
      +
      635  return current;
      +
      636  current = current->parent;
      +
      637  }
      +
      638  return NULL;
      +
      639 }
      +
      640 
      +
      645 static __hwloc_inline hwloc_obj_t
      +
      646 hwloc_get_shared_cache_covering_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj) __hwloc_attribute_pure;
      +
      647 static __hwloc_inline hwloc_obj_t
      +
      648 hwloc_get_shared_cache_covering_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj)
      +
      649 {
      +
      650  hwloc_obj_t current = obj->parent;
      +
      651  if (!obj->cpuset)
      +
      652  return NULL;
      +
      653  while (current) {
      +
      654  if (!hwloc_bitmap_isequal(current->cpuset, obj->cpuset)
      +
      655  && hwloc_obj_type_is_dcache(current->type))
      +
      656  return current;
      +
      657  current = current->parent;
      +
      658  }
      +
      659  return NULL;
      +
      660 }
      +
      661 
      +
      691 HWLOC_DECLSPEC int hwloc_bitmap_singlify_per_core(hwloc_topology_t topology, hwloc_bitmap_t cpuset, unsigned which);
      +
      692 
      +
      702 static __hwloc_inline hwloc_obj_t
      +
      703 hwloc_get_pu_obj_by_os_index(hwloc_topology_t topology, unsigned os_index) __hwloc_attribute_pure;
      +
      704 static __hwloc_inline hwloc_obj_t
      + +
      706 {
      +
      707  hwloc_obj_t obj = NULL;
      +
      708  while ((obj = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_PU, obj)) != NULL)
      +
      709  if (obj->os_index == os_index)
      +
      710  return obj;
      +
      711  return NULL;
      +
      712 }
      +
      713 
      +
      723 static __hwloc_inline hwloc_obj_t
      +
      724 hwloc_get_numanode_obj_by_os_index(hwloc_topology_t topology, unsigned os_index) __hwloc_attribute_pure;
      +
      725 static __hwloc_inline hwloc_obj_t
      + +
      727 {
      +
      728  hwloc_obj_t obj = NULL;
      +
      729  while ((obj = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, obj)) != NULL)
      +
      730  if (obj->os_index == os_index)
      +
      731  return obj;
      +
      732  return NULL;
      +
      733 }
      +
      734 
      +
      746 /* TODO: rather provide an iterator? Provide a way to know how much should be allocated? By returning the total number of objects instead? */
      +
      747 HWLOC_DECLSPEC unsigned hwloc_get_closest_objs (hwloc_topology_t topology, hwloc_obj_t src, hwloc_obj_t * __hwloc_restrict objs, unsigned max);
      +
      748 
      +
      761 static __hwloc_inline hwloc_obj_t
      + +
      763  hwloc_obj_type_t type1, unsigned idx1,
      +
      764  hwloc_obj_type_t type2, unsigned idx2) __hwloc_attribute_pure;
      +
      765 static __hwloc_inline hwloc_obj_t
      + +
      767  hwloc_obj_type_t type1, unsigned idx1,
      +
      768  hwloc_obj_type_t type2, unsigned idx2)
      +
      769 {
      +
      770  hwloc_obj_t obj;
      +
      771  obj = hwloc_get_obj_by_type (topology, type1, idx1);
      +
      772  if (!obj)
      +
      773  return NULL;
      +
      774  return hwloc_get_obj_inside_cpuset_by_type(topology, obj->cpuset, type2, idx2);
      +
      775 }
      +
      776 
      +
      795 static __hwloc_inline hwloc_obj_t
      +
      796 hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_type_t *typev, unsigned *idxv) __hwloc_attribute_pure;
      +
      797 static __hwloc_inline hwloc_obj_t
      +
      798 hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_type_t *typev, unsigned *idxv)
      +
      799 {
      +
      800  hwloc_obj_t obj = hwloc_get_root_obj(topology);
      +
      801  int i;
      +
      802  for(i=0; i<nr; i++) {
      +
      803  if (!obj)
      +
      804  return NULL;
      +
      805  obj = hwloc_get_obj_inside_cpuset_by_type(topology, obj->cpuset, typev[i], idxv[i]);
      +
      806  }
      +
      807  return obj;
      +
      808 }
      +
      809 
      +
      848 HWLOC_DECLSPEC hwloc_obj_t
      + +
      850  hwloc_obj_type_t type, const char *subtype, const char *nameprefix,
      +
      851  unsigned long flags);
      +
      852 
      + +
      867  HWLOC_DISTRIB_FLAG_REVERSE = (1UL<<0)
      +
      868 };
      +
      869 
      +
      893 static __hwloc_inline int
      + +
      895  hwloc_obj_t *roots, unsigned n_roots,
      +
      896  hwloc_cpuset_t *set,
      +
      897  unsigned n,
      +
      898  int until, unsigned long flags)
      +
      899 {
      +
      900  unsigned i;
      +
      901  unsigned tot_weight;
      +
      902  unsigned given, givenweight;
      +
      903  hwloc_cpuset_t *cpusetp = set;
      +
      904 
      +
      905  if (flags & ~HWLOC_DISTRIB_FLAG_REVERSE) {
      +
      906  errno = EINVAL;
      +
      907  return -1;
      +
      908  }
      +
      909 
      +
      910  tot_weight = 0;
      +
      911  for (i = 0; i < n_roots; i++)
      +
      912  tot_weight += (unsigned) hwloc_bitmap_weight(roots[i]->cpuset);
      +
      913 
      +
      914  for (i = 0, given = 0, givenweight = 0; i < n_roots; i++) {
      +
      915  unsigned chunk, weight;
      +
      916  hwloc_obj_t root = roots[flags & HWLOC_DISTRIB_FLAG_REVERSE ? n_roots-1-i : i];
      +
      917  hwloc_cpuset_t cpuset = root->cpuset;
      +
      918  while (!hwloc_obj_type_is_normal(root->type))
      +
      919  /* If memory/io/misc, walk up to normal parent */
      +
      920  root = root->parent;
      +
      921  weight = (unsigned) hwloc_bitmap_weight(cpuset);
      +
      922  if (!weight)
      +
      923  continue;
      +
      924  /* Give to root a chunk proportional to its weight.
      +
      925  * If previous chunks got rounded-up, we may get a bit less. */
      +
      926  chunk = (( (givenweight+weight) * n + tot_weight-1) / tot_weight)
      +
      927  - (( givenweight * n + tot_weight-1) / tot_weight);
      +
      928  if (!root->arity || chunk <= 1 || root->depth >= until) {
      +
      929  /* We can't split any more, put everything there. */
      +
      930  if (chunk) {
      +
      931  /* Fill cpusets with ours */
      +
      932  unsigned j;
      +
      933  for (j=0; j < chunk; j++)
      +
      934  cpusetp[j] = hwloc_bitmap_dup(cpuset);
      +
      935  } else {
      +
      936  /* We got no chunk, just merge our cpuset to a previous one
      +
      937  * (the first chunk cannot be empty)
      +
      938  * so that this root doesn't get ignored.
      +
      939  */
      +
      940  assert(given);
      +
      941  hwloc_bitmap_or(cpusetp[-1], cpusetp[-1], cpuset);
      +
      942  }
      +
      943  } else {
      +
      944  /* Still more to distribute, recurse into children */
      +
      945  hwloc_distrib(topology, root->children, root->arity, cpusetp, chunk, until, flags);
      +
      946  }
      +
      947  cpusetp += chunk;
      +
      948  given += chunk;
      +
      949  givenweight += weight;
      +
      950  }
      +
      951 
      +
      952  return 0;
      +
      953 }
      +
      954 
      +
      972 HWLOC_DECLSPEC hwloc_const_cpuset_t
      +
      973 hwloc_topology_get_complete_cpuset(hwloc_topology_t topology) __hwloc_attribute_pure;
      +
      974 
      +
      986 HWLOC_DECLSPEC hwloc_const_cpuset_t
      +
      987 hwloc_topology_get_topology_cpuset(hwloc_topology_t topology) __hwloc_attribute_pure;
      +
      988 
      +
      1005 HWLOC_DECLSPEC hwloc_const_cpuset_t
      +
      1006 hwloc_topology_get_allowed_cpuset(hwloc_topology_t topology) __hwloc_attribute_pure;
      +
      1007 
      +
      1017 HWLOC_DECLSPEC hwloc_const_nodeset_t
      + +
      1019 
      +
      1031 HWLOC_DECLSPEC hwloc_const_nodeset_t
      + +
      1033 
      +
      1050 HWLOC_DECLSPEC hwloc_const_nodeset_t
      +
      1051 hwloc_topology_get_allowed_nodeset(hwloc_topology_t topology) __hwloc_attribute_pure;
      +
      1052 
      +
      1073 static __hwloc_inline int
      + +
      1075 {
      + +
      1077  hwloc_obj_t obj = NULL;
      +
      1078  assert(depth != HWLOC_TYPE_DEPTH_UNKNOWN);
      + +
      1080  while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, _cpuset, depth, obj)) != NULL)
      +
      1081  if (hwloc_bitmap_set(nodeset, obj->os_index) < 0)
      +
      1082  return -1;
      +
      1083  return 0;
      +
      1084 }
      +
      1085 
      +
      1097 static __hwloc_inline int
      + +
      1099 {
      + +
      1101  hwloc_obj_t obj = NULL;
      +
      1102  assert(depth != HWLOC_TYPE_DEPTH_UNKNOWN);
      +
      1103  hwloc_bitmap_zero(_cpuset);
      +
      1104  while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL) {
      +
      1105  if (hwloc_bitmap_isset(nodeset, obj->os_index))
      +
      1106  /* no need to check obj->cpuset because objects in levels always have a cpuset */
      +
      1107  if (hwloc_bitmap_or(_cpuset, _cpuset, obj->cpuset) < 0)
      +
      1108  return -1;
      +
      1109  }
      +
      1110  return 0;
      +
      1111 }
      +
      1112 
      +
      1132 static __hwloc_inline hwloc_obj_t
      +
      1133 hwloc_get_non_io_ancestor_obj(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      1134  hwloc_obj_t ioobj)
      +
      1135 {
      +
      1136  hwloc_obj_t obj = ioobj;
      +
      1137  while (obj && !obj->cpuset) {
      +
      1138  obj = obj->parent;
      +
      1139  }
      +
      1140  return obj;
      +
      1141 }
      +
      1142 
      +
      1147 static __hwloc_inline hwloc_obj_t
      + +
      1149 {
      +
      1150  return hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_PCI_DEVICE, prev);
      +
      1151 }
      +
      1152 
      +
      1156 static __hwloc_inline hwloc_obj_t
      + +
      1158  unsigned domain, unsigned bus, unsigned dev, unsigned func)
      +
      1159 {
      +
      1160  hwloc_obj_t obj = NULL;
      +
      1161  while ((obj = hwloc_get_next_pcidev(topology, obj)) != NULL) {
      +
      1162  if (obj->attr->pcidev.domain == domain
      +
      1163  && obj->attr->pcidev.bus == bus
      +
      1164  && obj->attr->pcidev.dev == dev
      +
      1165  && obj->attr->pcidev.func == func)
      +
      1166  return obj;
      +
      1167  }
      +
      1168  return NULL;
      +
      1169 }
      +
      1170 
      +
      1174 static __hwloc_inline hwloc_obj_t
      + +
      1176 {
      +
      1177  unsigned domain = 0; /* default */
      +
      1178  unsigned bus, dev, func;
      +
      1179 
      +
      1180  if (sscanf(busid, "%x:%x.%x", &bus, &dev, &func) != 3
      +
      1181  && sscanf(busid, "%x:%x:%x.%x", &domain, &bus, &dev, &func) != 4) {
      +
      1182  errno = EINVAL;
      +
      1183  return NULL;
      +
      1184  }
      +
      1185 
      +
      1186  return hwloc_get_pcidev_by_busid(topology, domain, bus, dev, func);
      +
      1187 }
      +
      1188 
      +
      1193 static __hwloc_inline hwloc_obj_t
      + +
      1195 {
      +
      1196  return hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_OS_DEVICE, prev);
      +
      1197 }
      +
      1198 
      +
      1203 static __hwloc_inline hwloc_obj_t
      + +
      1205 {
      +
      1206  return hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_BRIDGE, prev);
      +
      1207 }
      +
      1208 
      +
      1209 /* \brief Checks whether a given bridge covers a given PCI bus.
      +
      1210  */
      +
      1211 static __hwloc_inline int
      + +
      1213  unsigned domain, unsigned bus)
      +
      1214 {
      +
      1215  return bridge->type == HWLOC_OBJ_BRIDGE
      + +
      1217  && bridge->attr->bridge.downstream.pci.domain == domain
      +
      1218  && bridge->attr->bridge.downstream.pci.secondary_bus <= bus
      +
      1219  && bridge->attr->bridge.downstream.pci.subordinate_bus >= bus;
      +
      1220 }
      +
      1221 
      +
      1226 #ifdef __cplusplus
      +
      1227 } /* extern "C" */
      +
      1228 #endif
      +
      1229 
      +
      1230 
      +
      1231 #endif /* HWLOC_HELPER_H */
      +
      hwloc_const_bitmap_t hwloc_const_cpuset_t
      A non-modifiable hwloc_cpuset_t.
      Definition: hwloc.h:142
      +
      hwloc_const_bitmap_t hwloc_const_nodeset_t
      A non-modifiable hwloc_nodeset_t.
      Definition: hwloc.h:160
      +
      hwloc_bitmap_t hwloc_nodeset_t
      A node set is a bitmap whose bits are set according to NUMA memory node physical OS indexes.
      Definition: hwloc.h:157
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      enum hwloc_obj_cache_type_e hwloc_obj_cache_type_t
      Cache type.
      +
      hwloc_obj_type_t
      Type of topology object.
      Definition: hwloc.h:176
      +
      @ HWLOC_OBJ_BRIDGE_PCI
      PCI-side of a bridge.
      Definition: hwloc.h:335
      +
      @ HWLOC_OBJ_CACHE_UNIFIED
      Unified cache.
      Definition: hwloc.h:327
      +
      @ HWLOC_OBJ_MISC
      Miscellaneous objects (filtered out by default). Objects without particular meaning,...
      Definition: hwloc.h:290
      +
      @ HWLOC_OBJ_OS_DEVICE
      Operating system device (filtered out by default).
      Definition: hwloc.h:279
      +
      @ HWLOC_OBJ_PCI_DEVICE
      PCI device (filtered out by default).
      Definition: hwloc.h:269
      +
      @ HWLOC_OBJ_BRIDGE
      Bridge (filtered out by default). Any bridge (or PCI switch) that connects the host or an I/O bus,...
      Definition: hwloc.h:257
      +
      @ HWLOC_OBJ_NUMANODE
      NUMA node. An object that contains memory that is directly and byte-accessible to the host processors...
      Definition: hwloc.h:236
      +
      @ HWLOC_OBJ_PU
      Processing Unit, or (Logical) Processor. An execution unit (may share a core with some other logical ...
      Definition: hwloc.h:201
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      static hwloc_obj_t hwloc_get_root_obj(hwloc_topology_t topology)
      Returns the top-object of the topology-tree.
      +
      hwloc_obj_t hwloc_get_obj_by_depth(hwloc_topology_t topology, int depth, unsigned idx)
      Returns the topology object at logical index idx from depth depth.
      +
      static hwloc_obj_t hwloc_get_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx)
      Returns the topology object at logical index idx with type type.
      +
      static hwloc_obj_t hwloc_get_next_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, hwloc_obj_t prev)
      Returns the next object of type type.
      +
      int hwloc_get_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the depth of objects of type type.
      +
      static hwloc_obj_t hwloc_get_next_obj_by_depth(hwloc_topology_t topology, int depth, hwloc_obj_t prev)
      Returns the next object at depth depth.
      +
      @ HWLOC_TYPE_DEPTH_UNKNOWN
      No object of given type exists in the topology.
      Definition: hwloc.h:822
      +
      @ HWLOC_TYPE_DEPTH_MULTIPLE
      Objects of given type exist at different depth in the topology (only for Groups).
      Definition: hwloc.h:823
      +
      static int hwloc_get_nbobjs_inside_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type)
      Return the number of objects of type type included in CPU set set.
      Definition: helper.h:216
      +
      static hwloc_obj_t hwloc_get_obj_inside_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, unsigned idx)
      Return the idx -th object of type type included in CPU set set.
      Definition: helper.h:164
      +
      int hwloc_get_largest_objs_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t *restrict objs, int max)
      Get the set of largest objects covering exactly a given cpuset set.
      +
      static int hwloc_get_obj_index_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t obj)
      Return the logical index among the objects included in CPU set set.
      Definition: helper.h:244
      +
      static hwloc_obj_t hwloc_get_first_largest_obj_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set)
      Get the first largest object included in the given cpuset set.
      Definition: helper.h:42
      +
      static hwloc_obj_t hwloc_get_next_obj_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, hwloc_obj_t prev)
      Return the next object at depth depth included in CPU set set.
      Definition: helper.h:85
      +
      static unsigned hwloc_get_nbobjs_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth)
      Return the number of objects at depth depth included in CPU set set.
      Definition: helper.h:185
      +
      static hwloc_obj_t hwloc_get_obj_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, unsigned idx)
      Return the (logically) idx -th object at depth depth included in CPU set set.
      Definition: helper.h:130
      +
      static hwloc_obj_t hwloc_get_next_obj_inside_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, hwloc_obj_t prev)
      Return the next object of type type included in CPU set set.
      Definition: helper.h:109
      +
      static hwloc_obj_t hwloc_get_child_covering_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t parent)
      Get the child covering at least CPU set set.
      Definition: helper.h:275
      +
      static hwloc_obj_t hwloc_get_obj_covering_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set)
      Get the lowest object covering at least CPU set set.
      Definition: helper.h:297
      +
      static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, hwloc_obj_t prev)
      Iterate through same-type objects covering at least CPU set set.
      Definition: helper.h:348
      +
      static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, hwloc_obj_t prev)
      Iterate through same-depth objects covering at least CPU set set.
      Definition: helper.h:321
      +
      static hwloc_obj_t hwloc_get_next_child(hwloc_topology_t topology, hwloc_obj_t parent, hwloc_obj_t prev)
      Return the next child.
      Definition: helper.h:456
      +
      static int hwloc_obj_is_in_subtree(hwloc_topology_t topology, hwloc_obj_t obj, hwloc_obj_t subtree_root)
      Returns true if obj is inside the subtree beginning with ancestor object subtree_root.
      Definition: helper.h:440
      +
      static hwloc_obj_t hwloc_get_ancestor_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, hwloc_obj_t obj)
      Returns the ancestor object of obj with type type.
      Definition: helper.h:400
      +
      static hwloc_obj_t hwloc_get_ancestor_obj_by_depth(hwloc_topology_t topology, int depth, hwloc_obj_t obj)
      Returns the ancestor object of obj at depth depth.
      Definition: helper.h:380
      +
      static hwloc_obj_t hwloc_get_common_ancestor_obj(hwloc_topology_t topology, hwloc_obj_t obj1, hwloc_obj_t obj2)
      Returns the common parent object to objects obj1 and obj2.
      Definition: helper.h:412
      +
      int hwloc_obj_type_is_memory(hwloc_obj_type_t type)
      Check whether an object type is Memory.
      +
      int hwloc_obj_type_is_cache(hwloc_obj_type_t type)
      Check whether an object type is a CPU Cache (Data, Unified or Instruction).
      +
      int hwloc_obj_type_is_dcache(hwloc_obj_type_t type)
      Check whether an object type is a CPU Data or Unified Cache.
      +
      int hwloc_obj_type_is_normal(hwloc_obj_type_t type)
      Check whether an object type is Normal.
      +
      int hwloc_obj_type_is_icache(hwloc_obj_type_t type)
      Check whether an object type is a CPU Instruction Cache,.
      +
      int hwloc_obj_type_is_io(hwloc_obj_type_t type)
      Check whether an object type is I/O.
      +
      static hwloc_obj_t hwloc_get_shared_cache_covering_obj(hwloc_topology_t topology, hwloc_obj_t obj)
      Get the first data (or unified) cache shared between an object and somebody else.
      Definition: helper.h:648
      +
      static hwloc_obj_t hwloc_get_cache_covering_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set)
      Get the first data (or unified) cache covering a cpuset set.
      Definition: helper.h:630
      +
      static int hwloc_get_cache_type_depth(hwloc_topology_t topology, unsigned cachelevel, hwloc_obj_cache_type_t cachetype)
      Find the depth of cache objects matching cache level and type.
      Definition: helper.h:594
      +
      int hwloc_bitmap_singlify_per_core(hwloc_topology_t topology, hwloc_bitmap_t cpuset, unsigned which)
      Remove simultaneous multithreading PUs from a CPU set.
      +
      unsigned hwloc_get_closest_objs(hwloc_topology_t topology, hwloc_obj_t src, hwloc_obj_t *restrict objs, unsigned max)
      Do a depth-first traversal of the topology to find and sort.
      +
      static hwloc_obj_t hwloc_get_pu_obj_by_os_index(hwloc_topology_t topology, unsigned os_index)
      Returns the object of type HWLOC_OBJ_PU with os_index.
      Definition: helper.h:705
      +
      static hwloc_obj_t hwloc_get_obj_below_by_type(hwloc_topology_t topology, hwloc_obj_type_t type1, unsigned idx1, hwloc_obj_type_t type2, unsigned idx2)
      Find an object below another object, both specified by types and indexes.
      Definition: helper.h:766
      +
      hwloc_obj_t hwloc_get_obj_with_same_locality(hwloc_topology_t topology, hwloc_obj_t src, hwloc_obj_type_t type, const char *subtype, const char *nameprefix, unsigned long flags)
      Return an object of a different type with same locality.
      +
      static hwloc_obj_t hwloc_get_numanode_obj_by_os_index(hwloc_topology_t topology, unsigned os_index)
      Returns the object of type HWLOC_OBJ_NUMANODE with os_index.
      Definition: helper.h:726
      +
      static hwloc_obj_t hwloc_get_obj_below_array_by_type(hwloc_topology_t topology, int nr, hwloc_obj_type_t *typev, unsigned *idxv)
      Find an object below a chain of objects specified by types and indexes.
      Definition: helper.h:798
      +
      static int hwloc_distrib(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *set, unsigned n, int until, unsigned long flags)
      Distribute n items over the topology under roots.
      Definition: helper.h:894
      +
      hwloc_distrib_flags_e
      Flags to be given to hwloc_distrib().
      Definition: helper.h:863
      +
      @ HWLOC_DISTRIB_FLAG_REVERSE
      Distrib in reverse order, starting from the last objects.
      Definition: helper.h:867
      +
      hwloc_const_nodeset_t hwloc_topology_get_allowed_nodeset(hwloc_topology_t topology)
      Get allowed node set.
      +
      hwloc_const_nodeset_t hwloc_topology_get_topology_nodeset(hwloc_topology_t topology)
      Get topology node set.
      +
      hwloc_const_cpuset_t hwloc_topology_get_allowed_cpuset(hwloc_topology_t topology)
      Get allowed CPU set.
      +
      hwloc_const_nodeset_t hwloc_topology_get_complete_nodeset(hwloc_topology_t topology)
      Get complete node set.
      +
      hwloc_const_cpuset_t hwloc_topology_get_topology_cpuset(hwloc_topology_t topology)
      Get topology CPU set.
      +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
      Get complete CPU set.
      +
      static int hwloc_cpuset_to_nodeset(hwloc_topology_t topology, hwloc_const_cpuset_t _cpuset, hwloc_nodeset_t nodeset)
      Convert a CPU set into a NUMA node set.
      Definition: helper.h:1074
      +
      static int hwloc_cpuset_from_nodeset(hwloc_topology_t topology, hwloc_cpuset_t _cpuset, hwloc_const_nodeset_t nodeset)
      Convert a NUMA node set into a CPU set.
      Definition: helper.h:1098
      +
      static int hwloc_bridge_covers_pcibus(hwloc_obj_t bridge, unsigned domain, unsigned bus)
      Definition: helper.h:1212
      +
      static hwloc_obj_t hwloc_get_pcidev_by_busidstring(hwloc_topology_t topology, const char *busid)
      Find the PCI device object matching the PCI bus id given as a string xxxx:yy:zz.t or yy:zz....
      Definition: helper.h:1175
      +
      static hwloc_obj_t hwloc_get_next_pcidev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next PCI device in the system.
      Definition: helper.h:1148
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      static hwloc_obj_t hwloc_get_next_bridge(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next bridge in the system.
      Definition: helper.h:1204
      +
      static hwloc_obj_t hwloc_get_pcidev_by_busid(hwloc_topology_t topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
      Find the PCI device object matching the PCI bus id given domain, bus device and function PCI bus id.
      Definition: helper.h:1157
      +
      static hwloc_obj_t hwloc_get_non_io_ancestor_obj(hwloc_topology_t topology, hwloc_obj_t ioobj)
      Get the first non-I/O ancestor object.
      Definition: helper.h:1133
      +
      int hwloc_bitmap_weight(hwloc_const_bitmap_t bitmap)
      Compute the "weight" of bitmap bitmap (i.e., number of indexes that are in the bitmap).
      +
      int hwloc_bitmap_isincluded(hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap)
      Test whether bitmap sub_bitmap is part of bitmap super_bitmap.
      +
      int hwloc_bitmap_set(hwloc_bitmap_t bitmap, unsigned id)
      Add index id in bitmap bitmap.
      +
      int hwloc_bitmap_isset(hwloc_const_bitmap_t bitmap, unsigned id)
      Test whether index id is part of bitmap bitmap.
      +
      int hwloc_bitmap_or(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Or bitmaps bitmap1 and bitmap2 and store the result in bitmap res.
      +
      int hwloc_bitmap_isequal(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Test whether bitmap bitmap1 is equal to bitmap bitmap2.
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      struct hwloc_bitmap_s * hwloc_bitmap_t
      Set of bits represented as an opaque pointer to an internal bitmap.
      Definition: bitmap.h:68
      +
      void hwloc_bitmap_zero(hwloc_bitmap_t bitmap)
      Empty the bitmap bitmap.
      +
      hwloc_bitmap_t hwloc_bitmap_dup(hwloc_const_bitmap_t bitmap)
      Duplicate bitmap bitmap by allocating a new bitmap and copying bitmap contents.
      +
      int hwloc_bitmap_intersects(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Test whether bitmaps bitmap1 and bitmap2 intersects.
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      struct hwloc_obj ** children
      Normal children, children[0 .. arity -1].
      Definition: hwloc.h:456
      +
      hwloc_nodeset_t nodeset
      NUMA nodes covered by this object or containing this object.
      Definition: hwloc.h:540
      +
      int depth
      Vertical index in the hierarchy.
      Definition: hwloc.h:419
      +
      struct hwloc_obj * misc_first_child
      First Misc child. Misc objects are listed here (misc_arity and misc_first_child) instead of in the no...
      Definition: hwloc.h:505
      +
      char * subtype
      Subtype string to better describe the type field.
      Definition: hwloc.h:399
      +
      unsigned os_index
      OS-provided physical index number. It is not guaranteed unique across the entire machine,...
      Definition: hwloc.h:401
      +
      hwloc_cpuset_t cpuset
      CPUs covered by this object.
      Definition: hwloc.h:512
      +
      struct hwloc_obj * next_sibling
      Next object below the same parent (inside the same list of children).
      Definition: hwloc.h:448
      +
      struct hwloc_obj * next_cousin
      Next object of same type and depth.
      Definition: hwloc.h:442
      +
      struct hwloc_obj * io_first_child
      First I/O child. Bridges, PCI and OS devices are listed here (io_arity and io_first_child) instead of...
      Definition: hwloc.h:493
      +
      unsigned arity
      Number of normal children. Memory, Misc and I/O children are not listed here but rather in their dedi...
      Definition: hwloc.h:452
      +
      struct hwloc_obj * memory_first_child
      First Memory child. NUMA nodes and Memory-side caches are listed here (memory_arity and memory_first_...
      Definition: hwloc.h:475
      +
      struct hwloc_obj * prev_cousin
      Previous object of same type and depth.
      Definition: hwloc.h:443
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj * parent
      Parent, NULL if root (Machine object)
      Definition: hwloc.h:446
      +
      struct hwloc_obj * first_child
      First normal child.
      Definition: hwloc.h:457
      +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
      +
      struct hwloc_obj_attr_u::hwloc_bridge_attr_s bridge
      +
      struct hwloc_obj_attr_u::hwloc_cache_attr_s cache
      +
      unsigned depth
      Depth of cache (e.g., L1, L2, ...etc.)
      Definition: hwloc.h:618
      +
      hwloc_obj_cache_type_t type
      Cache type.
      Definition: hwloc.h:622
      +
      unsigned char dev
      Definition: hwloc.h:639
      +
      unsigned char func
      Definition: hwloc.h:639
      +
      unsigned short domain
      Definition: hwloc.h:635
      +
      unsigned char bus
      Definition: hwloc.h:639
      +
      union hwloc_obj_attr_u::hwloc_bridge_attr_s::@1 downstream
      +
      struct hwloc_pcidev_attr_s pci
      Definition: hwloc.h:648
      +
      hwloc_obj_bridge_type_t downstream_type
      Definition: hwloc.h:661
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00131_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00131_source.html new file mode 100644 index 0000000000..246bef30ee --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00131_source.html @@ -0,0 +1,287 @@ + + + + + + + +Hardware Locality (hwloc): bitmap.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      bitmap.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2009 CNRS
      +
      3  * Copyright © 2009-2020 Inria. All rights reserved.
      +
      4  * Copyright © 2009-2012 Université Bordeaux
      +
      5  * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved.
      +
      6  * See COPYING in top-level directory.
      +
      7  */
      +
      8 
      +
      13 #ifndef HWLOC_BITMAP_H
      +
      14 #define HWLOC_BITMAP_H
      +
      15 
      +
      16 #include "hwloc/autogen/config.h"
      +
      17 
      +
      18 #include <assert.h>
      +
      19 
      +
      20 
      +
      21 #ifdef __cplusplus
      +
      22 extern "C" {
      +
      23 #endif
      +
      24 
      +
      25 
      +
      68 typedef struct hwloc_bitmap_s * hwloc_bitmap_t;
      +
      70 typedef const struct hwloc_bitmap_s * hwloc_const_bitmap_t;
      +
      71 
      +
      72 
      +
      73 /*
      +
      74  * Bitmap allocation, freeing and copying.
      +
      75  */
      +
      76 
      +
      84 HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_alloc(void) __hwloc_attribute_malloc;
      +
      85 
      +
      87 HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_alloc_full(void) __hwloc_attribute_malloc;
      +
      88 
      +
      93 HWLOC_DECLSPEC void hwloc_bitmap_free(hwloc_bitmap_t bitmap);
      +
      94 
      +
      99 HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_dup(hwloc_const_bitmap_t bitmap) __hwloc_attribute_malloc;
      +
      100 
      + +
      103 
      +
      104 
      +
      105 /*
      +
      106  * Bitmap/String Conversion
      +
      107  */
      +
      108 
      +
      118 HWLOC_DECLSPEC int hwloc_bitmap_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap);
      +
      119 
      +
      124 HWLOC_DECLSPEC int hwloc_bitmap_asprintf(char ** strp, hwloc_const_bitmap_t bitmap);
      +
      125 
      +
      128 HWLOC_DECLSPEC int hwloc_bitmap_sscanf(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string);
      +
      129 
      +
      143 HWLOC_DECLSPEC int hwloc_bitmap_list_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap);
      +
      144 
      +
      149 HWLOC_DECLSPEC int hwloc_bitmap_list_asprintf(char ** strp, hwloc_const_bitmap_t bitmap);
      +
      150 
      +
      153 HWLOC_DECLSPEC int hwloc_bitmap_list_sscanf(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string);
      +
      154 
      +
      167 HWLOC_DECLSPEC int hwloc_bitmap_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap);
      +
      168 
      +
      173 HWLOC_DECLSPEC int hwloc_bitmap_taskset_asprintf(char ** strp, hwloc_const_bitmap_t bitmap);
      +
      174 
      +
      177 HWLOC_DECLSPEC int hwloc_bitmap_taskset_sscanf(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string);
      +
      178 
      +
      179 
      +
      180 /*
      +
      181  * Building bitmaps.
      +
      182  */
      +
      183 
      +
      185 HWLOC_DECLSPEC void hwloc_bitmap_zero(hwloc_bitmap_t bitmap);
      +
      186 
      +
      188 HWLOC_DECLSPEC void hwloc_bitmap_fill(hwloc_bitmap_t bitmap);
      +
      189 
      +
      191 HWLOC_DECLSPEC int hwloc_bitmap_only(hwloc_bitmap_t bitmap, unsigned id);
      +
      192 
      +
      194 HWLOC_DECLSPEC int hwloc_bitmap_allbut(hwloc_bitmap_t bitmap, unsigned id);
      +
      195 
      +
      197 HWLOC_DECLSPEC int hwloc_bitmap_from_ulong(hwloc_bitmap_t bitmap, unsigned long mask);
      +
      198 
      +
      200 HWLOC_DECLSPEC int hwloc_bitmap_from_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask);
      +
      201 
      +
      203 HWLOC_DECLSPEC int hwloc_bitmap_from_ulongs(hwloc_bitmap_t bitmap, unsigned nr, const unsigned long *masks);
      +
      204 
      +
      205 
      +
      206 /*
      +
      207  * Modifying bitmaps.
      +
      208  */
      +
      209 
      +
      211 HWLOC_DECLSPEC int hwloc_bitmap_set(hwloc_bitmap_t bitmap, unsigned id);
      +
      212 
      +
      217 HWLOC_DECLSPEC int hwloc_bitmap_set_range(hwloc_bitmap_t bitmap, unsigned begin, int end);
      +
      218 
      +
      220 HWLOC_DECLSPEC int hwloc_bitmap_set_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask);
      +
      221 
      +
      223 HWLOC_DECLSPEC int hwloc_bitmap_clr(hwloc_bitmap_t bitmap, unsigned id);
      +
      224 
      +
      229 HWLOC_DECLSPEC int hwloc_bitmap_clr_range(hwloc_bitmap_t bitmap, unsigned begin, int end);
      +
      230 
      +
      250 HWLOC_DECLSPEC int hwloc_bitmap_singlify(hwloc_bitmap_t bitmap);
      +
      251 
      +
      252 
      +
      253 /*
      +
      254  * Consulting bitmaps.
      +
      255  */
      +
      256 
      +
      258 HWLOC_DECLSPEC unsigned long hwloc_bitmap_to_ulong(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      259 
      +
      261 HWLOC_DECLSPEC unsigned long hwloc_bitmap_to_ith_ulong(hwloc_const_bitmap_t bitmap, unsigned i) __hwloc_attribute_pure;
      +
      262 
      +
      269 HWLOC_DECLSPEC int hwloc_bitmap_to_ulongs(hwloc_const_bitmap_t bitmap, unsigned nr, unsigned long *masks);
      +
      270 
      +
      284 HWLOC_DECLSPEC int hwloc_bitmap_nr_ulongs(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      285 
      +
      290 HWLOC_DECLSPEC int hwloc_bitmap_isset(hwloc_const_bitmap_t bitmap, unsigned id) __hwloc_attribute_pure;
      +
      291 
      +
      296 HWLOC_DECLSPEC int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      297 
      +
      304 HWLOC_DECLSPEC int hwloc_bitmap_isfull(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      305 
      +
      310 HWLOC_DECLSPEC int hwloc_bitmap_first(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      311 
      +
      318 HWLOC_DECLSPEC int hwloc_bitmap_next(hwloc_const_bitmap_t bitmap, int prev) __hwloc_attribute_pure;
      +
      319 
      +
      324 HWLOC_DECLSPEC int hwloc_bitmap_last(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      325 
      +
      333 HWLOC_DECLSPEC int hwloc_bitmap_weight(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      334 
      +
      339 HWLOC_DECLSPEC int hwloc_bitmap_first_unset(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      340 
      +
      347 HWLOC_DECLSPEC int hwloc_bitmap_next_unset(hwloc_const_bitmap_t bitmap, int prev) __hwloc_attribute_pure;
      +
      348 
      +
      353 HWLOC_DECLSPEC int hwloc_bitmap_last_unset(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
      +
      354 
      +
      370 #define hwloc_bitmap_foreach_begin(id, bitmap) \
      +
      371 do { \
      +
      372  assert(hwloc_bitmap_weight(bitmap) != -1); \
      +
      373  for (id = hwloc_bitmap_first(bitmap); \
      +
      374  (unsigned) id != (unsigned) -1; \
      +
      375  id = hwloc_bitmap_next(bitmap, id)) {
      +
      376 
      +
      384 #define hwloc_bitmap_foreach_end() \
      +
      385  } \
      +
      386 } while (0)
      +
      387 
      +
      388 
      +
      389 /*
      +
      390  * Combining bitmaps.
      +
      391  */
      +
      392 
      +
      397 HWLOC_DECLSPEC int hwloc_bitmap_or (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2);
      +
      398 
      + +
      404 
      + +
      410 
      + +
      416 
      +
      421 HWLOC_DECLSPEC int hwloc_bitmap_not (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap);
      +
      422 
      +
      423 
      +
      424 /*
      +
      425  * Comparing bitmaps.
      +
      426  */
      +
      427 
      +
      432 HWLOC_DECLSPEC int hwloc_bitmap_intersects (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure;
      +
      433 
      +
      440 HWLOC_DECLSPEC int hwloc_bitmap_isincluded (hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap) __hwloc_attribute_pure;
      +
      441 
      +
      446 HWLOC_DECLSPEC int hwloc_bitmap_isequal (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure;
      +
      447 
      +
      465 HWLOC_DECLSPEC int hwloc_bitmap_compare_first(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure;
      +
      466 
      +
      484 HWLOC_DECLSPEC int hwloc_bitmap_compare(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure;
      +
      485 
      +
      489 #ifdef __cplusplus
      +
      490 } /* extern "C" */
      +
      491 #endif
      +
      492 
      +
      493 
      +
      494 #endif /* HWLOC_BITMAP_H */
      +
      int hwloc_bitmap_weight(hwloc_const_bitmap_t bitmap)
      Compute the "weight" of bitmap bitmap (i.e., number of indexes that are in the bitmap).
      +
      hwloc_bitmap_t hwloc_bitmap_alloc_full(void)
      Allocate a new full bitmap.
      +
      int hwloc_bitmap_isincluded(hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap)
      Test whether bitmap sub_bitmap is part of bitmap super_bitmap.
      +
      int hwloc_bitmap_set(hwloc_bitmap_t bitmap, unsigned id)
      Add index id in bitmap bitmap.
      +
      int hwloc_bitmap_sscanf(hwloc_bitmap_t bitmap, const char *restrict string)
      Parse a bitmap string and stores it in bitmap bitmap.
      +
      int hwloc_bitmap_allbut(hwloc_bitmap_t bitmap, unsigned id)
      Fill the bitmap and clear the index id.
      +
      void hwloc_bitmap_fill(hwloc_bitmap_t bitmap)
      Fill bitmap bitmap with all possible indexes (even if those objects don't exist or are otherwise unav...
      +
      int hwloc_bitmap_asprintf(char **strp, hwloc_const_bitmap_t bitmap)
      Stringify a bitmap into a newly allocated string.
      +
      int hwloc_bitmap_only(hwloc_bitmap_t bitmap, unsigned id)
      Empty the bitmap bitmap and add bit id.
      +
      int hwloc_bitmap_isset(hwloc_const_bitmap_t bitmap, unsigned id)
      Test whether index id is part of bitmap bitmap.
      +
      int hwloc_bitmap_or(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Or bitmaps bitmap1 and bitmap2 and store the result in bitmap res.
      +
      int hwloc_bitmap_compare(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Compare bitmaps bitmap1 and bitmap2 in lexicographic order.
      +
      void hwloc_bitmap_free(hwloc_bitmap_t bitmap)
      Free bitmap bitmap.
      +
      int hwloc_bitmap_xor(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Xor bitmaps bitmap1 and bitmap2 and store the result in bitmap res.
      +
      int hwloc_bitmap_isequal(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Test whether bitmap bitmap1 is equal to bitmap bitmap2.
      +
      int hwloc_bitmap_taskset_asprintf(char **strp, hwloc_const_bitmap_t bitmap)
      Stringify a bitmap into a newly allocated taskset-specific string.
      +
      int hwloc_bitmap_list_asprintf(char **strp, hwloc_const_bitmap_t bitmap)
      Stringify a bitmap into a newly allocated list string.
      +
      int hwloc_bitmap_list_snprintf(char *restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap)
      Stringify a bitmap in the list format.
      +
      int hwloc_bitmap_last(hwloc_const_bitmap_t bitmap)
      Compute the last index (most significant bit) in bitmap bitmap.
      +
      int hwloc_bitmap_set_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask)
      Replace i -th subset of bitmap bitmap with unsigned long mask.
      +
      int hwloc_bitmap_first(hwloc_const_bitmap_t bitmap)
      Compute the first index (least significant bit) in bitmap bitmap.
      +
      int hwloc_bitmap_last_unset(hwloc_const_bitmap_t bitmap)
      Compute the last unset index (most significant bit) in bitmap bitmap.
      +
      int hwloc_bitmap_from_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask)
      Setup bitmap bitmap from unsigned long mask used as i -th subset.
      +
      int hwloc_bitmap_taskset_sscanf(hwloc_bitmap_t bitmap, const char *restrict string)
      Parse a taskset-specific bitmap string and stores it in bitmap bitmap.
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      int hwloc_bitmap_taskset_snprintf(char *restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap)
      Stringify a bitmap in the taskset-specific format.
      +
      int hwloc_bitmap_isfull(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is completely full.
      +
      int hwloc_bitmap_and(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      And bitmaps bitmap1 and bitmap2 and store the result in bitmap res.
      +
      int hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
      Copy the contents of bitmap src into the already allocated bitmap dst.
      +
      int hwloc_bitmap_andnot(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      And bitmap bitmap1 and the negation of bitmap2 and store the result in bitmap res.
      +
      int hwloc_bitmap_clr_range(hwloc_bitmap_t bitmap, unsigned begin, int end)
      Remove indexes from begin to end in bitmap bitmap.
      +
      int hwloc_bitmap_not(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap)
      Negate bitmap bitmap and store the result in bitmap res.
      +
      int hwloc_bitmap_snprintf(char *restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap)
      Stringify a bitmap.
      +
      int hwloc_bitmap_next_unset(hwloc_const_bitmap_t bitmap, int prev)
      Compute the next unset index in bitmap bitmap which is after index prev.
      +
      int hwloc_bitmap_set_range(hwloc_bitmap_t bitmap, unsigned begin, int end)
      Add indexes from begin to end in bitmap bitmap.
      +
      int hwloc_bitmap_compare_first(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Compare bitmaps bitmap1 and bitmap2 using their lowest index.
      +
      struct hwloc_bitmap_s * hwloc_bitmap_t
      Set of bits represented as an opaque pointer to an internal bitmap.
      Definition: bitmap.h:68
      +
      int hwloc_bitmap_singlify(hwloc_bitmap_t bitmap)
      Keep a single index among those set in bitmap bitmap.
      +
      void hwloc_bitmap_zero(hwloc_bitmap_t bitmap)
      Empty the bitmap bitmap.
      +
      int hwloc_bitmap_next(hwloc_const_bitmap_t bitmap, int prev)
      Compute the next index in bitmap bitmap which is after index prev.
      +
      unsigned long hwloc_bitmap_to_ulong(hwloc_const_bitmap_t bitmap)
      Convert the beginning part of bitmap bitmap into unsigned long mask.
      +
      int hwloc_bitmap_from_ulongs(hwloc_bitmap_t bitmap, unsigned nr, const unsigned long *masks)
      Setup bitmap bitmap from unsigned longs masks used as first nr subsets.
      +
      int hwloc_bitmap_nr_ulongs(hwloc_const_bitmap_t bitmap)
      Return the number of unsigned longs required for storing bitmap bitmap entirely.
      +
      unsigned long hwloc_bitmap_to_ith_ulong(hwloc_const_bitmap_t bitmap, unsigned i)
      Convert the i -th subset of bitmap bitmap into unsigned long mask.
      +
      int hwloc_bitmap_to_ulongs(hwloc_const_bitmap_t bitmap, unsigned nr, unsigned long *masks)
      Convert the first nr subsets of bitmap bitmap into the array of nr unsigned long masks.
      +
      int hwloc_bitmap_from_ulong(hwloc_bitmap_t bitmap, unsigned long mask)
      Setup bitmap bitmap from unsigned long mask.
      +
      hwloc_bitmap_t hwloc_bitmap_alloc(void)
      Allocate a new empty bitmap.
      +
      int hwloc_bitmap_first_unset(hwloc_const_bitmap_t bitmap)
      Compute the first unset index (least significant bit) in bitmap bitmap.
      +
      hwloc_bitmap_t hwloc_bitmap_dup(hwloc_const_bitmap_t bitmap)
      Duplicate bitmap bitmap by allocating a new bitmap and copying bitmap contents.
      +
      const struct hwloc_bitmap_s * hwloc_const_bitmap_t
      a non-modifiable hwloc_bitmap_t
      Definition: bitmap.h:70
      +
      int hwloc_bitmap_intersects(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Test whether bitmaps bitmap1 and bitmap2 intersects.
      +
      int hwloc_bitmap_clr(hwloc_bitmap_t bitmap, unsigned id)
      Remove index id from bitmap bitmap.
      +
      int hwloc_bitmap_list_sscanf(hwloc_bitmap_t bitmap, const char *restrict string)
      Parse a list string and stores it in bitmap bitmap.
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00134_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00134_source.html new file mode 100644 index 0000000000..3bf6c707e7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00134_source.html @@ -0,0 +1,133 @@ + + + + + + + +Hardware Locality (hwloc): export.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      export.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2009-2018 Inria. All rights reserved.
      +
      3  * Copyright © 2009-2012 Université Bordeaux
      +
      4  * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved.
      +
      5  * See COPYING in top-level directory.
      +
      6  */
      +
      7 
      +
      12 #ifndef HWLOC_EXPORT_H
      +
      13 #define HWLOC_EXPORT_H
      +
      14 
      +
      15 #ifndef HWLOC_H
      +
      16 #error Please include the main hwloc.h instead
      +
      17 #endif
      +
      18 
      +
      19 
      +
      20 #ifdef __cplusplus
      +
      21 extern "C" {
      +
      22 #elif 0
      +
      23 }
      +
      24 #endif
      +
      25 
      +
      26 
      + + +
      41 };
      +
      42 
      +
      71 HWLOC_DECLSPEC int hwloc_topology_export_xml(hwloc_topology_t topology, const char *xmlpath, unsigned long flags);
      +
      72 
      +
      105 HWLOC_DECLSPEC int hwloc_topology_export_xmlbuffer(hwloc_topology_t topology, char **xmlbuffer, int *buflen, unsigned long flags);
      +
      106 
      +
      108 HWLOC_DECLSPEC void hwloc_free_xmlbuffer(hwloc_topology_t topology, char *xmlbuffer);
      +
      109 
      + +
      129  void (*export_cb)(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj));
      +
      130 
      +
      156 HWLOC_DECLSPEC int hwloc_export_obj_userdata(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length);
      +
      157 
      +
      171 HWLOC_DECLSPEC int hwloc_export_obj_userdata_base64(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length);
      +
      172 
      + +
      196  void (*import_cb)(hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length));
      +
      197 
      + + +
      216 
      + +
      224 
      + +
      234 
      + +
      244 };
      +
      245 
      +
      267  HWLOC_DECLSPEC int hwloc_topology_export_synthetic(hwloc_topology_t topology, char *buffer, size_t buflen, unsigned long flags);
      +
      268 
      +
      273 #ifdef __cplusplus
      +
      274 } /* extern "C" */
      +
      275 #endif
      +
      276 
      +
      277 
      +
      278 #endif /* HWLOC_EXPORT_H */
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      hwloc_topology_export_xml_flags_e
      Flags for exporting XML topologies.
      Definition: export.h:35
      +
      int hwloc_export_obj_userdata_base64(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length)
      Encode and export some object userdata to XML.
      +
      void hwloc_free_xmlbuffer(hwloc_topology_t topology, char *xmlbuffer)
      Free a buffer allocated by hwloc_topology_export_xmlbuffer()
      +
      int hwloc_topology_export_xml(hwloc_topology_t topology, const char *xmlpath, unsigned long flags)
      Export the topology into an XML file.
      +
      void hwloc_topology_set_userdata_import_callback(hwloc_topology_t topology, void(*import_cb)(hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length))
      Set the application-specific callback for importing userdata.
      +
      void hwloc_topology_set_userdata_export_callback(hwloc_topology_t topology, void(*export_cb)(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj))
      Set the application-specific callback for exporting object userdata.
      +
      int hwloc_export_obj_userdata(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length)
      Export some object userdata to XML.
      +
      int hwloc_topology_export_xmlbuffer(hwloc_topology_t topology, char **xmlbuffer, int *buflen, unsigned long flags)
      Export the topology into a newly-allocated XML memory buffer.
      +
      @ HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1
      Export XML that is loadable by hwloc v1.x. However, the export may miss some details about the topolo...
      Definition: export.h:40
      +
      int hwloc_topology_export_synthetic(hwloc_topology_t topology, char *buffer, size_t buflen, unsigned long flags)
      Export the topology as a synthetic string.
      +
      hwloc_topology_export_synthetic_flags_e
      Flags for exporting synthetic topologies.
      Definition: export.h:209
      +
      @ HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_IGNORE_MEMORY
      Do not export memory information.
      Definition: export.h:243
      +
      @ HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES
      Export extended types such as L2dcache as basic types such as Cache.
      Definition: export.h:215
      +
      @ HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1
      Export the memory hierarchy as expected in hwloc 1.x.
      Definition: export.h:233
      +
      @ HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS
      Do not export level attributes.
      Definition: export.h:223
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00137_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00137_source.html new file mode 100644 index 0000000000..263fe97d57 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00137_source.html @@ -0,0 +1,243 @@ + + + + + + + +Hardware Locality (hwloc): distances.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      distances.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2010-2021 Inria. All rights reserved.
      +
      3  * See COPYING in top-level directory.
      +
      4  */
      +
      5 
      +
      10 #ifndef HWLOC_DISTANCES_H
      +
      11 #define HWLOC_DISTANCES_H
      +
      12 
      +
      13 #ifndef HWLOC_H
      +
      14 #error Please include the main hwloc.h instead
      +
      15 #endif
      +
      16 
      +
      17 
      +
      18 #ifdef __cplusplus
      +
      19 extern "C" {
      +
      20 #elif 0
      +
      21 }
      +
      22 #endif
      +
      23 
      +
      24 
      + +
      54  unsigned nbobjs;
      + +
      60  unsigned long kind;
      +
      61  hwloc_uint64_t *values;
      +
      66 };
      +
      67 
      + + + +
      88 
      + + +
      103 
      + +
      110 };
      +
      111 
      +
      135 HWLOC_DECLSPEC int
      + +
      137  unsigned *nr, struct hwloc_distances_s **distances,
      +
      138  unsigned long kind, unsigned long flags);
      +
      139 
      +
      144 HWLOC_DECLSPEC int
      + +
      146  unsigned *nr, struct hwloc_distances_s **distances,
      +
      147  unsigned long kind, unsigned long flags);
      +
      148 
      +
      153 HWLOC_DECLSPEC int
      + +
      155  unsigned *nr, struct hwloc_distances_s **distances,
      +
      156  unsigned long kind, unsigned long flags);
      +
      157 
      +
      165 HWLOC_DECLSPEC int
      + +
      167  unsigned *nr, struct hwloc_distances_s **distances,
      +
      168  unsigned long flags);
      +
      169 
      +
      175 HWLOC_DECLSPEC const char *
      + +
      177 
      +
      182 HWLOC_DECLSPEC void
      + +
      184 
      + + +
      201 
      + +
      215 
      + +
      224 
      + +
      231 };
      +
      232 
      +
      259 HWLOC_DECLSPEC int hwloc_distances_transform(hwloc_topology_t topology, struct hwloc_distances_s *distances,
      +
      260  enum hwloc_distances_transform_e transform,
      +
      261  void *transform_attr,
      +
      262  unsigned long flags);
      +
      263 
      +
      276 static __hwloc_inline int
      + +
      278 {
      +
      279  unsigned i;
      +
      280  for(i=0; i<distances->nbobjs; i++)
      +
      281  if (distances->objs[i] == obj)
      +
      282  return (int)i;
      +
      283  return -1;
      +
      284 }
      +
      285 
      +
      293 static __hwloc_inline int
      + +
      295  hwloc_obj_t obj1, hwloc_obj_t obj2,
      +
      296  hwloc_uint64_t *value1to2, hwloc_uint64_t *value2to1)
      +
      297 {
      +
      298  int i1 = hwloc_distances_obj_index(distances, obj1);
      +
      299  int i2 = hwloc_distances_obj_index(distances, obj2);
      +
      300  if (i1 < 0 || i2 < 0)
      +
      301  return -1;
      +
      302  *value1to2 = distances->values[i1 * distances->nbobjs + i2];
      +
      303  *value2to1 = distances->values[i2 * distances->nbobjs + i1];
      +
      304  return 0;
      +
      305 }
      +
      306 
      + +
      331 
      +
      352 HWLOC_DECLSPEC hwloc_distances_add_handle_t
      + +
      354  const char *name, unsigned long kind,
      +
      355  unsigned long flags);
      +
      356 
      +
      379 HWLOC_DECLSPEC int hwloc_distances_add_values(hwloc_topology_t topology,
      + +
      381  unsigned nbobjs, hwloc_obj_t *objs,
      +
      382  hwloc_uint64_t *values,
      +
      383  unsigned long flags);
      +
      384 
      + + + +
      398 };
      +
      399 
      +
      416 HWLOC_DECLSPEC int hwloc_distances_add_commit(hwloc_topology_t topology,
      + +
      418  unsigned long flags);
      +
      419 
      +
      436 HWLOC_DECLSPEC int hwloc_distances_remove(hwloc_topology_t topology);
      +
      437 
      +
      442 HWLOC_DECLSPEC int hwloc_distances_remove_by_depth(hwloc_topology_t topology, int depth);
      +
      443 
      +
      448 static __hwloc_inline int
      + +
      450 {
      +
      451  int depth = hwloc_get_type_depth(topology, type);
      +
      452  if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE)
      +
      453  return 0;
      +
      454  return hwloc_distances_remove_by_depth(topology, depth);
      +
      455 }
      +
      456 
      +
      461 HWLOC_DECLSPEC int hwloc_distances_release_remove(hwloc_topology_t topology, struct hwloc_distances_s *distances);
      +
      462 
      +
      466 #ifdef __cplusplus
      +
      467 } /* extern "C" */
      +
      468 #endif
      +
      469 
      +
      470 
      +
      471 #endif /* HWLOC_DISTANCES_H */
      +
      hwloc_obj_type_t
      Type of topology object.
      Definition: hwloc.h:176
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_get_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the depth of objects of type type.
      +
      @ HWLOC_TYPE_DEPTH_UNKNOWN
      No object of given type exists in the topology.
      Definition: hwloc.h:822
      +
      @ HWLOC_TYPE_DEPTH_MULTIPLE
      Objects of given type exist at different depth in the topology (only for Groups).
      Definition: hwloc.h:823
      +
      void hwloc_distances_release(hwloc_topology_t topology, struct hwloc_distances_s *distances)
      Release a distance matrix structure previously returned by hwloc_distances_get().
      +
      hwloc_distances_transform_e
      Transformations of distances structures.
      Definition: distances.h:186
      +
      int hwloc_distances_get_by_depth(hwloc_topology_t topology, int depth, unsigned *nr, struct hwloc_distances_s **distances, unsigned long kind, unsigned long flags)
      Retrieve distance matrices for object at a specific depth in the topology.
      +
      int hwloc_distances_get(hwloc_topology_t topology, unsigned *nr, struct hwloc_distances_s **distances, unsigned long kind, unsigned long flags)
      Retrieve distance matrices.
      +
      int hwloc_distances_get_by_name(hwloc_topology_t topology, const char *name, unsigned *nr, struct hwloc_distances_s **distances, unsigned long flags)
      Retrieve a distance matrix with the given name.
      +
      const char * hwloc_distances_get_name(hwloc_topology_t topology, struct hwloc_distances_s *distances)
      Get a description of what a distances structure contains.
      +
      int hwloc_distances_get_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned *nr, struct hwloc_distances_s **distances, unsigned long kind, unsigned long flags)
      Retrieve distance matrices for object of a specific type.
      +
      hwloc_distances_kind_e
      Kinds of distance matrices.
      Definition: distances.h:79
      +
      int hwloc_distances_transform(hwloc_topology_t topology, struct hwloc_distances_s *distances, enum hwloc_distances_transform_e transform, void *transform_attr, unsigned long flags)
      Apply a transformation to a distances structure.
      +
      @ HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE
      Apply a transitive closure to the matrix to connect objects across switches. This currently only appl...
      Definition: distances.h:230
      +
      @ HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS
      Merge switches with multiple ports into a single object. This currently only applies to NVSwitches wh...
      Definition: distances.h:223
      +
      @ HWLOC_DISTANCES_TRANSFORM_LINKS
      Replace bandwidth values with a number of links.
      Definition: distances.h:214
      +
      @ HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL
      Remove NULL objects from the distances structure.
      Definition: distances.h:200
      +
      @ HWLOC_DISTANCES_KIND_FROM_USER
      These distances were provided by the user.
      Definition: distances.h:87
      +
      @ HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH
      Distance values are similar to bandwidths between objects. Values are higher for closer objects,...
      Definition: distances.h:102
      +
      @ HWLOC_DISTANCES_KIND_FROM_OS
      These distances were obtained from the operating system or hardware.
      Definition: distances.h:83
      +
      @ HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES
      This distances structure covers objects of different types. This may apply to the "NVLinkBandwidth" s...
      Definition: distances.h:109
      +
      @ HWLOC_DISTANCES_KIND_MEANS_LATENCY
      Distance values are similar to latencies between objects. Values are smaller for closer objects,...
      Definition: distances.h:95
      +
      static int hwloc_distances_obj_pair_values(struct hwloc_distances_s *distances, hwloc_obj_t obj1, hwloc_obj_t obj2, hwloc_uint64_t *value1to2, hwloc_uint64_t *value2to1)
      Find the values between two objects in a distance matrices.
      Definition: distances.h:294
      +
      static int hwloc_distances_obj_index(struct hwloc_distances_s *distances, hwloc_obj_t obj)
      Find the index of an object in a distances structure.
      Definition: distances.h:277
      +
      int hwloc_distances_add_commit(hwloc_topology_t topology, hwloc_distances_add_handle_t handle, unsigned long flags)
      Commit a new distances structure.
      +
      hwloc_distances_add_flag_e
      Flags for adding a new distances to a topology.
      Definition: distances.h:386
      +
      void * hwloc_distances_add_handle_t
      Handle to a new distances structure during its addition to the topology.
      Definition: distances.h:330
      +
      hwloc_distances_add_handle_t hwloc_distances_add_create(hwloc_topology_t topology, const char *name, unsigned long kind, unsigned long flags)
      Create a new empty distances structure.
      +
      int hwloc_distances_add_values(hwloc_topology_t topology, hwloc_distances_add_handle_t handle, unsigned nbobjs, hwloc_obj_t *objs, hwloc_uint64_t *values, unsigned long flags)
      Specify the objects and values in a new empty distances structure.
      +
      @ HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE
      If grouping, consider the distance values as inaccurate and relax the comparisons during the grouping...
      Definition: distances.h:397
      +
      @ HWLOC_DISTANCES_ADD_FLAG_GROUP
      Try to group objects based on the newly provided distance information. This is ignored for distances ...
      Definition: distances.h:391
      +
      int hwloc_distances_release_remove(hwloc_topology_t topology, struct hwloc_distances_s *distances)
      Release and remove the given distance matrice from the topology.
      +
      static int hwloc_distances_remove_by_type(hwloc_topology_t topology, hwloc_obj_type_t type)
      Remove distance matrices for objects of a specific type in the topology.
      Definition: distances.h:449
      +
      int hwloc_distances_remove_by_depth(hwloc_topology_t topology, int depth)
      Remove distance matrices for objects at a specific depth in the topology.
      +
      int hwloc_distances_remove(hwloc_topology_t topology)
      Remove all distance matrices from a topology.
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      Matrix of distances between a set of objects.
      Definition: distances.h:53
      +
      unsigned nbobjs
      Number of objects described by the distance matrix.
      Definition: distances.h:54
      +
      hwloc_uint64_t * values
      Matrix of distances between objects, stored as a one-dimension array.
      Definition: distances.h:61
      +
      unsigned long kind
      OR'ed set of hwloc_distances_kind_e.
      Definition: distances.h:60
      +
      hwloc_obj_t * objs
      Array of objects described by the distance matrix. These objects are not in any particular order,...
      Definition: distances.h:55
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00140_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00140_source.html new file mode 100644 index 0000000000..31c59cde49 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00140_source.html @@ -0,0 +1,231 @@ + + + + + + + +Hardware Locality (hwloc): memattrs.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      memattrs.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2019-2022 Inria. All rights reserved.
      +
      3  * See COPYING in top-level directory.
      +
      4  */
      +
      5 
      +
      10 #ifndef HWLOC_MEMATTR_H
      +
      11 #define HWLOC_MEMATTR_H
      +
      12 
      +
      13 #include "hwloc.h"
      +
      14 
      +
      15 #ifdef __cplusplus
      +
      16 extern "C" {
      +
      17 #elif 0
      +
      18 }
      +
      19 #endif
      +
      20 
      + + +
      78 
      + +
      92 
      + +
      100 
      + +
      108 
      +
      109  /* TODO read vs write, persistence? */
      +
      110 };
      +
      111 
      +
      115 typedef unsigned hwloc_memattr_id_t;
      +
      116 
      +
      119 HWLOC_DECLSPEC int
      + +
      121  const char *name,
      +
      122  hwloc_memattr_id_t *id);
      +
      123 
      +
      124 
      + + + +
      131 };
      +
      132 
      + + + + + + +
      144 };
      +
      145 
      +
      146 
      + + +
      155 
      + +
      162 
      + +
      168 };
      +
      169 
      +
      199 HWLOC_DECLSPEC int
      + +
      201  struct hwloc_location *location,
      +
      202  unsigned *nr,
      +
      203  hwloc_obj_t *nodes,
      +
      204  unsigned long flags);
      +
      205 
      +
      206 
      +
      207 
      +
      222 HWLOC_DECLSPEC int
      + +
      224  hwloc_memattr_id_t attribute,
      +
      225  hwloc_obj_t target_node,
      +
      226  struct hwloc_location *initiator,
      +
      227  unsigned long flags,
      +
      228  hwloc_uint64_t *value);
      +
      229 
      +
      255 HWLOC_DECLSPEC int
      + +
      257  hwloc_memattr_id_t attribute,
      +
      258  struct hwloc_location *initiator,
      +
      259  unsigned long flags,
      +
      260  hwloc_obj_t *best_target, hwloc_uint64_t *value);
      +
      261 
      +
      284 HWLOC_DECLSPEC int
      + +
      286  hwloc_memattr_id_t attribute,
      +
      287  hwloc_obj_t target,
      +
      288  unsigned long flags,
      +
      289  struct hwloc_location *best_initiator, hwloc_uint64_t *value);
      +
      290 
      +
      300 HWLOC_DECLSPEC int
      + +
      302  hwloc_memattr_id_t attribute,
      +
      303  const char **name);
      +
      304 
      +
      309 HWLOC_DECLSPEC int
      + +
      311  hwloc_memattr_id_t attribute,
      +
      312  unsigned long *flags);
      +
      313 
      + + + + +
      330 };
      +
      331 
      +
      338 HWLOC_DECLSPEC int
      + +
      340  const char *name,
      +
      341  unsigned long flags,
      +
      342  hwloc_memattr_id_t *id);
      +
      343 
      +
      362 HWLOC_DECLSPEC int
      + +
      364  hwloc_memattr_id_t attribute,
      +
      365  hwloc_obj_t target_node,
      +
      366  struct hwloc_location *initiator,
      +
      367  unsigned long flags,
      +
      368  hwloc_uint64_t value);
      +
      369 
      +
      406 HWLOC_DECLSPEC int
      + +
      408  hwloc_memattr_id_t attribute,
      +
      409  struct hwloc_location *initiator,
      +
      410  unsigned long flags,
      +
      411  unsigned *nr, hwloc_obj_t *targets, hwloc_uint64_t *values);
      +
      412 
      +
      442 HWLOC_DECLSPEC int
      + +
      444  hwloc_memattr_id_t attribute,
      +
      445  hwloc_obj_t target_node,
      +
      446  unsigned long flags,
      +
      447  unsigned *nr, struct hwloc_location *initiators, hwloc_uint64_t *values);
      +
      450 #ifdef __cplusplus
      +
      451 } /* extern "C" */
      +
      452 #endif
      +
      453 
      +
      454 
      +
      455 #endif /* HWLOC_MEMATTR_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_memattr_get_value(hwloc_topology_t topology, hwloc_memattr_id_t attribute, hwloc_obj_t target_node, struct hwloc_location *initiator, unsigned long flags, hwloc_uint64_t *value)
      Return an attribute value for a specific target NUMA node.
      +
      hwloc_location_type_e
      Type of location.
      Definition: memattrs.h:126
      +
      int hwloc_get_local_numanode_objs(hwloc_topology_t topology, struct hwloc_location *location, unsigned *nr, hwloc_obj_t *nodes, unsigned long flags)
      Return an array of local NUMA nodes.
      +
      int hwloc_memattr_get_by_name(hwloc_topology_t topology, const char *name, hwloc_memattr_id_t *id)
      Return the identifier of the memory attribute with the given name.
      +
      int hwloc_memattr_get_best_target(hwloc_topology_t topology, hwloc_memattr_id_t attribute, struct hwloc_location *initiator, unsigned long flags, hwloc_obj_t *best_target, hwloc_uint64_t *value)
      Return the best target NUMA node for the given attribute and initiator.
      +
      int hwloc_memattr_get_best_initiator(hwloc_topology_t topology, hwloc_memattr_id_t attribute, hwloc_obj_t target, unsigned long flags, struct hwloc_location *best_initiator, hwloc_uint64_t *value)
      Return the best initiator for the given attribute and target NUMA node.
      +
      hwloc_memattr_id_e
      Memory node attributes.
      Definition: memattrs.h:67
      +
      hwloc_local_numanode_flag_e
      Flags for selecting target NUMA nodes.
      Definition: memattrs.h:148
      +
      unsigned hwloc_memattr_id_t
      A memory attribute identifier. May be either one of hwloc_memattr_id_e or a new id returned by hwloc_...
      Definition: memattrs.h:115
      +
      @ HWLOC_LOCATION_TYPE_CPUSET
      Location is given as a cpuset, in the location cpuset union field.
      Definition: memattrs.h:128
      +
      @ HWLOC_LOCATION_TYPE_OBJECT
      Location is given as an object, in the location object union field.
      Definition: memattrs.h:130
      +
      @ HWLOC_MEMATTR_ID_BANDWIDTH
      "Bandwidth". The bandwidth is returned in MiB/s, as seen from the given initiator location....
      Definition: memattrs.h:99
      +
      @ HWLOC_MEMATTR_ID_LOCALITY
      "Locality". The locality is returned as the number of PUs in that locality (e.g. the weight of its cp...
      Definition: memattrs.h:91
      +
      @ HWLOC_MEMATTR_ID_CAPACITY
      "Capacity". The capacity is returned in bytes (local_memory attribute in objects).
      Definition: memattrs.h:77
      +
      @ HWLOC_MEMATTR_ID_LATENCY
      "Latency". The latency is returned as nanoseconds, as seen from the given initiator location....
      Definition: memattrs.h:107
      +
      @ HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY
      Select NUMA nodes whose locality is larger than the given cpuset. For instance, if a single PU (or it...
      Definition: memattrs.h:154
      +
      @ HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY
      Select NUMA nodes whose locality is smaller than the given cpuset. For instance, if a package (or its...
      Definition: memattrs.h:161
      +
      @ HWLOC_LOCAL_NUMANODE_FLAG_ALL
      Select all NUMA nodes in the topology. The initiator initiator is ignored.
      Definition: memattrs.h:167
      +
      int hwloc_memattr_get_initiators(hwloc_topology_t topology, hwloc_memattr_id_t attribute, hwloc_obj_t target_node, unsigned long flags, unsigned *nr, struct hwloc_location *initiators, hwloc_uint64_t *values)
      Return the initiators that have values for a given attribute for a specific target NUMA node.
      +
      int hwloc_memattr_get_flags(hwloc_topology_t topology, hwloc_memattr_id_t attribute, unsigned long *flags)
      Return the flags of the given attribute.
      +
      int hwloc_memattr_get_name(hwloc_topology_t topology, hwloc_memattr_id_t attribute, const char **name)
      Return the name of a memory attribute.
      +
      int hwloc_memattr_register(hwloc_topology_t topology, const char *name, unsigned long flags, hwloc_memattr_id_t *id)
      Register a new memory attribute.
      +
      hwloc_memattr_flag_e
      Memory attribute flags. Given to hwloc_memattr_register() and returned by hwloc_memattr_get_flags().
      Definition: memattrs.h:317
      +
      int hwloc_memattr_set_value(hwloc_topology_t topology, hwloc_memattr_id_t attribute, hwloc_obj_t target_node, struct hwloc_location *initiator, unsigned long flags, hwloc_uint64_t value)
      Set an attribute value for a specific target NUMA node.
      +
      int hwloc_memattr_get_targets(hwloc_topology_t topology, hwloc_memattr_id_t attribute, struct hwloc_location *initiator, unsigned long flags, unsigned *nr, hwloc_obj_t *targets, hwloc_uint64_t *values)
      Return the target NUMA nodes that have some values for a given attribute.
      +
      @ HWLOC_MEMATTR_FLAG_LOWER_FIRST
      The best nodes for this memory attribute are those with the lower values. For instance Latency.
      Definition: memattrs.h:325
      +
      @ HWLOC_MEMATTR_FLAG_NEED_INITIATOR
      The value returned for this memory attribute depends on the given initiator. For instance Bandwidth a...
      Definition: memattrs.h:329
      +
      @ HWLOC_MEMATTR_FLAG_HIGHER_FIRST
      The best nodes for this memory attribute are those with the higher values. For instance Bandwidth.
      Definition: memattrs.h:321
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      Where to measure attributes from.
      Definition: memattrs.h:134
      +
      union hwloc_location::hwloc_location_u location
      +
      enum hwloc_location_type_e type
      Type of location.
      Definition: memattrs.h:136
      +
      Actual location.
      Definition: memattrs.h:138
      +
      hwloc_cpuset_t cpuset
      Location as a cpuset, when the location type is HWLOC_LOCATION_TYPE_CPUSET.
      Definition: memattrs.h:140
      +
      hwloc_obj_t object
      Location as an object, when the location type is HWLOC_LOCATION_TYPE_OBJECT.
      Definition: memattrs.h:142
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00143_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00143_source.html new file mode 100644 index 0000000000..51f42df06d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00143_source.html @@ -0,0 +1,110 @@ + + + + + + + +Hardware Locality (hwloc): cpukinds.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      cpukinds.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2020-2021 Inria. All rights reserved.
      +
      3  * See COPYING in top-level directory.
      +
      4  */
      +
      5 
      +
      10 #ifndef HWLOC_CPUKINDS_H
      +
      11 #define HWLOC_CPUKINDS_H
      +
      12 
      +
      13 #include "hwloc.h"
      +
      14 
      +
      15 #ifdef __cplusplus
      +
      16 extern "C" {
      +
      17 #elif 0
      +
      18 }
      +
      19 #endif
      +
      20 
      +
      81 HWLOC_DECLSPEC int
      + +
      83  unsigned long flags);
      +
      84 
      +
      96 HWLOC_DECLSPEC int
      + +
      98  hwloc_const_bitmap_t cpuset,
      +
      99  unsigned long flags);
      +
      100 
      +
      134 HWLOC_DECLSPEC int
      + +
      136  unsigned kind_index,
      +
      137  hwloc_bitmap_t cpuset,
      +
      138  int *efficiency,
      +
      139  unsigned *nr_infos, struct hwloc_info_s **infos,
      +
      140  unsigned long flags);
      +
      141 
      +
      179 HWLOC_DECLSPEC int
      + +
      181  hwloc_bitmap_t cpuset,
      +
      182  int forced_efficiency,
      +
      183  unsigned nr_infos, struct hwloc_info_s *infos,
      +
      184  unsigned long flags);
      +
      185 
      +
      188 #ifdef __cplusplus
      +
      189 } /* extern "C" */
      +
      190 #endif
      +
      191 
      +
      192 
      +
      193 #endif /* HWLOC_CPUKINDS_H */
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      struct hwloc_bitmap_s * hwloc_bitmap_t
      Set of bits represented as an opaque pointer to an internal bitmap.
      Definition: bitmap.h:68
      +
      const struct hwloc_bitmap_s * hwloc_const_bitmap_t
      a non-modifiable hwloc_bitmap_t
      Definition: bitmap.h:70
      +
      int hwloc_cpukinds_register(hwloc_topology_t topology, hwloc_bitmap_t cpuset, int forced_efficiency, unsigned nr_infos, struct hwloc_info_s *infos, unsigned long flags)
      Register a kind of CPU in the topology.
      +
      int hwloc_cpukinds_get_nr(hwloc_topology_t topology, unsigned long flags)
      Get the number of different kinds of CPU cores in the topology.
      +
      int hwloc_cpukinds_get_info(hwloc_topology_t topology, unsigned kind_index, hwloc_bitmap_t cpuset, int *efficiency, unsigned *nr_infos, struct hwloc_info_s **infos, unsigned long flags)
      Get the CPU set and infos about a CPU kind in the topology.
      +
      int hwloc_cpukinds_get_by_cpuset(hwloc_topology_t topology, hwloc_const_bitmap_t cpuset, unsigned long flags)
      Get the index of the CPU kind that contains CPUs listed in cpuset.
      +
      Object info.
      Definition: hwloc.h:674
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00146_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00146_source.html new file mode 100644 index 0000000000..ffda2486c9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00146_source.html @@ -0,0 +1,98 @@ + + + + + + + +Hardware Locality (hwloc): linux.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      linux.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2009 CNRS
      +
      3  * Copyright © 2009-2021 Inria. All rights reserved.
      +
      4  * Copyright © 2009-2011 Université Bordeaux
      +
      5  * See COPYING in top-level directory.
      +
      6  */
      +
      7 
      +
      15 #ifndef HWLOC_LINUX_H
      +
      16 #define HWLOC_LINUX_H
      +
      17 
      +
      18 #include "hwloc.h"
      +
      19 
      +
      20 #include <stdio.h>
      +
      21 
      +
      22 
      +
      23 #ifdef __cplusplus
      +
      24 extern "C" {
      +
      25 #endif
      +
      26 
      +
      27 
      +
      44 HWLOC_DECLSPEC int hwloc_linux_set_tid_cpubind(hwloc_topology_t topology, pid_t tid, hwloc_const_cpuset_t set);
      +
      45 
      +
      58 HWLOC_DECLSPEC int hwloc_linux_get_tid_cpubind(hwloc_topology_t topology, pid_t tid, hwloc_cpuset_t set);
      +
      59 
      +
      68 HWLOC_DECLSPEC int hwloc_linux_get_tid_last_cpu_location(hwloc_topology_t topology, pid_t tid, hwloc_bitmap_t set);
      +
      69 
      +
      77 HWLOC_DECLSPEC int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set);
      +
      78 
      +
      82 #ifdef __cplusplus
      +
      83 } /* extern "C" */
      +
      84 #endif
      +
      85 
      +
      86 
      +
      87 #endif /* HWLOC_LINUX_H */
      +
      hwloc_const_bitmap_t hwloc_const_cpuset_t
      A non-modifiable hwloc_cpuset_t.
      Definition: hwloc.h:142
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      struct hwloc_bitmap_s * hwloc_bitmap_t
      Set of bits represented as an opaque pointer to an internal bitmap.
      Definition: bitmap.h:68
      +
      int hwloc_linux_set_tid_cpubind(hwloc_topology_t topology, pid_t tid, hwloc_const_cpuset_t set)
      Bind a thread tid on cpus given in cpuset set.
      +
      int hwloc_linux_get_tid_last_cpu_location(hwloc_topology_t topology, pid_t tid, hwloc_bitmap_t set)
      Get the last physical CPU where thread tid ran.
      +
      int hwloc_linux_get_tid_cpubind(hwloc_topology_t topology, pid_t tid, hwloc_cpuset_t set)
      Get the current binding of thread tid.
      +
      int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set)
      Convert a linux kernel cpumask file path into a hwloc bitmap set.
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00149_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00149_source.html new file mode 100644 index 0000000000..910848f769 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00149_source.html @@ -0,0 +1,245 @@ + + + + + + + +Hardware Locality (hwloc): linux-libnuma.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      linux-libnuma.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2009 CNRS
      +
      3  * Copyright © 2009-2017 Inria. All rights reserved.
      +
      4  * Copyright © 2009-2010, 2012 Université Bordeaux
      +
      5  * See COPYING in top-level directory.
      +
      6  */
      +
      7 
      +
      15 #ifndef HWLOC_LINUX_LIBNUMA_H
      +
      16 #define HWLOC_LINUX_LIBNUMA_H
      +
      17 
      +
      18 #include "hwloc.h"
      +
      19 
      +
      20 #include <numa.h>
      +
      21 
      +
      22 
      +
      23 #ifdef __cplusplus
      +
      24 extern "C" {
      +
      25 #endif
      +
      26 
      +
      27 
      +
      54 static __hwloc_inline int
      + +
      56  unsigned long *mask, unsigned long *maxnode)
      +
      57 {
      +
      58  int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +
      59  unsigned long outmaxnode = -1;
      +
      60  hwloc_obj_t node = NULL;
      +
      61 
      +
      62  /* round-up to the next ulong and clear all bytes */
      +
      63  *maxnode = (*maxnode + 8*sizeof(*mask) - 1) & ~(8*sizeof(*mask) - 1);
      +
      64  memset(mask, 0, *maxnode/8);
      +
      65 
      +
      66  while ((node = hwloc_get_next_obj_covering_cpuset_by_depth(topology, cpuset, depth, node)) != NULL) {
      +
      67  if (node->os_index >= *maxnode)
      +
      68  continue;
      +
      69  mask[node->os_index/sizeof(*mask)/8] |= 1UL << (node->os_index % (sizeof(*mask)*8));
      +
      70  if (outmaxnode == (unsigned long) -1 || outmaxnode < node->os_index)
      +
      71  outmaxnode = node->os_index;
      +
      72  }
      +
      73 
      +
      74  *maxnode = outmaxnode+1;
      +
      75  return 0;
      +
      76 }
      +
      77 
      +
      88 static __hwloc_inline int
      + +
      90  unsigned long *mask, unsigned long *maxnode)
      +
      91 {
      +
      92  int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +
      93  unsigned long outmaxnode = -1;
      +
      94  hwloc_obj_t node = NULL;
      +
      95 
      +
      96  /* round-up to the next ulong and clear all bytes */
      +
      97  *maxnode = (*maxnode + 8*sizeof(*mask) - 1) & ~(8*sizeof(*mask) - 1);
      +
      98  memset(mask, 0, *maxnode/8);
      +
      99 
      +
      100  while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL) {
      +
      101  if (node->os_index >= *maxnode)
      +
      102  continue;
      +
      103  if (!hwloc_bitmap_isset(nodeset, node->os_index))
      +
      104  continue;
      +
      105  mask[node->os_index/sizeof(*mask)/8] |= 1UL << (node->os_index % (sizeof(*mask)*8));
      +
      106  if (outmaxnode == (unsigned long) -1 || outmaxnode < node->os_index)
      +
      107  outmaxnode = node->os_index;
      +
      108  }
      +
      109 
      +
      110  *maxnode = outmaxnode+1;
      +
      111  return 0;
      +
      112 }
      +
      113 
      +
      123 static __hwloc_inline int
      + +
      125  const unsigned long *mask, unsigned long maxnode)
      +
      126 {
      +
      127  int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +
      128  hwloc_obj_t node = NULL;
      +
      129  hwloc_bitmap_zero(cpuset);
      +
      130  while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
      +
      131  if (node->os_index < maxnode
      +
      132  && (mask[node->os_index/sizeof(*mask)/8] & (1UL << (node->os_index % (sizeof(*mask)*8)))))
      +
      133  hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
      +
      134  return 0;
      +
      135 }
      +
      136 
      +
      146 static __hwloc_inline int
      + +
      148  const unsigned long *mask, unsigned long maxnode)
      +
      149 {
      +
      150  int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +
      151  hwloc_obj_t node = NULL;
      +
      152  hwloc_bitmap_zero(nodeset);
      +
      153  while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
      +
      154  if (node->os_index < maxnode
      +
      155  && (mask[node->os_index/sizeof(*mask)/8] & (1UL << (node->os_index % (sizeof(*mask)*8)))))
      +
      156  hwloc_bitmap_set(nodeset, node->os_index);
      +
      157  return 0;
      +
      158 }
      +
      159 
      +
      189 static __hwloc_inline struct bitmask *
      +
      190 hwloc_cpuset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset) __hwloc_attribute_malloc;
      +
      191 static __hwloc_inline struct bitmask *
      + +
      193 {
      +
      194  int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +
      195  hwloc_obj_t node = NULL;
      +
      196  struct bitmask *bitmask = numa_allocate_cpumask();
      +
      197  if (!bitmask)
      +
      198  return NULL;
      +
      199  while ((node = hwloc_get_next_obj_covering_cpuset_by_depth(topology, cpuset, depth, node)) != NULL)
      +
      200  if (node->attr->numanode.local_memory)
      +
      201  numa_bitmask_setbit(bitmask, node->os_index);
      +
      202  return bitmask;
      +
      203 }
      +
      204 
      +
      214 static __hwloc_inline struct bitmask *
      +
      215 hwloc_nodeset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset) __hwloc_attribute_malloc;
      +
      216 static __hwloc_inline struct bitmask *
      + +
      218 {
      +
      219  int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +
      220  hwloc_obj_t node = NULL;
      +
      221  struct bitmask *bitmask = numa_allocate_cpumask();
      +
      222  if (!bitmask)
      +
      223  return NULL;
      +
      224  while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
      +
      225  if (hwloc_bitmap_isset(nodeset, node->os_index) && node->attr->numanode.local_memory)
      +
      226  numa_bitmask_setbit(bitmask, node->os_index);
      +
      227  return bitmask;
      +
      228 }
      +
      229 
      +
      235 static __hwloc_inline int
      + +
      237  const struct bitmask *bitmask)
      +
      238 {
      +
      239  int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +
      240  hwloc_obj_t node = NULL;
      +
      241  hwloc_bitmap_zero(cpuset);
      +
      242  while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
      +
      243  if (numa_bitmask_isbitset(bitmask, node->os_index))
      +
      244  hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
      +
      245  return 0;
      +
      246 }
      +
      247 
      +
      253 static __hwloc_inline int
      + +
      255  const struct bitmask *bitmask)
      +
      256 {
      +
      257  int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +
      258  hwloc_obj_t node = NULL;
      +
      259  hwloc_bitmap_zero(nodeset);
      +
      260  while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
      +
      261  if (numa_bitmask_isbitset(bitmask, node->os_index))
      +
      262  hwloc_bitmap_set(nodeset, node->os_index);
      +
      263  return 0;
      +
      264 }
      +
      265 
      +
      269 #ifdef __cplusplus
      +
      270 } /* extern "C" */
      +
      271 #endif
      +
      272 
      +
      273 
      +
      274 #endif /* HWLOC_LINUX_NUMA_H */
      +
      hwloc_const_bitmap_t hwloc_const_cpuset_t
      A non-modifiable hwloc_cpuset_t.
      Definition: hwloc.h:142
      +
      hwloc_const_bitmap_t hwloc_const_nodeset_t
      A non-modifiable hwloc_nodeset_t.
      Definition: hwloc.h:160
      +
      hwloc_bitmap_t hwloc_nodeset_t
      A node set is a bitmap whose bits are set according to NUMA memory node physical OS indexes.
      Definition: hwloc.h:157
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_NUMANODE
      NUMA node. An object that contains memory that is directly and byte-accessible to the host processors...
      Definition: hwloc.h:236
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_get_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the depth of objects of type type.
      +
      static hwloc_obj_t hwloc_get_next_obj_by_depth(hwloc_topology_t topology, int depth, hwloc_obj_t prev)
      Returns the next object at depth depth.
      +
      static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, hwloc_obj_t prev)
      Iterate through same-depth objects covering at least CPU set set.
      Definition: helper.h:321
      +
      int hwloc_bitmap_set(hwloc_bitmap_t bitmap, unsigned id)
      Add index id in bitmap bitmap.
      +
      int hwloc_bitmap_isset(hwloc_const_bitmap_t bitmap, unsigned id)
      Test whether index id is part of bitmap bitmap.
      +
      int hwloc_bitmap_or(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Or bitmaps bitmap1 and bitmap2 and store the result in bitmap res.
      +
      void hwloc_bitmap_zero(hwloc_bitmap_t bitmap)
      Empty the bitmap bitmap.
      +
      static int hwloc_cpuset_from_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_cpuset_t cpuset, const unsigned long *mask, unsigned long maxnode)
      Convert the array of unsigned long mask into hwloc CPU set.
      Definition: linux-libnuma.h:124
      +
      static int hwloc_nodeset_to_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, unsigned long *mask, unsigned long *maxnode)
      Convert hwloc NUMA node set nodeset into the array of unsigned long mask.
      Definition: linux-libnuma.h:89
      +
      static int hwloc_nodeset_from_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_nodeset_t nodeset, const unsigned long *mask, unsigned long maxnode)
      Convert the array of unsigned long mask into hwloc NUMA node set.
      Definition: linux-libnuma.h:147
      +
      static int hwloc_cpuset_to_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, unsigned long *mask, unsigned long *maxnode)
      Convert hwloc CPU set cpuset into the array of unsigned long mask.
      Definition: linux-libnuma.h:55
      +
      static int hwloc_cpuset_from_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_cpuset_t cpuset, const struct bitmask *bitmask)
      Convert libnuma bitmask bitmask into hwloc CPU set cpuset.
      Definition: linux-libnuma.h:236
      +
      static int hwloc_nodeset_from_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_nodeset_t nodeset, const struct bitmask *bitmask)
      Convert libnuma bitmask bitmask into hwloc NUMA node set nodeset.
      Definition: linux-libnuma.h:254
      +
      static struct bitmask * hwloc_cpuset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset)
      Convert hwloc CPU set cpuset into the returned libnuma bitmask.
      Definition: linux-libnuma.h:192
      +
      static struct bitmask * hwloc_nodeset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset)
      Convert hwloc NUMA node set nodeset into the returned libnuma bitmask.
      Definition: linux-libnuma.h:217
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      unsigned os_index
      OS-provided physical index number. It is not guaranteed unique across the entire machine,...
      Definition: hwloc.h:401
      +
      hwloc_cpuset_t cpuset
      CPUs covered by this object.
      Definition: hwloc.h:512
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj_attr_u::hwloc_numanode_attr_s numanode
      +
      hwloc_uint64_t local_memory
      Local memory (in bytes)
      Definition: hwloc.h:602
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00152_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00152_source.html new file mode 100644 index 0000000000..85889ec7f5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00152_source.html @@ -0,0 +1,86 @@ + + + + + + + +Hardware Locality (hwloc): windows.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      windows.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2021 Inria. All rights reserved.
      +
      3  * See COPYING in top-level directory.
      +
      4  */
      +
      5 
      +
      13 #ifndef HWLOC_WINDOWS_H
      +
      14 #define HWLOC_WINDOWS_H
      +
      15 
      +
      16 #include "hwloc.h"
      +
      17 
      +
      18 
      +
      19 #ifdef __cplusplus
      +
      20 extern "C" {
      +
      21 #endif
      +
      22 
      +
      23 
      +
      50 HWLOC_DECLSPEC int hwloc_windows_get_nr_processor_groups(hwloc_topology_t topology, unsigned long flags);
      +
      51 
      +
      66 HWLOC_DECLSPEC int hwloc_windows_get_processor_group_cpuset(hwloc_topology_t topology, unsigned pg_index, hwloc_cpuset_t cpuset, unsigned long flags);
      +
      67 
      +
      71 #ifdef __cplusplus
      +
      72 } /* extern "C" */
      +
      73 #endif
      +
      74 
      +
      75 
      +
      76 #endif /* HWLOC_WINDOWS_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_windows_get_processor_group_cpuset(hwloc_topology_t topology, unsigned pg_index, hwloc_cpuset_t cpuset, unsigned long flags)
      Get the CPU-set of a Windows processor group.
      +
      int hwloc_windows_get_nr_processor_groups(hwloc_topology_t topology, unsigned long flags)
      Get the number of Windows processor groups.
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00155_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00155_source.html new file mode 100644 index 0000000000..83d15f1d7d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00155_source.html @@ -0,0 +1,155 @@ + + + + + + + +Hardware Locality (hwloc): glibc-sched.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      glibc-sched.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2009 CNRS
      +
      3  * Copyright © 2009-2020 Inria. All rights reserved.
      +
      4  * Copyright © 2009-2011 Université Bordeaux
      +
      5  * Copyright © 2011 Cisco Systems, Inc. All rights reserved.
      +
      6  * See COPYING in top-level directory.
      +
      7  */
      +
      8 
      +
      17 #ifndef HWLOC_GLIBC_SCHED_H
      +
      18 #define HWLOC_GLIBC_SCHED_H
      +
      19 
      +
      20 #include "hwloc.h"
      +
      21 #include "hwloc/helper.h"
      +
      22 
      +
      23 #include <assert.h>
      +
      24 
      +
      25 #if !defined _GNU_SOURCE || (!defined _SCHED_H && !defined _SCHED_H_) || (!defined CPU_SETSIZE && !defined sched_priority)
      +
      26 #error Please make sure to include sched.h before including glibc-sched.h, and define _GNU_SOURCE before any inclusion of sched.h
      +
      27 #endif
      +
      28 
      +
      29 
      +
      30 #ifdef __cplusplus
      +
      31 extern "C" {
      +
      32 #endif
      +
      33 
      +
      34 
      +
      35 #ifdef HWLOC_HAVE_CPU_SET
      +
      36 
      +
      37 
      +
      56 static __hwloc_inline int
      + +
      58  cpu_set_t *schedset, size_t schedsetsize)
      +
      59 {
      +
      60 #ifdef CPU_ZERO_S
      +
      61  unsigned cpu;
      +
      62  CPU_ZERO_S(schedsetsize, schedset);
      +
      63  hwloc_bitmap_foreach_begin(cpu, hwlocset)
      +
      64  CPU_SET_S(cpu, schedsetsize, schedset);
      + +
      66 #else /* !CPU_ZERO_S */
      +
      67  unsigned cpu;
      +
      68  CPU_ZERO(schedset);
      +
      69  assert(schedsetsize == sizeof(cpu_set_t));
      +
      70  hwloc_bitmap_foreach_begin(cpu, hwlocset)
      +
      71  CPU_SET(cpu, schedset);
      + +
      73 #endif /* !CPU_ZERO_S */
      +
      74  return 0;
      +
      75 }
      +
      76 
      +
      84 static __hwloc_inline int
      +
      85 hwloc_cpuset_from_glibc_sched_affinity(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t hwlocset,
      +
      86  const cpu_set_t *schedset, size_t schedsetsize)
      +
      87 {
      +
      88  int cpu;
      +
      89 #ifdef CPU_ZERO_S
      +
      90  int count;
      +
      91 #endif
      +
      92  hwloc_bitmap_zero(hwlocset);
      +
      93 #ifdef CPU_ZERO_S
      +
      94  count = CPU_COUNT_S(schedsetsize, schedset);
      +
      95  cpu = 0;
      +
      96  while (count) {
      +
      97  if (CPU_ISSET_S(cpu, schedsetsize, schedset)) {
      +
      98  hwloc_bitmap_set(hwlocset, cpu);
      +
      99  count--;
      +
      100  }
      +
      101  cpu++;
      +
      102  }
      +
      103 #else /* !CPU_ZERO_S */
      +
      104  /* sched.h does not support dynamic cpu_set_t (introduced in glibc 2.7),
      +
      105  * assume we have a very old interface without CPU_COUNT (added in 2.6)
      +
      106  */
      +
      107  assert(schedsetsize == sizeof(cpu_set_t));
      +
      108  for(cpu=0; cpu<CPU_SETSIZE; cpu++)
      +
      109  if (CPU_ISSET(cpu, schedset))
      +
      110  hwloc_bitmap_set(hwlocset, cpu);
      +
      111 #endif /* !CPU_ZERO_S */
      +
      112  return 0;
      +
      113 }
      +
      114 
      +
      118 #endif /* CPU_SET */
      +
      119 
      +
      120 
      +
      121 #ifdef __cplusplus
      +
      122 } /* extern "C" */
      +
      123 #endif
      +
      124 
      +
      125 
      +
      126 #endif /* HWLOC_GLIBC_SCHED_H */
      +
      hwloc_const_bitmap_t hwloc_const_cpuset_t
      A non-modifiable hwloc_cpuset_t.
      Definition: hwloc.h:142
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_bitmap_set(hwloc_bitmap_t bitmap, unsigned id)
      Add index id in bitmap bitmap.
      +
      #define hwloc_bitmap_foreach_begin(id, bitmap)
      Loop macro iterating on bitmap bitmap.
      Definition: bitmap.h:370
      +
      void hwloc_bitmap_zero(hwloc_bitmap_t bitmap)
      Empty the bitmap bitmap.
      +
      #define hwloc_bitmap_foreach_end()
      End of loop macro iterating on a bitmap.
      Definition: bitmap.h:384
      +
      static int hwloc_cpuset_to_glibc_sched_affinity(hwloc_topology_t topology, hwloc_const_cpuset_t hwlocset, cpu_set_t *schedset, size_t schedsetsize)
      Convert hwloc CPU set toposet into glibc sched affinity CPU set schedset.
      Definition: glibc-sched.h:57
      +
      static int hwloc_cpuset_from_glibc_sched_affinity(hwloc_topology_t topology, hwloc_cpuset_t hwlocset, const cpu_set_t *schedset, size_t schedsetsize)
      Convert glibc sched affinity CPU set schedset into hwloc CPU set.
      Definition: glibc-sched.h:85
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00158_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00158_source.html new file mode 100644 index 0000000000..e1cf34db44 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00158_source.html @@ -0,0 +1,263 @@ + + + + + + + +Hardware Locality (hwloc): opencl.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      opencl.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2012-2021 Inria. All rights reserved.
      +
      3  * Copyright © 2013, 2018 Université Bordeaux. All right reserved.
      +
      4  * See COPYING in top-level directory.
      +
      5  */
      +
      6 
      +
      14 #ifndef HWLOC_OPENCL_H
      +
      15 #define HWLOC_OPENCL_H
      +
      16 
      +
      17 #include "hwloc.h"
      +
      18 #include "hwloc/autogen/config.h"
      +
      19 #include "hwloc/helper.h"
      +
      20 #ifdef HWLOC_LINUX_SYS
      +
      21 #include "hwloc/linux.h"
      +
      22 #endif
      +
      23 
      +
      24 #ifdef __APPLE__
      +
      25 #include <OpenCL/cl.h>
      +
      26 #else
      +
      27 #include <CL/cl.h>
      +
      28 #endif
      +
      29 
      +
      30 #include <stdio.h>
      +
      31 
      +
      32 
      +
      33 #ifdef __cplusplus
      +
      34 extern "C" {
      +
      35 #endif
      +
      36 
      +
      37 
      +
      38 /* OpenCL extensions aren't always shipped with default headers, and
      +
      39  * they don't always reflect what the installed implementations support.
      +
      40  * Try everything and let the implementation return errors when non supported.
      +
      41  */
      +
      42 /* Copyright (c) 2008-2018 The Khronos Group Inc. */
      +
      43 
      +
      44 /* needs "cl_amd_device_attribute_query" device extension, but not strictly required for clGetDeviceInfo() */
      +
      45 #define HWLOC_CL_DEVICE_TOPOLOGY_AMD 0x4037
      +
      46 typedef union {
      +
      47  struct { cl_uint type; cl_uint data[5]; } raw;
      +
      48  struct { cl_uint type; cl_char unused[17]; cl_char bus; cl_char device; cl_char function; } pcie;
      + +
      50 #define HWLOC_CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1
      +
      51 
      +
      52 /* needs "cl_nv_device_attribute_query" device extension, but not strictly required for clGetDeviceInfo() */
      +
      53 #define HWLOC_CL_DEVICE_PCI_BUS_ID_NV 0x4008
      +
      54 #define HWLOC_CL_DEVICE_PCI_SLOT_ID_NV 0x4009
      +
      55 #define HWLOC_CL_DEVICE_PCI_DOMAIN_ID_NV 0x400A
      +
      56 
      +
      57 
      +
      73 static __hwloc_inline int
      + +
      75  unsigned *domain, unsigned *bus, unsigned *dev, unsigned *func)
      +
      76 {
      + +
      78  cl_uint nvbus, nvslot, nvdomain;
      +
      79  cl_int clret;
      +
      80 
      +
      81  clret = clGetDeviceInfo(device, HWLOC_CL_DEVICE_TOPOLOGY_AMD, sizeof(amdtopo), &amdtopo, NULL);
      +
      82  if (CL_SUCCESS == clret
      +
      83  && HWLOC_CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD == amdtopo.raw.type) {
      +
      84  *domain = 0; /* can't do anything better */
      +
      85  /* cl_device_topology_amd stores bus ID in cl_char, dont convert those signed char directly to unsigned int */
      +
      86  *bus = (unsigned) (unsigned char) amdtopo.pcie.bus;
      +
      87  *dev = (unsigned) (unsigned char) amdtopo.pcie.device;
      +
      88  *func = (unsigned) (unsigned char) amdtopo.pcie.function;
      +
      89  return 0;
      +
      90  }
      +
      91 
      +
      92  clret = clGetDeviceInfo(device, HWLOC_CL_DEVICE_PCI_BUS_ID_NV, sizeof(nvbus), &nvbus, NULL);
      +
      93  if (CL_SUCCESS == clret) {
      +
      94  clret = clGetDeviceInfo(device, HWLOC_CL_DEVICE_PCI_SLOT_ID_NV, sizeof(nvslot), &nvslot, NULL);
      +
      95  if (CL_SUCCESS == clret) {
      +
      96  clret = clGetDeviceInfo(device, HWLOC_CL_DEVICE_PCI_DOMAIN_ID_NV, sizeof(nvdomain), &nvdomain, NULL);
      +
      97  if (CL_SUCCESS == clret) { /* available since CUDA 10.2 */
      +
      98  *domain = nvdomain;
      +
      99  } else {
      +
      100  *domain = 0;
      +
      101  }
      +
      102  *bus = nvbus & 0xff;
      +
      103  /* non-documented but used in many other projects */
      +
      104  *dev = nvslot >> 3;
      +
      105  *func = nvslot & 0x7;
      +
      106  return 0;
      +
      107  }
      +
      108  }
      +
      109 
      +
      110  return -1;
      +
      111 }
      +
      112 
      +
      130 static __hwloc_inline int
      +
      131 hwloc_opencl_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      132  cl_device_id device __hwloc_attribute_unused,
      +
      133  hwloc_cpuset_t set)
      +
      134 {
      +
      135 #if (defined HWLOC_LINUX_SYS)
      +
      136  /* If we're on Linux, try AMD/NVIDIA extensions + the sysfs mechanism to get the local cpus */
      +
      137 #define HWLOC_OPENCL_DEVICE_SYSFS_PATH_MAX 128
      +
      138  char path[HWLOC_OPENCL_DEVICE_SYSFS_PATH_MAX];
      +
      139  unsigned pcidomain, pcibus, pcidev, pcifunc;
      +
      140 
      +
      141  if (!hwloc_topology_is_thissystem(topology)) {
      +
      142  errno = EINVAL;
      +
      143  return -1;
      +
      144  }
      +
      145 
      +
      146  if (hwloc_opencl_get_device_pci_busid(device, &pcidomain, &pcibus, &pcidev, &pcifunc) < 0) {
      + +
      148  return 0;
      +
      149  }
      +
      150 
      +
      151  sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/local_cpus", pcidomain, pcibus, pcidev, pcifunc);
      +
      152  if (hwloc_linux_read_path_as_cpumask(path, set) < 0
      +
      153  || hwloc_bitmap_iszero(set))
      + +
      155 #else
      +
      156  /* Non-Linux systems simply get a full cpuset */
      + +
      158 #endif
      +
      159  return 0;
      +
      160 }
      +
      161 
      +
      177 static __hwloc_inline hwloc_obj_t
      + +
      179  unsigned platform_index, unsigned device_index)
      +
      180 {
      +
      181  unsigned x = (unsigned) -1, y = (unsigned) -1;
      +
      182  hwloc_obj_t osdev = NULL;
      +
      183  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      184  if (HWLOC_OBJ_OSDEV_COPROC == osdev->attr->osdev.type
      +
      185  && osdev->name
      +
      186  && sscanf(osdev->name, "opencl%ud%u", &x, &y) == 2
      +
      187  && platform_index == x && device_index == y)
      +
      188  return osdev;
      +
      189  }
      +
      190  return NULL;
      +
      191 }
      +
      192 
      +
      214 static __hwloc_inline hwloc_obj_t
      +
      215 hwloc_opencl_get_device_osdev(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      216  cl_device_id device __hwloc_attribute_unused)
      +
      217 {
      +
      218  hwloc_obj_t osdev;
      +
      219  unsigned pcidomain, pcibus, pcidevice, pcifunc;
      +
      220 
      +
      221  if (hwloc_opencl_get_device_pci_busid(device, &pcidomain, &pcibus, &pcidevice, &pcifunc) < 0) {
      +
      222  errno = EINVAL;
      +
      223  return NULL;
      +
      224  }
      +
      225 
      +
      226  osdev = NULL;
      +
      227  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      228  hwloc_obj_t pcidev = osdev->parent;
      +
      229  if (strncmp(osdev->name, "opencl", 6))
      +
      230  continue;
      +
      231  if (pcidev
      +
      232  && pcidev->type == HWLOC_OBJ_PCI_DEVICE
      +
      233  && pcidev->attr->pcidev.domain == pcidomain
      +
      234  && pcidev->attr->pcidev.bus == pcibus
      +
      235  && pcidev->attr->pcidev.dev == pcidevice
      +
      236  && pcidev->attr->pcidev.func == pcifunc)
      +
      237  return osdev;
      +
      238  /* if PCI are filtered out, we need a info attr to match on */
      +
      239  }
      +
      240 
      +
      241  return NULL;
      +
      242 }
      +
      243 
      +
      247 #ifdef __cplusplus
      +
      248 } /* extern "C" */
      +
      249 #endif
      +
      250 
      +
      251 
      +
      252 #endif /* HWLOC_OPENCL_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_OSDEV_COPROC
      Operating system co-processor device. For instance "opencl0d0" for a OpenCL device,...
      Definition: hwloc.h:353
      +
      @ HWLOC_OBJ_PCI_DEVICE
      PCI device (filtered out by default).
      Definition: hwloc.h:269
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
      Does the topology context come from this system?
      +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
      Get complete CPU set.
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      int hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
      Copy the contents of bitmap src into the already allocated bitmap dst.
      +
      int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set)
      Convert a linux kernel cpumask file path into a hwloc bitmap set.
      +
      static int hwloc_opencl_get_device_pci_busid(cl_device_id device, unsigned *domain, unsigned *bus, unsigned *dev, unsigned *func)
      Return the domain, bus and device IDs of the OpenCL device device.
      Definition: opencl.h:74
      +
      static int hwloc_opencl_get_device_cpuset(hwloc_topology_t topology, cl_device_id device, hwloc_cpuset_t set)
      Get the CPU set of processors that are physically close to OpenCL device device.
      Definition: opencl.h:131
      +
      static hwloc_obj_t hwloc_opencl_get_device_osdev(hwloc_topology_t topology, cl_device_id device)
      Get the hwloc OS device object corresponding to OpenCL device deviceX.
      Definition: opencl.h:215
      +
      static hwloc_obj_t hwloc_opencl_get_device_osdev_by_index(hwloc_topology_t topology, unsigned platform_index, unsigned device_index)
      Get the hwloc OS device object corresponding to the OpenCL device for the given indexes.
      Definition: opencl.h:178
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj * parent
      Parent, NULL if root (Machine object)
      Definition: hwloc.h:446
      +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      unsigned char dev
      Definition: hwloc.h:639
      +
      unsigned char func
      Definition: hwloc.h:639
      +
      unsigned short domain
      Definition: hwloc.h:635
      +
      unsigned char bus
      Definition: hwloc.h:639
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      Definition: opencl.h:46
      +
      cl_char device
      Definition: opencl.h:48
      +
      struct hwloc_cl_device_topology_amd::@4 pcie
      +
      cl_char bus
      Definition: opencl.h:48
      +
      cl_char function
      Definition: opencl.h:48
      +
      struct hwloc_cl_device_topology_amd::@3 raw
      +
      cl_uint type
      Definition: opencl.h:47
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00161_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00161_source.html new file mode 100644 index 0000000000..9b20facf1d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00161_source.html @@ -0,0 +1,225 @@ + + + + + + + +Hardware Locality (hwloc): cuda.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      cuda.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2010-2021 Inria. All rights reserved.
      +
      3  * Copyright © 2010-2011 Université Bordeaux
      +
      4  * Copyright © 2011 Cisco Systems, Inc. All rights reserved.
      +
      5  * See COPYING in top-level directory.
      +
      6  */
      +
      7 
      +
      16 #ifndef HWLOC_CUDA_H
      +
      17 #define HWLOC_CUDA_H
      +
      18 
      +
      19 #include "hwloc.h"
      +
      20 #include "hwloc/autogen/config.h"
      +
      21 #include "hwloc/helper.h"
      +
      22 #ifdef HWLOC_LINUX_SYS
      +
      23 #include "hwloc/linux.h"
      +
      24 #endif
      +
      25 
      +
      26 #include <cuda.h>
      +
      27 
      +
      28 
      +
      29 #ifdef __cplusplus
      +
      30 extern "C" {
      +
      31 #endif
      +
      32 
      +
      33 
      +
      46 static __hwloc_inline int
      +
      47 hwloc_cuda_get_device_pci_ids(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      48  CUdevice cudevice, int *domain, int *bus, int *dev)
      +
      49 {
      +
      50  CUresult cres;
      +
      51 
      +
      52 #if CUDA_VERSION >= 4000
      +
      53  cres = cuDeviceGetAttribute(domain, CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID, cudevice);
      +
      54  if (cres != CUDA_SUCCESS) {
      +
      55  errno = ENOSYS;
      +
      56  return -1;
      +
      57  }
      +
      58 #else
      +
      59  *domain = 0;
      +
      60 #endif
      +
      61  cres = cuDeviceGetAttribute(bus, CU_DEVICE_ATTRIBUTE_PCI_BUS_ID, cudevice);
      +
      62  if (cres != CUDA_SUCCESS) {
      +
      63  errno = ENOSYS;
      +
      64  return -1;
      +
      65  }
      +
      66  cres = cuDeviceGetAttribute(dev, CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID, cudevice);
      +
      67  if (cres != CUDA_SUCCESS) {
      +
      68  errno = ENOSYS;
      +
      69  return -1;
      +
      70  }
      +
      71 
      +
      72  return 0;
      +
      73 }
      +
      74 
      +
      91 static __hwloc_inline int
      +
      92 hwloc_cuda_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      93  CUdevice cudevice, hwloc_cpuset_t set)
      +
      94 {
      +
      95 #ifdef HWLOC_LINUX_SYS
      +
      96  /* If we're on Linux, use the sysfs mechanism to get the local cpus */
      +
      97 #define HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX 128
      +
      98  char path[HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX];
      +
      99  int domainid, busid, deviceid;
      +
      100 
      +
      101  if (hwloc_cuda_get_device_pci_ids(topology, cudevice, &domainid, &busid, &deviceid))
      +
      102  return -1;
      +
      103 
      +
      104  if (!hwloc_topology_is_thissystem(topology)) {
      +
      105  errno = EINVAL;
      +
      106  return -1;
      +
      107  }
      +
      108 
      +
      109  sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.0/local_cpus", domainid, busid, deviceid);
      +
      110  if (hwloc_linux_read_path_as_cpumask(path, set) < 0
      +
      111  || hwloc_bitmap_iszero(set))
      + +
      113 #else
      +
      114  /* Non-Linux systems simply get a full cpuset */
      + +
      116 #endif
      +
      117  return 0;
      +
      118 }
      +
      119 
      +
      130 static __hwloc_inline hwloc_obj_t
      +
      131 hwloc_cuda_get_device_pcidev(hwloc_topology_t topology, CUdevice cudevice)
      +
      132 {
      +
      133  int domain, bus, dev;
      +
      134 
      +
      135  if (hwloc_cuda_get_device_pci_ids(topology, cudevice, &domain, &bus, &dev))
      +
      136  return NULL;
      +
      137 
      +
      138  return hwloc_get_pcidev_by_busid(topology, domain, bus, dev, 0);
      +
      139 }
      +
      140 
      +
      156 static __hwloc_inline hwloc_obj_t
      +
      157 hwloc_cuda_get_device_osdev(hwloc_topology_t topology, CUdevice cudevice)
      +
      158 {
      +
      159  hwloc_obj_t osdev = NULL;
      +
      160  int domain, bus, dev;
      +
      161 
      +
      162  if (hwloc_cuda_get_device_pci_ids(topology, cudevice, &domain, &bus, &dev))
      +
      163  return NULL;
      +
      164 
      +
      165  osdev = NULL;
      +
      166  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      167  hwloc_obj_t pcidev = osdev->parent;
      +
      168  if (strncmp(osdev->name, "cuda", 4))
      +
      169  continue;
      +
      170  if (pcidev
      +
      171  && pcidev->type == HWLOC_OBJ_PCI_DEVICE
      +
      172  && (int) pcidev->attr->pcidev.domain == domain
      +
      173  && (int) pcidev->attr->pcidev.bus == bus
      +
      174  && (int) pcidev->attr->pcidev.dev == dev
      +
      175  && pcidev->attr->pcidev.func == 0)
      +
      176  return osdev;
      +
      177  /* if PCI are filtered out, we need a info attr to match on */
      +
      178  }
      +
      179 
      +
      180  return NULL;
      +
      181 }
      +
      182 
      +
      198 static __hwloc_inline hwloc_obj_t
      + +
      200 {
      +
      201  hwloc_obj_t osdev = NULL;
      +
      202  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      203  if (HWLOC_OBJ_OSDEV_COPROC == osdev->attr->osdev.type
      +
      204  && osdev->name
      +
      205  && !strncmp("cuda", osdev->name, 4)
      +
      206  && atoi(osdev->name + 4) == (int) idx)
      +
      207  return osdev;
      +
      208  }
      +
      209  return NULL;
      +
      210 }
      +
      211 
      +
      215 #ifdef __cplusplus
      +
      216 } /* extern "C" */
      +
      217 #endif
      +
      218 
      +
      219 
      +
      220 #endif /* HWLOC_CUDA_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_OSDEV_COPROC
      Operating system co-processor device. For instance "opencl0d0" for a OpenCL device,...
      Definition: hwloc.h:353
      +
      @ HWLOC_OBJ_PCI_DEVICE
      PCI device (filtered out by default).
      Definition: hwloc.h:269
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
      Does the topology context come from this system?
      +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
      Get complete CPU set.
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      static hwloc_obj_t hwloc_get_pcidev_by_busid(hwloc_topology_t topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
      Find the PCI device object matching the PCI bus id given domain, bus device and function PCI bus id.
      Definition: helper.h:1157
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      int hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
      Copy the contents of bitmap src into the already allocated bitmap dst.
      +
      int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set)
      Convert a linux kernel cpumask file path into a hwloc bitmap set.
      +
      static int hwloc_cuda_get_device_pci_ids(hwloc_topology_t topology, CUdevice cudevice, int *domain, int *bus, int *dev)
      Return the domain, bus and device IDs of the CUDA device cudevice.
      Definition: cuda.h:47
      +
      static hwloc_obj_t hwloc_cuda_get_device_pcidev(hwloc_topology_t topology, CUdevice cudevice)
      Get the hwloc PCI device object corresponding to the CUDA device cudevice.
      Definition: cuda.h:131
      +
      static hwloc_obj_t hwloc_cuda_get_device_osdev_by_index(hwloc_topology_t topology, unsigned idx)
      Get the hwloc OS device object corresponding to the CUDA device whose index is idx.
      Definition: cuda.h:199
      +
      static hwloc_obj_t hwloc_cuda_get_device_osdev(hwloc_topology_t topology, CUdevice cudevice)
      Get the hwloc OS device object corresponding to CUDA device cudevice.
      Definition: cuda.h:157
      +
      static int hwloc_cuda_get_device_cpuset(hwloc_topology_t topology, CUdevice cudevice, hwloc_cpuset_t set)
      Get the CPU set of processors that are physically close to device cudevice.
      Definition: cuda.h:92
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj * parent
      Parent, NULL if root (Machine object)
      Definition: hwloc.h:446
      +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      unsigned char dev
      Definition: hwloc.h:639
      +
      unsigned char func
      Definition: hwloc.h:639
      +
      unsigned short domain
      Definition: hwloc.h:635
      +
      unsigned char bus
      Definition: hwloc.h:639
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00164_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00164_source.html new file mode 100644 index 0000000000..e5c42acdc4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00164_source.html @@ -0,0 +1,186 @@ + + + + + + + +Hardware Locality (hwloc): cudart.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      cudart.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2010-2021 Inria. All rights reserved.
      +
      3  * Copyright © 2010-2011 Université Bordeaux
      +
      4  * Copyright © 2011 Cisco Systems, Inc. All rights reserved.
      +
      5  * See COPYING in top-level directory.
      +
      6  */
      +
      7 
      +
      16 #ifndef HWLOC_CUDART_H
      +
      17 #define HWLOC_CUDART_H
      +
      18 
      +
      19 #include "hwloc.h"
      +
      20 #include "hwloc/autogen/config.h"
      +
      21 #include "hwloc/helper.h"
      +
      22 #ifdef HWLOC_LINUX_SYS
      +
      23 #include "hwloc/linux.h"
      +
      24 #endif
      +
      25 
      +
      26 #include <cuda.h> /* for CUDA_VERSION */
      +
      27 #include <cuda_runtime_api.h>
      +
      28 
      +
      29 
      +
      30 #ifdef __cplusplus
      +
      31 extern "C" {
      +
      32 #endif
      +
      33 
      +
      34 
      +
      47 static __hwloc_inline int
      +
      48 hwloc_cudart_get_device_pci_ids(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      49  int idx, int *domain, int *bus, int *dev)
      +
      50 {
      +
      51  cudaError_t cerr;
      +
      52  struct cudaDeviceProp prop;
      +
      53 
      +
      54  cerr = cudaGetDeviceProperties(&prop, idx);
      +
      55  if (cerr) {
      +
      56  errno = ENOSYS;
      +
      57  return -1;
      +
      58  }
      +
      59 
      +
      60 #if CUDA_VERSION >= 4000
      +
      61  *domain = prop.pciDomainID;
      +
      62 #else
      +
      63  *domain = 0;
      +
      64 #endif
      +
      65 
      +
      66  *bus = prop.pciBusID;
      +
      67  *dev = prop.pciDeviceID;
      +
      68 
      +
      69  return 0;
      +
      70 }
      +
      71 
      +
      88 static __hwloc_inline int
      +
      89 hwloc_cudart_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      90  int idx, hwloc_cpuset_t set)
      +
      91 {
      +
      92 #ifdef HWLOC_LINUX_SYS
      +
      93  /* If we're on Linux, use the sysfs mechanism to get the local cpus */
      +
      94 #define HWLOC_CUDART_DEVICE_SYSFS_PATH_MAX 128
      +
      95  char path[HWLOC_CUDART_DEVICE_SYSFS_PATH_MAX];
      +
      96  int domain, bus, dev;
      +
      97 
      +
      98  if (hwloc_cudart_get_device_pci_ids(topology, idx, &domain, &bus, &dev))
      +
      99  return -1;
      +
      100 
      +
      101  if (!hwloc_topology_is_thissystem(topology)) {
      +
      102  errno = EINVAL;
      +
      103  return -1;
      +
      104  }
      +
      105 
      +
      106  sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.0/local_cpus", (unsigned) domain, (unsigned) bus, (unsigned) dev);
      +
      107  if (hwloc_linux_read_path_as_cpumask(path, set) < 0
      +
      108  || hwloc_bitmap_iszero(set))
      + +
      110 #else
      +
      111  /* Non-Linux systems simply get a full cpuset */
      + +
      113 #endif
      +
      114  return 0;
      +
      115 }
      +
      116 
      +
      127 static __hwloc_inline hwloc_obj_t
      + +
      129 {
      +
      130  int domain, bus, dev;
      +
      131 
      +
      132  if (hwloc_cudart_get_device_pci_ids(topology, idx, &domain, &bus, &dev))
      +
      133  return NULL;
      +
      134 
      +
      135  return hwloc_get_pcidev_by_busid(topology, domain, bus, dev, 0);
      +
      136 }
      +
      137 
      +
      155 static __hwloc_inline hwloc_obj_t
      + +
      157 {
      +
      158  hwloc_obj_t osdev = NULL;
      +
      159  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      160  if (HWLOC_OBJ_OSDEV_COPROC == osdev->attr->osdev.type
      +
      161  && osdev->name
      +
      162  && !strncmp("cuda", osdev->name, 4)
      +
      163  && atoi(osdev->name + 4) == (int) idx)
      +
      164  return osdev;
      +
      165  }
      +
      166  return NULL;
      +
      167 }
      +
      168 
      +
      172 #ifdef __cplusplus
      +
      173 } /* extern "C" */
      +
      174 #endif
      +
      175 
      +
      176 
      +
      177 #endif /* HWLOC_CUDART_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_OSDEV_COPROC
      Operating system co-processor device. For instance "opencl0d0" for a OpenCL device,...
      Definition: hwloc.h:353
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
      Does the topology context come from this system?
      +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
      Get complete CPU set.
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      static hwloc_obj_t hwloc_get_pcidev_by_busid(hwloc_topology_t topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
      Find the PCI device object matching the PCI bus id given domain, bus device and function PCI bus id.
      Definition: helper.h:1157
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      int hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
      Copy the contents of bitmap src into the already allocated bitmap dst.
      +
      int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set)
      Convert a linux kernel cpumask file path into a hwloc bitmap set.
      +
      static int hwloc_cudart_get_device_cpuset(hwloc_topology_t topology, int idx, hwloc_cpuset_t set)
      Get the CPU set of processors that are physically close to device idx.
      Definition: cudart.h:89
      +
      static hwloc_obj_t hwloc_cudart_get_device_osdev_by_index(hwloc_topology_t topology, unsigned idx)
      Get the hwloc OS device object corresponding to the CUDA device whose index is idx.
      Definition: cudart.h:156
      +
      static int hwloc_cudart_get_device_pci_ids(hwloc_topology_t topology, int idx, int *domain, int *bus, int *dev)
      Return the domain, bus and device IDs of the CUDA device whose index is idx.
      Definition: cudart.h:48
      +
      static hwloc_obj_t hwloc_cudart_get_device_pcidev(hwloc_topology_t topology, int idx)
      Get the hwloc PCI device object corresponding to the CUDA device whose index is idx.
      Definition: cudart.h:128
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00167_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00167_source.html new file mode 100644 index 0000000000..0b498e76e5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00167_source.html @@ -0,0 +1,203 @@ + + + + + + + +Hardware Locality (hwloc): nvml.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      nvml.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2012-2021 Inria. All rights reserved.
      +
      3  * See COPYING in top-level directory.
      +
      4  */
      +
      5 
      +
      13 #ifndef HWLOC_NVML_H
      +
      14 #define HWLOC_NVML_H
      +
      15 
      +
      16 #include "hwloc.h"
      +
      17 #include "hwloc/autogen/config.h"
      +
      18 #include "hwloc/helper.h"
      +
      19 #ifdef HWLOC_LINUX_SYS
      +
      20 #include "hwloc/linux.h"
      +
      21 #endif
      +
      22 
      +
      23 #include <nvml.h>
      +
      24 
      +
      25 
      +
      26 #ifdef __cplusplus
      +
      27 extern "C" {
      +
      28 #endif
      +
      29 
      +
      30 
      +
      55 static __hwloc_inline int
      +
      56 hwloc_nvml_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      57  nvmlDevice_t device, hwloc_cpuset_t set)
      +
      58 {
      +
      59 #ifdef HWLOC_LINUX_SYS
      +
      60  /* If we're on Linux, use the sysfs mechanism to get the local cpus */
      +
      61 #define HWLOC_NVML_DEVICE_SYSFS_PATH_MAX 128
      +
      62  char path[HWLOC_NVML_DEVICE_SYSFS_PATH_MAX];
      +
      63  nvmlReturn_t nvres;
      +
      64  nvmlPciInfo_t pci;
      +
      65 
      +
      66  if (!hwloc_topology_is_thissystem(topology)) {
      +
      67  errno = EINVAL;
      +
      68  return -1;
      +
      69  }
      +
      70 
      +
      71  nvres = nvmlDeviceGetPciInfo(device, &pci);
      +
      72  if (NVML_SUCCESS != nvres) {
      +
      73  errno = EINVAL;
      +
      74  return -1;
      +
      75  }
      +
      76 
      +
      77  sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.0/local_cpus", pci.domain, pci.bus, pci.device);
      +
      78  if (hwloc_linux_read_path_as_cpumask(path, set) < 0
      +
      79  || hwloc_bitmap_iszero(set))
      + +
      81 #else
      +
      82  /* Non-Linux systems simply get a full cpuset */
      + +
      84 #endif
      +
      85  return 0;
      +
      86 }
      +
      87 
      +
      101 static __hwloc_inline hwloc_obj_t
      + +
      103 {
      +
      104  hwloc_obj_t osdev = NULL;
      +
      105  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      106  if (HWLOC_OBJ_OSDEV_GPU == osdev->attr->osdev.type
      +
      107  && osdev->name
      +
      108  && !strncmp("nvml", osdev->name, 4)
      +
      109  && atoi(osdev->name + 4) == (int) idx)
      +
      110  return osdev;
      +
      111  }
      +
      112  return NULL;
      +
      113 }
      +
      114 
      +
      128 static __hwloc_inline hwloc_obj_t
      +
      129 hwloc_nvml_get_device_osdev(hwloc_topology_t topology, nvmlDevice_t device)
      +
      130 {
      +
      131  hwloc_obj_t osdev;
      +
      132  nvmlReturn_t nvres;
      +
      133  nvmlPciInfo_t pci;
      +
      134  char uuid[64];
      +
      135 
      +
      136  if (!hwloc_topology_is_thissystem(topology)) {
      +
      137  errno = EINVAL;
      +
      138  return NULL;
      +
      139  }
      +
      140 
      +
      141  nvres = nvmlDeviceGetPciInfo(device, &pci);
      +
      142  if (NVML_SUCCESS != nvres)
      +
      143  return NULL;
      +
      144 
      +
      145  nvres = nvmlDeviceGetUUID(device, uuid, sizeof(uuid));
      +
      146  if (NVML_SUCCESS != nvres)
      +
      147  uuid[0] = '\0';
      +
      148 
      +
      149  osdev = NULL;
      +
      150  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      151  hwloc_obj_t pcidev = osdev->parent;
      +
      152  const char *info;
      +
      153 
      +
      154  if (strncmp(osdev->name, "nvml", 4))
      +
      155  continue;
      +
      156 
      +
      157  if (pcidev
      +
      158  && pcidev->type == HWLOC_OBJ_PCI_DEVICE
      +
      159  && pcidev->attr->pcidev.domain == pci.domain
      +
      160  && pcidev->attr->pcidev.bus == pci.bus
      +
      161  && pcidev->attr->pcidev.dev == pci.device
      +
      162  && pcidev->attr->pcidev.func == 0)
      +
      163  return osdev;
      +
      164 
      +
      165  info = hwloc_obj_get_info_by_name(osdev, "NVIDIAUUID");
      +
      166  if (info && !strcmp(info, uuid))
      +
      167  return osdev;
      +
      168  }
      +
      169 
      +
      170  return NULL;
      +
      171 }
      +
      172 
      +
      176 #ifdef __cplusplus
      +
      177 } /* extern "C" */
      +
      178 #endif
      +
      179 
      +
      180 
      +
      181 #endif /* HWLOC_NVML_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_OSDEV_GPU
      Operating system GPU device. For instance ":0.0" for a GL display, "card0" for a Linux DRM device.
      Definition: hwloc.h:342
      +
      @ HWLOC_OBJ_PCI_DEVICE
      PCI device (filtered out by default).
      Definition: hwloc.h:269
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      static const char * hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name)
      Search the given key name in object infos and return the corresponding value.
      +
      int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
      Does the topology context come from this system?
      +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
      Get complete CPU set.
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      int hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
      Copy the contents of bitmap src into the already allocated bitmap dst.
      +
      int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set)
      Convert a linux kernel cpumask file path into a hwloc bitmap set.
      +
      static int hwloc_nvml_get_device_cpuset(hwloc_topology_t topology, nvmlDevice_t device, hwloc_cpuset_t set)
      Get the CPU set of processors that are physically close to NVML device device.
      Definition: nvml.h:56
      +
      static hwloc_obj_t hwloc_nvml_get_device_osdev_by_index(hwloc_topology_t topology, unsigned idx)
      Get the hwloc OS device object corresponding to the NVML device whose index is idx.
      Definition: nvml.h:102
      +
      static hwloc_obj_t hwloc_nvml_get_device_osdev(hwloc_topology_t topology, nvmlDevice_t device)
      Get the hwloc OS device object corresponding to NVML device device.
      Definition: nvml.h:129
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj * parent
      Parent, NULL if root (Machine object)
      Definition: hwloc.h:446
      +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      unsigned char dev
      Definition: hwloc.h:639
      +
      unsigned char func
      Definition: hwloc.h:639
      +
      unsigned short domain
      Definition: hwloc.h:635
      +
      unsigned char bus
      Definition: hwloc.h:639
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00170_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00170_source.html new file mode 100644 index 0000000000..8bbb9cc2db --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00170_source.html @@ -0,0 +1,219 @@ + + + + + + + +Hardware Locality (hwloc): rsmi.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      rsmi.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2012-2021 Inria. All rights reserved.
      +
      3  * Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved.
      +
      4  * Written by Advanced Micro Devices,
      +
      5  * See COPYING in top-level directory.
      +
      6  */
      +
      7 
      +
      15 #ifndef HWLOC_RSMI_H
      +
      16 #define HWLOC_RSMI_H
      +
      17 
      +
      18 #include "hwloc.h"
      +
      19 #include "hwloc/autogen/config.h"
      +
      20 #include "hwloc/helper.h"
      +
      21 #ifdef HWLOC_LINUX_SYS
      +
      22 #include "hwloc/linux.h"
      +
      23 #endif
      +
      24 
      +
      25 #include <rocm_smi/rocm_smi.h>
      +
      26 
      +
      27 
      +
      28 #ifdef __cplusplus
      +
      29 extern "C" {
      +
      30 #endif
      +
      31 
      +
      32 
      +
      59 static __hwloc_inline int
      +
      60 hwloc_rsmi_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      61  uint32_t dv_ind, hwloc_cpuset_t set)
      +
      62 {
      +
      63 #ifdef HWLOC_LINUX_SYS
      +
      64  /* If we're on Linux, use the sysfs mechanism to get the local cpus */
      +
      65 #define HWLOC_RSMI_DEVICE_SYSFS_PATH_MAX 128
      +
      66  char path[HWLOC_RSMI_DEVICE_SYSFS_PATH_MAX];
      +
      67  rsmi_status_t ret;
      +
      68  uint64_t bdfid = 0;
      +
      69  unsigned domain, device, bus;
      +
      70 
      +
      71  if (!hwloc_topology_is_thissystem(topology)) {
      +
      72  errno = EINVAL;
      +
      73  return -1;
      +
      74  }
      +
      75 
      +
      76  ret = rsmi_dev_pci_id_get(dv_ind, &bdfid);
      +
      77  if (RSMI_STATUS_SUCCESS != ret) {
      +
      78  errno = EINVAL;
      +
      79  return -1;
      +
      80  }
      +
      81  domain = (bdfid>>32) & 0xffffffff;
      +
      82  bus = ((bdfid & 0xffff)>>8) & 0xff;
      +
      83  device = ((bdfid & 0xff)>>3) & 0x1f;
      +
      84 
      +
      85  sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.0/local_cpus", domain, bus, device);
      +
      86  if (hwloc_linux_read_path_as_cpumask(path, set) < 0
      +
      87  || hwloc_bitmap_iszero(set))
      + +
      89 #else
      +
      90  /* Non-Linux systems simply get a full cpuset */
      + +
      92 #endif
      +
      93  return 0;
      +
      94 }
      +
      95 
      +
      111 static __hwloc_inline hwloc_obj_t
      + +
      113 {
      +
      114  hwloc_obj_t osdev = NULL;
      +
      115  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      116  if (HWLOC_OBJ_OSDEV_GPU == osdev->attr->osdev.type
      +
      117  && osdev->name
      +
      118  && !strncmp("rsmi", osdev->name, 4)
      +
      119  && atoi(osdev->name + 4) == (int) dv_ind)
      +
      120  return osdev;
      +
      121  }
      +
      122  return NULL;
      +
      123 }
      +
      124 
      +
      140 static __hwloc_inline hwloc_obj_t
      + +
      142 {
      +
      143  hwloc_obj_t osdev;
      +
      144  rsmi_status_t ret;
      +
      145  uint64_t bdfid = 0;
      +
      146  unsigned domain, device, bus, func;
      +
      147  uint64_t id;
      +
      148  char uuid[64];
      +
      149 
      +
      150  if (!hwloc_topology_is_thissystem(topology)) {
      +
      151  errno = EINVAL;
      +
      152  return NULL;
      +
      153  }
      +
      154 
      +
      155  ret = rsmi_dev_pci_id_get(dv_ind, &bdfid);
      +
      156  if (RSMI_STATUS_SUCCESS != ret) {
      +
      157  errno = EINVAL;
      +
      158  return NULL;
      +
      159  }
      +
      160  domain = (bdfid>>32) & 0xffffffff;
      +
      161  bus = ((bdfid & 0xffff)>>8) & 0xff;
      +
      162  device = ((bdfid & 0xff)>>3) & 0x1f;
      +
      163  func = bdfid & 0x7;
      +
      164 
      +
      165  ret = rsmi_dev_unique_id_get(dv_ind, &id);
      +
      166  if (RSMI_STATUS_SUCCESS != ret)
      +
      167  uuid[0] = '\0';
      +
      168  else
      +
      169  sprintf(uuid, "%lx", id);
      +
      170 
      +
      171  osdev = NULL;
      +
      172  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      173  hwloc_obj_t pcidev = osdev->parent;
      +
      174  const char *info;
      +
      175 
      +
      176  if (strncmp(osdev->name, "rsmi", 4))
      +
      177  continue;
      +
      178 
      +
      179  if (pcidev
      +
      180  && pcidev->type == HWLOC_OBJ_PCI_DEVICE
      +
      181  && pcidev->attr->pcidev.domain == domain
      +
      182  && pcidev->attr->pcidev.bus == bus
      +
      183  && pcidev->attr->pcidev.dev == device
      +
      184  && pcidev->attr->pcidev.func == func)
      +
      185  return osdev;
      +
      186 
      +
      187  info = hwloc_obj_get_info_by_name(osdev, "AMDUUID");
      +
      188  if (info && !strcmp(info, uuid))
      +
      189  return osdev;
      +
      190  }
      +
      191 
      +
      192  return NULL;
      +
      193 }
      +
      194 
      +
      198 #ifdef __cplusplus
      +
      199 } /* extern "C" */
      +
      200 #endif
      +
      201 
      +
      202 
      +
      203 #endif /* HWLOC_RSMI_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_OSDEV_GPU
      Operating system GPU device. For instance ":0.0" for a GL display, "card0" for a Linux DRM device.
      Definition: hwloc.h:342
      +
      @ HWLOC_OBJ_PCI_DEVICE
      PCI device (filtered out by default).
      Definition: hwloc.h:269
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      static const char * hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name)
      Search the given key name in object infos and return the corresponding value.
      +
      int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
      Does the topology context come from this system?
      +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
      Get complete CPU set.
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      int hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
      Copy the contents of bitmap src into the already allocated bitmap dst.
      +
      int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set)
      Convert a linux kernel cpumask file path into a hwloc bitmap set.
      +
      static hwloc_obj_t hwloc_rsmi_get_device_osdev_by_index(hwloc_topology_t topology, uint32_t dv_ind)
      Get the hwloc OS device object corresponding to the AMD GPU device whose index is dv_ind.
      Definition: rsmi.h:112
      +
      static hwloc_obj_t hwloc_rsmi_get_device_osdev(hwloc_topology_t topology, uint32_t dv_ind)
      Get the hwloc OS device object corresponding to AMD GPU device, whose index is dv_ind.
      Definition: rsmi.h:141
      +
      static int hwloc_rsmi_get_device_cpuset(hwloc_topology_t topology, uint32_t dv_ind, hwloc_cpuset_t set)
      Get the CPU set of logical processors that are physically close to AMD GPU device whose index is dv_i...
      Definition: rsmi.h:60
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj * parent
      Parent, NULL if root (Machine object)
      Definition: hwloc.h:446
      +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      unsigned char dev
      Definition: hwloc.h:639
      +
      unsigned char func
      Definition: hwloc.h:639
      +
      unsigned short domain
      Definition: hwloc.h:635
      +
      unsigned char bus
      Definition: hwloc.h:639
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00173_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00173_source.html new file mode 100644 index 0000000000..90c43deafb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00173_source.html @@ -0,0 +1,183 @@ + + + + + + + +Hardware Locality (hwloc): levelzero.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      levelzero.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2021 Inria. All rights reserved.
      +
      3  * See COPYING in top-level directory.
      +
      4  */
      +
      5 
      +
      13 #ifndef HWLOC_LEVELZERO_H
      +
      14 #define HWLOC_LEVELZERO_H
      +
      15 
      +
      16 #include "hwloc.h"
      +
      17 #include "hwloc/autogen/config.h"
      +
      18 #include "hwloc/helper.h"
      +
      19 #ifdef HWLOC_LINUX_SYS
      +
      20 #include "hwloc/linux.h"
      +
      21 #endif
      +
      22 
      +
      23 #include <level_zero/ze_api.h>
      +
      24 #include <level_zero/zes_api.h>
      +
      25 
      +
      26 
      +
      27 #ifdef __cplusplus
      +
      28 extern "C" {
      +
      29 #endif
      +
      30 
      +
      31 
      +
      59 static __hwloc_inline int
      +
      60 hwloc_levelzero_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      61  ze_device_handle_t device, hwloc_cpuset_t set)
      +
      62 {
      +
      63 #ifdef HWLOC_LINUX_SYS
      +
      64  /* If we're on Linux, use the sysfs mechanism to get the local cpus */
      +
      65 #define HWLOC_LEVELZERO_DEVICE_SYSFS_PATH_MAX 128
      +
      66  char path[HWLOC_LEVELZERO_DEVICE_SYSFS_PATH_MAX];
      +
      67  zes_pci_properties_t pci;
      +
      68  zes_device_handle_t sdevice = device;
      +
      69  ze_result_t res;
      +
      70 
      +
      71  if (!hwloc_topology_is_thissystem(topology)) {
      +
      72  errno = EINVAL;
      +
      73  return -1;
      +
      74  }
      +
      75 
      +
      76  res = zesDevicePciGetProperties(sdevice, &pci);
      +
      77  if (res != ZE_RESULT_SUCCESS) {
      +
      78  errno = EINVAL;
      +
      79  return -1;
      +
      80  }
      +
      81 
      +
      82  sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/local_cpus",
      +
      83  pci.address.domain, pci.address.bus, pci.address.device, pci.address.function);
      +
      84  if (hwloc_linux_read_path_as_cpumask(path, set) < 0
      +
      85  || hwloc_bitmap_iszero(set))
      + +
      87 #else
      +
      88  /* Non-Linux systems simply get a full cpuset */
      + +
      90 #endif
      +
      91  return 0;
      +
      92 }
      +
      93 
      +
      108 static __hwloc_inline hwloc_obj_t
      +
      109 hwloc_levelzero_get_device_osdev(hwloc_topology_t topology, ze_device_handle_t device)
      +
      110 {
      +
      111  zes_device_handle_t sdevice = device;
      +
      112  zes_pci_properties_t pci;
      +
      113  ze_result_t res;
      +
      114  hwloc_obj_t osdev;
      +
      115 
      +
      116  if (!hwloc_topology_is_thissystem(topology)) {
      +
      117  errno = EINVAL;
      +
      118  return NULL;
      +
      119  }
      +
      120 
      +
      121  res = zesDevicePciGetProperties(sdevice, &pci);
      +
      122  if (res != ZE_RESULT_SUCCESS) {
      +
      123  /* L0 was likely initialized without sysman, don't bother */
      +
      124  errno = EINVAL;
      +
      125  return NULL;
      +
      126  }
      +
      127 
      +
      128  osdev = NULL;
      +
      129  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      130  hwloc_obj_t pcidev = osdev->parent;
      +
      131 
      +
      132  if (strncmp(osdev->name, "ze", 2))
      +
      133  continue;
      +
      134 
      +
      135  if (pcidev
      +
      136  && pcidev->type == HWLOC_OBJ_PCI_DEVICE
      +
      137  && pcidev->attr->pcidev.domain == pci.address.domain
      +
      138  && pcidev->attr->pcidev.bus == pci.address.bus
      +
      139  && pcidev->attr->pcidev.dev == pci.address.device
      +
      140  && pcidev->attr->pcidev.func == pci.address.function)
      +
      141  return osdev;
      +
      142 
      +
      143  /* FIXME: when we'll have serialnumber, try it in case PCI is filtered-out */
      +
      144  }
      +
      145 
      +
      146  return NULL;
      +
      147 }
      +
      148 
      +
      152 #ifdef __cplusplus
      +
      153 } /* extern "C" */
      +
      154 #endif
      +
      155 
      +
      156 
      +
      157 #endif /* HWLOC_LEVELZERO_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_PCI_DEVICE
      PCI device (filtered out by default).
      Definition: hwloc.h:269
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
      Does the topology context come from this system?
      +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
      Get complete CPU set.
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      int hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
      Copy the contents of bitmap src into the already allocated bitmap dst.
      +
      int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set)
      Convert a linux kernel cpumask file path into a hwloc bitmap set.
      +
      static int hwloc_levelzero_get_device_cpuset(hwloc_topology_t topology, ze_device_handle_t device, hwloc_cpuset_t set)
      Get the CPU set of logical processors that are physically close to the Level Zero device device.
      Definition: levelzero.h:60
      +
      static hwloc_obj_t hwloc_levelzero_get_device_osdev(hwloc_topology_t topology, ze_device_handle_t device)
      Get the hwloc OS device object corresponding to Level Zero device device.
      Definition: levelzero.h:109
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj * parent
      Parent, NULL if root (Machine object)
      Definition: hwloc.h:446
      +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
      +
      unsigned char dev
      Definition: hwloc.h:639
      +
      unsigned char func
      Definition: hwloc.h:639
      +
      unsigned short domain
      Definition: hwloc.h:635
      +
      unsigned char bus
      Definition: hwloc.h:639
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00176_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00176_source.html new file mode 100644 index 0000000000..8dd4cb6791 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00176_source.html @@ -0,0 +1,142 @@ + + + + + + + +Hardware Locality (hwloc): gl.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      gl.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2012 Blue Brain Project, EPFL. All rights reserved.
      +
      3  * Copyright © 2012-2021 Inria. All rights reserved.
      +
      4  * See COPYING in top-level directory.
      +
      5  */
      +
      6 
      +
      14 #ifndef HWLOC_GL_H
      +
      15 #define HWLOC_GL_H
      +
      16 
      +
      17 #include "hwloc.h"
      +
      18 
      +
      19 #include <stdio.h>
      +
      20 #include <string.h>
      +
      21 
      +
      22 
      +
      23 #ifdef __cplusplus
      +
      24 extern "C" {
      +
      25 #endif
      +
      26 
      +
      27 
      +
      53 static __hwloc_inline hwloc_obj_t
      + +
      55  unsigned port, unsigned device)
      +
      56 {
      +
      57  unsigned x = (unsigned) -1, y = (unsigned) -1;
      +
      58  hwloc_obj_t osdev = NULL;
      +
      59  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      60  if (HWLOC_OBJ_OSDEV_GPU == osdev->attr->osdev.type
      +
      61  && osdev->name
      +
      62  && sscanf(osdev->name, ":%u.%u", &x, &y) == 2
      +
      63  && port == x && device == y)
      +
      64  return osdev;
      +
      65  }
      +
      66  errno = EINVAL;
      +
      67  return NULL;
      +
      68 }
      +
      69 
      +
      84 static __hwloc_inline hwloc_obj_t
      + +
      86  const char *name)
      +
      87 {
      +
      88  hwloc_obj_t osdev = NULL;
      +
      89  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      +
      90  if (HWLOC_OBJ_OSDEV_GPU == osdev->attr->osdev.type
      +
      91  && osdev->name
      +
      92  && !strcmp(name, osdev->name))
      +
      93  return osdev;
      +
      94  }
      +
      95  errno = EINVAL;
      +
      96  return NULL;
      +
      97 }
      +
      98 
      +
      111 static __hwloc_inline int
      +
      112 hwloc_gl_get_display_by_osdev(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      113  hwloc_obj_t osdev,
      +
      114  unsigned *port, unsigned *device)
      +
      115 {
      +
      116  unsigned x = -1, y = -1;
      +
      117  if (HWLOC_OBJ_OSDEV_GPU == osdev->attr->osdev.type
      +
      118  && sscanf(osdev->name, ":%u.%u", &x, &y) == 2) {
      +
      119  *port = x;
      +
      120  *device = y;
      +
      121  return 0;
      +
      122  }
      +
      123  errno = EINVAL;
      +
      124  return -1;
      +
      125 }
      +
      126 
      +
      130 #ifdef __cplusplus
      +
      131 } /* extern "C" */
      +
      132 #endif
      +
      133 
      +
      134 
      +
      135 #endif /* HWLOC_GL_H */
      +
      136 
      +
      @ HWLOC_OBJ_OSDEV_GPU
      Operating system GPU device. For instance ":0.0" for a GL display, "card0" for a Linux DRM device.
      Definition: hwloc.h:342
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      static hwloc_obj_t hwloc_gl_get_display_osdev_by_name(hwloc_topology_t topology, const char *name)
      Get the hwloc OS device object corresponding to the OpenGL display given by name.
      Definition: gl.h:85
      +
      static hwloc_obj_t hwloc_gl_get_display_osdev_by_port_device(hwloc_topology_t topology, unsigned port, unsigned device)
      Get the hwloc OS device object corresponding to the OpenGL display given by port and device index.
      Definition: gl.h:54
      +
      static int hwloc_gl_get_display_by_osdev(hwloc_topology_t topology, hwloc_obj_t osdev, unsigned *port, unsigned *device)
      Get the OpenGL display port and device corresponding to the given hwloc OS object.
      Definition: gl.h:112
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00179_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00179_source.html new file mode 100644 index 0000000000..aa69b98301 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00179_source.html @@ -0,0 +1,155 @@ + + + + + + + +Hardware Locality (hwloc): openfabrics-verbs.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      openfabrics-verbs.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2009 CNRS
      +
      3  * Copyright © 2009-2021 Inria. All rights reserved.
      +
      4  * Copyright © 2009-2010 Université Bordeaux
      +
      5  * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved.
      +
      6  * See COPYING in top-level directory.
      +
      7  */
      +
      8 
      +
      19 #ifndef HWLOC_OPENFABRICS_VERBS_H
      +
      20 #define HWLOC_OPENFABRICS_VERBS_H
      +
      21 
      +
      22 #include "hwloc.h"
      +
      23 #include "hwloc/autogen/config.h"
      +
      24 #ifdef HWLOC_LINUX_SYS
      +
      25 #include "hwloc/linux.h"
      +
      26 #endif
      +
      27 
      +
      28 #include <infiniband/verbs.h>
      +
      29 
      +
      30 
      +
      31 #ifdef __cplusplus
      +
      32 extern "C" {
      +
      33 #endif
      +
      34 
      +
      35 
      +
      61 static __hwloc_inline int
      +
      62 hwloc_ibv_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
      +
      63  struct ibv_device *ibdev, hwloc_cpuset_t set)
      +
      64 {
      +
      65 #ifdef HWLOC_LINUX_SYS
      +
      66  /* If we're on Linux, use the verbs-provided sysfs mechanism to
      +
      67  get the local cpus */
      +
      68 #define HWLOC_OPENFABRICS_VERBS_SYSFS_PATH_MAX 128
      +
      69  char path[HWLOC_OPENFABRICS_VERBS_SYSFS_PATH_MAX];
      +
      70 
      +
      71  if (!hwloc_topology_is_thissystem(topology)) {
      +
      72  errno = EINVAL;
      +
      73  return -1;
      +
      74  }
      +
      75 
      +
      76  sprintf(path, "/sys/class/infiniband/%s/device/local_cpus",
      +
      77  ibv_get_device_name(ibdev));
      +
      78  if (hwloc_linux_read_path_as_cpumask(path, set) < 0
      +
      79  || hwloc_bitmap_iszero(set))
      + +
      81 #else
      +
      82  /* Non-Linux systems simply get a full cpuset */
      + +
      84 #endif
      +
      85  return 0;
      +
      86 }
      +
      87 
      +
      105 static __hwloc_inline hwloc_obj_t
      + +
      107  const char *ibname)
      +
      108 {
      +
      109  hwloc_obj_t osdev = NULL;
      +
      110  while ((osdev = hwloc_get_next_osdev(topology, osdev)) != NULL) {
      + +
      112  && osdev->name && !strcmp(ibname, osdev->name))
      +
      113  return osdev;
      +
      114  }
      +
      115  return NULL;
      +
      116 }
      +
      117 
      +
      133 static __hwloc_inline hwloc_obj_t
      + +
      135  struct ibv_device *ibdev)
      +
      136 {
      +
      137  if (!hwloc_topology_is_thissystem(topology)) {
      +
      138  errno = EINVAL;
      +
      139  return NULL;
      +
      140  }
      +
      141  return hwloc_ibv_get_device_osdev_by_name(topology, ibv_get_device_name(ibdev));
      +
      142 }
      +
      143 
      +
      147 #ifdef __cplusplus
      +
      148 } /* extern "C" */
      +
      149 #endif
      +
      150 
      +
      151 
      +
      152 #endif /* HWLOC_OPENFABRICS_VERBS_H */
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_OSDEV_OPENFABRICS
      Operating system openfabrics device. For instance the "mlx4_0" InfiniBand HCA, "hfi1_0" Omni-Path int...
      Definition: hwloc.h:347
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
      Does the topology context come from this system?
      +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
      Get complete CPU set.
      +
      static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
      Get the next OS device in the system.
      Definition: helper.h:1194
      +
      int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
      Test whether bitmap bitmap is empty.
      +
      int hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
      Copy the contents of bitmap src into the already allocated bitmap dst.
      +
      int hwloc_linux_read_path_as_cpumask(const char *path, hwloc_bitmap_t set)
      Convert a linux kernel cpumask file path into a hwloc bitmap set.
      +
      static hwloc_obj_t hwloc_ibv_get_device_osdev_by_name(hwloc_topology_t topology, const char *ibname)
      Get the hwloc OS device object corresponding to the OpenFabrics device named ibname.
      Definition: openfabrics-verbs.h:106
      +
      static int hwloc_ibv_get_device_cpuset(hwloc_topology_t topology, struct ibv_device *ibdev, hwloc_cpuset_t set)
      Get the CPU set of processors that are physically close to device ibdev.
      Definition: openfabrics-verbs.h:62
      +
      static hwloc_obj_t hwloc_ibv_get_device_osdev(hwloc_topology_t topology, struct ibv_device *ibdev)
      Get the hwloc OS device object corresponding to the OpenFabrics device ibdev.
      Definition: openfabrics-verbs.h:134
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00182_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00182_source.html new file mode 100644 index 0000000000..6dcafd94fa --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00182_source.html @@ -0,0 +1,213 @@ + + + + + + + +Hardware Locality (hwloc): diff.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      diff.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2013-2020 Inria. All rights reserved.
      +
      3  * See COPYING in top-level directory.
      +
      4  */
      +
      5 
      +
      10 #ifndef HWLOC_DIFF_H
      +
      11 #define HWLOC_DIFF_H
      +
      12 
      +
      13 #ifndef HWLOC_H
      +
      14 #error Please include the main hwloc.h instead
      +
      15 #endif
      +
      16 
      +
      17 
      +
      18 #ifdef __cplusplus
      +
      19 extern "C" {
      +
      20 #elif 0
      +
      21 }
      +
      22 #endif
      +
      23 
      +
      24 
      + + +
      68 
      + + + +
      80 
      + + +
      85  /* each part of the union must start with these */
      + +
      87  } generic;
      +
      88 
      + +
      91  /* used for storing integer attributes */
      + +
      93  hwloc_uint64_t index; /* not used for SIZE */
      +
      94  hwloc_uint64_t oldvalue;
      +
      95  hwloc_uint64_t newvalue;
      +
      96  } uint64;
      +
      97 
      + +
      100  /* used for storing name and info pairs */
      + +
      102  char *name; /* not used for NAME */
      +
      103  char *oldvalue;
      +
      104  char *newvalue;
      + +
      106 };
      +
      107 
      +
      108 
      + + +
      116 
      + + +
      126 
      +
      129 typedef union hwloc_topology_diff_u {
      + +
      131  /* each part of the union must start with these */
      + +
      133  union hwloc_topology_diff_u * next; /* pointer to the next element of the list, or NULL */
      +
      134  } generic;
      +
      135 
      +
      136  /* A difference in an object attribute. */
      + +
      138  hwloc_topology_diff_type_t type; /* must be ::HWLOC_TOPOLOGY_DIFF_OBJ_ATTR */
      + +
      140  /* List of attribute differences for a single object */
      + +
      142  unsigned obj_index;
      + +
      144  } obj_attr;
      +
      145 
      +
      146  /* A difference that is too complex. */
      + +
      148  hwloc_topology_diff_type_t type; /* must be ::HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX */
      + +
      150  /* Where we had to stop computing the diff in the first topology */
      + +
      152  unsigned obj_index;
      +
      153  } too_complex;
      + +
      155 
      +
      156 
      +
      194 HWLOC_DECLSPEC int hwloc_topology_diff_build(hwloc_topology_t topology, hwloc_topology_t newtopology, unsigned long flags, hwloc_topology_diff_t *diff);
      +
      195 
      + + +
      203 };
      +
      204 
      +
      222 HWLOC_DECLSPEC int hwloc_topology_diff_apply(hwloc_topology_t topology, hwloc_topology_diff_t diff, unsigned long flags);
      +
      223 
      + +
      227 
      +
      239 HWLOC_DECLSPEC int hwloc_topology_diff_load_xml(const char *xmlpath, hwloc_topology_diff_t *diff, char **refname);
      +
      240 
      +
      250 HWLOC_DECLSPEC int hwloc_topology_diff_export_xml(hwloc_topology_diff_t diff, const char *refname, const char *xmlpath);
      +
      251 
      +
      263 HWLOC_DECLSPEC int hwloc_topology_diff_load_xmlbuffer(const char *xmlbuffer, int buflen, hwloc_topology_diff_t *diff, char **refname);
      +
      264 
      +
      279 HWLOC_DECLSPEC int hwloc_topology_diff_export_xmlbuffer(hwloc_topology_diff_t diff, const char *refname, char **xmlbuffer, int *buflen);
      +
      280 
      +
      284 #ifdef __cplusplus
      +
      285 } /* extern "C" */
      +
      286 #endif
      +
      287 
      +
      288 
      +
      289 #endif /* HWLOC_DIFF_H */
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      union hwloc_topology_diff_u * hwloc_topology_diff_t
      One element of a difference list between two topologies.
      +
      int hwloc_topology_diff_load_xml(const char *xmlpath, hwloc_topology_diff_t *diff, char **refname)
      Load a list of topology differences from a XML file.
      +
      hwloc_topology_diff_type_e
      Type of one element of a difference list.
      Definition: diff.h:111
      +
      int hwloc_topology_diff_destroy(hwloc_topology_diff_t diff)
      Destroy a list of topology differences.
      +
      enum hwloc_topology_diff_obj_attr_type_e hwloc_topology_diff_obj_attr_type_t
      Type of one object attribute difference.
      +
      enum hwloc_topology_diff_type_e hwloc_topology_diff_type_t
      Type of one element of a difference list.
      +
      hwloc_topology_diff_obj_attr_type_e
      Type of one object attribute difference.
      Definition: diff.h:62
      +
      int hwloc_topology_diff_export_xml(hwloc_topology_diff_t diff, const char *refname, const char *xmlpath)
      Export a list of topology differences to a XML file.
      +
      int hwloc_topology_diff_build(hwloc_topology_t topology, hwloc_topology_t newtopology, unsigned long flags, hwloc_topology_diff_t *diff)
      Compute the difference between 2 topologies.
      +
      int hwloc_topology_diff_export_xmlbuffer(hwloc_topology_diff_t diff, const char *refname, char **xmlbuffer, int *buflen)
      Export a list of topology differences to a XML buffer.
      +
      int hwloc_topology_diff_load_xmlbuffer(const char *xmlbuffer, int buflen, hwloc_topology_diff_t *diff, char **refname)
      Load a list of topology differences from a XML buffer.
      +
      hwloc_topology_diff_apply_flags_e
      Flags to be given to hwloc_topology_diff_apply().
      Definition: diff.h:198
      +
      int hwloc_topology_diff_apply(hwloc_topology_t topology, hwloc_topology_diff_t diff, unsigned long flags)
      Apply a topology diff to an existing topology.
      +
      @ HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX
      The difference is too complex, it cannot be represented. The difference below this object has not bee...
      Definition: diff.h:124
      +
      @ HWLOC_TOPOLOGY_DIFF_OBJ_ATTR
      An object attribute was changed. The union is a hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s...
      Definition: diff.h:115
      +
      @ HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO
      the value of an info attribute is modified. The union is a hwloc_topology_diff_obj_attr_u::hwloc_topo...
      Definition: diff.h:78
      +
      @ HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME
      The object name is modified. The union is a hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_a...
      Definition: diff.h:74
      +
      @ HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE
      The object local memory is modified. The union is a hwloc_topology_diff_obj_attr_u::hwloc_topology_di...
      Definition: diff.h:67
      +
      @ HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE
      Apply topology diff in reverse direction.
      Definition: diff.h:202
      +
      One object attribute difference.
      Definition: diff.h:83
      +
      struct hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s string
      +
      struct hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s uint64
      + +
      hwloc_topology_diff_obj_attr_type_t type
      Definition: diff.h:86
      +
      Integer attribute modification with an optional index.
      Definition: diff.h:90
      + + + +
      hwloc_topology_diff_obj_attr_type_t type
      Definition: diff.h:92
      +
      String attribute modification with an optional name.
      Definition: diff.h:99
      + + +
      hwloc_topology_diff_obj_attr_type_t type
      Definition: diff.h:101
      + +
      One element of a difference list between two topologies.
      Definition: diff.h:129
      + +
      hwloc_topology_diff_type_t type
      Definition: diff.h:132
      +
      union hwloc_topology_diff_u * next
      Definition: diff.h:133
      + +
      hwloc_topology_diff_type_t type
      Definition: diff.h:138
      + +
      union hwloc_topology_diff_u * next
      Definition: diff.h:139
      + +
      union hwloc_topology_diff_u * next
      Definition: diff.h:149
      + +
      hwloc_topology_diff_type_t type
      Definition: diff.h:148
      + +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00185_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00185_source.html new file mode 100644 index 0000000000..e28c395bd3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00185_source.html @@ -0,0 +1,96 @@ + + + + + + + +Hardware Locality (hwloc): shmem.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      shmem.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2013-2018 Inria. All rights reserved.
      +
      3  * See COPYING in top-level directory.
      +
      4  */
      +
      5 
      +
      10 #ifndef HWLOC_SHMEM_H
      +
      11 #define HWLOC_SHMEM_H
      +
      12 
      +
      13 #include "hwloc.h"
      +
      14 
      +
      15 #ifdef __cplusplus
      +
      16 extern "C" {
      +
      17 #elif 0
      +
      18 }
      +
      19 #endif
      +
      20 
      +
      21 
      + +
      54  size_t *lengthp,
      +
      55  unsigned long flags);
      +
      56 
      +
      82 HWLOC_DECLSPEC int hwloc_shmem_topology_write(hwloc_topology_t topology,
      +
      83  int fd, hwloc_uint64_t fileoffset,
      +
      84  void *mmap_address, size_t length,
      +
      85  unsigned long flags);
      +
      86 
      +
      125 HWLOC_DECLSPEC int hwloc_shmem_topology_adopt(hwloc_topology_t *topologyp,
      +
      126  int fd, hwloc_uint64_t fileoffset,
      +
      127  void *mmap_address, size_t length,
      +
      128  unsigned long flags);
      +
      132 #ifdef __cplusplus
      +
      133 } /* extern "C" */
      +
      134 #endif
      +
      135 
      +
      136 
      +
      137 #endif /* HWLOC_SHMEM_H */
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_shmem_topology_adopt(hwloc_topology_t *topologyp, int fd, hwloc_uint64_t fileoffset, void *mmap_address, size_t length, unsigned long flags)
      Adopt a shared memory topology stored in a file.
      +
      int hwloc_shmem_topology_write(hwloc_topology_t topology, int fd, hwloc_uint64_t fileoffset, void *mmap_address, size_t length, unsigned long flags)
      Duplicate a topology to a shared memory file.
      +
      int hwloc_shmem_topology_get_length(hwloc_topology_t topology, size_t *lengthp, unsigned long flags)
      Get the required shared memory length for storing a topology.
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00188_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00188_source.html new file mode 100644 index 0000000000..f8d81eddd0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00188_source.html @@ -0,0 +1,391 @@ + + + + + + + +Hardware Locality (hwloc): plugins.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      plugins.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2013-2021 Inria. All rights reserved.
      +
      3  * Copyright © 2016 Cisco Systems, Inc. All rights reserved.
      +
      4  * See COPYING in top-level directory.
      +
      5  */
      +
      6 
      +
      7 #ifndef HWLOC_PLUGINS_H
      +
      8 #define HWLOC_PLUGINS_H
      +
      9 
      +
      14 struct hwloc_backend;
      +
      15 
      +
      16 #include "hwloc.h"
      +
      17 
      +
      18 #ifdef HWLOC_INSIDE_PLUGIN
      +
      19 /* needed for hwloc_plugin_check_namespace() */
      +
      20 #ifdef HWLOC_HAVE_LTDL
      +
      21 #include <ltdl.h>
      +
      22 #else
      +
      23 #include <dlfcn.h>
      +
      24 #endif
      +
      25 #endif
      +
      26 
      +
      27 
      +
      28 
      + +
      45  const char *name;
      +
      46 
      +
      50  unsigned phases;
      +
      51 
      +
      60  unsigned excluded_phases;
      +
      61 
      +
      65  struct hwloc_backend * (*instantiate)(struct hwloc_topology *topology, struct hwloc_disc_component *component, unsigned excluded_phases, const void *data1, const void *data2, const void *data3);
      +
      66 
      +
      79  unsigned priority;
      +
      80 
      + +
      85 
      +
      90  struct hwloc_disc_component * next;
      +
      91 };
      +
      92 
      +
      106 typedef enum hwloc_disc_phase_e {
      + +
      112 
      + +
      116 
      + +
      120 
      + +
      124 
      + +
      128 
      + +
      132 
      + +
      136 
      +
      142  HWLOC_DISC_PHASE_TWEAK = (1U<<7)
      + +
      144 
      + + +
      149 };
      +
      150 
      + + +
      161 
      +
      165  unsigned excluded_phases;
      +
      166 
      +
      168  unsigned long flags;
      +
      169 };
      +
      170 
      + +
      191  struct hwloc_disc_component * component;
      +
      193  struct hwloc_topology * topology;
      +
      195  int envvar_forced;
      +
      197  struct hwloc_backend * next;
      +
      198 
      +
      202  unsigned phases;
      +
      203 
      +
      205  unsigned long flags;
      +
      206 
      + +
      214 
      +
      216  void * private_data;
      +
      220  void (*disable)(struct hwloc_backend *backend);
      +
      221 
      +
      227  int (*discover)(struct hwloc_backend *backend, struct hwloc_disc_status *status);
      +
      228 
      +
      233  int (*get_pci_busid_cpuset)(struct hwloc_backend *backend, struct hwloc_pcidev_attr_s *busid, hwloc_bitmap_t cpuset);
      +
      234 };
      +
      235 
      +
      239 HWLOC_DECLSPEC struct hwloc_backend * hwloc_backend_alloc(struct hwloc_topology *topology, struct hwloc_disc_component *component);
      +
      240 
      +
      242 HWLOC_DECLSPEC int hwloc_backend_enable(struct hwloc_backend *backend);
      +
      243 
      + + +
      260 
      + + +
      264 
      + +
      272  unsigned abi;
      +
      273 
      +
      291  int (*init)(unsigned long flags);
      +
      292 
      +
      304  void (*finalize)(unsigned long flags);
      +
      305 
      + +
      308 
      +
      310  unsigned long flags;
      +
      311 
      +
      313  void * data;
      +
      314 };
      +
      315 
      +
      342 HWLOC_DECLSPEC int hwloc_hide_errors(void);
      +
      343 
      +
      372 HWLOC_DECLSPEC hwloc_obj_t
      +
      373 hwloc__insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t root,
      +
      374  hwloc_obj_t obj, const char *reason);
      +
      375 
      +
      392 HWLOC_DECLSPEC void hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, hwloc_obj_t obj);
      +
      393 
      +
      398 HWLOC_DECLSPEC hwloc_obj_t hwloc_alloc_setup_object(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned os_index);
      +
      399 
      +
      408 HWLOC_DECLSPEC int hwloc_obj_add_children_sets(hwloc_obj_t obj);
      +
      409 
      +
      417 HWLOC_DECLSPEC int hwloc_topology_reconnect(hwloc_topology_t topology, unsigned long flags __hwloc_attribute_unused);
      +
      418 
      +
      440 static __hwloc_inline int
      +
      441 hwloc_plugin_check_namespace(const char *pluginname __hwloc_attribute_unused, const char *symbol __hwloc_attribute_unused)
      +
      442 {
      +
      443 #ifdef HWLOC_INSIDE_PLUGIN
      +
      444  void *sym;
      +
      445 #ifdef HWLOC_HAVE_LTDL
      +
      446  lt_dlhandle handle = lt_dlopen(NULL);
      +
      447 #else
      +
      448  void *handle = dlopen(NULL, RTLD_NOW|RTLD_LOCAL);
      +
      449 #endif
      +
      450  if (!handle)
      +
      451  /* cannot check, assume things will work */
      +
      452  return 0;
      +
      453 #ifdef HWLOC_HAVE_LTDL
      +
      454  sym = lt_dlsym(handle, symbol);
      +
      455  lt_dlclose(handle);
      +
      456 #else
      +
      457  sym = dlsym(handle, symbol);
      +
      458  dlclose(handle);
      +
      459 #endif
      +
      460  if (!sym) {
      +
      461  static int verboseenv_checked = 0;
      +
      462  static int verboseenv_value = 0;
      +
      463  if (!verboseenv_checked) {
      +
      464  const char *verboseenv = getenv("HWLOC_PLUGINS_VERBOSE");
      +
      465  verboseenv_value = verboseenv ? atoi(verboseenv) : 0;
      +
      466  verboseenv_checked = 1;
      +
      467  }
      +
      468  if (verboseenv_value)
      +
      469  fprintf(stderr, "Plugin `%s' disabling itself because it cannot find the `%s' core symbol.\n",
      +
      470  pluginname, symbol);
      +
      471  return -1;
      +
      472  }
      +
      473 #endif /* HWLOC_INSIDE_PLUGIN */
      +
      474  return 0;
      +
      475 }
      +
      476 
      +
      493 static __hwloc_inline int
      + +
      495 {
      +
      496  unsigned baseclass = classid >> 8;
      +
      497  return (baseclass == 0x03 /* PCI_BASE_CLASS_DISPLAY */
      +
      498  || baseclass == 0x02 /* PCI_BASE_CLASS_NETWORK */
      +
      499  || baseclass == 0x01 /* PCI_BASE_CLASS_STORAGE */
      +
      500  || baseclass == 0x00 /* Unclassified, for Atos/Bull BXI */
      +
      501  || baseclass == 0x0b /* PCI_BASE_CLASS_PROCESSOR */
      +
      502  || classid == 0x0c04 /* PCI_CLASS_SERIAL_FIBER */
      +
      503  || classid == 0x0c06 /* PCI_CLASS_SERIAL_INFINIBAND */
      +
      504  || baseclass == 0x06 /* PCI_BASE_CLASS_BRIDGE with non-PCI downstream. the core will drop the useless ones later */
      +
      505  || baseclass == 0x12 /* Processing Accelerators */);
      +
      506 }
      +
      507 
      +
      512 static __hwloc_inline int
      + +
      514 {
      +
      515  return (subtype != HWLOC_OBJ_OSDEV_DMA);
      +
      516 }
      +
      517 
      +
      524 static __hwloc_inline int
      + +
      526 {
      + +
      528  hwloc_topology_get_type_filter(topology, type, &filter);
      +
      529  assert(filter != HWLOC_TYPE_FILTER_KEEP_IMPORTANT); /* IMPORTANT only used for I/O */
      +
      530  return filter == HWLOC_TYPE_FILTER_KEEP_NONE ? 0 : 1;
      +
      531 }
      +
      532 
      +
      537 static __hwloc_inline int
      + +
      539 {
      +
      540  hwloc_obj_type_t type = obj->type;
      + +
      542  hwloc_topology_get_type_filter(topology, type, &filter);
      +
      543  if (filter == HWLOC_TYPE_FILTER_KEEP_NONE)
      +
      544  return 0;
      +
      545  if (filter == HWLOC_TYPE_FILTER_KEEP_IMPORTANT) {
      +
      546  if (type == HWLOC_OBJ_PCI_DEVICE)
      + +
      548  if (type == HWLOC_OBJ_OS_DEVICE)
      + +
      550  }
      +
      551  return 1;
      +
      552 }
      +
      553 
      +
      570 HWLOC_DECLSPEC unsigned hwloc_pcidisc_find_cap(const unsigned char *config, unsigned cap);
      +
      571 
      +
      577 HWLOC_DECLSPEC int hwloc_pcidisc_find_linkspeed(const unsigned char *config, unsigned offset, float *linkspeed);
      +
      578 
      +
      583 HWLOC_DECLSPEC hwloc_obj_type_t hwloc_pcidisc_check_bridge_type(unsigned device_class, const unsigned char *config);
      +
      584 
      +
      591 HWLOC_DECLSPEC int hwloc_pcidisc_find_bridge_buses(unsigned domain, unsigned bus, unsigned dev, unsigned func,
      +
      592  unsigned *secondary_busp, unsigned *subordinate_busp,
      +
      593  const unsigned char *config);
      +
      594 
      +
      599 HWLOC_DECLSPEC void hwloc_pcidisc_tree_insert_by_busid(struct hwloc_obj **treep, struct hwloc_obj *obj);
      +
      600 
      +
      606 HWLOC_DECLSPEC int hwloc_pcidisc_tree_attach(struct hwloc_topology *topology, struct hwloc_obj *tree);
      +
      607 
      +
      631 HWLOC_DECLSPEC struct hwloc_obj * hwloc_pci_find_parent_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func);
      +
      632 
      +
      639 HWLOC_DECLSPEC struct hwloc_obj * hwloc_pci_find_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func);
      +
      640 
      + +
      643 
      + + +
      652  const char *name, unsigned long kind,
      +
      653  unsigned long flags);
      +
      654 
      +
      666 HWLOC_DECLSPEC int
      + + +
      669  unsigned nbobjs, hwloc_obj_t *objs,
      +
      670  hwloc_uint64_t *values,
      +
      671  unsigned long flags);
      +
      672 
      +
      679 HWLOC_DECLSPEC int
      + + +
      682  unsigned long flags);
      +
      683 
      +
      689 #endif /* HWLOC_PLUGINS_H */
      +
      enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t
      Type of a OS device.
      +
      hwloc_obj_type_t
      Type of topology object.
      Definition: hwloc.h:176
      +
      @ HWLOC_OBJ_OSDEV_DMA
      Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux.
      Definition: hwloc.h:351
      +
      @ HWLOC_OBJ_OS_DEVICE
      Operating system device (filtered out by default).
      Definition: hwloc.h:279
      +
      @ HWLOC_OBJ_PCI_DEVICE
      PCI device (filtered out by default).
      Definition: hwloc.h:269
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter)
      Get the current filtering for the given object type.
      +
      hwloc_type_filter_e
      Type filtering flags.
      Definition: hwloc.h:2235
      +
      @ HWLOC_TYPE_FILTER_KEEP_NONE
      Ignore all objects of this type.
      Definition: hwloc.h:2249
      +
      @ HWLOC_TYPE_FILTER_KEEP_IMPORTANT
      Only keep likely-important objects of the given type.
      Definition: hwloc.h:2278
      +
      struct hwloc_bitmap_s * hwloc_bitmap_t
      Set of bits represented as an opaque pointer to an internal bitmap.
      Definition: bitmap.h:68
      +
      int hwloc_backend_enable(struct hwloc_backend *backend)
      Enable a previously allocated and setup backend.
      +
      enum hwloc_disc_phase_e hwloc_disc_phase_t
      Discovery phase.
      +
      hwloc_disc_phase_e
      Discovery phase.
      Definition: plugins.h:106
      +
      hwloc_disc_status_flag_e
      Discovery status flags.
      Definition: plugins.h:146
      +
      struct hwloc_backend * hwloc_backend_alloc(struct hwloc_topology *topology, struct hwloc_disc_component *component)
      Allocate a backend structure, set good default values, initialize backend->component and topology,...
      +
      @ HWLOC_DISC_PHASE_CPU
      CPU discovery.
      Definition: plugins.h:115
      +
      @ HWLOC_DISC_PHASE_PCI
      Attach PCI devices and bridges to existing CPU objects.
      Definition: plugins.h:123
      +
      @ HWLOC_DISC_PHASE_ANNOTATE
      Annotating existing objects, adding distances, etc.
      Definition: plugins.h:135
      +
      @ HWLOC_DISC_PHASE_MISC
      Misc objects that gets added below anything else.
      Definition: plugins.h:131
      +
      @ HWLOC_DISC_PHASE_IO
      I/O discovery that requires PCI devices (OS devices such as OpenCL, CUDA, etc.).
      Definition: plugins.h:127
      +
      @ HWLOC_DISC_PHASE_GLOBAL
      xml or synthetic, platform-specific components such as bgq. Discovers everything including CPU,...
      Definition: plugins.h:111
      +
      @ HWLOC_DISC_PHASE_MEMORY
      Attach memory to existing CPU objects.
      Definition: plugins.h:119
      +
      @ HWLOC_DISC_PHASE_TWEAK
      Final tweaks to a ready-to-use topology. This phase runs once the topology is loaded,...
      Definition: plugins.h:142
      +
      @ HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES
      The sets of allowed resources were already retrieved.
      Definition: plugins.h:148
      +
      enum hwloc_component_type_e hwloc_component_type_t
      Generic component type.
      +
      hwloc_component_type_e
      Generic component type.
      Definition: plugins.h:257
      +
      @ HWLOC_COMPONENT_TYPE_DISC
      The data field must point to a struct hwloc_disc_component.
      Definition: plugins.h:259
      +
      @ HWLOC_COMPONENT_TYPE_XML
      The data field must point to a struct hwloc_xml_component.
      Definition: plugins.h:262
      +
      hwloc_obj_t hwloc_alloc_setup_object(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned os_index)
      Allocate and initialize an object of the given type and physical index.
      +
      void hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, hwloc_obj_t obj)
      Insert an object somewhere in the topology.
      +
      int hwloc_topology_reconnect(hwloc_topology_t topology, unsigned long flags)
      Request a reconnection of children and levels in the topology.
      +
      hwloc_obj_t hwloc__insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t root, hwloc_obj_t obj, const char *reason)
      Add an object to the topology.
      +
      int hwloc_obj_add_children_sets(hwloc_obj_t obj)
      Setup object cpusets/nodesets by OR'ing its children.
      +
      int hwloc_hide_errors(void)
      Check whether error messages are hidden.
      +
      static int hwloc_plugin_check_namespace(const char *pluginname, const char *symbol)
      Make sure that plugins can lookup core symbols.
      Definition: plugins.h:441
      +
      static int hwloc_filter_check_keep_object_type(hwloc_topology_t topology, hwloc_obj_type_t type)
      Check whether a non-I/O object type should be filtered-out.
      Definition: plugins.h:525
      +
      static int hwloc_filter_check_keep_object(hwloc_topology_t topology, hwloc_obj_t obj)
      Check whether the given object should be filtered-out.
      Definition: plugins.h:538
      +
      static int hwloc_filter_check_pcidev_subtype_important(unsigned classid)
      Check whether the given PCI device classid is important.
      Definition: plugins.h:494
      +
      static int hwloc_filter_check_osdev_subtype_important(hwloc_obj_osdev_type_t subtype)
      Check whether the given OS device subtype is important.
      Definition: plugins.h:513
      +
      int hwloc_pcidisc_find_linkspeed(const unsigned char *config, unsigned offset, float *linkspeed)
      Fill linkspeed by reading the PCI config space where PCI_CAP_ID_EXP is at position offset.
      +
      hwloc_obj_type_t hwloc_pcidisc_check_bridge_type(unsigned device_class, const unsigned char *config)
      Return the hwloc object type (PCI device or Bridge) for the given class and configuration space.
      +
      unsigned hwloc_pcidisc_find_cap(const unsigned char *config, unsigned cap)
      Return the offset of the given capability in the PCI config space buffer.
      +
      int hwloc_pcidisc_find_bridge_buses(unsigned domain, unsigned bus, unsigned dev, unsigned func, unsigned *secondary_busp, unsigned *subordinate_busp, const unsigned char *config)
      Fills the attributes of the given PCI bridge using the given PCI config space.
      +
      void hwloc_pcidisc_tree_insert_by_busid(struct hwloc_obj **treep, struct hwloc_obj *obj)
      Insert a PCI object in the given PCI tree by looking at PCI bus IDs.
      +
      int hwloc_pcidisc_tree_attach(struct hwloc_topology *topology, struct hwloc_obj *tree)
      Add some hostbridges on top of the given tree of PCI objects and attach them to the topology.
      +
      int hwloc_backend_distances_add_commit(hwloc_topology_t topology, hwloc_backend_distances_add_handle_t handle, unsigned long flags)
      Commit a new distances structure.
      +
      struct hwloc_obj * hwloc_pci_find_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
      Find the PCI device or bridge matching a PCI bus ID exactly.
      +
      struct hwloc_obj * hwloc_pci_find_parent_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
      Find the object or a parent of a PCI bus ID.
      +
      int hwloc_backend_distances_add_values(hwloc_topology_t topology, hwloc_backend_distances_add_handle_t handle, unsigned nbobjs, hwloc_obj_t *objs, hwloc_uint64_t *values, unsigned long flags)
      Specify the objects and values in a new empty distances structure.
      +
      hwloc_backend_distances_add_handle_t hwloc_backend_distances_add_create(hwloc_topology_t topology, const char *name, unsigned long kind, unsigned long flags)
      Create a new empty distances structure.
      +
      void * hwloc_backend_distances_add_handle_t
      Handle to a new distances structure during its addition to the topology.
      Definition: plugins.h:642
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      char * name
      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
      Definition: hwloc.h:408
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
      +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
      +
      unsigned short class_id
      Definition: hwloc.h:640
      +
      hwloc_obj_osdev_type_t type
      Definition: hwloc.h:666
      +
      Discovery component structure.
      Definition: plugins.h:41
      +
      const char * name
      Name. If this component is built as a plugin, this name does not have to match the plugin filename.
      Definition: plugins.h:45
      +
      unsigned phases
      Discovery phases performed by this component. OR'ed set of hwloc_disc_phase_t.
      Definition: plugins.h:50
      +
      unsigned excluded_phases
      Component phases to exclude, as an OR'ed set of hwloc_disc_phase_t.
      Definition: plugins.h:60
      +
      unsigned enabled_by_default
      Enabled by default. If unset, if will be disabled unless explicitly requested.
      Definition: plugins.h:84
      +
      unsigned priority
      Component priority. Used to sort topology->components, higher priority first. Also used to decide bet...
      Definition: plugins.h:79
      +
      Discovery status structure.
      Definition: plugins.h:156
      +
      unsigned excluded_phases
      Dynamically excluded phases. If a component decides during discovery that some phases are no longer n...
      Definition: plugins.h:165
      +
      hwloc_disc_phase_t phase
      The current discovery phase that is performed. Must match one of the phases in the component phases f...
      Definition: plugins.h:160
      +
      unsigned long flags
      OR'ed set of hwloc_disc_status_flag_e.
      Definition: plugins.h:168
      +
      Discovery backend structure.
      Definition: plugins.h:189
      +
      void * private_data
      Backend private data, or NULL if none.
      Definition: plugins.h:216
      +
      void(* disable)(struct hwloc_backend *backend)
      Callback for freeing the private_data. May be NULL.
      Definition: plugins.h:220
      +
      unsigned long flags
      Backend flags, currently always 0.
      Definition: plugins.h:205
      +
      int(* get_pci_busid_cpuset)(struct hwloc_backend *backend, struct hwloc_pcidev_attr_s *busid, hwloc_bitmap_t cpuset)
      Callback to retrieve the locality of a PCI object. Called by the PCI core when attaching PCI hierarch...
      Definition: plugins.h:233
      +
      int is_thissystem
      Backend-specific 'is_thissystem' property. Set to 0 if the backend disables the thissystem flag for t...
      Definition: plugins.h:213
      +
      int(* discover)(struct hwloc_backend *backend, struct hwloc_disc_status *status)
      Main discovery callback. returns -1 on error, either because it couldn't add its objects ot the exist...
      Definition: plugins.h:227
      +
      unsigned phases
      Discovery phases performed by this component, possibly without some of them if excluded by other comp...
      Definition: plugins.h:202
      +
      Generic component structure.
      Definition: plugins.h:270
      +
      unsigned abi
      Component ABI version, set to HWLOC_COMPONENT_ABI.
      Definition: plugins.h:272
      +
      void(* finalize)(unsigned long flags)
      Process-wide component termination callback.
      Definition: plugins.h:304
      +
      void * data
      Component data, pointing to a struct hwloc_disc_component or struct hwloc_xml_component.
      Definition: plugins.h:313
      +
      hwloc_component_type_t type
      Component type.
      Definition: plugins.h:307
      +
      unsigned long flags
      Component flags, unused for now.
      Definition: plugins.h:310
      +
      int(* init)(unsigned long flags)
      Process-wide component initialization callback.
      Definition: plugins.h:291
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00191_source.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00191_source.html new file mode 100644 index 0000000000..86edfdc4ed --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00191_source.html @@ -0,0 +1,114 @@ + + + + + + + +Hardware Locality (hwloc): netloc.h Source File + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      netloc.h
      +
      +
      +
      1 /*
      +
      2  * Copyright © 2013-2014 Cisco Systems, Inc. All rights reserved.
      +
      3  * Copyright © 2013-2014 University of Wisconsin-La Crosse.
      +
      4  * All rights reserved.
      +
      5  * Copyright © 2015-2016 Inria. All rights reserved.
      +
      6  *
      +
      7  * $COPYRIGHT$
      +
      8  *
      +
      9  * Additional copyrights may follow
      +
      10  * See COPYING in top-level directory.
      +
      11  *
      +
      12  * $HEADER$
      +
      13  */
      +
      14 
      +
      15 #ifndef _NETLOC_H_
      +
      16 #define _NETLOC_H_
      +
      17 
      +
      18 #ifndef _GNU_SOURCE
      +
      19 #define _GNU_SOURCE // for asprintf
      +
      20 #endif
      +
      21 
      +
      22 #include <hwloc/autogen/config.h>
      +
      23 
      +
      24 #include <hwloc.h>
      +
      25 
      +
      26 #ifdef __cplusplus
      +
      27 extern "C" {
      +
      28 #endif
      +
      29 
      +
      36 enum {
      + +
      38  NETLOC_ERROR = -1,
      + + + + + + + +
      46  NETLOC_ERROR_MAX = -9
      +
      47 };
      +
      48 
      +
      49 
      +
      50 #ifdef __cplusplus
      +
      51 } /* extern "C" */
      +
      52 #endif
      +
      53 
      +
      56 #endif // _NETLOC_H_
      +
      @ NETLOC_ERROR_EMPTY
      Definition: netloc.h:41
      +
      @ NETLOC_ERROR_MAX
      Definition: netloc.h:46
      +
      @ NETLOC_ERROR_MULTIPLE
      Definition: netloc.h:42
      +
      @ NETLOC_ERROR_NOT_IMPL
      Definition: netloc.h:43
      +
      @ NETLOC_ERROR
      Definition: netloc.h:38
      +
      @ NETLOC_SUCCESS
      Definition: netloc.h:37
      +
      @ NETLOC_ERROR_NOT_FOUND
      Definition: netloc.h:45
      +
      @ NETLOC_ERROR_EXISTS
      Definition: netloc.h:44
      +
      @ NETLOC_ERROR_NOTDIR
      Definition: netloc.h:39
      +
      @ NETLOC_ERROR_NOENT
      Definition: netloc.h:40
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00194.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00194.html new file mode 100644 index 0000000000..b6e7904f2a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00194.html @@ -0,0 +1,127 @@ + + + + + + + +Hardware Locality (hwloc): API version + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      API version
      +
      +
      + + + + + + +

      +Macros

      #define HWLOC_API_VERSION   0x00020500
       
      #define HWLOC_COMPONENT_ABI   7
       
      + + + +

      +Functions

      unsigned hwloc_get_api_version (void)
       
      +

      Detailed Description

      +

      Macro Definition Documentation

      + +

      ◆ HWLOC_API_VERSION

      + +
      +
      + + + + +
      #define HWLOC_API_VERSION   0x00020500
      +
      + +

      Indicate at build time which hwloc API version is being used.

      +

      This number is updated to (X<<16)+(Y<<8)+Z when a new release X.Y.Z actually modifies the API.

      +

      Users may check for available features at build time using this number (see How do I handle API changes?).

      +
      Note
      This should not be confused with HWLOC_VERSION, the library version. Two stable releases of the same series usually have the same HWLOC_API_VERSION even if their HWLOC_VERSION are different.
      + +
      +
      + +

      ◆ HWLOC_COMPONENT_ABI

      + +
      +
      + + + + +
      #define HWLOC_COMPONENT_ABI   7
      +
      + +

      Current component and plugin ABI version (see hwloc/plugins.h)

      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_get_api_version()

      + +
      +
      + + + + + + + + +
      unsigned hwloc_get_api_version (void )
      +
      + +

      Indicate at runtime which hwloc API version was used at build time.

      +

      Should be HWLOC_API_VERSION if running on the same version.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00195.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00195.html new file mode 100644 index 0000000000..efbb782a5e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00195.html @@ -0,0 +1,139 @@ + + + + + + + +Hardware Locality (hwloc): Object Sets (hwloc_cpuset_t and hwloc_nodeset_t) + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Object Sets (hwloc_cpuset_t and hwloc_nodeset_t)
      +
      +
      + + + + + + + + + + +

      +Typedefs

      typedef hwloc_bitmap_t hwloc_cpuset_t
       
      typedef hwloc_const_bitmap_t hwloc_const_cpuset_t
       
      typedef hwloc_bitmap_t hwloc_nodeset_t
       
      typedef hwloc_const_bitmap_t hwloc_const_nodeset_t
       
      +

      Detailed Description

      +

      Hwloc uses bitmaps to represent two distinct kinds of object sets: CPU sets (hwloc_cpuset_t) and NUMA node sets (hwloc_nodeset_t). These types are both typedefs to a common back end type (hwloc_bitmap_t), and therefore all the hwloc bitmap functions are applicable to both hwloc_cpuset_t and hwloc_nodeset_t (see The bitmap API).

      +

      The rationale for having two different types is that even though the actions one wants to perform on these types are the same (e.g., enable and disable individual items in the set/mask), they're used in very different contexts: one for specifying which processors to use and one for specifying which NUMA nodes to use. Hence, the name difference is really just to reflect the intent of where the type is used.

      +

      Typedef Documentation

      + +

      ◆ hwloc_const_cpuset_t

      + +
      +
      + +

      A non-modifiable hwloc_cpuset_t.

      + +
      +
      + +

      ◆ hwloc_const_nodeset_t

      + +
      +
      + +

      A non-modifiable hwloc_nodeset_t.

      + +
      +
      + +

      ◆ hwloc_cpuset_t

      + +
      +
      + + + + +
      typedef hwloc_bitmap_t hwloc_cpuset_t
      +
      + +

      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.

      +

      It may be consulted and modified with the bitmap API as any hwloc_bitmap_t (see hwloc/bitmap.h).

      +

      Each bit may be converted into a PU object using hwloc_get_pu_obj_by_os_index().

      + +
      +
      + +

      ◆ hwloc_nodeset_t

      + +
      +
      + + + + +
      typedef hwloc_bitmap_t hwloc_nodeset_t
      +
      + +

      A node set is a bitmap whose bits are set according to NUMA memory node physical OS indexes.

      +

      It may be consulted and modified with the bitmap API as any hwloc_bitmap_t (see hwloc/bitmap.h). Each bit may be converted into a NUMA node object using hwloc_get_numanode_obj_by_os_index().

      +

      When binding memory on a system without any NUMA node, the single main memory bank is considered as NUMA node #0.

      +

      See also Converting between CPU sets and node sets.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00196.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00196.html new file mode 100644 index 0000000000..18dad34a35 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00196.html @@ -0,0 +1,387 @@ + + + + + + + +Hardware Locality (hwloc): Object Types + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Object Types
      +
      +
      + + + + +

      +Macros

      #define HWLOC_TYPE_UNORDERED
       
      + + + + + + + +

      +Typedefs

      typedef enum hwloc_obj_cache_type_e hwloc_obj_cache_type_t
       
      typedef enum hwloc_obj_bridge_type_e hwloc_obj_bridge_type_t
       
      typedef enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t
       
      + + + + + + + + + +

      +Enumerations

      enum  hwloc_obj_type_t {
      +  HWLOC_OBJ_MACHINE +, HWLOC_OBJ_PACKAGE +, HWLOC_OBJ_CORE +, HWLOC_OBJ_PU +,
      +  HWLOC_OBJ_L1CACHE +, HWLOC_OBJ_L2CACHE +, HWLOC_OBJ_L3CACHE +, HWLOC_OBJ_L4CACHE +,
      +  HWLOC_OBJ_L5CACHE +, HWLOC_OBJ_L1ICACHE +, HWLOC_OBJ_L2ICACHE +, HWLOC_OBJ_L3ICACHE +,
      +  HWLOC_OBJ_GROUP +, HWLOC_OBJ_NUMANODE +, HWLOC_OBJ_BRIDGE +, HWLOC_OBJ_PCI_DEVICE +,
      +  HWLOC_OBJ_OS_DEVICE +, HWLOC_OBJ_MISC +, HWLOC_OBJ_MEMCACHE +, HWLOC_OBJ_DIE +,
      +  HWLOC_OBJ_TYPE_MAX +
      + }
       
      enum  hwloc_obj_cache_type_e { HWLOC_OBJ_CACHE_UNIFIED +, HWLOC_OBJ_CACHE_DATA +, HWLOC_OBJ_CACHE_INSTRUCTION + }
       
      enum  hwloc_obj_bridge_type_e { HWLOC_OBJ_BRIDGE_HOST +, HWLOC_OBJ_BRIDGE_PCI + }
       
      enum  hwloc_obj_osdev_type_e {
      +  HWLOC_OBJ_OSDEV_BLOCK +, HWLOC_OBJ_OSDEV_GPU +, HWLOC_OBJ_OSDEV_NETWORK +, HWLOC_OBJ_OSDEV_OPENFABRICS +,
      +  HWLOC_OBJ_OSDEV_DMA +, HWLOC_OBJ_OSDEV_COPROC +
      + }
       
      + + + +

      +Functions

      int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2)
       
      +

      Detailed Description

      +

      Macro Definition Documentation

      + +

      ◆ HWLOC_TYPE_UNORDERED

      + +
      +
      + + + + +
      #define HWLOC_TYPE_UNORDERED
      +
      + +

      Value returned by hwloc_compare_types() when types can not be compared.

      + +
      +
      +

      Typedef Documentation

      + +

      ◆ hwloc_obj_bridge_type_t

      + +
      +
      + +

      Type of one side (upstream or downstream) of an I/O bridge.

      + +
      +
      + +

      ◆ hwloc_obj_cache_type_t

      + +
      +
      + +

      Cache type.

      + +
      +
      + +

      ◆ hwloc_obj_osdev_type_t

      + +
      +
      + +

      Type of a OS device.

      + +
      +
      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_obj_bridge_type_e

      + +
      +
      + + + + +
      enum hwloc_obj_bridge_type_e
      +
      + +

      Type of one side (upstream or downstream) of an I/O bridge.

      + + + +
      Enumerator
      HWLOC_OBJ_BRIDGE_HOST 

      Host-side of a bridge, only possible upstream.

      +
      HWLOC_OBJ_BRIDGE_PCI 

      PCI-side of a bridge.

      +
      + +
      +
      + +

      ◆ hwloc_obj_cache_type_e

      + +
      +
      + + + + +
      enum hwloc_obj_cache_type_e
      +
      + +

      Cache type.

      + + + + +
      Enumerator
      HWLOC_OBJ_CACHE_UNIFIED 

      Unified cache.

      +
      HWLOC_OBJ_CACHE_DATA 

      Data cache.

      +
      HWLOC_OBJ_CACHE_INSTRUCTION 

      Instruction cache (filtered out by default).

      +
      + +
      +
      + +

      ◆ hwloc_obj_osdev_type_e

      + +
      +
      + + + + +
      enum hwloc_obj_osdev_type_e
      +
      + +

      Type of a OS device.

      + + + + + + + +
      Enumerator
      HWLOC_OBJ_OSDEV_BLOCK 

      Operating system block device, or non-volatile memory device. For instance "sda" or "dax2.0" on Linux.

      +
      HWLOC_OBJ_OSDEV_GPU 

      Operating system GPU device. For instance ":0.0" for a GL display, "card0" for a Linux DRM device.

      +
      HWLOC_OBJ_OSDEV_NETWORK 

      Operating system network device. For instance the "eth0" interface on Linux.

      +
      HWLOC_OBJ_OSDEV_OPENFABRICS 

      Operating system openfabrics device. For instance the "mlx4_0" InfiniBand HCA, "hfi1_0" Omni-Path interface, or "bxi0" Atos/Bull BXI HCA on Linux.

      +
      HWLOC_OBJ_OSDEV_DMA 

      Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux.

      +
      HWLOC_OBJ_OSDEV_COPROC 

      Operating system co-processor device. For instance "opencl0d0" for a OpenCL device, "cuda0" for a CUDA device.

      +
      + +
      +
      + +

      ◆ hwloc_obj_type_t

      + +
      +
      + + + + +
      enum hwloc_obj_type_t
      +
      + +

      Type of topology object.

      +
      Note
      Do not rely on the ordering or completeness of the values as new ones may be defined in the future! If you need to compare types, use hwloc_compare_types() instead.
      + + + + + + + + + + + + + + + + + + + + + +
      Enumerator
      HWLOC_OBJ_MACHINE 

      Machine. A set of processors and memory with cache coherency.

      +

      This type is always used for the root object of a topology, and never used anywhere else. Hence its parent is always NULL.

      +
      HWLOC_OBJ_PACKAGE 

      Physical package. The physical package that usually gets inserted into a socket on the motherboard. A processor package usually contains multiple cores, and possibly some dies.

      +
      HWLOC_OBJ_CORE 

      Core. A computation unit (may be shared by several PUs, aka logical processors).

      +
      HWLOC_OBJ_PU 

      Processing Unit, or (Logical) Processor. An execution unit (may share a core with some other logical processors, e.g. in the case of an SMT core).

      +

      This is the smallest object representing CPU resources, it cannot have any child except Misc objects.

      +

      Objects of this kind are always reported and can thus be used as fallback when others are not.

      +
      HWLOC_OBJ_L1CACHE 

      Level 1 Data (or Unified) Cache.

      +
      HWLOC_OBJ_L2CACHE 

      Level 2 Data (or Unified) Cache.

      +
      HWLOC_OBJ_L3CACHE 

      Level 3 Data (or Unified) Cache.

      +
      HWLOC_OBJ_L4CACHE 

      Level 4 Data (or Unified) Cache.

      +
      HWLOC_OBJ_L5CACHE 

      Level 5 Data (or Unified) Cache.

      +
      HWLOC_OBJ_L1ICACHE 

      Level 1 instruction Cache (filtered out by default).

      +
      HWLOC_OBJ_L2ICACHE 

      Level 2 instruction Cache (filtered out by default).

      +
      HWLOC_OBJ_L3ICACHE 

      Level 3 instruction Cache (filtered out by default).

      +
      HWLOC_OBJ_GROUP 

      Group objects. Objects which do not fit in the above but are detected by hwloc and are useful to take into account for affinity. For instance, some operating systems expose their arbitrary processors aggregation this way. And hwloc may insert such objects to group NUMA nodes according to their distances. See also What are these Group objects in my topology?.

      +

      These objects are removed when they do not bring any structure (see HWLOC_TYPE_FILTER_KEEP_STRUCTURE).

      +
      HWLOC_OBJ_NUMANODE 

      NUMA node. An object that contains memory that is directly and byte-accessible to the host processors. It is usually close to some cores (the corresponding objects are descendants of the NUMA node object in the hwloc tree).

      +

      This is the smallest object representing Memory resources, it cannot have any child except Misc objects. However it may have Memory-side cache parents.

      +

      There is always at least one such object in the topology even if the machine is not NUMA.

      +

      Memory objects are not listed in the main children list, but rather in the dedicated Memory children list.

      +

      NUMA nodes have a special depth HWLOC_TYPE_DEPTH_NUMANODE instead of a normal depth just like other objects in the main tree.

      +
      HWLOC_OBJ_BRIDGE 

      Bridge (filtered out by default). Any bridge (or PCI switch) that connects the host or an I/O bus, to another I/O bus.

      +

      Bridges are not added to the topology unless their filtering is changed (see hwloc_topology_set_type_filter() and hwloc_topology_set_io_types_filter()).

      +

      I/O objects are not listed in the main children list, but rather in the dedicated io children list. I/O objects have NULL CPU and node sets.

      +
      HWLOC_OBJ_PCI_DEVICE 

      PCI device (filtered out by default).

      +

      PCI devices are not added to the topology unless their filtering is changed (see hwloc_topology_set_type_filter() and hwloc_topology_set_io_types_filter()).

      +

      I/O objects are not listed in the main children list, but rather in the dedicated io children list. I/O objects have NULL CPU and node sets.

      +
      HWLOC_OBJ_OS_DEVICE 

      Operating system device (filtered out by default).

      +

      OS devices are not added to the topology unless their filtering is changed (see hwloc_topology_set_type_filter() and hwloc_topology_set_io_types_filter()).

      +

      I/O objects are not listed in the main children list, but rather in the dedicated io children list. I/O objects have NULL CPU and node sets.

      +
      HWLOC_OBJ_MISC 

      Miscellaneous objects (filtered out by default). Objects without particular meaning, that can e.g. be added by the application for its own use, or by hwloc for miscellaneous objects such as MemoryModule (DIMMs).

      +

      They are not added to the topology unless their filtering is changed (see hwloc_topology_set_type_filter()).

      +

      These objects are not listed in the main children list, but rather in the dedicated misc children list. Misc objects may only have Misc objects as children, and those are in the dedicated misc children list as well. Misc objects have NULL CPU and node sets.

      +
      HWLOC_OBJ_MEMCACHE 

      Memory-side cache (filtered out by default). A cache in front of a specific NUMA node.

      +

      This object always has at least one NUMA node as a memory child.

      +

      Memory objects are not listed in the main children list, but rather in the dedicated Memory children list.

      +

      Memory-side cache have a special depth HWLOC_TYPE_DEPTH_MEMCACHE instead of a normal depth just like other objects in the main tree.

      +
      HWLOC_OBJ_DIE 

      Die within a physical package. A subpart of the physical package, that contains multiple cores.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_compare_types()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_compare_types (hwloc_obj_type_t type1,
      hwloc_obj_type_t type2 
      )
      +
      + +

      Compare the depth of two object types.

      +

      Types shouldn't be compared as they are, since newer ones may be added in the future. This function returns less than, equal to, or greater than zero respectively if type1 objects usually include type2 objects, are the same as type2 objects, or are included in type2 objects. If the types can not be compared (because neither is usually contained in the other), HWLOC_TYPE_UNORDERED is returned. Object types containing CPUs can always be compared (usually, a system contains machines which contain nodes which contain packages which contain caches, which contain cores, which contain processors).

      +
      Note
      HWLOC_OBJ_PU will always be the deepest, while HWLOC_OBJ_MACHINE is always the highest.
      +
      +This does not mean that the actual topology will respect that order: e.g. as of today cores may also contain caches, and packages may also contain nodes. This is thus just to be seen as a fallback comparison method.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00197.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00197.html new file mode 100644 index 0000000000..4944bfe80c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00197.html @@ -0,0 +1,88 @@ + + + + + + + +Hardware Locality (hwloc): Object Structure and Attributes + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Object Structure and Attributes
      +
      +
      + + + + + + + + +

      +Data Structures

      struct  hwloc_obj
       
      union  hwloc_obj_attr_u
       
      struct  hwloc_info_s
       
      + + + +

      +Typedefs

      typedef struct hwloc_objhwloc_obj_t
       
      +

      Detailed Description

      +

      Typedef Documentation

      + +

      ◆ hwloc_obj_t

      + +
      +
      + + + + +
      typedef struct hwloc_obj* hwloc_obj_t
      +
      + +

      Convenience typedef; a pointer to a struct hwloc_obj.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00198.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00198.html new file mode 100644 index 0000000000..95e784ebbc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00198.html @@ -0,0 +1,272 @@ + + + + + + + +Hardware Locality (hwloc): Topology Creation and Destruction + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Topology Creation and Destruction
      +
      +
      + + + + +

      +Typedefs

      typedef struct hwloc_topology * hwloc_topology_t
       
      + + + + + + + + + + + + + +

      +Functions

      int hwloc_topology_init (hwloc_topology_t *topologyp)
       
      int hwloc_topology_load (hwloc_topology_t topology)
       
      void hwloc_topology_destroy (hwloc_topology_t topology)
       
      int hwloc_topology_dup (hwloc_topology_t *newtopology, hwloc_topology_t oldtopology)
       
      int hwloc_topology_abi_check (hwloc_topology_t topology)
       
      void hwloc_topology_check (hwloc_topology_t topology)
       
      +

      Detailed Description

      +

      Typedef Documentation

      + +

      ◆ hwloc_topology_t

      + +
      +
      + + + + +
      typedef struct hwloc_topology* hwloc_topology_t
      +
      + +

      Topology context.

      +

      To be initialized with hwloc_topology_init() and built with hwloc_topology_load().

      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_topology_abi_check()

      + +
      +
      + + + + + + + + +
      int hwloc_topology_abi_check (hwloc_topology_t topology)
      +
      + +

      Verify that the topology is compatible with the current hwloc library.

      +

      This is useful when using the same topology structure (in memory) in different libraries that may use different hwloc installations (for instance if one library embeds a specific version of hwloc, while another library uses a default system-wide hwloc installation).

      +

      If all libraries/programs use the same hwloc installation, this function always returns success.

      +
      Returns
      0 on success.
      +
      +-1 with errno set to EINVAL if incompatible.
      +
      Note
      If sharing between processes with hwloc_shmem_topology_write(), the relevant check is already performed inside hwloc_shmem_topology_adopt().
      + +
      +
      + +

      ◆ hwloc_topology_check()

      + +
      +
      + + + + + + + + +
      void hwloc_topology_check (hwloc_topology_t topology)
      +
      + +

      Run internal checks on a topology structure.

      +

      The program aborts if an inconsistency is detected in the given topology.

      +
      Parameters
      + + +
      topologyis the topology to be checked
      +
      +
      +
      Note
      This routine is only useful to developers.
      +
      +The input topology should have been previously loaded with hwloc_topology_load().
      + +
      +
      + +

      ◆ hwloc_topology_destroy()

      + +
      +
      + + + + + + + + +
      void hwloc_topology_destroy (hwloc_topology_t topology)
      +
      + +

      Terminate and free a topology context.

      +
      Parameters
      + + +
      topologyis the topology to be freed
      +
      +
      + +
      +
      + +

      ◆ hwloc_topology_dup()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_dup (hwloc_topology_tnewtopology,
      hwloc_topology_t oldtopology 
      )
      +
      + +

      Duplicate a topology.

      +

      The entire topology structure as well as its objects are duplicated into a new one.

      +

      This is useful for keeping a backup while modifying a topology.

      +
      Note
      Object userdata is not duplicated since hwloc does not know what it point to. The objects of both old and new topologies will point to the same userdata.
      + +
      +
      + +

      ◆ hwloc_topology_init()

      + +
      +
      + + + + + + + + +
      int hwloc_topology_init (hwloc_topology_ttopologyp)
      +
      + +

      Allocate a topology context.

      +
      Parameters
      + + +
      [out]topologypis assigned a pointer to the new allocated context.
      +
      +
      +
      Returns
      0 on success, -1 on error.
      + +
      +
      + +

      ◆ hwloc_topology_load()

      + +
      +
      + + + + + + + + +
      int hwloc_topology_load (hwloc_topology_t topology)
      +
      + +

      Build the actual topology.

      +

      Build the actual topology once initialized with hwloc_topology_init() and tuned with Topology Detection Configuration and Query and Changing the Source of Topology Discovery routines. No other routine may be called earlier using this topology context.

      +
      Parameters
      + + +
      topologyis the topology to be loaded with objects.
      +
      +
      +
      Returns
      0 on success, -1 on error.
      +
      Note
      On failure, the topology is reinitialized. It should be either destroyed with hwloc_topology_destroy() or configured and loaded again.
      +
      +This function may be called only once per topology.
      +
      +The binding of the current thread or process may temporarily change during this call but it will be restored before it returns.
      +
      See also
      Topology Detection Configuration and Query and Changing the Source of Topology Discovery
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00199.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00199.html new file mode 100644 index 0000000000..3866e130b9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00199.html @@ -0,0 +1,603 @@ + + + + + + + +Hardware Locality (hwloc): Object levels, depths and types + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Object levels, depths and types
      +
      +
      + + + + +

      +Enumerations

      enum  hwloc_get_type_depth_e {
      +  HWLOC_TYPE_DEPTH_UNKNOWN +, HWLOC_TYPE_DEPTH_MULTIPLE +, HWLOC_TYPE_DEPTH_NUMANODE +, HWLOC_TYPE_DEPTH_BRIDGE +,
      +  HWLOC_TYPE_DEPTH_PCI_DEVICE +, HWLOC_TYPE_DEPTH_OS_DEVICE +, HWLOC_TYPE_DEPTH_MISC +, HWLOC_TYPE_DEPTH_MEMCACHE +
      + }
       
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_topology_get_depth (hwloc_topology_t restrict topology)
       
      int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type)
       
      int hwloc_get_memory_parents_depth (hwloc_topology_t topology)
       
      static int hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type)
       
      static int hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type)
       
      hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, int depth)
       
      unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, int depth)
       
      static int hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type)
       
      static hwloc_obj_t hwloc_get_root_obj (hwloc_topology_t topology)
       
      hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, int depth, unsigned idx)
       
      static hwloc_obj_t hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx)
       
      static hwloc_obj_t hwloc_get_next_obj_by_depth (hwloc_topology_t topology, int depth, hwloc_obj_t prev)
       
      static hwloc_obj_t hwloc_get_next_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, hwloc_obj_t prev)
       
      +

      Detailed Description

      +

      Be sure to see the figure in Terms and Definitions that shows a complete topology tree, including depths, child/sibling/cousin relationships, and an example of an asymmetric topology where one package has fewer caches than its peers.

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_get_type_depth_e

      + +
      +
      + + + + +
      enum hwloc_get_type_depth_e
      +
      + + + + + + + + + +
      Enumerator
      HWLOC_TYPE_DEPTH_UNKNOWN 

      No object of given type exists in the topology.

      +
      HWLOC_TYPE_DEPTH_MULTIPLE 

      Objects of given type exist at different depth in the topology (only for Groups).

      +
      HWLOC_TYPE_DEPTH_NUMANODE 

      Virtual depth for NUMA nodes.

      +
      HWLOC_TYPE_DEPTH_BRIDGE 

      Virtual depth for bridge object level.

      +
      HWLOC_TYPE_DEPTH_PCI_DEVICE 

      Virtual depth for PCI device object level.

      +
      HWLOC_TYPE_DEPTH_OS_DEVICE 

      Virtual depth for software device object level.

      +
      HWLOC_TYPE_DEPTH_MISC 

      Virtual depth for Misc object.

      +
      HWLOC_TYPE_DEPTH_MEMCACHE 

      Virtual depth for MemCache object.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_get_depth_type()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology,
      int depth 
      )
      +
      + +

      Returns the type of objects at depth depth.

      +

      depth should between 0 and hwloc_topology_get_depth()-1, or a virtual depth such as HWLOC_TYPE_DEPTH_NUMANODE.

      +
      Returns
      (hwloc_obj_type_t)-1 if depth depth does not exist.
      + +
      +
      + +

      ◆ hwloc_get_memory_parents_depth()

      + +
      +
      + + + + + + + + +
      int hwloc_get_memory_parents_depth (hwloc_topology_t topology)
      +
      + +

      Return the depth of parents where memory objects are attached.

      +

      Memory objects have virtual negative depths because they are not part of the main CPU-side hierarchy of objects. This depth should not be compared with other level depths.

      +

      If all Memory objects are attached to Normal parents at the same depth, this parent depth may be compared to other as usual, for instance for knowing whether NUMA nodes is attached above or below Packages.

      +
      Returns
      The depth of Normal parents of all memory children if all these parents have the same depth. For instance the depth of the Package level if all NUMA nodes are attached to Package objects.
      +
      +HWLOC_TYPE_DEPTH_MULTIPLE if Normal parents of all memory children do not have the same depth. For instance if some NUMA nodes are attached to Packages while others are attached to Groups.
      + +
      +
      + +

      ◆ hwloc_get_nbobjs_by_depth()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology,
      int depth 
      )
      +
      + +

      Returns the width of level at depth depth.

      + +
      +
      + +

      ◆ hwloc_get_nbobjs_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static int hwloc_get_nbobjs_by_type (hwloc_topology_t topology,
      hwloc_obj_type_t type 
      )
      +
      +inlinestatic
      +
      + +

      Returns the width of level type type.

      +

      If no object for that type exists, 0 is returned. If there are several levels with objects of that type, -1 is returned.

      + +
      +
      + +

      ◆ hwloc_get_next_obj_by_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_obj_by_depth (hwloc_topology_t topology,
      int depth,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Returns the next object at depth depth.

      +

      If prev is NULL, return the first object at depth depth.

      + +
      +
      + +

      ◆ hwloc_get_next_obj_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_obj_by_type (hwloc_topology_t topology,
      hwloc_obj_type_t type,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Returns the next object of type type.

      +

      If prev is NULL, return the first object at type type. If there are multiple or no depth for given type, return NULL and let the caller fallback to hwloc_get_next_obj_by_depth().

      + +
      +
      + +

      ◆ hwloc_get_obj_by_depth()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology,
      int depth,
      unsigned idx 
      )
      +
      + +

      Returns the topology object at logical index idx from depth depth.

      + +
      +
      + +

      ◆ hwloc_get_obj_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_obj_by_type (hwloc_topology_t topology,
      hwloc_obj_type_t type,
      unsigned idx 
      )
      +
      +inlinestatic
      +
      + +

      Returns the topology object at logical index idx with type type.

      +

      If no object for that type exists, NULL is returned. If there are several levels with objects of that type (HWLOC_OBJ_GROUP), NULL is returned and the caller may fallback to hwloc_get_obj_by_depth().

      + +
      +
      + +

      ◆ hwloc_get_root_obj()

      + +
      +
      + + + + + +
      + + + + + + + + +
      static hwloc_obj_t hwloc_get_root_obj (hwloc_topology_t topology)
      +
      +inlinestatic
      +
      + +

      Returns the top-object of the topology-tree.

      +

      Its type is HWLOC_OBJ_MACHINE.

      + +
      +
      + +

      ◆ hwloc_get_type_depth()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_get_type_depth (hwloc_topology_t topology,
      hwloc_obj_type_t type 
      )
      +
      + +

      Returns the depth of objects of type type.

      +

      If no object of this type is present on the underlying architecture, or if the OS doesn't provide this kind of information, the function returns HWLOC_TYPE_DEPTH_UNKNOWN.

      +

      If type is absent but a similar type is acceptable, see also hwloc_get_type_or_below_depth() and hwloc_get_type_or_above_depth().

      +

      If HWLOC_OBJ_GROUP is given, the function may return HWLOC_TYPE_DEPTH_MULTIPLE if multiple levels of Groups exist.

      +

      If a NUMA node, I/O or Misc object type is given, the function returns a virtual value because these objects are stored in special levels that are not CPU-related. This virtual depth may be passed to other hwloc functions such as hwloc_get_obj_by_depth() but it should not be considered as an actual depth by the application. In particular, it should not be compared with any other object depth or with the entire topology depth.

      See also
      hwloc_get_memory_parents_depth().
      +
      +hwloc_type_sscanf_as_depth() for returning the depth of objects whose type is given as a string.
      + +
      +
      + +

      ◆ hwloc_get_type_or_above_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static int hwloc_get_type_or_above_depth (hwloc_topology_t topology,
      hwloc_obj_type_t type 
      )
      +
      +inlinestatic
      +
      + +

      Returns the depth of objects of type type or above.

      +

      If no object of this type is present on the underlying architecture, the function returns the depth of the first "present" object typically containing type.

      +

      This function is only meaningful for normal object types. If a memory, I/O or Misc object type is given, the corresponding virtual depth is always returned (see hwloc_get_type_depth()).

      +

      May return HWLOC_TYPE_DEPTH_MULTIPLE for HWLOC_OBJ_GROUP just like hwloc_get_type_depth().

      + +
      +
      + +

      ◆ hwloc_get_type_or_below_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static int hwloc_get_type_or_below_depth (hwloc_topology_t topology,
      hwloc_obj_type_t type 
      )
      +
      +inlinestatic
      +
      + +

      Returns the depth of objects of type type or below.

      +

      If no object of this type is present on the underlying architecture, the function returns the depth of the first "present" object typically found inside type.

      +

      This function is only meaningful for normal object types. If a memory, I/O or Misc object type is given, the corresponding virtual depth is always returned (see hwloc_get_type_depth()).

      +

      May return HWLOC_TYPE_DEPTH_MULTIPLE for HWLOC_OBJ_GROUP just like hwloc_get_type_depth().

      + +
      +
      + +

      ◆ hwloc_topology_get_depth()

      + +
      +
      + + + + + + + + +
      int hwloc_topology_get_depth (hwloc_topology_t restrict topology)
      +
      + +

      Get the depth of the hierarchical tree of objects.

      +

      This is the depth of HWLOC_OBJ_PU objects plus one.

      +
      Note
      NUMA nodes, I/O and Misc objects are ignored when computing the depth of the tree (they are placed on special levels).
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00200.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00200.html new file mode 100644 index 0000000000..4d3f4142bb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00200.html @@ -0,0 +1,291 @@ + + + + + + + +Hardware Locality (hwloc): Converting between Object Types and Attributes, and Strings + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Converting between Object Types and Attributes, and Strings
      +
      +
      + + + + + + + + + + + + +

      +Functions

      const char * hwloc_obj_type_string (hwloc_obj_type_t type)
       
      int hwloc_obj_type_snprintf (char *restrict string, size_t size, hwloc_obj_t obj, int verbose)
       
      int hwloc_obj_attr_snprintf (char *restrict string, size_t size, hwloc_obj_t obj, const char *restrict separator, int verbose)
       
      int hwloc_type_sscanf (const char *string, hwloc_obj_type_t *typep, union hwloc_obj_attr_u *attrp, size_t attrsize)
       
      int hwloc_type_sscanf_as_depth (const char *string, hwloc_obj_type_t *typep, hwloc_topology_t topology, int *depthp)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_obj_attr_snprintf()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_obj_attr_snprintf (char *restrict string,
      size_t size,
      hwloc_obj_t obj,
      const char *restrict separator,
      int verbose 
      )
      +
      + +

      Stringify the attributes of a given topology object into a human-readable form.

      +

      Attribute values are separated by separator.

      +

      Only the major attributes are printed in non-verbose mode.

      +

      If size is 0, string may safely be NULL.

      +
      Returns
      the number of character that were actually written if not truncating, or that would have been written (not including the ending \0).
      + +
      +
      + +

      ◆ hwloc_obj_type_snprintf()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_obj_type_snprintf (char *restrict string,
      size_t size,
      hwloc_obj_t obj,
      int verbose 
      )
      +
      + +

      Stringify the type of a given topology object into a human-readable form.

      +

      Contrary to hwloc_obj_type_string(), this function includes object-specific attributes (such as the Group depth, the Bridge type, or OS device type) in the output, and it requires the caller to provide the output buffer.

      +

      The output is guaranteed to be the same for all objects of a same topology level.

      +

      If verbose is 1, longer type names are used, e.g. L1Cache instead of L1.

      +

      The output string may be parsed back by hwloc_type_sscanf().

      +

      If size is 0, string may safely be NULL.

      +
      Returns
      the number of character that were actually written if not truncating, or that would have been written (not including the ending \0).
      + +
      +
      + +

      ◆ hwloc_obj_type_string()

      + +
      +
      + + + + + + + + +
      const char* hwloc_obj_type_string (hwloc_obj_type_t type)
      +
      + +

      Return a constant stringified object type.

      +

      This function is the basic way to convert a generic type into a string. The output string may be parsed back by hwloc_type_sscanf().

      +

      hwloc_obj_type_snprintf() may return a more precise output for a specific object, but it requires the caller to provide the output buffer.

      + +
      +
      + +

      ◆ hwloc_type_sscanf()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_type_sscanf (const char * string,
      hwloc_obj_type_ttypep,
      union hwloc_obj_attr_uattrp,
      size_t attrsize 
      )
      +
      + +

      Return an object type and attributes from a type string.

      +

      Convert strings such as "Package" or "L1iCache" into the corresponding types. Matching is case-insensitive, and only the first letters are actually required to match.

      +

      The matched object type is set in typep (which cannot be NULL).

      +

      Type-specific attributes, for instance Cache type, Cache depth, Group depth, Bridge type or OS Device type may be returned in attrp. Attributes that are not specified in the string (for instance "Group" without a depth, or "L2Cache" without a cache type) are set to -1.

      +

      attrp is only filled if not NULL and if its size specified in attrsize is large enough. It should be at least as large as union hwloc_obj_attr_u.

      +
      Returns
      0 if a type was correctly identified, otherwise -1.
      +
      Note
      This function is guaranteed to match any string returned by hwloc_obj_type_string() or hwloc_obj_type_snprintf().
      +
      +This is an extended version of the now deprecated hwloc_obj_type_sscanf().
      + +
      +
      + +

      ◆ hwloc_type_sscanf_as_depth()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_type_sscanf_as_depth (const char * string,
      hwloc_obj_type_ttypep,
      hwloc_topology_t topology,
      int * depthp 
      )
      +
      + +

      Return an object type and its level depth from a type string.

      +

      Convert strings such as "Package" or "L1iCache" into the corresponding types and return in depthp the depth of the corresponding level in the topology topology.

      +

      If no object of this type is present on the underlying architecture, HWLOC_TYPE_DEPTH_UNKNOWN is returned.

      +

      If multiple such levels exist (for instance if giving Group without any depth), the function may return HWLOC_TYPE_DEPTH_MULTIPLE instead.

      +

      The matched object type is set in typep if typep is non NULL.

      +
      Note
      This function is similar to hwloc_type_sscanf() followed by hwloc_get_type_depth() but it also automatically disambiguates multiple group levels etc.
      +
      +This function is guaranteed to match any string returned by hwloc_obj_type_string() or hwloc_obj_type_snprintf().
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00201.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00201.html new file mode 100644 index 0000000000..b157d36043 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00201.html @@ -0,0 +1,146 @@ + + + + + + + +Hardware Locality (hwloc): Consulting and Adding Key-Value Info Attributes + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Consulting and Adding Key-Value Info Attributes
      +
      +
      + + + + + + +

      +Functions

      static const char * hwloc_obj_get_info_by_name (hwloc_obj_t obj, const char *name)
       
      int hwloc_obj_add_info (hwloc_obj_t obj, const char *name, const char *value)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_obj_add_info()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_obj_add_info (hwloc_obj_t obj,
      const char * name,
      const char * value 
      )
      +
      + +

      Add the given info name and value pair to the given object.

      +

      The info is appended to the existing info array even if another key with the same name already exists.

      +

      The input strings are copied before being added in the object infos.

      +
      Returns
      0 on success, -1 on error.
      +
      Note
      This function may be used to enforce object colors in the lstopo graphical output by using "lstopoStyle" as a name and "Background=#rrggbb" as a value. See CUSTOM COLORS in the lstopo(1) manpage for details.
      +
      +If value contains some non-printable characters, they will be dropped when exporting to XML, see hwloc_topology_export_xml() in hwloc/export.h.
      + +
      +
      + +

      ◆ hwloc_obj_get_info_by_name()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static const char* hwloc_obj_get_info_by_name (hwloc_obj_t obj,
      const char * name 
      )
      +
      +inlinestatic
      +
      + +

      Search the given key name in object infos and return the corresponding value.

      +

      If multiple keys match the given name, only the first one is returned.

      +
      Returns
      NULL if no such key exists.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00202.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00202.html new file mode 100644 index 0000000000..83e822219c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00202.html @@ -0,0 +1,488 @@ + + + + + + + +Hardware Locality (hwloc): CPU binding + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      CPU binding
      +
      +
      + + + + +

      +Enumerations

      enum  hwloc_cpubind_flags_t { HWLOC_CPUBIND_PROCESS +, HWLOC_CPUBIND_THREAD +, HWLOC_CPUBIND_STRICT +, HWLOC_CPUBIND_NOMEMBIND + }
       
      + + + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_set_cpubind (hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags)
       
      int hwloc_get_cpubind (hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
       
      int hwloc_set_proc_cpubind (hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags)
       
      int hwloc_get_proc_cpubind (hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags)
       
      int hwloc_set_thread_cpubind (hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags)
       
      int hwloc_get_thread_cpubind (hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags)
       
      int hwloc_get_last_cpu_location (hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
       
      int hwloc_get_proc_last_cpu_location (hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags)
       
      +

      Detailed Description

      +

      Some operating systems only support binding threads or processes to a single PU. Others allow binding to larger sets such as entire Cores or Packages or even random sets of individual PUs. In such operating system, the scheduler is free to run the task on one of these PU, then migrate it to another PU, etc. It is often useful to call hwloc_bitmap_singlify() on the target CPU set before passing it to the binding function to avoid these expensive migrations. See the documentation of hwloc_bitmap_singlify() for details.

      +

      Some operating systems do not provide all hwloc-supported mechanisms to bind processes, threads, etc. hwloc_topology_get_support() may be used to query about the actual CPU binding support in the currently used operating system.

      +

      When the requested binding operation is not available and the HWLOC_CPUBIND_STRICT flag was passed, the function returns -1. errno is set to ENOSYS when it is not possible to bind the requested kind of object processes/threads. errno is set to EXDEV when the requested cpuset can not be enforced (e.g. some systems only allow one CPU, and some other systems only allow one NUMA node).

      +

      If HWLOC_CPUBIND_STRICT was not passed, the function may fail as well, or the operating system may use a slightly different operation (with side-effects, smaller binding set, etc.) when the requested operation is not exactly supported.

      +

      The most portable version that should be preferred over the others, whenever possible, is the following one which just binds the current program, assuming it is single-threaded:

      +
      hwloc_set_cpubind(topology, set, 0),
      +
      int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags)
      Bind current process or thread on CPUs given in physical bitmap set.
      +

      If the program may be multithreaded, the following one should be preferred to only bind the current thread:

      +
      +
      @ HWLOC_CPUBIND_THREAD
      Bind current thread of current process.
      Definition: hwloc.h:1162
      +
      See also
      Some example codes are available under doc/examples/ in the source tree.
      +
      Note
      To unbind, just call the binding function with either a full cpuset or a cpuset equal to the system cpuset.
      +
      +On some operating systems, CPU binding may have effects on memory binding, see HWLOC_CPUBIND_NOMEMBIND
      +
      +Running lstopo --top or hwloc-ps can be a very convenient tool to check how binding actually happened.
      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_cpubind_flags_t

      + +
      +
      + + + + +
      enum hwloc_cpubind_flags_t
      +
      + +

      Process/Thread binding flags.

      +

      These bit flags can be used to refine the binding policy.

      +

      The default (0) is to bind the current process, assumed to be single-threaded, in a non-strict way. This is the most portable way to bind as all operating systems usually provide it.

      +
      Note
      Not all systems support all kinds of binding. See the "Detailed Description" section of CPU binding for a description of errors that can occur.
      + + + + + +
      Enumerator
      HWLOC_CPUBIND_PROCESS 

      Bind all threads of the current (possibly) multithreaded process.

      +
      HWLOC_CPUBIND_THREAD 

      Bind current thread of current process.

      +
      HWLOC_CPUBIND_STRICT 

      Request for strict binding from the OS.

      +

      By default, when the designated CPUs are all busy while other CPUs are idle, operating systems may execute the thread/process on those other CPUs instead of the designated CPUs, to let them progress anyway. Strict binding means that the thread/process will _never_ execute on other CPUs than the designated CPUs, even when those are busy with other tasks and other CPUs are idle.

      +
      Note
      Depending on the operating system, strict binding may not be possible (e.g., the OS does not implement it) or not allowed (e.g., for an administrative reasons), and the function will fail in that case.
      +

      When retrieving the binding of a process, this flag checks whether all its threads actually have the same binding. If the flag is not given, the binding of each thread will be accumulated.

      +
      Note
      This flag is meaningless when retrieving the binding of a thread.
      +
      HWLOC_CPUBIND_NOMEMBIND 

      Avoid any effect on memory binding.

      +

      On some operating systems, some CPU binding function would also bind the memory on the corresponding NUMA node. It is often not a problem for the application, but if it is, setting this flag will make hwloc avoid using OS functions that would also bind memory. This will however reduce the support of CPU bindings, i.e. potentially return -1 with errno set to ENOSYS in some cases.

      +

      This flag is only meaningful when used with functions that set the CPU binding. It is ignored when used with functions that get CPU binding information.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_get_cpubind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_cpubind (hwloc_topology_t topology,
      hwloc_cpuset_t set,
      int flags 
      )
      +
      + +

      Get current process or thread binding.

      +

      The CPU-set set (previously allocated by the caller) is filled with the list of PUs which the process or thread (according to flags) was last bound to.

      + +
      +
      + +

      ◆ hwloc_get_last_cpu_location()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_last_cpu_location (hwloc_topology_t topology,
      hwloc_cpuset_t set,
      int flags 
      )
      +
      + +

      Get the last physical CPU where the current process or thread ran.

      +

      The CPU-set set (previously allocated by the caller) is filled with the list of PUs which the process or thread (according to flags) last ran on.

      +

      The operating system may move some tasks from one processor to another at any time according to their binding, so this function may return something that is already outdated.

      +

      flags can include either HWLOC_CPUBIND_PROCESS or HWLOC_CPUBIND_THREAD to specify whether the query should be for the whole process (union of all CPUs on which all threads are running), or only the current thread. If the process is single-threaded, flags can be set to zero to let hwloc use whichever method is available on the underlying OS.

      + +
      +
      + +

      ◆ hwloc_get_proc_cpubind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_proc_cpubind (hwloc_topology_t topology,
      hwloc_pid_t pid,
      hwloc_cpuset_t set,
      int flags 
      )
      +
      + +

      Get the current physical binding of process pid.

      +

      The CPU-set set (previously allocated by the caller) is filled with the list of PUs which the process was last bound to.

      +
      Note
      hwloc_pid_t is pid_t on Unix platforms, and HANDLE on native Windows platforms.
      +
      +As a special case on Linux, if a tid (thread ID) is supplied instead of a pid (process ID) and HWLOC_CPUBIND_THREAD is passed in flags, the binding for that specific thread is returned.
      +
      +On non-Linux systems, HWLOC_CPUBIND_THREAD can not be used in flags.
      + +
      +
      + +

      ◆ hwloc_get_proc_last_cpu_location()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_proc_last_cpu_location (hwloc_topology_t topology,
      hwloc_pid_t pid,
      hwloc_cpuset_t set,
      int flags 
      )
      +
      + +

      Get the last physical CPU where a process ran.

      +

      The CPU-set set (previously allocated by the caller) is filled with the list of PUs which the process last ran on.

      +

      The operating system may move some tasks from one processor to another at any time according to their binding, so this function may return something that is already outdated.

      +
      Note
      hwloc_pid_t is pid_t on Unix platforms, and HANDLE on native Windows platforms.
      +
      +As a special case on Linux, if a tid (thread ID) is supplied instead of a pid (process ID) and HWLOC_CPUBIND_THREAD is passed in flags, the last CPU location of that specific thread is returned.
      +
      +On non-Linux systems, HWLOC_CPUBIND_THREAD can not be used in flags.
      + +
      +
      + +

      ◆ hwloc_get_thread_cpubind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_thread_cpubind (hwloc_topology_t topology,
      hwloc_thread_t thread,
      hwloc_cpuset_t set,
      int flags 
      )
      +
      + +

      Get the current physical binding of thread tid.

      +

      The CPU-set set (previously allocated by the caller) is filled with the list of PUs which the thread was last bound to.

      +
      Note
      hwloc_thread_t is pthread_t on Unix platforms, and HANDLE on native Windows platforms.
      +
      +HWLOC_CPUBIND_PROCESS can not be used in flags.
      + +
      +
      + +

      ◆ hwloc_set_cpubind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_set_cpubind (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      int flags 
      )
      +
      + +

      Bind current process or thread on CPUs given in physical bitmap set.

      +
      Returns
      -1 with errno set to ENOSYS if the action is not supported
      +
      +-1 with errno set to EXDEV if the binding cannot be enforced
      + +
      +
      + +

      ◆ hwloc_set_proc_cpubind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_set_proc_cpubind (hwloc_topology_t topology,
      hwloc_pid_t pid,
      hwloc_const_cpuset_t set,
      int flags 
      )
      +
      + +

      Bind a process pid on CPUs given in physical bitmap set.

      +
      Note
      hwloc_pid_t is pid_t on Unix platforms, and HANDLE on native Windows platforms.
      +
      +As a special case on Linux, if a tid (thread ID) is supplied instead of a pid (process ID) and HWLOC_CPUBIND_THREAD is passed in flags, the binding is applied to that specific thread.
      +
      +On non-Linux systems, HWLOC_CPUBIND_THREAD can not be used in flags.
      + +
      +
      + +

      ◆ hwloc_set_thread_cpubind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_set_thread_cpubind (hwloc_topology_t topology,
      hwloc_thread_t thread,
      hwloc_const_cpuset_t set,
      int flags 
      )
      +
      + +

      Bind a thread thread on CPUs given in physical bitmap set.

      +
      Note
      hwloc_thread_t is pthread_t on Unix platforms, and HANDLE on native Windows platforms.
      +
      +HWLOC_CPUBIND_PROCESS can not be used in flags.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00203.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00203.html new file mode 100644 index 0000000000..4c4e215427 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00203.html @@ -0,0 +1,760 @@ + + + + + + + +Hardware Locality (hwloc): Memory binding + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Memory binding
      +
      +
      + + + + + + +

      +Enumerations

      enum  hwloc_membind_policy_t {
      +  HWLOC_MEMBIND_DEFAULT +, HWLOC_MEMBIND_FIRSTTOUCH +, HWLOC_MEMBIND_BIND +, HWLOC_MEMBIND_INTERLEAVE +,
      +  HWLOC_MEMBIND_NEXTTOUCH +, HWLOC_MEMBIND_MIXED +
      + }
       
      enum  hwloc_membind_flags_t {
      +  HWLOC_MEMBIND_PROCESS +, HWLOC_MEMBIND_THREAD +, HWLOC_MEMBIND_STRICT +, HWLOC_MEMBIND_MIGRATE +,
      +  HWLOC_MEMBIND_NOCPUBIND +, HWLOC_MEMBIND_BYNODESET +
      + }
       
      + + + + + + + + + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_set_membind (hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
       
      int hwloc_get_membind (hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
       
      int hwloc_set_proc_membind (hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
       
      int hwloc_get_proc_membind (hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
       
      int hwloc_set_area_membind (hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
       
      int hwloc_get_area_membind (hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
       
      int hwloc_get_area_memlocation (hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags)
       
      void * hwloc_alloc (hwloc_topology_t topology, size_t len)
       
      void * hwloc_alloc_membind (hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
       
      static void * hwloc_alloc_membind_policy (hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
       
      int hwloc_free (hwloc_topology_t topology, void *addr, size_t len)
       
      +

      Detailed Description

      +

      Memory binding can be done three ways:

      +
        +
      • explicit memory allocation thanks to hwloc_alloc_membind() and friends: the binding will have effect on the memory allocated by these functions.
      • +
      • implicit memory binding through binding policy: hwloc_set_membind() and friends only define the current policy of the process, which will be applied to the subsequent calls to malloc() and friends.
      • +
      • migration of existing memory ranges, thanks to hwloc_set_area_membind() and friends, which move already-allocated data.
      • +
      +

      Not all operating systems support all three ways. hwloc_topology_get_support() may be used to query about the actual memory binding support in the currently used operating system.

      +

      When the requested binding operation is not available and the HWLOC_MEMBIND_STRICT flag was passed, the function returns -1. errno will be set to ENOSYS when the system does support the specified action or policy (e.g., some systems only allow binding memory on a per-thread basis, whereas other systems only allow binding memory for all threads in a process). errno will be set to EXDEV when the requested set can not be enforced (e.g., some systems only allow binding memory to a single NUMA node).

      +

      If HWLOC_MEMBIND_STRICT was not passed, the function may fail as well, or the operating system may use a slightly different operation (with side-effects, smaller binding set, etc.) when the requested operation is not exactly supported.

      +

      The most portable form that should be preferred over the others whenever possible is as follows. It allocates some memory hopefully bound to the specified set. To do so, hwloc will possibly have to change the current memory binding policy in order to actually get the memory bound, if the OS does not provide any other way to simply allocate bound memory without changing the policy for all allocations. That is the difference with hwloc_alloc_membind(), which will never change the current memory binding policy.

      +
      hwloc_alloc_membind_policy(topology, size, set,
      + +
      static void * hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
      Allocate some memory on NUMA memory nodes specified by set.
      +
      @ HWLOC_MEMBIND_BIND
      Allocate memory on the specified nodes.
      Definition: hwloc.h:1421
      +

      Each hwloc memory binding function takes a bitmap argument that is a CPU set by default, or a NUMA memory node set if the flag HWLOC_MEMBIND_BYNODESET is specified. See Object Sets (hwloc_cpuset_t and hwloc_nodeset_t) and The bitmap API for a discussion of CPU sets and NUMA memory node sets. It is also possible to convert between CPU set and node set using hwloc_cpuset_to_nodeset() or hwloc_cpuset_from_nodeset().

      +

      Memory binding by CPU set cannot work for CPU-less NUMA memory nodes. Binding by nodeset should therefore be preferred whenever possible.

      +
      See also
      Some example codes are available under doc/examples/ in the source tree.
      +
      Note
      On some operating systems, memory binding affects the CPU binding; see HWLOC_MEMBIND_NOCPUBIND
      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_membind_flags_t

      + +
      +
      + + + + +
      enum hwloc_membind_flags_t
      +
      + +

      Memory binding flags.

      +

      These flags can be used to refine the binding policy. All flags can be logically OR'ed together with the exception of HWLOC_MEMBIND_PROCESS and HWLOC_MEMBIND_THREAD; these two flags are mutually exclusive.

      +

      Not all systems support all kinds of binding. hwloc_topology_get_support() may be used to query about the actual memory binding support in the currently used operating system. See the "Detailed Description" section of Memory binding for a description of errors that can occur.

      + + + + + + + +
      Enumerator
      HWLOC_MEMBIND_PROCESS 

      Set policy for all threads of the specified (possibly multithreaded) process. This flag is mutually exclusive with HWLOC_MEMBIND_THREAD.

      +
      HWLOC_MEMBIND_THREAD 

      Set policy for a specific thread of the current process. This flag is mutually exclusive with HWLOC_MEMBIND_PROCESS.

      +
      HWLOC_MEMBIND_STRICT 

      Request strict binding from the OS. The function will fail if the binding can not be guaranteed / completely enforced.

      +

      This flag has slightly different meanings depending on which function it is used with.

      +
      HWLOC_MEMBIND_MIGRATE 

      Migrate existing allocated memory. If the memory cannot be migrated and the HWLOC_MEMBIND_STRICT flag is passed, an error will be returned.

      +
      HWLOC_MEMBIND_NOCPUBIND 

      Avoid any effect on CPU binding.

      +

      On some operating systems, some underlying memory binding functions also bind the application to the corresponding CPU(s). Using this flag will cause hwloc to avoid using OS functions that could potentially affect CPU bindings. Note, however, that using NOCPUBIND may reduce hwloc's overall memory binding support. Specifically: some of hwloc's memory binding functions may fail with errno set to ENOSYS when used with NOCPUBIND.

      +
      HWLOC_MEMBIND_BYNODESET 

      Consider the bitmap argument as a nodeset.

      +

      The bitmap argument is considered a nodeset if this flag is given, or a cpuset otherwise by default.

      +

      Memory binding by CPU set cannot work for CPU-less NUMA memory nodes. Binding by nodeset should therefore be preferred whenever possible.

      +
      + +
      +
      + +

      ◆ hwloc_membind_policy_t

      + +
      +
      + + + + +
      enum hwloc_membind_policy_t
      +
      + +

      Memory binding policy.

      +

      These constants can be used to choose the binding policy. Only one policy can be used at a time (i.e., the values cannot be OR'ed together).

      +

      Not all systems support all kinds of binding. hwloc_topology_get_support() may be used to query about the actual memory binding policy support in the currently used operating system. See the "Detailed Description" section of Memory binding for a description of errors that can occur.

      + + + + + + + +
      Enumerator
      HWLOC_MEMBIND_DEFAULT 

      Reset the memory allocation policy to the system default. Depending on the operating system, this may correspond to HWLOC_MEMBIND_FIRSTTOUCH (Linux, FreeBSD), or HWLOC_MEMBIND_BIND (AIX, HP-UX, Solaris, Windows). This policy is never returned by get membind functions. The nodeset argument is ignored.

      +
      HWLOC_MEMBIND_FIRSTTOUCH 

      Allocate each memory page individually on the local NUMA node of the thread that touches it.

      +

      The given nodeset should usually be hwloc_topology_get_topology_nodeset() so that the touching thread may run and allocate on any node in the system.

      +

      On AIX, if the nodeset is smaller, pages are allocated locally (if the local node is in the nodeset) or from a random non-local node (otherwise).

      +
      HWLOC_MEMBIND_BIND 

      Allocate memory on the specified nodes.

      +
      HWLOC_MEMBIND_INTERLEAVE 

      Allocate memory on the given nodes in an interleaved / round-robin manner. The precise layout of the memory across multiple NUMA nodes is OS/system specific. Interleaving can be useful when threads distributed across the specified NUMA nodes will all be accessing the whole memory range concurrently, since the interleave will then balance the memory references.

      +
      HWLOC_MEMBIND_NEXTTOUCH 

      For each page bound with this policy, by next time it is touched (and next time only), it is moved from its current location to the local NUMA node of the thread where the memory reference occurred (if it needs to be moved at all).

      +
      HWLOC_MEMBIND_MIXED 

      Returned by get_membind() functions when multiple threads or parts of a memory area have differing memory binding policies. Also returned when binding is unknown because binding hooks are empty when the topology is loaded from XML without HWLOC_THISSYSTEM=1, etc.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_alloc()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      void* hwloc_alloc (hwloc_topology_t topology,
      size_t len 
      )
      +
      + +

      Allocate some memory.

      +

      This is equivalent to malloc(), except that it tries to allocate page-aligned memory from the OS.

      +
      Note
      The allocated memory should be freed with hwloc_free().
      + +
      +
      + +

      ◆ hwloc_alloc_membind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      void* hwloc_alloc_membind (hwloc_topology_t topology,
      size_t len,
      hwloc_const_bitmap_t set,
      hwloc_membind_policy_t policy,
      int flags 
      )
      +
      + +

      Allocate some memory on NUMA memory nodes specified by set.

      +
      Returns
      NULL with errno set to ENOSYS if the action is not supported and HWLOC_MEMBIND_STRICT is given
      +
      +NULL with errno set to EXDEV if the binding cannot be enforced and HWLOC_MEMBIND_STRICT is given
      +
      +NULL with errno set to ENOMEM if the memory allocation failed even before trying to bind.
      +

      If HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. Otherwise it's a cpuset.

      +
      Note
      The allocated memory should be freed with hwloc_free().
      + +
      +
      + +

      ◆ hwloc_alloc_membind_policy()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static void* hwloc_alloc_membind_policy (hwloc_topology_t topology,
      size_t len,
      hwloc_const_bitmap_t set,
      hwloc_membind_policy_t policy,
      int flags 
      )
      +
      +inlinestatic
      +
      + +

      Allocate some memory on NUMA memory nodes specified by set.

      +

      First, try to allocate properly with hwloc_alloc_membind(). On failure, the current process or thread memory binding policy is changed with hwloc_set_membind() before allocating memory. Thus this function works in more cases, at the expense of changing the current state (possibly affecting future allocations that would not specify any policy).

      +

      If HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. Otherwise it's a cpuset.

      + +
      +
      + +

      ◆ hwloc_free()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_free (hwloc_topology_t topology,
      void * addr,
      size_t len 
      )
      +
      + +

      Free memory that was previously allocated by hwloc_alloc() or hwloc_alloc_membind().

      + +
      +
      + +

      ◆ hwloc_get_area_membind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_area_membind (hwloc_topology_t topology,
      const void * addr,
      size_t len,
      hwloc_bitmap_t set,
      hwloc_membind_policy_tpolicy,
      int flags 
      )
      +
      + +

      Query the CPUs near the physical NUMA node(s) and binding policy of the memory identified by (addr, len ).

      +

      The bitmap set (previously allocated by the caller) is filled with the memory area binding.

      +

      This function has two output parameters: set and policy. The values returned in these parameters depend on both the flags passed in and the memory binding policies and nodesets of the pages in the address range.

      +

      If HWLOC_MEMBIND_STRICT is specified, the target pages are first checked to see if they all have the same memory binding policy and nodeset. If they do not, -1 is returned and errno is set to EXDEV. If they are identical across all pages, the set and policy are returned in set and policy, respectively.

      +

      If HWLOC_MEMBIND_STRICT is not specified, the union of all NUMA node(s) containing pages in the address range is calculated. If all pages in the target have the same policy, it is returned in policy. Otherwise, policy is set to HWLOC_MEMBIND_MIXED.

      +

      If HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. Otherwise it's a cpuset.

      +

      If any other flags are specified, -1 is returned and errno is set to EINVAL.

      +

      If len is 0, -1 is returned and errno is set to EINVAL.

      + +
      +
      + +

      ◆ hwloc_get_area_memlocation()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_area_memlocation (hwloc_topology_t topology,
      const void * addr,
      size_t len,
      hwloc_bitmap_t set,
      int flags 
      )
      +
      + +

      Get the NUMA nodes where memory identified by (addr, len ) is physically allocated.

      +

      The bitmap set (previously allocated by the caller) is filled according to the NUMA nodes where the memory area pages are physically allocated. If no page is actually allocated yet, set may be empty.

      +

      If pages spread to multiple nodes, it is not specified whether they spread equitably, or whether most of them are on a single node, etc.

      +

      The operating system may move memory pages from one processor to another at any time according to their binding, so this function may return something that is already outdated.

      +

      If HWLOC_MEMBIND_BYNODESET is specified in flags, set is considered a nodeset. Otherwise it's a cpuset.

      +

      If len is 0, set is emptied.

      + +
      +
      + +

      ◆ hwloc_get_membind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_membind (hwloc_topology_t topology,
      hwloc_bitmap_t set,
      hwloc_membind_policy_tpolicy,
      int flags 
      )
      +
      + +

      Query the default memory binding policy and physical locality of the current process or thread.

      +

      The bitmap set (previously allocated by the caller) is filled with the process or thread memory binding.

      +

      This function has two output parameters: set and policy. The values returned in these parameters depend on both the flags passed in and the current memory binding policies and nodesets in the queried target.

      +

      Passing the HWLOC_MEMBIND_PROCESS flag specifies that the query target is the current policies and nodesets for all the threads in the current process. Passing HWLOC_MEMBIND_THREAD specifies that the query target is the current policy and nodeset for only the thread invoking this function.

      +

      If neither of these flags are passed (which is the most portable method), the process is assumed to be single threaded. This allows hwloc to use either process-based OS functions or thread-based OS functions, depending on which are available.

      +

      HWLOC_MEMBIND_STRICT is only meaningful when HWLOC_MEMBIND_PROCESS is also specified. In this case, hwloc will check the default memory policies and nodesets for all threads in the process. If they are not identical, -1 is returned and errno is set to EXDEV. If they are identical, the values are returned in set and policy.

      +

      Otherwise, if HWLOC_MEMBIND_PROCESS is specified (and HWLOC_MEMBIND_STRICT is not specified), the default set from each thread is logically OR'ed together. If all threads' default policies are the same, policy is set to that policy. If they are different, policy is set to HWLOC_MEMBIND_MIXED.

      +

      In the HWLOC_MEMBIND_THREAD case (or when neither HWLOC_MEMBIND_PROCESS or HWLOC_MEMBIND_THREAD is specified), there is only one set and policy; they are returned in set and policy, respectively.

      +

      If HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. Otherwise it's a cpuset.

      +

      If any other flags are specified, -1 is returned and errno is set to EINVAL.

      + +
      +
      + +

      ◆ hwloc_get_proc_membind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_proc_membind (hwloc_topology_t topology,
      hwloc_pid_t pid,
      hwloc_bitmap_t set,
      hwloc_membind_policy_tpolicy,
      int flags 
      )
      +
      + +

      Query the default memory binding policy and physical locality of the specified process.

      +

      The bitmap set (previously allocated by the caller) is filled with the process memory binding.

      +

      This function has two output parameters: set and policy. The values returned in these parameters depend on both the flags passed in and the current memory binding policies and nodesets in the queried target.

      +

      Passing the HWLOC_MEMBIND_PROCESS flag specifies that the query target is the current policies and nodesets for all the threads in the specified process. If HWLOC_MEMBIND_PROCESS is not specified (which is the most portable method), the process is assumed to be single threaded. This allows hwloc to use either process-based OS functions or thread-based OS functions, depending on which are available.

      +

      Note that it does not make sense to pass HWLOC_MEMBIND_THREAD to this function.

      +

      If HWLOC_MEMBIND_STRICT is specified, hwloc will check the default memory policies and nodesets for all threads in the specified process. If they are not identical, -1 is returned and errno is set to EXDEV. If they are identical, the values are returned in set and policy.

      +

      Otherwise, set is set to the logical OR of all threads' default set. If all threads' default policies are the same, policy is set to that policy. If they are different, policy is set to HWLOC_MEMBIND_MIXED.

      +

      If HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. Otherwise it's a cpuset.

      +

      If any other flags are specified, -1 is returned and errno is set to EINVAL.

      +
      Note
      hwloc_pid_t is pid_t on Unix platforms, and HANDLE on native Windows platforms.
      + +
      +
      + +

      ◆ hwloc_set_area_membind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_set_area_membind (hwloc_topology_t topology,
      const void * addr,
      size_t len,
      hwloc_const_bitmap_t set,
      hwloc_membind_policy_t policy,
      int flags 
      )
      +
      + +

      Bind the already-allocated memory identified by (addr, len) to the NUMA node(s) specified by set.

      +

      If HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. Otherwise it's a cpuset.

      +
      Returns
      0 if len is 0.
      +
      +-1 with errno set to ENOSYS if the action is not supported
      +
      +-1 with errno set to EXDEV if the binding cannot be enforced
      + +
      +
      + +

      ◆ hwloc_set_membind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_set_membind (hwloc_topology_t topology,
      hwloc_const_bitmap_t set,
      hwloc_membind_policy_t policy,
      int flags 
      )
      +
      + +

      Set the default memory binding policy of the current process or thread to prefer the NUMA node(s) specified by set.

      +

      If neither HWLOC_MEMBIND_PROCESS nor HWLOC_MEMBIND_THREAD is specified, the current process is assumed to be single-threaded. This is the most portable form as it permits hwloc to use either process-based OS functions or thread-based OS functions, depending on which are available.

      +

      If HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. Otherwise it's a cpuset.

      +
      Returns
      -1 with errno set to ENOSYS if the action is not supported
      +
      +-1 with errno set to EXDEV if the binding cannot be enforced
      + +
      +
      + +

      ◆ hwloc_set_proc_membind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_set_proc_membind (hwloc_topology_t topology,
      hwloc_pid_t pid,
      hwloc_const_bitmap_t set,
      hwloc_membind_policy_t policy,
      int flags 
      )
      +
      + +

      Set the default memory binding policy of the specified process to prefer the NUMA node(s) specified by set.

      +

      If HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. Otherwise it's a cpuset.

      +
      Returns
      -1 with errno set to ENOSYS if the action is not supported
      +
      +-1 with errno set to EXDEV if the binding cannot be enforced
      +
      Note
      hwloc_pid_t is pid_t on Unix platforms, and HANDLE on native Windows platforms.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00204.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00204.html new file mode 100644 index 0000000000..3b904b5552 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00204.html @@ -0,0 +1,294 @@ + + + + + + + +Hardware Locality (hwloc): Changing the Source of Topology Discovery + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Changing the Source of Topology Discovery
      +
      +
      + + + + +

      +Enumerations

      enum  hwloc_topology_components_flag_e { HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST + }
       
      + + + + + + + + + + + +

      +Functions

      int hwloc_topology_set_pid (hwloc_topology_t restrict topology, hwloc_pid_t pid)
       
      int hwloc_topology_set_synthetic (hwloc_topology_t restrict topology, const char *restrict description)
       
      int hwloc_topology_set_xml (hwloc_topology_t restrict topology, const char *restrict xmlpath)
       
      int hwloc_topology_set_xmlbuffer (hwloc_topology_t restrict topology, const char *restrict buffer, int size)
       
      int hwloc_topology_set_components (hwloc_topology_t restrict topology, unsigned long flags, const char *restrict name)
       
      +

      Detailed Description

      +

      If none of the functions below is called, the default is to detect all the objects of the machine that the caller is allowed to access.

      +

      This default behavior may also be modified through environment variables if the application did not modify it already. Setting HWLOC_XMLFILE in the environment enforces the discovery from a XML file as if hwloc_topology_set_xml() had been called. Setting HWLOC_SYNTHETIC enforces a synthetic topology as if hwloc_topology_set_synthetic() had been called.

      +

      Finally, HWLOC_THISSYSTEM enforces the return value of hwloc_topology_is_thissystem().

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_topology_components_flag_e

      + +
      +
      + +

      Flags to be passed to hwloc_topology_set_components()

      + + +
      Enumerator
      HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST 

      Blacklist the target component from being used.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_topology_set_components()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_components (hwloc_topology_t restrict topology,
      unsigned long flags,
      const char *restrict name 
      )
      +
      + +

      Prevent a discovery component from being used for a topology.

      +

      name is the name of the discovery component that should not be used when loading topology topology. The name is a string such as "cuda".

      +

      For components with multiple phases, it may also be suffixed with the name of a phase, for instance "linux:io".

      +

      flags should be HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST.

      +

      This may be used to avoid expensive parts of the discovery process. For instance, CUDA-specific discovery may be expensive and unneeded while generic I/O discovery could still be useful.

      + +
      +
      + +

      ◆ hwloc_topology_set_pid()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_pid (hwloc_topology_t restrict topology,
      hwloc_pid_t pid 
      )
      +
      + +

      Change which process the topology is viewed from.

      +

      On some systems, processes may have different views of the machine, for instance the set of allowed CPUs. By default, hwloc exposes the view from the current process. Calling hwloc_topology_set_pid() permits to make it expose the topology of the machine from the point of view of another process.

      +
      Note
      hwloc_pid_t is pid_t on Unix platforms, and HANDLE on native Windows platforms.
      +
      +-1 is returned and errno is set to ENOSYS on platforms that do not support this feature.
      + +
      +
      + +

      ◆ hwloc_topology_set_synthetic()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_synthetic (hwloc_topology_t restrict topology,
      const char *restrict description 
      )
      +
      + +

      Enable synthetic topology.

      +

      Gather topology information from the given description, a space-separated string of <type:number> describing the object type and arity at each level. All types may be omitted (space-separated string of numbers) so that hwloc chooses all types according to usual topologies. See also the Synthetic topologies.

      +

      Setting the environment variable HWLOC_SYNTHETIC may also result in this behavior.

      +

      If description was properly parsed and describes a valid topology configuration, this function returns 0. Otherwise -1 is returned and errno is set to EINVAL.

      +

      Note that this function does not actually load topology information; it just tells hwloc where to load it from. You'll still need to invoke hwloc_topology_load() to actually load the topology information.

      +
      Note
      For convenience, this backend provides empty binding hooks which just return success.
      +
      +On success, the synthetic component replaces the previously enabled component (if any), but the topology is not actually modified until hwloc_topology_load().
      + +
      +
      + +

      ◆ hwloc_topology_set_xml()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_xml (hwloc_topology_t restrict topology,
      const char *restrict xmlpath 
      )
      +
      + +

      Enable XML-file based topology.

      +

      Gather topology information from the XML file given at xmlpath. Setting the environment variable HWLOC_XMLFILE may also result in this behavior. This file may have been generated earlier with hwloc_topology_export_xml() in hwloc/export.h, or lstopo file.xml.

      +

      Note that this function does not actually load topology information; it just tells hwloc where to load it from. You'll still need to invoke hwloc_topology_load() to actually load the topology information.

      +
      Returns
      -1 with errno set to EINVAL on failure to read the XML file.
      +
      Note
      See also hwloc_topology_set_userdata_import_callback() for importing application-specific object userdata.
      +
      +For convenience, this backend provides empty binding hooks which just return success. To have hwloc still actually call OS-specific hooks, the HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM has to be set to assert that the loaded file is really the underlying system.
      +
      +On success, the XML component replaces the previously enabled component (if any), but the topology is not actually modified until hwloc_topology_load().
      + +
      +
      + +

      ◆ hwloc_topology_set_xmlbuffer()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_xmlbuffer (hwloc_topology_t restrict topology,
      const char *restrict buffer,
      int size 
      )
      +
      + +

      Enable XML based topology using a memory buffer (instead of a file, as with hwloc_topology_set_xml()).

      +

      Gather topology information from the XML memory buffer given at buffer and of length size. This buffer may have been filled earlier with hwloc_topology_export_xmlbuffer() in hwloc/export.h.

      +

      Note that this function does not actually load topology information; it just tells hwloc where to load it from. You'll still need to invoke hwloc_topology_load() to actually load the topology information.

      +
      Returns
      -1 with errno set to EINVAL on failure to read the XML buffer.
      +
      Note
      See also hwloc_topology_set_userdata_import_callback() for importing application-specific object userdata.
      +
      +For convenience, this backend provides empty binding hooks which just return success. To have hwloc still actually call OS-specific hooks, the HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM has to be set to assert that the loaded file is really the underlying system.
      +
      +On success, the XML component replaces the previously enabled component (if any), but the topology is not actually modified until hwloc_topology_load().
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00205.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00205.html new file mode 100644 index 0000000000..4a26a7e1c9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00205.html @@ -0,0 +1,571 @@ + + + + + + + +Hardware Locality (hwloc): Topology Detection Configuration and Query + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Topology Detection Configuration and Query
      +
      +
      + + + + + + + + + + + + +

      +Data Structures

      struct  hwloc_topology_discovery_support
       
      struct  hwloc_topology_cpubind_support
       
      struct  hwloc_topology_membind_support
       
      struct  hwloc_topology_misc_support
       
      struct  hwloc_topology_support
       
      + + + + + +

      +Enumerations

      enum  hwloc_topology_flags_e {
      +  HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED +, HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM +, HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES +, HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT = (1UL<<3) +,
      +  HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING = (1UL<<4) +, HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING = (1UL<<5) +, HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING = (1UL<<6) +
      + }
       
      enum  hwloc_type_filter_e { HWLOC_TYPE_FILTER_KEEP_ALL +, HWLOC_TYPE_FILTER_KEEP_NONE +, HWLOC_TYPE_FILTER_KEEP_STRUCTURE +, HWLOC_TYPE_FILTER_KEEP_IMPORTANT + }
       
      + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags)
       
      unsigned long hwloc_topology_get_flags (hwloc_topology_t topology)
       
      int hwloc_topology_is_thissystem (hwloc_topology_t restrict topology)
       
      const struct hwloc_topology_supporthwloc_topology_get_support (hwloc_topology_t restrict topology)
       
      int hwloc_topology_set_type_filter (hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e filter)
       
      int hwloc_topology_get_type_filter (hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter)
       
      int hwloc_topology_set_all_types_filter (hwloc_topology_t topology, enum hwloc_type_filter_e filter)
       
      int hwloc_topology_set_cache_types_filter (hwloc_topology_t topology, enum hwloc_type_filter_e filter)
       
      int hwloc_topology_set_icache_types_filter (hwloc_topology_t topology, enum hwloc_type_filter_e filter)
       
      int hwloc_topology_set_io_types_filter (hwloc_topology_t topology, enum hwloc_type_filter_e filter)
       
      void hwloc_topology_set_userdata (hwloc_topology_t topology, const void *userdata)
       
      void * hwloc_topology_get_userdata (hwloc_topology_t topology)
       
      +

      Detailed Description

      +

      Several functions can optionally be called between hwloc_topology_init() and hwloc_topology_load() to configure how the detection should be performed, e.g. to ignore some objects types, define a synthetic topology, etc.

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_topology_flags_e

      + +
      +
      + + + + +
      enum hwloc_topology_flags_e
      +
      + +

      Flags to be set onto a topology context before load.

      +

      Flags should be given to hwloc_topology_set_flags(). They may also be returned by hwloc_topology_get_flags().

      + + + + + + + + +
      Enumerator
      HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED 

      Detect the whole system, ignore reservations, include disallowed objects.

      +

      Gather all online resources, even if some were disabled by the administrator. For instance, ignore Linux Cgroup/Cpusets and gather all processors and memory nodes. However offline PUs and NUMA nodes are still ignored.

      +

      When this flag is not set, PUs and NUMA nodes that are disallowed are not added to the topology. Parent objects (package, core, cache, etc.) are added only if some of their children are allowed. All existing PUs and NUMA nodes in the topology are allowed. hwloc_topology_get_allowed_cpuset() and hwloc_topology_get_allowed_nodeset() are equal to the root object cpuset and nodeset.

      +

      When this flag is set, the actual sets of allowed PUs and NUMA nodes are given by hwloc_topology_get_allowed_cpuset() and hwloc_topology_get_allowed_nodeset(). They may be smaller than the root object cpuset and nodeset.

      +

      If the current topology is exported to XML and reimported later, this flag should be set again in the reimported topology so that disallowed resources are reimported as well.

      +
      HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM 

      Assume that the selected backend provides the topology for the system on which we are running.

      +

      This forces hwloc_topology_is_thissystem() to return 1, i.e. makes hwloc assume that the selected backend provides the topology for the system on which we are running, even if it is not the OS-specific backend but the XML backend for instance. This means making the binding functions actually call the OS-specific system calls and really do binding, while the XML backend would otherwise provide empty hooks just returning success.

      +

      Setting the environment variable HWLOC_THISSYSTEM may also result in the same behavior.

      +

      This can be used for efficiency reasons to first detect the topology once, save it to an XML file, and quickly reload it later through the XML backend, but still having binding functions actually do bind.

      +
      HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES 

      Get the set of allowed resources from the local operating system even if the topology was loaded from XML or synthetic description.

      +

      If the topology was loaded from XML or from a synthetic string, restrict it by applying the current process restrictions such as Linux Cgroup/Cpuset.

      +

      This is useful when the topology is not loaded directly from the local machine (e.g. for performance reason) and it comes with all resources, while the running process is restricted to only parts of the machine.

      +

      This flag is ignored unless HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM is also set since the loaded topology must match the underlying machine where restrictions will be gathered from.

      +

      Setting the environment variable HWLOC_THISSYSTEM_ALLOWED_RESOURCES would result in the same behavior.

      +
      HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT 

      Import support from the imported topology.

      +

      When importing a XML topology from a remote machine, binding is disabled by default (see HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM). This disabling is also marked by putting zeroes in the corresponding supported feature bits reported by hwloc_topology_get_support().

      +

      The flag HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT actually imports support bits from the remote machine. It also sets the flag imported_support in the struct hwloc_topology_misc_support array. If the imported XML did not contain any support information (exporter hwloc is too old), this flag is not set.

      +

      Note that these supported features are only relevant for the hwloc installation that actually exported the XML topology (it may vary with the operating system, or with how hwloc was compiled).

      +

      Note that setting this flag however does not enable binding for the locally imported hwloc topology, it only reports what the remote hwloc and machine support.

      +
      HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING 

      Do not consider resources outside of the process CPU binding.

      +

      If the binding of the process is limited to a subset of cores, ignore the other cores during discovery.

      +

      The resulting topology is identical to what a call to hwloc_topology_restrict() would generate, but this flag also prevents hwloc from ever touching other resources during the discovery.

      +

      This flag especially tells the x86 backend to never temporarily rebind a thread on any excluded core. This is useful on Windows because such temporary rebinding can change the process binding. Another use-case is to avoid cores that would not be able to perform the hwloc discovery anytime soon because they are busy executing some high-priority real-time tasks.

      +

      If process CPU binding is not supported, the thread CPU binding is considered instead if supported, or the flag is ignored.

      +

      This flag requires HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM as well since binding support is required.

      +
      HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING 

      Do not consider resources outside of the process memory binding.

      +

      If the binding of the process is limited to a subset of NUMA nodes, ignore the other NUMA nodes during discovery.

      +

      The resulting topology is identical to what a call to hwloc_topology_restrict() would generate, but this flag also prevents hwloc from ever touching other resources during the discovery.

      +

      This flag is meant to be used together with HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING when both cores and NUMA nodes should be ignored outside of the process binding.

      +

      If process memory binding is not supported, the thread memory binding is considered instead if supported, or the flag is ignored.

      +

      This flag requires HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM as well since binding support is required.

      +
      HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING 

      Do not ever modify the process or thread binding during discovery.

      +

      This flag disables all hwloc discovery steps that require a change of the process or thread binding. This currently only affects the x86 backend which gets entirely disabled.

      +

      This is useful when hwloc_topology_load() is called while the application also creates additional threads or modifies the binding.

      +

      This flag is also a strict way to make sure the process binding will not change to due thread binding changes on Windows (see HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING).

      +
      + +
      +
      + +

      ◆ hwloc_type_filter_e

      + +
      +
      + + + + +
      enum hwloc_type_filter_e
      +
      + +

      Type filtering flags.

      +

      By default, most objects are kept (HWLOC_TYPE_FILTER_KEEP_ALL). Instruction caches, I/O and Misc objects are ignored by default (HWLOC_TYPE_FILTER_KEEP_NONE). Die and Group levels are ignored unless they bring structure (HWLOC_TYPE_FILTER_KEEP_STRUCTURE).

      +

      Note that group objects are also ignored individually (without the entire level) when they do not bring structure.

      + + + + + +
      Enumerator
      HWLOC_TYPE_FILTER_KEEP_ALL 

      Keep all objects of this type.

      +

      Cannot be set for HWLOC_OBJ_GROUP (groups are designed only to add more structure to the topology).

      +
      HWLOC_TYPE_FILTER_KEEP_NONE 

      Ignore all objects of this type.

      +

      The bottom-level type HWLOC_OBJ_PU, the HWLOC_OBJ_NUMANODE type, and the top-level type HWLOC_OBJ_MACHINE may not be ignored.

      +
      HWLOC_TYPE_FILTER_KEEP_STRUCTURE 

      Only ignore objects if their entire level does not bring any structure.

      +

      Keep the entire level of objects if at least one of these objects adds structure to the topology. An object brings structure when it has multiple children and it is not the only child of its parent.

      +

      If all objects in the level are the only child of their parent, and if none of them has multiple children, the entire level is removed.

      +

      Cannot be set for I/O and Misc objects since the topology structure does not matter there.

      +
      HWLOC_TYPE_FILTER_KEEP_IMPORTANT 

      Only keep likely-important objects of the given type.

      +

      It is only useful for I/O object types. For HWLOC_OBJ_PCI_DEVICE and HWLOC_OBJ_OS_DEVICE, it means that only objects of major/common kinds are kept (storage, network, OpenFabrics, CUDA, OpenCL, RSMI, NVML, and displays). Also, only OS devices directly attached on PCI (e.g. no USB) are reported. For HWLOC_OBJ_BRIDGE, it means that bridges are kept only if they have children.

      +

      This flag equivalent to HWLOC_TYPE_FILTER_KEEP_ALL for Normal, Memory and Misc types since they are likely important.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_topology_get_flags()

      + +
      +
      + + + + + + + + +
      unsigned long hwloc_topology_get_flags (hwloc_topology_t topology)
      +
      + +

      Get OR'ed flags of a topology.

      +

      Get the OR'ed set of hwloc_topology_flags_e of a topology.

      +

      If hwloc_topology_set_flags() was not called earlier, no flags are set (0 is returned).

      +
      Returns
      the flags previously set with hwloc_topology_set_flags().
      + +
      +
      + +

      ◆ hwloc_topology_get_support()

      + +
      +
      + + + + + + + + +
      const struct hwloc_topology_support* hwloc_topology_get_support (hwloc_topology_t restrict topology)
      +
      + +

      Retrieve the topology support.

      +

      Each flag indicates whether a feature is supported. If set to 0, the feature is not supported. If set to 1, the feature is supported, but the corresponding call may still fail in some corner cases.

      +

      These features are also listed by hwloc-info --support

      +

      The reported features are what the current topology supports on the current machine. If the topology was exported to XML from another machine and later imported here, support still describes what is supported for this imported topology after import. By default, binding will be reported as unsupported in this case (see HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM).

      +

      Topology flag HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT may be used to report the supported features of the original remote machine instead. If it was successfully imported, imported_support will be set in the struct hwloc_topology_misc_support array.

      + +
      +
      + +

      ◆ hwloc_topology_get_type_filter()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_get_type_filter (hwloc_topology_t topology,
      hwloc_obj_type_t type,
      enum hwloc_type_filter_efilter 
      )
      +
      + +

      Get the current filtering for the given object type.

      + +
      +
      + +

      ◆ hwloc_topology_get_userdata()

      + +
      +
      + + + + + + + + +
      void* hwloc_topology_get_userdata (hwloc_topology_t topology)
      +
      + +

      Retrieve the topology-specific userdata pointer.

      +

      Retrieve the application-given private data pointer that was previously set with hwloc_topology_set_userdata().

      + +
      +
      + +

      ◆ hwloc_topology_is_thissystem()

      + +
      +
      + + + + + + + + +
      int hwloc_topology_is_thissystem (hwloc_topology_t restrict topology)
      +
      + +

      Does the topology context come from this system?

      +
      Returns
      1 if this topology context was built using the system running this program.
      +
      +0 instead (for instance if using another file-system root, a XML topology file, or a synthetic topology).
      + +
      +
      + +

      ◆ hwloc_topology_set_all_types_filter()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_all_types_filter (hwloc_topology_t topology,
      enum hwloc_type_filter_e filter 
      )
      +
      + +

      Set the filtering for all object types.

      +

      If some types do not support this filtering, they are silently ignored.

      + +
      +
      + +

      ◆ hwloc_topology_set_cache_types_filter()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_cache_types_filter (hwloc_topology_t topology,
      enum hwloc_type_filter_e filter 
      )
      +
      + +

      Set the filtering for all CPU cache object types.

      +

      Memory-side caches are not involved since they are not CPU caches.

      + +
      +
      + +

      ◆ hwloc_topology_set_flags()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_flags (hwloc_topology_t topology,
      unsigned long flags 
      )
      +
      + +

      Set OR'ed flags to non-yet-loaded topology.

      +

      Set a OR'ed set of hwloc_topology_flags_e onto a topology that was not yet loaded.

      +

      If this function is called multiple times, the last invocation will erase and replace the set of flags that was previously set.

      +

      By default, no flags are set (0).

      +

      The flags set in a topology may be retrieved with hwloc_topology_get_flags().

      + +
      +
      + +

      ◆ hwloc_topology_set_icache_types_filter()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_icache_types_filter (hwloc_topology_t topology,
      enum hwloc_type_filter_e filter 
      )
      +
      + +

      Set the filtering for all CPU instruction cache object types.

      +

      Memory-side caches are not involved since they are not CPU caches.

      + +
      +
      + +

      ◆ hwloc_topology_set_io_types_filter()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_io_types_filter (hwloc_topology_t topology,
      enum hwloc_type_filter_e filter 
      )
      +
      + +

      Set the filtering for all I/O object types.

      + +
      +
      + +

      ◆ hwloc_topology_set_type_filter()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_set_type_filter (hwloc_topology_t topology,
      hwloc_obj_type_t type,
      enum hwloc_type_filter_e filter 
      )
      +
      + +

      Set the filtering for the given object type.

      + +
      +
      + +

      ◆ hwloc_topology_set_userdata()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      void hwloc_topology_set_userdata (hwloc_topology_t topology,
      const void * userdata 
      )
      +
      + +

      Set the topology-specific userdata pointer.

      +

      Each topology may store one application-given private data pointer. It is initialized to NULL. hwloc will never modify it.

      +

      Use it as you wish, after hwloc_topology_init() and until hwloc_topolog_destroy().

      +

      This pointer is not exported to XML.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00206.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00206.html new file mode 100644 index 0000000000..4dae6f9114 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00206.html @@ -0,0 +1,406 @@ + + + + + + + +Hardware Locality (hwloc): Modifying a loaded Topology + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Modifying a loaded Topology
      +
      +
      + + + + + + +

      +Enumerations

      enum  hwloc_restrict_flags_e {
      +  HWLOC_RESTRICT_FLAG_REMOVE_CPULESS +, HWLOC_RESTRICT_FLAG_BYNODESET = (1UL<<3) +, HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS +, HWLOC_RESTRICT_FLAG_ADAPT_MISC +,
      +  HWLOC_RESTRICT_FLAG_ADAPT_IO +
      + }
       
      enum  hwloc_allow_flags_e { HWLOC_ALLOW_FLAG_ALL +, HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS +, HWLOC_ALLOW_FLAG_CUSTOM + }
       
      + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_topology_restrict (hwloc_topology_t restrict topology, hwloc_const_bitmap_t set, unsigned long flags)
       
      int hwloc_topology_allow (hwloc_topology_t restrict topology, hwloc_const_cpuset_t cpuset, hwloc_const_nodeset_t nodeset, unsigned long flags)
       
      hwloc_obj_t hwloc_topology_insert_misc_object (hwloc_topology_t topology, hwloc_obj_t parent, const char *name)
       
      hwloc_obj_t hwloc_topology_alloc_group_object (hwloc_topology_t topology)
       
      hwloc_obj_t hwloc_topology_insert_group_object (hwloc_topology_t topology, hwloc_obj_t group)
       
      int hwloc_obj_add_other_obj_sets (hwloc_obj_t dst, hwloc_obj_t src)
       
      int hwloc_topology_refresh (hwloc_topology_t topology)
       
      +

      Detailed Description

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_allow_flags_e

      + +
      +
      + + + + +
      enum hwloc_allow_flags_e
      +
      + +

      Flags to be given to hwloc_topology_allow().

      + + + + +
      Enumerator
      HWLOC_ALLOW_FLAG_ALL 

      Mark all objects as allowed in the topology.

      +

      cpuset and nođeset given to hwloc_topology_allow() must be NULL.

      +
      HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS 

      Only allow objects that are available to the current process.

      +

      The topology must have HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM so that the set of available resources can actually be retrieved from the operating system.

      +

      cpuset and nođeset given to hwloc_topology_allow() must be NULL.

      +
      HWLOC_ALLOW_FLAG_CUSTOM 

      Allow a custom set of objects, given to hwloc_topology_allow() as cpuset and/or nodeset parameters.

      +
      + +
      +
      + +

      ◆ hwloc_restrict_flags_e

      + +
      +
      + + + + +
      enum hwloc_restrict_flags_e
      +
      + +

      Flags to be given to hwloc_topology_restrict().

      + + + + + + +
      Enumerator
      HWLOC_RESTRICT_FLAG_REMOVE_CPULESS 

      Remove all objects that became CPU-less. By default, only objects that contain no PU and no memory are removed. This flag may not be used with HWLOC_RESTRICT_FLAG_BYNODESET.

      +
      HWLOC_RESTRICT_FLAG_BYNODESET 

      Restrict by nodeset instead of CPU set. Only keep objects whose nodeset is included or partially included in the given set. This flag may not be used with HWLOC_RESTRICT_FLAG_REMOVE_CPULESS.

      +
      HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS 

      Remove all objects that became Memory-less. By default, only objects that contain no PU and no memory are removed. This flag may only be used with HWLOC_RESTRICT_FLAG_BYNODESET.

      +
      HWLOC_RESTRICT_FLAG_ADAPT_MISC 

      Move Misc objects to ancestors if their parents are removed during restriction. If this flag is not set, Misc objects are removed when their parents are removed.

      +
      HWLOC_RESTRICT_FLAG_ADAPT_IO 

      Move I/O objects to ancestors if their parents are removed during restriction. If this flag is not set, I/O devices and bridges are removed when their parents are removed.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_obj_add_other_obj_sets()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_obj_add_other_obj_sets (hwloc_obj_t dst,
      hwloc_obj_t src 
      )
      +
      + +

      Setup object cpusets/nodesets by OR'ing another object's sets.

      +

      For each defined cpuset or nodeset in src, allocate the corresponding set in dst and add src to it by OR'ing sets.

      +

      This function is convenient between hwloc_topology_alloc_group_object() and hwloc_topology_insert_group_object(). It builds the sets of the new Group that will be inserted as a new intermediate parent of several objects.

      + +
      +
      + +

      ◆ hwloc_topology_alloc_group_object()

      + +
      +
      + + + + + + + + +
      hwloc_obj_t hwloc_topology_alloc_group_object (hwloc_topology_t topology)
      +
      + +

      Allocate a Group object to insert later with hwloc_topology_insert_group_object().

      +

      This function returns a new Group object.

      +

      The caller should (at least) initialize its sets before inserting the object in the topology. See hwloc_topology_insert_group_object().

      + +
      +
      + +

      ◆ hwloc_topology_allow()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_allow (hwloc_topology_t restrict topology,
      hwloc_const_cpuset_t cpuset,
      hwloc_const_nodeset_t nodeset,
      unsigned long flags 
      )
      +
      + +

      Change the sets of allowed PUs and NUMA nodes in the topology.

      +

      This function only works if the HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED was set on the topology. It does not modify any object, it only changes the sets returned by hwloc_topology_get_allowed_cpuset() and hwloc_topology_get_allowed_nodeset().

      +

      It is notably useful when importing a topology from another process running in a different Linux Cgroup.

      +

      flags must be set to one flag among hwloc_allow_flags_e.

      +
      Note
      Removing objects from a topology should rather be performed with hwloc_topology_restrict().
      + +
      +
      + +

      ◆ hwloc_topology_insert_group_object()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      hwloc_obj_t hwloc_topology_insert_group_object (hwloc_topology_t topology,
      hwloc_obj_t group 
      )
      +
      + +

      Add more structure to the topology by adding an intermediate Group.

      +

      The caller should first allocate a new Group object with hwloc_topology_alloc_group_object(). Then it must setup at least one of its CPU or node sets to specify the final location of the Group in the topology. Then the object can be passed to this function for actual insertion in the topology.

      +

      Either the cpuset or nodeset field (or both, if compatible) must be set to a non-empty bitmap. The complete_cpuset or complete_nodeset may be set instead if inserting with respect to the complete topology (including disallowed, offline or unknown objects). If grouping several objects, hwloc_obj_add_other_obj_sets() is an easy way to build the Group sets iteratively. These sets cannot be larger than the current topology, or they would get restricted silently. The core will setup the other sets after actual insertion.

      +

      The subtype object attribute may be defined (to a dynamically allocated string) to display something else than "Group" as the type name for this object in lstopo. Custom name/value info pairs may be added with hwloc_obj_add_info() after insertion.

      +

      The group dont_merge attribute may be set to 1 to prevent the hwloc core from ever merging this object with another hierarchically-identical object. This is useful when the Group itself describes an important feature that cannot be exposed anywhere else in the hierarchy.

      +

      The group kind attribute may be set to a high value such as 0xffffffff to tell hwloc that this new Group should always be discarded in favor of any existing Group with the same locality.

      +
      Returns
      The inserted object if it was properly inserted.
      +
      +An existing object if the Group was merged or discarded because the topology already contained an object at the same location (the Group did not add any hierarchy information).
      +
      +NULL if the insertion failed because of conflicting sets in topology tree.
      +
      +NULL if Group objects are filtered-out of the topology (HWLOC_TYPE_FILTER_KEEP_NONE).
      +
      +NULL if the object was discarded because no set was initialized in the Group before insert, or all of them were empty.
      + +
      +
      + +

      ◆ hwloc_topology_insert_misc_object()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      hwloc_obj_t hwloc_topology_insert_misc_object (hwloc_topology_t topology,
      hwloc_obj_t parent,
      const char * name 
      )
      +
      + +

      Add a MISC object as a leaf of the topology.

      +

      A new MISC object will be created and inserted into the topology at the position given by parent. It is appended to the list of existing Misc children, without ever adding any intermediate hierarchy level. This is useful for annotating the topology without actually changing the hierarchy.

      +

      name is supposed to be unique across all Misc objects in the topology. It will be duplicated to setup the new object attributes.

      +

      The new leaf object will not have any cpuset.

      +
      Returns
      the newly-created object
      +
      +NULL on error.
      +
      +NULL if Misc objects are filtered-out of the topology (HWLOC_TYPE_FILTER_KEEP_NONE).
      +
      Note
      If name contains some non-printable characters, they will be dropped when exporting to XML, see hwloc_topology_export_xml() in hwloc/export.h.
      + +
      +
      + +

      ◆ hwloc_topology_refresh()

      + +
      +
      + + + + + + + + +
      int hwloc_topology_refresh (hwloc_topology_t topology)
      +
      + +

      Refresh internal structures after topology modification.

      +

      Modifying the topology (by restricting, adding objects, modifying structures such as distances or memory attributes, etc.) may cause some internal caches to become invalid. These caches are automatically refreshed when accessed but this refreshing is not thread-safe.

      +

      This function is not thread-safe either, but it is a good way to end a non-thread-safe phase of topology modification. Once this refresh is done, multiple threads may concurrently consult the topology, objects, distances, attributes, etc.

      +

      See also Thread Safety

      + +
      +
      + +

      ◆ hwloc_topology_restrict()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_restrict (hwloc_topology_t restrict topology,
      hwloc_const_bitmap_t set,
      unsigned long flags 
      )
      +
      + +

      Restrict the topology to the given CPU set or nodeset.

      +

      Topology topology is modified so as to remove all objects that are not included (or partially included) in the CPU set set. All objects CPU and node sets are restricted accordingly.

      +

      If HWLOC_RESTRICT_FLAG_BYNODESET is passed in flags, set is considered a nodeset instead of a CPU set.

      +

      flags is a OR'ed set of hwloc_restrict_flags_e.

      +
      Note
      This call may not be reverted by restricting back to a larger set. Once dropped during restriction, objects may not be brought back, except by loading another topology with hwloc_topology_load().
      +
      Returns
      0 on success.
      +
      +-1 with errno set to EINVAL if the input set is invalid. The topology is not modified in this case.
      +
      +-1 with errno set to ENOMEM on failure to allocate internal data. The topology is reinitialized in this case. It should be either destroyed with hwloc_topology_destroy() or configured and loaded again.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00207.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00207.html new file mode 100644 index 0000000000..23530aa361 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00207.html @@ -0,0 +1,519 @@ + + + + + + + +Hardware Locality (hwloc): Finding Objects inside a CPU set + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Finding Objects inside a CPU set
      +
      +
      + + + + + + + + + + + + + + + + + + + + +

      +Functions

      static hwloc_obj_t hwloc_get_first_largest_obj_inside_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set)
       
      int hwloc_get_largest_objs_inside_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t *restrict objs, int max)
       
      static hwloc_obj_t hwloc_get_next_obj_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, hwloc_obj_t prev)
       
      static hwloc_obj_t hwloc_get_next_obj_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, hwloc_obj_t prev)
       
      static hwloc_obj_t hwloc_get_obj_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, unsigned idx)
       
      static hwloc_obj_t hwloc_get_obj_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, unsigned idx)
       
      static unsigned hwloc_get_nbobjs_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth)
       
      static int hwloc_get_nbobjs_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type)
       
      static int hwloc_get_obj_index_inside_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t obj)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_get_first_largest_obj_inside_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_first_largest_obj_inside_cpuset (hwloc_topology_t topology,
      hwloc_const_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the first largest object included in the given cpuset set.

      +
      Returns
      the first object that is included in set and whose parent is not.
      +

      This is convenient for iterating over all largest objects within a CPU set by doing a loop getting the first largest object and clearing its CPU set from the remaining CPU set.

      + +
      +
      + +

      ◆ hwloc_get_largest_objs_inside_cpuset()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_largest_objs_inside_cpuset (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      hwloc_obj_t *restrict objs,
      int max 
      )
      +
      + +

      Get the set of largest objects covering exactly a given cpuset set.

      +
      Returns
      the number of objects returned in objs.
      + +
      +
      + +

      ◆ hwloc_get_nbobjs_inside_cpuset_by_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static unsigned hwloc_get_nbobjs_inside_cpuset_by_depth (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      int depth 
      )
      +
      +inlinestatic
      +
      + +

      Return the number of objects at depth depth included in CPU set set.

      +
      Note
      Objects with empty CPU sets are ignored (otherwise they would be considered included in any given set).
      +
      +This function cannot work if objects at the given depth do not have CPU sets (I/O or Misc objects).
      + +
      +
      + +

      ◆ hwloc_get_nbobjs_inside_cpuset_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_get_nbobjs_inside_cpuset_by_type (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      hwloc_obj_type_t type 
      )
      +
      +inlinestatic
      +
      + +

      Return the number of objects of type type included in CPU set set.

      +

      If no object for that type exists inside CPU set set, 0 is returned. If there are several levels with objects of that type inside CPU set set, -1 is returned.

      +
      Note
      Objects with empty CPU sets are ignored (otherwise they would be considered included in any given set).
      +
      +This function cannot work if objects of the given type do not have CPU sets (I/O objects).
      + +
      +
      + +

      ◆ hwloc_get_next_obj_inside_cpuset_by_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_obj_inside_cpuset_by_depth (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      int depth,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Return the next object at depth depth included in CPU set set.

      +

      If prev is NULL, return the first object at depth depth included in set. The next invokation should pass the previous return value in prev so as to obtain the next object in set.

      +
      Note
      Objects with empty CPU sets are ignored (otherwise they would be considered included in any given set).
      +
      +This function cannot work if objects at the given depth do not have CPU sets (I/O or Misc objects).
      + +
      +
      + +

      ◆ hwloc_get_next_obj_inside_cpuset_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_obj_inside_cpuset_by_type (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      hwloc_obj_type_t type,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Return the next object of type type included in CPU set set.

      +

      If there are multiple or no depth for given type, return NULL and let the caller fallback to hwloc_get_next_obj_inside_cpuset_by_depth().

      +
      Note
      Objects with empty CPU sets are ignored (otherwise they would be considered included in any given set).
      +
      +This function cannot work if objects of the given type do not have CPU sets (I/O or Misc objects).
      + +
      +
      + +

      ◆ hwloc_get_obj_index_inside_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_get_obj_index_inside_cpuset (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      hwloc_obj_t obj 
      )
      +
      +inlinestatic
      +
      + +

      Return the logical index among the objects included in CPU set set.

      +

      Consult all objects in the same level as obj and inside CPU set set in the logical order, and return the index of obj within them. If set covers the entire topology, this is the logical index of obj. Otherwise, this is similar to a logical index within the part of the topology defined by CPU set set.

      +
      Note
      Objects with empty CPU sets are ignored (otherwise they would be considered included in any given set).
      +
      +This function cannot work if obj does not have CPU sets (I/O objects).
      + +
      +
      + +

      ◆ hwloc_get_obj_inside_cpuset_by_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_obj_inside_cpuset_by_depth (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      int depth,
      unsigned idx 
      )
      +
      +inlinestatic
      +
      + +

      Return the (logically) idx -th object at depth depth included in CPU set set.

      +
      Note
      Objects with empty CPU sets are ignored (otherwise they would be considered included in any given set).
      +
      +This function cannot work if objects at the given depth do not have CPU sets (I/O or Misc objects).
      + +
      +
      + +

      ◆ hwloc_get_obj_inside_cpuset_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_obj_inside_cpuset_by_type (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      hwloc_obj_type_t type,
      unsigned idx 
      )
      +
      +inlinestatic
      +
      + +

      Return the idx -th object of type type included in CPU set set.

      +

      If there are multiple or no depth for given type, return NULL and let the caller fallback to hwloc_get_obj_inside_cpuset_by_depth().

      +
      Note
      Objects with empty CPU sets are ignored (otherwise they would be considered included in any given set).
      +
      +This function cannot work if objects of the given type do not have CPU sets (I/O or Misc objects).
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00208.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00208.html new file mode 100644 index 0000000000..5df10d1d93 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00208.html @@ -0,0 +1,258 @@ + + + + + + + +Hardware Locality (hwloc): Finding Objects covering at least CPU set + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Finding Objects covering at least CPU set
      +
      +
      + + + + + + + + + + +

      +Functions

      static hwloc_obj_t hwloc_get_child_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t parent)
       
      static hwloc_obj_t hwloc_get_obj_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set)
       
      static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, hwloc_obj_t prev)
       
      static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, hwloc_obj_t prev)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_get_child_covering_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_child_covering_cpuset (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      hwloc_obj_t parent 
      )
      +
      +inlinestatic
      +
      + +

      Get the child covering at least CPU set set.

      +
      Returns
      NULL if no child matches or if set is empty.
      +
      Note
      This function cannot work if parent does not have a CPU set (I/O or Misc objects).
      + +
      +
      + +

      ◆ hwloc_get_next_obj_covering_cpuset_by_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_depth (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      int depth,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Iterate through same-depth objects covering at least CPU set set.

      +

      If object prev is NULL, return the first object at depth depth covering at least part of CPU set set. The next invokation should pass the previous return value in prev so as to obtain the next object covering at least another part of set.

      +
      Note
      This function cannot work if objects at the given depth do not have CPU sets (I/O or Misc objects).
      + +
      +
      + +

      ◆ hwloc_get_next_obj_covering_cpuset_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_type (hwloc_topology_t topology,
      hwloc_const_cpuset_t set,
      hwloc_obj_type_t type,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Iterate through same-type objects covering at least CPU set set.

      +

      If object prev is NULL, return the first object of type type covering at least part of CPU set set. The next invokation should pass the previous return value in prev so as to obtain the next object of type type covering at least another part of set.

      +

      If there are no or multiple depths for type type, NULL is returned. The caller may fallback to hwloc_get_next_obj_covering_cpuset_by_depth() for each depth.

      +
      Note
      This function cannot work if objects of the given type do not have CPU sets (I/O or Misc objects).
      + +
      +
      + +

      ◆ hwloc_get_obj_covering_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_obj_covering_cpuset (hwloc_topology_t topology,
      hwloc_const_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the lowest object covering at least CPU set set.

      +
      Returns
      NULL if no object matches or if set is empty.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00209.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00209.html new file mode 100644 index 0000000000..08346e508b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00209.html @@ -0,0 +1,297 @@ + + + + + + + +Hardware Locality (hwloc): Looking at Ancestor and Child Objects + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Looking at Ancestor and Child Objects
      +
      +
      + + + + + + + + + + + + +

      +Functions

      static hwloc_obj_t hwloc_get_ancestor_obj_by_depth (hwloc_topology_t topology, int depth, hwloc_obj_t obj)
       
      static hwloc_obj_t hwloc_get_ancestor_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, hwloc_obj_t obj)
       
      static hwloc_obj_t hwloc_get_common_ancestor_obj (hwloc_topology_t topology, hwloc_obj_t obj1, hwloc_obj_t obj2)
       
      static int hwloc_obj_is_in_subtree (hwloc_topology_t topology, hwloc_obj_t obj, hwloc_obj_t subtree_root)
       
      static hwloc_obj_t hwloc_get_next_child (hwloc_topology_t topology, hwloc_obj_t parent, hwloc_obj_t prev)
       
      +

      Detailed Description

      +

      Be sure to see the figure in Terms and Definitions that shows a complete topology tree, including depths, child/sibling/cousin relationships, and an example of an asymmetric topology where one package has fewer caches than its peers.

      +

      Function Documentation

      + +

      ◆ hwloc_get_ancestor_obj_by_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_ancestor_obj_by_depth (hwloc_topology_t topology,
      int depth,
      hwloc_obj_t obj 
      )
      +
      +inlinestatic
      +
      + +

      Returns the ancestor object of obj at depth depth.

      +
      Note
      depth should not be the depth of PU or NUMA objects since they are ancestors of no objects (except Misc or I/O). This function rather expects an intermediate level depth, such as the depth of Packages, Cores, or Caches.
      + +
      +
      + +

      ◆ hwloc_get_ancestor_obj_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_ancestor_obj_by_type (hwloc_topology_t topology,
      hwloc_obj_type_t type,
      hwloc_obj_t obj 
      )
      +
      +inlinestatic
      +
      + +

      Returns the ancestor object of obj with type type.

      +
      Note
      type should not be HWLOC_OBJ_PU or HWLOC_OBJ_NUMANODE since these objects are ancestors of no objects (except Misc or I/O). This function rather expects an intermediate object type, such as HWLOC_OBJ_PACKAGE, HWLOC_OBJ_CORE, etc.
      + +
      +
      + +

      ◆ hwloc_get_common_ancestor_obj()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_common_ancestor_obj (hwloc_topology_t topology,
      hwloc_obj_t obj1,
      hwloc_obj_t obj2 
      )
      +
      +inlinestatic
      +
      + +

      Returns the common parent object to objects obj1 and obj2.

      + +
      +
      + +

      ◆ hwloc_get_next_child()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_child (hwloc_topology_t topology,
      hwloc_obj_t parent,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Return the next child.

      +

      Return the next child among the normal children list, then among the memory children list, then among the I/O children list, then among the Misc children list.

      +

      If prev is NULL, return the first child.

      +

      Return NULL when there is no next child.

      + +
      +
      + +

      ◆ hwloc_obj_is_in_subtree()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_obj_is_in_subtree (hwloc_topology_t topology,
      hwloc_obj_t obj,
      hwloc_obj_t subtree_root 
      )
      +
      +inlinestatic
      +
      + +

      Returns true if obj is inside the subtree beginning with ancestor object subtree_root.

      +
      Note
      This function cannot work if obj and subtree_root objects do not have CPU sets (I/O or Misc objects).
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00210.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00210.html new file mode 100644 index 0000000000..a4817270c5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00210.html @@ -0,0 +1,206 @@ + + + + + + + +Hardware Locality (hwloc): Kinds of object Type + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Kinds of object Type
      +
      +
      + + + + + + + + + + + + + + +

      +Functions

      int hwloc_obj_type_is_normal (hwloc_obj_type_t type)
       
      int hwloc_obj_type_is_io (hwloc_obj_type_t type)
       
      int hwloc_obj_type_is_memory (hwloc_obj_type_t type)
       
      int hwloc_obj_type_is_cache (hwloc_obj_type_t type)
       
      int hwloc_obj_type_is_dcache (hwloc_obj_type_t type)
       
      int hwloc_obj_type_is_icache (hwloc_obj_type_t type)
       
      +

      Detailed Description

      +

      Each object type is either Normal (i.e. hwloc_obj_type_is_normal() returns 1), or Memory (i.e. hwloc_obj_type_is_memory() returns 1) or I/O (i.e. hwloc_obj_type_is_io() returns 1) or Misc (i.e. equal to HWLOC_OBJ_MISC). It cannot be of more than one of these kinds.

      +

      Function Documentation

      + +

      ◆ hwloc_obj_type_is_cache()

      + +
      +
      + + + + + + + + +
      int hwloc_obj_type_is_cache (hwloc_obj_type_t type)
      +
      + +

      Check whether an object type is a CPU Cache (Data, Unified or Instruction).

      +

      Memory-side caches are not CPU caches.

      +
      Returns
      1 if an object of type type is a Cache, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_obj_type_is_dcache()

      + +
      +
      + + + + + + + + +
      int hwloc_obj_type_is_dcache (hwloc_obj_type_t type)
      +
      + +

      Check whether an object type is a CPU Data or Unified Cache.

      +

      Memory-side caches are not CPU caches.

      +
      Returns
      1 if an object of type type is a CPU Data or Unified Cache, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_obj_type_is_icache()

      + +
      +
      + + + + + + + + +
      int hwloc_obj_type_is_icache (hwloc_obj_type_t type)
      +
      + +

      Check whether an object type is a CPU Instruction Cache,.

      +

      Memory-side caches are not CPU caches.

      +
      Returns
      1 if an object of type type is a CPU Instruction Cache, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_obj_type_is_io()

      + +
      +
      + + + + + + + + +
      int hwloc_obj_type_is_io (hwloc_obj_type_t type)
      +
      + +

      Check whether an object type is I/O.

      +

      I/O objects are objects attached to their parents in the I/O children list. This current includes Bridges, PCI and OS devices.

      +
      Returns
      1 if an object of type type is a I/O object, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_obj_type_is_memory()

      + +
      +
      + + + + + + + + +
      int hwloc_obj_type_is_memory (hwloc_obj_type_t type)
      +
      + +

      Check whether an object type is Memory.

      +

      Memory objects are objects attached to their parents in the Memory children list. This current includes NUMA nodes and Memory-side caches.

      +
      Returns
      1 if an object of type type is a Memory object, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_obj_type_is_normal()

      + +
      +
      + + + + + + + + +
      int hwloc_obj_type_is_normal (hwloc_obj_type_t type)
      +
      + +

      Check whether an object type is Normal.

      +

      Normal objects are objects of the main CPU hierarchy (Machine, Package, Core, PU, CPU caches, etc.), but they are not NUMA nodes, I/O devices or Misc objects.

      +

      They are attached to parent as Normal children, not as Memory, I/O or Misc children.

      +
      Returns
      1 if an object of type type is a Normal object, 0 otherwise.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00211.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00211.html new file mode 100644 index 0000000000..03ac76c061 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00211.html @@ -0,0 +1,194 @@ + + + + + + + +Hardware Locality (hwloc): Looking at Cache Objects + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Looking at Cache Objects
      +
      +
      + + + + + + + + +

      +Functions

      static int hwloc_get_cache_type_depth (hwloc_topology_t topology, unsigned cachelevel, hwloc_obj_cache_type_t cachetype)
       
      static hwloc_obj_t hwloc_get_cache_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set)
       
      static hwloc_obj_t hwloc_get_shared_cache_covering_obj (hwloc_topology_t topology, hwloc_obj_t obj)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_get_cache_covering_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_cache_covering_cpuset (hwloc_topology_t topology,
      hwloc_const_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the first data (or unified) cache covering a cpuset set.

      +
      Returns
      NULL if no cache matches.
      + +
      +
      + +

      ◆ hwloc_get_cache_type_depth()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_get_cache_type_depth (hwloc_topology_t topology,
      unsigned cachelevel,
      hwloc_obj_cache_type_t cachetype 
      )
      +
      +inlinestatic
      +
      + +

      Find the depth of cache objects matching cache level and type.

      +

      Return the depth of the topology level that contains cache objects whose attributes match cachelevel and cachetype.

      +

      This function is identical to calling hwloc_get_type_depth() with the corresponding type such as HWLOC_OBJ_L1ICACHE, except that it may also return a Unified cache when looking for an instruction cache.

      +

      If no cache level matches, HWLOC_TYPE_DEPTH_UNKNOWN is returned.

      +

      If cachetype is HWLOC_OBJ_CACHE_UNIFIED, the depth of the unique matching unified cache level is returned.

      +

      If cachetype is HWLOC_OBJ_CACHE_DATA or HWLOC_OBJ_CACHE_INSTRUCTION, either a matching cache, or a unified cache is returned.

      +

      If cachetype is -1, it is ignored and multiple levels may match. The function returns either the depth of a uniquely matching level or HWLOC_TYPE_DEPTH_MULTIPLE.

      + +
      +
      + +

      ◆ hwloc_get_shared_cache_covering_obj()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_shared_cache_covering_obj (hwloc_topology_t topology,
      hwloc_obj_t obj 
      )
      +
      +inlinestatic
      +
      + +

      Get the first data (or unified) cache shared between an object and somebody else.

      +
      Returns
      NULL if no cache matches or if an invalid object is given.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00212.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00212.html new file mode 100644 index 0000000000..33f0fd29e0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00212.html @@ -0,0 +1,418 @@ + + + + + + + +Hardware Locality (hwloc): Finding objects, miscellaneous helpers + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Finding objects, miscellaneous helpers
      +
      +
      + + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_bitmap_singlify_per_core (hwloc_topology_t topology, hwloc_bitmap_t cpuset, unsigned which)
       
      static hwloc_obj_t hwloc_get_pu_obj_by_os_index (hwloc_topology_t topology, unsigned os_index)
       
      static hwloc_obj_t hwloc_get_numanode_obj_by_os_index (hwloc_topology_t topology, unsigned os_index)
       
      unsigned hwloc_get_closest_objs (hwloc_topology_t topology, hwloc_obj_t src, hwloc_obj_t *restrict objs, unsigned max)
       
      static hwloc_obj_t hwloc_get_obj_below_by_type (hwloc_topology_t topology, hwloc_obj_type_t type1, unsigned idx1, hwloc_obj_type_t type2, unsigned idx2)
       
      static hwloc_obj_t hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_type_t *typev, unsigned *idxv)
       
      hwloc_obj_t hwloc_get_obj_with_same_locality (hwloc_topology_t topology, hwloc_obj_t src, hwloc_obj_type_t type, const char *subtype, const char *nameprefix, unsigned long flags)
       
      +

      Detailed Description

      +

      Be sure to see the figure in Terms and Definitions that shows a complete topology tree, including depths, child/sibling/cousin relationships, and an example of an asymmetric topology where one package has fewer caches than its peers.

      +

      Function Documentation

      + +

      ◆ hwloc_bitmap_singlify_per_core()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_singlify_per_core (hwloc_topology_t topology,
      hwloc_bitmap_t cpuset,
      unsigned which 
      )
      +
      + +

      Remove simultaneous multithreading PUs from a CPU set.

      +

      For each core in topology, if cpuset contains some PUs of that core, modify cpuset to only keep a single PU for that core.

      +

      which specifies which PU will be kept. PU are considered in physical index order. If 0, for each core, the function keeps the first PU that was originally set in cpuset.

      +

      If which is larger than the number of PUs in a core there were originally set in cpuset, no PU is kept for that core.

      +
      Note
      PUs that are not below a Core object are ignored (for instance if the topology does not contain any Core object). None of them is removed from cpuset.
      + +
      +
      + +

      ◆ hwloc_get_closest_objs()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      unsigned hwloc_get_closest_objs (hwloc_topology_t topology,
      hwloc_obj_t src,
      hwloc_obj_t *restrict objs,
      unsigned max 
      )
      +
      + +

      Do a depth-first traversal of the topology to find and sort.

      +

      all objects that are at the same depth than src. Report in objs up to max physically closest ones to src.

      +
      Returns
      the number of objects returned in objs.
      +
      +0 if src is an I/O object.
      +
      Note
      This function requires the src object to have a CPU set.
      + +
      +
      + +

      ◆ hwloc_get_numanode_obj_by_os_index()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_numanode_obj_by_os_index (hwloc_topology_t topology,
      unsigned os_index 
      )
      +
      +inlinestatic
      +
      + +

      Returns the object of type HWLOC_OBJ_NUMANODE with os_index.

      +

      This function is useful for converting a nodeset into the NUMA node objects it contains. When retrieving the current binding (e.g. with hwloc_get_membind() with HWLOC_MEMBIND_BYNODESET), one may iterate over the bits of the resulting nodeset with hwloc_bitmap_foreach_begin(), and find the corresponding NUMA nodes with this function.

      + +
      +
      + +

      ◆ hwloc_get_obj_below_array_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_obj_below_array_by_type (hwloc_topology_t topology,
      int nr,
      hwloc_obj_type_ttypev,
      unsigned * idxv 
      )
      +
      +inlinestatic
      +
      + +

      Find an object below a chain of objects specified by types and indexes.

      +

      This is a generalized version of hwloc_get_obj_below_by_type().

      +

      Arrays typev and idxv must contain nr types and indexes.

      +

      Start from the top system object and walk the arrays typev and idxv. For each type and logical index couple in the arrays, look under the previously found object to find the index-th object of the given type. Indexes are specified within the parent, not withing the entire system.

      +

      For instance, if nr is 3, typev contains NODE, PACKAGE and CORE, and idxv contains 0, 1 and 2, return the third core object below the second package below the first NUMA node.

      +
      Note
      This function requires all these objects and the root object to have a CPU set.
      + +
      +
      + +

      ◆ hwloc_get_obj_below_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_obj_below_by_type (hwloc_topology_t topology,
      hwloc_obj_type_t type1,
      unsigned idx1,
      hwloc_obj_type_t type2,
      unsigned idx2 
      )
      +
      +inlinestatic
      +
      + +

      Find an object below another object, both specified by types and indexes.

      +

      Start from the top system object and find object of type type1 and logical index idx1. Then look below this object and find another object of type type2 and logical index idx2. Indexes are specified within the parent, not withing the entire system.

      +

      For instance, if type1 is PACKAGE, idx1 is 2, type2 is CORE and idx2 is 3, return the fourth core object below the third package.

      +
      Note
      This function requires these objects to have a CPU set.
      + +
      +
      + +

      ◆ hwloc_get_obj_with_same_locality()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      hwloc_obj_t hwloc_get_obj_with_same_locality (hwloc_topology_t topology,
      hwloc_obj_t src,
      hwloc_obj_type_t type,
      const char * subtype,
      const char * nameprefix,
      unsigned long flags 
      )
      +
      + +

      Return an object of a different type with same locality.

      +

      If the source object src is a normal or memory type, this function returns an object of type type with same CPU and node sets, either below or above in the hierarchy.

      +

      If the source object src is a PCI or an OS device within a PCI device, the function may either return that PCI device, or another OS device in the same PCI parent. This may for instance be useful for converting between OS devices such as "nvml0" or "rsmi1" used in distance structures into the the PCI device, or the CUDA or OpenCL OS device that correspond to the same physical card.

      +

      If not NULL, parameter subtype only select objects whose subtype attribute exists and is subtype (case-insensitively), for instance "OpenCL" or "CUDA".

      +

      If not NULL, parameter nameprefix only selects objects whose name attribute exists and starts with nameprefix (case-insensitively), for instance "rsmi" for matching "rsmi0".

      +

      If multiple objects match, the first one is returned.

      +

      This function will not walk the hierarchy across bridges since the PCI locality may become different. This function cannot also convert between normal/memory objects and I/O or Misc objects.

      +

      flags must be 0 for now.

      +
      Returns
      An object with identical locality, matching subtype and nameprefix if any.
      +
      +NULL if no matching object could be found, or if the source object and target type are incompatible, for instance if converting between CPU and I/O objects.
      + +
      +
      + +

      ◆ hwloc_get_pu_obj_by_os_index()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_pu_obj_by_os_index (hwloc_topology_t topology,
      unsigned os_index 
      )
      +
      +inlinestatic
      +
      + +

      Returns the object of type HWLOC_OBJ_PU with os_index.

      +

      This function is useful for converting a CPU set into the PU objects it contains. When retrieving the current binding (e.g. with hwloc_get_cpubind()), one may iterate over the bits of the resulting CPU set with hwloc_bitmap_foreach_begin(), and find the corresponding PUs with this function.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00213.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00213.html new file mode 100644 index 0000000000..d7de1b82ad --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00213.html @@ -0,0 +1,166 @@ + + + + + + + +Hardware Locality (hwloc): Distributing items over a topology + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Distributing items over a topology
      +
      +
      + + + + +

      +Enumerations

      enum  hwloc_distrib_flags_e { HWLOC_DISTRIB_FLAG_REVERSE + }
       
      + + + +

      +Functions

      static int hwloc_distrib (hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *set, unsigned n, int until, unsigned long flags)
       
      +

      Detailed Description

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_distrib_flags_e

      + +
      +
      + + + + +
      enum hwloc_distrib_flags_e
      +
      + +

      Flags to be given to hwloc_distrib().

      + + +
      Enumerator
      HWLOC_DISTRIB_FLAG_REVERSE 

      Distrib in reverse order, starting from the last objects.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_distrib()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_distrib (hwloc_topology_t topology,
      hwloc_obj_troots,
      unsigned n_roots,
      hwloc_cpuset_tset,
      unsigned n,
      int until,
      unsigned long flags 
      )
      +
      +inlinestatic
      +
      + +

      Distribute n items over the topology under roots.

      +

      Array set will be filled with n cpusets recursively distributed linearly over the topology under objects roots, down to depth until (which can be INT_MAX to distribute down to the finest level).

      +

      n_roots is usually 1 and roots only contains the topology root object so as to distribute over the entire topology.

      +

      This is typically useful when an application wants to distribute n threads over a machine, giving each of them as much private cache as possible and keeping them locally in number order.

      +

      The caller may typically want to also call hwloc_bitmap_singlify() before binding a thread so that it does not move at all.

      +

      flags should be 0 or a OR'ed set of hwloc_distrib_flags_e.

      +
      Note
      This function requires the roots objects to have a CPU set.
      +
      +This function replaces the now deprecated hwloc_distribute() and hwloc_distributev() functions.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00214.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00214.html new file mode 100644 index 0000000000..3a4ff011c1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00214.html @@ -0,0 +1,220 @@ + + + + + + + +Hardware Locality (hwloc): CPU and node sets of entire topologies + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      CPU and node sets of entire topologies
      +
      +
      + + + + + + + + + + + + + + +

      +Functions

      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset (hwloc_topology_t topology)
       
      hwloc_const_cpuset_t hwloc_topology_get_topology_cpuset (hwloc_topology_t topology)
       
      hwloc_const_cpuset_t hwloc_topology_get_allowed_cpuset (hwloc_topology_t topology)
       
      hwloc_const_nodeset_t hwloc_topology_get_complete_nodeset (hwloc_topology_t topology)
       
      hwloc_const_nodeset_t hwloc_topology_get_topology_nodeset (hwloc_topology_t topology)
       
      hwloc_const_nodeset_t hwloc_topology_get_allowed_nodeset (hwloc_topology_t topology)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_topology_get_allowed_cpuset()

      + +
      +
      + + + + + + + + +
      hwloc_const_cpuset_t hwloc_topology_get_allowed_cpuset (hwloc_topology_t topology)
      +
      + +

      Get allowed CPU set.

      +
      Returns
      the CPU set of allowed processors of the system.
      +
      Note
      If the topology flag HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED was not set, this is identical to hwloc_topology_get_topology_cpuset(), which means all PUs are allowed.
      +
      +If HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED was set, applying hwloc_bitmap_intersects() on the result of this function and on an object cpuset checks whether there are allowed PUs inside that object. Applying hwloc_bitmap_and() returns the list of these allowed PUs.
      +
      +The returned cpuset is not newly allocated and should thus not be changed or freed, hwloc_bitmap_dup() must be used to obtain a local copy.
      + +
      +
      + +

      ◆ hwloc_topology_get_allowed_nodeset()

      + +
      +
      + + + + + + + + +
      hwloc_const_nodeset_t hwloc_topology_get_allowed_nodeset (hwloc_topology_t topology)
      +
      + +

      Get allowed node set.

      +
      Returns
      the node set of allowed memory of the system.
      +
      Note
      If the topology flag HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED was not set, this is identical to hwloc_topology_get_topology_nodeset(), which means all NUMA nodes are allowed.
      +
      +If HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED was set, applying hwloc_bitmap_intersects() on the result of this function and on an object nodeset checks whether there are allowed NUMA nodes inside that object. Applying hwloc_bitmap_and() returns the list of these allowed NUMA nodes.
      +
      +The returned nodeset is not newly allocated and should thus not be changed or freed, hwloc_bitmap_dup() must be used to obtain a local copy.
      + +
      +
      + +

      ◆ hwloc_topology_get_complete_cpuset()

      + +
      +
      + + + + + + + + +
      hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset (hwloc_topology_t topology)
      +
      + +

      Get complete CPU set.

      +
      Returns
      the complete CPU set of processors of the system.
      +
      Note
      The returned cpuset is not newly allocated and should thus not be changed or freed; hwloc_bitmap_dup() must be used to obtain a local copy.
      +
      +This is equivalent to retrieving the root object complete CPU-set.
      + +
      +
      + +

      ◆ hwloc_topology_get_complete_nodeset()

      + +
      +
      + + + + + + + + +
      hwloc_const_nodeset_t hwloc_topology_get_complete_nodeset (hwloc_topology_t topology)
      +
      + +

      Get complete node set.

      +
      Returns
      the complete node set of memory of the system.
      +
      Note
      The returned nodeset is not newly allocated and should thus not be changed or freed; hwloc_bitmap_dup() must be used to obtain a local copy.
      +
      +This is equivalent to retrieving the root object complete nodeset.
      + +
      +
      + +

      ◆ hwloc_topology_get_topology_cpuset()

      + +
      +
      + + + + + + + + +
      hwloc_const_cpuset_t hwloc_topology_get_topology_cpuset (hwloc_topology_t topology)
      +
      + +

      Get topology CPU set.

      +
      Returns
      the CPU set of processors of the system for which hwloc provides topology information. This is equivalent to the cpuset of the system object.
      +
      Note
      The returned cpuset is not newly allocated and should thus not be changed or freed; hwloc_bitmap_dup() must be used to obtain a local copy.
      +
      +This is equivalent to retrieving the root object CPU-set.
      + +
      +
      + +

      ◆ hwloc_topology_get_topology_nodeset()

      + +
      +
      + + + + + + + + +
      hwloc_const_nodeset_t hwloc_topology_get_topology_nodeset (hwloc_topology_t topology)
      +
      + +

      Get topology node set.

      +
      Returns
      the node set of memory of the system for which hwloc provides topology information. This is equivalent to the nodeset of the system object.
      +
      Note
      The returned nodeset is not newly allocated and should thus not be changed or freed; hwloc_bitmap_dup() must be used to obtain a local copy.
      +
      +This is equivalent to retrieving the root object nodeset.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00215.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00215.html new file mode 100644 index 0000000000..61d3475357 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00215.html @@ -0,0 +1,158 @@ + + + + + + + +Hardware Locality (hwloc): Converting between CPU sets and node sets + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Converting between CPU sets and node sets
      +
      +
      + + + + + + +

      +Functions

      static int hwloc_cpuset_to_nodeset (hwloc_topology_t topology, hwloc_const_cpuset_t _cpuset, hwloc_nodeset_t nodeset)
       
      static int hwloc_cpuset_from_nodeset (hwloc_topology_t topology, hwloc_cpuset_t _cpuset, hwloc_const_nodeset_t nodeset)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_cpuset_from_nodeset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cpuset_from_nodeset (hwloc_topology_t topology,
      hwloc_cpuset_t _cpuset,
      hwloc_const_nodeset_t nodeset 
      )
      +
      +inlinestatic
      +
      + +

      Convert a NUMA node set into a CPU set.

      +

      For each NUMA node included in the input nodeset, set the corresponding local PUs in the output _cpuset.

      +

      If some CPUs have no local NUMA nodes, this function never sets their indexes in the output CPU set, even if a full node set is given in input.

      +

      Hence the entire topology node set is converted into the set of all CPUs that have some local NUMA nodes.

      + +
      +
      + +

      ◆ hwloc_cpuset_to_nodeset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cpuset_to_nodeset (hwloc_topology_t topology,
      hwloc_const_cpuset_t _cpuset,
      hwloc_nodeset_t nodeset 
      )
      +
      +inlinestatic
      +
      + +

      Convert a CPU set into a NUMA node set.

      +

      For each PU included in the input _cpuset, set the corresponding local NUMA node(s) in the output nodeset.

      +

      If some NUMA nodes have no CPUs at all, this function never sets their indexes in the output node set, even if a full CPU set is given in input.

      +

      Hence the entire topology CPU set is converted into the set of all nodes that have some local CPUs.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00216.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00216.html new file mode 100644 index 0000000000..838ec3de40 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00216.html @@ -0,0 +1,367 @@ + + + + + + + +Hardware Locality (hwloc): Finding I/O objects + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Finding I/O objects
      +
      +
      + + + + + + + + + + + + + + + + +

      +Functions

      static hwloc_obj_t hwloc_get_non_io_ancestor_obj (hwloc_topology_t topology, hwloc_obj_t ioobj)
       
      static hwloc_obj_t hwloc_get_next_pcidev (hwloc_topology_t topology, hwloc_obj_t prev)
       
      static hwloc_obj_t hwloc_get_pcidev_by_busid (hwloc_topology_t topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
       
      static hwloc_obj_t hwloc_get_pcidev_by_busidstring (hwloc_topology_t topology, const char *busid)
       
      static hwloc_obj_t hwloc_get_next_osdev (hwloc_topology_t topology, hwloc_obj_t prev)
       
      static hwloc_obj_t hwloc_get_next_bridge (hwloc_topology_t topology, hwloc_obj_t prev)
       
      static int hwloc_bridge_covers_pcibus (hwloc_obj_t bridge, unsigned domain, unsigned bus)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_bridge_covers_pcibus()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_bridge_covers_pcibus (hwloc_obj_t bridge,
      unsigned domain,
      unsigned bus 
      )
      +
      +inlinestatic
      +
      + +
      +
      + +

      ◆ hwloc_get_next_bridge()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_bridge (hwloc_topology_t topology,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Get the next bridge in the system.

      +
      Returns
      the first bridge if prev is NULL.
      + +
      +
      + +

      ◆ hwloc_get_next_osdev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_osdev (hwloc_topology_t topology,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Get the next OS device in the system.

      +
      Returns
      the first OS device if prev is NULL.
      + +
      +
      + +

      ◆ hwloc_get_next_pcidev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_next_pcidev (hwloc_topology_t topology,
      hwloc_obj_t prev 
      )
      +
      +inlinestatic
      +
      + +

      Get the next PCI device in the system.

      +
      Returns
      the first PCI device if prev is NULL.
      + +
      +
      + +

      ◆ hwloc_get_non_io_ancestor_obj()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_non_io_ancestor_obj (hwloc_topology_t topology,
      hwloc_obj_t ioobj 
      )
      +
      +inlinestatic
      +
      + +

      Get the first non-I/O ancestor object.

      +

      Given the I/O object ioobj, find the smallest non-I/O ancestor object. This object (normal or memory) may then be used for binding because it has non-NULL CPU and node sets and because its locality is the same as ioobj.

      +
      Note
      The resulting object is usually a normal object but it could also be a memory object (e.g. NUMA node) in future platforms if I/O objects ever get attached to memory instead of CPUs.
      + +
      +
      + +

      ◆ hwloc_get_pcidev_by_busid()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_pcidev_by_busid (hwloc_topology_t topology,
      unsigned domain,
      unsigned bus,
      unsigned dev,
      unsigned func 
      )
      +
      +inlinestatic
      +
      + +

      Find the PCI device object matching the PCI bus id given domain, bus device and function PCI bus id.

      + +
      +
      + +

      ◆ hwloc_get_pcidev_by_busidstring()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_get_pcidev_by_busidstring (hwloc_topology_t topology,
      const char * busid 
      )
      +
      +inlinestatic
      +
      + +

      Find the PCI device object matching the PCI bus id given as a string xxxx:yy:zz.t or yy:zz.t.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00217.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00217.html new file mode 100644 index 0000000000..a0df88da8a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00217.html @@ -0,0 +1,1799 @@ + + + + + + + +Hardware Locality (hwloc): The bitmap API + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      The bitmap API
      +
      +
      + + + + + + +

      +Macros

      #define hwloc_bitmap_foreach_begin(id, bitmap)
       
      #define hwloc_bitmap_foreach_end()
       
      + + + + + +

      +Typedefs

      typedef struct hwloc_bitmap_s * hwloc_bitmap_t
       
      typedef const struct hwloc_bitmap_s * hwloc_const_bitmap_t
       
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Functions

      hwloc_bitmap_t hwloc_bitmap_alloc (void)
       
      hwloc_bitmap_t hwloc_bitmap_alloc_full (void)
       
      void hwloc_bitmap_free (hwloc_bitmap_t bitmap)
       
      hwloc_bitmap_t hwloc_bitmap_dup (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_copy (hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
       
      int hwloc_bitmap_snprintf (char *restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_asprintf (char **strp, hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_sscanf (hwloc_bitmap_t bitmap, const char *restrict string)
       
      int hwloc_bitmap_list_snprintf (char *restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_list_asprintf (char **strp, hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_list_sscanf (hwloc_bitmap_t bitmap, const char *restrict string)
       
      int hwloc_bitmap_taskset_snprintf (char *restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_taskset_asprintf (char **strp, hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_taskset_sscanf (hwloc_bitmap_t bitmap, const char *restrict string)
       
      void hwloc_bitmap_zero (hwloc_bitmap_t bitmap)
       
      void hwloc_bitmap_fill (hwloc_bitmap_t bitmap)
       
      int hwloc_bitmap_only (hwloc_bitmap_t bitmap, unsigned id)
       
      int hwloc_bitmap_allbut (hwloc_bitmap_t bitmap, unsigned id)
       
      int hwloc_bitmap_from_ulong (hwloc_bitmap_t bitmap, unsigned long mask)
       
      int hwloc_bitmap_from_ith_ulong (hwloc_bitmap_t bitmap, unsigned i, unsigned long mask)
       
      int hwloc_bitmap_from_ulongs (hwloc_bitmap_t bitmap, unsigned nr, const unsigned long *masks)
       
      int hwloc_bitmap_set (hwloc_bitmap_t bitmap, unsigned id)
       
      int hwloc_bitmap_set_range (hwloc_bitmap_t bitmap, unsigned begin, int end)
       
      int hwloc_bitmap_set_ith_ulong (hwloc_bitmap_t bitmap, unsigned i, unsigned long mask)
       
      int hwloc_bitmap_clr (hwloc_bitmap_t bitmap, unsigned id)
       
      int hwloc_bitmap_clr_range (hwloc_bitmap_t bitmap, unsigned begin, int end)
       
      int hwloc_bitmap_singlify (hwloc_bitmap_t bitmap)
       
      unsigned long hwloc_bitmap_to_ulong (hwloc_const_bitmap_t bitmap)
       
      unsigned long hwloc_bitmap_to_ith_ulong (hwloc_const_bitmap_t bitmap, unsigned i)
       
      int hwloc_bitmap_to_ulongs (hwloc_const_bitmap_t bitmap, unsigned nr, unsigned long *masks)
       
      int hwloc_bitmap_nr_ulongs (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_isset (hwloc_const_bitmap_t bitmap, unsigned id)
       
      int hwloc_bitmap_iszero (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_isfull (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_first (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_next (hwloc_const_bitmap_t bitmap, int prev)
       
      int hwloc_bitmap_last (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_weight (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_first_unset (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_next_unset (hwloc_const_bitmap_t bitmap, int prev)
       
      int hwloc_bitmap_last_unset (hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_or (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
       
      int hwloc_bitmap_and (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
       
      int hwloc_bitmap_andnot (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
       
      int hwloc_bitmap_xor (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
       
      int hwloc_bitmap_not (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap)
       
      int hwloc_bitmap_intersects (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
       
      int hwloc_bitmap_isincluded (hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap)
       
      int hwloc_bitmap_isequal (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
       
      int hwloc_bitmap_compare_first (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
       
      int hwloc_bitmap_compare (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
       
      +

      Detailed Description

      +

      The hwloc_bitmap_t type represents a set of integers (positive or null). A bitmap may be of infinite size (all bits are set after some point). A bitmap may even be full if all bits are set.

      +

      Bitmaps are used by hwloc for sets of OS processors (which may actually be hardware threads) as by hwloc_cpuset_t (a typedef for hwloc_bitmap_t), or sets of NUMA memory nodes as hwloc_nodeset_t (also a typedef for hwloc_bitmap_t). Those are used for cpuset and nodeset fields in the hwloc_obj structure, see Object Sets (hwloc_cpuset_t and hwloc_nodeset_t).

      +

      Both CPU and node sets are always indexed by OS physical number. However users should usually not build CPU and node sets manually (e.g. with hwloc_bitmap_set()). One should rather use existing object sets and combine them with hwloc_bitmap_or(), etc. For instance, binding the current thread on a pair of cores may be performed with:

      hwloc_obj_t core1 = ... , core2 = ... ;
      + +
      hwloc_bitmap_or(set, core1->cpuset, core2->cpuset);
      + + +
      int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags)
      Bind current process or thread on CPUs given in physical bitmap set.
      +
      @ HWLOC_CPUBIND_THREAD
      Bind current thread of current process.
      Definition: hwloc.h:1162
      +
      int hwloc_bitmap_or(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2)
      Or bitmaps bitmap1 and bitmap2 and store the result in bitmap res.
      +
      void hwloc_bitmap_free(hwloc_bitmap_t bitmap)
      Free bitmap bitmap.
      +
      struct hwloc_bitmap_s * hwloc_bitmap_t
      Set of bits represented as an opaque pointer to an internal bitmap.
      Definition: bitmap.h:68
      +
      hwloc_bitmap_t hwloc_bitmap_alloc(void)
      Allocate a new empty bitmap.
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      hwloc_cpuset_t cpuset
      CPUs covered by this object.
      Definition: hwloc.h:512
      +
      Note
      Most functions below return an int that may be negative in case of error. The usual error case would be an internal failure to realloc/extend the storage of the bitmap (errno would be set to ENOMEM).
      +
      +Several examples of using the bitmap API are available under the doc/examples/ directory in the source tree. Regression tests such as tests/hwloc/hwloc_bitmap*.c also make intensive use of this API.
      +

      Macro Definition Documentation

      + +

      ◆ hwloc_bitmap_foreach_begin

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      #define hwloc_bitmap_foreach_begin( id,
       bitmap 
      )
      +
      + +

      Loop macro iterating on bitmap bitmap.

      +

      The loop must start with hwloc_bitmap_foreach_begin() and end with hwloc_bitmap_foreach_end() followed by a terminating ';'.

      +

      index is the loop variable; it should be an unsigned int. The first iteration will set index to the lowest index in the bitmap. Successive iterations will iterate through, in order, all remaining indexes set in the bitmap. To be specific: each iteration will return a value for index such that hwloc_bitmap_isset(bitmap, index) is true.

      +

      The assert prevents the loop from being infinite if the bitmap is infinitely set.

      + +
      +
      + +

      ◆ hwloc_bitmap_foreach_end

      + +
      +
      + + + + + + + +
      #define hwloc_bitmap_foreach_end()
      +
      + +

      End of loop macro iterating on a bitmap.

      +

      Needs a terminating ';'.

      +
      See also
      hwloc_bitmap_foreach_begin()
      + +
      +
      +

      Typedef Documentation

      + +

      ◆ hwloc_bitmap_t

      + +
      +
      + + + + +
      typedef struct hwloc_bitmap_s* hwloc_bitmap_t
      +
      + +

      Set of bits represented as an opaque pointer to an internal bitmap.

      + +
      +
      + +

      ◆ hwloc_const_bitmap_t

      + +
      +
      + + + + +
      typedef const struct hwloc_bitmap_s* hwloc_const_bitmap_t
      +
      + +

      a non-modifiable hwloc_bitmap_t

      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_bitmap_allbut()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_allbut (hwloc_bitmap_t bitmap,
      unsigned id 
      )
      +
      + +

      Fill the bitmap and clear the index id.

      + +
      +
      + +

      ◆ hwloc_bitmap_alloc()

      + +
      +
      + + + + + + + + +
      hwloc_bitmap_t hwloc_bitmap_alloc (void )
      +
      + +

      Allocate a new empty bitmap.

      +
      Returns
      A valid bitmap or NULL.
      +

      The bitmap should be freed by a corresponding call to hwloc_bitmap_free().

      + +
      +
      + +

      ◆ hwloc_bitmap_alloc_full()

      + +
      +
      + + + + + + + + +
      hwloc_bitmap_t hwloc_bitmap_alloc_full (void )
      +
      + +

      Allocate a new full bitmap.

      + +
      +
      + +

      ◆ hwloc_bitmap_and()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_and (hwloc_bitmap_t res,
      hwloc_const_bitmap_t bitmap1,
      hwloc_const_bitmap_t bitmap2 
      )
      +
      + +

      And bitmaps bitmap1 and bitmap2 and store the result in bitmap res.

      +

      res can be the same as bitmap1 or bitmap2

      + +
      +
      + +

      ◆ hwloc_bitmap_andnot()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_andnot (hwloc_bitmap_t res,
      hwloc_const_bitmap_t bitmap1,
      hwloc_const_bitmap_t bitmap2 
      )
      +
      + +

      And bitmap bitmap1 and the negation of bitmap2 and store the result in bitmap res.

      +

      res can be the same as bitmap1 or bitmap2

      + +
      +
      + +

      ◆ hwloc_bitmap_asprintf()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_asprintf (char ** strp,
      hwloc_const_bitmap_t bitmap 
      )
      +
      + +

      Stringify a bitmap into a newly allocated string.

      +
      Returns
      -1 on error.
      + +
      +
      + +

      ◆ hwloc_bitmap_clr()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_clr (hwloc_bitmap_t bitmap,
      unsigned id 
      )
      +
      + +

      Remove index id from bitmap bitmap.

      + +
      +
      + +

      ◆ hwloc_bitmap_clr_range()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_clr_range (hwloc_bitmap_t bitmap,
      unsigned begin,
      int end 
      )
      +
      + +

      Remove indexes from begin to end in bitmap bitmap.

      +

      If end is -1, the range is infinite.

      + +
      +
      + +

      ◆ hwloc_bitmap_compare()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_compare (hwloc_const_bitmap_t bitmap1,
      hwloc_const_bitmap_t bitmap2 
      )
      +
      + +

      Compare bitmaps bitmap1 and bitmap2 in lexicographic order.

      +

      Lexicographic comparison of bitmaps, starting for their highest indexes. Compare last indexes first, then second, etc. The empty bitmap is considered lower than anything.

      +
      Returns
      -1 if bitmap1 is considered smaller than bitmap2.
      +
      +1 if bitmap1 is considered larger than bitmap2.
      +
      +0 if bitmaps are equal (contrary to hwloc_bitmap_compare_first()).
      +

      For instance comparing binary bitmaps 0011 and 0110 returns -1 (hence 0011 is considered smaller than 0110). Comparing 00101 and 01010 returns -1 too.

      +
      Note
      This is different from the non-existing hwloc_bitmap_compare_last() which would only compare the highest index of each bitmap.
      + +
      +
      + +

      ◆ hwloc_bitmap_compare_first()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_compare_first (hwloc_const_bitmap_t bitmap1,
      hwloc_const_bitmap_t bitmap2 
      )
      +
      + +

      Compare bitmaps bitmap1 and bitmap2 using their lowest index.

      +

      A bitmap is considered smaller if its least significant bit is smaller. The empty bitmap is considered higher than anything (because its least significant bit does not exist).

      +
      Returns
      -1 if bitmap1 is considered smaller than bitmap2.
      +
      +1 if bitmap1 is considered larger than bitmap2.
      +

      For instance comparing binary bitmaps 0011 and 0110 returns -1 (hence 0011 is considered smaller than 0110) because least significant bit of 0011 (0001) is smaller than least significant bit of 0110 (0010). Comparing 01001 and 00110 would also return -1 for the same reason.

      +
      Returns
      0 if bitmaps are considered equal, even if they are not strictly equal. They just need to have the same least significant bit. For instance, comparing binary bitmaps 0010 and 0110 returns 0 because they have the same least significant bit.
      + +
      +
      + +

      ◆ hwloc_bitmap_copy()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_copy (hwloc_bitmap_t dst,
      hwloc_const_bitmap_t src 
      )
      +
      + +

      Copy the contents of bitmap src into the already allocated bitmap dst.

      + +
      +
      + +

      ◆ hwloc_bitmap_dup()

      + +
      +
      + + + + + + + + +
      hwloc_bitmap_t hwloc_bitmap_dup (hwloc_const_bitmap_t bitmap)
      +
      + +

      Duplicate bitmap bitmap by allocating a new bitmap and copying bitmap contents.

      +

      If bitmap is NULL, NULL is returned.

      + +
      +
      + +

      ◆ hwloc_bitmap_fill()

      + +
      +
      + + + + + + + + +
      void hwloc_bitmap_fill (hwloc_bitmap_t bitmap)
      +
      + +

      Fill bitmap bitmap with all possible indexes (even if those objects don't exist or are otherwise unavailable)

      + +
      +
      + +

      ◆ hwloc_bitmap_first()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_first (hwloc_const_bitmap_t bitmap)
      +
      + +

      Compute the first index (least significant bit) in bitmap bitmap.

      +
      Returns
      -1 if no index is set in bitmap.
      + +
      +
      + +

      ◆ hwloc_bitmap_first_unset()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_first_unset (hwloc_const_bitmap_t bitmap)
      +
      + +

      Compute the first unset index (least significant bit) in bitmap bitmap.

      +
      Returns
      -1 if no index is unset in bitmap.
      + +
      +
      + +

      ◆ hwloc_bitmap_free()

      + +
      +
      + + + + + + + + +
      void hwloc_bitmap_free (hwloc_bitmap_t bitmap)
      +
      + +

      Free bitmap bitmap.

      +

      If bitmap is NULL, no operation is performed.

      + +
      +
      + +

      ◆ hwloc_bitmap_from_ith_ulong()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_from_ith_ulong (hwloc_bitmap_t bitmap,
      unsigned i,
      unsigned long mask 
      )
      +
      + +

      Setup bitmap bitmap from unsigned long mask used as i -th subset.

      + +
      +
      + +

      ◆ hwloc_bitmap_from_ulong()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_from_ulong (hwloc_bitmap_t bitmap,
      unsigned long mask 
      )
      +
      + +

      Setup bitmap bitmap from unsigned long mask.

      + +
      +
      + +

      ◆ hwloc_bitmap_from_ulongs()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_from_ulongs (hwloc_bitmap_t bitmap,
      unsigned nr,
      const unsigned long * masks 
      )
      +
      + +

      Setup bitmap bitmap from unsigned longs masks used as first nr subsets.

      + +
      +
      + +

      ◆ hwloc_bitmap_intersects()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_intersects (hwloc_const_bitmap_t bitmap1,
      hwloc_const_bitmap_t bitmap2 
      )
      +
      + +

      Test whether bitmaps bitmap1 and bitmap2 intersects.

      +
      Returns
      1 if bitmaps intersect, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_bitmap_isequal()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_isequal (hwloc_const_bitmap_t bitmap1,
      hwloc_const_bitmap_t bitmap2 
      )
      +
      + +

      Test whether bitmap bitmap1 is equal to bitmap bitmap2.

      +
      Returns
      1 if bitmaps are equal, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_bitmap_isfull()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_isfull (hwloc_const_bitmap_t bitmap)
      +
      + +

      Test whether bitmap bitmap is completely full.

      +
      Returns
      1 if bitmap is full, 0 otherwise.
      +
      Note
      A full bitmap is always infinitely set.
      + +
      +
      + +

      ◆ hwloc_bitmap_isincluded()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_isincluded (hwloc_const_bitmap_t sub_bitmap,
      hwloc_const_bitmap_t super_bitmap 
      )
      +
      + +

      Test whether bitmap sub_bitmap is part of bitmap super_bitmap.

      +
      Returns
      1 if sub_bitmap is included in super_bitmap, 0 otherwise.
      +
      Note
      The empty bitmap is considered included in any other bitmap.
      + +
      +
      + +

      ◆ hwloc_bitmap_isset()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_isset (hwloc_const_bitmap_t bitmap,
      unsigned id 
      )
      +
      + +

      Test whether index id is part of bitmap bitmap.

      +
      Returns
      1 if the bit at index id is set in bitmap bitmap, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_bitmap_iszero()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_iszero (hwloc_const_bitmap_t bitmap)
      +
      + +

      Test whether bitmap bitmap is empty.

      +
      Returns
      1 if bitmap is empty, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_bitmap_last()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_last (hwloc_const_bitmap_t bitmap)
      +
      + +

      Compute the last index (most significant bit) in bitmap bitmap.

      +
      Returns
      -1 if no index is set in bitmap, or if bitmap is infinitely set.
      + +
      +
      + +

      ◆ hwloc_bitmap_last_unset()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_last_unset (hwloc_const_bitmap_t bitmap)
      +
      + +

      Compute the last unset index (most significant bit) in bitmap bitmap.

      +
      Returns
      -1 if no index is unset in bitmap, or if bitmap is infinitely set.
      + +
      +
      + +

      ◆ hwloc_bitmap_list_asprintf()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_list_asprintf (char ** strp,
      hwloc_const_bitmap_t bitmap 
      )
      +
      + +

      Stringify a bitmap into a newly allocated list string.

      +
      Returns
      -1 on error.
      + +
      +
      + +

      ◆ hwloc_bitmap_list_snprintf()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_list_snprintf (char *restrict buf,
      size_t buflen,
      hwloc_const_bitmap_t bitmap 
      )
      +
      + +

      Stringify a bitmap in the list format.

      +

      Lists are comma-separated indexes or ranges. Ranges are dash separated indexes. The last range may not have an ending indexes if the bitmap is infinitely set.

      +

      Up to buflen characters may be written in buffer buf.

      +

      If buflen is 0, buf may safely be NULL.

      +
      Returns
      the number of character that were actually written if not truncating, or that would have been written (not including the ending \0).
      + +
      +
      + +

      ◆ hwloc_bitmap_list_sscanf()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_list_sscanf (hwloc_bitmap_t bitmap,
      const char *restrict string 
      )
      +
      + +

      Parse a list string and stores it in bitmap bitmap.

      + +
      +
      + +

      ◆ hwloc_bitmap_next()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_next (hwloc_const_bitmap_t bitmap,
      int prev 
      )
      +
      + +

      Compute the next index in bitmap bitmap which is after index prev.

      +

      If prev is -1, the first index is returned.

      +
      Returns
      -1 if no index with higher index is set in bitmap.
      + +
      +
      + +

      ◆ hwloc_bitmap_next_unset()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_next_unset (hwloc_const_bitmap_t bitmap,
      int prev 
      )
      +
      + +

      Compute the next unset index in bitmap bitmap which is after index prev.

      +

      If prev is -1, the first unset index is returned.

      +
      Returns
      -1 if no index with higher index is unset in bitmap.
      + +
      +
      + +

      ◆ hwloc_bitmap_not()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_not (hwloc_bitmap_t res,
      hwloc_const_bitmap_t bitmap 
      )
      +
      + +

      Negate bitmap bitmap and store the result in bitmap res.

      +

      res can be the same as bitmap

      + +
      +
      + +

      ◆ hwloc_bitmap_nr_ulongs()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_nr_ulongs (hwloc_const_bitmap_t bitmap)
      +
      + +

      Return the number of unsigned longs required for storing bitmap bitmap entirely.

      +

      This is the number of contiguous unsigned longs from the very first bit of the bitmap (even if unset) up to the last set bit. This is useful for knowing the nr parameter to pass to hwloc_bitmap_to_ulongs() (or which calls to hwloc_bitmap_to_ith_ulong() are needed) to entirely convert a bitmap into multiple unsigned longs.

      +

      When called on the output of hwloc_topology_get_topology_cpuset(), the returned number is large enough for all cpusets of the topology.

      +
      Returns
      -1 if bitmap is infinite.
      + +
      +
      + +

      ◆ hwloc_bitmap_only()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_only (hwloc_bitmap_t bitmap,
      unsigned id 
      )
      +
      + +

      Empty the bitmap bitmap and add bit id.

      + +
      +
      + +

      ◆ hwloc_bitmap_or()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_or (hwloc_bitmap_t res,
      hwloc_const_bitmap_t bitmap1,
      hwloc_const_bitmap_t bitmap2 
      )
      +
      + +

      Or bitmaps bitmap1 and bitmap2 and store the result in bitmap res.

      +

      res can be the same as bitmap1 or bitmap2

      + +
      +
      + +

      ◆ hwloc_bitmap_set()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_set (hwloc_bitmap_t bitmap,
      unsigned id 
      )
      +
      + +

      Add index id in bitmap bitmap.

      + +
      +
      + +

      ◆ hwloc_bitmap_set_ith_ulong()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_set_ith_ulong (hwloc_bitmap_t bitmap,
      unsigned i,
      unsigned long mask 
      )
      +
      + +

      Replace i -th subset of bitmap bitmap with unsigned long mask.

      + +
      +
      + +

      ◆ hwloc_bitmap_set_range()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_set_range (hwloc_bitmap_t bitmap,
      unsigned begin,
      int end 
      )
      +
      + +

      Add indexes from begin to end in bitmap bitmap.

      +

      If end is -1, the range is infinite.

      + +
      +
      + +

      ◆ hwloc_bitmap_singlify()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_singlify (hwloc_bitmap_t bitmap)
      +
      + +

      Keep a single index among those set in bitmap bitmap.

      +

      May be useful before binding so that the process does not have a chance of migrating between multiple processors in the original mask. Instead of running the task on any PU inside the given CPU set, the operating system scheduler will be forced to run it on a single of these PUs. It avoids a migration overhead and cache-line ping-pongs between PUs.

      +
      Note
      This function is NOT meant to distribute multiple processes within a single CPU set. It always return the same single bit when called multiple times on the same input set. hwloc_distrib() may be used for generating CPU sets to distribute multiple tasks below a single multi-PU object.
      +
      +This function cannot be applied to an object set directly. It should be applied to a copy (which may be obtained with hwloc_bitmap_dup()).
      + +
      +
      + +

      ◆ hwloc_bitmap_snprintf()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_snprintf (char *restrict buf,
      size_t buflen,
      hwloc_const_bitmap_t bitmap 
      )
      +
      + +

      Stringify a bitmap.

      +

      Up to buflen characters may be written in buffer buf.

      +

      If buflen is 0, buf may safely be NULL.

      +
      Returns
      the number of character that were actually written if not truncating, or that would have been written (not including the ending \0).
      + +
      +
      + +

      ◆ hwloc_bitmap_sscanf()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_sscanf (hwloc_bitmap_t bitmap,
      const char *restrict string 
      )
      +
      + +

      Parse a bitmap string and stores it in bitmap bitmap.

      + +
      +
      + +

      ◆ hwloc_bitmap_taskset_asprintf()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_taskset_asprintf (char ** strp,
      hwloc_const_bitmap_t bitmap 
      )
      +
      + +

      Stringify a bitmap into a newly allocated taskset-specific string.

      +
      Returns
      -1 on error.
      + +
      +
      + +

      ◆ hwloc_bitmap_taskset_snprintf()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_taskset_snprintf (char *restrict buf,
      size_t buflen,
      hwloc_const_bitmap_t bitmap 
      )
      +
      + +

      Stringify a bitmap in the taskset-specific format.

      +

      The taskset command manipulates bitmap strings that contain a single (possible very long) hexadecimal number starting with 0x.

      +

      Up to buflen characters may be written in buffer buf.

      +

      If buflen is 0, buf may safely be NULL.

      +
      Returns
      the number of character that were actually written if not truncating, or that would have been written (not including the ending \0).
      + +
      +
      + +

      ◆ hwloc_bitmap_taskset_sscanf()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_taskset_sscanf (hwloc_bitmap_t bitmap,
      const char *restrict string 
      )
      +
      + +

      Parse a taskset-specific bitmap string and stores it in bitmap bitmap.

      + +
      +
      + +

      ◆ hwloc_bitmap_to_ith_ulong()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      unsigned long hwloc_bitmap_to_ith_ulong (hwloc_const_bitmap_t bitmap,
      unsigned i 
      )
      +
      + +

      Convert the i -th subset of bitmap bitmap into unsigned long mask.

      + +
      +
      + +

      ◆ hwloc_bitmap_to_ulong()

      + +
      +
      + + + + + + + + +
      unsigned long hwloc_bitmap_to_ulong (hwloc_const_bitmap_t bitmap)
      +
      + +

      Convert the beginning part of bitmap bitmap into unsigned long mask.

      + +
      +
      + +

      ◆ hwloc_bitmap_to_ulongs()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_to_ulongs (hwloc_const_bitmap_t bitmap,
      unsigned nr,
      unsigned long * masks 
      )
      +
      + +

      Convert the first nr subsets of bitmap bitmap into the array of nr unsigned long masks.

      +

      nr may be determined earlier with hwloc_bitmap_nr_ulongs().

      +
      Returns
      0
      + +
      +
      + +

      ◆ hwloc_bitmap_weight()

      + +
      +
      + + + + + + + + +
      int hwloc_bitmap_weight (hwloc_const_bitmap_t bitmap)
      +
      + +

      Compute the "weight" of bitmap bitmap (i.e., number of indexes that are in the bitmap).

      +
      Returns
      the number of indexes that are in the bitmap.
      +
      +-1 if bitmap is infinitely set.
      + +
      +
      + +

      ◆ hwloc_bitmap_xor()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_bitmap_xor (hwloc_bitmap_t res,
      hwloc_const_bitmap_t bitmap1,
      hwloc_const_bitmap_t bitmap2 
      )
      +
      + +

      Xor bitmaps bitmap1 and bitmap2 and store the result in bitmap res.

      +

      res can be the same as bitmap1 or bitmap2

      + +
      +
      + +

      ◆ hwloc_bitmap_zero()

      + +
      +
      + + + + + + + + +
      void hwloc_bitmap_zero (hwloc_bitmap_t bitmap)
      +
      + +

      Empty the bitmap bitmap.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00218.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00218.html new file mode 100644 index 0000000000..96e95546ff --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00218.html @@ -0,0 +1,423 @@ + + + + + + + +Hardware Locality (hwloc): Exporting Topologies to XML + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Exporting Topologies to XML
      +
      +
      + + + + +

      +Enumerations

      enum  hwloc_topology_export_xml_flags_e { HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1 + }
       
      + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_topology_export_xml (hwloc_topology_t topology, const char *xmlpath, unsigned long flags)
       
      int hwloc_topology_export_xmlbuffer (hwloc_topology_t topology, char **xmlbuffer, int *buflen, unsigned long flags)
       
      void hwloc_free_xmlbuffer (hwloc_topology_t topology, char *xmlbuffer)
       
      void hwloc_topology_set_userdata_export_callback (hwloc_topology_t topology, void(*export_cb)(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj))
       
      int hwloc_export_obj_userdata (void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length)
       
      int hwloc_export_obj_userdata_base64 (void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length)
       
      void hwloc_topology_set_userdata_import_callback (hwloc_topology_t topology, void(*import_cb)(hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length))
       
      +

      Detailed Description

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_topology_export_xml_flags_e

      + +
      +
      + +

      Flags for exporting XML topologies.

      +

      Flags to be given as a OR'ed set to hwloc_topology_export_xml().

      + + +
      Enumerator
      HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1 

      Export XML that is loadable by hwloc v1.x. However, the export may miss some details about the topology.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_export_obj_userdata()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_export_obj_userdata (void * reserved,
      hwloc_topology_t topology,
      hwloc_obj_t obj,
      const char * name,
      const void * buffer,
      size_t length 
      )
      +
      + +

      Export some object userdata to XML.

      +

      This function may only be called from within the export() callback passed to hwloc_topology_set_userdata_export_callback(). It may be invoked one of multiple times to export some userdata to XML. The buffer content of length length is stored with optional name name.

      +

      When importing this XML file, the import() callback (if set) will be called exactly as many times as hwloc_export_obj_userdata() was called during export(). It will receive the corresponding name, buffer and length arguments.

      +

      reserved, topology and obj must be the first three parameters that were given to the export callback.

      +

      Only printable characters may be exported to XML string attributes. If a non-printable character is passed in name or buffer, the function returns -1 with errno set to EINVAL.

      +

      If exporting binary data, the application should first encode into printable characters only (or use hwloc_export_obj_userdata_base64()). It should also take care of portability issues if the export may be reimported on a different architecture.

      + +
      +
      + +

      ◆ hwloc_export_obj_userdata_base64()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_export_obj_userdata_base64 (void * reserved,
      hwloc_topology_t topology,
      hwloc_obj_t obj,
      const char * name,
      const void * buffer,
      size_t length 
      )
      +
      + +

      Encode and export some object userdata to XML.

      +

      This function is similar to hwloc_export_obj_userdata() but it encodes the input buffer into printable characters before exporting. On import, decoding is automatically performed before the data is given to the import() callback if any.

      +

      This function may only be called from within the export() callback passed to hwloc_topology_set_userdata_export_callback().

      +

      The function does not take care of portability issues if the export may be reimported on a different architecture.

      + +
      +
      + +

      ◆ hwloc_free_xmlbuffer()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      void hwloc_free_xmlbuffer (hwloc_topology_t topology,
      char * xmlbuffer 
      )
      +
      + +

      Free a buffer allocated by hwloc_topology_export_xmlbuffer()

      + +
      +
      + +

      ◆ hwloc_topology_export_xml()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_export_xml (hwloc_topology_t topology,
      const char * xmlpath,
      unsigned long flags 
      )
      +
      + +

      Export the topology into an XML file.

      +

      This file may be loaded later through hwloc_topology_set_xml().

      +

      By default, the latest export format is used, which means older hwloc releases (e.g. v1.x) will not be able to import it. Exporting to v1.x specific XML format is possible using flag HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1 but it may miss some details about the topology. If there is any chance that the exported file may ever be imported back by a process using hwloc 1.x, one should consider detecting it at runtime and using the corresponding export format.

      +

      flags is a OR'ed set of hwloc_topology_export_xml_flags_e.

      +
      Returns
      -1 if a failure occured.
      +
      Note
      See also hwloc_topology_set_userdata_export_callback() for exporting application-specific object userdata.
      +
      +The topology-specific userdata pointer is ignored when exporting to XML.
      +
      +Only printable characters may be exported to XML string attributes. Any other character, especially any non-ASCII character, will be silently dropped.
      +
      +If name is "-", the XML output is sent to the standard output.
      + +
      +
      + +

      ◆ hwloc_topology_export_xmlbuffer()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_export_xmlbuffer (hwloc_topology_t topology,
      char ** xmlbuffer,
      int * buflen,
      unsigned long flags 
      )
      +
      + +

      Export the topology into a newly-allocated XML memory buffer.

      +

      xmlbuffer is allocated by the callee and should be freed with hwloc_free_xmlbuffer() later in the caller.

      +

      This memory buffer may be loaded later through hwloc_topology_set_xmlbuffer().

      +

      By default, the latest export format is used, which means older hwloc releases (e.g. v1.x) will not be able to import it. Exporting to v1.x specific XML format is possible using flag HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1 but it may miss some details about the topology. If there is any chance that the exported buffer may ever be imported back by a process using hwloc 1.x, one should consider detecting it at runtime and using the corresponding export format.

      +

      The returned buffer ends with a \0 that is included in the returned length.

      +

      flags is a OR'ed set of hwloc_topology_export_xml_flags_e.

      +
      Returns
      -1 if a failure occured.
      +
      Note
      See also hwloc_topology_set_userdata_export_callback() for exporting application-specific object userdata.
      +
      +The topology-specific userdata pointer is ignored when exporting to XML.
      +
      +Only printable characters may be exported to XML string attributes. Any other character, especially any non-ASCII character, will be silently dropped.
      + +
      +
      + +

      ◆ hwloc_topology_set_userdata_export_callback()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      void hwloc_topology_set_userdata_export_callback (hwloc_topology_t topology,
      void(*)(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj) export_cb 
      )
      +
      + +

      Set the application-specific callback for exporting object userdata.

      +

      The object userdata pointer is not exported to XML by default because hwloc does not know what it contains.

      +

      This function lets applications set export_cb to a callback function that converts this opaque userdata into an exportable string.

      +

      export_cb is invoked during XML export for each object whose userdata pointer is not NULL. The callback should use hwloc_export_obj_userdata() or hwloc_export_obj_userdata_base64() to actually export something to XML (possibly multiple times per object).

      +

      export_cb may be set to NULL if userdata should not be exported to XML.

      +
      Note
      The topology-specific userdata pointer is ignored when exporting to XML.
      + +
      +
      + +

      ◆ hwloc_topology_set_userdata_import_callback()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      void hwloc_topology_set_userdata_import_callback (hwloc_topology_t topology,
      void(*)(hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length) import_cb 
      )
      +
      + +

      Set the application-specific callback for importing userdata.

      +

      On XML import, userdata is ignored by default because hwloc does not know how to store it in memory.

      +

      This function lets applications set import_cb to a callback function that will get the XML-stored userdata and store it in the object as expected by the application.

      +

      import_cb is called during hwloc_topology_load() as many times as hwloc_export_obj_userdata() was called during export. The topology is not entirely setup yet. Object attributes are ready to consult, but links between objects are not.

      +

      import_cb may be NULL if userdata should be ignored during import.

      +
      Note
      buffer contains length characters followed by a null byte ('\0').
      +
      +This function should be called before hwloc_topology_load().
      +
      +The topology-specific userdata pointer is ignored when importing from XML.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00219.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00219.html new file mode 100644 index 0000000000..5d54843520 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00219.html @@ -0,0 +1,155 @@ + + + + + + + +Hardware Locality (hwloc): Exporting Topologies to Synthetic + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Exporting Topologies to Synthetic
      +
      +
      + + + + +

      +Enumerations

      enum  hwloc_topology_export_synthetic_flags_e { HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES +, HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS +, HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1 +, HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_IGNORE_MEMORY + }
       
      + + + +

      +Functions

      int hwloc_topology_export_synthetic (hwloc_topology_t topology, char *buffer, size_t buflen, unsigned long flags)
       
      +

      Detailed Description

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_topology_export_synthetic_flags_e

      + +
      +
      + +

      Flags for exporting synthetic topologies.

      +

      Flags to be given as a OR'ed set to hwloc_topology_export_synthetic().

      + + + + + +
      Enumerator
      HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES 

      Export extended types such as L2dcache as basic types such as Cache.

      +

      This is required if loading the synthetic description with hwloc < 1.9.

      +
      HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS 

      Do not export level attributes.

      +

      Ignore level attributes such as memory/cache sizes or PU indexes. This is required if loading the synthetic description with hwloc < 1.10.

      +
      HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1 

      Export the memory hierarchy as expected in hwloc 1.x.

      +

      Instead of attaching memory children to levels, export single NUMA node child as normal intermediate levels, when possible. This is required if loading the synthetic description with hwloc 1.x. However this may fail if some objects have multiple local NUMA nodes.

      +
      HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_IGNORE_MEMORY 

      Do not export memory information.

      +

      Only export the actual hierarchy of normal CPU-side objects and ignore where memory is attached. This is useful for when the hierarchy of CPUs is what really matters, but it behaves as if there was a single machine-wide NUMA node.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_topology_export_synthetic()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_export_synthetic (hwloc_topology_t topology,
      char * buffer,
      size_t buflen,
      unsigned long flags 
      )
      +
      + +

      Export the topology as a synthetic string.

      +

      At most buflen characters will be written in buffer, including the terminating \0.

      +

      This exported string may be given back to hwloc_topology_set_synthetic().

      +

      flags is a OR'ed set of hwloc_topology_export_synthetic_flags_e.

      +
      Returns
      The number of characters that were written, not including the terminating \0.
      +
      +-1 if the topology could not be exported, for instance if it is not symmetric.
      +
      Note
      I/O and Misc children are ignored, the synthetic string only describes normal children.
      +
      +A 1024-byte buffer should be large enough for exporting topologies in the vast majority of cases.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00220.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00220.html new file mode 100644 index 0000000000..40fc1fd287 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00220.html @@ -0,0 +1,494 @@ + + + + + + + +Hardware Locality (hwloc): Retrieve distances between objects + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Retrieve distances between objects
      +
      +
      + + + + +

      +Data Structures

      struct  hwloc_distances_s
       
      + + + + + +

      +Enumerations

      enum  hwloc_distances_kind_e {
      +  HWLOC_DISTANCES_KIND_FROM_OS +, HWLOC_DISTANCES_KIND_FROM_USER +, HWLOC_DISTANCES_KIND_MEANS_LATENCY +, HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH +,
      +  HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES +
      + }
       
      enum  hwloc_distances_transform_e { HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL +, HWLOC_DISTANCES_TRANSFORM_LINKS +, HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS +, HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE + }
       
      + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_distances_get (hwloc_topology_t topology, unsigned *nr, struct hwloc_distances_s **distances, unsigned long kind, unsigned long flags)
       
      int hwloc_distances_get_by_depth (hwloc_topology_t topology, int depth, unsigned *nr, struct hwloc_distances_s **distances, unsigned long kind, unsigned long flags)
       
      int hwloc_distances_get_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned *nr, struct hwloc_distances_s **distances, unsigned long kind, unsigned long flags)
       
      int hwloc_distances_get_by_name (hwloc_topology_t topology, const char *name, unsigned *nr, struct hwloc_distances_s **distances, unsigned long flags)
       
      const char * hwloc_distances_get_name (hwloc_topology_t topology, struct hwloc_distances_s *distances)
       
      void hwloc_distances_release (hwloc_topology_t topology, struct hwloc_distances_s *distances)
       
      int hwloc_distances_transform (hwloc_topology_t topology, struct hwloc_distances_s *distances, enum hwloc_distances_transform_e transform, void *transform_attr, unsigned long flags)
       
      +

      Detailed Description

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_distances_kind_e

      + +
      +
      + + + + +
      enum hwloc_distances_kind_e
      +
      + +

      Kinds of distance matrices.

      +

      The kind attribute of struct hwloc_distances_s is a OR'ed set of kinds.

      +

      A kind of format HWLOC_DISTANCES_KIND_FROM_* specifies where the distance information comes from, if known.

      +

      A kind of format HWLOC_DISTANCES_KIND_MEANS_* specifies whether values are latencies or bandwidths, if applicable.

      + + + + + + +
      Enumerator
      HWLOC_DISTANCES_KIND_FROM_OS 

      These distances were obtained from the operating system or hardware.

      +
      HWLOC_DISTANCES_KIND_FROM_USER 

      These distances were provided by the user.

      +
      HWLOC_DISTANCES_KIND_MEANS_LATENCY 

      Distance values are similar to latencies between objects. Values are smaller for closer objects, hence minimal on the diagonal of the matrix (distance between an object and itself). It could also be the number of network hops between objects, etc.

      +
      HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH 

      Distance values are similar to bandwidths between objects. Values are higher for closer objects, hence maximal on the diagonal of the matrix (distance between an object and itself). Such values are currently ignored for distance-based grouping.

      +
      HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES 

      This distances structure covers objects of different types. This may apply to the "NVLinkBandwidth" structure in presence of a NVSwitch or POWER processor NVLink port.

      +
      + +
      +
      + +

      ◆ hwloc_distances_transform_e

      + +
      +
      + + + + +
      enum hwloc_distances_transform_e
      +
      + +

      Transformations of distances structures.

      + + + + + +
      Enumerator
      HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL 

      Remove NULL objects from the distances structure.

      +

      Every object that was replaced with NULL in the objs array is removed and the values array is updated accordingly.

      +

      At least 2 objects must remain, otherwise hwloc_distances_transform() will return -1 with errno set to EINVAL.

      +

      kind will be updated with or without HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES according to the remaining objects.

      +
      HWLOC_DISTANCES_TRANSFORM_LINKS 

      Replace bandwidth values with a number of links.

      +

      Usually all values will be either 0 (no link) or 1 (one link). However some matrices could get larger values if some pairs of peers are connected by different numbers of links.

      +

      Values on the diagonal are set to 0.

      +

      This transformation only applies to bandwidth matrices.

      +
      HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS 

      Merge switches with multiple ports into a single object. This currently only applies to NVSwitches where GPUs seem connected to different separate switch ports in the NVLinkBandwidth matrix. This transformation will replace all of them with the same port connected to all GPUs. Other ports are removed by applying HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL internally.

      +
      HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE 

      Apply a transitive closure to the matrix to connect objects across switches. This currently only applies to GPUs and NVSwitches in the NVLinkBandwidth matrix. All pairs of GPUs will be reported as directly connected.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_distances_get()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_get (hwloc_topology_t topology,
      unsigned * nr,
      struct hwloc_distances_s ** distances,
      unsigned long kind,
      unsigned long flags 
      )
      +
      + +

      Retrieve distance matrices.

      +

      Retrieve distance matrices from the topology into the distances array.

      +

      flags is currently unused, should be 0.

      +

      kind serves as a filter. If 0, all distance matrices are returned. If it contains some HWLOC_DISTANCES_KIND_FROM_*, only distance matrices whose kind matches one of these are returned. If it contains some HWLOC_DISTANCES_KIND_MEANS_*, only distance matrices whose kind matches one of these are returned.

      +

      On input, nr points to the number of distance matrices that may be stored in distances. On output, nr points to the number of distance matrices that were actually found, even if some of them couldn't be stored in distances. Distance matrices that couldn't be stored are ignored, but the function still returns success (0). The caller may find out by comparing the value pointed by nr before and after the function call.

      +

      Each distance matrix returned in the distances array should be released by the caller using hwloc_distances_release().

      + +
      +
      + +

      ◆ hwloc_distances_get_by_depth()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_get_by_depth (hwloc_topology_t topology,
      int depth,
      unsigned * nr,
      struct hwloc_distances_s ** distances,
      unsigned long kind,
      unsigned long flags 
      )
      +
      + +

      Retrieve distance matrices for object at a specific depth in the topology.

      +

      Identical to hwloc_distances_get() with the additional depth filter.

      + +
      +
      + +

      ◆ hwloc_distances_get_by_name()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_get_by_name (hwloc_topology_t topology,
      const char * name,
      unsigned * nr,
      struct hwloc_distances_s ** distances,
      unsigned long flags 
      )
      +
      + +

      Retrieve a distance matrix with the given name.

      +

      Usually only one distances structure may match a given name.

      +

      The name of the most common structure is "NUMALatency". Others include "XGMIBandwidth", "XGMIHops" and "NVLinkBandwidth".

      + +
      +
      + +

      ◆ hwloc_distances_get_by_type()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_get_by_type (hwloc_topology_t topology,
      hwloc_obj_type_t type,
      unsigned * nr,
      struct hwloc_distances_s ** distances,
      unsigned long kind,
      unsigned long flags 
      )
      +
      + +

      Retrieve distance matrices for object of a specific type.

      +

      Identical to hwloc_distances_get() with the additional type filter.

      + +
      +
      + +

      ◆ hwloc_distances_get_name()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      const char* hwloc_distances_get_name (hwloc_topology_t topology,
      struct hwloc_distances_sdistances 
      )
      +
      + +

      Get a description of what a distances structure contains.

      +

      For instance "NUMALatency" for hardware-provided NUMA distances (ACPI SLIT), or NULL if unknown.

      + +
      +
      + +

      ◆ hwloc_distances_release()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      void hwloc_distances_release (hwloc_topology_t topology,
      struct hwloc_distances_sdistances 
      )
      +
      + +

      Release a distance matrix structure previously returned by hwloc_distances_get().

      +
      Note
      This function is not required if the structure is removed with hwloc_distances_release_remove().
      + +
      +
      + +

      ◆ hwloc_distances_transform()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_transform (hwloc_topology_t topology,
      struct hwloc_distances_sdistances,
      enum hwloc_distances_transform_e transform,
      void * transform_attr,
      unsigned long flags 
      )
      +
      + +

      Apply a transformation to a distances structure.

      +

      Modify a distances structure that was previously obtained with hwloc_distances_get() or one of its variants.

      +

      This modifies the local copy of the distances structures but does not modify the distances information stored inside the topology (retrieved by another call to hwloc_distances_get() or exported to XML). To do so, one should add a new distances structure with same name, kind, objects and values (see Add distances between objects) and then remove this old one with hwloc_distances_release_remove().

      +

      transform must be one of the transformations listed in hwloc_distances_transform_e.

      +

      These transformations may modify the contents of the objs or values arrays.

      +

      transform_attr must be NULL for now.

      +

      flags must be 0 for now.

      +
      Note
      Objects in distances array objs may be directly modified in place without using hwloc_distances_transform(). One may use hwloc_get_obj_with_same_locality() to easily convert between similar objects of different types.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00221.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00221.html new file mode 100644 index 0000000000..7143f0ff45 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00221.html @@ -0,0 +1,161 @@ + + + + + + + +Hardware Locality (hwloc): Helpers for consulting distance matrices + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Helpers for consulting distance matrices
      +
      +
      + + + + + + +

      +Functions

      static int hwloc_distances_obj_index (struct hwloc_distances_s *distances, hwloc_obj_t obj)
       
      static int hwloc_distances_obj_pair_values (struct hwloc_distances_s *distances, hwloc_obj_t obj1, hwloc_obj_t obj2, hwloc_uint64_t *value1to2, hwloc_uint64_t *value2to1)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_distances_obj_index()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static int hwloc_distances_obj_index (struct hwloc_distances_sdistances,
      hwloc_obj_t obj 
      )
      +
      +inlinestatic
      +
      + +

      Find the index of an object in a distances structure.

      +
      Returns
      -1 if object obj is not involved in structure distances.
      + +
      +
      + +

      ◆ hwloc_distances_obj_pair_values()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_distances_obj_pair_values (struct hwloc_distances_sdistances,
      hwloc_obj_t obj1,
      hwloc_obj_t obj2,
      hwloc_uint64_t * value1to2,
      hwloc_uint64_t * value2to1 
      )
      +
      +inlinestatic
      +
      + +

      Find the values between two objects in a distance matrices.

      +

      The distance from obj1 to obj2 is stored in the value pointed by value1to2 and reciprocally.

      +
      Returns
      -1 if object obj1 or obj2 is not involved in structure distances.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00222.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00222.html new file mode 100644 index 0000000000..c29a606d80 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00222.html @@ -0,0 +1,288 @@ + + + + + + + +Hardware Locality (hwloc): Add distances between objects + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Add distances between objects
      +
      +
      + + + + +

      +Typedefs

      typedef void * hwloc_distances_add_handle_t
       
      + + + +

      +Enumerations

      enum  hwloc_distances_add_flag_e { HWLOC_DISTANCES_ADD_FLAG_GROUP +, HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE + }
       
      + + + + + + + +

      +Functions

      hwloc_distances_add_handle_t hwloc_distances_add_create (hwloc_topology_t topology, const char *name, unsigned long kind, unsigned long flags)
       
      int hwloc_distances_add_values (hwloc_topology_t topology, hwloc_distances_add_handle_t handle, unsigned nbobjs, hwloc_obj_t *objs, hwloc_uint64_t *values, unsigned long flags)
       
      int hwloc_distances_add_commit (hwloc_topology_t topology, hwloc_distances_add_handle_t handle, unsigned long flags)
       
      +

      Detailed Description

      +

      The usual way to add distances is:

      +
      int err = -1;
      +
      handle = hwloc_distances_add_create(topology, "name", kind, 0);
      +
      if (handle) {
      +
      err = hwloc_distances_add_values(topology, handle, nbobjs, objs, values, 0);
      +
      if (!err)
      +
      err = hwloc_distances_add_commit(topology, handle, flags);
      +
      }
      +
      int hwloc_distances_add_commit(hwloc_topology_t topology, hwloc_distances_add_handle_t handle, unsigned long flags)
      Commit a new distances structure.
      +
      void * hwloc_distances_add_handle_t
      Handle to a new distances structure during its addition to the topology.
      Definition: distances.h:330
      +
      hwloc_distances_add_handle_t hwloc_distances_add_create(hwloc_topology_t topology, const char *name, unsigned long kind, unsigned long flags)
      Create a new empty distances structure.
      +
      int hwloc_distances_add_values(hwloc_topology_t topology, hwloc_distances_add_handle_t handle, unsigned nbobjs, hwloc_obj_t *objs, hwloc_uint64_t *values, unsigned long flags)
      Specify the objects and values in a new empty distances structure.
      +

      If err is 0 at the end, then addition was successful.

      +

      Typedef Documentation

      + +

      ◆ hwloc_distances_add_handle_t

      + +
      +
      + + + + +
      typedef void* hwloc_distances_add_handle_t
      +
      + +

      Handle to a new distances structure during its addition to the topology.

      + +
      +
      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_distances_add_flag_e

      + +
      +
      + + + + +
      enum hwloc_distances_add_flag_e
      +
      + +

      Flags for adding a new distances to a topology.

      + + + +
      Enumerator
      HWLOC_DISTANCES_ADD_FLAG_GROUP 

      Try to group objects based on the newly provided distance information. This is ignored for distances between objects of different types.

      +
      HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE 

      If grouping, consider the distance values as inaccurate and relax the comparisons during the grouping algorithms. The actual accuracy may be modified through the HWLOC_GROUPING_ACCURACY environment variable (see Environment Variables).

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_distances_add_commit()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_add_commit (hwloc_topology_t topology,
      hwloc_distances_add_handle_t handle,
      unsigned long flags 
      )
      +
      + +

      Commit a new distances structure.

      +

      This function finalizes the distances structure and inserts in it the topology.

      +

      Parameter handle was previously returned by hwloc_distances_add_create(). Then objects and values were specified with hwloc_distances_add_values().

      +

      flags configures the behavior of the function using an optional OR'ed set of hwloc_distances_add_flag_e. It may be used to request the grouping of existing objects based on distances.

      +

      On error, the temporary distances structure and its content are destroyed.

      +
      Returns
      0 on success.
      +
      +-1 on error.
      + +
      +
      + +

      ◆ hwloc_distances_add_create()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      hwloc_distances_add_handle_t hwloc_distances_add_create (hwloc_topology_t topology,
      const char * name,
      unsigned long kind,
      unsigned long flags 
      )
      +
      + +

      Create a new empty distances structure.

      +

      Create an empty distances structure to be filled with hwloc_distances_add_values() and then committed with hwloc_distances_add_commit().

      +

      Parameter name is optional, it may be NULL. Otherwise, it will be copied internally and may later be freed by the caller.

      +

      kind specifies the kind of distance as a OR'ed set of hwloc_distances_kind_e. Kind HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES will be automatically set according to objects having different types in hwloc_distances_add_values().

      +

      flags must be 0 for now.

      +
      Returns
      A hwloc_distances_add_handle_t that should then be passed to hwloc_distances_add_values() and hwloc_distances_add_commit().
      +
      +NULL on error.
      + +
      +
      + +

      ◆ hwloc_distances_add_values()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_add_values (hwloc_topology_t topology,
      hwloc_distances_add_handle_t handle,
      unsigned nbobjs,
      hwloc_obj_tobjs,
      hwloc_uint64_t * values,
      unsigned long flags 
      )
      +
      + +

      Specify the objects and values in a new empty distances structure.

      +

      Specify the objects and values for a new distances structure that was returned as a handle by hwloc_distances_add_create(). The structure must then be committed with hwloc_distances_add_commit().

      +

      The number of objects is nbobjs and the array of objects is objs. Distance values are stored as a one-dimension array in values. The distance from object i to object j is in slot i*nbobjs+j.

      +

      nbobjs must be at least 2.

      +

      Arrays objs and values will be copied internally, they may later be freed by the caller.

      +

      On error, the temporary distances structure and its content are destroyed.

      +

      flags must be 0 for now.

      +
      Returns
      0 on success.
      +
      +-1 on error.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00223.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00223.html new file mode 100644 index 0000000000..2ebfc3b036 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00223.html @@ -0,0 +1,191 @@ + + + + + + + +Hardware Locality (hwloc): Remove distances between objects + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Remove distances between objects
      +
      +
      + + + + + + + + + + +

      +Functions

      int hwloc_distances_remove (hwloc_topology_t topology)
       
      int hwloc_distances_remove_by_depth (hwloc_topology_t topology, int depth)
       
      static int hwloc_distances_remove_by_type (hwloc_topology_t topology, hwloc_obj_type_t type)
       
      int hwloc_distances_release_remove (hwloc_topology_t topology, struct hwloc_distances_s *distances)
       
      +

      Detailed Description

      +

      Function Documentation

      + +

      ◆ hwloc_distances_release_remove()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_release_remove (hwloc_topology_t topology,
      struct hwloc_distances_sdistances 
      )
      +
      + +

      Release and remove the given distance matrice from the topology.

      +

      This function includes a call to hwloc_distances_release().

      + +
      +
      + +

      ◆ hwloc_distances_remove()

      + +
      +
      + + + + + + + + +
      int hwloc_distances_remove (hwloc_topology_t topology)
      +
      + +

      Remove all distance matrices from a topology.

      +

      Remove all distance matrices, either provided by the user or gathered through the OS.

      +

      If these distances were used to group objects, these additional Group objects are not removed from the topology.

      + +
      +
      + +

      ◆ hwloc_distances_remove_by_depth()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_distances_remove_by_depth (hwloc_topology_t topology,
      int depth 
      )
      +
      + +

      Remove distance matrices for objects at a specific depth in the topology.

      +

      Identical to hwloc_distances_remove() but only applies to one level of the topology.

      + +
      +
      + +

      ◆ hwloc_distances_remove_by_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static int hwloc_distances_remove_by_type (hwloc_topology_t topology,
      hwloc_obj_type_t type 
      )
      +
      +inlinestatic
      +
      + +

      Remove distance matrices for objects of a specific type in the topology.

      +

      Identical to hwloc_distances_remove() but only applies to one level of the topology.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00224.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00224.html new file mode 100644 index 0000000000..d1635f79c3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00224.html @@ -0,0 +1,472 @@ + + + + + + + +Hardware Locality (hwloc): Comparing memory node attributes for finding where to allocate on + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Comparing memory node attributes for finding where to allocate on
      +
      +
      + + + + +

      +Data Structures

      struct  hwloc_location
       
      + + + +

      +Typedefs

      typedef unsigned hwloc_memattr_id_t
       
      + + + + + + + +

      +Enumerations

      enum  hwloc_memattr_id_e { HWLOC_MEMATTR_ID_CAPACITY = 0 +, HWLOC_MEMATTR_ID_LOCALITY = 1 +, HWLOC_MEMATTR_ID_BANDWIDTH = 2 +, HWLOC_MEMATTR_ID_LATENCY = 3 + }
       
      enum  hwloc_location_type_e { HWLOC_LOCATION_TYPE_CPUSET +, HWLOC_LOCATION_TYPE_OBJECT + }
       
      enum  hwloc_local_numanode_flag_e { HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY +, HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY +, HWLOC_LOCAL_NUMANODE_FLAG_ALL + }
       
      + + + + + + + + + + + +

      +Functions

      int hwloc_memattr_get_by_name (hwloc_topology_t topology, const char *name, hwloc_memattr_id_t *id)
       
      int hwloc_get_local_numanode_objs (hwloc_topology_t topology, struct hwloc_location *location, unsigned *nr, hwloc_obj_t *nodes, unsigned long flags)
       
      int hwloc_memattr_get_value (hwloc_topology_t topology, hwloc_memattr_id_t attribute, hwloc_obj_t target_node, struct hwloc_location *initiator, unsigned long flags, hwloc_uint64_t *value)
       
      int hwloc_memattr_get_best_target (hwloc_topology_t topology, hwloc_memattr_id_t attribute, struct hwloc_location *initiator, unsigned long flags, hwloc_obj_t *best_target, hwloc_uint64_t *value)
       
      int hwloc_memattr_get_best_initiator (hwloc_topology_t topology, hwloc_memattr_id_t attribute, hwloc_obj_t target, unsigned long flags, struct hwloc_location *best_initiator, hwloc_uint64_t *value)
       
      +

      Detailed Description

      +

      Platforms with heterogeneous memory require ways to decide whether a buffer should be allocated on "fast" memory (such as HBM), "normal" memory (DDR) or even "slow" but large-capacity memory (non-volatile memory). These memory nodes are called "Targets" while the CPU accessing them is called the "Initiator". Access performance depends on their locality (NUMA platforms) as well as the intrinsic performance of the targets (heterogeneous platforms).

      +

      The following attributes describe the performance of memory accesses from an Initiator to a memory Target, for instance their latency or bandwidth. Initiators performing these memory accesses are usually some PUs or Cores (described as a CPU set). Hence a Core may choose where to allocate a memory buffer by comparing the attributes of different target memory nodes nearby.

      +

      There are also some attributes that are system-wide. Their value does not depend on a specific initiator performing an access. The memory node Capacity is an example of such attribute without initiator.

      +

      One way to use this API is to start with a cpuset describing the Cores where a program is bound. The best target NUMA node for allocating memory in this program on these Cores may be obtained by passing this cpuset as an initiator to hwloc_memattr_get_best_target() with the relevant memory attribute. For instance, if the code is latency limited, use the Latency attribute.

      +

      A more flexible approach consists in getting the list of local NUMA nodes by passing this cpuset to hwloc_get_local_numanode_objs(). Attribute values for these nodes, if any, may then be obtained with hwloc_memattr_get_value() and manually compared with the desired criteria.

      +
      Note
      The API also supports specific objects as initiator, but it is currently not used internally by hwloc. Users may for instance use it to provide custom performance values for host memory accesses performed by GPUs.
      +
      +The interface actually also accepts targets that are not NUMA nodes.
      +

      Typedef Documentation

      + +

      ◆ hwloc_memattr_id_t

      + +
      +
      + + + + +
      typedef unsigned hwloc_memattr_id_t
      +
      + +

      A memory attribute identifier. May be either one of hwloc_memattr_id_e or a new id returned by hwloc_memattr_register().

      + +
      +
      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_local_numanode_flag_e

      + +
      +
      + + + + +
      enum hwloc_local_numanode_flag_e
      +
      + +

      Flags for selecting target NUMA nodes.

      + + + + +
      Enumerator
      HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY 

      Select NUMA nodes whose locality is larger than the given cpuset. For instance, if a single PU (or its cpuset) is given in initiator, select all nodes close to the package that contains this PU.

      +
      HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY 

      Select NUMA nodes whose locality is smaller than the given cpuset. For instance, if a package (or its cpuset) is given in initiator, also select nodes that are attached to only a half of that package.

      +
      HWLOC_LOCAL_NUMANODE_FLAG_ALL 

      Select all NUMA nodes in the topology. The initiator initiator is ignored.

      +
      + +
      +
      + +

      ◆ hwloc_location_type_e

      + +
      +
      + + + + +
      enum hwloc_location_type_e
      +
      + +

      Type of location.

      + + + +
      Enumerator
      HWLOC_LOCATION_TYPE_CPUSET 

      Location is given as a cpuset, in the location cpuset union field.

      +
      HWLOC_LOCATION_TYPE_OBJECT 

      Location is given as an object, in the location object union field.

      +
      + +
      +
      + +

      ◆ hwloc_memattr_id_e

      + +
      +
      + + + + +
      enum hwloc_memattr_id_e
      +
      + +

      Memory node attributes.

      + + + + + +
      Enumerator
      HWLOC_MEMATTR_ID_CAPACITY 

      "Capacity". The capacity is returned in bytes (local_memory attribute in objects).

      +

      Best capacity nodes are nodes with higher capacity.

      +

      No initiator is involved when looking at this attribute. The corresponding attribute flags are HWLOC_MEMATTR_FLAG_HIGHER_FIRST.

      +
      HWLOC_MEMATTR_ID_LOCALITY 

      "Locality". The locality is returned as the number of PUs in that locality (e.g. the weight of its cpuset).

      +

      Best locality nodes are nodes with smaller locality (nodes that are local to very few PUs). Poor locality nodes are nodes with larger locality (nodes that are local to the entire machine).

      +

      No initiator is involved when looking at this attribute. The corresponding attribute flags are HWLOC_MEMATTR_FLAG_HIGHER_FIRST.

      +
      HWLOC_MEMATTR_ID_BANDWIDTH 

      "Bandwidth". The bandwidth is returned in MiB/s, as seen from the given initiator location. Best bandwidth nodes are nodes with higher bandwidth. The corresponding attribute flags are HWLOC_MEMATTR_FLAG_HIGHER_FIRST and HWLOC_MEMATTR_FLAG_NEED_INITIATOR.

      +
      HWLOC_MEMATTR_ID_LATENCY 

      "Latency". The latency is returned as nanoseconds, as seen from the given initiator location. Best latency nodes are nodes with smaller latency. The corresponding attribute flags are HWLOC_MEMATTR_FLAG_LOWER_FIRST and HWLOC_MEMATTR_FLAG_NEED_INITIATOR.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_get_local_numanode_objs()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_get_local_numanode_objs (hwloc_topology_t topology,
      struct hwloc_locationlocation,
      unsigned * nr,
      hwloc_obj_tnodes,
      unsigned long flags 
      )
      +
      + +

      Return an array of local NUMA nodes.

      +

      By default only select the NUMA nodes whose locality is exactly the given location. More nodes may be selected if additional flags are given as a OR'ed set of hwloc_local_numanode_flag_e.

      +

      If location is given as an explicit object, its CPU set is used to find NUMA nodes with the corresponding locality. If the object does not have a CPU set (e.g. I/O object), the CPU parent (where the I/O object is attached) is used.

      +

      On input, nr points to the number of nodes that may be stored in the nodes array. On output, nr will be changed to the number of stored nodes, or the number of nodes that would have been stored if there were enough room.

      +
      Note
      Some of these NUMA nodes may not have any memory attribute values and hence not be reported as actual targets in other functions.
      +
      +The number of NUMA nodes in the topology (obtained by hwloc_bitmap_weight() on the root object nodeset) may be used to allocate the nodes array.
      +
      +When an object CPU set is given as locality, for instance a Package, and when flags contain both HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY and HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY, the returned array corresponds to the nodeset of that object.
      + +
      +
      + +

      ◆ hwloc_memattr_get_best_initiator()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_get_best_initiator (hwloc_topology_t topology,
      hwloc_memattr_id_t attribute,
      hwloc_obj_t target,
      unsigned long flags,
      struct hwloc_locationbest_initiator,
      hwloc_uint64_t * value 
      )
      +
      + +

      Return the best initiator for the given attribute and target NUMA node.

      +

      If the attribute does not relate to a specific initiator (it does not have the flag HWLOC_MEMATTR_FLAG_NEED_INITIATOR), -1 is returned and errno is set to EINVAL.

      +

      If value is non NULL, the corresponding value is returned there.

      +

      If multiple initiators have the same attribute values, only one is returned (and there is no way to clarify how that one is chosen). Applications that want to detect initiators with identical/similar values, or that want to look at values for multiple attributes, should rather get all values using hwloc_memattr_get_value() and manually select the initiator they consider the best.

      +

      The returned initiator should not be modified or freed, it belongs to the topology.

      +

      flags must be 0 for now.

      +

      If there are no matching initiators, -1 is returned with errno set to ENOENT;

      + +
      +
      + +

      ◆ hwloc_memattr_get_best_target()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_get_best_target (hwloc_topology_t topology,
      hwloc_memattr_id_t attribute,
      struct hwloc_locationinitiator,
      unsigned long flags,
      hwloc_obj_tbest_target,
      hwloc_uint64_t * value 
      )
      +
      + +

      Return the best target NUMA node for the given attribute and initiator.

      +

      If the attribute does not relate to a specific initiator (it does not have the flag HWLOC_MEMATTR_FLAG_NEED_INITIATOR), location initiator is ignored and may be NULL.

      +

      If value is non NULL, the corresponding value is returned there.

      +

      If multiple targets have the same attribute values, only one is returned (and there is no way to clarify how that one is chosen). Applications that want to detect targets with identical/similar values, or that want to look at values for multiple attributes, should rather get all values using hwloc_memattr_get_value() and manually select the target they consider the best.

      +

      flags must be 0 for now.

      +

      If there are no matching targets, -1 is returned with errno set to ENOENT;

      +
      Note
      The initiator initiator should be of type HWLOC_LOCATION_TYPE_CPUSET when refering to accesses performed by CPU cores. HWLOC_LOCATION_TYPE_OBJECT is currently unused internally by hwloc, but users may for instance use it to provide custom information about host memory accesses performed by GPUs.
      + +
      +
      + +

      ◆ hwloc_memattr_get_by_name()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_get_by_name (hwloc_topology_t topology,
      const char * name,
      hwloc_memattr_id_tid 
      )
      +
      + +

      Return the identifier of the memory attribute with the given name.

      + +
      +
      + +

      ◆ hwloc_memattr_get_value()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_get_value (hwloc_topology_t topology,
      hwloc_memattr_id_t attribute,
      hwloc_obj_t target_node,
      struct hwloc_locationinitiator,
      unsigned long flags,
      hwloc_uint64_t * value 
      )
      +
      + +

      Return an attribute value for a specific target NUMA node.

      +

      If the attribute does not relate to a specific initiator (it does not have the flag HWLOC_MEMATTR_FLAG_NEED_INITIATOR), location initiator is ignored and may be NULL.

      +

      flags must be 0 for now.

      +
      Note
      The initiator initiator should be of type HWLOC_LOCATION_TYPE_CPUSET when refering to accesses performed by CPU cores. HWLOC_LOCATION_TYPE_OBJECT is currently unused internally by hwloc, but users may for instance use it to provide custom information about host memory accesses performed by GPUs.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00225.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00225.html new file mode 100644 index 0000000000..878d573e83 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00225.html @@ -0,0 +1,414 @@ + + + + + + + +Hardware Locality (hwloc): Managing memory attributes + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Managing memory attributes
      +
      +
      + + + + +

      +Enumerations

      enum  hwloc_memattr_flag_e { HWLOC_MEMATTR_FLAG_HIGHER_FIRST = (1UL<<0) +, HWLOC_MEMATTR_FLAG_LOWER_FIRST = (1UL<<1) +, HWLOC_MEMATTR_FLAG_NEED_INITIATOR = (1UL<<2) + }
       
      + + + + + + + + + + + + + +

      +Functions

      int hwloc_memattr_get_name (hwloc_topology_t topology, hwloc_memattr_id_t attribute, const char **name)
       
      int hwloc_memattr_get_flags (hwloc_topology_t topology, hwloc_memattr_id_t attribute, unsigned long *flags)
       
      int hwloc_memattr_register (hwloc_topology_t topology, const char *name, unsigned long flags, hwloc_memattr_id_t *id)
       
      int hwloc_memattr_set_value (hwloc_topology_t topology, hwloc_memattr_id_t attribute, hwloc_obj_t target_node, struct hwloc_location *initiator, unsigned long flags, hwloc_uint64_t value)
       
      int hwloc_memattr_get_targets (hwloc_topology_t topology, hwloc_memattr_id_t attribute, struct hwloc_location *initiator, unsigned long flags, unsigned *nr, hwloc_obj_t *targets, hwloc_uint64_t *values)
       
      int hwloc_memattr_get_initiators (hwloc_topology_t topology, hwloc_memattr_id_t attribute, hwloc_obj_t target_node, unsigned long flags, unsigned *nr, struct hwloc_location *initiators, hwloc_uint64_t *values)
       
      +

      Detailed Description

      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_memattr_flag_e

      + +
      +
      + + + + +
      enum hwloc_memattr_flag_e
      +
      + +

      Memory attribute flags. Given to hwloc_memattr_register() and returned by hwloc_memattr_get_flags().

      + + + + +
      Enumerator
      HWLOC_MEMATTR_FLAG_HIGHER_FIRST 

      The best nodes for this memory attribute are those with the higher values. For instance Bandwidth.

      +
      HWLOC_MEMATTR_FLAG_LOWER_FIRST 

      The best nodes for this memory attribute are those with the lower values. For instance Latency.

      +
      HWLOC_MEMATTR_FLAG_NEED_INITIATOR 

      The value returned for this memory attribute depends on the given initiator. For instance Bandwidth and Latency, but not Capacity.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_memattr_get_flags()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_get_flags (hwloc_topology_t topology,
      hwloc_memattr_id_t attribute,
      unsigned long * flags 
      )
      +
      + +

      Return the flags of the given attribute.

      +

      Flags are a OR'ed set of hwloc_memattr_flag_e.

      + +
      +
      + +

      ◆ hwloc_memattr_get_initiators()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_get_initiators (hwloc_topology_t topology,
      hwloc_memattr_id_t attribute,
      hwloc_obj_t target_node,
      unsigned long flags,
      unsigned * nr,
      struct hwloc_locationinitiators,
      hwloc_uint64_t * values 
      )
      +
      + +

      Return the initiators that have values for a given attribute for a specific target NUMA node.

      +

      Return initiators for the given attribute and target node in the initiators array. If values is not NULL, the corresponding attribute values are stored in the array it points to.

      +

      On input, nr points to the number of initiators that may be stored in the array initiators (and values). On output, nr points to the number of initiators (and values) that were actually found, even if some of them couldn't be stored in the array. Initiators that couldn't be stored are ignored, but the function still returns success (0). The caller may find out by comparing the value pointed by nr before and after the function call.

      +

      The returned initiators should not be modified or freed, they belong to the topology.

      +

      flags must be 0 for now.

      +

      If the attribute does not relate to a specific initiator (it does not have the flag HWLOC_MEMATTR_FLAG_NEED_INITIATOR), no initiator is returned.

      +
      Note
      This function is meant for tools and debugging (listing internal information) rather than for application queries. Applications should rather select useful NUMA nodes with hwloc_get_local_numanode_objs() and then look at their attribute values for some relevant initiators.
      + +
      +
      + +

      ◆ hwloc_memattr_get_name()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_get_name (hwloc_topology_t topology,
      hwloc_memattr_id_t attribute,
      const char ** name 
      )
      +
      + +

      Return the name of a memory attribute.

      + +
      +
      + +

      ◆ hwloc_memattr_get_targets()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_get_targets (hwloc_topology_t topology,
      hwloc_memattr_id_t attribute,
      struct hwloc_locationinitiator,
      unsigned long flags,
      unsigned * nr,
      hwloc_obj_ttargets,
      hwloc_uint64_t * values 
      )
      +
      + +

      Return the target NUMA nodes that have some values for a given attribute.

      +

      Return targets for the given attribute in the targets array (for the given initiator if any). If values is not NULL, the corresponding attribute values are stored in the array it points to.

      +

      On input, nr points to the number of targets that may be stored in the array targets (and values). On output, nr points to the number of targets (and values) that were actually found, even if some of them couldn't be stored in the array. Targets that couldn't be stored are ignored, but the function still returns success (0). The caller may find out by comparing the value pointed by nr before and after the function call.

      +

      The returned targets should not be modified or freed, they belong to the topology.

      +

      Argument initiator is ignored if the attribute does not relate to a specific initiator (it does not have the flag HWLOC_MEMATTR_FLAG_NEED_INITIATOR). Otherwise initiator may be non NULL to report only targets that have a value for that initiator.

      +

      flags must be 0 for now.

      +
      Note
      This function is meant for tools and debugging (listing internal information) rather than for application queries. Applications should rather select useful NUMA nodes with hwloc_get_local_numanode_objs() and then look at their attribute values.
      +
      +The initiator initiator should be of type HWLOC_LOCATION_TYPE_CPUSET when referring to accesses performed by CPU cores. HWLOC_LOCATION_TYPE_OBJECT is currently unused internally by hwloc, but users may for instance use it to provide custom information about host memory accesses performed by GPUs.
      + +
      +
      + +

      ◆ hwloc_memattr_register()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_register (hwloc_topology_t topology,
      const char * name,
      unsigned long flags,
      hwloc_memattr_id_tid 
      )
      +
      + +

      Register a new memory attribute.

      +

      Add a specific memory attribute that is not defined in hwloc_memattr_id_e. Flags are a OR'ed set of hwloc_memattr_flag_e. It must contain at least one of HWLOC_MEMATTR_FLAG_HIGHER_FIRST or HWLOC_MEMATTR_FLAG_LOWER_FIRST.

      + +
      +
      + +

      ◆ hwloc_memattr_set_value()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_memattr_set_value (hwloc_topology_t topology,
      hwloc_memattr_id_t attribute,
      hwloc_obj_t target_node,
      struct hwloc_locationinitiator,
      unsigned long flags,
      hwloc_uint64_t value 
      )
      +
      + +

      Set an attribute value for a specific target NUMA node.

      +

      If the attribute does not relate to a specific initiator (it does not have the flag HWLOC_MEMATTR_FLAG_NEED_INITIATOR), location initiator is ignored and may be NULL.

      +

      The initiator will be copied into the topology, the caller should free anything allocated to store the initiator, for instance the cpuset.

      +

      flags must be 0 for now.

      +
      Note
      The initiator initiator should be of type HWLOC_LOCATION_TYPE_CPUSET when referring to accesses performed by CPU cores. HWLOC_LOCATION_TYPE_OBJECT is currently unused internally by hwloc, but users may for instance use it to provide custom information about host memory accesses performed by GPUs.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00226.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00226.html new file mode 100644 index 0000000000..be902b5deb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00226.html @@ -0,0 +1,293 @@ + + + + + + + +Hardware Locality (hwloc): Kinds of CPU cores + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Kinds of CPU cores
      +
      +
      + + + + + + + + + + +

      +Functions

      int hwloc_cpukinds_get_nr (hwloc_topology_t topology, unsigned long flags)
       
      int hwloc_cpukinds_get_by_cpuset (hwloc_topology_t topology, hwloc_const_bitmap_t cpuset, unsigned long flags)
       
      int hwloc_cpukinds_get_info (hwloc_topology_t topology, unsigned kind_index, hwloc_bitmap_t cpuset, int *efficiency, unsigned *nr_infos, struct hwloc_info_s **infos, unsigned long flags)
       
      int hwloc_cpukinds_register (hwloc_topology_t topology, hwloc_bitmap_t cpuset, int forced_efficiency, unsigned nr_infos, struct hwloc_info_s *infos, unsigned long flags)
       
      +

      Detailed Description

      +

      Platforms with heterogeneous CPUs may have some cores with different features or frequencies. This API exposes identical PUs in sets called CPU kinds. Each PU of the topology may only be in a single kind.

      +

      The number of kinds may be obtained with hwloc_cpukinds_get_nr(). If the platform is homogeneous, there may be a single kind with all PUs. If the platform or operating system does not expose any information about CPU cores, there may be no kind at all.

      +

      The index of the kind that describes a given CPU set (if any, and not partially) may be obtained with hwloc_cpukinds_get_by_cpuset().

      +

      From the index of a kind, it is possible to retrieve information with hwloc_cpukinds_get_info(): an abstracted efficiency value, and an array of info attributes (for instance the "CoreType" and "FrequencyMaxMHz", see CPU Kinds).

      +

      A higher efficiency value means greater intrinsic performance (and possibly less performance/power efficiency). Kinds with lower efficiency values are ranked first: Passing 0 as kind_index to hwloc_cpukinds_get_info() will return information about the CPU kind with lower performance but higher energy-efficiency. Higher kind_index values would rather return information about power-hungry high-performance cores.

      +

      When available, efficiency values are gathered from the operating system. If so, cpukind_efficiency is set in the struct hwloc_topology_discovery_support array. This is currently available on Windows 10, Mac OS X (Darwin), and on some Linux platforms where core "capacity" is exposed in sysfs.

      +

      If the operating system does not expose core efficiencies natively, hwloc tries to compute efficiencies by comparing CPU kinds using frequencies (on ARM), or core types and frequencies (on other architectures). The environment variable HWLOC_CPUKINDS_RANKING may be used to change this heuristics, see Environment Variables.

      +

      If hwloc fails to rank any kind, for instance because the operating system does not expose efficiencies and core frequencies, all kinds will have an unknown efficiency (-1), and they are not indexed/ordered in any specific way.

      +

      Function Documentation

      + +

      ◆ hwloc_cpukinds_get_by_cpuset()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_cpukinds_get_by_cpuset (hwloc_topology_t topology,
      hwloc_const_bitmap_t cpuset,
      unsigned long flags 
      )
      +
      + +

      Get the index of the CPU kind that contains CPUs listed in cpuset.

      +

      flags must be 0 for now.

      +
      Returns
      The index of the CPU kind (positive integer or 0) on success.
      +
      +-1 with errno set to EXDEV if cpuset is only partially included in the some kind.
      +
      +-1 with errno set to ENOENT if cpuset is not included in any kind, even partially.
      +
      +-1 with errno set to EINVAL if parameters are invalid.
      + +
      +
      + +

      ◆ hwloc_cpukinds_get_info()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_cpukinds_get_info (hwloc_topology_t topology,
      unsigned kind_index,
      hwloc_bitmap_t cpuset,
      int * efficiency,
      unsigned * nr_infos,
      struct hwloc_info_s ** infos,
      unsigned long flags 
      )
      +
      + +

      Get the CPU set and infos about a CPU kind in the topology.

      +

      kind_index identifies one kind of CPU between 0 and the number of kinds returned by hwloc_cpukinds_get_nr() minus 1.

      +

      If not NULL, the bitmap cpuset will be filled with the set of PUs of this kind.

      +

      The integer pointed by efficiency, if not NULL will, be filled with the ranking of this kind of CPU in term of efficiency (see above). It ranges from 0 to the number of kinds (as reported by hwloc_cpukinds_get_nr()) minus 1.

      +

      Kinds with lower efficiency are reported first.

      +

      If there is a single kind in the topology, its efficiency 0. If the efficiency of some kinds of cores is unknown, the efficiency of all kinds is set to -1, and kinds are reported in no specific order.

      +

      The array of info attributes (for instance the "CoreType", "FrequencyMaxMHz" or "FrequencyBaseMHz", see CPU Kinds) and its length are returned in infos or nr_infos. The array belongs to the topology, it should not be freed or modified.

      +

      If nr_infos or infos is NULL, no info is returned.

      +

      flags must be 0 for now.

      +
      Returns
      0 on success.
      +
      +-1 with errno set to ENOENT if kind_index does not match any CPU kind.
      +
      +-1 with errno set to EINVAL if parameters are invalid.
      + +
      +
      + +

      ◆ hwloc_cpukinds_get_nr()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_cpukinds_get_nr (hwloc_topology_t topology,
      unsigned long flags 
      )
      +
      + +

      Get the number of different kinds of CPU cores in the topology.

      +

      flags must be 0 for now.

      +
      Returns
      The number of CPU kinds (positive integer) on success.
      +
      +0 if no information about kinds was found.
      +
      +-1 with errno set to EINVAL if flags is invalid.
      + +
      +
      + +

      ◆ hwloc_cpukinds_register()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_cpukinds_register (hwloc_topology_t topology,
      hwloc_bitmap_t cpuset,
      int forced_efficiency,
      unsigned nr_infos,
      struct hwloc_info_sinfos,
      unsigned long flags 
      )
      +
      + +

      Register a kind of CPU in the topology.

      +

      Mark the PUs listed in cpuset as being of the same kind with respect to the given attributes.

      +

      forced_efficiency should be -1 if unknown. Otherwise it is an abstracted efficiency value to enforce the ranking of all kinds if all of them have valid (and different) efficiencies.

      +

      The array infos of size nr_infos may be used to provide info names and values describing this kind of PUs.

      +

      flags must be 0 for now.

      +

      Parameters cpuset and infos will be duplicated internally, the caller is responsible for freeing them.

      +

      If cpuset overlaps with some existing kinds, those might get modified or split. For instance if existing kind A contains PUs 0 and 1, and one registers another kind for PU 1 and 2, there will be 3 resulting kinds: existing kind A is restricted to only PU 0; new kind B contains only PU 1 and combines information from A and from the newly-registered kind; new kind C contains only PU 2 and only gets information from the newly-registered kind.

      +
      Note
      The efficiency forced_efficiency provided to this function may be different from the one reported later by hwloc_cpukinds_get_info() because hwloc will scale efficiency values down to between 0 and the number of kinds minus 1.
      +
      Returns
      0 on success.
      +
      +-1 with errno set to EINVAL if some parameters are invalid, for instance if cpuset is NULL or empty.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00227.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00227.html new file mode 100644 index 0000000000..adf48ea29a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00227.html @@ -0,0 +1,216 @@ + + + + + + + +Hardware Locality (hwloc): Linux-specific helpers + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Linux-specific helpers
      +
      +
      + + + + + + + + + + +

      +Functions

      int hwloc_linux_set_tid_cpubind (hwloc_topology_t topology, pid_t tid, hwloc_const_cpuset_t set)
       
      int hwloc_linux_get_tid_cpubind (hwloc_topology_t topology, pid_t tid, hwloc_cpuset_t set)
       
      int hwloc_linux_get_tid_last_cpu_location (hwloc_topology_t topology, pid_t tid, hwloc_bitmap_t set)
       
      int hwloc_linux_read_path_as_cpumask (const char *path, hwloc_bitmap_t set)
       
      +

      Detailed Description

      +

      This includes helpers for manipulating Linux kernel cpumap files, and hwloc equivalents of the Linux sched_setaffinity and sched_getaffinity system calls.

      +

      Function Documentation

      + +

      ◆ hwloc_linux_get_tid_cpubind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_linux_get_tid_cpubind (hwloc_topology_t topology,
      pid_t tid,
      hwloc_cpuset_t set 
      )
      +
      + +

      Get the current binding of thread tid.

      +

      The CPU-set set (previously allocated by the caller) is filled with the list of PUs which the thread was last bound to.

      +

      The behavior is exactly the same as the Linux sched_getaffinity system call, but uses a hwloc cpuset.

      +
      Note
      This is equivalent to calling hwloc_get_proc_cpubind() with HWLOC_CPUBIND_THREAD as flags.
      + +
      +
      + +

      ◆ hwloc_linux_get_tid_last_cpu_location()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_linux_get_tid_last_cpu_location (hwloc_topology_t topology,
      pid_t tid,
      hwloc_bitmap_t set 
      )
      +
      + +

      Get the last physical CPU where thread tid ran.

      +

      The CPU-set set (previously allocated by the caller) is filled with the PU which the thread last ran on.

      +
      Note
      This is equivalent to calling hwloc_get_proc_last_cpu_location() with HWLOC_CPUBIND_THREAD as flags.
      + +
      +
      + +

      ◆ hwloc_linux_read_path_as_cpumask()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_linux_read_path_as_cpumask (const char * path,
      hwloc_bitmap_t set 
      )
      +
      + +

      Convert a linux kernel cpumask file path into a hwloc bitmap set.

      +

      Might be used when reading CPU set from sysfs attributes such as topology and caches for processors, or local_cpus for devices.

      +
      Note
      This function ignores the HWLOC_FSROOT environment variable.
      + +
      +
      + +

      ◆ hwloc_linux_set_tid_cpubind()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_linux_set_tid_cpubind (hwloc_topology_t topology,
      pid_t tid,
      hwloc_const_cpuset_t set 
      )
      +
      + +

      Bind a thread tid on cpus given in cpuset set.

      +

      The behavior is exactly the same as the Linux sched_setaffinity system call, but uses a hwloc cpuset.

      +
      Note
      This is equivalent to calling hwloc_set_proc_cpubind() with HWLOC_CPUBIND_THREAD as flags.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00228.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00228.html new file mode 100644 index 0000000000..67da18e9c5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00228.html @@ -0,0 +1,280 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with Linux libnuma unsigned long masks + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with Linux libnuma unsigned long masks
      +
      +
      + + + + + + + + + + +

      +Functions

      static int hwloc_cpuset_to_linux_libnuma_ulongs (hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, unsigned long *mask, unsigned long *maxnode)
       
      static int hwloc_nodeset_to_linux_libnuma_ulongs (hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, unsigned long *mask, unsigned long *maxnode)
       
      static int hwloc_cpuset_from_linux_libnuma_ulongs (hwloc_topology_t topology, hwloc_cpuset_t cpuset, const unsigned long *mask, unsigned long maxnode)
       
      static int hwloc_nodeset_from_linux_libnuma_ulongs (hwloc_topology_t topology, hwloc_nodeset_t nodeset, const unsigned long *mask, unsigned long maxnode)
       
      +

      Detailed Description

      +

      This interface helps converting between Linux libnuma unsigned long masks and hwloc cpusets and nodesets.

      +
      Note
      Topology topology must match the current machine.
      +
      +The behavior of libnuma is undefined if the kernel is not NUMA-aware. (when CONFIG_NUMA is not set in the kernel configuration). This helper and libnuma may thus not be strictly compatible in this case, which may be detected by checking whether numa_available() returns -1.
      +

      Function Documentation

      + +

      ◆ hwloc_cpuset_from_linux_libnuma_ulongs()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cpuset_from_linux_libnuma_ulongs (hwloc_topology_t topology,
      hwloc_cpuset_t cpuset,
      const unsigned long * mask,
      unsigned long maxnode 
      )
      +
      +inlinestatic
      +
      + +

      Convert the array of unsigned long mask into hwloc CPU set.

      +

      mask is a array of unsigned long that will be read. maxnode contains the maximal node number that may be read in mask.

      +

      This function may be used after calling get_mempolicy or any other function that takes an array of unsigned long as output parameter (and possibly a maximal node number as input parameter).

      + +
      +
      + +

      ◆ hwloc_cpuset_to_linux_libnuma_ulongs()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cpuset_to_linux_libnuma_ulongs (hwloc_topology_t topology,
      hwloc_const_cpuset_t cpuset,
      unsigned long * mask,
      unsigned long * maxnode 
      )
      +
      +inlinestatic
      +
      + +

      Convert hwloc CPU set cpuset into the array of unsigned long mask.

      +

      mask is the array of unsigned long that will be filled. maxnode contains the maximal node number that may be stored in mask. maxnode will be set to the maximal node number that was found, plus one.

      +

      This function may be used before calling set_mempolicy, mbind, migrate_pages or any other function that takes an array of unsigned long and a maximal node number as input parameter.

      + +
      +
      + +

      ◆ hwloc_nodeset_from_linux_libnuma_ulongs()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_nodeset_from_linux_libnuma_ulongs (hwloc_topology_t topology,
      hwloc_nodeset_t nodeset,
      const unsigned long * mask,
      unsigned long maxnode 
      )
      +
      +inlinestatic
      +
      + +

      Convert the array of unsigned long mask into hwloc NUMA node set.

      +

      mask is a array of unsigned long that will be read. maxnode contains the maximal node number that may be read in mask.

      +

      This function may be used after calling get_mempolicy or any other function that takes an array of unsigned long as output parameter (and possibly a maximal node number as input parameter).

      + +
      +
      + +

      ◆ hwloc_nodeset_to_linux_libnuma_ulongs()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_nodeset_to_linux_libnuma_ulongs (hwloc_topology_t topology,
      hwloc_const_nodeset_t nodeset,
      unsigned long * mask,
      unsigned long * maxnode 
      )
      +
      +inlinestatic
      +
      + +

      Convert hwloc NUMA node set nodeset into the array of unsigned long mask.

      +

      mask is the array of unsigned long that will be filled. maxnode contains the maximal node number that may be stored in mask. maxnode will be set to the maximal node number that was found, plus one.

      +

      This function may be used before calling set_mempolicy, mbind, migrate_pages or any other function that takes an array of unsigned long and a maximal node number as input parameter.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00229.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00229.html new file mode 100644 index 0000000000..258bf0f002 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00229.html @@ -0,0 +1,244 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with Linux libnuma bitmask + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with Linux libnuma bitmask
      +
      +
      + + + + + + + + + + +

      +Functions

      static struct bitmask * hwloc_cpuset_to_linux_libnuma_bitmask (hwloc_topology_t topology, hwloc_const_cpuset_t cpuset)
       
      static struct bitmask * hwloc_nodeset_to_linux_libnuma_bitmask (hwloc_topology_t topology, hwloc_const_nodeset_t nodeset)
       
      static int hwloc_cpuset_from_linux_libnuma_bitmask (hwloc_topology_t topology, hwloc_cpuset_t cpuset, const struct bitmask *bitmask)
       
      static int hwloc_nodeset_from_linux_libnuma_bitmask (hwloc_topology_t topology, hwloc_nodeset_t nodeset, const struct bitmask *bitmask)
       
      +

      Detailed Description

      +

      This interface helps converting between Linux libnuma bitmasks and hwloc cpusets and nodesets.

      +
      Note
      Topology topology must match the current machine.
      +
      +The behavior of libnuma is undefined if the kernel is not NUMA-aware. (when CONFIG_NUMA is not set in the kernel configuration). This helper and libnuma may thus not be strictly compatible in this case, which may be detected by checking whether numa_available() returns -1.
      +

      Function Documentation

      + +

      ◆ hwloc_cpuset_from_linux_libnuma_bitmask()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cpuset_from_linux_libnuma_bitmask (hwloc_topology_t topology,
      hwloc_cpuset_t cpuset,
      const struct bitmask * bitmask 
      )
      +
      +inlinestatic
      +
      + +

      Convert libnuma bitmask bitmask into hwloc CPU set cpuset.

      +

      This function may be used after calling many numa_ functions that use a struct bitmask as an output parameter.

      + +
      +
      + +

      ◆ hwloc_cpuset_to_linux_libnuma_bitmask()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static struct bitmask * hwloc_cpuset_to_linux_libnuma_bitmask (hwloc_topology_t topology,
      hwloc_const_cpuset_t cpuset 
      )
      +
      +inlinestatic
      +
      + +

      Convert hwloc CPU set cpuset into the returned libnuma bitmask.

      +

      The returned bitmask should later be freed with numa_bitmask_free.

      +

      This function may be used before calling many numa_ functions that use a struct bitmask as an input parameter.

      +
      Returns
      newly allocated struct bitmask.
      + +
      +
      + +

      ◆ hwloc_nodeset_from_linux_libnuma_bitmask()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_nodeset_from_linux_libnuma_bitmask (hwloc_topology_t topology,
      hwloc_nodeset_t nodeset,
      const struct bitmask * bitmask 
      )
      +
      +inlinestatic
      +
      + +

      Convert libnuma bitmask bitmask into hwloc NUMA node set nodeset.

      +

      This function may be used after calling many numa_ functions that use a struct bitmask as an output parameter.

      + +
      +
      + +

      ◆ hwloc_nodeset_to_linux_libnuma_bitmask()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static struct bitmask * hwloc_nodeset_to_linux_libnuma_bitmask (hwloc_topology_t topology,
      hwloc_const_nodeset_t nodeset 
      )
      +
      +inlinestatic
      +
      + +

      Convert hwloc NUMA node set nodeset into the returned libnuma bitmask.

      +

      The returned bitmask should later be freed with numa_bitmask_free.

      +

      This function may be used before calling many numa_ functions that use a struct bitmask as an input parameter.

      +
      Returns
      newly allocated struct bitmask.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00230.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00230.html new file mode 100644 index 0000000000..879307c76a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00230.html @@ -0,0 +1,146 @@ + + + + + + + +Hardware Locality (hwloc): Windows-specific helpers + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Windows-specific helpers
      +
      +
      + + + + + + +

      +Functions

      int hwloc_windows_get_nr_processor_groups (hwloc_topology_t topology, unsigned long flags)
       
      int hwloc_windows_get_processor_group_cpuset (hwloc_topology_t topology, unsigned pg_index, hwloc_cpuset_t cpuset, unsigned long flags)
       
      +

      Detailed Description

      +

      These functions query Windows processor groups. These groups partition the operating system into virtual sets of up to 64 neighbor PUs. Threads and processes may only be bound inside a single group. Although Windows processor groups may be exposed in the hwloc hierarchy as hwloc Groups, they are also often merged into existing hwloc objects such as NUMA nodes or Packages. This API provides explicit information about Windows processor groups so that applications know whether binding to a large set of PUs may fail because it spans over multiple Windows processor groups.

      +

      Function Documentation

      + +

      ◆ hwloc_windows_get_nr_processor_groups()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_windows_get_nr_processor_groups (hwloc_topology_t topology,
      unsigned long flags 
      )
      +
      + +

      Get the number of Windows processor groups.

      +

      flags must be 0 for now.

      +
      Returns
      at least 1 on success.
      +
      +-1 on error, for instance if the topology does not match the current system (e.g. loaded from another machine through XML).
      + +
      +
      + +

      ◆ hwloc_windows_get_processor_group_cpuset()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_windows_get_processor_group_cpuset (hwloc_topology_t topology,
      unsigned pg_index,
      hwloc_cpuset_t cpuset,
      unsigned long flags 
      )
      +
      + +

      Get the CPU-set of a Windows processor group.

      +

      Get the set of PU included in the processor group specified by pg_index. pg_index must be between 0 and the value returned by hwloc_windows_get_nr_processor_groups() minus 1.

      +

      flags must be 0 for now.

      +
      Returns
      0 on success.
      +
      +-1 on error, for instance if pg_index is invalid, or if the topology does not match the current system (e.g. loaded from another machine through XML).
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00231.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00231.html new file mode 100644 index 0000000000..3f2ef6265b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00231.html @@ -0,0 +1,170 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with glibc sched affinity + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with glibc sched affinity
      +
      +
      + + + + + + +

      +Functions

      static int hwloc_cpuset_to_glibc_sched_affinity (hwloc_topology_t topology, hwloc_const_cpuset_t hwlocset, cpu_set_t *schedset, size_t schedsetsize)
       
      static int hwloc_cpuset_from_glibc_sched_affinity (hwloc_topology_t topology, hwloc_cpuset_t hwlocset, const cpu_set_t *schedset, size_t schedsetsize)
       
      +

      Detailed Description

      +

      This interface offers ways to convert between hwloc cpusets and glibc cpusets such as those manipulated by sched_getaffinity() or pthread_attr_setaffinity_np().

      +
      Note
      Topology topology must match the current machine.
      +

      Function Documentation

      + +

      ◆ hwloc_cpuset_from_glibc_sched_affinity()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cpuset_from_glibc_sched_affinity (hwloc_topology_t topology,
      hwloc_cpuset_t hwlocset,
      const cpu_set_t * schedset,
      size_t schedsetsize 
      )
      +
      +inlinestatic
      +
      + +

      Convert glibc sched affinity CPU set schedset into hwloc CPU set.

      +

      This function may be used before calling sched_setaffinity or any other function that takes a cpu_set_t as input parameter.

      +

      schedsetsize should be sizeof(cpu_set_t) unless schedset was dynamically allocated with CPU_ALLOC

      + +
      +
      + +

      ◆ hwloc_cpuset_to_glibc_sched_affinity()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cpuset_to_glibc_sched_affinity (hwloc_topology_t topology,
      hwloc_const_cpuset_t hwlocset,
      cpu_set_t * schedset,
      size_t schedsetsize 
      )
      +
      +inlinestatic
      +
      + +

      Convert hwloc CPU set toposet into glibc sched affinity CPU set schedset.

      +

      This function may be used before calling sched_setaffinity or any other function that takes a cpu_set_t as input parameter.

      +

      schedsetsize should be sizeof(cpu_set_t) unless schedset was dynamically allocated with CPU_ALLOC

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00232.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00232.html new file mode 100644 index 0000000000..51935d71a3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00232.html @@ -0,0 +1,270 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with OpenCL + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with OpenCL
      +
      +
      + + + + + + + + + + +

      +Functions

      static int hwloc_opencl_get_device_pci_busid (cl_device_id device, unsigned *domain, unsigned *bus, unsigned *dev, unsigned *func)
       
      static int hwloc_opencl_get_device_cpuset (hwloc_topology_t topology, cl_device_id device, hwloc_cpuset_t set)
       
      static hwloc_obj_t hwloc_opencl_get_device_osdev_by_index (hwloc_topology_t topology, unsigned platform_index, unsigned device_index)
       
      static hwloc_obj_t hwloc_opencl_get_device_osdev (hwloc_topology_t topology, cl_device_id device)
       
      +

      Detailed Description

      +

      This interface offers ways to retrieve topology information about OpenCL devices.

      +

      Only AMD and NVIDIA OpenCL implementations currently offer useful locality information about their devices.

      +

      Function Documentation

      + +

      ◆ hwloc_opencl_get_device_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_opencl_get_device_cpuset (hwloc_topology_t topology,
      cl_device_id device,
      hwloc_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the CPU set of processors that are physically close to OpenCL device device.

      +

      Store in set the CPU-set describing the locality of the OpenCL device device.

      +

      Topology topology and device device must match the local machine. I/O devices detection and the OpenCL component are not needed in the topology.

      +

      The function only returns the locality of the device. If more information about the device is needed, OS objects should be used instead, see hwloc_opencl_get_device_osdev() and hwloc_opencl_get_device_osdev_by_index().

      +

      This function is currently only implemented in a meaningful way for Linux with the AMD or NVIDIA OpenCL implementation; other systems will simply get a full cpuset.

      + +
      +
      + +

      ◆ hwloc_opencl_get_device_osdev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_opencl_get_device_osdev (hwloc_topology_t topology,
      cl_device_id device 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to OpenCL device deviceX.

      +
      Returns
      The hwloc OS device object corresponding to the given OpenCL device device.
      +
      +NULL if none could be found, for instance if required OpenCL attributes are not available.
      +

      This function currently only works on AMD and NVIDIA OpenCL devices that support relevant OpenCL extensions. hwloc_opencl_get_device_osdev_by_index() should be preferred whenever possible, i.e. when platform and device index are known.

      +

      Topology topology and device device must match the local machine. I/O devices detection and the OpenCL component must be enabled in the topology. If not, the locality of the object may still be found using hwloc_opencl_get_device_cpuset().

      +
      Note
      This function cannot work if PCI devices are filtered out.
      +
      +The corresponding hwloc PCI device may be found by looking at the result parent pointer (unless PCI devices are filtered out).
      + +
      +
      + +

      ◆ hwloc_opencl_get_device_osdev_by_index()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_opencl_get_device_osdev_by_index (hwloc_topology_t topology,
      unsigned platform_index,
      unsigned device_index 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the OpenCL device for the given indexes.

      +
      Returns
      The hwloc OS device object describing the OpenCL device whose platform index is platform_index, and whose device index within this platform if device_index.
      +
      +NULL if there is none.
      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection and the OpenCL component must be enabled in the topology.

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object (unless PCI devices are filtered out).
      + +
      +
      + +

      ◆ hwloc_opencl_get_device_pci_busid()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_opencl_get_device_pci_busid (cl_device_id device,
      unsigned * domain,
      unsigned * bus,
      unsigned * dev,
      unsigned * func 
      )
      +
      +inlinestatic
      +
      + +

      Return the domain, bus and device IDs of the OpenCL device device.

      +

      Device device must match the local machine.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00233.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00233.html new file mode 100644 index 0000000000..0e0cb35dbf --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00233.html @@ -0,0 +1,308 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with the CUDA Driver API + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with the CUDA Driver API
      +
      +
      + + + + + + + + + + + + +

      +Functions

      static int hwloc_cuda_get_device_pci_ids (hwloc_topology_t topology, CUdevice cudevice, int *domain, int *bus, int *dev)
       
      static int hwloc_cuda_get_device_cpuset (hwloc_topology_t topology, CUdevice cudevice, hwloc_cpuset_t set)
       
      static hwloc_obj_t hwloc_cuda_get_device_pcidev (hwloc_topology_t topology, CUdevice cudevice)
       
      static hwloc_obj_t hwloc_cuda_get_device_osdev (hwloc_topology_t topology, CUdevice cudevice)
       
      static hwloc_obj_t hwloc_cuda_get_device_osdev_by_index (hwloc_topology_t topology, unsigned idx)
       
      +

      Detailed Description

      +

      This interface offers ways to retrieve topology information about CUDA devices when using the CUDA Driver API.

      +

      Function Documentation

      + +

      ◆ hwloc_cuda_get_device_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cuda_get_device_cpuset (hwloc_topology_t topology,
      CUdevice cudevice,
      hwloc_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the CPU set of processors that are physically close to device cudevice.

      +

      Store in set the CPU-set describing the locality of the CUDA device cudevice.

      +

      Topology topology and device cudevice must match the local machine. I/O devices detection and the CUDA component are not needed in the topology.

      +

      The function only returns the locality of the device. If more information about the device is needed, OS objects should be used instead, see hwloc_cuda_get_device_osdev() and hwloc_cuda_get_device_osdev_by_index().

      +

      This function is currently only implemented in a meaningful way for Linux; other systems will simply get a full cpuset.

      + +
      +
      + +

      ◆ hwloc_cuda_get_device_osdev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_cuda_get_device_osdev (hwloc_topology_t topology,
      CUdevice cudevice 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to CUDA device cudevice.

      +
      Returns
      The hwloc OS device object that describes the given CUDA device cudevice.
      +
      +NULL if none could be found.
      +

      Topology topology and device cudevice must match the local machine. I/O devices detection and the CUDA component must be enabled in the topology. If not, the locality of the object may still be found using hwloc_cuda_get_device_cpuset().

      +
      Note
      This function cannot work if PCI devices are filtered out.
      +
      +The corresponding hwloc PCI device may be found by looking at the result parent pointer (unless PCI devices are filtered out).
      + +
      +
      + +

      ◆ hwloc_cuda_get_device_osdev_by_index()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_cuda_get_device_osdev_by_index (hwloc_topology_t topology,
      unsigned idx 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the CUDA device whose index is idx.

      +
      Returns
      The hwloc OS device object describing the CUDA device whose index is idx.
      +
      +NULL if none could be found.
      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection and the CUDA component must be enabled in the topology.

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object (unless PCI devices are filtered out).
      +
      +This function is identical to hwloc_cudart_get_device_osdev_by_index().
      + +
      +
      + +

      ◆ hwloc_cuda_get_device_pci_ids()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cuda_get_device_pci_ids (hwloc_topology_t topology,
      CUdevice cudevice,
      int * domain,
      int * bus,
      int * dev 
      )
      +
      +inlinestatic
      +
      + +

      Return the domain, bus and device IDs of the CUDA device cudevice.

      +

      Device cudevice must match the local machine.

      + +
      +
      + +

      ◆ hwloc_cuda_get_device_pcidev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_cuda_get_device_pcidev (hwloc_topology_t topology,
      CUdevice cudevice 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc PCI device object corresponding to the CUDA device cudevice.

      +
      Returns
      The hwloc PCI device object describing the CUDA device cudevice.
      +
      +NULL if none could be found.
      +

      Topology topology and device cudevice must match the local machine. I/O devices detection must be enabled in topology topology. The CUDA component is not needed in the topology.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00234.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00234.html new file mode 100644 index 0000000000..210f7199c7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00234.html @@ -0,0 +1,261 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with the CUDA Runtime API + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with the CUDA Runtime API
      +
      +
      + + + + + + + + + + +

      +Functions

      static int hwloc_cudart_get_device_pci_ids (hwloc_topology_t topology, int idx, int *domain, int *bus, int *dev)
       
      static int hwloc_cudart_get_device_cpuset (hwloc_topology_t topology, int idx, hwloc_cpuset_t set)
       
      static hwloc_obj_t hwloc_cudart_get_device_pcidev (hwloc_topology_t topology, int idx)
       
      static hwloc_obj_t hwloc_cudart_get_device_osdev_by_index (hwloc_topology_t topology, unsigned idx)
       
      +

      Detailed Description

      +

      This interface offers ways to retrieve topology information about CUDA devices when using the CUDA Runtime API.

      +

      Function Documentation

      + +

      ◆ hwloc_cudart_get_device_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cudart_get_device_cpuset (hwloc_topology_t topology,
      int idx,
      hwloc_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the CPU set of processors that are physically close to device idx.

      +

      Store in set the CPU-set describing the locality of the CUDA device whose index is idx.

      +

      Topology topology and device idx must match the local machine. I/O devices detection and the CUDA component are not needed in the topology.

      +

      The function only returns the locality of the device. If more information about the device is needed, OS objects should be used instead, see hwloc_cudart_get_device_osdev_by_index().

      +

      This function is currently only implemented in a meaningful way for Linux; other systems will simply get a full cpuset.

      + +
      +
      + +

      ◆ hwloc_cudart_get_device_osdev_by_index()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_cudart_get_device_osdev_by_index (hwloc_topology_t topology,
      unsigned idx 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the CUDA device whose index is idx.

      +
      Returns
      The hwloc OS device object describing the CUDA device whose index is idx.
      +
      +NULL if none could be found.
      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection and the CUDA component must be enabled in the topology. If not, the locality of the object may still be found using hwloc_cudart_get_device_cpuset().

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object (unless PCI devices are filtered out).
      +
      +This function is identical to hwloc_cuda_get_device_osdev_by_index().
      + +
      +
      + +

      ◆ hwloc_cudart_get_device_pci_ids()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_cudart_get_device_pci_ids (hwloc_topology_t topology,
      int idx,
      int * domain,
      int * bus,
      int * dev 
      )
      +
      +inlinestatic
      +
      + +

      Return the domain, bus and device IDs of the CUDA device whose index is idx.

      +

      Device index idx must match the local machine.

      + +
      +
      + +

      ◆ hwloc_cudart_get_device_pcidev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_cudart_get_device_pcidev (hwloc_topology_t topology,
      int idx 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc PCI device object corresponding to the CUDA device whose index is idx.

      +
      Returns
      The hwloc PCI device object describing the CUDA device whose index is idx.
      +
      +NULL if none could be found.
      +

      Topology topology and device idx must match the local machine. I/O devices detection must be enabled in topology topology. The CUDA component is not needed in the topology.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00235.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00235.html new file mode 100644 index 0000000000..4da3b4f8e7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00235.html @@ -0,0 +1,201 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with the NVIDIA Management Library + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with the NVIDIA Management Library
      +
      +
      + + + + + + + + +

      +Functions

      static int hwloc_nvml_get_device_cpuset (hwloc_topology_t topology, nvmlDevice_t device, hwloc_cpuset_t set)
       
      static hwloc_obj_t hwloc_nvml_get_device_osdev_by_index (hwloc_topology_t topology, unsigned idx)
       
      static hwloc_obj_t hwloc_nvml_get_device_osdev (hwloc_topology_t topology, nvmlDevice_t device)
       
      +

      Detailed Description

      +

      This interface offers ways to retrieve topology information about devices managed by the NVIDIA Management Library (NVML).

      +

      Function Documentation

      + +

      ◆ hwloc_nvml_get_device_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_nvml_get_device_cpuset (hwloc_topology_t topology,
      nvmlDevice_t device,
      hwloc_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the CPU set of processors that are physically close to NVML device device.

      +

      Store in set the CPU-set describing the locality of the NVML device device.

      +

      Topology topology and device device must match the local machine. I/O devices detection and the NVML component are not needed in the topology.

      +

      The function only returns the locality of the device. If more information about the device is needed, OS objects should be used instead, see hwloc_nvml_get_device_osdev() and hwloc_nvml_get_device_osdev_by_index().

      +

      This function is currently only implemented in a meaningful way for Linux; other systems will simply get a full cpuset.

      + +
      +
      + +

      ◆ hwloc_nvml_get_device_osdev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_nvml_get_device_osdev (hwloc_topology_t topology,
      nvmlDevice_t device 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to NVML device device.

      +
      Returns
      The hwloc OS device object that describes the given NVML device device.
      +
      +NULL if none could be found.
      +

      Topology topology and device device must match the local machine. I/O devices detection and the NVML component must be enabled in the topology. If not, the locality of the object may still be found using hwloc_nvml_get_device_cpuset().

      +
      Note
      The corresponding hwloc PCI device may be found by looking at the result parent pointer (unless PCI devices are filtered out).
      + +
      +
      + +

      ◆ hwloc_nvml_get_device_osdev_by_index()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_nvml_get_device_osdev_by_index (hwloc_topology_t topology,
      unsigned idx 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the NVML device whose index is idx.

      +
      Returns
      The hwloc OS device object describing the NVML device whose index is idx.
      +
      +NULL if none could be found.
      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection and the NVML component must be enabled in the topology.

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object (unless PCI devices are filtered out).
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00236.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00236.html new file mode 100644 index 0000000000..3257ce6abf --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00236.html @@ -0,0 +1,201 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with the ROCm SMI Management Library + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with the ROCm SMI Management Library
      +
      +
      + + + + + + + + +

      +Functions

      static int hwloc_rsmi_get_device_cpuset (hwloc_topology_t topology, uint32_t dv_ind, hwloc_cpuset_t set)
       
      static hwloc_obj_t hwloc_rsmi_get_device_osdev_by_index (hwloc_topology_t topology, uint32_t dv_ind)
       
      static hwloc_obj_t hwloc_rsmi_get_device_osdev (hwloc_topology_t topology, uint32_t dv_ind)
       
      +

      Detailed Description

      +

      This interface offers ways to retrieve topology information about devices managed by the ROCm SMI Management Library.

      +

      Function Documentation

      + +

      ◆ hwloc_rsmi_get_device_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_rsmi_get_device_cpuset (hwloc_topology_t topology,
      uint32_t dv_ind,
      hwloc_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the CPU set of logical processors that are physically close to AMD GPU device whose index is dv_ind.

      +

      Store in set the CPU-set describing the locality of the AMD GPU device whose index is dv_ind.

      +

      Topology topology and device dv_ind must match the local machine. I/O devices detection and the ROCm SMI component are not needed in the topology.

      +

      The function only returns the locality of the device. If more information about the device is needed, OS objects should be used instead, see hwloc_rsmi_get_device_osdev() and hwloc_rsmi_get_device_osdev_by_index().

      +

      This function is currently only implemented in a meaningful way for Linux; other systems will simply get a full cpuset.

      + +
      +
      + +

      ◆ hwloc_rsmi_get_device_osdev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_rsmi_get_device_osdev (hwloc_topology_t topology,
      uint32_t dv_ind 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to AMD GPU device, whose index is dv_ind.

      +
      Returns
      The hwloc OS device object that describes the given AMD GPU, whose index is dv_ind.
      +
      +NULL if none could be found.
      +

      Topology topology and device dv_ind must match the local machine. I/O devices detection and the ROCm SMI component must be enabled in the topology. If not, the locality of the object may still be found using hwloc_rsmi_get_device_cpuset().

      +
      Note
      The corresponding hwloc PCI device may be found by looking at the result parent pointer (unless PCI devices are filtered out).
      + +
      +
      + +

      ◆ hwloc_rsmi_get_device_osdev_by_index()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_rsmi_get_device_osdev_by_index (hwloc_topology_t topology,
      uint32_t dv_ind 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the AMD GPU device whose index is dv_ind.

      +
      Returns
      The hwloc OS device object describing the AMD GPU device whose index is dv_ind.
      +
      +NULL if none could be found.
      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection and the ROCm SMI component must be enabled in the topology.

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object (unless PCI devices are filtered out).
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00237.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00237.html new file mode 100644 index 0000000000..14f877cf8f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00237.html @@ -0,0 +1,156 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with the oneAPI Level Zero interface. + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with the oneAPI Level Zero interface.
      +
      +
      + + + + + + +

      +Functions

      static int hwloc_levelzero_get_device_cpuset (hwloc_topology_t topology, ze_device_handle_t device, hwloc_cpuset_t set)
       
      static hwloc_obj_t hwloc_levelzero_get_device_osdev (hwloc_topology_t topology, ze_device_handle_t device)
       
      +

      Detailed Description

      +

      This interface offers ways to retrieve topology information about devices managed by the Level Zero API.

      +

      Function Documentation

      + +

      ◆ hwloc_levelzero_get_device_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_levelzero_get_device_cpuset (hwloc_topology_t topology,
      ze_device_handle_t device,
      hwloc_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the CPU set of logical processors that are physically close to the Level Zero device device.

      +

      Store in set the CPU-set describing the locality of the Level Zero device device.

      +

      Topology topology and device device must match the local machine. The Level Zero must have been initialized with Sysman enabled (ZES_ENABLE_SYSMAN=1 in the environment). I/O devices detection and the Level Zero component are not needed in the topology.

      +

      The function only returns the locality of the device. If more information about the device is needed, OS objects should be used instead, see hwloc_levelzero_get_device_osdev().

      +

      This function is currently only implemented in a meaningful way for Linux; other systems will simply get a full cpuset.

      + +
      +
      + +

      ◆ hwloc_levelzero_get_device_osdev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_levelzero_get_device_osdev (hwloc_topology_t topology,
      ze_device_handle_t device 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to Level Zero device device.

      +
      Returns
      The hwloc OS device object that describes the given Level Zero device device.
      +
      +NULL if none could be found.
      +

      Topology topology and device dv_ind must match the local machine. I/O devices detection and the Level Zero component must be enabled in the topology. If not, the locality of the object may still be found using hwloc_levelzero_get_device_cpuset().

      +
      Note
      The corresponding hwloc PCI device may be found by looking at the result parent pointer (unless PCI devices are filtered out).
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00238.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00238.html new file mode 100644 index 0000000000..adb91e0f73 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00238.html @@ -0,0 +1,213 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with OpenGL displays + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with OpenGL displays
      +
      +
      + + + + + + + + +

      +Functions

      static hwloc_obj_t hwloc_gl_get_display_osdev_by_port_device (hwloc_topology_t topology, unsigned port, unsigned device)
       
      static hwloc_obj_t hwloc_gl_get_display_osdev_by_name (hwloc_topology_t topology, const char *name)
       
      static int hwloc_gl_get_display_by_osdev (hwloc_topology_t topology, hwloc_obj_t osdev, unsigned *port, unsigned *device)
       
      +

      Detailed Description

      +

      This interface offers ways to retrieve topology information about OpenGL displays.

      +

      Only the NVIDIA display locality information is currently available, using the NV-CONTROL X11 extension and the NVCtrl library.

      +

      Function Documentation

      + +

      ◆ hwloc_gl_get_display_by_osdev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_gl_get_display_by_osdev (hwloc_topology_t topology,
      hwloc_obj_t osdev,
      unsigned * port,
      unsigned * device 
      )
      +
      +inlinestatic
      +
      + +

      Get the OpenGL display port and device corresponding to the given hwloc OS object.

      +

      Retrieves the OpenGL display port (server) in port and device (screen) in screen that correspond to the given hwloc OS device object.

      +
      Returns
      -1 if none could be found.
      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection and the GL component must be enabled in the topology.

      + +
      +
      + +

      ◆ hwloc_gl_get_display_osdev_by_name()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_gl_get_display_osdev_by_name (hwloc_topology_t topology,
      const char * name 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the OpenGL display given by name.

      +
      Returns
      The hwloc OS device object describing the OpenGL display whose name is name, built as ":port.device" such as ":0.0" .
      +
      +NULL if none could be found.
      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection and the GL component must be enabled in the topology.

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object (unless PCI devices are filtered out).
      + +
      +
      + +

      ◆ hwloc_gl_get_display_osdev_by_port_device()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_gl_get_display_osdev_by_port_device (hwloc_topology_t topology,
      unsigned port,
      unsigned device 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the OpenGL display given by port and device index.

      +
      Returns
      The hwloc OS device object describing the OpenGL display whose port (server) is port and device (screen) is device.
      +
      +NULL if none could be found.
      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection and the GL component must be enabled in the topology.

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object (unless PCI devices are filtered out).
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00239.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00239.html new file mode 100644 index 0000000000..7ca59ec7a1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00239.html @@ -0,0 +1,202 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability with OpenFabrics + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Interoperability with OpenFabrics
      +
      +
      + + + + + + + + +

      +Functions

      static int hwloc_ibv_get_device_cpuset (hwloc_topology_t topology, struct ibv_device *ibdev, hwloc_cpuset_t set)
       
      static hwloc_obj_t hwloc_ibv_get_device_osdev_by_name (hwloc_topology_t topology, const char *ibname)
       
      static hwloc_obj_t hwloc_ibv_get_device_osdev (hwloc_topology_t topology, struct ibv_device *ibdev)
       
      +

      Detailed Description

      +

      This interface offers ways to retrieve topology information about OpenFabrics devices (InfiniBand, Omni-Path, usNIC, etc).

      +

      Function Documentation

      + +

      ◆ hwloc_ibv_get_device_cpuset()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      static int hwloc_ibv_get_device_cpuset (hwloc_topology_t topology,
      struct ibv_device * ibdev,
      hwloc_cpuset_t set 
      )
      +
      +inlinestatic
      +
      + +

      Get the CPU set of processors that are physically close to device ibdev.

      +

      Store in set the CPU-set describing the locality of the OpenFabrics device ibdev (InfiniBand, etc).

      +

      Topology topology and device ibdev must match the local machine. I/O devices detection is not needed in the topology.

      +

      The function only returns the locality of the device. If more information about the device is needed, OS objects should be used instead, see hwloc_ibv_get_device_osdev() and hwloc_ibv_get_device_osdev_by_name().

      +

      This function is currently only implemented in a meaningful way for Linux; other systems will simply get a full cpuset.

      + +
      +
      + +

      ◆ hwloc_ibv_get_device_osdev()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_ibv_get_device_osdev (hwloc_topology_t topology,
      struct ibv_device * ibdev 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the OpenFabrics device ibdev.

      +
      Returns
      The hwloc OS device object describing the OpenFabrics device ibdev (InfiniBand, etc).
      +
      +NULL if none could be found.
      +

      Topology topology and device ibdev must match the local machine. I/O devices detection must be enabled in the topology. If not, the locality of the object may still be found using hwloc_ibv_get_device_cpuset().

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object.
      + +
      +
      + +

      ◆ hwloc_ibv_get_device_osdev_by_name()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static hwloc_obj_t hwloc_ibv_get_device_osdev_by_name (hwloc_topology_t topology,
      const char * ibname 
      )
      +
      +inlinestatic
      +
      + +

      Get the hwloc OS device object corresponding to the OpenFabrics device named ibname.

      +
      Returns
      The hwloc OS device object describing the OpenFabrics device (InfiniBand, Omni-Path, usNIC, etc) whose name is ibname (mlx5_0, hfi1_0, usnic_0, qib0, etc).
      +
      +NULL if none could be found.
      +

      The name ibname is usually obtained from ibv_get_device_name().

      +

      The topology topology does not necessarily have to match the current machine. For instance the topology may be an XML import of a remote host. I/O devices detection must be enabled in the topology.

      +
      Note
      The corresponding PCI device object can be obtained by looking at the OS device parent object.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00240.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00240.html new file mode 100644 index 0000000000..dd42e9c057 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00240.html @@ -0,0 +1,513 @@ + + + + + + + +Hardware Locality (hwloc): Topology differences + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Topology differences
      +
      +
      + + + + + + +

      +Data Structures

      union  hwloc_topology_diff_obj_attr_u
       
      union  hwloc_topology_diff_u
       
      + + + + + + + +

      +Typedefs

      typedef enum hwloc_topology_diff_obj_attr_type_e hwloc_topology_diff_obj_attr_type_t
       
      typedef enum hwloc_topology_diff_type_e hwloc_topology_diff_type_t
       
      typedef union hwloc_topology_diff_uhwloc_topology_diff_t
       
      + + + + + + + +

      +Enumerations

      enum  hwloc_topology_diff_obj_attr_type_e { HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE +, HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME +, HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO + }
       
      enum  hwloc_topology_diff_type_e { HWLOC_TOPOLOGY_DIFF_OBJ_ATTR +, HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX + }
       
      enum  hwloc_topology_diff_apply_flags_e { HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE + }
       
      + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_topology_diff_build (hwloc_topology_t topology, hwloc_topology_t newtopology, unsigned long flags, hwloc_topology_diff_t *diff)
       
      int hwloc_topology_diff_apply (hwloc_topology_t topology, hwloc_topology_diff_t diff, unsigned long flags)
       
      int hwloc_topology_diff_destroy (hwloc_topology_diff_t diff)
       
      int hwloc_topology_diff_load_xml (const char *xmlpath, hwloc_topology_diff_t *diff, char **refname)
       
      int hwloc_topology_diff_export_xml (hwloc_topology_diff_t diff, const char *refname, const char *xmlpath)
       
      int hwloc_topology_diff_load_xmlbuffer (const char *xmlbuffer, int buflen, hwloc_topology_diff_t *diff, char **refname)
       
      int hwloc_topology_diff_export_xmlbuffer (hwloc_topology_diff_t diff, const char *refname, char **xmlbuffer, int *buflen)
       
      +

      Detailed Description

      +

      Applications that manipulate many similar topologies, for instance one for each node of a homogeneous cluster, may want to compress topologies to reduce the memory footprint.

      +

      This file offers a way to manipulate the difference between topologies and export/import it to/from XML. Compression may therefore be achieved by storing one topology entirely while the others are only described by their differences with the former. The actual topology can be reconstructed when actually needed by applying the precomputed difference to the reference topology.

      +

      This interface targets very similar nodes. Only very simple differences between topologies are actually supported, for instance a change in the memory size, the name of the object, or some info attribute. More complex differences such as adding or removing objects cannot be represented in the difference structures and therefore return errors. Differences between object sets or topology-wide allowed sets, cannot be represented either.

      +

      It means that there is no need to apply the difference when looking at the tree organization (how many levels, how many objects per level, what kind of objects, CPU and node sets, etc) and when binding to objects. However the difference must be applied when looking at object attributes such as the name, the memory size or info attributes.

      +

      Typedef Documentation

      + +

      ◆ hwloc_topology_diff_obj_attr_type_t

      + +
      +
      + +

      Type of one object attribute difference.

      + +
      +
      + +

      ◆ hwloc_topology_diff_t

      + +
      +
      + + + + +
      typedef union hwloc_topology_diff_u * hwloc_topology_diff_t
      +
      + +

      One element of a difference list between two topologies.

      + +
      +
      + +

      ◆ hwloc_topology_diff_type_t

      + +
      +
      + +

      Type of one element of a difference list.

      + +
      +
      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_topology_diff_apply_flags_e

      + +
      +
      + +

      Flags to be given to hwloc_topology_diff_apply().

      + + +
      Enumerator
      HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE 

      Apply topology diff in reverse direction.

      +
      + +
      +
      + +

      ◆ hwloc_topology_diff_obj_attr_type_e

      + +
      +
      + +

      Type of one object attribute difference.

      + + + + +
      Enumerator
      HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE 

      The object local memory is modified. The union is a hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s (and the index field is ignored).

      +
      HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME 

      The object name is modified. The union is a hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s (and the name field is ignored).

      +
      HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO 

      the value of an info attribute is modified. The union is a hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s.

      +
      + +
      +
      + +

      ◆ hwloc_topology_diff_type_e

      + +
      +
      + + + + +
      enum hwloc_topology_diff_type_e
      +
      + +

      Type of one element of a difference list.

      + + + +
      Enumerator
      HWLOC_TOPOLOGY_DIFF_OBJ_ATTR 

      An object attribute was changed. The union is a hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s.

      +
      HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX 

      The difference is too complex, it cannot be represented. The difference below this object has not been checked. hwloc_topology_diff_build() will return 1.

      +

      The union is a hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_topology_diff_apply()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_diff_apply (hwloc_topology_t topology,
      hwloc_topology_diff_t diff,
      unsigned long flags 
      )
      +
      + +

      Apply a topology diff to an existing topology.

      +

      flags is an OR'ed set of hwloc_topology_diff_apply_flags_e.

      +

      The new topology is modified in place. hwloc_topology_dup() may be used to duplicate it before patching.

      +

      If the difference cannot be applied entirely, all previous applied elements are unapplied before returning.

      +
      Returns
      0 on success.
      +
      +-N if applying the difference failed while trying to apply the N-th part of the difference. For instance -1 is returned if the very first difference element could not be applied.
      + +
      +
      + +

      ◆ hwloc_topology_diff_build()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_diff_build (hwloc_topology_t topology,
      hwloc_topology_t newtopology,
      unsigned long flags,
      hwloc_topology_diff_tdiff 
      )
      +
      + +

      Compute the difference between 2 topologies.

      +

      The difference is stored as a list of hwloc_topology_diff_t entries starting at diff. It is computed by doing a depth-first traversal of both topology trees simultaneously.

      +

      If the difference between 2 objects is too complex to be represented (for instance if some objects have different types, or different numbers of children), a special diff entry of type HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX is queued. The computation of the diff does not continue below these objects. So each such diff entry means that the difference between two subtrees could not be computed.

      +
      Returns
      0 if the difference can be represented properly.
      +
      +0 with diff pointing to NULL if there is no difference between the topologies.
      +
      +1 if the difference is too complex (see above). Some entries in the list will be of type HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX.
      +
      +-1 on any other error.
      +
      Note
      flags is currently not used. It should be 0.
      +
      +The output diff has to be freed with hwloc_topology_diff_destroy().
      +
      +The output diff can only be exported to XML or passed to hwloc_topology_diff_apply() if 0 was returned, i.e. if no entry of type HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX is listed.
      +
      +The output diff may be modified by removing some entries from the list. The removed entries should be freed by passing them to to hwloc_topology_diff_destroy() (possible as another list).
      + +
      +
      + +

      ◆ hwloc_topology_diff_destroy()

      + +
      +
      + + + + + + + + +
      int hwloc_topology_diff_destroy (hwloc_topology_diff_t diff)
      +
      + +

      Destroy a list of topology differences.

      + +
      +
      + +

      ◆ hwloc_topology_diff_export_xml()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_diff_export_xml (hwloc_topology_diff_t diff,
      const char * refname,
      const char * xmlpath 
      )
      +
      + +

      Export a list of topology differences to a XML file.

      +

      If not NULL, refname defines an identifier string for the reference topology which was used as a base when computing this difference. This identifier is usually the name of the other XML file that contains the reference topology. This attribute is given back when reading the diff from XML.

      + +
      +
      + +

      ◆ hwloc_topology_diff_export_xmlbuffer()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_diff_export_xmlbuffer (hwloc_topology_diff_t diff,
      const char * refname,
      char ** xmlbuffer,
      int * buflen 
      )
      +
      + +

      Export a list of topology differences to a XML buffer.

      +

      If not NULL, refname defines an identifier string for the reference topology which was used as a base when computing this difference. This identifier is usually the name of the other XML file that contains the reference topology. This attribute is given back when reading the diff from XML.

      +

      The returned buffer ends with a \0 that is included in the returned length.

      +
      Note
      The XML buffer should later be freed with hwloc_free_xmlbuffer().
      + +
      +
      + +

      ◆ hwloc_topology_diff_load_xml()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_diff_load_xml (const char * xmlpath,
      hwloc_topology_diff_tdiff,
      char ** refname 
      )
      +
      + +

      Load a list of topology differences from a XML file.

      +

      If not NULL, refname will be filled with the identifier string of the reference topology for the difference file, if any was specified in the XML file. This identifier is usually the name of the other XML file that contains the reference topology.

      +
      Note
      the pointer returned in refname should later be freed by the caller.
      + +
      +
      + +

      ◆ hwloc_topology_diff_load_xmlbuffer()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_diff_load_xmlbuffer (const char * xmlbuffer,
      int buflen,
      hwloc_topology_diff_tdiff,
      char ** refname 
      )
      +
      + +

      Load a list of topology differences from a XML buffer.

      +

      If not NULL, refname will be filled with the identifier string of the reference topology for the difference file, if any was specified in the XML file. This identifier is usually the name of the other XML file that contains the reference topology.

      +
      Note
      the pointer returned in refname should later be freed by the caller.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00241.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00241.html new file mode 100644 index 0000000000..331871fcb2 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00241.html @@ -0,0 +1,241 @@ + + + + + + + +Hardware Locality (hwloc): Sharing topologies between processes + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Sharing topologies between processes
      +
      +
      + + + + + + + + +

      +Functions

      int hwloc_shmem_topology_get_length (hwloc_topology_t topology, size_t *lengthp, unsigned long flags)
       
      int hwloc_shmem_topology_write (hwloc_topology_t topology, int fd, hwloc_uint64_t fileoffset, void *mmap_address, size_t length, unsigned long flags)
       
      int hwloc_shmem_topology_adopt (hwloc_topology_t *topologyp, int fd, hwloc_uint64_t fileoffset, void *mmap_address, size_t length, unsigned long flags)
       
      +

      Detailed Description

      +

      These functions are used to share a topology between processes by duplicating it into a file-backed shared-memory buffer.

      +

      The master process must first get the required shared-memory size for storing this topology with hwloc_shmem_topology_get_length().

      +

      Then it must find a virtual memory area of that size that is available in all processes (identical virtual addresses in all processes). On Linux, this can be done by comparing holes found in /proc/<pid>/maps for each process.

      +

      Once found, it must open a destination file for storing the buffer, and pass it to hwloc_shmem_topology_write() together with virtual memory address and length obtained above.

      +

      Other processes may then adopt this shared topology by opening the same file and passing it to hwloc_shmem_topology_adopt() with the exact same virtual memory address and length.

      +

      Function Documentation

      + +

      ◆ hwloc_shmem_topology_adopt()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_shmem_topology_adopt (hwloc_topology_ttopologyp,
      int fd,
      hwloc_uint64_t fileoffset,
      void * mmap_address,
      size_t length,
      unsigned long flags 
      )
      +
      + +

      Adopt a shared memory topology stored in a file.

      +

      Map a file in virtual memory and adopt the topology that was previously stored there with hwloc_shmem_topology_write().

      +

      The returned adopted topology in topologyp can be used just like any topology. And it must be destroyed with hwloc_topology_destroy() as usual.

      +

      However the topology is read-only. For instance, it cannot be modified with hwloc_topology_restrict() and object userdata pointers cannot be changed.

      +

      The segment of the file pointed by descriptor fd, starting at offset fileoffset, and of length length (in bytes), will be mapped at virtual address mmap_address.

      +

      The file pointed by descriptor fd, the offset fileoffset, the requested mapping virtual address mmap_address and the length length must be identical to what was given to hwloc_shmem_topology_write() earlier.

      +
      Note
      Flags flags are currently unused, must be 0.
      +
      +The object userdata pointer should not be used unless the process that created the shared topology also placed userdata-pointed buffers in shared memory.
      +
      +This function takes care of calling hwloc_topology_abi_check().
      +
      Returns
      -1 with errno set to EBUSY if the virtual memory mapping defined by mmap_address and length isn't available in the process.
      +
      +-1 with errno set to EINVAL if fileoffset, mmap_address or length aren't page-aligned, or do not match what was given to hwloc_shmem_topology_write() earlier.
      +
      +-1 with errno set to EINVAL if the layout of the topology structure is different between the writer process and the adopter process.
      + +
      +
      + +

      ◆ hwloc_shmem_topology_get_length()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_shmem_topology_get_length (hwloc_topology_t topology,
      size_t * lengthp,
      unsigned long flags 
      )
      +
      + +

      Get the required shared memory length for storing a topology.

      +

      This length (in bytes) must be used in hwloc_shmem_topology_write() and hwloc_shmem_topology_adopt() later.

      +
      Note
      Flags flags are currently unused, must be 0.
      + +
      +
      + +

      ◆ hwloc_shmem_topology_write()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_shmem_topology_write (hwloc_topology_t topology,
      int fd,
      hwloc_uint64_t fileoffset,
      void * mmap_address,
      size_t length,
      unsigned long flags 
      )
      +
      + +

      Duplicate a topology to a shared memory file.

      +

      Temporarily map a file in virtual memory and duplicate the topology topology by allocating duplicates in there.

      +

      The segment of the file pointed by descriptor fd, starting at offset fileoffset, and of length length (in bytes), will be temporarily mapped at virtual address mmap_address during the duplication.

      +

      The mapping length length must have been previously obtained with hwloc_shmem_topology_get_length() and the topology must not have been modified in the meantime.

      +
      Note
      Flags flags are currently unused, must be 0.
      +
      +The object userdata pointer is duplicated but the pointed buffer is not. However the caller may also allocate it manually in shared memory to share it as well.
      +
      Returns
      -1 with errno set to EBUSY if the virtual memory mapping defined by mmap_address and length isn't available in the process.
      +
      +-1 with errno set to EINVAL if fileoffset, mmap_address or length aren't page-aligned.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00242.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00242.html new file mode 100644 index 0000000000..5c26f4e730 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00242.html @@ -0,0 +1,62 @@ + + + + + + + +Hardware Locality (hwloc): Components and Plugins: Discovery components + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Components and Plugins: Discovery components
      +
      +
      + + + + +

      +Data Structures

      struct  hwloc_disc_component
       
      +

      Detailed Description

      +
      Note
      These structures and functions may change when HWLOC_COMPONENT_ABI is modified.
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00243.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00243.html new file mode 100644 index 0000000000..4736ce3c7f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00243.html @@ -0,0 +1,221 @@ + + + + + + + +Hardware Locality (hwloc): Components and Plugins: Discovery backends + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Components and Plugins: Discovery backends
      +
      +
      + + + + + + +

      +Data Structures

      struct  hwloc_disc_status
       
      struct  hwloc_backend
       
      + + + +

      +Typedefs

      typedef enum hwloc_disc_phase_e hwloc_disc_phase_t
       
      + + + + + +

      +Enumerations

      enum  hwloc_disc_phase_e {
      +  HWLOC_DISC_PHASE_GLOBAL +, HWLOC_DISC_PHASE_CPU +, HWLOC_DISC_PHASE_MEMORY +, HWLOC_DISC_PHASE_PCI +,
      +  HWLOC_DISC_PHASE_IO +, HWLOC_DISC_PHASE_MISC +, HWLOC_DISC_PHASE_ANNOTATE +, HWLOC_DISC_PHASE_TWEAK +
      + }
       
      enum  hwloc_disc_status_flag_e { HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES + }
       
      + + + + + +

      +Functions

      struct hwloc_backendhwloc_backend_alloc (struct hwloc_topology *topology, struct hwloc_disc_component *component)
       
      int hwloc_backend_enable (struct hwloc_backend *backend)
       
      +

      Detailed Description

      +
      Note
      These structures and functions may change when HWLOC_COMPONENT_ABI is modified.
      +

      Typedef Documentation

      + +

      ◆ hwloc_disc_phase_t

      + +
      +
      + + + + +
      typedef enum hwloc_disc_phase_e hwloc_disc_phase_t
      +
      + +

      Discovery phase.

      + +
      +
      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_disc_phase_e

      + +
      +
      + + + + +
      enum hwloc_disc_phase_e
      +
      + +

      Discovery phase.

      + + + + + + + + + +
      Enumerator
      HWLOC_DISC_PHASE_GLOBAL 

      xml or synthetic, platform-specific components such as bgq. Discovers everything including CPU, memory, I/O and everything else. A component with a Global phase usually excludes all other phases.

      +
      HWLOC_DISC_PHASE_CPU 

      CPU discovery.

      +
      HWLOC_DISC_PHASE_MEMORY 

      Attach memory to existing CPU objects.

      +
      HWLOC_DISC_PHASE_PCI 

      Attach PCI devices and bridges to existing CPU objects.

      +
      HWLOC_DISC_PHASE_IO 

      I/O discovery that requires PCI devices (OS devices such as OpenCL, CUDA, etc.).

      +
      HWLOC_DISC_PHASE_MISC 

      Misc objects that gets added below anything else.

      +
      HWLOC_DISC_PHASE_ANNOTATE 

      Annotating existing objects, adding distances, etc.

      +
      HWLOC_DISC_PHASE_TWEAK 

      Final tweaks to a ready-to-use topology. This phase runs once the topology is loaded, before it is returned to the topology. Hence it may only use the main hwloc API for modifying the topology, for instance by restricting it, adding info attributes, etc.

      +
      + +
      +
      + +

      ◆ hwloc_disc_status_flag_e

      + +
      +
      + + + + +
      enum hwloc_disc_status_flag_e
      +
      + +

      Discovery status flags.

      + + +
      Enumerator
      HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES 

      The sets of allowed resources were already retrieved.

      +
      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_backend_alloc()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      struct hwloc_backend* hwloc_backend_alloc (struct hwloc_topology * topology,
      struct hwloc_disc_componentcomponent 
      )
      +
      + +

      Allocate a backend structure, set good default values, initialize backend->component and topology, etc. The caller will then modify whatever needed, and call hwloc_backend_enable().

      + +
      +
      + +

      ◆ hwloc_backend_enable()

      + +
      +
      + + + + + + + + +
      int hwloc_backend_enable (struct hwloc_backendbackend)
      +
      + +

      Enable a previously allocated and setup backend.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00244.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00244.html new file mode 100644 index 0000000000..808df88921 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00244.html @@ -0,0 +1,116 @@ + + + + + + + +Hardware Locality (hwloc): Components and Plugins: Generic components + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Components and Plugins: Generic components
      +
      +
      + + + + +

      +Data Structures

      struct  hwloc_component
       
      + + + +

      +Typedefs

      typedef enum hwloc_component_type_e hwloc_component_type_t
       
      + + + +

      +Enumerations

      enum  hwloc_component_type_e { HWLOC_COMPONENT_TYPE_DISC +, HWLOC_COMPONENT_TYPE_XML + }
       
      +

      Detailed Description

      +
      Note
      These structures and functions may change when HWLOC_COMPONENT_ABI is modified.
      +

      Typedef Documentation

      + +

      ◆ hwloc_component_type_t

      + +
      +
      + +

      Generic component type.

      + +
      +
      +

      Enumeration Type Documentation

      + +

      ◆ hwloc_component_type_e

      + +
      +
      + + + + +
      enum hwloc_component_type_e
      +
      + +

      Generic component type.

      + + + +
      Enumerator
      HWLOC_COMPONENT_TYPE_DISC 

      The data field must point to a struct hwloc_disc_component.

      +
      HWLOC_COMPONENT_TYPE_XML 

      The data field must point to a struct hwloc_xml_component.

      +
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00245.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00245.html new file mode 100644 index 0000000000..4c98503da7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00245.html @@ -0,0 +1,329 @@ + + + + + + + +Hardware Locality (hwloc): Components and Plugins: Core functions to be used by components + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Components and Plugins: Core functions to be used by components
      +
      +
      + + + + + + + + + + + + + + + + +

      +Functions

      int hwloc_hide_errors (void)
       
      hwloc_obj_t hwloc__insert_object_by_cpuset (struct hwloc_topology *topology, hwloc_obj_t root, hwloc_obj_t obj, const char *reason)
       
      void hwloc_insert_object_by_parent (struct hwloc_topology *topology, hwloc_obj_t parent, hwloc_obj_t obj)
       
      hwloc_obj_t hwloc_alloc_setup_object (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned os_index)
       
      int hwloc_obj_add_children_sets (hwloc_obj_t obj)
       
      int hwloc_topology_reconnect (hwloc_topology_t topology, unsigned long flags)
       
      static int hwloc_plugin_check_namespace (const char *pluginname, const char *symbol)
       
      +

      Detailed Description

      +
      Note
      These structures and functions may change when HWLOC_COMPONENT_ABI is modified.
      +

      Function Documentation

      + +

      ◆ hwloc__insert_object_by_cpuset()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      hwloc_obj_t hwloc__insert_object_by_cpuset (struct hwloc_topology * topology,
      hwloc_obj_t root,
      hwloc_obj_t obj,
      const char * reason 
      )
      +
      + +

      Add an object to the topology.

      +

      Insert new object obj in the topology starting under existing object root (if NULL, the topology root object is used).

      +

      It is sorted along the tree of other objects according to the inclusion of cpusets, to eventually be added as a child of the smallest object including this object.

      +

      If the cpuset is empty, the type of the object (and maybe some attributes) must be enough to find where to insert the object. This is especially true for NUMA nodes with memory and no CPUs.

      +

      The given object should not have children.

      +

      This shall only be called before levels are built.

      +

      The caller should check whether the object type is filtered-out before calling this function.

      +

      The topology cpuset/nodesets will be enlarged to include the object sets.

      +

      reason is a unique string identifying where and why this insertion call was performed (it will be displayed in case of internal insertion error).

      +

      Returns the object on success. Returns NULL and frees obj on error. Returns another object and frees obj if it was merged with an identical pre-existing object.

      + +
      +
      + +

      ◆ hwloc_alloc_setup_object()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      hwloc_obj_t hwloc_alloc_setup_object (hwloc_topology_t topology,
      hwloc_obj_type_t type,
      unsigned os_index 
      )
      +
      + +

      Allocate and initialize an object of the given type and physical index.

      +

      If os_index is unknown or irrelevant, use HWLOC_UNKNOWN_INDEX.

      + +
      +
      + +

      ◆ hwloc_hide_errors()

      + +
      +
      + + + + + + + + +
      int hwloc_hide_errors (void )
      +
      + +

      Check whether error messages are hidden.

      +

      Callers should print critical error messages (e.g. invalid hw topo info, invalid config) only if this function returns strictly less than 2.

      +

      Callers should print non-critical error messages (e.g. failure to initialize CUDA) if this function returns 0.

      +

      This function return 1 by default (show critical only), 0 in lstopo (show all), or anything set in HWLOC_HIDE_ERRORS in the environment.

      + +
      +
      + +

      ◆ hwloc_insert_object_by_parent()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      void hwloc_insert_object_by_parent (struct hwloc_topology * topology,
      hwloc_obj_t parent,
      hwloc_obj_t obj 
      )
      +
      + +

      Insert an object somewhere in the topology.

      +

      It is added as the last child of the given parent. The cpuset is completely ignored, so strange objects such as I/O devices should preferably be inserted with this.

      +

      When used for "normal" children with cpusets (when importing from XML when duplicating a topology), the caller should make sure that:

        +
      • children are inserted in order,
      • +
      • children cpusets do not intersect.
      • +
      +

      The given object may have normal, I/O or Misc children, as long as they are in order as well. These children must have valid parent and next_sibling pointers.

      +

      The caller should check whether the object type is filtered-out before calling this function.

      + +
      +
      + +

      ◆ hwloc_obj_add_children_sets()

      + +
      +
      + + + + + + + + +
      int hwloc_obj_add_children_sets (hwloc_obj_t obj)
      +
      + +

      Setup object cpusets/nodesets by OR'ing its children.

      +

      Used when adding an object late in the topology. Will update the new object by OR'ing all its new children sets.

      +

      Used when PCI backend adds a hostbridge parent, when distances add a new Group, etc.

      + +
      +
      + +

      ◆ hwloc_plugin_check_namespace()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static int hwloc_plugin_check_namespace (const char * pluginname,
      const char * symbol 
      )
      +
      +inlinestatic
      +
      + +

      Make sure that plugins can lookup core symbols.

      +

      This is a sanity check to avoid lazy-lookup failures when libhwloc is loaded within a plugin, and later tries to load its own plugins. This may fail (and abort the program) if libhwloc symbols are in a private namespace.

      +
      Returns
      0 on success.
      +
      +-1 if the plugin cannot be successfully loaded. The caller plugin init() callback should return a negative error code as well.
      +

      Plugins should call this function in their init() callback to avoid later crashes if lazy symbol resolution is used by the upper layer that loaded hwloc (e.g. OpenCL implementations using dlopen with RTLD_LAZY).

      +
      Note
      The build system must define HWLOC_INSIDE_PLUGIN if and only if building the caller as a plugin.
      +
      +This function should remain inline so plugins can call it even when they cannot find libhwloc symbols.
      + +
      +
      + +

      ◆ hwloc_topology_reconnect()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_topology_reconnect (hwloc_topology_t topology,
      unsigned long flags 
      )
      +
      + +

      Request a reconnection of children and levels in the topology.

      +

      May be used by backends during discovery if they need arrays or lists of object within levels or children to be fully connected.

      +

      flags is currently unused, must 0.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00246.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00246.html new file mode 100644 index 0000000000..44447f5e35 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00246.html @@ -0,0 +1,206 @@ + + + + + + + +Hardware Locality (hwloc): Components and Plugins: Filtering objects + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Components and Plugins: Filtering objects
      +
      +
      + + + + + + + + + + +

      +Functions

      static int hwloc_filter_check_pcidev_subtype_important (unsigned classid)
       
      static int hwloc_filter_check_osdev_subtype_important (hwloc_obj_osdev_type_t subtype)
       
      static int hwloc_filter_check_keep_object_type (hwloc_topology_t topology, hwloc_obj_type_t type)
       
      static int hwloc_filter_check_keep_object (hwloc_topology_t topology, hwloc_obj_t obj)
       
      +

      Detailed Description

      +
      Note
      These structures and functions may change when HWLOC_COMPONENT_ABI is modified.
      +

      Function Documentation

      + +

      ◆ hwloc_filter_check_keep_object()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static int hwloc_filter_check_keep_object (hwloc_topology_t topology,
      hwloc_obj_t obj 
      )
      +
      +inlinestatic
      +
      + +

      Check whether the given object should be filtered-out.

      +
      Returns
      1 if the object type should be kept, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_filter_check_keep_object_type()

      + +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      static int hwloc_filter_check_keep_object_type (hwloc_topology_t topology,
      hwloc_obj_type_t type 
      )
      +
      +inlinestatic
      +
      + +

      Check whether a non-I/O object type should be filtered-out.

      +

      Cannot be used for I/O objects.

      +
      Returns
      1 if the object type should be kept, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_filter_check_osdev_subtype_important()

      + +
      +
      + + + + + +
      + + + + + + + + +
      static int hwloc_filter_check_osdev_subtype_important (hwloc_obj_osdev_type_t subtype)
      +
      +inlinestatic
      +
      + +

      Check whether the given OS device subtype is important.

      +
      Returns
      1 if important, 0 otherwise.
      + +
      +
      + +

      ◆ hwloc_filter_check_pcidev_subtype_important()

      + +
      +
      + + + + + +
      + + + + + + + + +
      static int hwloc_filter_check_pcidev_subtype_important (unsigned classid)
      +
      +inlinestatic
      +
      + +

      Check whether the given PCI device classid is important.

      +
      Returns
      1 if important, 0 otherwise.
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00247.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00247.html new file mode 100644 index 0000000000..68bc45a515 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00247.html @@ -0,0 +1,296 @@ + + + + + + + +Hardware Locality (hwloc): Components and Plugins: helpers for PCI discovery + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Components and Plugins: helpers for PCI discovery
      +
      +
      + + + + + + + + + + + + + + +

      +Functions

      unsigned hwloc_pcidisc_find_cap (const unsigned char *config, unsigned cap)
       
      int hwloc_pcidisc_find_linkspeed (const unsigned char *config, unsigned offset, float *linkspeed)
       
      hwloc_obj_type_t hwloc_pcidisc_check_bridge_type (unsigned device_class, const unsigned char *config)
       
      int hwloc_pcidisc_find_bridge_buses (unsigned domain, unsigned bus, unsigned dev, unsigned func, unsigned *secondary_busp, unsigned *subordinate_busp, const unsigned char *config)
       
      void hwloc_pcidisc_tree_insert_by_busid (struct hwloc_obj **treep, struct hwloc_obj *obj)
       
      int hwloc_pcidisc_tree_attach (struct hwloc_topology *topology, struct hwloc_obj *tree)
       
      +

      Detailed Description

      +
      Note
      These structures and functions may change when HWLOC_COMPONENT_ABI is modified.
      +

      Function Documentation

      + +

      ◆ hwloc_pcidisc_check_bridge_type()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      hwloc_obj_type_t hwloc_pcidisc_check_bridge_type (unsigned device_class,
      const unsigned char * config 
      )
      +
      + +

      Return the hwloc object type (PCI device or Bridge) for the given class and configuration space.

      +

      This function requires 16 bytes of common configuration header at the beginning of config.

      + +
      +
      + +

      ◆ hwloc_pcidisc_find_bridge_buses()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_pcidisc_find_bridge_buses (unsigned domain,
      unsigned bus,
      unsigned dev,
      unsigned func,
      unsigned * secondary_busp,
      unsigned * subordinate_busp,
      const unsigned char * config 
      )
      +
      + +

      Fills the attributes of the given PCI bridge using the given PCI config space.

      +

      This function requires 32 bytes of common configuration header at the beginning of config.

      +

      Returns -1 and destroys /p obj if bridge fields are invalid.

      + +
      +
      + +

      ◆ hwloc_pcidisc_find_cap()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      unsigned hwloc_pcidisc_find_cap (const unsigned char * config,
      unsigned cap 
      )
      +
      + +

      Return the offset of the given capability in the PCI config space buffer.

      +

      This function requires a 256-bytes config space. Unknown/unavailable bytes should be set to 0xff.

      + +
      +
      + +

      ◆ hwloc_pcidisc_find_linkspeed()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_pcidisc_find_linkspeed (const unsigned char * config,
      unsigned offset,
      float * linkspeed 
      )
      +
      + +

      Fill linkspeed by reading the PCI config space where PCI_CAP_ID_EXP is at position offset.

      +

      Needs 20 bytes of EXP capability block starting at offset in the config space for registers up to link status.

      + +
      +
      + +

      ◆ hwloc_pcidisc_tree_attach()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      int hwloc_pcidisc_tree_attach (struct hwloc_topology * topology,
      struct hwloc_objtree 
      )
      +
      + +

      Add some hostbridges on top of the given tree of PCI objects and attach them to the topology.

      +

      Other backends may lookup PCI objects or localities (for instance to attach OS devices) by using hwloc_pcidisc_find_by_busid() or hwloc_pcidisc_find_busid_parent().

      + +
      +
      + +

      ◆ hwloc_pcidisc_tree_insert_by_busid()

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      void hwloc_pcidisc_tree_insert_by_busid (struct hwloc_obj ** treep,
      struct hwloc_objobj 
      )
      +
      + +

      Insert a PCI object in the given PCI tree by looking at PCI bus IDs.

      +

      If treep points to NULL, the new object is inserted there.

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00248.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00248.html new file mode 100644 index 0000000000..ffee84d2f7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00248.html @@ -0,0 +1,329 @@ + + + + + + + +Hardware Locality (hwloc): Components and Plugins: finding PCI objects during other discoveries + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Components and Plugins: finding PCI objects during other discoveries
      +
      +
      + + + + +

      +Typedefs

      typedef void * hwloc_backend_distances_add_handle_t
       
      + + + + + + + + + + + +

      +Functions

      struct hwloc_objhwloc_pci_find_parent_by_busid (struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
       
      struct hwloc_objhwloc_pci_find_by_busid (struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
       
      hwloc_backend_distances_add_handle_t hwloc_backend_distances_add_create (hwloc_topology_t topology, const char *name, unsigned long kind, unsigned long flags)
       
      int hwloc_backend_distances_add_values (hwloc_topology_t topology, hwloc_backend_distances_add_handle_t handle, unsigned nbobjs, hwloc_obj_t *objs, hwloc_uint64_t *values, unsigned long flags)
       
      int hwloc_backend_distances_add_commit (hwloc_topology_t topology, hwloc_backend_distances_add_handle_t handle, unsigned long flags)
       
      +

      Detailed Description

      +
      Note
      These structures and functions may change when HWLOC_COMPONENT_ABI is modified.
      +

      Typedef Documentation

      + +

      ◆ hwloc_backend_distances_add_handle_t

      + +
      +
      + + + + +
      typedef void* hwloc_backend_distances_add_handle_t
      +
      + +

      Handle to a new distances structure during its addition to the topology.

      + +
      +
      +

      Function Documentation

      + +

      ◆ hwloc_backend_distances_add_commit()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_backend_distances_add_commit (hwloc_topology_t topology,
      hwloc_backend_distances_add_handle_t handle,
      unsigned long flags 
      )
      +
      + +

      Commit a new distances structure.

      +

      This is similar to hwloc_distances_add_commit() but this variant is designed for backend inserting distances during topology discovery.

      + +
      +
      + +

      ◆ hwloc_backend_distances_add_create()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      hwloc_backend_distances_add_handle_t hwloc_backend_distances_add_create (hwloc_topology_t topology,
      const char * name,
      unsigned long kind,
      unsigned long flags 
      )
      +
      + +

      Create a new empty distances structure.

      +

      This is identical to hwloc_distances_add_create() but this variant is designed for backend inserting distances during topology discovery.

      + +
      +
      + +

      ◆ hwloc_backend_distances_add_values()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      int hwloc_backend_distances_add_values (hwloc_topology_t topology,
      hwloc_backend_distances_add_handle_t handle,
      unsigned nbobjs,
      hwloc_obj_tobjs,
      hwloc_uint64_t * values,
      unsigned long flags 
      )
      +
      + +

      Specify the objects and values in a new empty distances structure.

      +

      This is similar to hwloc_distances_add_values() but this variant is designed for backend inserting distances during topology discovery.

      +

      The only semantical difference is that objs and values are not duplicated, but directly attached to the topology. On success, these arrays are given to the core and should not ever be freed by the caller anymore.

      + +
      +
      + +

      ◆ hwloc_pci_find_by_busid()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      struct hwloc_obj* hwloc_pci_find_by_busid (struct hwloc_topology * topology,
      unsigned domain,
      unsigned bus,
      unsigned dev,
      unsigned func 
      )
      +
      + +

      Find the PCI device or bridge matching a PCI bus ID exactly.

      +

      This is useful for adding specific information about some objects based on their PCI id. When it comes to attaching objects based on PCI locality, hwloc_pci_find_parent_by_busid() should be preferred.

      + +
      +
      + +

      ◆ hwloc_pci_find_parent_by_busid()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      struct hwloc_obj* hwloc_pci_find_parent_by_busid (struct hwloc_topology * topology,
      unsigned domain,
      unsigned bus,
      unsigned dev,
      unsigned func 
      )
      +
      + +

      Find the object or a parent of a PCI bus ID.

      +

      When attaching a new object (typically an OS device) whose locality is specified by PCI bus ID, this function returns the PCI object to use as a parent for attaching.

      +

      If the exact PCI device with this bus ID exists, it is returned. Otherwise (for instance if it was filtered out), the function returns another object with similar locality (for instance a parent bridge, or the local CPU Package).

      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00249.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00249.html new file mode 100644 index 0000000000..ade0b2e7eb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00249.html @@ -0,0 +1,113 @@ + + + + + + + +Hardware Locality (hwloc): Netloc API + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      Netloc API
      +
      +
      + + + + +

      +Enumerations

      enum  {
      +  NETLOC_SUCCESS = 0 +, NETLOC_ERROR = -1 +, NETLOC_ERROR_NOTDIR = -2 +, NETLOC_ERROR_NOENT = -3 +,
      +  NETLOC_ERROR_EMPTY = -4 +, NETLOC_ERROR_MULTIPLE = -5 +, NETLOC_ERROR_NOT_IMPL = -6 +, NETLOC_ERROR_EXISTS = -7 +,
      +  NETLOC_ERROR_NOT_FOUND = -8 +, NETLOC_ERROR_MAX = -9 +
      + }
       
      +

      Detailed Description

      +

      Enumeration Type Documentation

      + +

      ◆ anonymous enum

      + +
      +
      + + + + +
      anonymous enum
      +
      +

      Return codes

      + + + + + + + + + + + +
      Enumerator
      NETLOC_SUCCESS 

      Success

      +
      NETLOC_ERROR 

      Error: General condition

      +
      NETLOC_ERROR_NOTDIR 

      Error: URI is not a directory

      +
      NETLOC_ERROR_NOENT 

      Error: URI is invalid, no such entry

      +
      NETLOC_ERROR_EMPTY 

      Error: No networks found

      +
      NETLOC_ERROR_MULTIPLE 

      Error: Multiple matching networks found

      +
      NETLOC_ERROR_NOT_IMPL 

      Error: Interface not implemented

      +
      NETLOC_ERROR_EXISTS 

      Error: If the entry already exists when trying to add to a lookup table

      +
      NETLOC_ERROR_NOT_FOUND 

      Error: No path found

      +
      NETLOC_ERROR_MAX 

      Error: Enum upper bound marker. No errors less than this number Will not be returned externally.

      +
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00253.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00253.html new file mode 100644 index 0000000000..f4be319ce8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00253.html @@ -0,0 +1,687 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_obj Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      hwloc_obj_type_t type
       
      char * subtype
       
      unsigned os_index
       
      char * name
       
      hwloc_uint64_t total_memory
       
      union hwloc_obj_attr_uattr
       
      int depth
       
      unsigned logical_index
       
      struct hwloc_objnext_cousin
       
      struct hwloc_objprev_cousin
       
      struct hwloc_objparent
       
      unsigned sibling_rank
       
      struct hwloc_objnext_sibling
       
      struct hwloc_objprev_sibling
       
      int symmetric_subtree
       
      hwloc_cpuset_t cpuset
       
      hwloc_cpuset_t complete_cpuset
       
      hwloc_nodeset_t nodeset
       
      hwloc_nodeset_t complete_nodeset
       
      struct hwloc_info_sinfos
       
      unsigned infos_count
       
      void * userdata
       
      hwloc_uint64_t gp_index
       
      List and array of normal children below this object (except Memory, I/O and Misc children).
      unsigned arity
       
      struct hwloc_obj ** children
       
      struct hwloc_objfirst_child
       
      struct hwloc_objlast_child
       
      List of Memory children below this object.
      unsigned memory_arity
       
      struct hwloc_objmemory_first_child
       
      List of I/O children below this object.
      unsigned io_arity
       
      struct hwloc_objio_first_child
       
      List of Misc children below this object.
      unsigned misc_arity
       
      struct hwloc_objmisc_first_child
       
      +

      Detailed Description

      +

      Structure of a topology object.

      +

      Applications must not modify any field except hwloc_obj.userdata.

      +

      Field Documentation

      + +

      ◆ arity

      + +
      +
      + + + + +
      unsigned hwloc_obj::arity
      +
      + +

      Number of normal children. Memory, Misc and I/O children are not listed here but rather in their dedicated children list.

      + +
      +
      + +

      ◆ attr

      + +
      +
      + + + + +
      union hwloc_obj_attr_u* hwloc_obj::attr
      +
      + +

      Object type-specific Attributes, may be NULL if no attribute value was found.

      + +
      +
      + +

      ◆ children

      + +
      +
      + + + + +
      struct hwloc_obj** hwloc_obj::children
      +
      + +

      Normal children, children[0 .. arity -1].

      + +
      +
      + +

      ◆ complete_cpuset

      + +
      +
      + + + + +
      hwloc_cpuset_t hwloc_obj::complete_cpuset
      +
      + +

      The complete CPU set of processors of this object,.

      +

      This may include not only the same as the cpuset field, but also some CPUs for which topology information is unknown or incomplete, some offlines CPUs, and the CPUs that are ignored when the HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED flag is not set. Thus no corresponding PU object may be found in the topology, because the precise position is undefined. It is however known that it would be somewhere under this object.

      +
      Note
      Its value must not be changed, hwloc_bitmap_dup() must be used instead.
      + +
      +
      + +

      ◆ complete_nodeset

      + +
      +
      + + + + +
      hwloc_nodeset_t hwloc_obj::complete_nodeset
      +
      + +

      The complete NUMA node set of this object,.

      +

      This may include not only the same as the nodeset field, but also some NUMA nodes for which topology information is unknown or incomplete, some offlines nodes, and the nodes that are ignored when the HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED flag is not set. Thus no corresponding NUMA node object may be found in the topology, because the precise position is undefined. It is however known that it would be somewhere under this object.

      +

      If there are no NUMA nodes in the machine, all the memory is close to this object, so only the first bit is set in complete_nodeset.

      +
      Note
      Its value must not be changed, hwloc_bitmap_dup() must be used instead.
      + +
      +
      + +

      ◆ cpuset

      + +
      +
      + + + + +
      hwloc_cpuset_t hwloc_obj::cpuset
      +
      + +

      CPUs covered by this object.

      +

      This is the set of CPUs for which there are PU objects in the topology under this object, i.e. which are known to be physically contained in this object and known how (the children path between this object and the PU objects).

      +

      If the HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED configuration flag is set, some of these CPUs may be online but not allowed for binding, see hwloc_topology_get_allowed_cpuset().

      +
      Note
      All objects have non-NULL CPU and node sets except Misc and I/O objects.
      +
      +Its value must not be changed, hwloc_bitmap_dup() must be used instead.
      + +
      +
      + +

      ◆ depth

      + +
      +
      + + + + +
      int hwloc_obj::depth
      +
      + +

      Vertical index in the hierarchy.

      +

      For normal objects, this is the depth of the horizontal level that contains this object and its cousins of the same type. If the topology is symmetric, this is equal to the parent depth plus one, and also equal to the number of parent/child links from the root object to here.

      +

      For special objects (NUMA nodes, I/O and Misc) that are not in the main tree, this is a special negative value that corresponds to their dedicated level, see hwloc_get_type_depth() and hwloc_get_type_depth_e. Those special values can be passed to hwloc functions such hwloc_get_nbobjs_by_depth() as usual.

      + +
      +
      + +

      ◆ first_child

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::first_child
      +
      + +

      First normal child.

      + +
      +
      + +

      ◆ gp_index

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_obj::gp_index
      +
      + +

      Global persistent index. Generated by hwloc, unique across the topology (contrary to os_index) and persistent across topology changes (contrary to logical_index). Mostly used internally, but could also be used by application to identify objects.

      + +
      +
      + +

      ◆ infos

      + +
      +
      + + + + +
      struct hwloc_info_s* hwloc_obj::infos
      +
      + +

      Array of stringified info type=name.

      + +
      +
      + +

      ◆ infos_count

      + +
      +
      + + + + +
      unsigned hwloc_obj::infos_count
      +
      + +

      Size of infos array.

      + +
      +
      + +

      ◆ io_arity

      + +
      +
      + + + + +
      unsigned hwloc_obj::io_arity
      +
      + +

      Number of I/O children. These children are listed in io_first_child.

      + +
      +
      + +

      ◆ io_first_child

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::io_first_child
      +
      + +

      First I/O child. Bridges, PCI and OS devices are listed here (io_arity and io_first_child) instead of in the normal children list. See also hwloc_obj_type_is_io().

      + +
      +
      + +

      ◆ last_child

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::last_child
      +
      + +

      Last normal child.

      + +
      +
      + +

      ◆ logical_index

      + +
      +
      + + + + +
      unsigned hwloc_obj::logical_index
      +
      + +

      Horizontal index in the whole list of similar objects, hence guaranteed unique across the entire machine. Could be a "cousin_rank" since it's the rank within the "cousin" list below Note that this index may change when restricting the topology or when inserting a group.

      + +
      +
      + +

      ◆ memory_arity

      + +
      +
      + + + + +
      unsigned hwloc_obj::memory_arity
      +
      + +

      Number of Memory children. These children are listed in memory_first_child.

      + +
      +
      + +

      ◆ memory_first_child

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::memory_first_child
      +
      + +

      First Memory child. NUMA nodes and Memory-side caches are listed here (memory_arity and memory_first_child) instead of in the normal children list. See also hwloc_obj_type_is_memory().

      +

      A memory hierarchy starts from a normal CPU-side object (e.g. Package) and ends with NUMA nodes as leaves. There might exist some memory-side caches between them in the middle of the memory subtree.

      + +
      +
      + +

      ◆ misc_arity

      + +
      +
      + + + + +
      unsigned hwloc_obj::misc_arity
      +
      + +

      Number of Misc children. These children are listed in misc_first_child.

      + +
      +
      + +

      ◆ misc_first_child

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::misc_first_child
      +
      + +

      First Misc child. Misc objects are listed here (misc_arity and misc_first_child) instead of in the normal children list.

      + +
      +
      + +

      ◆ name

      + +
      +
      + + + + +
      char* hwloc_obj::name
      +
      + +

      Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name string is more useful than numerical indexes.

      + +
      +
      + +

      ◆ next_cousin

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::next_cousin
      +
      + +

      Next object of same type and depth.

      + +
      +
      + +

      ◆ next_sibling

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::next_sibling
      +
      + +

      Next object below the same parent (inside the same list of children).

      + +
      +
      + +

      ◆ nodeset

      + +
      +
      + + + + +
      hwloc_nodeset_t hwloc_obj::nodeset
      +
      + +

      NUMA nodes covered by this object or containing this object.

      +

      This is the set of NUMA nodes for which there are NUMA node objects in the topology under or above this object, i.e. which are known to be physically contained in this object or containing it and known how (the children path between this object and the NUMA node objects).

      +

      In the end, these nodes are those that are close to the current object. Function hwloc_get_local_numanode_objs() may be used to list those NUMA nodes more precisely.

      +

      If the HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED configuration flag is set, some of these nodes may be online but not allowed for allocation, see hwloc_topology_get_allowed_nodeset().

      +

      If there are no NUMA nodes in the machine, all the memory is close to this object, so only the first bit may be set in nodeset.

      +
      Note
      All objects have non-NULL CPU and node sets except Misc and I/O objects.
      +
      +Its value must not be changed, hwloc_bitmap_dup() must be used instead.
      + +
      +
      + +

      ◆ os_index

      + +
      +
      + + + + +
      unsigned hwloc_obj::os_index
      +
      + +

      OS-provided physical index number. It is not guaranteed unique across the entire machine, except for PUs and NUMA nodes. Set to HWLOC_UNKNOWN_INDEX if unknown or irrelevant for this object.

      + +
      +
      + +

      ◆ parent

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::parent
      +
      + +

      Parent, NULL if root (Machine object)

      + +
      +
      + +

      ◆ prev_cousin

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::prev_cousin
      +
      + +

      Previous object of same type and depth.

      + +
      +
      + +

      ◆ prev_sibling

      + +
      +
      + + + + +
      struct hwloc_obj* hwloc_obj::prev_sibling
      +
      + +

      Previous object below the same parent (inside the same list of children).

      + +
      +
      + +

      ◆ sibling_rank

      + +
      +
      + + + + +
      unsigned hwloc_obj::sibling_rank
      +
      + +

      Index in parent's children[] array. Or the index in parent's Memory, I/O or Misc children list.

      + +
      +
      + +

      ◆ subtype

      + +
      +
      + + + + +
      char* hwloc_obj::subtype
      +
      + +

      Subtype string to better describe the type field.

      + +
      +
      + +

      ◆ symmetric_subtree

      + +
      +
      + + + + +
      int hwloc_obj::symmetric_subtree
      +
      + +

      Set if the subtree of normal objects below this object is symmetric, which means all normal children and their children have identical subtrees.

      +

      Memory, I/O and Misc children are ignored.

      +

      If set in the topology root object, lstopo may export the topology as a synthetic string.

      + +
      +
      + +

      ◆ total_memory

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_obj::total_memory
      +
      + +

      Total memory (in bytes) in NUMA nodes below this object.

      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_obj_type_t hwloc_obj::type
      +
      + +

      Type of object.

      + +
      +
      + +

      ◆ userdata

      + +
      +
      + + + + +
      void* hwloc_obj::userdata
      +
      + +

      Application-given private data pointer, initialized to NULL, use it as you wish. See hwloc_topology_set_userdata_export_callback() in hwloc/export.h if you wish to export this field to XML.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00257.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00257.html new file mode 100644 index 0000000000..99c667caea --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00257.html @@ -0,0 +1,178 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj_attr_u Union Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_obj_attr_u Union Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + + + + + +

      +Data Structures

      struct  hwloc_bridge_attr_s
       
      struct  hwloc_cache_attr_s
       
      struct  hwloc_group_attr_s
       
      struct  hwloc_numanode_attr_s
       
      struct  hwloc_osdev_attr_s
       
      struct  hwloc_pcidev_attr_s
       
      + + + + + + + + + + + + + +

      +Data Fields

      struct hwloc_obj_attr_u::hwloc_numanode_attr_s numanode
       
      struct hwloc_obj_attr_u::hwloc_cache_attr_s cache
       
      struct hwloc_obj_attr_u::hwloc_group_attr_s group
       
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
       
      struct hwloc_obj_attr_u::hwloc_bridge_attr_s bridge
       
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
       
      +

      Detailed Description

      +

      Object type-specific Attributes.

      +

      Field Documentation

      + +

      ◆ bridge

      + +
      +
      + + + + +
      struct hwloc_obj_attr_u::hwloc_bridge_attr_s hwloc_obj_attr_u::bridge
      +
      + +
      +
      + +

      ◆ cache

      + +
      +
      + + + + +
      struct hwloc_obj_attr_u::hwloc_cache_attr_s hwloc_obj_attr_u::cache
      +
      + +
      +
      + +

      ◆ group

      + +
      +
      + + + + +
      struct hwloc_obj_attr_u::hwloc_group_attr_s hwloc_obj_attr_u::group
      +
      + +
      +
      + +

      ◆ numanode

      + +
      +
      + + + + +
      struct hwloc_obj_attr_u::hwloc_numanode_attr_s hwloc_obj_attr_u::numanode
      +
      + +
      +
      + +

      ◆ osdev

      + +
      +
      + + + + +
      struct hwloc_obj_attr_u::hwloc_osdev_attr_s hwloc_obj_attr_u::osdev
      +
      + +
      +
      + +

      ◆ pcidev

      + +
      +
      + + + + +
      struct hwloc_obj_attr_u::hwloc_pcidev_attr_s hwloc_obj_attr_u::pcidev
      +
      + +
      +
      +
      The documentation for this union was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00261.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00261.html new file mode 100644 index 0000000000..df45f793fb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00261.html @@ -0,0 +1,128 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj_attr_u::hwloc_numanode_attr_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_obj_attr_u::hwloc_numanode_attr_s Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + +

      +Data Structures

      struct  hwloc_memory_page_type_s
       
      + + + + + + + +

      +Data Fields

      hwloc_uint64_t local_memory
       
      unsigned page_types_len
       
      struct hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_spage_types
       
      +

      Detailed Description

      +

      NUMA node-specific Object Attributes.

      +

      Field Documentation

      + +

      ◆ local_memory

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_obj_attr_u::hwloc_numanode_attr_s::local_memory
      +
      + +

      Local memory (in bytes)

      + +
      +
      + +

      ◆ page_types

      + +
      +
      + + + + +
      struct hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s * hwloc_obj_attr_u::hwloc_numanode_attr_s::page_types
      +
      + +
      +
      + +

      ◆ page_types_len

      + +
      +
      + + + + +
      unsigned hwloc_obj_attr_u::hwloc_numanode_attr_s::page_types_len
      +
      + +

      Size of array page_types.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00265.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00265.html new file mode 100644 index 0000000000..eecd45a3b5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00265.html @@ -0,0 +1,107 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + +

      +Data Fields

      hwloc_uint64_t size
       
      hwloc_uint64_t count
       
      +

      Detailed Description

      +

      Array of local memory page types, NULL if no local memory and page_types is 0.

      +

      The array is sorted by increasing size fields. It contains page_types_len slots.

      +

      Field Documentation

      + +

      ◆ count

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s::count
      +
      + +

      Number of pages of this size.

      + +
      +
      + +

      ◆ size

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s::size
      +
      + +

      Size of pages.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00269.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00269.html new file mode 100644 index 0000000000..031c11015a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00269.html @@ -0,0 +1,160 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj_attr_u::hwloc_cache_attr_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_obj_attr_u::hwloc_cache_attr_s Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + + + +

      +Data Fields

      hwloc_uint64_t size
       
      unsigned depth
       
      unsigned linesize
       
      int associativity
       
      hwloc_obj_cache_type_t type
       
      +

      Detailed Description

      +

      Cache-specific Object Attributes.

      +

      Field Documentation

      + +

      ◆ associativity

      + +
      +
      + + + + +
      int hwloc_obj_attr_u::hwloc_cache_attr_s::associativity
      +
      + +

      Ways of associativity, -1 if fully associative, 0 if unknown.

      + +
      +
      + +

      ◆ depth

      + +
      +
      + + + + +
      unsigned hwloc_obj_attr_u::hwloc_cache_attr_s::depth
      +
      + +

      Depth of cache (e.g., L1, L2, ...etc.)

      + +
      +
      + +

      ◆ linesize

      + +
      +
      + + + + +
      unsigned hwloc_obj_attr_u::hwloc_cache_attr_s::linesize
      +
      + +

      Cache-line size in bytes. 0 if unknown.

      + +
      +
      + +

      ◆ size

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_obj_attr_u::hwloc_cache_attr_s::size
      +
      + +

      Size of cache in bytes.

      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_obj_cache_type_t hwloc_obj_attr_u::hwloc_cache_attr_s::type
      +
      + +

      Cache type.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00273.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00273.html new file mode 100644 index 0000000000..4947b77b5d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00273.html @@ -0,0 +1,142 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj_attr_u::hwloc_group_attr_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_obj_attr_u::hwloc_group_attr_s Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + +

      +Data Fields

      unsigned depth
       
      unsigned kind
       
      unsigned subkind
       
      unsigned char dont_merge
       
      +

      Detailed Description

      +

      Group-specific Object Attributes.

      +

      Field Documentation

      + +

      ◆ depth

      + +
      +
      + + + + +
      unsigned hwloc_obj_attr_u::hwloc_group_attr_s::depth
      +
      + +

      Depth of group object. It may change if intermediate Group objects are added.

      + +
      +
      + +

      ◆ dont_merge

      + +
      +
      + + + + +
      unsigned char hwloc_obj_attr_u::hwloc_group_attr_s::dont_merge
      +
      + +

      Flag preventing groups from being automatically merged with identical parent or children.

      + +
      +
      + +

      ◆ kind

      + +
      +
      + + + + +
      unsigned hwloc_obj_attr_u::hwloc_group_attr_s::kind
      +
      + +

      Internally-used kind of group.

      + +
      +
      + +

      ◆ subkind

      + +
      +
      + + + + +
      unsigned hwloc_obj_attr_u::hwloc_group_attr_s::subkind
      +
      + +

      Internally-used subkind to distinguish different levels of groups with same kind.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00277.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00277.html new file mode 100644 index 0000000000..5d3071fd39 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00277.html @@ -0,0 +1,246 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj_attr_u::hwloc_pcidev_attr_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_obj_attr_u::hwloc_pcidev_attr_s Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      unsigned short domain
       
      unsigned char bus
       
      unsigned char dev
       
      unsigned char func
       
      unsigned short class_id
       
      unsigned short vendor_id
       
      unsigned short device_id
       
      unsigned short subvendor_id
       
      unsigned short subdevice_id
       
      unsigned char revision
       
      float linkspeed
       
      +

      Detailed Description

      +

      PCI Device specific Object Attributes.

      +

      Field Documentation

      + +

      ◆ bus

      + +
      +
      + + + + +
      unsigned char hwloc_obj_attr_u::hwloc_pcidev_attr_s::bus
      +
      + +
      +
      + +

      ◆ class_id

      + +
      +
      + + + + +
      unsigned short hwloc_obj_attr_u::hwloc_pcidev_attr_s::class_id
      +
      + +
      +
      + +

      ◆ dev

      + +
      +
      + + + + +
      unsigned char hwloc_obj_attr_u::hwloc_pcidev_attr_s::dev
      +
      + +
      +
      + +

      ◆ device_id

      + +
      +
      + + + + +
      unsigned short hwloc_obj_attr_u::hwloc_pcidev_attr_s::device_id
      +
      + +
      +
      + +

      ◆ domain

      + +
      +
      + + + + +
      unsigned short hwloc_obj_attr_u::hwloc_pcidev_attr_s::domain
      +
      + +
      +
      + +

      ◆ func

      + +
      +
      + + + + +
      unsigned char hwloc_obj_attr_u::hwloc_pcidev_attr_s::func
      +
      + +
      +
      + +

      ◆ linkspeed

      + +
      +
      + + + + +
      float hwloc_obj_attr_u::hwloc_pcidev_attr_s::linkspeed
      +
      + +
      +
      + +

      ◆ revision

      + +
      +
      + + + + +
      unsigned char hwloc_obj_attr_u::hwloc_pcidev_attr_s::revision
      +
      + +
      +
      + +

      ◆ subdevice_id

      + +
      +
      + + + + +
      unsigned short hwloc_obj_attr_u::hwloc_pcidev_attr_s::subdevice_id
      +
      + +
      +
      + +

      ◆ subvendor_id

      + +
      +
      + + + + +
      unsigned short hwloc_obj_attr_u::hwloc_pcidev_attr_s::subvendor_id
      +
      + +
      +
      + +

      ◆ vendor_id

      + +
      +
      + + + + +
      unsigned short hwloc_obj_attr_u::hwloc_pcidev_attr_s::vendor_id
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00281.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00281.html new file mode 100644 index 0000000000..f3d51d0610 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00281.html @@ -0,0 +1,233 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj_attr_u::hwloc_bridge_attr_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_obj_attr_u::hwloc_bridge_attr_s Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      union {
         struct hwloc_pcidev_attr_s   pci
       
      upstream
       
      hwloc_obj_bridge_type_t upstream_type
       
      union {
         struct {
            unsigned short   domain
       
            unsigned char   secondary_bus
       
            unsigned char   subordinate_bus
       
         }   pci
       
      downstream
       
      hwloc_obj_bridge_type_t downstream_type
       
      unsigned depth
       
      +

      Detailed Description

      +

      Bridge specific Object Attributes.

      +

      Field Documentation

      + +

      ◆ depth

      + +
      +
      + + + + +
      unsigned hwloc_obj_attr_u::hwloc_bridge_attr_s::depth
      +
      + +
      +
      + +

      ◆ domain

      + +
      +
      + + + + +
      unsigned short hwloc_obj_attr_u::hwloc_bridge_attr_s::domain
      +
      + +
      +
      + +

      ◆ 

      + +
      +
      + + + + +
      union { ... } hwloc_obj_attr_u::hwloc_bridge_attr_s::downstream
      +
      + +
      +
      + +

      ◆ downstream_type

      + +
      +
      + + + + +
      hwloc_obj_bridge_type_t hwloc_obj_attr_u::hwloc_bridge_attr_s::downstream_type
      +
      + +
      +
      + +

      ◆  [1/2]

      + +
      +
      + + + + +
      struct { ... } hwloc_obj_attr_u::hwloc_bridge_attr_s::pci
      +
      + +
      +
      + +

      ◆ pci [2/2]

      + +
      +
      + + + + +
      struct hwloc_pcidev_attr_s hwloc_obj_attr_u::hwloc_bridge_attr_s::pci
      +
      + +
      +
      + +

      ◆ secondary_bus

      + +
      +
      + + + + +
      unsigned char hwloc_obj_attr_u::hwloc_bridge_attr_s::secondary_bus
      +
      + +
      +
      + +

      ◆ subordinate_bus

      + +
      +
      + + + + +
      unsigned char hwloc_obj_attr_u::hwloc_bridge_attr_s::subordinate_bus
      +
      + +
      +
      + +

      ◆ 

      + +
      +
      + + + + +
      union { ... } hwloc_obj_attr_u::hwloc_bridge_attr_s::upstream
      +
      + +
      +
      + +

      ◆ upstream_type

      + +
      +
      + + + + +
      hwloc_obj_bridge_type_t hwloc_obj_attr_u::hwloc_bridge_attr_s::upstream_type
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00297.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00297.html new file mode 100644 index 0000000000..c99ae83af8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00297.html @@ -0,0 +1,86 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_obj_attr_u::hwloc_osdev_attr_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_obj_attr_u::hwloc_osdev_attr_s Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + +

      +Data Fields

      hwloc_obj_osdev_type_t type
       
      +

      Detailed Description

      +

      OS Device specific Object Attributes.

      +

      Field Documentation

      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_obj_osdev_type_t hwloc_obj_attr_u::hwloc_osdev_attr_s::type
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00301.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00301.html new file mode 100644 index 0000000000..d52e50dab8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00301.html @@ -0,0 +1,103 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_info_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_info_s Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + +

      +Data Fields

      char * name
       
      char * value
       
      +

      Detailed Description

      +

      Field Documentation

      + +

      ◆ name

      + +
      +
      + + + + +
      char* hwloc_info_s::name
      +
      + +

      Info name.

      + +
      +
      + +

      ◆ value

      + +
      +
      + + + + +
      char* hwloc_info_s::value
      +
      + +

      Info value.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00305.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00305.html new file mode 100644 index 0000000000..e089ca967c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00305.html @@ -0,0 +1,174 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_discovery_support Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_topology_discovery_support Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + + + + + +

      +Data Fields

      unsigned char pu
       
      unsigned char numa
       
      unsigned char numa_memory
       
      unsigned char disallowed_pu
       
      unsigned char disallowed_numa
       
      unsigned char cpukind_efficiency
       
      +

      Detailed Description

      +

      Flags describing actual discovery support for this topology.

      +

      Field Documentation

      + +

      ◆ cpukind_efficiency

      + +
      +
      + + + + +
      unsigned char hwloc_topology_discovery_support::cpukind_efficiency
      +
      + +

      Detecting the efficiency of CPU kinds is supported, see Kinds of CPU cores.

      + +
      +
      + +

      ◆ disallowed_numa

      + +
      +
      + + + + +
      unsigned char hwloc_topology_discovery_support::disallowed_numa
      +
      + +

      Detecting and identifying NUMA nodes that are not available to the current process is supported.

      + +
      +
      + +

      ◆ disallowed_pu

      + +
      +
      + + + + +
      unsigned char hwloc_topology_discovery_support::disallowed_pu
      +
      + +

      Detecting and identifying PU objects that are not available to the current process is supported.

      + +
      +
      + +

      ◆ numa

      + +
      +
      + + + + +
      unsigned char hwloc_topology_discovery_support::numa
      +
      + +

      Detecting the number of NUMA nodes is supported.

      + +
      +
      + +

      ◆ numa_memory

      + +
      +
      + + + + +
      unsigned char hwloc_topology_discovery_support::numa_memory
      +
      + +

      Detecting the amount of memory in NUMA nodes is supported.

      + +
      +
      + +

      ◆ pu

      + +
      +
      + + + + +
      unsigned char hwloc_topology_discovery_support::pu
      +
      + +

      Detecting the number of PU objects is supported.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00309.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00309.html new file mode 100644 index 0000000000..526685ca5f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00309.html @@ -0,0 +1,254 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_cpubind_support Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_topology_cpubind_support Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      unsigned char set_thisproc_cpubind
       
      unsigned char get_thisproc_cpubind
       
      unsigned char set_proc_cpubind
       
      unsigned char get_proc_cpubind
       
      unsigned char set_thisthread_cpubind
       
      unsigned char get_thisthread_cpubind
       
      unsigned char set_thread_cpubind
       
      unsigned char get_thread_cpubind
       
      unsigned char get_thisproc_last_cpu_location
       
      unsigned char get_proc_last_cpu_location
       
      unsigned char get_thisthread_last_cpu_location
       
      +

      Detailed Description

      +

      Flags describing actual PU binding support for this topology.

      +

      A flag may be set even if the feature isn't supported in all cases (e.g. binding to random sets of non-contiguous objects).

      +

      Field Documentation

      + +

      ◆ get_proc_cpubind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::get_proc_cpubind
      +
      +

      Getting the binding of a whole given process is supported.

      + +
      +
      + +

      ◆ get_proc_last_cpu_location

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::get_proc_last_cpu_location
      +
      +

      Getting the last processors where a whole process ran is supported

      + +
      +
      + +

      ◆ get_thisproc_cpubind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::get_thisproc_cpubind
      +
      +

      Getting the binding of the whole current process is supported.

      + +
      +
      + +

      ◆ get_thisproc_last_cpu_location

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::get_thisproc_last_cpu_location
      +
      +

      Getting the last processors where the whole current process ran is supported

      + +
      +
      + +

      ◆ get_thisthread_cpubind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::get_thisthread_cpubind
      +
      +

      Getting the binding of the current thread only is supported.

      + +
      +
      + +

      ◆ get_thisthread_last_cpu_location

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::get_thisthread_last_cpu_location
      +
      +

      Getting the last processors where the current thread ran is supported

      + +
      +
      + +

      ◆ get_thread_cpubind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::get_thread_cpubind
      +
      +

      Getting the binding of a given thread only is supported.

      + +
      +
      + +

      ◆ set_proc_cpubind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::set_proc_cpubind
      +
      +

      Binding a whole given process is supported.

      + +
      +
      + +

      ◆ set_thisproc_cpubind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::set_thisproc_cpubind
      +
      +

      Binding the whole current process is supported.

      + +
      +
      + +

      ◆ set_thisthread_cpubind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::set_thisthread_cpubind
      +
      +

      Binding the current thread only is supported.

      + +
      +
      + +

      ◆ set_thread_cpubind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_cpubind_support::set_thread_cpubind
      +
      +

      Binding a given thread only is supported.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00313.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00313.html new file mode 100644 index 0000000000..e4bb1b8776 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00313.html @@ -0,0 +1,322 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_membind_support Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_topology_membind_support Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      unsigned char set_thisproc_membind
       
      unsigned char get_thisproc_membind
       
      unsigned char set_proc_membind
       
      unsigned char get_proc_membind
       
      unsigned char set_thisthread_membind
       
      unsigned char get_thisthread_membind
       
      unsigned char set_area_membind
       
      unsigned char get_area_membind
       
      unsigned char alloc_membind
       
      unsigned char firsttouch_membind
       
      unsigned char bind_membind
       
      unsigned char interleave_membind
       
      unsigned char nexttouch_membind
       
      unsigned char migrate_membind
       
      unsigned char get_area_memlocation
       
      +

      Detailed Description

      +

      Flags describing actual memory binding support for this topology.

      +

      A flag may be set even if the feature isn't supported in all cases (e.g. binding to random sets of non-contiguous objects).

      +

      Field Documentation

      + +

      ◆ alloc_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::alloc_membind
      +
      +

      Allocating a bound memory area is supported.

      + +
      +
      + +

      ◆ bind_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::bind_membind
      +
      +

      Bind policy is supported.

      + +
      +
      + +

      ◆ firsttouch_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::firsttouch_membind
      +
      +

      First-touch policy is supported.

      + +
      +
      + +

      ◆ get_area_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::get_area_membind
      +
      +

      Getting the binding of a given memory area is supported.

      + +
      +
      + +

      ◆ get_area_memlocation

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::get_area_memlocation
      +
      +

      Getting the last NUMA nodes where a memory area was allocated is supported

      + +
      +
      + +

      ◆ get_proc_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::get_proc_membind
      +
      +

      Getting the binding of a whole given process is supported.

      + +
      +
      + +

      ◆ get_thisproc_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::get_thisproc_membind
      +
      +

      Getting the binding of the whole current process is supported.

      + +
      +
      + +

      ◆ get_thisthread_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::get_thisthread_membind
      +
      +

      Getting the binding of the current thread only is supported.

      + +
      +
      + +

      ◆ interleave_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::interleave_membind
      +
      +

      Interleave policy is supported.

      + +
      +
      + +

      ◆ migrate_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::migrate_membind
      +
      +

      Migration flags is supported.

      + +
      +
      + +

      ◆ nexttouch_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::nexttouch_membind
      +
      +

      Next-touch migration policy is supported.

      + +
      +
      + +

      ◆ set_area_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::set_area_membind
      +
      +

      Binding a given memory area is supported.

      + +
      +
      + +

      ◆ set_proc_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::set_proc_membind
      +
      +

      Binding a whole given process is supported.

      + +
      +
      + +

      ◆ set_thisproc_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::set_thisproc_membind
      +
      +

      Binding the whole current process is supported.

      + +
      +
      + +

      ◆ set_thisthread_membind

      + +
      +
      + + + + +
      unsigned char hwloc_topology_membind_support::set_thisthread_membind
      +
      +

      Binding the current thread only is supported.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00317.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00317.html new file mode 100644 index 0000000000..0ef2a089d7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00317.html @@ -0,0 +1,83 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_misc_support Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_topology_misc_support Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + +

      +Data Fields

      unsigned char imported_support
       
      +

      Detailed Description

      +

      Flags describing miscellaneous features.

      +

      Field Documentation

      + +

      ◆ imported_support

      + +
      +
      + + + + +
      unsigned char hwloc_topology_misc_support::imported_support
      +
      +

      Support was imported when importing another topology, see HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00321.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00321.html new file mode 100644 index 0000000000..443973ec8c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00321.html @@ -0,0 +1,131 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_support Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_topology_support Struct Reference
      +
      +
      + +

      #include <hwloc.h>

      + + + + + + + + + + +

      +Data Fields

      struct hwloc_topology_discovery_supportdiscovery
       
      struct hwloc_topology_cpubind_supportcpubind
       
      struct hwloc_topology_membind_supportmembind
       
      struct hwloc_topology_misc_supportmisc
       
      +

      Detailed Description

      +

      Set of flags describing actual support for this topology.

      +

      This is retrieved with hwloc_topology_get_support() and will be valid until the topology object is destroyed. Note: the values are correct only after discovery.

      +

      Field Documentation

      + +

      ◆ cpubind

      + +
      +
      + + + + +
      struct hwloc_topology_cpubind_support* hwloc_topology_support::cpubind
      +
      + +
      +
      + +

      ◆ discovery

      + +
      +
      + + + + +
      struct hwloc_topology_discovery_support* hwloc_topology_support::discovery
      +
      + +
      +
      + +

      ◆ membind

      + +
      +
      + + + + +
      struct hwloc_topology_membind_support* hwloc_topology_support::membind
      +
      + +
      +
      + +

      ◆ misc

      + +
      +
      + + + + +
      struct hwloc_topology_misc_support* hwloc_topology_support::misc
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00325.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00325.html new file mode 100644 index 0000000000..e8a4058b3e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00325.html @@ -0,0 +1,142 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_distances_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_distances_s Struct Reference
      +
      +
      + +

      #include <distances.h>

      + + + + + + + + + + +

      +Data Fields

      unsigned nbobjs
       
      hwloc_obj_tobjs
       
      unsigned long kind
       
      hwloc_uint64_t * values
       
      +

      Detailed Description

      +

      Matrix of distances between a set of objects.

      +

      This matrix often contains latencies between NUMA nodes (as reported in the System Locality Distance Information Table (SLIT) in the ACPI specification), which may or may not be physically accurate. It corresponds to the latency for accessing the memory of one node from a core in another node. The corresponding kind is HWLOC_DISTANCES_KIND_FROM_OS | HWLOC_DISTANCES_KIND_FROM_USER. The name of this distances structure is "NUMALatency". Others distance structures include and "XGMIBandwidth", "XGMIHops" and "NVLinkBandwidth".

      +

      The matrix may also contain bandwidths between random sets of objects, possibly provided by the user, as specified in the kind attribute.

      +

      Pointers objs and values should not be replaced, reallocated, freed, etc. However callers are allowed to modify kind as well as the contents of objs and values arrays. For instance, if there is a single NUMA node per Package, hwloc_get_obj_with_same_locality() may be used to convert between them and replace NUMA nodes in the objs array with the corresponding Packages. See also hwloc_distances_transform() for applying some transformations to the structure.

      +

      Field Documentation

      + +

      ◆ kind

      + +
      +
      + + + + +
      unsigned long hwloc_distances_s::kind
      +
      + +

      OR'ed set of hwloc_distances_kind_e.

      + +
      +
      + +

      ◆ nbobjs

      + +
      +
      + + + + +
      unsigned hwloc_distances_s::nbobjs
      +
      + +

      Number of objects described by the distance matrix.

      + +
      +
      + +

      ◆ objs

      + +
      +
      + + + + +
      hwloc_obj_t* hwloc_distances_s::objs
      +
      + +

      Array of objects described by the distance matrix. These objects are not in any particular order, see hwloc_distances_obj_index() and hwloc_distances_obj_pair_values() for easy ways to find objects in this array and their corresponding values.

      + +
      +
      + +

      ◆ values

      + +
      +
      + + + + +
      hwloc_uint64_t* hwloc_distances_s::values
      +
      + +

      Matrix of distances between objects, stored as a one-dimension array.

      +

      Distance from i-th to j-th object is stored in slot i*nbobjs+j. The meaning of the value depends on the kind attribute.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00329.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00329.html new file mode 100644 index 0000000000..f2952d5c96 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00329.html @@ -0,0 +1,106 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_location Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      + +
      + +

      #include <memattrs.h>

      + + + + +

      +Data Structures

      union  hwloc_location_u
       
      + + + + + +

      +Data Fields

      enum hwloc_location_type_e type
       
      union hwloc_location::hwloc_location_u location
       
      +

      Detailed Description

      +

      Where to measure attributes from.

      +

      Field Documentation

      + +

      ◆ location

      + +
      +
      + + + + +
      union hwloc_location::hwloc_location_u hwloc_location::location
      +
      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      enum hwloc_location_type_e hwloc_location::type
      +
      + +

      Type of location.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00333.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00333.html new file mode 100644 index 0000000000..d10816916f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00333.html @@ -0,0 +1,106 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_location::hwloc_location_u Union Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_location::hwloc_location_u Union Reference
      +
      +
      + +

      #include <memattrs.h>

      + + + + + + +

      +Data Fields

      hwloc_cpuset_t cpuset
       
      hwloc_obj_t object
       
      +

      Detailed Description

      +

      Actual location.

      +

      Field Documentation

      + +

      ◆ cpuset

      + +
      +
      + + + + +
      hwloc_cpuset_t hwloc_location::hwloc_location_u::cpuset
      +
      + +

      Location as a cpuset, when the location type is HWLOC_LOCATION_TYPE_CPUSET.

      + +
      +
      + +

      ◆ object

      + +
      +
      + + + + +
      hwloc_obj_t hwloc_location::hwloc_location_u::object
      +
      + +

      Location as an object, when the location type is HWLOC_LOCATION_TYPE_OBJECT.

      + +
      +
      +
      The documentation for this union was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00337.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00337.html new file mode 100644 index 0000000000..2a03d303da --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00337.html @@ -0,0 +1,196 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_cl_device_topology_amd Union Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_cl_device_topology_amd Union Reference
      +
      +
      + +

      #include <opencl.h>

      + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      struct {
         cl_uint   type
       
         cl_uint   data [5]
       
      raw
       
      struct {
         cl_uint   type
       
         cl_char   unused [17]
       
         cl_char   bus
       
         cl_char   device
       
         cl_char   function
       
      pcie
       
      +

      Field Documentation

      + +

      ◆ bus

      + +
      +
      + + + + +
      cl_char hwloc_cl_device_topology_amd::bus
      +
      + +
      +
      + +

      ◆ data

      + +
      +
      + + + + +
      cl_uint hwloc_cl_device_topology_amd::data[5]
      +
      + +
      +
      + +

      ◆ device

      + +
      +
      + + + + +
      cl_char hwloc_cl_device_topology_amd::device
      +
      + +
      +
      + +

      ◆ function

      + +
      +
      + + + + +
      cl_char hwloc_cl_device_topology_amd::function
      +
      + +
      +
      + +

      ◆ 

      + +
      +
      + + + + +
      struct { ... } hwloc_cl_device_topology_amd::pcie
      +
      + +
      +
      + +

      ◆ 

      + +
      +
      + + + + +
      struct { ... } hwloc_cl_device_topology_amd::raw
      +
      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      cl_uint hwloc_cl_device_topology_amd::type
      +
      + +
      +
      + +

      ◆ unused

      + +
      +
      + + + + +
      cl_char hwloc_cl_device_topology_amd::unused[17]
      +
      + +
      +
      +
      The documentation for this union was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00349.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00349.html new file mode 100644 index 0000000000..18f715b036 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00349.html @@ -0,0 +1,124 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_diff_obj_attr_u Union Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_topology_diff_obj_attr_u Union Reference
      +
      +
      + +

      #include <diff.h>

      + + + + + + + + +

      +Data Structures

      struct  hwloc_topology_diff_obj_attr_generic_s
       
      struct  hwloc_topology_diff_obj_attr_string_s
       
      struct  hwloc_topology_diff_obj_attr_uint64_s
       
      + + + + + + + +

      +Data Fields

      struct hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_generic_s generic
       
      struct hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s uint64
       
      struct hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s string
       
      +

      Detailed Description

      +

      One object attribute difference.

      +

      Field Documentation

      + +

      ◆ generic

      + +
      +
      + + + + +
      struct hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_generic_s hwloc_topology_diff_obj_attr_u::generic
      +
      + +
      +
      + +

      ◆ string

      + +
      +
      + + + + +
      struct hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s hwloc_topology_diff_obj_attr_u::string
      +
      + +
      +
      + +

      ◆ uint64

      + +
      +
      + + + + +
      struct hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s hwloc_topology_diff_obj_attr_u::uint64
      +
      + +
      +
      +
      The documentation for this union was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00353.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00353.html new file mode 100644 index 0000000000..e2e2802e76 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00353.html @@ -0,0 +1,84 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_generic_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_generic_s Struct Reference
      +
      +
      + +

      #include <diff.h>

      + + + + +

      +Data Fields

      hwloc_topology_diff_obj_attr_type_t type
       
      +

      Field Documentation

      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_topology_diff_obj_attr_type_t hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_generic_s::type
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00357.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00357.html new file mode 100644 index 0000000000..aff382a620 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00357.html @@ -0,0 +1,134 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s Struct Reference
      +
      +
      + +

      #include <diff.h>

      + + + + + + + + + + +

      +Data Fields

      hwloc_topology_diff_obj_attr_type_t type
       
      hwloc_uint64_t index
       
      hwloc_uint64_t oldvalue
       
      hwloc_uint64_t newvalue
       
      +

      Detailed Description

      +

      Integer attribute modification with an optional index.

      +

      Field Documentation

      + +

      ◆ index

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s::index
      +
      + +
      +
      + +

      ◆ newvalue

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s::newvalue
      +
      + +
      +
      + +

      ◆ oldvalue

      + +
      +
      + + + + +
      hwloc_uint64_t hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s::oldvalue
      +
      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_topology_diff_obj_attr_type_t hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_uint64_s::type
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00361.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00361.html new file mode 100644 index 0000000000..2d1294de1c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00361.html @@ -0,0 +1,134 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s Struct Reference
      +
      +
      + +

      #include <diff.h>

      + + + + + + + + + + +

      +Data Fields

      hwloc_topology_diff_obj_attr_type_t type
       
      char * name
       
      char * oldvalue
       
      char * newvalue
       
      +

      Detailed Description

      +

      String attribute modification with an optional name.

      +

      Field Documentation

      + +

      ◆ name

      + +
      +
      + + + + +
      char* hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s::name
      +
      + +
      +
      + +

      ◆ newvalue

      + +
      +
      + + + + +
      char* hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s::newvalue
      +
      + +
      +
      + +

      ◆ oldvalue

      + +
      +
      + + + + +
      char* hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s::oldvalue
      +
      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_topology_diff_obj_attr_type_t hwloc_topology_diff_obj_attr_u::hwloc_topology_diff_obj_attr_string_s::type
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00365.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00365.html new file mode 100644 index 0000000000..2df8122b70 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00365.html @@ -0,0 +1,124 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_diff_u Union Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_topology_diff_u Union Reference
      +
      +
      + +

      #include <diff.h>

      + + + + + + + + +

      +Data Structures

      struct  hwloc_topology_diff_generic_s
       
      struct  hwloc_topology_diff_obj_attr_s
       
      struct  hwloc_topology_diff_too_complex_s
       
      + + + + + + + +

      +Data Fields

      struct hwloc_topology_diff_u::hwloc_topology_diff_generic_s generic
       
      struct hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s obj_attr
       
      struct hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s too_complex
       
      +

      Detailed Description

      +

      One element of a difference list between two topologies.

      +

      Field Documentation

      + +

      ◆ generic

      + +
      +
      + + + + +
      struct hwloc_topology_diff_u::hwloc_topology_diff_generic_s hwloc_topology_diff_u::generic
      +
      + +
      +
      + +

      ◆ obj_attr

      + +
      +
      + + + + +
      struct hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s hwloc_topology_diff_u::obj_attr
      +
      + +
      +
      + +

      ◆ too_complex

      + +
      +
      + + + + +
      struct hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s hwloc_topology_diff_u::too_complex
      +
      + +
      +
      +
      The documentation for this union was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00369.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00369.html new file mode 100644 index 0000000000..cf151ea5c5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00369.html @@ -0,0 +1,100 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_diff_u::hwloc_topology_diff_generic_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_topology_diff_u::hwloc_topology_diff_generic_s Struct Reference
      +
      +
      + +

      #include <diff.h>

      + + + + + + +

      +Data Fields

      hwloc_topology_diff_type_t type
       
      union hwloc_topology_diff_unext
       
      +

      Field Documentation

      + +

      ◆ next

      + +
      +
      + + + + +
      union hwloc_topology_diff_u* hwloc_topology_diff_u::hwloc_topology_diff_generic_s::next
      +
      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_topology_diff_type_t hwloc_topology_diff_u::hwloc_topology_diff_generic_s::type
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00373.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00373.html new file mode 100644 index 0000000000..3e0a827fae --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00373.html @@ -0,0 +1,148 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s Struct Reference
      +
      +
      + +

      #include <diff.h>

      + + + + + + + + + + + + +

      +Data Fields

      hwloc_topology_diff_type_t type
       
      union hwloc_topology_diff_unext
       
      int obj_depth
       
      unsigned obj_index
       
      union hwloc_topology_diff_obj_attr_u diff
       
      +

      Field Documentation

      + +

      ◆ diff

      + +
      +
      + + + + +
      union hwloc_topology_diff_obj_attr_u hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s::diff
      +
      + +
      +
      + +

      ◆ next

      + +
      +
      + + + + +
      union hwloc_topology_diff_u* hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s::next
      +
      + +
      +
      + +

      ◆ obj_depth

      + +
      +
      + + + + +
      int hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s::obj_depth
      +
      + +
      +
      + +

      ◆ obj_index

      + +
      +
      + + + + +
      unsigned hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s::obj_index
      +
      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_topology_diff_type_t hwloc_topology_diff_u::hwloc_topology_diff_obj_attr_s::type
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00377.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00377.html new file mode 100644 index 0000000000..1d9c585f90 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00377.html @@ -0,0 +1,132 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      + +
      +
      hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s Struct Reference
      +
      +
      + +

      #include <diff.h>

      + + + + + + + + + + +

      +Data Fields

      hwloc_topology_diff_type_t type
       
      union hwloc_topology_diff_unext
       
      int obj_depth
       
      unsigned obj_index
       
      +

      Field Documentation

      + +

      ◆ next

      + +
      +
      + + + + +
      union hwloc_topology_diff_u* hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s::next
      +
      + +
      +
      + +

      ◆ obj_depth

      + +
      +
      + + + + +
      int hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s::obj_depth
      +
      + +
      +
      + +

      ◆ obj_index

      + +
      +
      + + + + +
      unsigned hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s::obj_index
      +
      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_topology_diff_type_t hwloc_topology_diff_u::hwloc_topology_diff_too_complex_s::type
      +
      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00381.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00381.html new file mode 100644 index 0000000000..0fecb187cc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00381.html @@ -0,0 +1,178 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_disc_component Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_disc_component Struct Reference
      +
      +
      + +

      #include <plugins.h>

      + + + + + + + + + + + + + + +

      +Data Fields

      const char * name
       
      unsigned phases
       
      unsigned excluded_phases
       
      struct hwloc_backend *(* instantiate )(struct hwloc_topology *topology, struct hwloc_disc_component *component, unsigned excluded_phases, const void *data1, const void *data2, const void *data3)
       
      unsigned priority
       
      unsigned enabled_by_default
       
      +

      Detailed Description

      +

      Discovery component structure.

      +

      This is the major kind of components, taking care of the discovery. They are registered by generic components, either statically-built or as plugins.

      +

      Field Documentation

      + +

      ◆ enabled_by_default

      + +
      +
      + + + + +
      unsigned hwloc_disc_component::enabled_by_default
      +
      + +

      Enabled by default. If unset, if will be disabled unless explicitly requested.

      + +
      +
      + +

      ◆ excluded_phases

      + +
      +
      + + + + +
      unsigned hwloc_disc_component::excluded_phases
      +
      + +

      Component phases to exclude, as an OR'ed set of hwloc_disc_phase_t.

      +

      For a GLOBAL component, this usually includes all other phases (~UL).

      +

      Other components only exclude types that may bring conflicting topology information. MISC components should likely not be excluded since they usually bring non-primary additional information.

      + +
      +
      + +

      ◆ instantiate

      + +
      +
      + + + + +
      struct hwloc_backend*(* hwloc_disc_component::instantiate) (struct hwloc_topology *topology, struct hwloc_disc_component *component, unsigned excluded_phases, const void *data1, const void *data2, const void *data3)
      +
      + +

      Instantiate callback to create a backend from the component. Parameters data1, data2, data3 are NULL except for components that have special enabling routines such as hwloc_topology_set_xml().

      + +
      +
      + +

      ◆ name

      + +
      +
      + + + + +
      const char* hwloc_disc_component::name
      +
      + +

      Name. If this component is built as a plugin, this name does not have to match the plugin filename.

      + +
      +
      + +

      ◆ phases

      + +
      +
      + + + + +
      unsigned hwloc_disc_component::phases
      +
      + +

      Discovery phases performed by this component. OR'ed set of hwloc_disc_phase_t.

      + +
      +
      + +

      ◆ priority

      + +
      +
      + + + + +
      unsigned hwloc_disc_component::priority
      +
      + +

      Component priority. Used to sort topology->components, higher priority first. Also used to decide between two components with the same name.

      +

      Usual values are 50 for native OS (or platform) components, 45 for x86, 40 for no-OS fallback, 30 for global components (xml, synthetic), 20 for pci, 10 for other misc components (opencl etc.).

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00385.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00385.html new file mode 100644 index 0000000000..461c1d4086 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00385.html @@ -0,0 +1,121 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_disc_status Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_disc_status Struct Reference
      +
      +
      + +

      #include <plugins.h>

      + + + + + + + + +

      +Data Fields

      hwloc_disc_phase_t phase
       
      unsigned excluded_phases
       
      unsigned long flags
       
      +

      Detailed Description

      +

      Discovery status structure.

      +

      Used by the core and backends to inform about what has been/is being done during the discovery process.

      +

      Field Documentation

      + +

      ◆ excluded_phases

      + +
      +
      + + + + +
      unsigned hwloc_disc_status::excluded_phases
      +
      + +

      Dynamically excluded phases. If a component decides during discovery that some phases are no longer needed.

      + +
      +
      + +

      ◆ flags

      + +
      +
      + + + + +
      unsigned long hwloc_disc_status::flags
      +
      + +

      OR'ed set of hwloc_disc_status_flag_e.

      + +
      +
      + +

      ◆ phase

      + +
      +
      + + + + +
      hwloc_disc_phase_t hwloc_disc_status::phase
      +
      + +

      The current discovery phase that is performed. Must match one of the phases in the component phases field.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00389.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00389.html new file mode 100644 index 0000000000..182218b61d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00389.html @@ -0,0 +1,195 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_backend Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_backend Struct Reference
      +
      +
      + +

      #include <plugins.h>

      + + + + + + + + + + + + + + + + +

      +Data Fields

      unsigned phases
       
      unsigned long flags
       
      int is_thissystem
       
      void * private_data
       
      void(* disable )(struct hwloc_backend *backend)
       
      int(* discover )(struct hwloc_backend *backend, struct hwloc_disc_status *status)
       
      int(* get_pci_busid_cpuset )(struct hwloc_backend *backend, struct hwloc_pcidev_attr_s *busid, hwloc_bitmap_t cpuset)
       
      +

      Detailed Description

      +

      Discovery backend structure.

      +

      A backend is the instantiation of a discovery component. When a component gets enabled for a topology, its instantiate() callback creates a backend.

      +

      hwloc_backend_alloc() initializes all fields to default values that the component may change (except "component" and "next") before enabling the backend with hwloc_backend_enable().

      +

      Most backends assume that the topology is_thissystem flag is set because they talk to the underlying operating system. However they may still be used in topologies without the is_thissystem flag for debugging reasons. In practice, they are usually auto-disabled in such cases (excluded by xml or synthetic backends, or by environment variables when changing the Linux fsroot or the x86 cpuid path).

      +

      Field Documentation

      + +

      ◆ disable

      + +
      +
      + + + + +
      void(* hwloc_backend::disable) (struct hwloc_backend *backend)
      +
      + +

      Callback for freeing the private_data. May be NULL.

      + +
      +
      + +

      ◆ discover

      + +
      +
      + + + + +
      int(* hwloc_backend::discover) (struct hwloc_backend *backend, struct hwloc_disc_status *status)
      +
      + +

      Main discovery callback. returns -1 on error, either because it couldn't add its objects ot the existing topology, or because of an actual discovery/gathering failure. May be NULL.

      + +
      +
      + +

      ◆ flags

      + +
      +
      + + + + +
      unsigned long hwloc_backend::flags
      +
      + +

      Backend flags, currently always 0.

      + +
      +
      + +

      ◆ get_pci_busid_cpuset

      + +
      +
      + + + + +
      int(* hwloc_backend::get_pci_busid_cpuset) (struct hwloc_backend *backend, struct hwloc_pcidev_attr_s *busid, hwloc_bitmap_t cpuset)
      +
      + +

      Callback to retrieve the locality of a PCI object. Called by the PCI core when attaching PCI hierarchy to CPU objects. May be NULL.

      + +
      +
      + +

      ◆ is_thissystem

      + +
      +
      + + + + +
      int hwloc_backend::is_thissystem
      +
      + +

      Backend-specific 'is_thissystem' property. Set to 0 if the backend disables the thissystem flag for this topology (e.g. loading from xml or synthetic string, or using a different fsroot on Linux, or a x86 CPUID dump). Set to -1 if the backend doesn't care (default).

      + +
      +
      + +

      ◆ phases

      + +
      +
      + + + + +
      unsigned hwloc_backend::phases
      +
      + +

      Discovery phases performed by this component, possibly without some of them if excluded by other components. OR'ed set of hwloc_disc_phase_t.

      + +
      +
      + +

      ◆ private_data

      + +
      +
      + + + + +
      void* hwloc_backend::private_data
      +
      + +

      Backend private data, or NULL if none.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00393.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00393.html new file mode 100644 index 0000000000..fb4daa3a2d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00393.html @@ -0,0 +1,183 @@ + + + + + + + +Hardware Locality (hwloc): hwloc_component Struct Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      + +
      +
      hwloc_component Struct Reference
      +
      +
      + +

      #include <plugins.h>

      + + + + + + + + + + + + + + +

      +Data Fields

      unsigned abi
       
      int(* init )(unsigned long flags)
       
      void(* finalize )(unsigned long flags)
       
      hwloc_component_type_t type
       
      unsigned long flags
       
      void * data
       
      +

      Detailed Description

      +

      Generic component structure.

      +

      Generic components structure, either statically listed by configure in static-components.h or dynamically loaded as a plugin.

      +

      Field Documentation

      + +

      ◆ abi

      + +
      +
      + + + + +
      unsigned hwloc_component::abi
      +
      + +

      Component ABI version, set to HWLOC_COMPONENT_ABI.

      + +
      +
      + +

      ◆ data

      + +
      +
      + + + + +
      void* hwloc_component::data
      +
      + +

      Component data, pointing to a struct hwloc_disc_component or struct hwloc_xml_component.

      + +
      +
      + +

      ◆ finalize

      + +
      +
      + + + + +
      void(* hwloc_component::finalize) (unsigned long flags)
      +
      + +

      Process-wide component termination callback.

      +

      This optional callback is called after unregistering the component from the hwloc core (before unloading the plugin).

      +

      flags is always 0 for now.

      +
      Note
      If the component uses ltdl for loading its own plugins, it should load/unload them only in init() and finalize(), to avoid race conditions with hwloc's use of ltdl.
      + +
      +
      + +

      ◆ flags

      + +
      +
      + + + + +
      unsigned long hwloc_component::flags
      +
      + +

      Component flags, unused for now.

      + +
      +
      + +

      ◆ init

      + +
      +
      + + + + +
      int(* hwloc_component::init) (unsigned long flags)
      +
      + +

      Process-wide component initialization callback.

      +

      This optional callback is called when the component is registered to the hwloc core (after loading the plugin).

      +

      When the component is built as a plugin, this callback should call hwloc_check_plugin_namespace() and return an negative error code on error.

      +

      flags is always 0 for now.

      +
      Returns
      0 on success, or a negative code on error.
      +
      Note
      If the component uses ltdl for loading its own plugins, it should load/unload them only in init() and finalize(), to avoid race conditions with hwloc's use of ltdl.
      + +
      +
      + +

      ◆ type

      + +
      +
      + + + + +
      hwloc_component_type_t hwloc_component::type
      +
      + +

      Component type.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00394.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00394.html new file mode 100644 index 0000000000..5c85e1c7b8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00394.html @@ -0,0 +1,567 @@ + + + + + + + +Hardware Locality (hwloc): Hardware Locality (hwloc) Introduction + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Hardware Locality (hwloc) Introduction
      +
      +
      +

      Portable abstraction of hierarchical architectures for high-performance computing

      +
      +

      +

      + See also Further Reading +or the Related pages tab above + for links to more sections about hwloc concepts. +
      +

      +

      +

      +

      +

      +hwloc Summary

      +

      hwloc provides command line tools and a C API to obtain the hierarchical map of key computing elements within a node, such as: NUMA memory nodes, shared caches, processor packages, dies and cores, processing units (logical processors or "threads") and even I/O devices. hwloc also gathers various attributes such as cache and memory information, and is portable across a variety of different operating systems and platforms.

      +

      hwloc primarily aims at helping high-performance computing (HPC) applications, but is also applicable to any project seeking to exploit code and/or data locality on modern computing platforms.

      +

      hwloc supports the following operating systems:

      +
        +
      • +Linux (including old kernels not having sysfs topology information, with knowledge of cpusets, ScaleMP vSMP support, etc.) on all supported hardware, including Intel Xeon Phi and NumaScale NumaConnect.
      • +
      • +Solaris (with support for processor sets and logical domains)
      • +
      • +AIX
      • +
      • +Darwin / OS X
      • +
      • +FreeBSD and its variants (such as kFreeBSD/GNU)
      • +
      • +NetBSD
      • +
      • +HP-UX
      • +
      • +Microsoft Windows
      • +
      • +IBM BlueGene/Q Compute Node Kernel (CNK)
      • +
      +

      Since it uses standard Operating System information, hwloc's support is mostly independant from the processor type (x86, powerpc, ...) and just relies on the Operating System support. The main exception is BSD operating systems (NetBSD, FreeBSD, etc.) because they do not provide support topology information, hence hwloc uses an x86-only CPUID-based backend (which can be used for other OSes too, see the Components and plugins section).

      +

      To check whether hwloc works on a particular machine, just try to build it and run lstopo or lstopo-no-graphics. If some things do not look right (e.g. bogus or missing cache information), see Questions and Bugs.

      +

      hwloc only reports the number of processors on unsupported operating systems; no topology information is available.

      +

      For development and debugging purposes, hwloc also offers the ability to work on "fake" topologies:

      + +

      hwloc can display the topology in a human-readable format, either in graphical mode (X11), or by exporting in one of several different formats, including: plain text, LaTeX tikzpicture, PDF, PNG, and FIG (see Command-line Examples below). Note that some of the export formats require additional support libraries.

      +

      hwloc offers a programming interface for manipulating topologies and objects. It also brings a powerful CPU bitmap API that is used to describe topology objects location on physical/logical processors. See the Programming Interface below. It may also be used to binding applications onto certain cores or memory nodes. Several utility programs are also provided to ease command-line manipulation of topology objects, binding of processes, and so on.

      +

      Perl bindings are available from Bernd Kallies on CPAN.

      +

      Python bindings are available from Guy Streeter:

      +

      +

      +

      +

      +hwloc Installation

      +

      The generic installation procedure for both hwloc and netloc is described in Installation.

      +

      The hwloc command-line tool "lstopo" produces human-readable topology maps, as mentioned above. It can also export maps to the "fig" file format. Support for PDF, Postscript, and PNG exporting is provided if the "Cairo" development package (usually cairo-devel or libcairo2-dev) can be found in "lstopo" when hwloc is configured and build.

      +

      The hwloc core may also benefit from the following development packages:

        +
      • +

        libpciaccess for full I/O device discovery (libpciaccess-devel or libpciaccess-dev package). On Linux, PCI discovery may still be performed (without vendor/device names) even if libpciaccess cannot be used.

        +

        +
      • +
      • +AMD or NVIDIA OpenCL implementations for OpenCL device discovery.
      • +
      • +the NVIDIA CUDA Toolkit for CUDA device discovery. See How do I enable CUDA and select which CUDA version to use?.
      • +
      • +the NVIDIA Management Library (NVML) for NVML device discovery. It is included in CUDA since version 8.0. Older NVML releases were available within the NVIDIA GPU Deployment Kit from https://developer.nvidia.com/gpu-deployment-kit .
      • +
      • +the NV-CONTROL X extension library (NVCtrl) for NVIDIA display discovery. The relevant development package is usually libXNVCtrl-devel or libxnvctrl-dev. It is also available within nvidia-settings from ftp://download.nvidia.com/XFree86/nvidia-settings/ and https://github.com/NVIDIA/nvidia-settings/ .
      • +
      • +the AMD ROCm SMI library for RSMI device discovery. The relevant development package is usually rocm-smi-lib64 or librocm-smi-dev. See How do I enable ROCm SMI and select which version to use?.
      • +
      • +the oneAPI Level Zero library. The relevant development package is usually level-zero-dev or level-zero-devel.
      • +
      • +libxml2 for full XML import/export support (otherwise, the internal minimalistic parser will only be able to import XML files that were exported by the same hwloc release). See Importing and exporting topologies from/to XML files for details. The relevant development package is usually libxml2-devel or libxml2-dev.
      • +
      • +libudev on Linux for easier discovery of OS device information (otherwise hwloc will try to manually parse udev raw files). The relevant development package is usually libudev-devel or libudev-dev.
      • +
      • +libtool's ltdl library for dynamic plugin loading if the native dlopen cannot be used. The relevant development package is usually libtool-ltdl-devel or libltdl-dev.
      • +
      +

      PCI and XML support may be statically built inside the main hwloc library, or as separate dynamically-loaded plugins (see the Components and plugins section).

      +

      Note that because of the possibility of GPL taint, the pciutils library libpci will not be used (remember that hwloc is BSD-licensed).

      +

      +

      +

      +

      +Command-line Examples

      +

      On a 4-package 2-core machine with hyper-threading, the lstopo tool may show the following graphical output:

      +
      + +
      +

      Here's the equivalent output in textual form:

      +
      Machine
      +  NUMANode L#0 (P#0)
      +  Package L#0 + L3 L#0 (4096KB)
      +    L2 L#0 (1024KB) + L1 L#0 (16KB) + Core L#0
      +      PU L#0 (P#0)
      +      PU L#1 (P#8)
      +    L2 L#1 (1024KB) + L1 L#1 (16KB) + Core L#1
      +      PU L#2 (P#4)
      +      PU L#3 (P#12)
      +  Package L#1 + L3 L#1 (4096KB)
      +    L2 L#2 (1024KB) + L1 L#2 (16KB) + Core L#2
      +      PU L#4 (P#1)
      +      PU L#5 (P#9)
      +    L2 L#3 (1024KB) + L1 L#3 (16KB) + Core L#3
      +      PU L#6 (P#5)
      +      PU L#7 (P#13)
      +  Package L#2 + L3 L#2 (4096KB)
      +    L2 L#4 (1024KB) + L1 L#4 (16KB) + Core L#4
      +      PU L#8 (P#2)
      +      PU L#9 (P#10)
      +    L2 L#5 (1024KB) + L1 L#5 (16KB) + Core L#5
      +      PU L#10 (P#6)
      +      PU L#11 (P#14)
      +  Package L#3 + L3 L#3 (4096KB)
      +    L2 L#6 (1024KB) + L1 L#6 (16KB) + Core L#6
      +      PU L#12 (P#3)
      +      PU L#13 (P#11)
      +    L2 L#7 (1024KB) + L1 L#7 (16KB) + Core L#7
      +      PU L#14 (P#7)
      +      PU L#15 (P#15)
      +

      Note that there is also an equivalent output in XML that is meant for exporting/importing topologies but it is hardly readable to human-beings (see Importing and exporting topologies from/to XML files for details).

      +

      On a 4-package 2-core Opteron NUMA machine (with two core cores disallowed by the administrator), the lstopo tool may show the following graphical output (with --disallowed for displaying disallowed objects):

      +
      + +
      +

      Here's the equivalent output in textual form:

      +
      Machine (32GB total)
      +  Package L#0
      +    NUMANode L#0 (P#0 8190MB)
      +    L2 L#0 (1024KB) + L1 L#0 (64KB) + Core L#0 + PU L#0 (P#0)
      +    L2 L#1 (1024KB) + L1 L#1 (64KB) + Core L#1 + PU L#1 (P#1)
      +  Package L#1
      +    NUMANode L#1 (P#1 8192MB)
      +    L2 L#2 (1024KB) + L1 L#2 (64KB) + Core L#2 + PU L#2 (P#2)
      +    L2 L#3 (1024KB) + L1 L#3 (64KB) + Core L#3 + PU L#3 (P#3)
      +  Package L#2
      +    NUMANode L#2 (P#2 8192MB)
      +    L2 L#4 (1024KB) + L1 L#4 (64KB) + Core L#4 + PU L#4 (P#4)
      +    L2 L#5 (1024KB) + L1 L#5 (64KB) + Core L#5 + PU L#5 (P#5)
      +  Package L#3
      +    NUMANode L#3 (P#3 8192MB)
      +    L2 L#6 (1024KB) + L1 L#6 (64KB) + Core L#6 + PU L#6 (P#6)
      +    L2 L#7 (1024KB) + L1 L#7 (64KB) + Core L#7 + PU L#7 (P#7)
      +

      On a 2-package quad-core Xeon (pre-Nehalem, with 2 dual-core dies into each package):

      +
      + +
      +

      Here's the same output in textual form:

      +
      Machine (total 16GB)
      +  NUMANode L#0 (P#0 16GB)
      +  Package L#0
      +    L2 L#0 (4096KB)
      +      L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0)
      +      L1 L#1 (32KB) + Core L#1 + PU L#1 (P#4)
      +    L2 L#1 (4096KB)
      +      L1 L#2 (32KB) + Core L#2 + PU L#2 (P#2)
      +      L1 L#3 (32KB) + Core L#3 + PU L#3 (P#6)
      +  Package L#1
      +    L2 L#2 (4096KB)
      +      L1 L#4 (32KB) + Core L#4 + PU L#4 (P#1)
      +      L1 L#5 (32KB) + Core L#5 + PU L#5 (P#5)
      +    L2 L#3 (4096KB)
      +      L1 L#6 (32KB) + Core L#6 + PU L#6 (P#3)
      +      L1 L#7 (32KB) + Core L#7 + PU L#7 (P#7)
      +

      +

      +

      +

      +Programming Interface

      +

      The basic interface is available in hwloc.h. Some higher-level functions are available in hwloc/helper.h to reduce the need to manually manipulate objects and follow links between them. Documentation for all these is provided later in this document. Developers may also want to look at hwloc/inlines.h which contains the actual inline code of some hwloc.h routines, and at this document, which provides good higher-level topology traversal examples.

      +

      To precisely define the vocabulary used by hwloc, a Terms and Definitions section is available and should probably be read first.

      +

      Each hwloc object contains a cpuset describing the list of processing units that it contains. These bitmaps may be used for CPU binding and Memory binding. hwloc offers an extensive bitmap manipulation interface in hwloc/bitmap.h.

      +

      Moreover, hwloc also comes with additional helpers for interoperability with several commonly used environments. See the Interoperability With Other Software section for details.

      +

      The complete API documentation is available in a full set of HTML pages, man pages, and self-contained PDF files (formatted for both both US letter and A4 formats) in the source tarball in doc/doxygen-doc/.

      +

      NOTE: If you are building the documentation from a Git clone, you will need to have Doxygen and pdflatex installed – the documentation will be built during the normal "make" process. The documentation is installed during "make install" to $prefix/share/doc/hwloc/ and your systems default man page tree (under $prefix, of course).

      +

      +Portability

      +

      Operating System have varying support for CPU and memory binding, e.g. while some Operating Systems provide interfaces for all kinds of CPU and memory bindings, some others provide only interfaces for a limited number of kinds of CPU and memory binding, and some do not provide any binding interface at all. Hwloc's binding functions would then simply return the ENOSYS error (Function not implemented), meaning that the underlying Operating System does not provide any interface for them. CPU binding and Memory binding provide more information on which hwloc binding functions should be preferred because interfaces for them are usually available on the supported Operating Systems.

      +

      Similarly, the ability of reporting topology information varies from one platform to another. As shown in Command-line Examples, hwloc can obtain information on a wide variety of hardware topologies. However, some platforms and/or operating system versions will only report a subset of this information. For example, on an PPC64-based system with 8 cores (each with 2 hardware threads) running a default 2.6.18-based kernel from RHEL 5.4, hwloc is only able to glean information about NUMA nodes and processor units (PUs). No information about caches, packages, or cores is available.

      +

      Here's the graphical output from lstopo on this platform when Simultaneous Multi-Threading (SMT) is enabled:

      +
      + +
      +

      And here's the graphical output from lstopo on this platform when SMT is disabled:

      +
      + +
      +

      Notice that hwloc only sees half the PUs when SMT is disabled. PU L#6, for example, seems to change location from NUMA node #0 to #1. In reality, no PUs "moved" – they were simply re-numbered when hwloc only saw half as many (see also Logical index in Indexes and Sets). Hence, PU L#6 in the SMT-disabled picture probably corresponds to PU L#12 in the SMT-enabled picture.

      +

      This same "PUs have disappeared" effect can be seen on other platforms – even platforms / OSs that provide much more information than the above PPC64 system. This is an unfortunate side-effect of how operating systems report information to hwloc.

      +

      Note that upgrading the Linux kernel on the same PPC64 system mentioned above to 2.6.34, hwloc is able to discover all the topology information. The following picture shows the entire topology layout when SMT is enabled:

      +
      + +
      +

      Developers using the hwloc API or XML output for portable applications should therefore be extremely careful to not make any assumptions about the structure of data that is returned. For example, per the above reported PPC topology, it is not safe to assume that PUs will always be descendants of cores.

      +

      Additionally, future hardware may insert new topology elements that are not available in this version of hwloc. Long-lived applications that are meant to span multiple different hardware platforms should also be careful about making structure assumptions. For example, a new element may someday exist between a core and a PU.

      +

      +API Example

      +

      The following small C example (available in the source tree as ``doc/examples/hwloc-hello.c'') prints the topology of the machine and performs some thread and memory binding. More examples are available in the doc/examples/ directory of the source tree.

      +
      /* Example hwloc API program.
      +
      *
      +
      * See other examples under doc/examples/ in the source tree
      +
      * for more details.
      +
      *
      +
      * Copyright © 2009-2016 Inria. All rights reserved.
      +
      * Copyright © 2009-2011 Université Bordeaux
      +
      * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
      +
      * See COPYING in top-level directory.
      +
      *
      +
      * hwloc-hello.c
      +
      */
      +
      +
      #include "hwloc.h"
      +
      +
      #include <errno.h>
      +
      #include <stdio.h>
      +
      #include <string.h>
      +
      +
      static void print_children(hwloc_topology_t topology, hwloc_obj_t obj,
      +
      int depth)
      +
      {
      +
      char type[32], attr[1024];
      +
      unsigned i;
      +
      +
      hwloc_obj_type_snprintf(type, sizeof(type), obj, 0);
      +
      printf("%*s%s", 2*depth, "", type);
      +
      if (obj->os_index != (unsigned) -1)
      +
      printf("#%u", obj->os_index);
      +
      hwloc_obj_attr_snprintf(attr, sizeof(attr), obj, " ", 0);
      +
      if (*attr)
      +
      printf("(%s)", attr);
      +
      printf("\n");
      +
      for (i = 0; i < obj->arity; i++) {
      +
      print_children(topology, obj->children[i], depth + 1);
      +
      }
      +
      }
      +
      +
      int main(void)
      +
      {
      +
      int depth;
      +
      unsigned i, n;
      +
      unsigned long size;
      +
      int levels;
      +
      char string[128];
      +
      int topodepth;
      +
      void *m;
      +
      hwloc_topology_t topology;
      + + +
      +
      /* Allocate and initialize topology object. */
      +
      hwloc_topology_init(&topology);
      +
      +
      /* ... Optionally, put detection configuration here to ignore
      +
      some objects types, define a synthetic topology, etc....
      +
      +
      The default is to detect all the objects of the machine that
      +
      the caller is allowed to access. See Configure Topology
      +
      Detection. */
      +
      +
      /* Perform the topology detection. */
      + +
      +
      /* Optionally, get some additional topology information
      +
      in case we need the topology depth later. */
      +
      topodepth = hwloc_topology_get_depth(topology);
      +
      +
      /*****************************************************************
      +
      * First example:
      +
      * Walk the topology with an array style, from level 0 (always
      +
      * the system level) to the lowest level (always the proc level).
      +
      *****************************************************************/
      +
      for (depth = 0; depth < topodepth; depth++) {
      +
      printf("*** Objects at level %d\n", depth);
      +
      for (i = 0; i < hwloc_get_nbobjs_by_depth(topology, depth);
      +
      i++) {
      +
      hwloc_obj_type_snprintf(string, sizeof(string),
      +
      hwloc_get_obj_by_depth(topology, depth, i), 0);
      +
      printf("Index %u: %s\n", i, string);
      +
      }
      +
      }
      +
      +
      /*****************************************************************
      +
      * Second example:
      +
      * Walk the topology with a tree style.
      +
      *****************************************************************/
      +
      printf("*** Printing overall tree\n");
      +
      print_children(topology, hwloc_get_root_obj(topology), 0);
      +
      +
      /*****************************************************************
      +
      * Third example:
      +
      * Print the number of packages.
      +
      *****************************************************************/
      + +
      if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
      +
      printf("*** The number of packages is unknown\n");
      +
      } else {
      +
      printf("*** %u package(s)\n",
      +
      hwloc_get_nbobjs_by_depth(topology, depth));
      +
      }
      +
      +
      /*****************************************************************
      +
      * Fourth example:
      +
      * Compute the amount of cache that the first logical processor
      +
      * has above it.
      +
      *****************************************************************/
      +
      levels = 0;
      +
      size = 0;
      +
      for (obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0);
      +
      obj;
      +
      obj = obj->parent)
      + +
      levels++;
      +
      size += obj->attr->cache.size;
      +
      }
      +
      printf("*** Logical processor 0 has %d caches totaling %luKB\n",
      +
      levels, size / 1024);
      +
      +
      /*****************************************************************
      +
      * Fifth example:
      +
      * Bind to only one thread of the last core of the machine.
      +
      *
      +
      * First find out where cores are, or else smaller sets of CPUs if
      +
      * the OS doesn't have the notion of a "core".
      +
      *****************************************************************/
      + +
      +
      /* Get last core. */
      +
      obj = hwloc_get_obj_by_depth(topology, depth,
      +
      hwloc_get_nbobjs_by_depth(topology, depth) - 1);
      +
      if (obj) {
      +
      /* Get a copy of its cpuset that we may modify. */
      +
      cpuset = hwloc_bitmap_dup(obj->cpuset);
      +
      +
      /* Get only one logical processor (in case the core is
      +
      SMT/hyper-threaded). */
      + +
      +
      /* And try to bind ourself there. */
      +
      if (hwloc_set_cpubind(topology, cpuset, 0)) {
      +
      char *str;
      +
      int error = errno;
      + +
      printf("Couldn't bind to cpuset %s: %s\n", str, strerror(error));
      +
      free(str);
      +
      }
      +
      +
      /* Free our cpuset copy */
      + +
      }
      +
      +
      /*****************************************************************
      +
      * Sixth example:
      +
      * Allocate some memory on the last NUMA node, bind some existing
      +
      * memory to the last NUMA node.
      +
      *****************************************************************/
      +
      /* Get last node. There's always at least one. */
      + +
      obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, n - 1);
      +
      +
      size = 1024*1024;
      +
      m = hwloc_alloc_membind(topology, size, obj->nodeset,
      + +
      hwloc_free(topology, m, size);
      +
      +
      m = malloc(size);
      +
      hwloc_set_area_membind(topology, m, size, obj->nodeset,
      + +
      free(m);
      +
      +
      /* Destroy topology object. */
      + +
      +
      return 0;
      +
      }
      +
      hwloc_bitmap_t hwloc_cpuset_t
      A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
      Definition: hwloc.h:140
      +
      @ HWLOC_OBJ_NUMANODE
      NUMA node. An object that contains memory that is directly and byte-accessible to the host processors...
      Definition: hwloc.h:236
      +
      @ HWLOC_OBJ_PACKAGE
      Physical package. The physical package that usually gets inserted into a socket on the motherboard....
      Definition: hwloc.h:191
      +
      @ HWLOC_OBJ_PU
      Processing Unit, or (Logical) Processor. An execution unit (may share a core with some other logical ...
      Definition: hwloc.h:201
      +
      @ HWLOC_OBJ_CORE
      Core. A computation unit (may be shared by several PUs, aka logical processors).
      Definition: hwloc.h:197
      +
      int hwloc_topology_init(hwloc_topology_t *topologyp)
      Allocate a topology context.
      +
      struct hwloc_topology * hwloc_topology_t
      Topology context.
      Definition: hwloc.h:692
      +
      void hwloc_topology_destroy(hwloc_topology_t topology)
      Terminate and free a topology context.
      +
      int hwloc_topology_load(hwloc_topology_t topology)
      Build the actual topology.
      +
      unsigned hwloc_get_nbobjs_by_depth(hwloc_topology_t topology, int depth)
      Returns the width of level at depth depth.
      +
      static hwloc_obj_t hwloc_get_root_obj(hwloc_topology_t topology)
      Returns the top-object of the topology-tree.
      +
      hwloc_obj_t hwloc_get_obj_by_depth(hwloc_topology_t topology, int depth, unsigned idx)
      Returns the topology object at logical index idx from depth depth.
      +
      static hwloc_obj_t hwloc_get_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx)
      Returns the topology object at logical index idx with type type.
      +
      static int hwloc_get_nbobjs_by_type(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the width of level type type.
      +
      static int hwloc_get_type_or_below_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the depth of objects of type type or below.
      +
      int hwloc_get_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
      Returns the depth of objects of type type.
      +
      int hwloc_topology_get_depth(hwloc_topology_t restrict topology)
      Get the depth of the hierarchical tree of objects.
      +
      @ HWLOC_TYPE_DEPTH_UNKNOWN
      No object of given type exists in the topology.
      Definition: hwloc.h:822
      +
      int hwloc_obj_attr_snprintf(char *restrict string, size_t size, hwloc_obj_t obj, const char *restrict separator, int verbose)
      Stringify the attributes of a given topology object into a human-readable form.
      +
      int hwloc_obj_type_snprintf(char *restrict string, size_t size, hwloc_obj_t obj, int verbose)
      Stringify the type of a given topology object into a human-readable form.
      +
      int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags)
      Bind current process or thread on CPUs given in physical bitmap set.
      +
      void * hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
      Allocate some memory on NUMA memory nodes specified by set.
      +
      int hwloc_free(hwloc_topology_t topology, void *addr, size_t len)
      Free memory that was previously allocated by hwloc_alloc() or hwloc_alloc_membind().
      +
      int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
      Bind the already-allocated memory identified by (addr, len) to the NUMA node(s) specified by set.
      +
      @ HWLOC_MEMBIND_BYNODESET
      Consider the bitmap argument as a nodeset.
      Definition: hwloc.h:1509
      +
      @ HWLOC_MEMBIND_BIND
      Allocate memory on the specified nodes.
      Definition: hwloc.h:1421
      +
      int hwloc_obj_type_is_cache(hwloc_obj_type_t type)
      Check whether an object type is a CPU Cache (Data, Unified or Instruction).
      +
      int hwloc_bitmap_asprintf(char **strp, hwloc_const_bitmap_t bitmap)
      Stringify a bitmap into a newly allocated string.
      +
      void hwloc_bitmap_free(hwloc_bitmap_t bitmap)
      Free bitmap bitmap.
      +
      int hwloc_bitmap_singlify(hwloc_bitmap_t bitmap)
      Keep a single index among those set in bitmap bitmap.
      +
      hwloc_bitmap_t hwloc_bitmap_dup(hwloc_const_bitmap_t bitmap)
      Duplicate bitmap bitmap by allocating a new bitmap and copying bitmap contents.
      +
      Structure of a topology object.
      Definition: hwloc.h:396
      +
      struct hwloc_obj ** children
      Normal children, children[0 .. arity -1].
      Definition: hwloc.h:456
      +
      hwloc_nodeset_t nodeset
      NUMA nodes covered by this object or containing this object.
      Definition: hwloc.h:540
      +
      unsigned os_index
      OS-provided physical index number. It is not guaranteed unique across the entire machine,...
      Definition: hwloc.h:401
      +
      hwloc_cpuset_t cpuset
      CPUs covered by this object.
      Definition: hwloc.h:512
      +
      unsigned arity
      Number of normal children. Memory, Misc and I/O children are not listed here but rather in their dedi...
      Definition: hwloc.h:452
      +
      hwloc_obj_type_t type
      Type of object.
      Definition: hwloc.h:398
      +
      union hwloc_obj_attr_u * attr
      Object type-specific Attributes, may be NULL if no attribute value was found.
      Definition: hwloc.h:415
      +
      struct hwloc_obj * parent
      Parent, NULL if root (Machine object)
      Definition: hwloc.h:446
      +
      struct hwloc_obj_attr_u::hwloc_cache_attr_s cache
      +
      hwloc_uint64_t size
      Size of cache in bytes.
      Definition: hwloc.h:617
      +

      hwloc provides a pkg-config executable to obtain relevant compiler and linker flags. For example, it can be used thusly to compile applications that utilize the hwloc library (assuming GNU Make):

      +
      CFLAGS += $(shell pkg-config --cflags hwloc)
      +LDLIBS += $(shell pkg-config --libs hwloc)
      +
      +hwloc-hello: hwloc-hello.c
      +        $(CC) hwloc-hello.c $(CFLAGS) -o hwloc-hello $(LDLIBS)
      +

      On a machine 2 processor packages – each package of which has two processing cores – the output from running hwloc-hello could be something like the following:

      +
      shell$ ./hwloc-hello
      +*** Objects at level 0
      +Index 0: Machine
      +*** Objects at level 1
      +Index 0: Package#0
      +Index 1: Package#1
      +*** Objects at level 2
      +Index 0: Core#0
      +Index 1: Core#1
      +Index 2: Core#3
      +Index 3: Core#2
      +*** Objects at level 3
      +Index 0: PU#0
      +Index 1: PU#1
      +Index 2: PU#2
      +Index 3: PU#3
      +*** Printing overall tree
      +Machine
      +  Package#0
      +    Core#0
      +      PU#0
      +    Core#1
      +      PU#1
      +  Package#1
      +    Core#3
      +      PU#2
      +    Core#2
      +      PU#3
      +*** 2 package(s)
      +*** Logical processor 0 has 0 caches totaling 0KB
      +shell$ 
      +

      +

      +

      +

      +History / Credits

      +

      hwloc is the evolution and merger of the libtopology project and the Portable Linux Processor Affinity (PLPA) (https://www.open-mpi.org/projects/plpa/) project. Because of functional and ideological overlap, these two code bases and ideas were merged and released under the name "hwloc" as an Open MPI sub-project.

      +

      libtopology was initially developed by the Inria Runtime Team-Project. PLPA was initially developed by the Open MPI development team as a sub-project. Both are now deprecated in favor of hwloc, which is distributed as an Open MPI sub-project.

      +

      +

      +

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00395.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00395.html new file mode 100644 index 0000000000..edacba7555 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00395.html @@ -0,0 +1,166 @@ + + + + + + + +Hardware Locality (hwloc): Terms and Definitions + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Terms and Definitions
      +
      +
      +

      +

      +

      +

      +Objects

      +
      +
      Object
      +

      Interesting kind of part of the system, such as a Core, a L2Cache, a NUMA memory node, etc. The different types detected by hwloc are detailed in the hwloc_obj_type_t enumeration.

      +

      There are four kinds of Objects: Memory (NUMA nodes and Memory-side caches), I/O (Bridges, PCI and OS devices), Misc, and Normal (everything else, including Machine, Package, Die, Core, PU, CPU Caches, etc.). Normal and Memory objects have (non-NULL) CPU sets and nodesets, while I/O and Misc don't.

      +

      Objects are topologically sorted by locality (CPU and node sets) into a tree (see Hierarchy, Tree and Levels).

      +

      +
      +
      Processing Unit (PU)
      +

      The smallest processing element that can be represented by a hwloc object. It may be a single-core processor, a core of a multicore processor, or a single thread in a SMT processor (also sometimes called "Logical processor", not to be confused with "Logical index of a processor"). hwloc's PU acronym stands for Processing Unit.

      +

      +
      +
      Package
      +

      A processor Package is the physical package that usually gets inserted into a socket on the motherboard. It is also often called a physical processor or a CPU even if these names bring confusion with respect to cores and processing units. A processor package usually contains multiple cores (and may also be composed of multiple dies). hwloc Package objects were called Sockets up to hwloc 1.10.

      +

      +
      +
      NUMA Node
      +

      An object that contains memory that is directly and byte-accessible to the host processors. It is usually close to some cores as specified by its CPU set. Hence it is attached as a memory child of the object that groups those cores together, for instance a Package objects with 4 Core children (see Hierarchy, Tree and Levels).

      +

      +
      +
      Memory-side Cache
      +

      A cache in front of a specific memory region (e.g. a range of physical addresses). It caches all accesses to that region without caring about which core issued the request. This is the opposite of usual CPU caches where only accesses from the local cores are cached, without caring about the target memory.

      +

      In hwloc, memory-side caches are memory objects placed between their local CPU objects (parent) and the target NUMA node memory (child).

      +
      +
      +

      +

      +

      +

      +Indexes and Sets

      +
      +
      OS or physical index
      +

      The index that the operating system (OS) uses to identify the object. This may be completely arbitrary, non-unique, non-contiguous, not representative of logical proximity, and may depend on the BIOS configuration. That is why hwloc almost never uses them, only in the default lstopo output (P#x) and cpuset masks. See also Should I use logical or physical/OS indexes? and how?.

      +

      +
      +
      Logical index
      +

      Index to uniquely identify objects of the same type and depth, automatically computed by hwloc according to the topology. It expresses logical proximity in a generic way, i.e. objects which have adjacent logical indexes are adjacent in the topology. That is why hwloc almost always uses it in its API, since it expresses logical proximity. They can be shown (as L#x) by lstopo thanks to the -l option. This index is always linear and in the range [0, num_objs_same_type_same_level-1]. Think of it as ``cousin rank.'' The ordering is based on topology first, and then on OS CPU numbers, so it is stable across everything except firmware CPU renumbering. "Logical index" should not be confused with "Logical processor". A "Logical + processor" (which in hwloc we rather call "processing unit" to avoid the confusion) has both a physical index (as chosen arbitrarily by BIOS/OS) and a logical index (as computed according to logical proximity by hwloc). See also Should I use logical or physical/OS indexes? and how?.

      +

      +
      +
      CPU set
      +

      The set of processing units (PU) logically included in an object (if it makes sense). They are always expressed using physical processor numbers (as announced by the OS). They are implemented as the hwloc_bitmap_t opaque structure. hwloc CPU sets are just masks, they do not have any relation with an operating system actual binding notion like Linux' cpusets. I/O and Misc objects do not have CPU sets while all Normal and Memory objects have non-NULL CPU sets.

      +

      +
      +
      Node set
      +

      The set of NUMA memory nodes logically included in an object (if it makes sense). They are always expressed using physical node numbers (as announced by the OS). They are implemented with the hwloc_bitmap_t opaque structure. as bitmaps. I/O and Misc objects do not have Node sets while all Normal and Memory objects have non-NULL nodesets.

      +

      +
      +
      Bitmap
      +

      A possibly-infinite set of bits used for describing sets of objects such as CPUs (CPU sets) or memory nodes (Node sets). They are implemented with the hwloc_bitmap_t opaque structure.

      +

      +
      +
      +

      +

      +

      +

      +Hierarchy, Tree and Levels

      +
      +
      Parent object
      +

      The object logically containing the current object, for example because its CPU set includes the CPU set of the current object. All objects have a non-NULL parent, except the root of the topology (Machine object).

      +

      +
      +
      Ancestor object
      +

      The parent object, or its own parent, and so on.

      +

      +
      +
      Children object(s)
      +

      The object (or objects) contained in the current object because their CPU set is included in the CPU set of the current object. Each object may also contain separated lists for Memory, I/O and Misc object children.

      +

      +
      +
      Arity
      +

      The number of normal children of an object. There are also specific arities for Memory, I/O and Misc children.

      +

      +
      +
      Sibling objects
      +

      Objects in the same children list, which all of them are normal children of the same parent, or all of them are Memory children of the same parent, or I/O children, or Misc. They usually have the same type (and hence are cousins, as well). But they may not if the topology is asymmetric.

      +

      +
      +
      Sibling rank
      +

      Index to uniquely identify objects which have the same parent, and is always in the range [0, arity-1] (respectively memory_arity, io_arity or misc_arity for Memory, I/O and Misc children of a parent).

      +

      +
      +
      Cousin objects
      +

      Objects of the same type (and depth) as the current object, even if they do not have the same parent.

      +

      +
      +
      Level
      +

      Set of objects of the same type and depth. All these objects are cousins.

      +

      Memory, I/O and Misc objects also have their own specific levels and (virtual) depth.

      +

      +
      +
      Depth
      +

      Nesting level in the object tree, starting from the root object. If the topology is symmetric, the depth of a child is equal to the parent depth plus one, and an object depth is also equal to the number of parent/child links between the root object and the given object. If the topology is asymmetric, the difference between some parent and child depths may be larger than one when some intermediate levels (for instance groups) are missing in only some parts of the machine.

      +

      The depth of the Machine object is always 0 since it is always the root of the topology. The depth of PU objects is equal to the number of levels in the topology minus one.

      +

      Memory, I/O and Misc objects also have their own specific levels and depth.

      +

      +
      +
      +

      The following diagram can help to understand the vocabulary of the relationships by showing the example of a machine with two dual core packages (with no hardware threads); thus, a topology with 5 levels. Each box with rounded corner corresponds to one hwloc_obj_t, containing the values of the different integer fields (depth, logical_index, etc.), and arrows show to which other hwloc_obj_t pointers point to (first_child, parent, etc.).

      +

      The topology always starts with a Machine object as root (depth 0) and ends with PU objects at the bottom (depth 4 here).

      +

      Objects of the same level (cousins) are listed in red boxes and linked with red arrows. Children of the same parent (siblings) are linked with blue arrows.

      +

      The L2 cache of the last core is intentionally missing to show how asymmetric topologies are handled. See What happens if my topology is asymmetric? for more information about such strange topologies.

      +
      + +
      +

      It should be noted that for PU objects, the logical index – as computed linearly by hwloc – is not the same as the OS index.

      +

      The NUMA node is on the side because it is not part of the main tree but rather attached to the object that corresponds to its locality (the entire machine here, hence the root object). It is attached as a Memory child (in green) and has a virtual depth (negative). It could also have siblings if there were multiple local NUMA nodes, or cousins if other NUMA nodes were attached somewhere else in the machine.

      +

      I/O or Misc objects could be attached in a similar manner.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00396.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00396.html new file mode 100644 index 0000000000..e3c5072d7f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00396.html @@ -0,0 +1,139 @@ + + + + + + + +Hardware Locality (hwloc): Command-Line Tools + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Command-Line Tools
      +
      +
      +

      +

      +

      +

      hwloc comes with an extensive C programming interface and several command line utilities. Each of them is fully documented in its own manual page; the following is a summary of the available command line tools.

      +

      +

      +

      +

      +lstopo and lstopo-no-graphics

      +

      lstopo (also known as hwloc-ls) displays the hierarchical topology map of the current system. The output may be graphical, ascii-art or textual, and can also be exported to numerous file formats such as PDF, PNG, XML, and others. Advanced graphical outputs require the "Cairo" development package (usually cairo-devel or libcairo2-dev).

      +

      lstopo and lstopo-no-graphics accept the same command-line options. However, graphical outputs are only available in lstopo. Textual outputs (those that do not depend on heavy external libraries such as Cairo) are supported in both lstopo and lstopo-no-graphics.

      +

      This command can also display the processes currently bound to a part of the machine (via the --ps option).

      +

      Note that lstopo can read XML files and/or alternate chroot filesystems and display topological maps representing those systems (e.g., use lstopo to output an XML file on one system, and then use lstopo to read in that XML file and display it on a different system).

      +

      +

      +

      +

      +hwloc-bind

      +

      hwloc-bind binds processes to specific hardware objects through a flexible syntax. A simple example is binding an executable to specific cores (or packages or bitmaps or ...). The hwloc-bind(1) man page provides much more detail on what is possible.

      +

      hwloc-bind can also be used to retrieve the current process' binding, or retrieve the last CPU(s) where a process ran, or operate on memory binding.

      +

      Just like hwloc-calc, the input locations given to hwloc-bind may be either objects or cpusets (bitmaps as reported by hwloc-calc or hwloc-distrib).

      +

      +

      +

      +

      +hwloc-calc

      +

      hwloc-calc is hwloc's Swiss Army Knife command-line tool for converting things. The input may be either objects or cpusets (bitmaps as reported by another hwloc-calc instance or by hwloc-distrib), that may be combined by addition, intersection or subtraction. The output may be expressed as:

        +
      • +a cpuset bitmap: This compact opaque representation of objects is useful for shell scripts etc. It may passed to hwloc command-line tools such as hwloc-calc or hwloc-bind, or to hwloc command-line options such as lstopo --restrict.
      • +
      • +a nodeset bitmap: Another opaque representation that represents memory locality more precisely, especially if some NUMA nodes are CPU less or if multiple NUMA nodes are local to the same CPUs.
      • +
      • +the amount of the equivalent hwloc objects from a specific type, or the list of their indexes. This is useful for iterating over all similar objects (for instance all cores) within a given part of a platform.
      • +
      • +a hierarchical description of objects, for instance a thread index within a core within a package. This gives a better view of the actual location of an object.
      • +
      +

      Moreover, input and/or output may be use either physical/OS object indexes or as hwloc's logical object indexes. It eases cooperation with external tools such as taskset or numactl by exporting hwloc specifications into list of processor or NUMA node physical indexes. See also Should I use logical or physical/OS indexes? and how?.

      +

      +

      +

      +

      +hwloc-info

      +

      hwloc-info dumps information about the given objects, as well as all its specific attributes. It is intended to be used with tools such as grep for filtering certain attribute lines. When no object is specified, or when --topology is passed, hwloc-info prints a summary of the topology. When --support is passed, hwloc-info lists the supported features for the topology.

      +

      +

      +

      +

      +hwloc-distrib

      +

      hwloc-distrib generates a set of cpuset bitmaps that are uniformly distributed across the machine for the given number of processes. These strings may be used with hwloc-bind to run processes to maximize their memory bandwidth by properly distributing them across the machine.

      +

      +

      +

      +

      +hwloc-ps

      +

      hwloc-ps is a tool to display the bindings of processes that are currently running on the local machine. By default, hwloc-ps only lists processes that are bound; unbound process (and Linux kernel threads) are not displayed.

      +

      +

      +

      +

      +hwloc-annotate

      +

      hwloc-annotate may modify object (and topology) attributes such as string information (see Custom string infos for details) or Misc children objects. It may also add distances, memory attributes, etc. to the topology. It reads an input topology from a XML file and outputs the annotated topology as another XML file.

      +

      +

      +

      +

      +hwloc-diff, hwloc-patch and hwloc-compress-dir

      +

      hwloc-diff computes the difference between two topologies and outputs it to another XML file.

      +

      hwloc-patch reads such a difference file and applies to another topology.

      +

      hwloc-compress-dir compresses an entire directory of XML files by using hwloc-diff to save the differences between topologies instead of entire topologies.

      +

      +

      +

      +

      +hwloc-dump-hwdata

      +

      hwloc-dump-hwdata is a Linux and x86-specific tool that dumps (during boot, privileged) some topology and locality information from raw hardware files (SMBIOS and ACPI tables) to human-readable and world-accessible files that the hwloc library will later reuse.

      +

      Currently only used on Intel Xeon Phi processor platforms. See Why do I need hwloc-dump-hwdata for memory on Intel Xeon Phi processor?.

      +

      See HWLOC_DUMPED_HWDATA_DIR in Environment Variables for details about the location of dumped files.

      +

      +

      +

      +

      +hwloc-gather-topology and hwloc-gather-cpuid

      +

      hwloc-gather-topology is a Linux-specific tool that saves the relevant topology files of the current machine into a tarball (and the corresponding lstopo outputs).

      +

      hwloc-gather-cpuid is a x86-specific tool that dumps the result of CPUID instructions on the current machine into a directory.

      +

      The output of hwloc-gather-cpuid is included in the tarball saved by hwloc-gather-topology when running on Linux/x86.

      +

      These files may be used later (possibly offline) for simulating or debugging a machine without actually running on it.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00397.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00397.html new file mode 100644 index 0000000000..69a23f4dd0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00397.html @@ -0,0 +1,201 @@ + + + + + + + +Hardware Locality (hwloc): Environment Variables + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Environment Variables
      +
      +
      +

      +

      +

      +

      The behavior of the hwloc library and tools may be tuned thanks to the following environment variables.

      +
      +
      HWLOC_XMLFILE=/path/to/file.xml
      +

      enforces the discovery from the given XML file as if hwloc_topology_set_xml() had been called. This file may have been generated earlier with lstopo file.xml. For convenience, this backend provides empty binding hooks which just return success. To have hwloc still actually call OS-specific hooks, HWLOC_THISSYSTEM should be set 1 in the environment too, to assert that the loaded file is really the underlying system. See also Importing and exporting topologies from/to XML files.

      +

      +
      +
      HWLOC_SYNTHETIC=synthetic_description
      +

      enforces the discovery through a synthetic description string as if hwloc_topology_set_synthetic() had been called. For convenience, this backend provides empty binding hooks which just return success. See also Synthetic topologies.

      +

      +
      +
      HWLOC_XML_VERBOSE=1
      +
      +
      HWLOC_SYNTHETIC_VERBOSE=1
      +

      enables verbose messages in the XML or synthetic topology backends. hwloc XML backends (see Importing and exporting topologies from/to XML files) can emit some error messages to the error output stream. Enabling these verbose messages within hwloc can be useful for understanding failures to parse input XML topologies. Similarly, enabling verbose messages in the synthetic topology backend can help understand why the description string is invalid. See also Synthetic topologies.

      +

      +
      +
      HWLOC_THISSYSTEM=1
      +

      enforces the return value of hwloc_topology_is_thissystem(), as if HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM was set with hwloc_topology_set_flags(). It means that it makes hwloc assume that the selected backend provides the topology for the system on which we are running, even if it is not the OS-specific backend but the XML backend for instance. This means making the binding functions actually call the OS-specific system calls and really do binding, while the XML backend would otherwise provide empty hooks just returning success. This can be used for efficiency reasons to first detect the topology once, save it to a XML file, and quickly reload it later through the XML backend, but still having binding functions actually do bind. This also enables support for the variable HWLOC_THISSYSTEM_ALLOWED_RESOURCES.

      +

      +
      +
      HWLOC_THISSYSTEM_ALLOWED_RESOURCES=1
      +

      Get the set of allowed resources from the native operating system even if the topology was loaded from XML or synthetic description, as if HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES was set with hwloc_topology_set_flags(). This variable requires the topology to match the current system (see the variable HWLOC_THISSYSTEM). This is useful when the topology is not loaded directly from the local machine (e.g. for performance reason) and it comes with all resources, but the running process is restricted to only a part of the machine (for instance because of Linux Cgroup/Cpuset).

      +

      +
      +
      HWLOC_ALLOW=all
      +

      Totally ignore administrative restrictions such as Linux Cgroups and consider all resources (PUs and NUMA nodes) as allowed. This is different from setting HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED which gathers all resources but marks the unavailable ones as disallowed.

      +

      +
      +
      HWLOC_HIDE_ERRORS=1
      +

      enables or disables verbose reporting of errors. The hwloc library may issue warnings to the standard error stream when it detects a problem during topology discovery, for instance if the operating system (or user) gives contradictory topology information.

      +

      By default (1), hwloc only shows critical errors such as invalid hardware topology information or invalid configuration. If set to 0 (default in lstopo), more errors are displayed, for instance a failure to initialize CUDA or NVML. If set to 2, no hwloc error messages are shown.

      +

      Note that additional verbose messages may be enabled with other variables such as HWLOC_GROUPING_VERBOSE.

      +

      +
      +
      HWLOC_USE_NUMA_DISTANCES=7
      +

      enables or disables the use of NUMA distances. NUMA distances and memory target/initiator information may be used to improve the locality of NUMA nodes, especially CPU-less nodes. Bits in the value of this environment variable enable different features: Bit 0 enables the gathering of NUMA distances from the operating system. Bit 1 further enables the use of NUMA distances to improve the locality of CPU-less nodes. Bit 2 enables the use of target/initiator information.

      +

      +
      +
      HWLOC_GROUPING=1
      +

      enables or disables objects grouping based on distances. By default, hwloc uses distance matrices between objects (either read from the OS or given by the user) to find groups of close objects. These groups are described by adding intermediate Group objects in the topology. Setting this environment variable to 0 will disable this grouping. This variable supersedes the obsolete HWLOC_IGNORE_DISTANCES variable.

      +

      +
      +
      HWLOC_GROUPING_ACCURACY=0.05
      +

      relaxes distance comparison during grouping. By default, objects may be grouped if their distances form a minimal distance graph. When setting this variable to 0.02, and when HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE is given, these distances do not have to be strictly equal anymore, they may just be equal with a 2% error. If set to try instead of a numerical value, hwloc will try to group with perfect accuracy (0, the default), then with 0.01, 0.02, 0.05 and finally 0.1. Numbers given in this environment variable should always use a dot as a decimal mark (for instance 0.01 instead of 0,01).

      +

      +
      +
      HWLOC_GROUPING_VERBOSE=0
      +

      enables or disables some verbose messages during grouping. If this variable is set to 1, some debug messages will be displayed during distance-based grouping of objects even if debug was not specific at configure time. This is useful when trying to find an interesting distance grouping accuracy.

      +

      +
      +
      HWLOC_CPUKINDS_RANKING=default
      +

      change the ranking policy for CPU kinds. hwloc tries to rank CPU kinds that are energy efficiency first, and then CPUs that are rather high-performance and power hungry.
      + By default, if available, the OS-provided efficiency is used for ranking. Otherwise, the frequency and/or core types are used when available.
      + This environment variable may be set to coretype+frequency, coretype+frequency_strict, coretype, frequency, frequency_base, frequency_max, forced_efficiency, no_forced_efficiency, default, or none.

      +

      +
      +
      HWLOC_CPUKINDS_MAXFREQ=0
      +

      change the use of the max frequency in the Linux backend. hwloc tries to read the base and max frequencies of each core on Linux. If base frequencies are found, max is ignored by default because max frequencies are less reliable for identifying hybrid CPUs due to features such as Intel Turbo Boost Max 3.0 (some cores may report slightly higher max frequencies than others in the same CPU package).

      +

      If this variable is set to 1, the max frequency is not ignored anymore, it is exposed and some processors may appear hybrid because of this.

      +

      +
      +
      HWLOC_PCI_LOCALITY=<domain/bus> <cpuset>;...
      +
      +
      HWLOC_PCI_LOCALITY=/path/to/pci/locality/file
      +

      changes the locality of I/O devices behing the specified PCI buses. If no I/O locality information is available or if the BIOS reports incorrect information, it is possible to move a I/O device tree (OS and/or PCI devices with optional bridges) near a custom set of processors.
      + Localities are given either inside the environment variable itself, or in the pointed file. They may be separated either by semi-colons or by line-breaks. Invalid localities are silently ignored, hence it is possible to insert comments between actual localities.
      + Each locality contains a domain/bus specification (in hexadecimal numbers as usual) followed by a whitespace and a cpuset:

        +
      • +0001 <cpuset> specifies the locality of all buses in PCI domain 0000.
      • +
      • +0000:0f <cpuset> specifies only PCI bus 0f in domain 0000.
      • +
      • +0002:04-0a <cpuset> specifies a range of buses (from 04 to 0a) within domain 0002.
      • +
      +

      Domain/bus specifications should usually match entire hierarchies of buses behind a bridge (including primary, secondary and subordinate buses). For instance, if hostbridge 0000:00 is above other bridges/switches with buses 0000:01 to 0000:09, the variable should be HWLOC_PCI_LOCALITY="0000:00-09 <cpuset>". It supersedes the old HWLOC_PCI_0000_00_LOCALCPUS=<cpuset> which only works when hostbridges exist in the topology.
      + If the variable is defined to empty or invalid, no forced PCI locality is applied but hwloc's internal automatic locality quirks are disabled, which means the exact PCI locality reported by the platform is used.

      +

      +
      +
      HWLOC_X86_TOPOEXT_NUMANODES=0
      +

      use AMD topoext CPUID leaf in the x86 backend to detect NUMA nodes. When using the x86 backend, setting this variable to 1 enables the building of NUMA nodes from AMD processor CPUID instructions. However this strategy does not always reflect BIOS configuration such as NUMA interleaving. And node indexes may be different from those of the operating system. Hence this should only be used when OS backends are wrong and the user is sure that CPUID returns correct NUMA information.

      +

      +
      +
      HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES=0
      +

      show or hide NUMA nodes that correspond to NVIDIA GPU memory. By default they are ignored to avoid interleaved memory being allocated on GPU by mistake. Setting this environment variable to 1 exposes these NUMA nodes. They may be recognized by the GPUMemory subtype. They also have a PCIBusID info attribute to identify the corresponding GPU.

      +

      +
      +
      HWLOC_KNL_MSCACHE_L3=0
      +

      Expose the KNL MCDRAM in cache mode as a Memory-side Cache instead of a L3. hwloc releases prior to 2.1 exposed the MCDRAM cache as a CPU-side L3 cache. Now that Memory-side caches are supported by hwloc, it is still exposed as a L3 by default to avoid breaking existing applications. Setting this environment variable to 1 will expose it as a proper Memory-side cache.

      +

      +
      +
      HWLOC_WINDOWS_PROCESSOR_GROUP_OBJS=0
      +

      Expose Windows processor groups as hwloc Group objects. By default, these groups are disabled because they may be incompatible with the hierarchy of resources that hwloc builds (leading to warnings). Setting this variable to 1 reenables the addition of these groups to the topology.

      +

      This variable does not impact the querying of Windows processor groups using the dedicated API in hwloc/windows.h, this feature is always supported.

      +

      +
      +
      HWLOC_ANNOTATE_GLOBAL_COMPONENTS=0
      +

      Allow components to annotate the topology even if they are usually excluded by global components by default. Setting this variable to 1 and also setting HWLOC_COMPONENTS=xml,pci,stop enables the addition of PCI vendor and model info attributes to a XML topology that was generated without those names (if pciaccess was missing).

      +

      +
      +
      HWLOC_FSROOT=/path/to/linux/filesystem-root/
      +

      switches to reading the topology from the specified Linux filesystem root instead of the main file-system root. This directory may have been saved previously from another machine with hwloc-gather-topology.
      + One should likely also set HWLOC_COMPONENTS=linux,stop so that non-Linux backends are disabled (the -i option of command-line tools takes care of both).
      + Not using the main file-system root causes hwloc_topology_is_thissystem() to return 0. For convenience, this backend provides empty binding hooks which just return success. To have hwloc still actually call OS-specific hooks, HWLOC_THISSYSTEM should be set 1 in the environment too, to assert that the loaded file is really the underlying system.

      +

      +
      +
      HWLOC_CPUID_PATH=/path/to/cpuid/
      +

      forces the x86 backend to read dumped CPUIDs from the given directory instead of executing actual x86 CPUID instructions. This directory may have been saved previously from another machine with hwloc-gather-cpuid.
      + One should likely also set HWLOC_COMPONENTS=x86,stop so that non-x86 backends are disabled (the -i option of command-line tools takes care of both).
      + It causes hwloc_topology_is_thissystem() to return 0. For convenience, this backend provides empty binding hooks which just return success. To have hwloc still actually call OS-specific hooks, HWLOC_THISSYSTEM should be set 1 in the environment too, to assert that the loaded CPUID dump is really the underlying system.

      +

      +
      +
      HWLOC_DUMPED_HWDATA_DIR=/path/to/dumped/files/
      +

      loads files dumped by hwloc-dump-hwdata (on Linux) from the given directory. The default dump/load directory is configured during build based on --runstatedir, --localstatedir, and --prefix options. It usually points to /var/run/hwloc/ in Linux distribution packages, but it may also point to $prefix/var/run/hwloc/ when manually installing and only specifying --prefix.

      +

      +
      +
      HWLOC_COMPONENTS=list,of,components
      +

      forces a list of components to enable or disable. Enable or disable the given comma-separated list of components (if they do not conflict with each other). Component names prefixed with - are disabled (a single phase may also be disabled).

      +

      Once the end of the list is reached, hwloc falls back to enabling the remaining components (sorted by priority) that do not conflict with the already enabled ones, and unless explicitly disabled in the list. If stop is met, the enabling loop immediately stops, no more component is enabled.

      +

      If xml or synthetic components are selected, the corresponding XML filename or synthetic description string should be pass in HWLOC_XMLFILE or HWLOC_SYNTHETIC respectively.

      +

      Since this variable is the low-level and more generic way to select components, it takes precedence over environment variables for selecting components.

      +

      If the variable is set to an empty string (or set to a single comma), no specific component is loaded first, all components are loaded in priority order.

      +

      See Selecting which components to use for details.

      +

      +
      +
      HWLOC_COMPONENTS_VERBOSE=1
      +

      displays verbose information about components. Display messages when components are registered or enabled. This is the recommended way to list the available components with their priority (all of them are registered at startup).

      +

      +
      +
      HWLOC_PLUGINS_PATH=/path/to/hwloc/plugins/:...
      +

      changes the default search directory for plugins. By default, $libdir/hwloc is used. The variable may contain several colon-separated directories.

      +

      +
      +
      HWLOC_PLUGINS_VERBOSE=1
      +

      displays verbose information about plugins. List which directories are scanned, which files are loaded, and which components are successfully loaded.

      +

      +
      +
      HWLOC_PLUGINS_BLACKLIST=filename1,filename2,...
      +

      prevents plugins from being loaded if their filename (without path) is listed. Plugin filenames may be found in verbose messages outputted when HWLOC_PLUGINS_VERBOSE=1.

      +

      +
      +
      HWLOC_DEBUG_VERBOSE=0
      +

      disables all verbose messages that are enabled by default when –enable-debug is passed to configure. When set to more than 1, even more verbose messages are displayed. The default is 1.

      +

      +
      +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00398.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00398.html new file mode 100644 index 0000000000..04350e685c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00398.html @@ -0,0 +1,70 @@ + + + + + + + +Hardware Locality (hwloc): CPU and Memory Binding Overview + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      CPU and Memory Binding Overview
      +
      +
      +

      +

      +

      +

      Some operating systems do not systematically provide separate functions for CPU and memory binding. This means that CPU binding functions may have have effects on the memory binding policy. Likewise, changing the memory binding policy may change the CPU binding of the current thread. This is often not a problem for applications, so by default hwloc will make use of these functions when they provide better binding support.

      +

      If the application does not want the CPU binding to change when changing the memory policy, it needs to use the HWLOC_MEMBIND_NOCPUBIND flag to prevent hwloc from using OS functions which would change the CPU binding. Additionally, HWLOC_CPUBIND_NOMEMBIND can be passed to CPU binding function to prevent hwloc from using OS functions would change the memory binding policy. Of course, using these flags will reduce hwloc's overall support for binding, so their use is discouraged.

      +

      One can avoid using these flags but still closely control both memory and CPU binding by allocating memory, touching each page in the allocated memory, and then changing the CPU binding. The already-really-allocated memory will then be "locked" to physical memory and will not be migrated. Thus, even if the memory binding policy gets changed by the CPU binding order, the already-allocated memory will not change with it. When binding and allocating further memory, the CPU binding should be performed again in case the memory binding altered the previously-selected CPU binding.

      +

      Not all operating systems support the notion of a "current" memory binding policy for the current process, but such operating systems often still provide a way to allocate data on a given node set. Conversely, some operating systems support the notion of a "current" memory binding policy and do not permit allocating data on a specific node set without changing the current policy and allocate the data. To provide the most powerful coverage of these facilities, hwloc provides:

      +
        +
      • +functions that set/get the current memory binding policies (if supported): hwloc_set/get_membind() and hwloc_set/get_proc_membind()
      • +
      • +a function that allocates memory bound to specific node set without changing the current memory binding policy (if supported): hwloc_alloc_membind().
      • +
      • +a helper which, if needed, changes the current memory binding policy of the process in order to obtain memory binding: hwloc_alloc_membind_policy().
      • +
      +

      An application can thus use the two first sets of functions if it wants to manage separately the global process binding policy and directed allocation, or use the third set of functions if it does not care about the process memory binding policy.

      +

      See CPU binding and Memory binding for hwloc's API functions regarding CPU and memory binding, respectively. There are some examples under doc/examples/ in the source tree.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00399.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00399.html new file mode 100644 index 0000000000..5c3234975b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00399.html @@ -0,0 +1,205 @@ + + + + + + + +Hardware Locality (hwloc): I/O Devices + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      I/O Devices
      +
      +
      +

      +

      +

      +

      hwloc usually manipulates processing units and memory but it can also discover I/O devices and report their locality as well. This is useful for placing I/O intensive applications on cores near the I/O devices they use, or for gathering information about all platform components.

      +

      +

      +

      +

      +Enabling and requirements

      +

      I/O discovery is disabled by default (except in lstopo) for performance reasons. It can be enabled by changing the filtering of I/O object types to HWLOC_TYPE_FILTER_KEEP_IMPORTANT or HWLOC_TYPE_FILTER_KEEP_ALL before loading the topology, for instance with hwloc_topology_set_io_types_filter().

      +

      Note that I/O discovery requires significant help from the operating system. The pciaccess library (the development package is usually libpciaccess-devel or libpciaccess-dev) is needed to fully detect PCI devices and bridges/switches. On Linux, PCI discovery may still be performed even if libpciaccess cannot be used. But it misses PCI device names. Moreover, some operating systems require privileges for probing PCI devices, see Does hwloc require privileged access? for details.

      +

      The actual locality of I/O devices is only currently detected on Linux. Other operating system will just report I/O devices as being attached to the topology root object.

      +

      +

      +

      +

      +I/O objects

      +

      When I/O discovery is enabled and supported, some additional objects are added to the topology. The corresponding I/O object types are:

      +

      Any of these types may be filtered individually with hwloc_topology_set_type_filter().

      +

      hwloc tries to attach these new objects to normal objects (usually NUMA nodes) to match their actual physical location. For instance, if a I/O hub (or root complex) is physically connected to a package, the corresponding hwloc bridge object (and its PCI bridges and devices children) is inserted as a child of the corresponding hwloc Package object. These children are not in the normal children list but rather in the I/O-specific children list.

      +

      I/O objects also have neither CPU sets nor node sets (NULL pointers) because they are not directly usable by the user applications for binding. Moreover I/O hierarchies may be highly complex (asymmetric trees of bridges). So I/O objects are placed in specific levels with custom depths. Their lists may still be traversed with regular helpers such as hwloc_get_next_obj_by_type(). However, hwloc offers some dedicated helpers such as hwloc_get_next_pcidev() and hwloc_get_next_osdev() for convenience (see Finding I/O objects).

      +

      +

      +

      +

      +OS devices

      +

      Although each PCI device is uniquely identified by its bus ID (e.g. 0000:01:02.3), a user-space application can hardly find out which PCI device it is actually using. Applications rather use software handles (such as the eth0 network interface, the sda hard drive, or the mlx4_0 OpenFabrics HCA). Therefore hwloc tries to add software devices (HWLOC_OBJ_OS_DEVICE, also known as OS devices).

      +

      OS devices may be attached below PCI devices, but they may also be attached directly to normal objects. Indeed some OS devices are not related to PCI. For instance, NVDIMM block devices (such as pmem0s on Linux) are directly attached near their NUMA node (I/O child of the parent whose memory child is the NUMA node). Also, if hwloc could not discover PCI for some reason, PCI-related OS devices may also be attached directly to normal objects.

      +

      Finally, OS subdevices may be exposed as OS devices children of another OS device. This is the case of LevelZero subdevices for instance.

      +

      hwloc first tries to discover OS devices from the operating system, e.g. eth0, sda or mlx4_0. However, this ability is currently only available on Linux for some classes of devices.

      +

      hwloc then tries to discover software devices through additional I/O components using external libraries. For instance proprietary graphics drivers do not expose any named OS device, but hwloc may still create one OS object per software handle when supported. For instance the opencl and cuda components may add some opencl0d0 and cuda0 OS device objects.

      +

      Here is a list of OS device objects commonly created by hwloc components when I/O discovery is enabled and supported.

      +
        +
      • +Hard disks or non-volatile memory devices (HWLOC_OBJ_OSDEV_BLOCK)
          +
        • +sda or dax2.0 (Linux component)
        • +
        +
      • +
      • +Network interfaces (HWLOC_OBJ_OSDEV_NETWORK)
          +
        • +eth0, wlan0, ib0 (Linux component)
        • +
        +
      • +
      • +OpenFabrics (InfiniBand, Omni-Path, usNIC, etc) HCAs (HWLOC_OBJ_OSDEV_OPENFABRICS)
          +
        • +mlx5_0, hfi1_0, qib0, usnic_0 (Linux component)
        • +
        • +bxi0 with "BXI" subtype for Atos/Bull BXI HCAs (Linux component) even if those are not really OpenFabrics.
        • +
        +
      • +
      • +GPUs (HWLOC_OBJ_OSDEV_GPU)
          +
        • +rsmi0 for the first RSMI device ("RSMI" subtype, from the RSMI component, using the AMD ROCm SMI library)
        • +
        • +nvml0 for the first NVML device ("NVML" subtype, from the NVML component, using the NVIDIA Management Library)
        • +
        • +:0.0 for the first display ("Display" subtype, from the GL component, using the NV-CONTROL X extension library, NVCtrl)
        • +
        • +card0 and renderD128 for DRM device files (from the Linux component, filtered-out by default because considered non-important)
        • +
        +
      • +
      • +Co-Processors (HWLOC_OBJ_OSDEV_COPROC)
          +
        • +opencl0d0 for the first device of the first OpenCL platform, opencl1d3 for the fourth device of the second OpenCL platform ("OpenCL" subtype, from the OpenCL component)
        • +
        • +ze0 for the first Level Zero device ("LevelZero" subtype, from the levelzero component, using the oneAPI Level Zero library), and ze0.1 for its second subdevice (if any).
        • +
        • +cuda0 for the first NVIDIA CUDA device ("CUDA" subtype, from the CUDA component, using the NVIDIA CUDA Library)
        • +
        • +ve0 for the first NEC Vector Engine device ("VectorEngine" subtype, from the Linux component)
        • +
        +
      • +
      • +DMA engine channel (HWLOC_OBJ_OSDEV_DMA) +
      • +
      +

      Note that some PCI devices may contain multiple software devices (see the example below).

      +

      See also Interoperability With Other Software for managing these devices without considering them as hwloc objects.

      +

      +

      +

      +

      +PCI devices and bridges

      +

      A PCI hierarchy is usually organized as follows: A hostbridge object ( HWLOC_OBJ_BRIDGE object with upstream type Host and downstream type PCI) is attached below a normal object (usually the entire machine or a NUMA node). There may be multiple hostbridges in the machine, attached to different places, but all PCI devices are below one of them (unless the Bridge object type is filtered-out).

      +

      Each hostbridge contains one or several children, either other bridges (usually PCI to PCI switches) or PCI devices (HWLOC_OBJ_PCI_DEVICE). The number of bridges between the hostbridge and a PCI device depends on the machine.

      +

      +

      +

      +

      +Consulting I/O devices and binding

      +

      I/O devices may be consulted by traversing the topology manually (with usual routines such as hwloc_get_obj_by_type()) or by using dedicated helpers (such as hwloc_get_pcidev_by_busid(), see Finding I/O objects).

      +

      I/O objects do not actually contain any locality information because their CPU sets and node sets are NULL. Their locality must be retrieved by walking up the object tree (through the parent link) until a non-I/O object is found (see hwloc_get_non_io_ancestor_obj()). This normal object should have non-NULL CPU sets and node sets which describe the processing units and memory that are immediately close to the I/O device. For instance the path from a OS device to its locality may go across a PCI device parent, one or several bridges, up to a Package node with the same locality.

      +

      Command-line tools are also aware of I/O devices. lstopo displays the interesting ones by default (passing --no-io disables it).

      +

      hwloc-calc and hwloc-bind may manipulate I/O devices specified by PCI bus ID or by OS device name.

        +
      • +pci=0000:02:03.0 is replaced by the set of CPUs that are close to the PCI device whose bus ID is given.
      • +
      • +os=eth0 is replaced by CPUs that are close to the I/O device whose software handle is called eth0.
      • +
      +

      This enables easy binding of I/O-intensive applications near the device they use.

      +

      +

      +

      +

      +Examples

      +

      The following picture shows a dual-package dual-core host whose PCI bus is connected to the first package and NUMA node.

      +
      + +
      +

      Six interesting PCI devices were discovered. However, hwloc found some corresponding software devices (eth0, eth1, sda, mlx4_0, ib0, and ib1) for only four of these physical devices. The other ones (PCI 102b:0532 and PCI 8086:3a20) are an unused IDE controller (no disk attached) and a graphic card (no corresponding software device reported to the user by the operating system).

      +

      On the contrary, it should be noted that three different software devices were found for the last PCI device (PCI 15b3:634a). Indeed this OpenFabrics HCA PCI device object contains one one OpenFabrics software device (mlx4_0) and two virtual network interface software devices (ib0 and ib1).

      +

      Here is the corresponding textual output:

      +
      Machine (24GB total)
      +  Package L#0
      +    NUMANode L#0 (P#0 12GB)
      +    L3 L#0 (8192KB)
      +      L2 L#0 (256KB) + L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0)
      +      L2 L#1 (256KB) + L1 L#1 (32KB) + Core L#1 + PU L#1 (P#2)
      +    HostBridge
      +      PCIBridge
      +        PCI 01:00.0 (Ethernet)
      +          Net "eth0"
      +        PCI 01:00.1 (Ethernet)
      +          Net "eth1"
      +      PCIBridge
      +        PCI 03:00.0 (RAID)
      +          Block "sda"
      +      PCIBridge
      +        PCI 04:03.0 (VGA)
      +      PCI 00:1f.2 (IDE)
      +      PCI 51:00.0 (InfiniBand)
      +        Net "ib0"
      +        Net "ib1"
      +        Net "mlx4_0"
      +  Package L#1
      +    NUMANode L#1 (P#1 12GB)
      +    L3 L#1 (8192KB)
      +      L2 L#2 (256KB) + L1 L#2 (32KB) + Core L#2 + PU L#2 (P#1)
      +      L2 L#3 (256KB) + L1 L#3 (32KB) + Core L#3 + PU L#3 (P#3)
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00400.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00400.html new file mode 100644 index 0000000000..93e35aa008 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00400.html @@ -0,0 +1,78 @@ + + + + + + + +Hardware Locality (hwloc): Miscellaneous objects + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Miscellaneous objects
      +
      +
      +

      +

      +

      +

      hwloc topologies may be annotated with Misc objects (of type HWLOC_OBJ_MISC) either automatically or by the user. This is a flexible way to annotate topologies with large sets of information since Misc objects may be inserted anywhere in the topology (to annotate specific objects or parts of the topology), even below other Misc objects, and each of them may contain multiple attributes (see also How do I annotate the topology with private notes?).

      +

      These Misc objects may have a subtype field to replace Misc with something else in the lstopo output.

      +

      +

      +

      +

      +Misc objects added by hwloc

      +

      hwloc only uses Misc objects when other object types are not sufficient, and when the Misc object type is not filtered-out anymore. This currently includes:

        +
      • +Memory modules (DIMMs), on Linux when privileged and when dmi-sysfs is supported by the kernel. These objects have a subtype field of value MemoryModule. They are currently always attached to the root object. Their attributes describe the DIMM vendor, model, etc. lstopo -v displays them as:
        Misc(MemoryModule) (P#1 DeviceLocation="Bottom-Slot 2(right)" BankLocation="BANK 2" Vendor=Elpida SerialNumber=21733667 AssetTag=9876543210 PartNumber="EBJ81UG8EFU0-GN-F ")
        +
      • +
      • +Displaying process binding in lstopo --top. These objects have a subtype field of value Process and a name attribute made of their PID and program name. They are attached below the object they are bound to. The textual lstopo displays them as:
        PU L#0 (P#0)
        +
        Misc(Process) 4445 myprogram
        +
      • +
      +

      +

      +

      +

      +Annotating topologies with Misc objects

      +

      The user may annotate hwloc topologies with its own Misc objects. This can be achieved with hwloc_topology_insert_misc_object() as well as hwloc-annotate command-line tool.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00401.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00401.html new file mode 100644 index 0000000000..55921c2a25 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00401.html @@ -0,0 +1,255 @@ + + + + + + + +Hardware Locality (hwloc): Object attributes + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Object attributes
      +
      +
      +

      +

      +

      +

      +Normal attributes

      +

      hwloc objects have many generic attributes in the hwloc_obj structure, for instance their logical_index or os_index (see Should I use logical or physical/OS indexes? and how?), depth or name.

      +

      The kind of object is first described by the obj->type generic attribute (an integer). OS devices also have a specific obj->attr->osdev.type integer for distinguishing between NICs, GPUs, etc.

      +

      Objects may also have an optional obj->subtype pointing to a better description string (displayed by lstopo either in place or after the main obj->type attribute):

        +
      • +NUMA nodes: subtype MCDRAM (on KNL) or GPUMemory (on POWER architecture with NVIDIA GPU memory shared over NVLink).
      • +
      • +Groups: subtype Cluster, Module, Tile, Compute Unit, Book or Drawer for different architecture-specific groups of CPUs (see also What are these Group objects in my topology?).
      • +
      • +OS devices (see also OS devices):
          +
        • +Co-processor: subtype OpenCL, LevelZero, CUDA, or VectorEngine.
        • +
        • +GPU: subtype RSMI (AMD GPU) or NVML (NVIDIA GPU).
        • +
        • +OpenFabrics: subtype BXI (Bull/Atos BXI HCA).
        • +
        • +Block: subtype Disk, NVDIMM, Tape, or Removable Media Device.
        • +
        +
      • +
      • +L3 Caches: subtype MemorySideCache when hwloc is configured to expose the KNL MCDRAM in Cache mode as a L3.
      • +
      • +PCI devices: subtype NVSwitch for NVLink switches (see also NVLinkBandwidth in Distances).
      • +
      • +Misc devices: subtype MemoryModule (see also Misc objects added by hwloc)
      • +
      +

      Each object also contains an attr field that, if non NULL, points to a union hwloc_obj_attr_u of type-specific attribute structures. For instance, a L2Cache object obj contains cache-specific information in obj->attr->cache, such as its size and associativity, cache type. See hwloc_obj_attr_u for details.

      +

      +

      +

      +

      +Custom string infos

      +

      Aside os these generic attribute fields, hwloc annotates many objects with string attributes that are made of a key and a value. Each object contains a list of such pairs that may be consulted manually (looking at the object infos array field) or using the hwloc_obj_get_info_by_name(). The user may additionally add new key-value pairs to any object using hwloc_obj_add_info() or the hwloc-annotate program.

      +

      Here is a non-exhaustive list of attributes that may be automatically added by hwloc. Note that these attributes heavily depend on the ability of the operating system to report them. Many of them will therefore be missing on some OS.

      +

      +

      +

      +

      +Hardware Platform Information

      +

      These info attributes are attached to the root object (Machine).

      +
      +
      PlatformName, PlatformModel, PlatformVendor, PlatformBoardID, PlatformRevision,
      +
      +
      SystemVersionRegister, ProcessorVersionRegister (Machine)
      +
      Some POWER/PowerPC-specific attributes describing the platform and processor. Currently only available on Linux. Usually added to Package objects, but can be in Machine instead if hwloc failed to discover any package.
      +
      DMIBoardVendor, DMIBoardName, etc.
      +
      DMI hardware information such as the motherboard and chassis models and vendors, the BIOS revision, etc., as reported by Linux under /sys/class/dmi/id/.
      +
      MemoryMode, ClusterMode
      +

      Intel Xeon Phi processor configuration modes. Available if hwloc-dump-hwdata was used (see Why do I need hwloc-dump-hwdata for memory on Intel Xeon Phi processor?) or if hwloc managed to guess them from the NUMA configuration.

      +

      The memory mode may be Cache, Flat, Hybrid50 (half the MCDRAM is used as a cache) or Hybrid25 (25% of MCDRAM as cache). The cluster mode may be Quadrant, Hemisphere, All2All, SNC2 or SNC4. See doc/examples/get-knl-modes.c in the source directory for an example of retrieving these attributes.

      +
      +
      +

      +

      +

      +

      +Operating System Information

      +

      These info attributes are attached to the root object (Machine).

      +
      +
      OSName, OSRelease, OSVersion, HostName, Architecture
      +
      The operating system name, release, version, the hostname and the architecture name, as reported by the Unix uname command.
      +
      LinuxCgroup
      +
      The name the Linux control group where the calling process is placed.
      +
      WindowsBuildEnvironment
      +
      Either MinGW or Cygwin when one of these environments was used during build.
      +
      +

      +

      +

      +

      +hwloc Information

      +

      Unless specified, these info attributes are attached to the root object (Machine).

      +
      +
      Backend (topology root, or specific object added by that backend)
      +
      The name of the hwloc backend/component that filled the topology. If several components were combined, multiple Backend keys may exist, with different values, for instance x86 and Linux in the root object and CUDA in CUDA OS device objects.
      +
      SyntheticDescription
      +
      The description string that was given to hwloc to build this synthetic topology.
      +
      hwlocVersion
      +
      The version number of the hwloc library that was used to generate the topology. If the topology was loaded from XML, this is not the hwloc version that loaded it, but rather the first hwloc instance that exported the topology to XML earlier.
      +
      ProcessName
      +
      The name of the process that contains the hwloc library that was used to generate the topology. If the topology was from XML, this is not the hwloc process that loaded it, but rather the first process that exported the topology to XML earlier.
      +
      +

      +

      +

      +

      +CPU Information

      +

      These info attributes are attached to Package objects, or to the root object (Machine) if package locality information is missing.

      +
      +
      CPUModel
      +
      The processor model name.
      +
      CPUVendor, CPUModelNumber, CPUFamilyNumber, CPUStepping
      +
      The processor vendor name, model number, family number, and stepping number. Currently available for x86 and Xeon Phi processors on most systems, and for ia64 processors on Linux (except CPUStepping).
      +
      CPURevision
      +
      A POWER/PowerPC-specific general processor revision number, currently only available on Linux.
      +
      CPUType
      +
      A Solaris-specific general processor type name, such as "i86pc".
      +
      +

      +

      +

      +

      +OS Device Information

      +

      These info attributes are attached to OS device objects specified in parentheses.

      +
      +
      Vendor, Model, Revision, SerialNumber, Size, SectorSize (Block OS devices)
      +
      The vendor and model names, revision, serial number, size (in KiB = 1024 bytes) and SectorSize (in bytes).
      +
      LinuxDeviceID (Block OS devices)
      +
      The major/minor device number such as 8:0 of Linux device.
      +
      GPUVendor, GPUModel (GPU or Co-Processor OS devices)
      +
      The vendor and model names of the GPU device.
      +
      OpenCLDeviceType, OpenCLPlatformIndex,
      +
      +
      OpenCLPlatformName, OpenCLPlatformDeviceIndex (OpenCL OS devices)
      +
      The type of OpenCL device, the OpenCL platform index and name, and the index of the device within the platform.
      +
      OpenCLComputeUnits, OpenCLGlobalMemorySize (OpenCL OS devices)
      +
      The number of compute units and global memory size of an OpenCL device. Sizes are in KiB (1024 bytes).
      +
      LevelZeroVendor, LevelZeroModel, LevelZeroBrand,
      +
      +
      LevelZeroSerialNumber, LevelZeroBoardNumber (LevelZero OS devices)
      +
      The name of the vendor, device model, brand of a Level Zero device, and its serial and board numbers.
      +
      LevelZeroDriverIndex, LevelZeroDriverDeviceIndex (LevelZero OS devices)
      +
      The index of the Level Zero driver within the list of drivers, and the index of the device within the list of devices managed by this driver.
      +
      LevelZeroSubdevices (LevelZero OS devices)
      +
      The number of subdevices below this OS device.
      +
      LevelZeroSubdeviceID (LevelZero OS subdevices)
      +
      The index of this subdevice within its parent.
      +
      LevelZeroDeviceType (LevelZero OS devices or subdevices)
      +
      A string describing the type of device, for instance "GPU", "CPU", "FPGA", etc.
      +
      LevelZeroNumSlices, LevelZeroNumSubslicesPerSlice,
      +
      +
      LevelZeroNumEUsPerSubslice, LevelZeroNumThreadsPerEU (LevelZero OS devices or subdevices)
      +
      The number of slices in the device, of subslices per slice, of execution units (EU) per subslice, and of threads per EU.
      +
      LevelZeroHBMSize, LevelZeroDDRSize, LevelZeroMemorySize (LevelZero OS devices or subdevices)
      +
      The amount of HBM or DDR memory of a LevelZero device or subdevice. Sizes are in KiB (1024 bytes). If the type of memory could not be determined, the generic name LevelZeroMemorySize is used. For devices that contain subdevices, the amount reported in the root device includes the memories of all its subdevices.
      +
      LevelZeroCQGroups, LevelZeroCQGroup2 (LevelZero OS devices or subdevices)
      +
      The number of completion queue groups, and the description of the third group (as N*0xX where N is the number of queues in the group, and 0xX is the hexadecimal bitmask of ze_command_queue_group_property_flag_t listing properties of those queues).
      +
      AMDUUID, AMDSerial (RSMI GPU OS devices)
      +
      The UUID and serial number of AMD GPUs.
      +
      RSMIVRAMSize, RSMIVisibleVRAMSize, RSMIGTTSize (RSMI GPU OS devices)
      +
      The amount of GPU memory (VRAM), of GPU memory that is visible from the host (Visible VRAM), and of system memory that is usable by the GPU (Graphics Translation Table). Sizes are in KiB (1024 bytes).
      +
      XGMIHiveID (RSMI GPU OS devices)
      +
      The ID of the group of GPUs (Hive) interconnected by XGMI links
      +
      XGMIPeers (RSMI GPU OS devices)
      +
      The list of RSMI OS devices that are directly connected to the current device through XGMI links. They are given as a space-separated list of object names, for instance rsmi2 rsmi3.
      +
      NVIDIAUUID, NVIDIASerial (NVML GPU OS devices)
      +
      The UUID and serial number of NVIDIA GPUs.
      +
      CUDAMultiProcessors, CUDACoresPerMP,
      +
      +
      CUDAGlobalMemorySize, CUDAL2CacheSize, CUDASharedMemorySizePerMP (CUDA OS devices)
      +
      The number of shared multiprocessors, the number of cores per multiprocessor, the global memory size, the (global) L2 cache size, and size of the shared memory in each multiprocessor of a CUDA device. Sizes are in KiB (1024 bytes).
      +
      VectorEngineModel, VectorEngineSerialNumber (VectorEngine OS devices)
      +
      The model and serial number of a VectorEngine device.
      +
      VectorEngineCores, VectorEngineMemorySize, VectorEngineLLCSize,
      +
      +
      VectorEngineL2Size, VectorEngineL1dSize, VectorEngineL1iSize (VectorEngine OS devices)
      +
      The number of cores, memory size, and the sizes of the (global) last level cache and of L2, L1d and L1i caches of a VectorEngine device. Sizes are in KiB (1024 bytes).
      +
      VectorEngineNUMAPartitioned (VectorEngine OS devices)
      +
      If this attribute exists, the VectorEngine device is configured in partitioned mode with multiple NUMA nodes.
      +
      Address, Port (Network interface OS devices)
      +
      The MAC address and the port number of a software network interface, such as eth4 on Linux.
      +
      NodeGUID, SysImageGUID, Port1State, Port2LID, Port2LMC, Port3GID1 (OpenFabrics OS devices)
      +
      The node GUID and GUID mask, the state of a port #1 (value is 4 when active), the LID and LID mask count of port #2, and GID #1 of port #3.
      +
      BXIUUID (OpenFabrics BXI OS devices)
      +
      The UUID of an Atos/Bull BXI HCA.
      +
      +

      +

      +

      +

      +Other Object-specific Information

      +

      These info attributes are attached to objects specified in parentheses.

      +
      +
      DAXDevice (NUMA Nodes)
      +
      The name of the Linux DAX device that was used to expose a non-volatile memory region as a volatile NUMA node.
      +
      PCIBusID (GPUMemory NUMA Nodes)
      +
      The PCI bus ID of the GPU whose memory is exposed in this NUMA node.
      +
      Inclusive (Caches)
      +
      The inclusiveness of a cache (1 if inclusive, 0 otherwise). Currently only available on x86 processors.
      +
      SolarisProcessorGroup (Group)
      +
      The Solaris kstat processor group name that was used to build this Group object.
      +
      PCIVendor, PCIDevice (PCI devices and bridges)
      +
      The vendor and device names of the PCI device.
      +
      PCISlot (PCI devices or Bridges)
      +
      The name/number of the physical slot where the device is plugged. If the physical device contains PCI bridges above the actual PCI device, the attribute may be attached to the highest bridge (i.e. the first object that actually appears below the physical slot).
      +
      Vendor, AssetTag, PartNumber, DeviceLocation, BankLocation (MemoryModule Misc objects)
      +
      Information about memory modules (DIMMs) extracted from SMBIOS.
      +
      +

      +

      +

      +

      +User-Given Information

      +

      Here is a non-exhaustive list of user-provided info attributes that have a special meaning:

      +
      lstopoStyle
      +
      Enforces the style of an object (background and text colors) in the graphical output of lstopo. See CUSTOM COLORS in the lstopo(1) manpage for details.
      +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00402.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00402.html new file mode 100644 index 0000000000..b4b5e397a7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00402.html @@ -0,0 +1,116 @@ + + + + + + + +Hardware Locality (hwloc): Topology Attributes: Distances, Memory Attributes and CPU Kinds + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Topology Attributes: Distances, Memory Attributes and CPU Kinds
      +
      +
      +

      +

      +

      +

      Besides the hierarchy of objects and individual object attributes (see Object attributes), hwloc may also expose finer information about the hardware organization.

      +

      +

      +

      +

      +Distances

      +

      A machine with 4 CPUs may have identical links between every pairs of CPUs, or those CPUs could also only be connected through a ring. In the ring case, accessing the memory of nearby CPUs is slower than local memory, but it is also faster than accessing the memory of CPU on the opposite side of the ring. These deep details cannot be exposed in the hwloc hierarchy, that is why hwloc also exposes distances.

      +

      Distances are matrices of values between sets of objects, usually latencies or bandwidths. By default, hwloc tries to get a matrix of relative latencies between NUMA nodes when exposed by the hardware.

      +

      In the aforementioned ring case, the matrix could report 10 for latency between a NUMA node and itself, 20 for nearby nodes, and 30 for nodes that are opposites on the ring. Those are theoretical values exposed by hardware vendors (in the System Locality Distance Information Table (SLIT) in the ACPI) rather than physical latencies. They are mostly meant for comparing node relative distances.

      +

      Distances structures currently created by hwloc are:

      +
      NUMALatency (Linux, Solaris, FreeBSD)
      +
      This is the matrix of theoretical latencies described above.
      +
      XGMIBandwidth (RSMI)
      +

      This is the matrix of unidirectional XGMI bandwidths between AMD GPUs (in MB/s). It contains 0 when there is no direct XGMI link between objects. Values on the diagonal are artificially set to very high so that local access always appears faster than remote access.

      +

      GPUs are identified by RSMI OS devices such as "rsmi0". They may be converted into the corresponding OpenCL or PCI devices using hwloc_get_obj_with_same_locality() or the hwloc-annotate tool.

      +

      hwloc_distances_transform() or hwloc-annotate may also be used to transform this matrix into something more convenient, for instance by replacing bandwidths with numbers of links between peers.

      +
      +
      XGMIHops (RSMI)
      +
      This matrix lists the number of XGMI hops between AMD GPUs. It reports 1 when there is a direct link between two distinct GPUs. If there is no XGMI route between them, the value is 0. The number of hops between a GPU and itself (on the diagonal) is 0 as well.
      +
      NVLinkBandwidth (NVML)
      +

      This is the matrix of unidirectional NVLink bandwidths between NVIDIA GPUs (in MB/s). It contains 0 when there is no direct NVLink between objects. When there are multiple links, their bandwidth is aggregated. Values on the diagonal are artificially set to very high so that local access always appears faster than remote access.

      +

      On POWER platforms, NVLinks may also connects GPUs to CPUs. On NVIDIA platforms such as DGX-2, a NVSwitch may interconnect GPUs through NVLinks. In these cases, the distances structure is heterogeneous. GPUs always appear first in the matrix (as NVML OS devices such as "nvml0"), and non-GPU objects may appear at the end (Package for POWER processors, PCI device for NVSwitch).

      +

      NVML OS devices may be converted into the corresponding CUDA, OpenCL or PCI devices using hwloc_get_obj_with_same_locality() or the hwloc-annotate tool.

      +

      hwloc_distances_transform() or hwloc-annotate may also be used to transform this matrix into something more convenient, for instance by removing switches or CPU ports, or by replacing bandwidths with numbers of links between peers.

      +

      When a NVSwitch interconnects GPUs, only links between one GPU and different NVSwitch ports are reported. They may be merged into a single switch port with hwloc_distances_transform() or hwloc-annotate. Or a transitive closure may also be applied to report the bandwidth between GPUs across the NVSwitch.

      +
      +
      +

      Users may also specify their own matrices between any set of objects, even if these objects are of different types (e.g. bandwidths between GPUs and CPUs).

      +

      The entire API is located in hwloc/distances.h. See also Retrieve distances between objects, as well as Helpers for consulting distance matrices and Add distances between objects.

      +

      +

      +

      +

      +Memory Attributes

      +

      Machines with heterogeneous memory, for instance high-bandwidth memory (HBM), normal memory (DDR), and/or high-capacity slow memory (such as non-volatile memory DIMMs, NVDIMMs) require applications to allocate buffers in the appropriate target memory depending on performance and capacity needs. Those target nodes may be exposed in the hwloc hierarchy as different memory children but there is a need for performance information to select the appropriate one.

      +

      hwloc memory attributes are designed to expose memory information such as latency, bandwidth, etc. Users may also specify their own attributes and values.

      +

      The memory attributes API is located in hwloc/memattrs.h, see Comparing memory node attributes for finding where to allocate on and Managing memory attributes for details.

      +

      +

      +

      +

      +CPU Kinds

      +

      Hybrid CPUs may contain different kinds of cores. The CPU kinds API in hwloc/cpukinds.h provides a way to list the sets of PUs in each kind and get some optional information about their hardware characteristics and efficiency.

      +

      If the operating system provides efficiency information (e.g. Windows 10, MacOS X / Darwin and some Linux kernels), it is used to rank hwloc CPU kinds by efficiency. Otherwise, hwloc implements several heuristics based on frequencies and core types (see HWLOC_CPUKINDS_RANKING in Environment Variables).

      +

      The ranking shows energy-efficient CPUs first, and high-performance power-hungry cores last.

      +

      These CPU kinds may be annotated with the following native attributes:

      +
      FrequencyMaxMHz (Linux)
      +
      The maximal operating frequency of the core, as reported by cpufreq drivers on Linux.
      +
      FrequencyBaseMHz (Linux)
      +
      The base operating frequency of the core, as reported by some cpufreq drivers on Linux (e.g. intel_pstate).
      +
      CoreType (x86)
      +
      A string describing the kind of core, currently IntelAtom or IntelCore, as reported by the x86 CPUID instruction on some Intel processors.
      +
      LinuxCapacity (Linux)
      +
      The Linux-specific CPU capacity found in sysfs, as reported by the Linux kernel on some recent platforms. Higher values usually mean that the Linux scheduler considers the core as high-performance rather than energy-efficient.
      +
      LinuxCPUType (Linux)
      +
      The Linux-specific CPU type found in sysfs, such as intel_atom_0, as reported by future Linux kernels on some Intel processors.
      +
      DarwinCompatible (Darwin / Mac OS X)
      +
      The compatibility attribute of the CPUs as found in the IO registry on Darwin / Mac OS X. For instance apple,icestorm;ARM,v8 for energy-efficient cores and apple,firestorm;ARM,v8 on performance cores on Apple M1 CPU.
      +
      +

      See Kinds of CPU cores for details.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00403.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00403.html new file mode 100644 index 0000000000..e7f8234f40 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00403.html @@ -0,0 +1,85 @@ + + + + + + + +Hardware Locality (hwloc): Importing and exporting topologies from/to XML files + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Importing and exporting topologies from/to XML files
      +
      +
      +

      +

      +

      +

      hwloc offers the ability to export topologies to XML files and reload them later. This is for instance useful for loading topologies faster (see I do not want hwloc to rediscover my enormous machine topology every time I rerun a process), manipulating other nodes' topology, or avoiding the need for privileged processes (see Does hwloc require privileged access?).

      +

      Topologies may be exported to XML files thanks to hwloc_topology_export_xml(), or to a XML memory buffer with hwloc_topology_export_xmlbuffer(). The lstopo program can also serve as a XML topology export tool.

      +

      XML topologies may then be reloaded later with hwloc_topology_set_xml() and hwloc_topology_set_xmlbuffer(). The HWLOC_XMLFILE environment variable also tells hwloc to load the topology from the given XML file (see Environment Variables).

      +
      Note
      Loading XML topologies disables binding because the loaded topology may not correspond to the physical machine that loads it. This behavior may be reverted by asserting that loaded file really matches the underlying system with the HWLOC_THISSYSTEM environment variable or the HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM topology flag.
      +
      +The topology flag HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES may be used to load a XML topology that contains the entire machine and restrict it to the part that is actually available to the current process (e.g. when Linux Cgroup/Cpuset are used to restrict the set of resources).
      +
      +hwloc also offers the ability to export/import Topology differences.
      +
      +XML topology files are not localized. They use a dot as a decimal separator. Therefore any exported topology can be reloaded on any other machine without requiring to change the locale.
      +
      +XML exports contain all details about the platform. It means that two very similar nodes still have different XML exports (e.g. some serial numbers or MAC addresses are different). If a less precise exporting/importing is required, one may want to look at Synthetic topologies instead.
      +

      +

      +

      +

      +libxml2 and minimalistic XML backends

      +

      hwloc offers two backends for importing/exporting XML.

      +

      First, it can use the libxml2 library for importing/exporting XML files. It features full XML support, for instance when those files have to be manipulated by non-hwloc software (e.g. a XSLT parser). The libxml2 backend is enabled by default if libxml2 development headers are available (the relevant development package is usually libxml2-devel or libxml2-dev).

      +

      If libxml2 is not available at configure time, or if --disable-libxml2 is passed, hwloc falls back to a custom backend. Contrary to the aforementioned full XML backend with libxml2, this minimalistic XML backend cannot be guaranteed to work with external programs. It should only be assumed to be compatible with the same hwloc release (even if using the libxml2 backend). Its advantage is, however, to always be available without requiring any external dependency.

      +

      If libxml2 is available but the core hwloc library should not directly depend on it, the libxml2 support may be built as a dynamicall-loaded plugin. One should pass --enable-plugins to enable plugin support (when supported) and build as plugins all component that support it. Or pass --enable-plugins=xml_libxml to only build this libxml2 support as a plugin.

      +

      +

      +

      +

      +XML import error management

      +

      Importing XML files can fail at least because of file access errors, invalid XML syntax, non-hwloc-valid XML contents, or incompatibilities between hwloc releases (see Are XML topology files compatible between hwloc releases?).

      +

      Both backend cannot detect all these errors when the input XML file or buffer is selected (when hwloc_topology_set_xml() or hwloc_topology_set_xmlbuffer() is called). Some errors such non-hwloc-valid contents can only be detected later when loading the topology with hwloc_topology_load().

      +

      It is therefore strongly recommended to check the return value of both hwloc_topology_set_xml() (or hwloc_topology_set_xmlbuffer()) and hwloc_topology_load() to handle all these errors.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00404.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00404.html new file mode 100644 index 0000000000..82629c928e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00404.html @@ -0,0 +1,116 @@ + + + + + + + +Hardware Locality (hwloc): Synthetic topologies + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Synthetic topologies
      +
      +
      +

      +

      +

      +

      hwloc may load fake or remote topologies so as to consult them without having the underlying hardware available. Aside from loading XML topologies, hwloc also enables the building of synthetic topologies that are described by a single string listing the arity of each levels.

      +

      For instance, lstopo may create a topology made of 2 packages, containing a single NUMA node and a L2 cache above two single-threaded cores:

      +
      $ lstopo -i "pack:2 node:1 l2:1 core:2 pu:1" -
      +Machine (2048MB)
      +  Package L#0
      +    NUMANode L#0 (P#0 1024MB)
      +    L2 L#0 (4096KB)
      +      Core L#0 + PU L#0 (P#0)
      +      Core L#1 + PU L#1 (P#1)
      +  Package L#1
      +    NUMANode L#1 (P#1 1024MB)
      +    L2 L#1 (4096KB)
      +      Core L#2 + PU L#2 (P#2)
      +      Core L#3 + PU L#3 (P#3)
      +

      Replacing - with file.xml in this command line will export this topology to XML as usual.

      +
      Note
      Synthetic topologies offer a very basic way to export a topology and reimport it on another machine. It is a lot less precise than XML but may still be enough when only the hierarchy of resources matters.
      +

      +

      +

      +

      +Synthetic description string

      +

      Each item in the description string gives the type of the level and the number of such children under each object of the previous level. That is why the above topology contains 4 cores (2 cores times 2 nodes).

      +

      These type names must be written as numanode, package, core, l2u, l1i, pu, group (hwloc_obj_type_sscanf() is used for parsing the type names). They do not need to be written case-sensitively, nor entirely (as long as there is no ambiguity, 2 characters such as ma select a Machine level). Note that I/O and Misc objects are not available.

      +

      Instead of specifying the type of each level, it is possible to just specify the arities and let hwloc choose all types according to usual topologies. The following examples are therefore equivalent:

      $ lstopo -i "2 3 4 5 6"
      +$ lstopo -i "Package:2 NUMANode:3 L2Cache:4 Core:5 PU:6"
      +

      NUMA nodes are handled in a special way since they are not part of the main CPU hierarchy but rather attached below it as memory children. Thus, NUMANode:3 actually means Group:3 where one NUMA node is attached below each group. These groups are merged back into the parent when possible (typically when a single NUMA node is requested below each parent).

      +

      It is also possible the explicitly attach NUMA nodes to specific levels. For instance, a topology similar to a Intel Xeon Phi processor (with 2 NUMA nodes per 16-core group) may be created with:

      $ lstopo -i "package:1 group:4 [numa] [numa] core:16 pu:4"
      +

      The root object does not appear in the synthetic description string since it is always a Machine object. Therefore the Machine type is disallowed in the description as well.

      +

      A NUMA level (with a single NUMA node) is automatically added if needed.

      +

      Each item may be followed parentheses containing a list of space-separated attributes. For instance:

        +
      • +L2iCache:2(size=32kB) specifies 2 children of 32kB level-2 instruction caches. The size may be specified in bytes (without any unit suffix) or as TB, GB, MB or kB.
      • +
      • +NUMANode:3(memory=16MB) specifies 3 NUMA nodes with 16MB each. The size may be specified in bytes (without any unit suffix) or as TB, GB, MB or kB.
      • +
      • +PU:2(indexes=0,2,1,3) specifies 2 PU children and the full list of OS indexes among the entire set of 4 PU objects.
      • +
      • +PU:2(indexes=numa:core) specifies 2 PU children whose OS indexes are interleaved by NUMA node first and then by package.
      • +
      • +Attributes in parentheses at the very beginning of the description apply to the root object.
      • +
      +

      hwloc command-line tools may modify a synthetic topology, for instance to customize object attributes, or to remove some objects to make the topology heterogeneous or asymmetric. See many examples in How do I create a custom heterogeneous and asymmetric topology?.

      +

      +

      +

      +

      +Loading a synthetic topology

      +

      Aside from lstopo, the hwloc programming interface offers the same ability by passing the synthetic description string to hwloc_topology_set_synthetic() before hwloc_topology_load().

      +

      Synthetic topologies are created by the synthetic component. This component may be enabled by force by setting the HWLOC_SYNTHETIC environment variable to something such as node:2 core:3 pu:4.

      +

      Loading a synthetic topology disables binding support since the topology usually does not match the underlying hardware. Binding may be reenabled as usual by setting HWLOC_THISSYSTEM=1 in the environment or by setting the HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM topology flag.

      +

      +

      +

      +

      +Exporting a topology as a synthetic string

      +

      The function hwloc_topology_export_synthetic() may export a topology as a synthetic string. It offers a convenient way to quickly describe the contents of a machine. The lstopo tool may also perform such an export by forcing the output format.

      +
      $ lstopo --of synthetic --no-io
      +Package:1 L3Cache:1 L2Cache:2 L1dCache:1 L1iCache:1 Core:1 PU:2
      +

      The exported string may be passed back to hwloc for recreating another similar topology (see also Are synthetic strings compatible between hwloc releases?). The entire tree will be similar, but some attributes such as the processor model will be missing.

      +

      Such an export is only possible if the topology is totally symmetric. It means that the symmetric_subtree field of the root object is set. Also memory children should be attached in a symmetric way (e.g. the same number of memory children below each Package object, etc.). However, I/O devices and Misc objects are ignored when looking at symmetry and exporting the string.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00405.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00405.html new file mode 100644 index 0000000000..77f52fd272 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00405.html @@ -0,0 +1,110 @@ + + + + + + + +Hardware Locality (hwloc): Interoperability With Other Software + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Interoperability With Other Software
      +
      +
      +

      +

      +

      +

      Although hwloc offers its own portable interface, it still may have to interoperate with specific or non-portable libraries that manipulate similar kinds of objects. hwloc therefore offers several specific "helpers" to assist converting between those specific interfaces and hwloc.

      +

      Some external libraries may be specific to a particular OS; others may not always be available. The hwloc core therefore generally does not explicitly depend on these types of libraries. However, when a custom application uses or otherwise depends on such a library, it may optionally include the corresponding hwloc helper to extend the hwloc interface with dedicated helpers.

      +

      Most of these helpers use structures that are specific to these external libraries and only meaningful on the local machine. If so, the helper requires the input topology to match the current machine. Some helpers also require I/O device discovery to be supported and enabled for the current topology.

      +
      +
      Linux specific features
      +

      hwloc/linux.h offers Linux-specific helpers that utilize some non-portable features of the Linux system, such as binding threads through their thread ID ("tid") or parsing kernel CPU mask files. See Linux-specific helpers.

      +

      +
      +
      Windows specific features
      +

      hwloc/windows.h offers Windows-specific helpers to query information about Windows processor groups. See Windows-specific helpers.

      +

      +
      +
      Linux libnuma
      +

      hwloc/linux-libnuma.h provides conversion helpers between hwloc CPU sets and libnuma-specific types, such as bitmasks. It helps you use libnuma memory-binding functions with hwloc CPU sets. See Interoperability with Linux libnuma bitmask and Interoperability with Linux libnuma unsigned long masks.

      +

      +
      +
      Glibc
      +

      hwloc/glibc-sched.h offers conversion routines between Glibc and hwloc CPU sets in order to use hwloc with functions such as sched_getaffinity() or pthread_attr_setaffinity_np(). See Interoperability with glibc sched affinity.

      +

      +
      +
      OpenFabrics Verbs
      +

      hwloc/openfabrics-verbs.h helps interoperability with the OpenFabrics Verbs interface. For example, it can return a list of processors near an OpenFabrics device. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See Interoperability with OpenFabrics.

      +

      +
      +
      OpenCL
      +

      hwloc/opencl.h enables interoperability with the OpenCL interface. Only the AMD and NVIDIA implementations currently offer locality information. It may return the list of processors near a GPU given as a cl_device_id. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See Interoperability with OpenCL.

      +

      +
      +
      oneAPI Level Zero
      +

      hwloc/levelzero.h enables interoperability with the oneAPI Level Zero interface. It may return the list of processors near an accelerator or GPU. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See Interoperability with the oneAPI Level Zero interface..

      +

      +
      +
      AMD ROCm SMI Library (RSMI)
      +

      hwloc/rsmi.h enables interoperability with the AMD ROCm SMI interface. It may return the list of processors near an AMD GPU. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See Interoperability with the ROCm SMI Management Library.

      +

      +
      +
      NVIDIA CUDA
      +

      hwloc/cuda.h and hwloc/cudart.h enable interoperability with NVIDIA CUDA Driver and Runtime interfaces. For instance, it may return the list of processors near NVIDIA GPUs. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See Interoperability with the CUDA Driver API and Interoperability with the CUDA Runtime API.

      +

      +
      +
      NVIDIA Management Library (NVML)
      +

      hwloc/nvml.h enables interoperability with the NVIDIA NVML interface. It may return the list of processors near a NVIDIA GPU given as a nvmlDevice_t. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See Interoperability with the NVIDIA Management Library.

      +

      +
      +
      NVIDIA displays
      +

      hwloc/gl.h enables interoperability with NVIDIA displays using the NV-CONTROL X extension (NVCtrl library). If I/O device discovery is enabled, it may return the OS device hwloc object that corresponds to a display given as a name such as :0.0 or given as a port/device pair (server/screen). See Interoperability with OpenGL displays.

      +

      +
      +
      Taskset command-line tool
      +

      The taskset command-line tool is widely used for binding processes. It manipulates CPU set strings in a format that is slightly different from hwloc's one (it does not divide the string in fixed-size subsets and separates them with commas). To ease interoperability, hwloc offers routines to convert hwloc CPU sets from/to taskset-specific string format. See for instance hwloc_bitmap_taskset_snprintf() in The bitmap API.

      +

      Most hwloc command-line tools also support the --taskset option to manipulate taskset-specific strings.

      +

      +
      +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00406.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00406.html new file mode 100644 index 0000000000..b126508fb7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00406.html @@ -0,0 +1,91 @@ + + + + + + + +Hardware Locality (hwloc): Thread Safety + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Thread Safety
      +
      +
      +

      +

      +

      +

      Like most libraries that mainly fill data structures, hwloc is not thread safe but rather reentrant: all state is held in a hwloc_topology_t instance without mutex protection. That means, for example, that two threads can safely operate on and modify two different hwloc_topology_t instances, but they should not simultaneously invoke functions that modify the same instance. Similarly, one thread should not modify a hwloc_topology_t instance while another thread is reading or traversing it. However, two threads can safely read or traverse the same hwloc_topology_t instance concurrently.

      +

      When running in multiprocessor environments, be aware that proper thread synchronization and/or memory coherency protection is needed to pass hwloc data (such as hwloc_topology_t pointers) from one processor to another (e.g., a mutex, semaphore, or a memory barrier). Note that this is not a hwloc-specific requirement, but it is worth mentioning.

      +

      For reference, hwloc_topology_t modification operations include (but may not be limited to):

      +
      +
      Creation and destruction
      +

      hwloc_topology_init(), hwloc_topology_load(), hwloc_topology_destroy() (see Topology Creation and Destruction) imply major modifications of the structure, including freeing some objects. No other thread cannot access the topology or any of its objects at the same time.

      +

      Also references to objects inside the topology are not valid anymore after these functions return.

      +

      +
      +
      Runtime topology modifications
      +

      hwloc_topology_insert_misc_object(), hwloc_topology_alloc_group_object(), and hwloc_topology_insert_group_object() (see Modifying a loaded Topology) may modify the topology significantly by adding objects inside the tree, changing the topology depth, etc.

      +

      hwloc_distances_add_commit() and hwloc_distances_remove() (see Add distances between objects) modify the list of distance structures in the topology, and the former may even insert new Group objects.

      +

      hwloc_memattr_register() and hwloc_memattr_set_value() (see Managing memory attributes) modify the memory attributes of the topology.

      +

      hwloc_topology_restrict() modifies the topology even more dramatically by removing some objects.

      +

      hwloc_topology_refresh() updates some internal cached structures. (see below).

      +

      Although references to former objects may still be valid after insertion or restriction, it is strongly advised to not rely on any such guarantee and always re-consult the topology to reacquire new instances of objects.

      +

      +
      +
      Consulting distances
      +

      hwloc_distances_get() and its variants are thread-safe except if the topology was recently modified (because distances may involve objects that were removed).

      +

      Whenever the topology is modified (see above), hwloc_topology_refresh() should be called in the same thread-safe context to force the refresh of internal distances structures. A call to hwloc_distances_get() may also refresh distances-related structures.

      +

      Once this refresh has been performed, multiple hwloc_distances_get() may then be performed concurrently by multiple threads.

      +

      +
      +
      Consulting memory attributes
      +

      Functions consulting memory attributes in hwloc/memattrs.h are thread-safe except if the topology was recently modified (because memory attributes may involve objects that were removed).

      +

      Whenever the topology is modified (see above), hwloc_topology_refresh() should be called in the same thread-safe context to force the refresh of internal memory attribute structures. A call to hwloc_memattr_get_value() or hwloc_memattr_get_targets() may also refresh internal structures for a given memory attribute.

      +

      Once this refresh has been performed, multiple functions consulting memory attributes may then be performed concurrently by multiple threads.

      +

      +
      +
      Locating topologies
      +

      hwloc_topology_set_* (see Topology Detection Configuration and Query) do not modify the topology directly, but they do modify internal structures describing the behavior of the upcoming invocation of hwloc_topology_load(). Hence, all of these functions should not be used concurrently.

      +

      +
      +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00407.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00407.html new file mode 100644 index 0000000000..5382b7f655 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00407.html @@ -0,0 +1,133 @@ + + + + + + + +Hardware Locality (hwloc): Components and plugins + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Components and plugins
      +
      +
      +

      +

      +

      +

      hwloc is organized in components that are responsible for discovering objects. Depending on the topology configuration, some components will be used, some will be ignored. The usual default is to enable the native operating system component, (e.g. linux or solaris) and the pci miscellaneous component. If available, an architecture-specific component (such as x86) may also improve the topology detection.

      +

      If a XML topology is loaded, the xml discovery component will be used instead of all other components. It internally uses a specific class of components for the actual XML import/export routines (xml_libxml and xml_nolibxml) but these will not be discussed here (see libxml2 and minimalistic XML backends).

      +

      +

      +

      +

      +Components enabled by default

      +

      The hwloc core contains a list of components sorted by priority. Each one is enabled as long as it does not conflict with the previously enabled ones. This includes native operating system components, architecture-specific ones, and if available, I/O components such as pci.

      +

      Usually the native operating system component (when it exists, e.g. linux or aix) is enabled first. Then hwloc looks for an architecture specific component (e.g. x86). Finally there also exist a basic component (no_os) that just tries to discover the number of PUs in the system.

      +

      Each component discovers as much topology information as possible. Most of them, including most native OS components, do nothing unless the topology is still empty. Some others, such as x86 and pci, can complete and annotate what other backends found earlier. Discovery is performed by phases: CPUs are first discovered, then memory is attached, then PCI, etc.

      +

      Default priorities ensure that clever components are invoked first. Native operating system components have higher priorities, and are therefore invoked first, because they likely offer very detailed topology information. If needed, it will be later extended by architecture-specific information (e.g. from the x86 component).

      +

      If any configuration function such as hwloc_topology_set_xml() is used before loading the topology, the corresponding component is enabled first. Then, as usual, hwloc enables any other component (based on priorities) that does not conflict.

      +

      Certain components that manage a virtual topology, for instance XML topology import or synthetic topology description, conflict with all other components. Therefore, one of them may only be loaded (e.g. with hwloc_topology_set_xml()) if no other component is enabled.

      +

      The environment variable HWLOC_COMPONENTS_VERBOSE may be set to get verbose messages about component registration (including their priority) and enabling.

      +

      +

      +

      +

      +Selecting which components to use

      +

      If no topology configuration functions such as hwloc_topology_set_synthetic() have been called, plugins may be selected with environment variables such as HWLOC_XMLFILE, HWLOC_SYNTHETIC, HWLOC_FSROOT, or HWLOC_CPUID_PATH (see Environment Variables).

      +

      Finally, the environment variable HWLOC_COMPONENTS resets the list of selected components. If the variable is set and empty (or set to a single comma separating nothing, since some operating systems do not accept empty variables), the normal plugin priority order is used.

      +

      If the variable is set to x86 in this variable will cause the x86 component to take precedence over any other component, including the native operating system component. It is therefore loaded first, before hwloc tries to load all remaining non-conflicting components. In this case, x86 would take care of discovering everything it supports, instead of only completing what the native OS information. This may be useful if the native component is buggy on some platforms.

      +

      It is possible to prevent some components from being loaded by prefixing their name with - in the list. For instance x86,-pci will load the x86 component, then let hwloc load all the usual components except pci. A single component phase may also be blacklisted, for instance with -linux:io. hwloc_topology_set_components() may also be used inside the program to prevent the loading of a specific component (or phases) for the target topology.

      +

      It is possible to prevent all remaining components from being loaded by placing stop in the environment variable. Only the components listed before this keyword will be enabled.

      +

      +

      +

      +

      +Loading components from plugins

      +

      Components may optionally be built as plugins so that the hwloc core library does not directly depend on their dependencies (for instance the libpciaccess library). Plugin support may be enabled with the --enable-plugins configure option. All components buildable as plugins will then be built as plugins. The configure option may be given a comma-separated list of component names to specify the exact list of components to build as plugins.

      +

      Plugins are built as independent dynamic libraries that are installed in $libdir/hwloc. All plugins found in this directory are loaded during topology_init() (unless blacklisted in HWLOC_PLUGINS_BLACKLIST, see Environment Variables). A specific list of directories (colon-separated) to scan may be specified in the HWLOC_PLUGINS_PATH environment variable.

      +

      Note that loading a plugin just means that the corresponding component is registered to the hwloc core. Components are then only enabled if the topology configuration requests it, as explained in the previous sections.

      +

      Also note that plugins should carefully be enabled and used when embedding hwloc in another project, see Embedding hwloc in Other Software for details.

      +

      +

      +

      +

      +Existing components and plugins

      +

      All components distributed within hwloc are listed below. The list of actually available components may be listed at running with the HWLOC_COMPONENTS_VERBOSE environment variable (see Environment Variables).

      +
      +
      linux
      +
      The official component for discovering CPU, memory and I/O devices on Linux. It discovers PCI devices without the help of external libraries such as libpciaccess, but requires the pci component for adding vendor/device names to PCI objects. It also discovers many kinds of Linux-specific OS devices.
      +
      aix, darwin, freebsd, hpux, netbsd, solaris, windows
      +
      Each officially supported operating system has its own native component, which is statically built when supported, and which is used by default.
      +
      x86
      +
      The x86 architecture (either 32 or 64 bits) has its own component that may complete or replace the previously-found CPU information. It is statically built when supported.
      +
      bgq
      +
      This component is specific to IBM BlueGene/Q compute node (running CNK). It is built and enabled by default when --host=powerpc64-bgq-linux is passed to configure (see How do I build hwloc for BlueGene/Q?).
      +
      no_os
      +
      A basic component that just tries to detect the number of processing units in the system. It mostly serves on operating systems that are not natively supported. It is always statically built.
      +
      pci
      +
      PCI object discovery uses the external pciaccess library (aka libpciaccess); see I/O Devices. It may also annotate existing PCI devices with vendor and device names. It may be built as a plugin.
      +
      opencl
      +
      The OpenCL component creates co-processor OS device objects such as opencl0d0 (first device of the first OpenCL platform) or opencl1d3 (fourth device of the second platform). Only the AMD and NVIDIA OpenCL implementations currently offer locality information. It may be built as a plugin.
      +
      rsmi
      +
      This component creates GPU OS device objects such as rsmi0 for describing AMD GPUs. It may be built as a plugin.
      +
      levelzero
      +
      This component creates co-processor OS device objects such as ze0 for describing oneAPI Level Zero devices. It may also create sub-OS-devices such as ze0.0 inside those devices. It may be built as a plugin.
      +
      cuda
      +
      This component creates co-processor OS device objects such as cuda0 that correspond to NVIDIA GPUs used with CUDA library. It may be built as a plugin.
      +
      nvml
      +
      Probing the NVIDIA Management Library creates OS device objects such as nvml0 that are useful for batch schedulers. It also detects the actual PCIe link bandwidth without depending on power management state and without requiring administrator privileges. It may be built as a plugin.
      +
      gl
      +
      Probing the NV-CONTROL X extension (NVCtrl library) creates OS device objects such as :0.0 corresponding to NVIDIA displays. They are useful for graphical applications that need to place computation and/or data near a rendering GPU. It may be built as a plugin.
      +
      synthetic
      +
      Synthetic topology support (see Synthetic topologies) is always built statically.
      +
      xml
      +
      XML topology import (see Importing and exporting topologies from/to XML files) is always built statically. It internally uses one of the XML backends (see libxml2 and minimalistic XML backends).
        +
      • +xml_nolibxml is a basic and hwloc-specific XML import/export. It is always statically built.
      • +
      • +xml_libxml relies on the external libxml2 library for provinding a feature-complete XML import/export. It may be built as a plugin.
      • +
      +
      +
      fake
      +
      A dummy plugin that does nothing but is used for debugging plugin support.
      +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00408.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00408.html new file mode 100644 index 0000000000..0aa30cafd1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00408.html @@ -0,0 +1,117 @@ + + + + + + + +Hardware Locality (hwloc): Embedding hwloc in Other Software + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Embedding hwloc in Other Software
      +
      +
      +

      +

      +

      +

      It can be desirable to include hwloc in a larger software package (be sure to check out the LICENSE file) so that users don't have to separately download and install it before installing your software. This can be advantageous to ensure that your software uses a known-tested/good version of hwloc, or for use on systems that do not have hwloc pre-installed.

      +

      When used in "embedded" mode, hwloc will:

      +
        +
      • not install any header files
      • +
      • not build any documentation files
      • +
      • not build or install any executables or tests
      • +
      • not build libhwloc.* – instead, it will build libhwloc_embedded.*
      • +
      +

      There are two ways to put hwloc into "embedded" mode. The first is directly from the configure command line:

      +
      shell$ ./configure --enable-embedded-mode ...
      +

      The second requires that your software project uses the GNU Autoconf / Automake / Libtool tool chain to build your software. If you do this, you can directly integrate hwloc's m4 configure macro into your configure script. You can then invoke hwloc's configuration tests and build setup by calling a m4 macro (see below).

      +

      Although hwloc dynamic shared object plugins may be used in embedded mode, the embedder project will have to manually setup dlopen or libltdl in its build system so that hwloc can load its plugins at run time. Also, embedders should be aware of complications that can arise due to public and private linker namespaces (e.g., if the embedder project is loaded into a private namespace and then hwloc tries to dynamically load its plugins, such loading may fail since the hwloc plugins can't find the hwloc symbols they need). The embedder project is strongly advised not to use hwloc's dynamically loading plugins / dlopen / libltdl capability.

      +

      +

      +

      +

      +Using hwloc's M4 Embedding Capabilities

      +

      Every project is different, and there are many different ways of integrating hwloc into yours. What follows is one example of how to do it.

      +

      If your project uses recent versions Autoconf, Automake, and Libtool to build, you can use hwloc's embedded m4 capabilities. We have tested the embedded m4 with projects that use Autoconf 2.65, Automake 1.11.1, and Libtool 2.2.6b. Slightly earlier versions of may also work but are untested. Autoconf versions prior to 2.65 are almost certain to not work.

      +

      You can either copy all the config/hwloc*m4 files from the hwloc source tree to the directory where your project's m4 files reside, or you can tell aclocal to find more m4 files in the embedded hwloc's "config" subdirectory (e.g., add "-Ipath/to/embedded/hwloc/config" to your Makefile.am's ACLOCAL_AMFLAGS).

      +

      The following macros can then be used from your configure script (only HWLOC_SETUP_CORE must be invoked if using the m4 macros):

      +
        +
      • HWLOC_SETUP_CORE(config-dir-prefix, action-upon-success, action-upon-failure, print_banner_or_not): Invoke the hwloc configuration tests and setup the hwloc tree to build. The first argument is the prefix to use for AC_OUTPUT files – it's where the hwloc tree is located relative to $top_srcdir. Hence, if your embedded hwloc is located in the source tree at contrib/hwloc, you should pass [contrib/hwloc] as the first argument. If HWLOC_SETUP_CORE and the rest of configure completes successfully, then "make" traversals of the hwloc tree with standard Automake targets (all, clean, install, etc.) should behave as expected. For example, it is safe to list the hwloc directory in the SUBDIRS of a higher-level Makefile.am. The last argument, if not empty, will cause the macro to display an announcement banner that it is starting the hwloc core configuration tests.

        +

        HWLOC_SETUP_CORE will set the following environment variables and AC_SUBST them: HWLOC_EMBEDDED_CFLAGS, HWLOC_EMBEDDED_CPPFLAGS, and HWLOC_EMBEDDED_LIBS. These flags are filled with the values discovered in the hwloc-specific m4 tests, and can be used in your build process as relevant. The _CFLAGS, _CPPFLAGS, and _LIBS variables are necessary to build libhwloc (or libhwloc_embedded) itself.

        +

        HWLOC_SETUP_CORE also sets HWLOC_EMBEDDED_LDADD environment variable (and AC_SUBSTs it) to contain the location of the libhwloc_embedded.la convenience Libtool archive. It can be used in your build process to link an application or other library against the embedded hwloc library.

        +

        NOTE: If the HWLOC_SET_SYMBOL_PREFIX macro is used, it must be invoked before HWLOC_SETUP_CORE.

        +
      • +
      • HWLOC_BUILD_STANDALONE: HWLOC_SETUP_CORE defaults to building hwloc in an "embedded" mode (described above). If HWLOC_BUILD_STANDALONE is invoked *before* HWLOC_SETUP_CORE, the embedded definitions will not apply (e.g., libhwloc.la will be built, not libhwloc_embedded.la).
      • +
      • HWLOC_SET_SYMBOL_PREFIX(foo_): Tells the hwloc to prefix all of hwloc's types and public symbols with "foo_"; meaning that function hwloc_init() becomes foo_hwloc_init(). Enum values are prefixed with an upper-case translation if the prefix supplied; HWLOC_OBJ_CORE becomes FOO_hwloc_OBJ_CORE. This is recommended behavior if you are including hwloc in middleware – it is possible that your software will be combined with other software that links to another copy of hwloc. If both uses of hwloc utilize different symbol prefixes, there will be no type/symbol clashes, and everything will compile, link, and run successfully. If you both embed hwloc without changing the symbol prefix and also link against an external hwloc, you may get multiple symbol definitions when linking your final library or application.
      • +
      • HWLOC_SETUP_DOCS, HWLOC_SETUP_UTILS, HWLOC_SETUP_TESTS: These three macros only apply when hwloc is built in "standalone" mode (i.e., they should NOT be invoked unless HWLOC_BUILD_STANDALONE has already been invoked).
      • +
      • HWLOC_DO_AM_CONDITIONALS: If you embed hwloc in a larger project and build it conditionally with Automake (e.g., if HWLOC_SETUP_CORE is invoked conditionally), you must unconditionally invoke HWLOC_DO_AM_CONDITIONALS to avoid warnings from Automake (for the cases where hwloc is not selected to be built). This macro is necessary because hwloc uses some AM_CONDITIONALs to build itself, and AM_CONDITIONALs cannot be defined conditionally. Note that it is safe (but unnecessary) to call HWLOC_DO_AM_CONDITIONALS even if HWLOC_SETUP_CORE is invoked unconditionally. If you are not using Automake to build hwloc, this macro is unnecessary (and will actually cause errors because it invoked AM_* macros that will be undefined).
      • +
      +

      NOTE: When using the HWLOC_SETUP_CORE m4 macro, it may be necessary to explicitly invoke AC_CANONICAL_TARGET (which requires config.sub and config.guess) and/or AC_USE_SYSTEM_EXTENSIONS macros early in the configure script (e.g., after AC_INIT but before AM_INIT_AUTOMAKE). See the Autoconf documentation for further information.

      +

      Also note that hwloc's top-level configure.ac script uses exactly the macros described above to build hwloc in a standalone mode (by default). You may want to examine it for one example of how these macros are used.

      +

      +

      +

      +

      +Example Embedding hwloc

      +

      Here's an example of integrating with a larger project named sandbox that already uses Autoconf, Automake, and Libtool to build itself:

      +
      # First, cd into the sandbox project source tree
      +shell$ cd sandbox
      +shell$ cp -r /somewhere/else/hwloc-<version> my-embedded-hwloc
      +shell$ edit Makefile.am
      +  1. Add "-Imy-embedded-hwloc/config" to ACLOCAL_AMFLAGS
      +  2. Add "my-embedded-hwloc" to SUBDIRS
      +  3. Add "$(HWLOC_EMBEDDED_LDADD)" and "$(HWLOC_EMBEDDED_LIBS)" to 
      +     sandbox's executable's LDADD line.  The former is the name of the 
      +     Libtool convenience library that hwloc will generate.  The latter 
      +     is any dependent support libraries that may be needed by 
      +     $(HWLOC_EMBEDDED_LDADD).
      +  4. Add "$(HWLOC_EMBEDDED_CFLAGS)" to AM_CFLAGS
      +  5. Add "$(HWLOC_EMBEDDED_CPPFLAGS)" to AM_CPPFLAGS
      +shell$ edit configure.ac
      +  1. Add "HWLOC_SET_SYMBOL_PREFIX(sandbox_hwloc_)" line
      +  2. Add "HWLOC_SETUP_CORE([my-embedded-hwloc], [happy=yes], [happy=no])" line
      +  3. Add error checking for happy=no case
      +shell$ edit sandbox.c
      +  1. Add #include <hwloc.h>
      +  2. Add calls to sandbox_hwloc_init() and other hwloc API functions
      +

      Now you can bootstrap, configure, build, and run the sandbox as normal – all calls to "sandbox_hwloc_*" will use the embedded hwloc rather than any system-provided copy of hwloc.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00409.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00409.html new file mode 100644 index 0000000000..b7d2ec55d6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00409.html @@ -0,0 +1,404 @@ + + + + + + + +Hardware Locality (hwloc): Frequently Asked Questions (FAQ) + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Frequently Asked Questions (FAQ)
      +
      +
      +

      +

      +

      +

      +Concepts

      +

      +I only need binding, why should I use hwloc ?

      +

      hwloc is its portable API that works on a variety of operating systems. It supports binding of threads, processes and memory buffers (see CPU binding and Memory binding). Even if some features are not supported on some systems, using hwloc is much easier than reimplementing your own portability layer.

      +

      Moreover, hwloc provides knowledge of cores and hardware threads. It offers easy ways to bind tasks to individual hardware threads, or to entire multithreaded cores, etc. See How may I ignore symmetric multithreading, hyper-threading, etc. in hwloc?. Most alternative software for binding do not even know whether each core is single-threaded, multithreaded or hyper-threaded. They would bind to individual threads without any way to know whether multiple tasks are in the same physical core.

      +

      However, using hwloc comes with an overhead since a topology must be loaded before gathering information and binding tasks or memory. Fortunately this overhead may be significantly reduced by filtering non-interesting information out of the topology. For instance the following code builds a topology that only contains Cores (explicitly filtered-in below), hardware threads (PUs, cannot be filtered-out), NUMA nodes (cannot be filtered-out), and the root object (usually a Machine; the root cannot be removed without breaking the tree).

      +
      hwloc_topology_t topology;
      +hwloc_topology_init(&topology);
      +/* filter everything out */
      +hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_NONE);
      +/* filter Cores back in */
      +hwloc_topology_set_type_filter(topology, HWLOC_OBJ_CORE, HWLOC_TYPE_FILTER_KEEP_ALL);
      +hwloc_topology_load(topology);
      +

      However, one should remember that filtering such objects out removes locality information from the hwloc tree. For instance, we do not know anymore which PU is close to which NUMA node. This would be useful to applications that explicitly want to place specific memory buffers close to specific tasks. Those applications just need to tell hwloc to keep Group objects that bring structure information:

      hwloc_topology_set_type_filter(topology, HWLOC_OBJ_GROUP, HWLOC_TYPE_FILTER_KEEP_STRUCTURE);
      +

      Note that the default configuration is to keep all objects enabled, except I/Os and instruction caches.

      +

      +Should I use logical or physical/OS indexes? and how?

      +

      One of the original reasons why hwloc was created is that physical/OS indexes (obj->os_index) are often crazy and unpredictable: processors numbers are usually non-contiguous (processors 0 and 1 are not physically close), they vary from one machine to another, and may even change after a BIOS or system update. This numbers make task placement hardly portable. Moreover some objects have no physical/OS numbers (caches), and some objects have non-unique numbers (core numbers are only unique within a socket). Physical/OS indexes are only guaranteed to exist and be unique for PU and NUMA nodes.

      +

      hwloc therefore introduces logical indexes (obj->logical_index) which are portable, contiguous and logically ordered (based on the resource organization in the locality tree). In general, one should only use logical indexes and just let hwloc do the internal conversion when really needed (when talking to the OS and hardware).

      +

      hwloc developers recommends that users do not use physical/OS indexes unless they really know what they are doing. The main reason for still using physical/OS indexes is when interacting with non-hwloc tools such as numactl or taskset, or when reading hardware information from raw sources such as /proc/cpuinfo.

      +

      lstopo options -l and -p may be used to switch between logical indexes (prefixed with L#) and physical/OS indexes (P#). Converting one into the other may also be achieved with hwloc-calc which may manipulate either logical or physical indexes as input or output. See also hwloc-calc.

      +
      # Convert PU with physical number 3 into logical number
      +$ hwloc-calc -I pu --physical-input --logical-output pu:3
      +5
      +
      +# Convert a set of NUMA nodes from logical to physical
      +# (beware that the output order may not match the input order)
      +$ hwloc-calc -I numa --logical-input --physical-output numa:2-3 numa:7
      +0,2,5
      +

      +hwloc is only a structural model, it ignores performance models, memory bandwidth, etc.?

      +

      hwloc is indeed designed to provide applications with a structural model of the platform. This is an orthogonal approach to describing the machine with performance models, for instance using memory bandwidth or latencies measured by benchmarks. We believe that both approaches are important for helping application make the most of the hardware.

      +

      For instance, on a dual-processor host with four cores each, hwloc clearly shows which four cores are together. Latencies between all pairs of cores of the same processor are likely identical, and also likely lower than the latency between cores of different processors. However, the structural model cannot guarantee such implementation details. On the other side, performance models would reveal such details without always clearly identifying which cores are in the same processor.

      +

      The focus of hwloc is mainly of the structural modeling side. However, hwloc lets user adds performance information to the topology through distances (see Distances), memory attributes (see Memory Attributes) or even custom annotations (see How do I annotate the topology with private notes?). hwloc may also use such distance information for grouping objects together (see hwloc only has a one-dimensional view of the architecture, it ignores distances? and What are these Group objects in my topology?).

      +

      +hwloc only has a one-dimensional view of the architecture, it ignores distances?

      +

      hwloc places all objects in a tree. Each level is a one-dimensional view of a set of similar objects. All children of the same object (siblings) are assumed to be equally interconnected (same distance between any of them), while the distance between children of different objects (cousins) is supposed to be larger.

      +

      Modern machines exhibit complex hardware interconnects, so this tree may miss some information about the actual physical distances between objects. The hwloc topology may therefore be annotated with distance information that may be used to build a more realistic representation (multi-dimensional) of each level. For instance, there can be a distance matrix that representing the latencies between any pair of NUMA nodes if the BIOS and/or operating system reports them.

      +

      For more information about the hwloc distances, see Distances.

      +

      +What are these Group objects in my topology?

      +

      hwloc comes with a set of predefined object types (Core, Package, NUMA node, Caches) that match the vast majority of hardware platforms. The HWLOC_OBJ_GROUP type was designed for cases where this set is not sufficient. Groups may be used anywhere to add more structure information to the topology, for instance to show that 2 out of 4 NUMA nodes are actually closer than the others. When applicable, the subtype field describes why a Group was actually added (see also Normal attributes).

      +

      hwloc currently uses Groups for the following reasons:

        +
      • +NUMA parents when memory locality does not match any existing object.
      • +
      • +I/O parents when I/O locality does not match any existing object.
      • +
      • +Distance-based groups made of close objects.
      • +
      • +AMD Bulldozer dual-core compute units (subtype is ComputeUnit, in the x86 backend), but these objects are usually merged with the L2 caches.
      • +
      • +Intel Extended Topology Enumeration levels (in the x86 backend).
      • +
      • +Windows processor groups when HWLOC_WINDOWS_PROCESSOR_GROUP_OBJS=1 is set in the environment (except if they contain exactly a single NUMA node, or a single Package, etc.).
      • +
      • +IBM S/390 "Books" on Linux (subtype is Book).
      • +
      • +Linux Clusters of CPUs (subtype is Cluster), for instance for ARM cores sharing of some internal cache or bus, or x86 cores sharing a L2 cache (since Linux kernel 5.16). HWLOC_DONT_MERGE_CLUSTER_GROUPS=1 may be set in the environment to disable the automerging of these groups with identical caches, etc.
      • +
      • +AIX unknown hierarchy levels.
      • +
      +

      hwloc Groups are only kept if no other object has the same locality information. It means that a Group containing a single child is merged into that child. And a Group is merged into its parent if it is its only child. For instance a Windows processor group containing a single NUMA node would be merged with that NUMA node since it already contains the relevant hierarchy information.

      +

      When inserting a custom Group with hwloc_hwloc_topology_insert_group_object(), this merging may be disabled by setting its dont_merge attribute.

      +

      +What happens if my topology is asymmetric?

      +

      hwloc supports asymmetric topologies even if most platforms are usually symmetric. For example, there could be different types of processors in a single machine, each with different numbers of cores, symmetric multithreading, or levels of caches.

      +

      In practice, asymmetric topologies are rare but occur for at least two reasons:

        +
      • +Intermediate groups may added for I/O affinity: on a 4-package machine, an I/O bus may be connected to 2 packages. These packages are below an additional Group object, while the other packages are not (see also What are these Group objects in my topology?).
      • +
      • +If only part of a node is available to the current process, for instance because the resource manager uses Linux Cgroups to restrict process resources, some cores (or NUMA nodes) will disappear from the topology (unless flag HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED was passed). On a 32-core machine where 12 cores were allocated to the process, this may lead to one CPU package with 8 cores, another one with only 4 cores, and two missing packages.
      • +
      +

      To understand how hwloc manages such cases, one should first remember the meaning of levels and cousin objects. All objects of the same type are gathered as horizontal levels with a given depth. They are also connected through the cousin pointers of the hwloc_obj structure. Object attribute (cache depth and type, group depth) are also taken in account when gathering objects as horizontal levels. To be clear: there will be one level for L1i caches, another level for L1d caches, another one for L2, etc.

      +

      If the topology is asymmetric (e.g., if a group is missing above some processors), a given horizontal level will still exist if there exist any objects of that type. However, some branches of the overall tree may not have an object located in that horizontal level. Note that this specific hole within one horizontal level does not imply anything for other levels. All objects of the same type are gathered in horizontal levels even if their parents or children have different depths and types.

      +

      See the diagram in Terms and Definitions for a graphical representation of such topologies.

      +

      Moreover, it is important to understand that a same parent object may have children of different types (and therefore, different depths). These children are therefore siblings (because they have the same parent), but they are not cousins (because they do not belong to the same horizontal level).

      +

      +What happens to my topology if I disable symmetric multithreading, hyper-threading, etc. in the system?

      +

      hwloc creates one PU (processing unit) object per hardware thread. If your machine supports symmetric multithreading, for instance Hyper-Threading, each Core object may contain multiple PU objects:

      $ lstopo -
      +...
      +  Core L#0
      +    PU L#0 (P#0)
      +    PU L#1 (P#2)
      +  Core L#1
      +    PU L#2 (P#1)
      +    PU L#3 (P#3)
      +

      x86 machines usually offer the ability to disable hyper-threading in the BIOS. Or it can be disabled on the Linux kernel command-line at boot time, or later by writing in sysfs virtual files.

      +

      If you do so, the hwloc topology structure does not significantly change, but some PU objects will not appear anymore. No level will disappear, you will see the same number of Core objects, but each of them will contain a single PU now. The PU level does not disappear either (remember that hwloc topologies always contain a PU level at the bottom of the topology) even if there is a single PU object per Core parent.

      $ lstopo -
      +...
      +  Core L#0
      +    PU L#0 (P#0)
      +  Core L#1
      +    PU L#1 (P#1)
      +

      +How may I ignore symmetric multithreading, hyper-threading, etc. in hwloc?

      +

      First, see What happens to my topology if I disable symmetric multithreading, hyper-threading, etc. in the system? for more information about multithreading.

      +

      If you need to ignore symmetric multithreading in software, you should likely manipulate hwloc Core objects directly:

      /* get the number of cores */
      +unsigned nbcores = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_CORE);
      +...
      +/* get the third core below the first package */
      +hwloc_obj_t package, core;
      +package = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 0);
      +core = hwloc_get_obj_inside_cpuset_by_type(topology, package->cpuset,
      +                                           HWLOC_OBJ_CORE, 2);
      +

      Whenever you want to bind a process or thread to a core, make sure you singlify its cpuset first, so that the task is actually bound to a single thread within this core (to avoid useless migrations).

      /* bind on the second core */
      +hwloc_obj_t core = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, 1);
      +hwloc_cpuset_t set = hwloc_bitmap_dup(core->cpuset);
      +hwloc_bitmap_singlify(set);
      +hwloc_set_cpubind(topology, set, 0);
      +hwloc_bitmap_free(set);
      +

      With hwloc-calc or hwloc-bind command-line tools, you may specify that you only want a single-thread within each core by asking for their first PU object:

      $ hwloc-calc core:4-7
      +0x0000ff00
      +$ hwloc-calc core:4-7.pu:0
      +0x00005500
      +

      When binding a process on the command-line, you may either specify the exact thread that you want to use, or ask hwloc-bind to singlify the cpuset before binding

      $ hwloc-bind core:3.pu:0 -- echo "hello from first thread on core #3"
      +hello from first thread on core #3
      +...
      +$ hwloc-bind core:3 --single -- echo "hello from a single thread on core #3"
      +hello from a single thread on core #3
      +

      +

      +

      +

      +Advanced

      +

      +I do not want hwloc to rediscover my enormous machine topology every time I rerun a process

      +

      Although the topology discovery is not expensive on common machines, its overhead may become significant when multiple processes repeat the discovery on large machines (for instance when starting one process per core in a parallel application). The machine topology usually does not vary much, except if some cores are stopped/restarted or if the administrator restrictions are modified. Thus rediscovering the whole topology again and again may look useless.

      +

      For this purpose, hwloc offers XML import/export and shared memory features.

      +

      XML lets you save the discovered topology to a file (for instance with the lstopo program) and reload it later by setting the HWLOC_XMLFILE environment variable. The HWLOC_THISSYSTEM environment variable should also be set to 1 to assert that loaded file is really the underlying system.

      +

      Loading a XML topology is usually much faster than querying multiple files or calling multiple functions of the operating system. It is also possible to manipulate such XML files with the C programming interface, and the import/export may also be directed to memory buffer (that may for instance be transmitted between applications through a package). See also Importing and exporting topologies from/to XML files.

      +
      Note
      The environment variable HWLOC_THISSYSTEM_ALLOWED_RESOURCES may be used to load a XML topology that contains the entire machine and restrict it to the part that is actually available to the current process (e.g. when Linux Cgroup/Cpuset are used to restrict the set of resources). See Environment Variables.
      +

      Shared-memory topologies consist in one process exposing its topology in a shared-memory buffer so that other processes (running on the same machine) may use it directly. This has the advantage of reducing the memory footprint since a single topology is stored in physical memory for multiple processes. However, it requires all processes to map this shared-memory buffer at the same virtual address, which may be difficult in some cases. This API is described in Sharing topologies between processes.

      +

      +How many topologies may I use in my program?

      +

      hwloc lets you manipulate multiple topologies at the same time. However, these topologies consume memory and system resources (for instance file descriptors) until they are destroyed. It is therefore discouraged to open the same topology multiple times.

      +

      Sharing a single topology between threads is easy (see Thread Safety) since the vast majority of accesses are read-only.

      +

      If multiple topologies of different (but similar) nodes are needed in your program, have a look at How to avoid memory waste when manipulating multiple similar topologies?.

      +

      +How to avoid memory waste when manipulating multiple similar topologies?

      +

      hwloc does not share information between topologies. If multiple similar topologies are loaded in memory, for instance the topologies of different identical nodes of a cluster, lots of information will be duplicated.

      +

      hwloc/diff.h (see also Topology differences) offers the ability to compute topology differences, apply or unapply them, or export/import to/from XML. However, this feature is limited to basic differences such as attribute changes. It does not support complex modifications such as adding or removing some objects.

      +

      +How do I annotate the topology with private notes?

      +

      Each hwloc object contains a userdata field that may be used by applications to store private pointers. This field is only valid during the lifetime of these container object and topology. It becomes invalid as soon the topology is destroyed, or as soon as the object disappears, for instance when restricting the topology. The userdata field is not exported/imported to/from XML by default since hwloc does not know what it contains. This behavior may be changed by specifying application-specific callbacks with hwloc_topology_set_userdata_export_callback() and hwloc_topology_set_userdata_import_callback().

      +

      Each object may also contain some info attributes (key name and value) that are setup by hwloc during discovery and that may be extended by the user with hwloc_obj_add_info() (see also Object attributes). Contrary to the userdata field which is unique, multiple info attributes may exist for each object, even with the same name. These attributes are always exported to XML. However, only character strings may be used as key names and values.

      +

      It is also possible to insert Misc objects with a custom name anywhere as a leaf of the topology (see Miscellaneous objects). And Misc objects may have their own userdata and info attributes just like any other object.

      +

      The hwloc-annotate command-line tool may be used for adding Misc objects and info attributes.

      +

      There is also a topology-specific userdata pointer that can be used to recognize different topologies by storing a custom pointer. It may be manipulated with hwloc_topology_set_userdata() and hwloc_topology_get_userdata().

      +

      +How do I create a custom heterogeneous and asymmetric topology?

      +

      Synthetic topologies (see Synthetic topologies) allow to create custom topologies but they are always symmetric: same numbers of cores in each package, same local NUMA nodes, same shared cache, etc. To create an asymmetric topology, for instance to simulate hybrid CPUs, one may want to start from a larger symmetric topology and restrict it.
      +

      +

      Assuming we want two packages, one with 4 dual-threaded cores, and one with 8 single-threaded cores, first we create a topology with two identical packages, each with 8 dual-threaded cores:

      $ lstopo -i "pack:2 core:8 pu:2" topo.xml
      +

      Then create the bitmask representing the PUs that we wish to keep and pass it to lstopo's restrict option:

      $ hwloc-calc -i topo.xml pack:0.core:0-3.pu:0-1 pack:1.core:0-7.pu:0
      +0x555500ff
      +$ lstopo -i topo.xml --restrict 0x555500ff topo2.xml
      +$ mv -f topo2.xml topo.xml
      +

      To mark the cores of first package as Big (power hungry) and those of second package as Little (energy efficient), define CPU kinds:

      $ hwloc-annotate topo.xml topo.xml -- none -- cpukind $(hwloc-calc -i topo.xml pack:0) 1 0 CoreType Big
      +$ hwloc-annotate topo.xml topo.xml -- none -- cpukind $(hwloc-calc -i topo.xml pack:1) 0 0 CoreType Little
      +


      +

      +

      A similar method may be used for heterogeneous memory. First we specify 2 NUMA nodes per package in our synthetic description:

      $ lstopo -i "pack:2 [numa(memory=100GB)] [numa(memory=10GB)] core:8 pu:2" topo.xml
      +

      Then remove the second node of first package:

      $ hwloc-calc -i topo.xml --nodeset node:all ~pack:0.node:1
      +0x0000000e
      +$ lstopo -i topo.xml --restrict nodeset=0xe topo2.xml
      +$ mv -f topo2.xml topo.xml
      +

      Then make one large node even bigger:

      $ hwloc-annotate topo.xml topo.xml -- pack:0.numa:0 -- size 200GB
      +

      Now we have 200GB in first package, and 100GB+10GB in second package.
      +

      +

      Next we may specify that the small NUMA node (second of second package) is HBM while the large ones are DRAM:

      $ hwloc-annotate topo.xml topo.xml -- pack:0.numa:0 pack:1.numa:0 -- subtype DRAM
      +$ hwloc-annotate topo.xml topo.xml -- pack:1.numa:1 -- subtype HBM
      +

      Finally we may define memory performance attributes to specify that the HBM bandwidth (200GB/s) from local cores is higher than the DRAM bandwidth (50GB/s):

      $ hwloc-annotate topo.xml topo.xml -- pack:0.numa:0 -- memattr Bandwidth pack:0 50000
      +$ hwloc-annotate topo.xml topo.xml -- pack:1.numa:0 -- memattr Bandwidth pack:1 50000
      +$ hwloc-annotate topo.xml topo.xml -- pack:1.numa:1 -- memattr Bandwidth pack:1 200000
      +


      +

      +

      There is currently no way to create or modify I/O devices attached to such fake topologies. There is also no way to have some partial levels, e.g. a L3 cache in one package but not in the other.
      +

      +

      More changes may obviously be performed by manually modifying the XML export file. Simple operations such as modifying object attributes (cache size, memory size info keypairs, etc.), moving I/O subtrees, moving Misc objects, or removing objects are easy to perform.

      +

      However, modifying CPU and Memory objects requires care since cpusets and nodesets are supposed to remain consistent between parents and children. Similarly, PCI bus IDs should remain consistent between bridges and children within an I/O subtree.

      +

      +

      +

      +

      +Caveats

      +

      +Why is hwloc slow?

      +

      Building a hwloc topology on a large machine may be slow because the discovery of hundreds of hardware cores or threads takes time (especially when reading thousands of sysfs files on Linux). Ignoring some objects (for instance caches) that aren't useful to the current application may improve this overhead (see I only need binding, why should I use hwloc ?). One should also consider using XML (see I do not want hwloc to rediscover my enormous machine topology every time I rerun a process) to work around such issues.

      +

      Additionally, lstopo enables most hwloc objects and discovery flags by default so that the output topology is as precise as possible (while hwloc disables many of them by default). This includes I/O device discovery through PCI libraries as well as external libraries such as NVML. To speed up lstopo, you may disable such features with command-line options such as --no-io.

      +

      When NVIDIA GPU probing is enabled with CUDA or NVML, one should make sure that the Persistent mode is enabled (with nvidia-smi -pm 1) to avoid significant GPU initialization overhead.

      +

      When AMD GPU discovery is enabled with OpenCL and hwloc is used remotely over ssh, some spurious round-trips on the network may significantly increase the discovery time. Forcing the DISPLAY environment variable to the remote X server display (usually :0) instead of only setting the COMPUTE variable may avoid this.

      +

      Also remember that these components may be disabled at build-time with configure flags such as --disable-opencl, --disable-cuda or --disable-nvml, and at runtime with the environment variable HWLOC_COMPONENTS=-opencl,-cuda,-nvml or with hwloc_topology_set_components().

      +

      +Does hwloc require privileged access?

      +

      hwloc discovers the topology by querying the operating system. Some minor features may require privileged access to the operation system. For instance memory module discovery on Linux is reserved to root, and the entire PCI discovery on Solaris and BSDs requires access to some special files that are usually restricted to root (/dev/pci* or /devices/pci*).

      +

      To workaround this limitation, it is recommended to export the topology as a XML file generated by the administrator (with the lstopo program) and make it available to all users (see Importing and exporting topologies from/to XML files). It will offer all discovery information to any application without requiring any privileged access anymore. Only the necessary hardware characteristics will be exported, no sensitive information will be disclosed through this XML export.

      +

      This XML-based model also has the advantage of speeding up the discovery because reading a XML topology is usually much faster than querying the operating system again.

      +

      The utility hwloc-dump-hwdata is also involved in gathering privileged information at boot time and making it available to non-privileged users (note that this may require a specific SELinux MLS policy module). However, it only applies to Intel Xeon Phi processors for now (see Why do I need hwloc-dump-hwdata for memory on Intel Xeon Phi processor?). See also HWLOC_DUMPED_HWDATA_DIR in Environment Variables for details about the location of dumped files.

      +

      +What should I do when hwloc reports "operating system" warnings?

      +

      When the operating system reports invalid locality information (because of either software or hardware bugs), hwloc may fail to insert some objects in the topology because they cannot fit in the already built tree of resources. If so, hwloc will report a warning like the following. The object causing this error is ignored, the discovery continues but the resulting topology will miss some objects and may be asymmetric (see also What happens if my topology is asymmetric?).

      +
      ****************************************************************************
      +* hwloc received invalid information from the operating system.
      +*
      +* L3 (cpuset 0x000003f0) intersects with NUMANode (P#0 cpuset 0x0000003f) without inclusion!
      +* Error occurred in topology.c line 940
      +*
      +* Please report this error message to the hwloc user's mailing list,
      +* along with the files generated by the hwloc-gather-topology script.
      +*
      +* hwloc will now ignore this invalid topology information and continue.
      +****************************************************************************
      +

      These errors are common on large AMD platforms because of BIOS and/or Linux kernel bugs causing invalid L3 cache information. In the above example, the hardware reports a L3 cache that is shared by 2 cores in the first NUMA node and 4 cores in the second NUMA node. That's wrong, it should actually be shared by all 6 cores in a single NUMA node. The resulting topology will miss some L3 caches.

      +

      If your application does not care about cache sharing, or if you do not plan to request cache-aware binding in your process launcher, you may likely ignore this error (and hide it by setting HWLOC_HIDE_ERRORS=1 in your environment).

      +

      Some platforms report similar warnings about conflicting Packages and NUMANodes.

      +

      On x86 hosts, passing HWLOC_COMPONENTS=x86 in the environment may workaround some of these issues by switching to a different way to discover the topology.

      +

      Upgrading the BIOS and/or the operating system may help. Otherwise, as explained in the message, reporting this issue to the hwloc developers (by sending the tarball that is generated by the hwloc-gather-topology script on this platform) is a good way to make sure that this is a software (operating system) or hardware bug (BIOS, etc).

      +

      See also Questions and Bugs. Opening an issue on GitHub automatically displays hints on what information you should provide when reporting such bugs.

      +

      +Why does Valgrind complain about hwloc memory leaks?

      +

      If you are debugging your application with Valgrind, you want to avoid memory leak reports that are caused by hwloc and not by your program.

      +

      hwloc itself is often checked with Valgrind to make sure it does not leak memory. However, some global variables in hwloc dependencies are never freed. For instance libz allocates its global state once at startup and never frees it so that it may be reused later. Some libxml2 global state is also never freed because hwloc does not know whether it can safely ask libxml2 to free it (the application may also be using libxml2 outside of hwloc).

      +

      These unfreed variables cause leak reports in Valgrind. hwloc installs a Valgrind suppressions file to hide them. You should pass the following command-line option to Valgrind to use it:

        --suppressions=/path/to/hwloc-valgrind.supp
      +

      +

      +

      +

      +Platform-specific

      +

      +How do I enable ROCm SMI and select which version to use?

      +

      hwloc enables ROCm SMI as soon as it finds its development headers and libraries on the system. This detection consists in looking in /opt/rocm by default. If a ROCm version was specified with --with-rocm-version=4.4.0 or in the ROCM_VERSION environment variable, then /opt/rocm-<version> is used instead. Finally, a specific installation path may be specified with --with-rocm=/path/to/rocm.

      +

      As usual, developer header and library paths may also be set through environment variables such as LIBRARY_PATH and C_INCLUDE_PATH.

      +

      To find out whether ROCm SMI was detected and enabled, look in Probe / display I/O devices at the end of the configure script output. Passing --enable-rsmi will also cause configure to fail if RSMI could not be found and enabled in hwloc.

      +

      +How do I enable CUDA and select which CUDA version to use?

      +

      hwloc enables CUDA as soon as it finds CUDA development headers and libraries on the system. This detection may be performed thanks to pkg-config but it requires hwloc to know which CUDA version to look for. This may be done by passing --with-cuda-version=11.0 to the configure script. Otherwise hwloc will also look for the CUDA_VERSION environment variable.

      +

      If pkg-config does not work, passing --with-cuda=/path/to/cuda to the configure script is another way to define the corresponding library and header paths. Finally, these paths may also be set through environment variables such as LIBRARY_PATH and C_INCLUDE_PATH.

      +

      These paths, either detected by pkg-config or given manually, will also be used to detect NVML and OpenCL libraries and enable their hwloc backends.

      +

      To find out whether CUDA was detected and enabled, look in Probe / display I/O devices at the end of the configure script output. Passing --enable-cuda will also cause configure to fail if CUDA could not be found and enabled in hwloc.

      +

      Note that --with-cuda=/nonexisting may be used to disable all dependencies that are installed by CUDA, i.e. the CUDA, NVML and NVIDIA OpenCL backends, since the given directory does not exist.

      +

      +How do I find the local MCDRAM NUMA node on Intel Xeon Phi processor?

      +

      Intel Xeon Phi processors introduced a new memory architecture by possibly having two distinct local memories: some normal memory (DDR) and some high-bandwidth on-package memory (MCDRAM). Processors can be configured in various clustering modes to have up to 4 Clusters. Moreover, each Cluster (quarter, half or whole processor) of the processor may have its own local parts of the DDR and of the MCDRAM. This memory and clustering configuration may be probed by looking at MemoryMode and ClusterMode attributes, see Hardware Platform Information and doc/examples/get-knl-modes.c in the source directory.

      +

      Starting with version 2.0, hwloc properly exposes this memory configuration. DDR and MCDRAM are attached as two memory children of the same parent, DDR first, and MCDRAM second if any. Depending on the processor configuration, that parent may be a Package, a Cache, or a Group object of type Cluster.

      +

      Hence cores may have one or two local NUMA nodes, listed by the core nodeset. An application may allocate local memory from a core by using that nodeset. The operating system will actually allocate from the DDR when possible, or fallback to the MCDRAM.

      +

      To allocate specifically on one of these memories, one should walk up the parent pointers until finding an object with some memory children. Looking at these memory children will give the DDR first, then the MCDRAM if any. Their nodeset may then be used for allocating or binding memory buffers.

      +

      One may also traverse the list of NUMA nodes until finding some whose cpuset matches the target core or PUs. The MCDRAM NUMA nodes may be identified thanks to the subtype field which is set to MCDRAM.

      +

      Command-line tools such as hwloc-bind may bind memory on the MCDRAM by using the hbm keyword. For instance, to bind on the first MCDRAM NUMA node:

      +
      $ hwloc-bind --membind --hbm numa:0 -- myprogram
      +$ hwloc-bind --membind numa:0 -- myprogram
      +

      +Why do I need hwloc-dump-hwdata for memory on Intel Xeon Phi processor?

      +

      Intel Xeon Phi processors may use the on-package memory (MCDRAM) as either memory or a memory-side cache (reported as a L3 cache by hwloc by default, see HWLOC_KNL_MSCACHE_L3 in Environment Variables). There are also several clustering modes that significantly affect the memory organization (see How do I find the local MCDRAM NUMA node on Intel Xeon Phi processor? for more information about these modes). Details about these are currently only available to privileged users. Without them, hwloc relies on a heuristic for guessing the modes.

      +

      The hwloc-dump-hwdata utility may be used to dump this privileged binary information into human-readable and world-accessible files that the hwloc library will later load. The utility should usually run as root once during boot, in order to update dumped information (stored under /var/run/hwloc by default) in case the MCDRAM or clustering configuration changed between reboots.

      +

      When SELinux MLS policy is enabled, a specific hwloc policy module may be required so that all users get access to the dumped files (in /var/run/hwloc by default). One may use hwloc policy files from the SELinux Reference Policy at https://github.com/TresysTechnology/refpolicy-contrib (see also the documentation at https://github.com/TresysTechnology/refpolicy/wiki/GettingStarted).

      +

      hwloc-dump-hwdata requires dmi-sysfs kernel module loaded.

      +

      The utility is currently unneeded on platforms without Intel Xeon Phi processors.

      +

      See HWLOC_DUMPED_HWDATA_DIR in Environment Variables for details about the location of dumped files.

      +

      +How do I build hwloc for BlueGene/Q?

      +

      IBM BlueGene/Q machines run a standard Linux on the login/frontend nodes and a custom CNK (Compute Node Kernel) on the compute nodes.

      +

      To discover the topology of a login/frontend node, hwloc should be configured as usual, without any BlueGene/Q-specific option.

      +

      However, one would likely rather discover the topology of the compute nodes where parallel jobs are actually running. If so, hwloc must be cross-compiled with the following configuration line:

      ./configure --host=powerpc64-bgq-linux --disable-shared --enable-static \
      +  CPPFLAGS='-I/bgsys/drivers/ppcfloor -I/bgsys/drivers/ppcfloor/spi/include/kernel/cnk/'
      +

      CPPFLAGS may have to be updated if your platform headers are installed in a different directory.

      +

      +How do I build hwloc for Windows?

      +

      hwloc binary releases for Windows are available on the website download pages (as pre-built ZIPs for both 32bits and 64bits x86 platforms). However hwloc also offers several ways to build on Windows:

      +
        +
      • +The usual Unix build steps (configure, make and make install) work on the MSYS2/MinGW environment on Windows (the official hwloc binary releases are built this way). Some environment variables and options must be configured, see contrib/ci.inria.fr/job-3-mingw.sh in the hwloc repository for an example (used for nightly testing).
      • +
      • +hwloc also supports such Unix-like builds in Cygwin (environment for porting Unix code to Windows).
      • +
      • +Windows build is also possible with CMake (CMakeLists.txt available under contrib/windows-cmake/).
      • +
      • +hwloc also comes with an example of Microsoft Visual Studio solution (under contrib/windows/) that may serve as a base for custom builds.
      • +
      +

      +How to get useful topology information on NetBSD?

      +

      The NetBSD (and FreeBSD) backend uses x86-specific topology discovery (through the x86 component). This implementation requires CPU binding so as to query topology information from each individual processor. This means that hwloc cannot find any useful topology information unless user-level process binding is allowed by the NetBSD kernel. The security.models.extensions.user_set_cpu_affinity sysctl variable must be set to 1 to do so. Otherwise, only the number of processors will be detected.

      +

      +Why does binding fail on AIX?

      +

      The AIX operating system requires specific user capabilities for attaching processes to resource sets (CAP_NUMA_ATTACH). Otherwise functions such as hwloc_set_cpubind() fail (return -1 with errno set to EPERM).

      +

      This capability must also be inherited (through the additional CAP_PROPAGATE capability) if you plan to bind a process before forking another process, for instance with hwloc-bind.

      +

      These capabilities may be given by the administrator with:

      chuser "capabilities=CAP_PROPAGATE,CAP_NUMA_ATTACH" <username>
      +

      +

      +

      +

      +Compatibility between hwloc versions

      +

      +How do I handle API changes?

      +

      The hwloc interface is extended with every new major release. Any application using the hwloc API should be prepared to check at compile-time whether some features are available in the currently installed hwloc distribution.

      +

      For instance, to check whether the hwloc version is at least 2.0, you should use:

      #include <hwloc.h>
      +#if HWLOC_API_VERSION >= 0x00020000
      +...
      +#endif
      +

      To check for the API of release X.Y.Z at build time, you may compare HWLOC_API_VERSION with (X<<16)+(Y<<8)+Z.

      +

      For supporting older releases that do not have HWLOC_OBJ_NUMANODE and HWLOC_OBJ_PACKAGE yet, you may use:

      +
      #include <hwloc.h>
      +#if HWLOC_API_VERSION < 0x00010b00
      +#define HWLOC_OBJ_NUMANODE HWLOC_OBJ_NODE
      +#define HWLOC_OBJ_PACKAGE HWLOC_OBJ_SOCKET
      +#endif
      +

      Once a program is built against a hwloc library, it may also dynamically link with compatible libraries from other hwloc releases. The version of that runtime library may be queried with hwloc_get_api_version(). See How do I handle ABI breaks? for using this function for testing ABI compatibility.

      +

      +What is the difference between API and library version numbers?

      +

      HWLOC_API_VERSION is the version of the API. It changes when functions are added, modified, etc. However it does not necessarily change from one release to another. For instance, two releases of the same series (e.g. 2.0.3 and 2.0.4) usually have the same HWLOC_API_VERSION (0x00020000). However their HWLOC_VERSION strings are different ("2.0.3" and "2.0.4" respectively).

      +

      +How do I handle ABI breaks?

      +

      The hwloc interface was deeply modified in release 2.0 to fix several issues of the 1.x interface (see Upgrading to the hwloc 2.0 API and the NEWS file in the source directory for details). The ABI was broken, which means applications must be recompiled against the new 2.0 interface.

      +

      To check that you are not mixing old/recent headers with a recent/old runtime library, check the major revision number in the API version:

      #include <hwloc.h>
      +  unsigned version = hwloc_get_api_version();
      +  if ((version >> 16) != (HWLOC_API_VERSION >> 16)) {
      +    fprintf(stderr,
      +           "%s compiled for hwloc API 0x%x but running on library API 0x%x.\n"
      +           "You may need to point LD_LIBRARY_PATH to the right hwloc library.\n"
      +           "Aborting since the new ABI is not backward compatible.\n",
      +           callname, HWLOC_API_VERSION, version);
      +    exit(EXIT_FAILURE);
      +  }
      +

      To specifically detect v2.0 issues:

      #include <hwloc.h>
      +#if HWLOC_API_VERSION >= 0x00020000
      +  /* headers are recent */
      +  if (hwloc_get_api_version() < 0x20000)
      +    ... error out, the hwloc runtime library is older than 2.0 ...
      +#else
      +  /* headers are pre-2.0 */
      +  if (hwloc_get_api_version() >= 0x20000)
      +    ... error out, the hwloc runtime library is more recent than 2.0 ...
      +#endif
      +

      In theory, library sonames prevent linking with incompatible libraries. However custom hwloc installations or improperly configured build environments may still lead to such issues. Hence running one of the above (cheap) checks before initializing hwloc topology may be useful.

      +

      +Are XML topology files compatible between hwloc releases?

      +

      XML topology files are forward-compatible: a XML file may be loaded by a hwloc library that is more recent than the hwloc release that exported that file.

      +

      However, hwloc XMLs are not always backward-compatible: Topologies exported by hwloc 2.x cannot be imported by 1.x by default (see XML changes for working around such issues). There are also some corner cases where backward compatibility is not guaranteed because of changes between major releases (for instance 1.11 XMLs could not be imported in 1.10).

      +

      XMLs are exchanged at runtime between some components of the HPC software stack (for instance the resource managers and MPI processes). Building all these components on the same (cluster-wide) hwloc installation is a good way to avoid such incompatibilities.

      +

      +Are synthetic strings compatible between hwloc releases?

      +

      Synthetic strings (see Synthetic topologies) are forward-compatible: a synthetic string generated by a release may be imported by future hwloc libraries.

      +

      However they are often not backward-compatible because new details may have been added to synthetic descriptions in recent releases. Some flags may be given to hwloc_topology_export_synthetic() to avoid such details and stay backward compatible.

      +

      +Is it possible to share a shared-memory topology between different hwloc releases?

      +

      Shared-memory topologies (see Sharing topologies between processes) have strong requirements on compatibility between hwloc libraries. Adopting a shared-memory topology fails if it was exported by a non-compatible hwloc release. Releases with same major revision are usually compatible (e.g. hwloc 2.0.4 may adopt a topology exported by 2.0.3) but different major revisions may be incompatible (e.g. hwloc 2.1.0 cannot adopt from 2.0.x).

      +

      Topologies are shared at runtime between some components of the HPC software stack (for instance the resource managers and MPI processes). Building all these components on the same (system-wide) hwloc installation is a good way to avoid such incompatibilities.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00410.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00410.html new file mode 100644 index 0000000000..e2d079e531 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00410.html @@ -0,0 +1,349 @@ + + + + + + + +Hardware Locality (hwloc): Upgrading to the hwloc 2.0 API + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Upgrading to the hwloc 2.0 API
      +
      +
      +

      +

      +

      +

      See Compatibility between hwloc versions for detecting the hwloc version that you are compiling and/or running against.

      +

      +

      +

      +

      +New Organization of NUMA nodes and Memory

      +

      +Memory children

      +

      In hwloc v1.x, NUMA nodes were inside the tree, for instance Packages contained 2 NUMA nodes which contained a L3 and several cache.

      +

      Starting with hwloc v2.0, NUMA nodes are not in the main tree anymore. They are attached under objects as Memory Children on the side of normal children. This memory children list starts at obj->memory_first_child and its size is obj->memory_arity. Hence there can now exist two local NUMA nodes, for instance on Intel Xeon Phi processors.

      +

      The normal list of children (starting at obj->first_child, ending at obj->last_child, of size obj->arity, and available as the array obj->children) now only contains CPU-side objects: PUs, Cores, Packages, Caches, Groups, Machine and System. hwloc_get_next_child() may still be used to iterate over all children of all lists.

      +

      Hence the CPU-side hierarchy is built using normal children, while memory is attached to that hierarchy depending on its affinity.

      +

      +Examples

      +
        +
      • +

        a UMA machine with 2 packages and a single NUMA node is now modeled as a "Machine" object with two "Package" children and one "NUMANode" memory children (displayed first in lstopo below):

        Machine (1024MB total)
        +  NUMANode L#0 (P#0 1024MB)
        +  Package L#0
        +    Core L#0 + PU L#0 (P#0)
        +    Core L#1 + PU L#1 (P#1)
        +  Package L#1
        +    Core L#2 + PU L#2 (P#2)
        +    Core L#3 + PU L#3 (P#3)
        +

        +
      • +
      • +

        a machine with 2 packages with one NUMA node and 2 cores in each is now:

        Machine (2048MB total)
        +  Package L#0
        +    NUMANode L#0 (P#0 1024MB)
        +    Core L#0 + PU L#0 (P#0)
        +    Core L#1 + PU L#1 (P#1)
        +  Package L#1
        +    NUMANode L#1 (P#1 1024MB)
        +    Core L#2 + PU L#2 (P#2)
        +    Core L#3 + PU L#3 (P#3)
        +

        +
      • +
      • +

        if there are two NUMA nodes per package, a Group object may be added to keep cores together with their local NUMA node:

        Machine (4096MB total)
        +  Package L#0
        +    Group0 L#0
        +      NUMANode L#0 (P#0 1024MB)
        +      Core L#0 + PU L#0 (P#0)
        +      Core L#1 + PU L#1 (P#1)
        +    Group0 L#1
        +      NUMANode L#1 (P#1 1024MB)
        +      Core L#2 + PU L#2 (P#2)
        +      Core L#3 + PU L#3 (P#3)
        +  Package L#1
        +    [...]
        +

        +
      • +
      • +if the platform has L3 caches whose localities are identical to NUMA nodes, Groups aren't needed:
        Machine (4096MB total)
        +  Package L#0
        +    L3 L#0 (16MB)
        +      NUMANode L#0 (P#0 1024MB)
        +      Core L#0 + PU L#0 (P#0)
        +      Core L#1 + PU L#1 (P#1)
        +    L3 L#1 (16MB)
        +      NUMANode L#1 (P#1 1024MB)
        +      Core L#2 + PU L#2 (P#2)
        +      Core L#3 + PU L#3 (P#3)
        +  Package L#1
        +    [...]
        +
      • +
      +

      +NUMA level and depth

      +

      NUMA nodes are not in "main" tree of normal objects anymore. Hence, they don't have a meaningful depth anymore (like I/O and Misc objects). They have a virtual (negative) depth (HWLOC_TYPE_DEPTH_NUMANODE) so that functions manipulating depths and level still work, and so that we can still iterate over the level of NUMA nodes just like for any other level.

      +

      For instance we can still use lines such as

      int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE);
      +hwloc_obj_t obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 4);
      +hwloc_obj_t node = hwloc_get_next_obj_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE, prev);
      +

      The NUMA depth should not be compared with others. An unmodified code that still compares NUMA and Package depths (to find out whether Packages contain NUMA or the contrary) would now always assume Packages contain NUMA (because the NUMA depth is negative).

      +

      However, the depth of the Normal parents of NUMA nodes may be used instead. In the last example above, NUMA nodes are attached to L3 caches, hence one may compare the depth of Packages and L3 to find out that NUMA nodes are contained in Packages. This depth of parents may be retrieved with hwloc_get_memory_parents_depth(). However, this function may return HWLOC_TYPE_DEPTH_MULTIPLE on future platforms if NUMA nodes are attached to different levels.

      +

      +Finding Local NUMA nodes and looking at Children and Parents

      +

      Applications that walked up/down to find NUMANode parent/children must now be updated. Instead of looking directly for a NUMA node, one should now look for an object that has some memory children. NUMA node(s) will be attached there. For instance, when looking for a NUMA node above a given core core:

      hwloc_obj_t parent = core->parent;
      +while (parent && !parent->memory_arity)
      +  parent = parent->parent; /* no memory child, walk up */
      +if (parent)
      +  /* use parent->memory_first_child (and its siblings if there are multiple local NUMA nodes) */
      +

      The list of local NUMA nodes (usually a single one) is also described by the nodeset attribute of each object (which contains the physical indexes of these nodes). Iterating over the NUMA level is also an easy way to find local NUMA nodes:

      hwloc_obj_t tmp = NULL;
      +while ((tmp = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, tmp)) != NULL) {
      +  if (hwloc_bitmap_isset(obj->nodeset, tmp->os_index))
      +    /* tmp is a NUMA node local to obj, use it */
      +}
      +

      Similarly finding objects that are close to a given NUMA nodes should be updated too. Instead of looking at the NUMA node parents/children, one should now find a Normal parent above that NUMA node, and then look at its parents/children as usual:

      hwloc_obj_t tmp = obj->parent;
      +while (hwloc_obj_type_is_memory(tmp))
      +  tmp = tmp->parent;
      +/* now use tmp instead of obj */
      +

      To avoid such hwloc v2.x-specific and NUMA-specific cases in the code, a generic lookup for any kind of object, including NUMA nodes, might also be implemented by iterating over a level. For instance finding an object of type type which either contains or is included in object obj can be performed by traversing the level of that type and comparing CPU sets:

      hwloc_obj_t tmp = NULL;
      +while ((tmp = hwloc_get_next_obj_by_type(topology, type, tmp)) != NULL) {
      +  if (hwloc_bitmap_intersects(tmp->cpuset, obj->cpuset))
      +    /* tmp matches, use it */
      +}
      +

      This generic lookup works whenever type or obj are Normal or Memory objects since both have CPU sets. Moreover, it is compatible with the hwloc v1.x API.

      +

      +

      +

      +

      +4 Kinds of Objects and Children

      +

      +I/O and Misc children

      +

      I/O children are not in the main object children list anymore either. They are in the list starting at obj->io_first_child and its size is obj->io_arity.

      +

      Misc children are not in the main object children list anymore. They are in the list starting at obj->misc_first_child and its size is obj->misc_arity.

      +

      See hwloc_obj for details about children lists.

      +

      hwloc_get_next_child() may still be used to iterate over all children of all lists.

      +

      +Kinds of objects

      +

      Given the above, objects may now be of 4 kinds:

        +
      • +Normal (everything not listed below, including Machine, Package, Core, PU, CPU Caches, etc);
      • +
      • +Memory (currently NUMA nodes or Memory-side Caches), attached to parents as Memory children;
      • +
      • +I/O (Bridges, PCI and OS devices), attached to parents as I/O children;
      • +
      • +Misc objects, attached to parents as Misc children.
      • +
      +

      See hwloc_obj for details about children lists.

      +

      For a given object type, the kind may be found with hwloc_obj_type_is_normal(), hwloc_obj_type_is_memory(), hwloc_obj_type_is_normal(), or comparing with HWLOC_OBJ_MISC.

      +

      Normal and Memory objects have (non-NULL) CPU sets and nodesets, while I/O and Misc objects don't have any sets (they are NULL).

      +

      +

      +

      +

      +HWLOC_OBJ_CACHE replaced

      +

      Instead of a single HWLOC_OBJ_CACHE, there are now 8 types HWLOC_OBJ_L1CACHE, ..., HWLOC_OBJ_L5CACHE, HWLOC_OBJ_L1ICACHE, ..., HWLOC_OBJ_L3ICACHE.

      +

      Cache object attributes are unchanged.

      +

      hwloc_get_cache_type_depth() is not needed to disambiguate cache types anymore since new types can be passed to hwloc_get_type_depth() without ever getting HWLOC_TYPE_DEPTH_MULTIPLE anymore.

      +

      hwloc_obj_type_is_cache(), hwloc_obj_type_is_dcache() and hwloc_obj_type_is_icache() may be used to check whether a given type is a cache, data/unified cache or instruction cache.

      +

      +

      +

      +

      +allowed_cpuset and allowed_nodeset only in the main topology

      +

      Objects do not have allowed_cpuset and allowed_nodeset anymore. They are only available for the entire topology using hwloc_topology_get_allowed_cpuset() and hwloc_topology_get_allowed_nodeset().

      +

      As usual, those are only needed when the INCLUDE_DISALLOWED topology flag is given, which means disallowed objects are kept in the topology. If so, one may find out whether some PUs inside an object is allowed by checking

      hwloc_bitmap_intersects(obj->cpuset, hwloc_topology_get_allowed_cpuset(topology))
      +

      Replace cpusets with nodesets for NUMA nodes. To find out which ones, replace intersects() with and() to get the actual intersection.

      +

      +

      +

      +

      +Object depths are now signed int

      +

      obj->depth as well as depths given to functions such as hwloc_get_obj_by_depth() or returned by hwloc_topology_get_depth() are now signed int.

      +

      Other depth such as cache-specific depth attribute are still unsigned.

      +

      +

      +

      +

      +Memory attributes become NUMANode-specific

      +

      Memory attributes such as obj->memory.local_memory are now only available in NUMANode-specific attributes in obj->attr->numanode.local_memory.

      +

      obj->memory.total_memory is available in all objects as obj->total_memory.

      +

      See hwloc_obj_attr_u::hwloc_numanode_attr_s and hwloc_obj for details.

      +

      +

      +

      +

      +Topology configuration changes

      +

      The old ignoring API as well as several configuration flags are replaced with the new filtering API, see hwloc_topology_set_type_filter() and its variants, and hwloc_type_filter_e for details.

      +
        +
      • +

        hwloc_topology_ignore_type(), hwloc_topology_ignore_type_keep_structure() and hwloc_topology_ignore_all_keep_structure() are respectively superseded by

        hwloc_topology_set_type_filter(topology, type, HWLOC_TYPE_FILTER_KEEP_NONE);
        +hwloc_topology_set_type_filter(topology, type, HWLOC_TYPE_FILTER_KEEP_STRUCTURE);
        +hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_STRUCTURE);
        +

        Also, the meaning of KEEP_STRUCTURE has changed (only entire levels may be ignored, instead of single objects), the old behavior is not available anymore.

        +

        +
      • +
      • +

        HWLOC_TOPOLOGY_FLAG_ICACHES is superseded by

        hwloc_topology_set_icache_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL);
        +

        +
      • +
      • +

        HWLOC_TOPOLOGY_FLAG_WHOLE_IO, HWLOC_TOPOLOGY_FLAG_IO_DEVICES and HWLOC_TOPOLOGY_FLAG_IO_BRIDGES replaced.

        +

        To keep all I/O devices (PCI, Bridges, and OS devices), use:

        hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL);
        +

        To only keep important devices (Bridges with children, common PCI devices and OS devices):

        hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT);
        +

        +
      • +
      +

      +

      +

      +

      +XML changes

      +

      2.0 XML files are not compatible with 1.x

      +

      2.0 can load 1.x files, but only NUMA distances are imported. Other distance matrices are ignored (they were never used by default anyway).

      +

      2.0 can export 1.x-compatible files, but only distances attached to the root object are exported (i.e. distances that cover the entire machine). Other distance matrices are dropped (they were never used by default anyway).

      +

      Users are advised to negociate hwloc versions between exporter and importer: If the importer isn't 2.x, the exporter should export to 1.x. Otherwise, things should work by default.

      +

      Hence hwloc_topology_export_xml() and hwloc_topology_export_xmlbuffer() have a new flags argument. to force a hwloc-1.x-compatible XML export.

        +
      • +If both always support 2.0, don't pass any flag.
      • +
      • +When the importer uses hwloc 1.x, export with HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1. Otherwise the importer will fail to import.
      • +
      • +When the exporter uses hwloc 1.x, it cannot pass any flag, and a 2.0 importer can import without problem.
      • +
      +
      #if HWLOC_API_VERSION >= 0x20000
      +   if (need 1.x compatible XML export)
      +      hwloc_topology_export_xml(...., HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1);
      +   else /* need 2.x compatible XML export */
      +      hwloc_topology_export_xml(...., 0);
      +#else
      +   hwloc_topology_export_xml(....);
      +#endif
      +

      Additionally, hwloc_topology_diff_load_xml(), hwloc_topology_diff_load_xmlbuffer(), hwloc_topology_diff_export_xml(), hwloc_topology_diff_export_xmlbuffer() and hwloc_topology_diff_destroy() lost the topology argument: The first argument (topology) isn't needed anymore.

      +

      +

      +

      +

      +Distances API totally rewritten

      +

      The new distances API is in hwloc/distances.h.

      +

      Distances are not accessible directly from objects anymore. One should first call hwloc_distances_get() (or a variant) to retrieve distances (possibly with one call to get the number of available distances structures, and another call to actually get them). Then it may consult these structures, and finally release them.

      +

      The set of object involved in a distances structure is specified by an array of objects, it may not always cover the entire machine or so.

      +

      +

      +

      +

      +Return values of functions

      +

      Bitmap functions (and a couple other functions) can return errors (in theory).

      +

      Most bitmap functions may have to reallocate the internal bitmap storage. In v1.x, they would silently crash if realloc failed. In v2.0, they now return an int that can be negative on error. However, the preallocated storage is 512 bits, hence realloc will not even be used unless you run hwloc on machines with larger PU or NUMAnode indexes.

      +

      hwloc_obj_add_info(), hwloc_cpuset_from_nodeset() and hwloc_cpuset_from_nodeset() also return an int, which would be -1 in case of allocation errors.

      +

      +

      +

      +

      +Misc API changes

      + +

      +

      +

      +

      +API removals and deprecations

      +
        +
      • +

        HWLOC_OBJ_SYSTEM removed: The root object is always HWLOC_OBJ_MACHINE

        +

        +
      • +
      • +

        _membind_nodeset() memory binding interfaces deprecated: One should use the variant without _nodeset suffix and pass the HWLOC_MEMBIND_BYNODESET flag.

        +

        +
      • +
      • +

        HWLOC_MEMBIND_REPLICATE removed: no supported operating system supports it anymore.

        +

        +
      • +
      • +

        hwloc_obj_snprintf() removed because it was long-deprecated by hwloc_obj_type_snprintf() and hwloc_obj_attr_snprintf().

        +

        +
      • +
      • +

        hwloc_obj_type_sscanf() deprecated, hwloc_obj_type_of_string() removed.

        +

        +
      • +
      • +

        hwloc_cpuset_from/to_nodeset_strict() deprecated: Now useless since all topologies are NUMA. Use the variant without the _strict suffix

        +

        +
      • +
      • +

        hwloc_distribute() and hwloc_distributev() removed, deprecated by hwloc_distrib().

        +

        +
      • +
      • +

        The Custom interface (hwloc_topology_set_custom(), etc.) was removed, as well as the corresponding command-line tools (hwloc-assembler, etc.). Topologies always start with object with valid cpusets and nodesets.

        +

        +
      • +
      • +

        obj->online_cpuset removed: Offline PUs are simply listed in the complete_cpuset as previously.

        +

        +
      • +
      • +

        obj->os_level removed.

        +

        +
      • +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00411.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00411.html new file mode 100644 index 0000000000..476bbfb3fd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00411.html @@ -0,0 +1,187 @@ + + + + + + + +Hardware Locality (hwloc): Network Locality (netloc) + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Network Locality (netloc)
      +
      +
      +

      +

      +

      +

      Portable abstraction of network topologies for high-performance computing.

      +

      The netloc documentation spans of these sections:

      +

      +

      +

      +

      +Netloc Summary

      +

      The Portable Network Locality (netloc) software package provides network topology discovery tools, and an abstract representation of those networks topologies for a range of network types and configurations. It is provided as a companion to the Portable Hardware Locality (hwloc) package. These two software packages work together to provide a comprehensive view of the HPC system topology, spanning from the processor cores in one server to the cores in another - including the complex network(s) in between.

      +

      Towards this end, netloc is divided into two sets of components. The first tools are for the admin to extract the information about the topology of the machines with topology discovery tools for each network type and discovery technique (called readers). The second set of tools is for the user to exploit the collected information: to display the topology or create a topology-aware mapping of the processes of an application.

      +
      + +
      +

      +

      +

      +

      +Supported Networks

      +

      For now, only InfiniBand (See Setup) is supported, but it is planned to be extended it very soon.

      +

      +

      +

      +

      +Netloc Installation

      +

      The generic installation procedure for both hwloc and netloc is described in Installation.

      +

      Note that netloc is currently not supported on as many platforms as the original hwloc project. netloc is enabled by default when supported, or can be disabled by passing --disable-netloc to the configure command-line.

      +

      +

      +

      +

      +Setup

      +

      To use Netloc tools, we need two steps. The first step consists in getting information about network directly from tools distributed by manufacturers. For Infiniband, for instance, this operation needs privileges to access to the network device. For this step we have wrappers in Netloc that will call the right tools with the right options.

      +

      The second step will transform the raw files generated by manufacturer tools, into files in a format readable by Netloc tools, and that will not depend on network technologies.

      +

      To be clear, let's take an example with Infiniband. This first step is handled by netloc_ib_gather_raw that will call ibnetdiscover and ibroutes tools to generate the necessary raw data files. The step has to be run by an administrator, since the Infiniband tools need to access to the network device.

      +
      shell$ netloc_ib_gather_raw --help
      +Usage: netloc_ib_gather_raw [options] <outdir>
      +  Dumps topology information to <outdir>/ib-raw/
      +  Subnets are guessed from the <outdir>/hwloc/ directory where
      +  the hwloc XML exports of some nodes are stored.
      +Options:
      + --sudo
      +    Pass sudo to internal ibnetdiscover and ibroute invocations.
      +    Useful when the entire script cannot run as root.
      + --hwloc-dir <dir>
      +    Use <dir> instead of <outdir>/hwloc/ for hwloc XML exports.
      + --force-subnet [<subnet>:]<board>:<port> to force the discovery
      +    Do not guess subnets from hwloc XML exports.
      +    Force discovery on local board <board> port <port>
      +    and optionally force the subnet id <subnet>
      +    instead of reading it from the first GID.
      +    Examples: --force-subnet mlx4_0:1
      +              --force-subnet fe80:0000:0000:0000:mlx4_0:1
      + --ibnetdiscover /path/to/ibnetdiscover
      + --ibroute /path/to/ibroute
      +    Specify exact location of programs. Default is /usr/bin/<program>
      + --sleep <n>
      +    Sleep for <n> seconds between invocations of programs probing the network
      + --ignore-errors
      +    Ignore errors from ibnetdiscover and ibroute, assume their outputs are ok
      + --force -f
      +    Always rediscover to overwrite existing files without asking
      + --verbose -v
      +    Add verbose messages
      + --dry-run
      +    Do not actually run programs or modify anything
      + --help -h
      +    Show this help
      +
      +shell$ ./netloc_ib_gather_raw /home/netloc/data
      +WARNING: Not running as root.
      +Using /home/netloc/data/hwloc as hwloc lstopo XML directory.
      +
      +Exporting local node hwloc XML...
      +  Running lstopo-no-graphics...
      +
      +Found 1 subnets in hwloc directory:
      + Subnet fe80:0000:0000:0000 is locally accessible from board qib0 port 1.
      +
      +Looking at fe80:0000:0000:0000 (through local board qib0 port 1)...
      + Running ibnetdiscover...
      + Getting routes...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L112' LID 18...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L108' LID 20...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L102' LID 23...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L104' LID 25...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L106' LID 24...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L114' LID 22...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L116' LID 21...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L109' LID 12...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L111' LID 11...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L107' LID 13...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L103' LID 17...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L105' LID 16...
      +  Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L113' LID 15...
      +

      The second step, that can be done by a regular user, is done by the tool netloc_ib_extract_dats.

      +
      shell$ netloc_ib_extract_dats --help
      +Usage: netloc_ib_extract_dats <path to input raw data files> <output path> [--hwloc-dir
      +<hwloc xml path>]
      +        hwloc-dir can be an absolute path or a relative path from output path
      +
      +shell$ netloc_ib_extract_dats /home/netloc/data/ib-raw /home/netloc/data/netloc \
      +  --hwloc-dir ../hwloc
      +Read subnet: fe80:0000:0000:0000
      +2 partitions found
      +        'node'
      +        'admin'
      +

      +

      +

      +

      +Topology display

      +

      Netloc provides a tool, netloc_draw.html, that displays a topology in a web browser, by using a JSON file.

      +

      +Generate the JSON file

      +

      In order to display a topology, Netloc needs to generate a JSON file corresponding to a topology. For this operation, the user must run netloc_draw_to_json.

      +
      shell$ netloc_draw_to_json --help
      +Usage: netloc_draw_to_json <path to topology directory>
      +
      +shell$ netloc_draw_to_json /home/netloc/data/netloc
      +

      The netloc_draw_to_json command will write a JSON file for each topology file found in the input directory. The output files, written also in the input directory, can be open by netloc_draw.html in a web browser.

      +

      +Using netloc_draw

      +

      Once the JSON file is opened, the rendering is generated by the Javascript vis library for computing the position of the nodes. From the interface, it is possible to search for a specific node, to color the nodes, to expand merged switches, to show statistics, to export as an image... The user can interact with the nodes by moving them. For now, there are bugs and other nodes might move too.

      +

      The placement of the nodes is done statically if the topology is detected as a tree. If not, vis.js will use physics to find good positions, and it can be very time consuming.

      +
      + +
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00412.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00412.html new file mode 100644 index 0000000000..5ffc6dd7f5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/a00412.html @@ -0,0 +1,88 @@ + + + + + + + +Hardware Locality (hwloc): Netloc with Scotch + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Netloc with Scotch
      +
      +
      +

      +

      +

      +

      Scotch is a toolbox for graph partitioning [XXX], that can do mapping between a communication graph and an architecture. Netloc interfaces with Scotch, by getting the topology of the machine and building the Scotch architecture. It is also possible to directly build a mapping file that can be given to mpirun.

      +

      +

      +

      +

      +Introduction

      +

      Scotch is able to deal architectures to represent the topology of a complete machine. Scotch handles several types of topologies: complete graphs, hypercubes, fat trees, meshes, torus, and random graphs. Moreover, Scotch is able to manage parts of architectures that are called sub-architectures. Thus, from a complete architecture, we can create a sub-architecture that will represent the available resources of the complete machine.

      +

      +

      +

      +

      +Setup

      +

      The first step in order to use Netloc tools is to discover the network. For this task, we provide tools called netloc_gather that are wrappers to the dedicated tools provided by the manufacturer of the network, that generate the raw data given by the devices. This task needs privileges to access to the network devices. Once, this task is completed, the raw data is converted in a generic format independent to the fabric by extract_dats. Figure 1 shows how the different modules of Netloc are linked, and what are the tools provided by Netloc.

      +

      +

      +

      +

      +Tools and API

      +

      When the machine is discovered and all the needed files are generated as seen previously, a user can call the netlocscotch functions from the API and interact with Scotch.

      +

      +Build Scotch architectures

      +

      Netloc provides a function to export the built topology into the Scotch format. That will give the possibility to the user to play with the topology in Scotch. Since Netloc matches the discovered topology with known topologies, the Scotch architecture won’t be random graphs but known topologies also in Scotch that will lead to optimized graph algorithms. This function is called netlocscotch_build_arch.

      +

      When the network topology is a tree, the topology converted by netlocscotch is the complete topology of the machine containing intranode topologies from hwloc. In this case, merging the two levels results in a bigger tree. For other network topologies, the global graph created for Scotch is a generic graph since it not not (at this moment) possible to create nested known architectures.

      +

      +Build Scotch sub-architectures

      +

      Most of the time, the user does not have access to the complete machine. He uses a resource manager to run his application and he will gain access only to a set of nodes. In this case getting the Scotch architecture of the complete machine is not relevant. Fortunately, Netloc is also able to build a Scotch sub-architecture that will contain only the available nodes. For this operation the user needs to run a specific program, netloc_get_resources, that will record in a file, the lists of available nodes and available cores by using MPI and hwloc. From this file, the function netlocscotch_build_subarch will build the Scotch sub-architecture.

      +

      +Mapping of processes

      +

      A main goal in having all these data about the network topology, especially in Scotch structures, is to help the process placement. For that, we use the mapping of a process graph to the architecture provided by Scotch. As we have seen previously, Netloc is able to detect the structure of the topology and will build the adapted Scotch architecture that will be more efficient than a random structure.

      +

      In case, the network topology is not a tree, netlocscotch converts the complete topology into a generic graph. The drawback in that is the Scotch graph algorithms are less efficient. To overcome that, netlocscotch does two steps of mapping: first it maps the processes to the nodes, and then for each node maps the processes to the cores. We have to conduct tests to check if the method gives better results than using a generic graph directly.

      +

      The other input needed in Scotch is the process graph. Since we want to optimize the placement to decrease the communication time, a good metric for building the application graph is the amount of communications between all pairs of processes. Studies still have to be done to choose, in the most efficient way, what we take into account to define the amount of communications between the number of messages, the size of messages... This information will be transformed into a process graph.

      +

      Once we have a good mapping computed by Scotch, we can give it to the user, or Netloc can even generate the corresponding rank file useful to MPI.

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/annotated.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/annotated.html new file mode 100644 index 0000000000..1770ca2947 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/annotated.html @@ -0,0 +1,87 @@ + + + + + + + +Hardware Locality (hwloc): Data Structures + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Data Structures
      +
      +
      +
      Here are the data structures with brief descriptions:
      +
      [detail level 123]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       Chwloc_backendDiscovery backend structure
       Chwloc_cl_device_topology_amd
       Chwloc_componentGeneric component structure
       Chwloc_disc_componentDiscovery component structure
       Chwloc_disc_statusDiscovery status structure
       Chwloc_distances_sMatrix of distances between a set of objects
       Chwloc_info_sObject info
       Chwloc_locationWhere to measure attributes from
       Chwloc_location_uActual location
       Chwloc_objStructure of a topology object
       Chwloc_obj_attr_uObject type-specific Attributes
       Chwloc_bridge_attr_sBridge specific Object Attributes
       Chwloc_cache_attr_sCache-specific Object Attributes
       Chwloc_group_attr_sGroup-specific Object Attributes
       Chwloc_numanode_attr_sNUMA node-specific Object Attributes
       Chwloc_memory_page_type_sArray of local memory page types, NULL if no local memory and page_types is 0
       Chwloc_osdev_attr_sOS Device specific Object Attributes
       Chwloc_pcidev_attr_sPCI Device specific Object Attributes
       Chwloc_topology_cpubind_supportFlags describing actual PU binding support for this topology
       Chwloc_topology_diff_obj_attr_uOne object attribute difference
       Chwloc_topology_diff_obj_attr_generic_s
       Chwloc_topology_diff_obj_attr_string_sString attribute modification with an optional name
       Chwloc_topology_diff_obj_attr_uint64_sInteger attribute modification with an optional index
       Chwloc_topology_diff_uOne element of a difference list between two topologies
       Chwloc_topology_diff_generic_s
       Chwloc_topology_diff_obj_attr_s
       Chwloc_topology_diff_too_complex_s
       Chwloc_topology_discovery_supportFlags describing actual discovery support for this topology
       Chwloc_topology_membind_supportFlags describing actual memory binding support for this topology
       Chwloc_topology_misc_supportFlags describing miscellaneous features
       Chwloc_topology_supportSet of flags describing actual support for this topology
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/bc_s.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/bdwn.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Hardware Locality (hwloc): Data Structure Index + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Data Structure Index
      +
      + + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/closed.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/devel09-pci.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/devel09-pci.png new file mode 100644 index 0000000000000000000000000000000000000000..0a60161d408c07ade6de004c63802da958a4ff5e GIT binary patch literal 23431 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 + + + + + + +Hardware Locality (hwloc): hwloc Directory Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      hwloc Directory Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Files

      file  bitmap.h [code]
       
      file  cpukinds.h [code]
       
      file  cuda.h [code]
       
      file  cudart.h [code]
       
      file  diff.h [code]
       
      file  distances.h [code]
       
      file  export.h [code]
       
      file  gl.h [code]
       
      file  glibc-sched.h [code]
       
      file  helper.h [code]
       
      file  levelzero.h [code]
       
      file  linux-libnuma.h [code]
       
      file  linux.h [code]
       
      file  memattrs.h [code]
       
      file  nvml.h [code]
       
      file  opencl.h [code]
       
      file  openfabrics-verbs.h [code]
       
      file  plugins.h [code]
       
      file  rsmi.h [code]
       
      file  shmem.h [code]
       
      file  windows.h [code]
       
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000000..feaebd4c4f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,69 @@ + + + + + + + +Hardware Locality (hwloc): include Directory Reference + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + + +
      +
      +
      +
      include Directory Reference
      +
      +
      + + + + +

      +Directories

      directory  hwloc
       
      + + + + + +

      +Files

      file  hwloc.h [code]
       
      file  netloc.h [code]
       
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doc.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doxygen.css b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doxygen.css new file mode 100644 index 0000000000..3958a6c127 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doxygen.css @@ -0,0 +1,146 @@ +body { + font-size: 13px; +/* margin-top: 0px; */ +} + +div.menu { + text-align: center; + margin-top: 12px; + margin-bottom: 3px; + background: #eeeeff; + font-variant: small-caps; +/* position: fixed;*/ + width: 100%; +} +div.menu a { + text-decoration: none; + color: #0020a0; +} +div.menu hr.menu { + height: 4px; + background: #fe0; + border: 0px; + margin-top: 0px; + margin-bottom: 0px; +} + +div.title { + font: bold normal 2em sans-serif ; + margin: 0px; + color: #0020a0; +} + +h1 { + font: bold normal 1.7em sans-serif ; + margin: 0px; + color: #0020a0; +} +h1.sub { + font: bold normal 1.3em sans-serif ; + text-align: right ; + color: #0020a0; +} +h1 a { + color: #0020a0; + text-decoration: none; +} + +h2 { + font: bold normal small-caps 1.3em sans-serif ; + color: #0020a0; + margin-top: 8px; + margin-bottom: 8px; +} + +h4 { + font: bold normal small-caps 1em sans-serif ; + color: #0020a0; + margin-top: 8px; + margin-bottom: 4px; +} + +h6.mirrors { + text-align: right; + margin: 0px; + font-size: 10px; +} + +div.section { + background: #eeeeff; + padding-left: 2px; + padding-bottom: 2px; + margin-top: 12px; + margin-bottom: 12px; +} + +p { + margin-top: 8px; + margin-bottom: 4px; + margin-left: 6px; + margin-right: 6px; +} + +hr { + height: 8px; + background: #fe0; + border: 0px; + margin-top: 6px; + margin-bottom: 6px; +} + +pre { + font-size: 12px; + background: #dddddd; + padding: 3px; + padding-left: 0px; + margin-left: 12px; +} + +a { + font-weight: bold; +} + +div.publis-desc { + text-align: right; + font-style: italic; + font-size: 12px; + padding-left: 15%; +} + +p.updated { + text-align: right; + font-size: 10px; + font-style: italic; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doxygen.svg b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doxygen.svg new file mode 100644 index 0000000000..d42dad52d5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dudley.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/dudley.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f955a60a9c72394882704c14f95e64939deaa4 GIT binary patch literal 14824 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/folderclosed.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/functions.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/functions.html new file mode 100644 index 0000000000..6a380f13a3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/functions.html @@ -0,0 +1,587 @@ + + + + + + + +Hardware Locality (hwloc): Data Fields + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      Here is a list of all struct and union fields with links to the structures/unions they belong to:
      + +

      - a -

      + + +

      - b -

      + + +

      - c -

      + + +

      - d -

      + + +

      - e -

      + + +

      - f -

      + + +

      - g -

      + + +

      - i -

      + + +

      - k -

      + + +

      - l -

      + + +

      - m -

      + + +

      - n -

      + + +

      - o -

      + + +

      - p -

      + + +

      - r -

      + + +

      - s -

      + + +

      - t -

      + + +

      - u -

      + + +

      - v -

      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/functions_vars.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/functions_vars.html new file mode 100644 index 0000000000..ef861009e3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/functions_vars.html @@ -0,0 +1,587 @@ + + + + + + + +Hardware Locality (hwloc): Data Fields - Variables + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +  + +

      - a -

      + + +

      - b -

      + + +

      - c -

      + + +

      - d -

      + + +

      - e -

      + + +

      - f -

      + + +

      - g -

      + + +

      - i -

      + + +

      - k -

      + + +

      - l -

      + + +

      - m -

      + + +

      - n -

      + + +

      - o -

      + + +

      - p -

      + + +

      - r -

      + + +

      - s -

      + + +

      - t -

      + + +

      - u -

      + + +

      - v -

      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/hagrid.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/hagrid.png new file mode 100644 index 0000000000000000000000000000000000000000..f81d7d54188512553d2051391d52a26d0e9e062d GIT binary patch literal 13780 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 JJ$?QD{{VYh-vR&t literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/index.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/index.html new file mode 100644 index 0000000000..0308668029 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/index.html @@ -0,0 +1,104 @@ + + + + + + + +Hardware Locality (hwloc): Hardware Locality + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Hardware Locality
      +
      +
      +

      Portable abstraction of parallel architectures for high-performance computing

      +
      +

      +

      +

      +

      +Introduction

      +

      The Hardware Locality (hwloc) software project aims at easing the process of discovering hardware resources in parallel architectures. It offers command-line tools and a C API for consulting these resources, their locality, attributes, and interconnection. hwloc primarily aims at helping high-performance computing (HPC) applications, but is also applicable to any project seeking to exploit code and/or data locality on modern computing platforms.

      +

      hwloc is actually made of two subprojects distributed together:

      +

      +See also the Related pages tab above for links to other sections. +

      +

      Netloc may be disabled, but the original hwloc cannot. Both hwloc and netloc APIs are documented after these sections.

      +

      +

      +

      +

      +Installation

      +

      hwloc (https://www.open-mpi.org/projects/hwloc/) is available under the BSD license. It is hosted as a sub-project of the overall Open MPI project (https://www.open-mpi.org/). Note that hwloc does not require any functionality from Open MPI – it is a wholly separate (and much smaller!) project and code base. It just happens to be hosted as part of the overall Open MPI project.

      +

      +Basic Installation

      +

      Installation is the fairly common GNU-based process:

      +
      shell$ ./configure --prefix=...
      +shell$ make
      +shell$ make install
      +

      hwloc- and netloc-specific configure options and requirements are documented in sections hwloc Installation and Netloc Installation respectively.

      +

      Also note that if you install supplemental libraries in non-standard locations, hwloc's configure script may not be able to find them without some help. You may need to specify additional CPPFLAGS, LDFLAGS, or PKG_CONFIG_PATH values on the configure command line.

      +

      For example, if libpciaccess was installed into /opt/pciaccess, hwloc's configure script may not find it be default. Try adding PKG_CONFIG_PATH to the ./configure command line, like this:

      +
      ./configure PKG_CONFIG_PATH=/opt/pciaccess/lib/pkgconfig ...
      +

      Running the "lstopo" tool is a good way to check as a graphical output whether hwloc properly detected the architecture of your node. Netloc command-line tools can be used to display the network topology interconnecting your nodes.

      +

      +Installing from a Git clone

      +

      Additionally, the code can be directly cloned from Git:

      +
      shell$ git clone https://github.com/open-mpi/hwloc.git
      +shell$ cd hwloc
      +shell$ ./autogen.sh
      +

      Note that GNU Autoconf >=2.63, Automake >=1.11 and Libtool >=2.2.6 are required when building from a Git clone.

      +

      Nightly development snapshots are available on the web site, they can be configured and built without any need for Git or GNU Autotools.

      +

      +

      +

      +

      +Questions and Bugs

      +

      Bugs should be reported in the tracker (https://github.com/open-mpi/hwloc/issues). Opening a new issue automatically displays lots of hints about how to debug and report issues.

      +

      Questions may be sent to the users or developers mailing lists (https://www.open-mpi.org/community/lists/hwloc.php).

      +

      There is also a #hwloc IRC channel on Libera Chat (irc.libera.chat).

      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/jquery.js b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/jquery.js new file mode 100644 index 0000000000..103c32d79b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
      ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
      "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
      ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
      "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
      "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
      ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/menu.js b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/menu.js new file mode 100644 index 0000000000..2fe2214f26 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
    4. '); + } else { + $('#main-menu').append('
    5. '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/menudata.js b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/menudata.js new file mode 100644 index 0000000000..2e94e80fa7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/menudata.js @@ -0,0 +1,71 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"k",url:"functions.html#index_k"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"v",url:"functions.html#index_v"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"g",url:"functions_vars.html#index_g"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"k",url:"functions_vars.html#index_k"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"v",url:"functions_vars.html#index_v"}]}]}]}]} diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/modules.html b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/modules.html new file mode 100644 index 0000000000..be1b8e32ee --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/modules.html @@ -0,0 +1,112 @@ + + + + + + + +Hardware Locality (hwloc): Modules + + + + + + +
      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Modules
      +
      +
      +
      Here is a list of all modules:
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       API version
       Object Sets (hwloc_cpuset_t and hwloc_nodeset_t)
       Object Types
       Object Structure and Attributes
       Topology Creation and Destruction
       Object levels, depths and types
       Converting between Object Types and Attributes, and Strings
       Consulting and Adding Key-Value Info Attributes
       CPU binding
       Memory binding
       Changing the Source of Topology Discovery
       Topology Detection Configuration and Query
       Modifying a loaded Topology
       Finding Objects inside a CPU set
       Finding Objects covering at least CPU set
       Looking at Ancestor and Child Objects
       Kinds of object Type
       Looking at Cache Objects
       Finding objects, miscellaneous helpers
       Distributing items over a topology
       CPU and node sets of entire topologies
       Converting between CPU sets and node sets
       Finding I/O objects
       The bitmap API
       Exporting Topologies to XML
       Exporting Topologies to Synthetic
       Retrieve distances between objects
       Helpers for consulting distance matrices
       Add distances between objects
       Remove distances between objects
       Comparing memory node attributes for finding where to allocate on
       Managing memory attributes
       Kinds of CPU cores
       Linux-specific helpers
       Interoperability with Linux libnuma unsigned long masks
       Interoperability with Linux libnuma bitmask
       Windows-specific helpers
       Interoperability with glibc sched affinity
       Interoperability with OpenCL
       Interoperability with the CUDA Driver API
       Interoperability with the CUDA Runtime API
       Interoperability with the NVIDIA Management Library
       Interoperability with the ROCm SMI Management Library
       Interoperability with the oneAPI Level Zero interface.
       Interoperability with OpenGL displays
       Interoperability with OpenFabrics
       Topology differences
       Sharing topologies between processes
       Components and Plugins: Discovery components
       Components and Plugins: Discovery backends
       Components and Plugins: Generic components
       Components and Plugins: Core functions to be used by components
       Components and Plugins: Filtering objects
       Components and Plugins: helpers for PCI discovery
       Components and Plugins: finding PCI objects during other discoveries
       Netloc API
      +
      +
      + + + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/nav_f.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/nav_g.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 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 z 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/open.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +Hardware Locality (hwloc): Related Pages + + + + + + +

      +
      + + + + + + +
      +
      Hardware Locality (hwloc) +  2.7.1 +
      +
      +
      + + + + + + +
      +
      +
      +
      Related Pages
      +
      + + +
      + + diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-full-with-smt.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-full-with-smt.png new file mode 100644 index 0000000000000000000000000000000000000000..35da6b17532dc12dbb699a7eaf06f059f8ab6363 GIT binary patch literal 18107 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-with-smt.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-with-smt.png new file mode 100644 index 0000000000000000000000000000000000000000..230510af7142845f05f56ad7ad24acdcb574c15b GIT binary patch literal 8362 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
    6. Qu0jhY*Oh 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-without-smt.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/ppc64-without-smt.png new file mode 100644 index 0000000000000000000000000000000000000000..bb916f6b0737edaf59b5ab836126e6946202a091 GIT binary patch literal 7045 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 Np^BDrDeTFMe*=MahS>lB literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/splitbar.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/sync_off.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/sync_on.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tab_a.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tab_b.png b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tabs.css b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tabs.css new file mode 100644 index 0000000000..7d45d36c1c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/3rd-party/hwloc-2.7.1/doc/doxygen-doc/hwloc-a4.pdf b/3rd-party/hwloc-2.7.1/doc/doxygen-doc/hwloc-a4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5d2ba1a3b672737e9f5f42c88e03d71040f8d44b GIT binary patch literal 1321515 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 elbtEKJjo8Cv*hoeY0NIhV)d$Zv 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%0AC=G5`7UXGK%9leb?A;-#HoV{EV#emrONN( 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

      LY$TQ3>5Gh?P7Ft~G_P$Yk~ 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 D{BuN($5Rxt4j*@JWWXrC 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

    7. DvKEek9YKJFHvsf_0g4|6K~1tWj4 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

      + + + + + + +\page cpu_mem_bind CPU and Memory Binding Overview + +\htmlonly +
      +\endhtmlonly + +Some operating systems do not systematically provide separate +functions for CPU and memory binding. This means that CPU binding +functions may have have effects on the memory binding policy. +Likewise, changing the memory binding policy may change the CPU +binding of the current thread. This is often not a problem for +applications, so by default hwloc will make use of these functions +when they provide better binding support. + +If the application does not want the CPU binding to change when +changing the memory policy, it needs to use the +::HWLOC_MEMBIND_NOCPUBIND flag to prevent hwloc from using OS functions +which would change the CPU binding. Additionally, +::HWLOC_CPUBIND_NOMEMBIND can be passed to CPU binding function to +prevent hwloc from using OS functions would change the memory binding +policy. Of course, using these flags will reduce hwloc's overall support for +binding, so their use is discouraged. + +One can avoid using these flags but still closely control both memory +and CPU binding by allocating memory, touching each page in the +allocated memory, and then changing the CPU binding. The +already-really-allocated memory will then be "locked" to physical +memory and will not be migrated. Thus, even if the memory binding +policy gets changed by the CPU binding order, the already-allocated +memory will not change with it. When binding and allocating further +memory, the CPU binding should be performed again in case the memory +binding altered the previously-selected CPU binding. + +Not all operating systems support the notion of a "current" memory +binding policy for the current process, but such operating systems often still +provide a way to allocate data on a given node set. Conversely, some +operating systems support the notion of a "current" memory binding policy and do +not permit allocating data on a specific node set without changing the +current policy and allocate the data. To provide the most powerful coverage of +these facilities, hwloc provides: + +
        +
      • functions that set/get the current memory binding policies (if supported): +hwloc_set/get_membind() and hwloc_set/get_proc_membind() +
      • a function that allocates memory bound to specific node set without changing +the current memory binding policy (if supported): hwloc_alloc_membind(). +
      • a helper which, if needed, changes the current memory binding policy of the +process in order to obtain memory binding: hwloc_alloc_membind_policy(). +
      + +An application can thus use the two first sets of functions if it wants to +manage separately the global process binding policy and directed allocation, +or use the third set of functions if it does not care about the process memory +binding policy. + +See \ref hwlocality_cpubinding and \ref hwlocality_membinding for +hwloc's API functions regarding CPU and memory binding, respectively. +There are some examples under doc/examples/ in the source tree. + + + +\page iodevices I/O Devices + +\htmlonly +
      +\endhtmlonly + +hwloc usually manipulates processing units and memory but it can also +discover I/O devices and report their locality as well. +This is useful for placing I/O intensive applications on cores near the +I/O devices they use, or for gathering information about all platform +components. + + +\htmlonly +
      +\endhtmlonly +\section iodevices_enabling Enabling and requirements + +I/O discovery is disabled by default (except in lstopo) for performance +reasons. +It can be enabled by changing the filtering of I/O object types to +::HWLOC_TYPE_FILTER_KEEP_IMPORTANT or ::HWLOC_TYPE_FILTER_KEEP_ALL +before loading the topology, for instance with hwloc_topology_set_io_types_filter(). + +Note that I/O discovery requires significant help from the operating system. +The pciaccess library (the development package is usually libpciaccess-devel +or libpciaccess-dev) is needed to fully detect PCI devices and bridges/switches. +On Linux, PCI discovery may still be performed even if libpciaccess cannot +be used. But it misses PCI device names. +Moreover, some operating systems require privileges for probing PCI devices, +see \ref faq_privileged for details. + +The actual locality of I/O devices is only currently detected on Linux. +Other operating system will just report I/O devices as being attached +to the topology root object. + + +\htmlonly +
      +\endhtmlonly +\section iodevices_objects I/O objects + +When I/O discovery is enabled and supported, some additional objects +are added to the topology. +The corresponding I/O object types are: +
      • +::HWLOC_OBJ_OS_DEVICE describes an operating-system-specific +handle such as the sda drive or the eth0 network interface. +See \ref iodevices_osdev. +
      • +::HWLOC_OBJ_PCI_DEVICE and ::HWLOC_OBJ_BRIDGE build up +a PCI hierarchy made of bridges (that may be actually be switches) and devices. +See \ref iodevices_pci. +
      +Any of these types may be filtered individually with hwloc_topology_set_type_filter(). + +hwloc tries to attach these new objects to normal objects +(usually NUMA nodes) to match their actual physical location. +For instance, if a I/O hub (or root complex) is physically connected to a package, +the corresponding hwloc bridge object (and its PCI bridges and devices children) +is inserted as a child of the corresponding hwloc Package object. +These children are not in the normal children list but rather in the I/O-specific +children list. + +I/O objects also have neither CPU sets nor node sets (NULL pointers) because +they are not directly usable by the user applications for binding. +Moreover I/O hierarchies may be highly complex (asymmetric trees of bridges). +So I/O objects are placed in specific levels with custom depths. +Their lists may still be traversed with regular helpers such as +hwloc_get_next_obj_by_type(). +However, hwloc offers some dedicated helpers such as hwloc_get_next_pcidev() +and hwloc_get_next_osdev() for convenience (see \ref hwlocality_advanced_io). + + +\htmlonly +
      +\endhtmlonly +\section iodevices_osdev OS devices + +Although each PCI device is uniquely identified by its bus ID +(e.g. 0000:01:02.3), a user-space application can hardly find out which +PCI device it is actually using. +Applications rather use software handles +(such as the eth0 network interface, + the sda hard drive, + or the mlx4_0 OpenFabrics HCA). +Therefore hwloc tries to add software devices +(::HWLOC_OBJ_OS_DEVICE, also known as OS devices). + +OS devices may be attached below PCI devices, but they may also be +attached directly to normal objects. +Indeed some OS devices are not related to PCI. +For instance, NVDIMM block devices (such as pmem0s on Linux) +are directly attached near their NUMA node +(I/O child of the parent whose memory child is the NUMA node). +Also, if hwloc could not discover PCI for some reason, PCI-related +OS devices may also be attached directly to normal objects. + +Finally, OS subdevices may be exposed as OS devices children +of another OS device. This is the case of LevelZero subdevices for instance. + +hwloc first tries to discover OS devices from the operating system, +e.g. eth0, sda or mlx4_0. +However, this ability is currently only available on Linux for some +classes of devices. + +hwloc then tries to discover software devices through additional +I/O components using external libraries. +For instance proprietary graphics drivers do not expose any named OS device, +but hwloc may still create one OS object per software handle when +supported. +For instance the opencl and cuda components may +add some opencl0d0 and cuda0 OS device objects. + +Here is a list of OS device objects commonly created by hwloc +components when I/O discovery is enabled and supported. + +
        +
      • Hard disks or non-volatile memory devices (::HWLOC_OBJ_OSDEV_BLOCK) +
          +
        • sda or dax2.0 (Linux component)
        • +
        +
      • +
      • Network interfaces (::HWLOC_OBJ_OSDEV_NETWORK) +
          +
        • eth0, wlan0, ib0 (Linux component)
        • +
        +
      • +
      • OpenFabrics (InfiniBand, Omni-Path, usNIC, etc) HCAs (::HWLOC_OBJ_OSDEV_OPENFABRICS) +
          +
        • mlx5_0, hfi1_0, qib0, usnic_0 (Linux component)
        • +
        • bxi0 with "BXI" subtype for Atos/Bull BXI HCAs (Linux component) even if those are not really OpenFabrics.
        • +
        +
      • +
      • GPUs (::HWLOC_OBJ_OSDEV_GPU) +
          +
        • rsmi0 for the first RSMI device + ("RSMI" subtype, from the RSMI component, using the AMD ROCm SMI library)
        • +
        • nvml0 for the first NVML device + ("NVML" subtype, from the NVML component, using the NVIDIA Management Library)
        • +
        • :0.0 for the first display + ("Display" subtype, from the GL component, using the NV-CONTROL X extension library, NVCtrl)
        • +
        • card0 and renderD128 for DRM device files + (from the Linux component, filtered-out by default because considered non-important)
        • +
        +
      • +
      • Co-Processors (::HWLOC_OBJ_OSDEV_COPROC) +
          +
        • opencl0d0 for the first device of the first OpenCL platform, + opencl1d3 for the fourth device of the second OpenCL platform + ("OpenCL" subtype, from the OpenCL component)
        • +
        • ze0 for the first Level Zero device + ("LevelZero" subtype, from the levelzero component, using the oneAPI Level Zero library), + and ze0.1 for its second subdevice (if any).
        • +
        • cuda0 for the first NVIDIA CUDA device + ("CUDA" subtype, from the CUDA component, using the NVIDIA CUDA Library)
        • +
        • ve0 for the first NEC Vector Engine device + ("VectorEngine" subtype, from the Linux component)
        • +
        +
      • +
      • DMA engine channel (::HWLOC_OBJ_OSDEV_DMA) +
          +
        • dma0chan0 (Linux component) when all OS devices are enabled (::HWLOC_TYPE_FILTER_KEEP_ALL)
        • +
        +
      • +
      + +Note that some PCI devices may contain multiple software devices +(see the example below). + +See also \ref interoperability for managing these devices without +considering them as hwloc objects. + + +\htmlonly +
      +\endhtmlonly +\section iodevices_pci PCI devices and bridges + +A PCI hierarchy is usually organized as follows: +A hostbridge object ( ::HWLOC_OBJ_BRIDGE object with upstream +type Host and downstream type PCI) is attached below +a normal object (usually the entire machine or a NUMA node). +There may be multiple hostbridges in the machine, attached to +different places, but all PCI devices are below one of them +(unless the Bridge object type is filtered-out). + +Each hostbridge contains one or several children, either other bridges +(usually PCI to PCI switches) or PCI devices (::HWLOC_OBJ_PCI_DEVICE). +The number of bridges between the hostbridge and a PCI device depends +on the machine. + + +\htmlonly +
      +\endhtmlonly +\section iodevices_consult Consulting I/O devices and binding + +I/O devices may be consulted by traversing the topology manually +(with usual routines such as hwloc_get_obj_by_type()) or by using +dedicated helpers (such as hwloc_get_pcidev_by_busid(), see +\ref hwlocality_advanced_io). + +I/O objects do not actually contain any locality information because +their CPU sets and node sets are NULL. +Their locality must be retrieved by walking up the object tree +(through the parent link) until a non-I/O object is found +(see hwloc_get_non_io_ancestor_obj()). +This normal object should have non-NULL CPU sets and node sets +which describe the processing units and memory that are immediately +close to the I/O device. +For instance the path from a OS device to its locality may go +across a PCI device parent, one or several bridges, up to +a Package node with the same locality. + +Command-line tools are also aware of I/O devices. +lstopo displays the interesting ones by default +(passing \--no-io disables it). + +hwloc-calc and hwloc-bind may manipulate I/O devices specified +by PCI bus ID or by OS device name. +
        +
      • + pci=0000:02:03.0 is replaced by the set + of CPUs that are close to the PCI device whose bus ID is given. +
      • +
      • + os=eth0 is replaced by CPUs that are close to the I/O + device whose software handle is called eth0. +
      • +
      +This enables easy binding of I/O-intensive applications near the +device they use. + + +\htmlonly +
      +\endhtmlonly +\section iodevices_examples Examples + +The following picture shows a dual-package dual-core host whose +PCI bus is connected to the first package and NUMA node. + +\image html devel09-pci.png +\image latex devel09-pci.png "" width=\textwidth + +Six interesting PCI devices were discovered. +However, hwloc found some corresponding software devices +(eth0, eth1, sda, mlx4_0, +ib0, and ib1) for only four of these physical +devices. +The other ones (PCI 102b:0532 and PCI 8086:3a20) +are an unused IDE controller (no disk attached) +and a graphic card (no corresponding software device reported +to the user by the operating system). + +On the contrary, it should be noted that three different software +devices were found for the last PCI device (PCI 15b3:634a). +Indeed this OpenFabrics HCA PCI device object contains one +one OpenFabrics software device (mlx4_0) and two virtual +network interface software devices (ib0 and ib1). + + +Here is the corresponding textual output: + +\verbatim +Machine (24GB total) + Package L#0 + NUMANode L#0 (P#0 12GB) + L3 L#0 (8192KB) + L2 L#0 (256KB) + L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0) + L2 L#1 (256KB) + L1 L#1 (32KB) + Core L#1 + PU L#1 (P#2) + HostBridge + PCIBridge + PCI 01:00.0 (Ethernet) + Net "eth0" + PCI 01:00.1 (Ethernet) + Net "eth1" + PCIBridge + PCI 03:00.0 (RAID) + Block "sda" + PCIBridge + PCI 04:03.0 (VGA) + PCI 00:1f.2 (IDE) + PCI 51:00.0 (InfiniBand) + Net "ib0" + Net "ib1" + Net "mlx4_0" + Package L#1 + NUMANode L#1 (P#1 12GB) + L3 L#1 (8192KB) + L2 L#2 (256KB) + L1 L#2 (32KB) + Core L#2 + PU L#2 (P#1) + L2 L#3 (256KB) + L1 L#3 (32KB) + Core L#3 + PU L#3 (P#3) +\endverbatim + + + + +\page miscobjs Miscellaneous objects + +\htmlonly +
      +\endhtmlonly + +hwloc topologies may be annotated with Misc objects +(of type ::HWLOC_OBJ_MISC) +either automatically or by the user. +This is a flexible way to annotate topologies with +large sets of information since Misc objects may be inserted +anywhere in the topology (to annotate specific objects or +parts of the topology), even below other Misc objects, and each +of them may contain multiple attributes (see also \ref faq_annotate). + +These Misc objects may have a subtype field +to replace Misc with something else in the lstopo +output. + + +\htmlonly +
      +\endhtmlonly +\section miscobjs_auto Misc objects added by hwloc + +hwloc only uses Misc objects when other object types are not sufficient, +and when the Misc object type is not filtered-out anymore. +This currently includes: +
        +
      • +Memory modules (DIMMs), on Linux when privileged and when +dmi-sysfs is supported by the kernel. +These objects have a subtype field of value MemoryModule. +They are currently always attached to the root object. +Their attributes describe the DIMM vendor, model, etc. +lstopo -v displays them as: +\code +Misc(MemoryModule) (P#1 DeviceLocation="Bottom-Slot 2(right)" BankLocation="BANK 2" Vendor=Elpida SerialNumber=21733667 AssetTag=9876543210 PartNumber="EBJ81UG8EFU0-GN-F ") +\endcode +
      • +
      • +Displaying process binding in lstopo \--top. +These objects have a subtype field of value Process +and a name attribute made of their PID and program name. +They are attached below the object they are bound to. +The textual lstopo displays them as: +\code + PU L#0 (P#0) + Misc(Process) 4445 myprogram +\endcode +
      • +
      + + +\htmlonly +
      +\endhtmlonly +\section miscobjs_annotate Annotating topologies with Misc objects + +The user may annotate hwloc topologies with its own Misc objects. +This can be achieved with hwloc_topology_insert_misc_object() +as well as hwloc-annotate command-line tool. + + + + +\page attributes Object attributes + +\htmlonly +
      +\endhtmlonly +\section attributes_normal Normal attributes + +hwloc objects have many generic attributes in the ::hwloc_obj structure, +for instance their logical_index or os_index +(see \ref faq_indexes), depth or name. + +The kind of object is first described by the obj->type +generic attribute (an integer). +OS devices also have a specific obj->attr->osdev.type integer +for distinguishing between NICs, GPUs, etc. + +Objects may also have an optional obj->subtype pointing +to a better description string (displayed by lstopo either +in place or after the main obj->type attribute): +
        +
      • NUMA nodes: +subtype MCDRAM (on KNL) +or GPUMemory (on POWER architecture with NVIDIA GPU memory shared over NVLink). +
      • +
      • Groups: +subtype Cluster, Module, Tile, Compute Unit, +Book or Drawer for different architecture-specific groups of CPUs +(see also \ref faq_groups). +
      • +
      • OS devices (see also \ref iodevices_osdev): +
          +
        • Co-processor: subtype OpenCL, LevelZero, CUDA, or VectorEngine.
        • +
        • GPU: subtype RSMI (AMD GPU) or NVML (NVIDIA GPU).
        • +
        • OpenFabrics: subtype BXI (Bull/Atos BXI HCA).
        • +
        • Block: subtype Disk, NVDIMM, Tape, or Removable Media Device.
        • +
        +
      • +
      • L3 Caches: +subtype MemorySideCache when hwloc is configured to expose +the KNL MCDRAM in Cache mode as a L3. +
      • +
      • PCI devices: +subtype NVSwitch for NVLink switches +(see also NVLinkBandwidth in \ref topoattrs_distances). +
      • +
      • Misc devices: +subtype MemoryModule +(see also \ref miscobjs_auto) +
      • +
      + +Each object also contains an attr field that, if non NULL, +points to a union ::hwloc_obj_attr_u of type-specific attribute +structures. +For instance, a L2Cache object obj contains cache-specific +information in obj->attr->cache, such as its size and +associativity, cache type. +See ::hwloc_obj_attr_u for details. + + +\htmlonly +
      +\endhtmlonly +\section attributes_info Custom string infos + +Aside os these generic attribute fields, hwloc annotates +many objects with string attributes that are made of a key and a +value. +Each object contains a list of such pairs that may be consulted +manually (looking at the object infos array field) +or using the hwloc_obj_get_info_by_name(). +The user may additionally add new key-value pairs to any object using +hwloc_obj_add_info() or the \ref cli_hwloc_annotate program. + +Here is a non-exhaustive list of attributes that may be automatically +added by hwloc. +Note that these attributes heavily depend on the ability of the +operating system to report them. +Many of them will therefore be missing on some OS. + +\htmlonly +
      +\endhtmlonly +\subsection attributes_info_platform Hardware Platform Information + +These info attributes are attached to the root object (Machine). + +
      +
      PlatformName, PlatformModel, PlatformVendor, PlatformBoardID, PlatformRevision,
      +
      SystemVersionRegister, ProcessorVersionRegister (Machine)
      +
      Some POWER/PowerPC-specific attributes describing the platform +and processor. +Currently only available on Linux. +Usually added to Package objects, but can be in Machine instead if +hwloc failed to discover any package. +
      +
      DMIBoardVendor, DMIBoardName, etc.
      +
      DMI hardware information such as the motherboard and chassis +models and vendors, the BIOS revision, etc., +as reported by Linux under /sys/class/dmi/id/. +
      +
      MemoryMode, ClusterMode
      +
      +Intel Xeon Phi processor configuration modes. +Available if hwloc-dump-hwdata was used (see \ref faq_knl_dump) +or if hwloc managed to guess them from the NUMA configuration. + +The memory mode may be Cache, Flat, +Hybrid50 (half the MCDRAM is used as a cache) +or Hybrid25 (25% of MCDRAM as cache). +The cluster mode may be Quadrant, Hemisphere, All2All, +SNC2 or SNC4. +See doc/examples/get-knl-modes.c in the source directory for an example of retrieving these attributes. +
      +
      + + +\htmlonly +
      +\endhtmlonly +\subsection attributes_info_os Operating System Information + +These info attributes are attached to the root object (Machine). + +
      +
      OSName, OSRelease, OSVersion, HostName, Architecture
      +
      The operating system name, release, version, the hostname and the +architecture name, as reported by the Unix uname command. +
      +
      LinuxCgroup
      +
      The name the Linux control group where the calling process is +placed. +
      +
      WindowsBuildEnvironment
      +
      Either MinGW or Cygwin when one of these environments was used during build. +
      +
      + + +\htmlonly +
      +\endhtmlonly +\subsection attributes_info_hwloc hwloc Information + +Unless specified, these info attributes are attached to the root object (Machine). + +
      +
      Backend (topology root, or specific object added by that backend)
      +
      The name of the hwloc backend/component that filled the topology. +If several components were combined, multiple Backend keys may exist, +with different values, for instance x86 and Linux in the root +object and CUDA in CUDA OS device objects. +
      +
      SyntheticDescription
      +
      The description string that was given to hwloc to build this +synthetic topology. +
      +
      hwlocVersion
      +
      The version number of the hwloc library that was used to generate +the topology. If the topology was loaded from XML, this is not the hwloc +version that loaded it, but rather the first hwloc instance that exported +the topology to XML earlier. +
      +
      ProcessName
      +
      The name of the process that contains the hwloc library that was used +to generate the topology. If the topology was from XML, this is not the +hwloc process that loaded it, but rather the first process that exported +the topology to XML earlier. +
      +
      + + +\htmlonly +
      +\endhtmlonly +\subsection attributes_info_cpu CPU Information + +These info attributes are attached to Package objects, +or to the root object (Machine) if package locality information is missing. + +
      +
      CPUModel
      +
      The processor model name.
      +
      CPUVendor, CPUModelNumber, CPUFamilyNumber, CPUStepping
      +
      The processor vendor name, model number, family number, and stepping number. +Currently available for x86 and Xeon Phi processors on most systems, +and for ia64 processors on Linux (except CPUStepping). +
      +
      CPURevision
      +
      +A POWER/PowerPC-specific general processor revision number, +currently only available on Linux. +
      +
      CPUType
      +
      +A Solaris-specific general processor type name, such as "i86pc". +
      +
      + + +\htmlonly +
      +\endhtmlonly +\subsection attributes_info_osdev OS Device Information + +These info attributes are attached to OS device objects specified in parentheses. + +
      +
      Vendor, Model, Revision, SerialNumber, Size, SectorSize (Block OS devices)
      +
      The vendor and model names, revision, serial number, size (in KiB = 1024 bytes) +and SectorSize (in bytes). +
      +
      LinuxDeviceID (Block OS devices)
      +
      The major/minor device number such as 8:0 of Linux device. +
      +
      GPUVendor, GPUModel (GPU or Co-Processor OS devices)
      +
      The vendor and model names of the GPU device. +
      +
      OpenCLDeviceType, OpenCLPlatformIndex,
      +
      OpenCLPlatformName, OpenCLPlatformDeviceIndex (OpenCL OS devices)
      +
      The type of OpenCL device, + the OpenCL platform index and name, + and the index of the device within the platform. +
      +
      OpenCLComputeUnits, OpenCLGlobalMemorySize (OpenCL OS devices)
      +
      The number of compute units and global memory size of an OpenCL device. + Sizes are in KiB (1024 bytes). +
      +
      LevelZeroVendor, LevelZeroModel, LevelZeroBrand,
      +
      LevelZeroSerialNumber, LevelZeroBoardNumber (LevelZero OS devices)
      +
      + The name of the vendor, device model, brand of a Level Zero device, + and its serial and board numbers. +
      +
      LevelZeroDriverIndex, LevelZeroDriverDeviceIndex (LevelZero OS devices)
      +
      The index of the Level Zero driver within the list of drivers, + and the index of the device within the list of devices managed by this driver. +
      +
      LevelZeroSubdevices (LevelZero OS devices)
      +
      The number of subdevices below this OS device. +
      +
      LevelZeroSubdeviceID (LevelZero OS subdevices)
      +
      The index of this subdevice within its parent. +
      +
      LevelZeroDeviceType (LevelZero OS devices or subdevices)
      +
      A string describing the type of device, for instance "GPU", "CPU", "FPGA", etc. +
      +
      LevelZeroNumSlices, LevelZeroNumSubslicesPerSlice,
      +
      LevelZeroNumEUsPerSubslice, LevelZeroNumThreadsPerEU (LevelZero OS devices or subdevices)
      +
      The number of slices in the device, of subslices per slice, + of execution units (EU) per subslice, and of threads per EU. +
      +
      LevelZeroHBMSize, LevelZeroDDRSize, LevelZeroMemorySize (LevelZero OS devices or subdevices)
      +
      The amount of HBM or DDR memory of a LevelZero device or subdevice. + Sizes are in KiB (1024 bytes). + If the type of memory could not be determined, the generic name LevelZeroMemorySize is used. + For devices that contain subdevices, the amount reported in the root device + includes the memories of all its subdevices. +
      +
      LevelZeroCQGroups, LevelZeroCQGroup2 (LevelZero OS devices or subdevices)
      +
      The number of completion queue groups, and the description of the third group +(as N*0xX where N is the number of queues in the group, + and 0xX is the hexadecimal bitmask of ze_command_queue_group_property_flag_t + listing properties of those queues). +
      +
      AMDUUID, AMDSerial (RSMI GPU OS devices)
      +
      The UUID and serial number of AMD GPUs. +
      +
      RSMIVRAMSize, RSMIVisibleVRAMSize, RSMIGTTSize (RSMI GPU OS devices)
      +
      + The amount of GPU memory (VRAM), + of GPU memory that is visible from the host (Visible VRAM), + and of system memory that is usable by the GPU (Graphics Translation Table). + Sizes are in KiB (1024 bytes). +
      +
      XGMIHiveID (RSMI GPU OS devices)
      +
      The ID of the group of GPUs (Hive) interconnected by XGMI links +
      +
      XGMIPeers (RSMI GPU OS devices)
      +
      The list of RSMI OS devices that are directly connected + to the current device through XGMI links. + They are given as a space-separated list of object names, + for instance rsmi2 rsmi3. +
      +
      NVIDIAUUID, NVIDIASerial (NVML GPU OS devices)
      +
      The UUID and serial number of NVIDIA GPUs. +
      +
      CUDAMultiProcessors, CUDACoresPerMP,
      +
      CUDAGlobalMemorySize, CUDAL2CacheSize, CUDASharedMemorySizePerMP (CUDA OS devices)
      +
      + The number of shared multiprocessors, the number of cores per + multiprocessor, the global memory size, the (global) L2 cache size, + and size of the shared memory in each multiprocessor of a CUDA device. + Sizes are in KiB (1024 bytes). +
      +
      VectorEngineModel, VectorEngineSerialNumber (VectorEngine OS devices)
      +
      + The model and serial number of a VectorEngine device. +
      +
      VectorEngineCores, VectorEngineMemorySize, VectorEngineLLCSize,
      +
      VectorEngineL2Size, VectorEngineL1dSize, VectorEngineL1iSize (VectorEngine OS devices)
      +
      + The number of cores, memory size, and the sizes of the (global) + last level cache and of L2, L1d and L1i caches of a VectorEngine device. + Sizes are in KiB (1024 bytes). +
      +
      VectorEngineNUMAPartitioned (VectorEngine OS devices)
      +
      + If this attribute exists, the VectorEngine device is configured in + partitioned mode with multiple NUMA nodes. +
      +
      Address, Port (Network interface OS devices)
      +
      The MAC address and the port number of a software network +interface, such as eth4 on Linux. +
      +
      NodeGUID, SysImageGUID, Port1State, Port2LID, Port2LMC, Port3GID1 +(OpenFabrics OS devices)
      +
      The node GUID and GUID mask, +the state of a port #1 (value is 4 when active), +the LID and LID mask count of port #2, +and GID #1 of port #3. +
      +
      BXIUUID (OpenFabrics BXI OS devices)
      +
      The UUID of an Atos/Bull BXI HCA. +
      +
      + + +\htmlonly +
      +\endhtmlonly +\subsection attributes_info_otherobjs Other Object-specific Information + +These info attributes are attached to objects specified in parentheses. + +
      +
      DAXDevice (NUMA Nodes)
      +
      The name of the Linux DAX device that was used to expose a non-volatile +memory region as a volatile NUMA node. +
      +
      PCIBusID (GPUMemory NUMA Nodes)
      +
      The PCI bus ID of the GPU whose memory is exposed in this NUMA node. +
      +
      Inclusive (Caches)
      +
      The inclusiveness of a cache (1 if inclusive, 0 otherwise). +Currently only available on x86 processors. +
      +
      SolarisProcessorGroup (Group)
      +
      +The Solaris kstat processor group name that was used to build this Group object. +
      +
      PCIVendor, PCIDevice (PCI devices and bridges)
      +
      The vendor and device names of the PCI device. +
      +
      PCISlot (PCI devices or Bridges)
      +
      The name/number of the physical slot where the device is plugged. + If the physical device contains PCI bridges above the actual PCI device, + the attribute may be attached to the highest bridge + (i.e. the first object that actually appears below the physical slot). +
      +
      Vendor, AssetTag, PartNumber, DeviceLocation, BankLocation (MemoryModule Misc objects)
      +
      +Information about memory modules (DIMMs) extracted from SMBIOS. +
      +
      + + +\htmlonly +
      +\endhtmlonly +\subsection attributes_info_user User-Given Information + +Here is a non-exhaustive list of user-provided info attributes +that have a special meaning: +
      +
      lstopoStyle
      +
      Enforces the style of an object (background and text colors) + in the graphical output of lstopo. + See CUSTOM COLORS in the lstopo(1) manpage for details. +
      +
      + + + + +\page topoattrs Topology Attributes: Distances, Memory Attributes and CPU Kinds + +\htmlonly +
      +\endhtmlonly + +Besides the hierarchy of objects and individual object attributes +(see \ref attributes), hwloc may also expose finer information about +the hardware organization. + + +\htmlonly +
      +\endhtmlonly +\section topoattrs_distances Distances + +A machine with 4 CPUs may have identical links between every pairs of CPUs, +or those CPUs could also only be connected through a ring. +In the ring case, accessing the memory of nearby CPUs is slower than local +memory, but it is also faster than accessing the memory of CPU on the +opposite side of the ring. +These deep details cannot be exposed in the hwloc hierarchy, +that is why hwloc also exposes distances. + +Distances are matrices of values between sets of objects, +usually latencies or bandwidths. +By default, hwloc tries to get a matrix of relative latencies +between NUMA nodes when exposed by the hardware. + +In the aforementioned ring case, the matrix could report 10 +for latency between a NUMA node and itself, 20 for nearby nodes, +and 30 for nodes that are opposites on the ring. +Those are theoretical values exposed by hardware vendors +(in the System Locality Distance Information Table (SLIT) in the ACPI) +rather than physical latencies. +They are mostly meant for comparing node relative distances. + +Distances structures currently created by hwloc are: +
      +
      NUMALatency (Linux, Solaris, FreeBSD)
      +
      This is the matrix of theoretical latencies described above. +
      +
      XGMIBandwidth (RSMI)
      +
      This is the matrix of unidirectional XGMI bandwidths between +AMD GPUs (in MB/s). +It contains 0 when there is no direct XGMI link between objects. +Values on the diagonal are artificially set to very high so +that local access always appears faster than remote access. + +GPUs are identified by RSMI OS devices such as "rsmi0". +They may be converted into the corresponding OpenCL or PCI devices +using hwloc_get_obj_with_same_locality() or the hwloc-annotate tool. + +hwloc_distances_transform() or hwloc-annotate may also be used +to transform this matrix into something more convenient, +for instance by replacing bandwidths with numbers of links between peers. + +
      XGMIHops (RSMI)
      +
      This matrix lists the number of XGMI hops between AMD GPUs. +It reports 1 when there is a direct link between two distinct GPUs. +If there is no XGMI route between them, the value is 0. +The number of hops between a GPU and itself (on the diagonal) is 0 as well. +
      +
      NVLinkBandwidth (NVML)
      +
      This is the matrix of unidirectional NVLink bandwidths between +NVIDIA GPUs (in MB/s). +It contains 0 when there is no direct NVLink between objects. +When there are multiple links, their bandwidth is aggregated. +Values on the diagonal are artificially set to very high so +that local access always appears faster than remote access. + +On POWER platforms, NVLinks may also connects GPUs to CPUs. +On NVIDIA platforms such as DGX-2, a NVSwitch may interconnect GPUs through NVLinks. +In these cases, the distances structure is heterogeneous. +GPUs always appear first in the matrix (as NVML OS devices such as "nvml0"), +and non-GPU objects may appear at the end (Package for POWER processors, +PCI device for NVSwitch). + +NVML OS devices may be converted into the corresponding CUDA, OpenCL or PCI devices +using hwloc_get_obj_with_same_locality() or the hwloc-annotate tool. + +hwloc_distances_transform() or hwloc-annotate may also be used +to transform this matrix into something more convenient, +for instance by removing switches or CPU ports, +or by replacing bandwidths with numbers of links between peers. + +When a NVSwitch interconnects GPUs, only links between one GPU and +different NVSwitch ports are reported. They may be merged into a single +switch port with hwloc_distances_transform() or hwloc-annotate. +Or a transitive closure may also be applied to report the bandwidth +between GPUs across the NVSwitch. +
      + +Users may also specify their own matrices between any set of objects, +even if these objects are of different types (e.g. bandwidths between GPUs and CPUs). + +The entire API is located in hwloc/distances.h. +See also \ref hwlocality_distances_get, +as well as \ref hwlocality_distances_consult +and \ref hwlocality_distances_add. + + +\htmlonly +
      +\endhtmlonly +\section topoattrs_memattrs Memory Attributes + +Machines with heterogeneous memory, for instance high-bandwidth memory (HBM), +normal memory (DDR), and/or high-capacity slow memory (such as non-volatile +memory DIMMs, NVDIMMs) require applications to allocate buffers +in the appropriate target memory depending on performance and capacity needs. +Those target nodes may be exposed in the hwloc hierarchy as different +memory children but there is a need for performance information to select +the appropriate one. + +hwloc memory attributes are designed to expose memory +information such as latency, bandwidth, etc. +Users may also specify their own attributes and values. + +The memory attributes API is located in hwloc/memattrs.h, +see \ref hwlocality_memattrs and \ref hwlocality_memattrs_manage for details. + + +\htmlonly +
      +\endhtmlonly +\section topoattrs_cpukinds CPU Kinds + +Hybrid CPUs may contain different kinds of cores. +The CPU kinds API in hwloc/cpukinds.h provides a way to list the sets +of PUs in each kind and get some optional information about their +hardware characteristics and efficiency. + +If the operating system provides efficiency information +(e.g. Windows 10, MacOS X / Darwin and some Linux kernels), +it is used to rank hwloc CPU kinds by efficiency. +Otherwise, hwloc implements several heuristics based on frequencies +and core types (see HWLOC_CPUKINDS_RANKING in \ref envvar). + +The ranking shows energy-efficient CPUs first, and high-performance +power-hungry cores last. + +These CPU kinds may be annotated with the following native attributes: +
      +
      FrequencyMaxMHz (Linux)
      +
      The maximal operating frequency of the core, +as reported by cpufreq drivers on Linux. +
      +
      FrequencyBaseMHz (Linux)
      +
      The base operating frequency of the core, +as reported by some cpufreq drivers on Linux (e.g. intel_pstate). +
      +
      CoreType (x86)
      +
      A string describing the kind of core, +currently IntelAtom or IntelCore, +as reported by the x86 CPUID instruction on some Intel processors. +
      +
      LinuxCapacity (Linux)
      +
      The Linux-specific CPU capacity found in sysfs, +as reported by the Linux kernel on some recent platforms. +Higher values usually mean that the Linux scheduler considers +the core as high-performance rather than energy-efficient. +
      +
      LinuxCPUType (Linux)
      +
      The Linux-specific CPU type found in sysfs, +such as intel_atom_0, +as reported by future Linux kernels on some Intel processors. +
      +
      DarwinCompatible (Darwin / Mac OS X)
      +
      The compatibility attribute of the CPUs as found +in the IO registry on Darwin / Mac OS X. +For instance apple,icestorm;ARM,v8 for energy-efficient cores +and apple,firestorm;ARM,v8 on performance cores on Apple M1 CPU. +
      +
      + +See \ref hwlocality_cpukinds for details. + + + + +\page xml Importing and exporting topologies from/to XML files + +\htmlonly +
      +\endhtmlonly + +hwloc offers the ability to export topologies to XML files and reload +them later. This is for instance useful for loading topologies faster +(see \ref faq_xml), manipulating other nodes' topology, or avoiding +the need for privileged processes (see \ref faq_privileged). + +Topologies may be exported to XML files thanks to hwloc_topology_export_xml(), +or to a XML memory buffer with hwloc_topology_export_xmlbuffer(). +The lstopo program can also serve as a XML topology export tool. + +XML topologies may then be reloaded later with hwloc_topology_set_xml() +and hwloc_topology_set_xmlbuffer(). +The HWLOC_XMLFILE environment variable also tells hwloc to load the topology +from the given XML file (see \ref envvar). + +\note Loading XML topologies disables binding because the loaded +topology may not correspond to the physical machine that loads it. +This behavior may be reverted by asserting that loaded file really +matches the underlying system with the HWLOC_THISSYSTEM environment +variable or the ::HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM topology flag. + +\note The topology flag ::HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES +may be used to load a XML topology that contains the entire machine +and restrict it to the part that is actually available to the current +process (e.g. when Linux Cgroup/Cpuset are used to restrict the set +of resources). + +\note hwloc also offers the ability to export/import \ref hwlocality_diff. + +\note XML topology files are not localized. They use a dot as a +decimal separator. Therefore any exported topology can be +reloaded on any other machine without requiring to change the +locale. + +\note XML exports contain all details about the platform. It means +that two very similar nodes still have different XML exports +(e.g. some serial numbers or MAC addresses are different). +If a less precise exporting/importing is required, one may want to +look at \ref synthetic instead. + + +\htmlonly +
      +\endhtmlonly +\section xml_backends libxml2 and minimalistic XML backends + +hwloc offers two backends for importing/exporting XML. + +First, it can use the libxml2 library for importing/exporting XML +files. It features full XML support, for instance when those files +have to be manipulated by non-hwloc software (e.g. a XSLT parser). +The libxml2 backend is enabled by default if libxml2 development +headers are available (the relevant development package is usually +libxml2-devel or libxml2-dev). + +If libxml2 is not available at configure time, +or if \--disable-libxml2 is passed, hwloc falls back to a +custom backend. +Contrary to the aforementioned full XML backend with libxml2, this +minimalistic XML backend cannot be guaranteed to work with external +programs. +It should only be assumed to be compatible with the same hwloc +release (even if using the libxml2 backend). +Its advantage is, however, to always be available without requiring +any external dependency. + +If libxml2 is available but the core hwloc library should not directly +depend on it, the libxml2 support may be built as a dynamicall-loaded +plugin. +One should pass \--enable-plugins to enable plugin support +(when supported) and build as plugins all component that support it. +Or pass \--enable-plugins=xml_libxml to only build this +libxml2 support as a plugin. + + +\htmlonly +
      +\endhtmlonly +\section xml_errors XML import error management + +Importing XML files can fail at least because of file access errors, +invalid XML syntax, non-hwloc-valid XML contents, +or incompatibilities between hwloc releases (see \ref faq_version_xml). + +Both backend cannot detect all these errors when the input XML +file or buffer is selected (when hwloc_topology_set_xml() or +hwloc_topology_set_xmlbuffer() is called). +Some errors such non-hwloc-valid contents can only be detected +later when loading the topology with hwloc_topology_load(). + +It is therefore strongly recommended to check the return value of +both hwloc_topology_set_xml() (or hwloc_topology_set_xmlbuffer()) +and hwloc_topology_load() to handle all these errors. + + + + +\page synthetic Synthetic topologies + +\htmlonly +
      +\endhtmlonly + +hwloc may load fake or remote topologies so as to consult them +without having the underlying hardware available. +Aside from loading XML topologies, hwloc also enables the building of +synthetic topologies that are described by a single string +listing the arity of each levels. + +For instance, lstopo may create a topology made of 2 packages, +containing a single NUMA node and a L2 cache above two +single-threaded cores: + +\verbatim +$ lstopo -i "pack:2 node:1 l2:1 core:2 pu:1" - +Machine (2048MB) + Package L#0 + NUMANode L#0 (P#0 1024MB) + L2 L#0 (4096KB) + Core L#0 + PU L#0 (P#0) + Core L#1 + PU L#1 (P#1) + Package L#1 + NUMANode L#1 (P#1 1024MB) + L2 L#1 (4096KB) + Core L#2 + PU L#2 (P#2) + Core L#3 + PU L#3 (P#3) +\endverbatim + +Replacing - with file.xml in this command line +will export this topology to XML as usual. + +\note Synthetic topologies offer a very basic way to export a +topology and reimport it on another machine. It is a lot less +precise than XML but may still be enough when only the hierarchy +of resources matters. + + +\htmlonly +
      +\endhtmlonly +\section synthetic_string Synthetic description string + +Each item in the description string gives the type of the level and +the number of such children under each object of the previous level. +That is why the above topology contains 4 cores (2 cores times 2 nodes). + +These type names must be written as +numanode, package, core, +l2u, l1i, pu, group +(hwloc_obj_type_sscanf() is used for parsing the type names). +They do not need to be written case-sensitively, nor entirely +(as long as there is no ambiguity, 2 characters such as ma + select a Machine level). +Note that I/O and Misc objects are not available. + +Instead of specifying the type of each level, it is possible to +just specify the arities and let hwloc choose all types +according to usual topologies. The following examples are therefore +equivalent: +\verbatim +$ lstopo -i "2 3 4 5 6" +$ lstopo -i "Package:2 NUMANode:3 L2Cache:4 Core:5 PU:6" +\endverbatim + +NUMA nodes are handled in a special way since they are not part of the +main CPU hierarchy but rather attached below it as memory children. +Thus, NUMANode:3 actually means Group:3 where one +NUMA node is attached below each group. +These groups are merged back into the parent when possible +(typically when a single NUMA node is requested below each parent). + +It is also possible the explicitly attach NUMA nodes to specific levels. +For instance, a topology similar to a Intel Xeon Phi processor +(with 2 NUMA nodes per 16-core group) may be created with: +\verbatim +$ lstopo -i "package:1 group:4 [numa] [numa] core:16 pu:4" +\endverbatim + +The root object does not appear in the synthetic description string +since it is always a Machine object. +Therefore the Machine type is disallowed in the description as well. + +A NUMA level (with a single NUMA node) is automatically added if needed. + +Each item may be followed parentheses containing a list of +space-separated attributes. For instance: +
        +
      • + L2iCache:2(size=32kB) specifies 2 children + of 32kB level-2 instruction caches. + The size may be specified in bytes (without any unit suffix) or as TB, GB, MB or kB. +
      • +
      • + NUMANode:3(memory=16MB) specifies 3 NUMA nodes with 16MB each. + The size may be specified in bytes (without any unit suffix) or as TB, GB, MB or kB. +
      • +
      • + PU:2(indexes=0,2,1,3) specifies 2 PU children and the + full list of OS indexes among the entire set of 4 PU objects. +
      • +
      • + PU:2(indexes=numa:core) specifies 2 PU children whose + OS indexes are interleaved by NUMA node first and then by package. +
      • +
      • + Attributes in parentheses at the very beginning of the description + apply to the root object. +
      • +
      + +hwloc command-line tools may modify a synthetic topology, +for instance to customize object attributes, +or to remove some objects to make the topology heterogeneous or asymmetric. +See many examples in \ref faq_create_asymmetric. + + +\htmlonly +
      +\endhtmlonly +\section synthetic_use Loading a synthetic topology + +Aside from lstopo, the hwloc programming interface offers the same +ability by passing the synthetic description string to +hwloc_topology_set_synthetic() before hwloc_topology_load(). + +Synthetic topologies are created by the synthetic component. +This component may be enabled by force by setting the HWLOC_SYNTHETIC +environment variable to something such as +node:2 core:3 pu:4. + +Loading a synthetic topology disables binding support since the +topology usually does not match the underlying hardware. +Binding may be reenabled as usual by setting HWLOC_THISSYSTEM=1 in the +environment or by setting the ::HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM +topology flag. + + +\htmlonly +
      +\endhtmlonly +\section synthetic_export Exporting a topology as a synthetic string + +The function hwloc_topology_export_synthetic() may export +a topology as a synthetic string. +It offers a convenient way to quickly describe the contents of a machine. +The lstopo tool may also perform such an export by forcing the output format. + +\verbatim +$ lstopo --of synthetic --no-io +Package:1 L3Cache:1 L2Cache:2 L1dCache:1 L1iCache:1 Core:1 PU:2 +\endverbatim + +The exported string may be passed back to hwloc for recreating +another similar topology (see also \ref faq_version_synthetic). +The entire tree will be similar, but some attributes such as +the processor model will be missing. + +Such an export is only possible if the topology is totally symmetric. +It means that the symmetric_subtree field of the root object +is set. +Also memory children should be attached in a symmetric way +(e.g. the same number of memory children below each Package object, etc.). +However, I/O devices and Misc objects are ignored when looking at +symmetry and exporting the string. + + + + +\page interoperability Interoperability With Other Software + +\htmlonly +
      +\endhtmlonly + +Although hwloc offers its own portable interface, it still may have to +interoperate with specific or non-portable libraries that manipulate +similar kinds of objects. hwloc therefore offers several specific +"helpers" to assist converting between those specific interfaces and +hwloc. + +Some external libraries may be specific to a particular OS; others may +not always be available. The hwloc core therefore generally does not +explicitly depend on these types of libraries. However, when a custom +application uses or otherwise depends on such a library, it may +optionally include the corresponding hwloc helper to extend the hwloc +interface with dedicated helpers. + +Most of these helpers use structures that are specific to these external +libraries and only meaningful on the local machine. If so, the helper +requires the input topology to match the current machine. +Some helpers also require I/O device discovery to be supported and +enabled for the current topology. + +
      + +
      Linux specific features
      +
      + hwloc/linux.h offers Linux-specific helpers that utilize some + non-portable features of the Linux system, such as binding threads + through their thread ID ("tid") or parsing kernel CPU mask files. + See \ref hwlocality_linux. +
      + +
      Windows specific features
      +
      + hwloc/windows.h offers Windows-specific helpers to query information + about Windows processor groups. + See \ref hwlocality_windows. +
      + +
      Linux libnuma
      +
      + hwloc/linux-libnuma.h provides conversion helpers between hwloc CPU + sets and libnuma-specific types, such as bitmasks. It + helps you use libnuma memory-binding functions with hwloc CPU sets. + See \ref hwlocality_linux_libnuma_bitmask and \ref hwlocality_linux_libnuma_ulongs. +
      + +
      Glibc
      +
      + hwloc/glibc-sched.h offers conversion routines between Glibc and + hwloc CPU sets in order to use hwloc with functions such as + sched_getaffinity() or pthread_attr_setaffinity_np(). + See \ref hwlocality_glibc_sched. +
      + +
      OpenFabrics Verbs
      +
      + hwloc/openfabrics-verbs.h helps interoperability with the + OpenFabrics Verbs interface. For example, it can return a list of + processors near an OpenFabrics device. + It may also return the corresponding OS device hwloc object for further + information (if I/O device discovery is enabled). + See \ref hwlocality_openfabrics. +
      + +
      OpenCL
      +
      + hwloc/opencl.h enables interoperability with the OpenCL interface. + Only the AMD and NVIDIA implementations currently offer locality information. + It may return the list of processors near a GPU given as + a cl_device_id. + It may also return the corresponding OS device hwloc object for further + information (if I/O device discovery is enabled). + See \ref hwlocality_opencl. +
      + +
      oneAPI Level Zero
      +
      + hwloc/levelzero.h enables interoperability with the oneAPI Level Zero interface. + It may return the list of processors near an accelerator or GPU. + It may also return the corresponding OS device hwloc object for further + information (if I/O device discovery is enabled). + See \ref hwlocality_levelzero. +
      + +
      AMD ROCm SMI Library (RSMI)
      +
      + hwloc/rsmi.h enables interoperability with the AMD ROCm SMI interface. + It may return the list of processors near an AMD GPU. + It may also return the corresponding OS device hwloc object for further + information (if I/O device discovery is enabled). + See \ref hwlocality_rsmi. +
      + +
      NVIDIA CUDA
      +
      + hwloc/cuda.h and hwloc/cudart.h enable interoperability with + NVIDIA CUDA Driver and Runtime interfaces. For instance, it may + return the list of processors near NVIDIA GPUs. + It may also return the corresponding OS device hwloc object for further + information (if I/O device discovery is enabled). + See \ref hwlocality_cuda and \ref hwlocality_cudart. +
      + +
      NVIDIA Management Library (NVML)
      +
      + hwloc/nvml.h enables interoperability with the NVIDIA NVML interface. + It may return the list of processors near a NVIDIA GPU given as + a nvmlDevice_t. + It may also return the corresponding OS device hwloc object for further + information (if I/O device discovery is enabled). + See \ref hwlocality_nvml. +
      + +
      NVIDIA displays
      +
      + hwloc/gl.h enables interoperability with NVIDIA displays + using the NV-CONTROL X extension (NVCtrl library). + If I/O device discovery is enabled, it may return the OS device + hwloc object that corresponds to a display + given as a name such as :0.0 + or given as a port/device pair (server/screen). + See \ref hwlocality_gl. +
      + +
      Taskset command-line tool
      +
      + The taskset command-line tool is widely used for binding + processes. It manipulates CPU set strings in a format that + is slightly different from hwloc's one (it does not divide the + string in fixed-size subsets and separates them with commas). + To ease interoperability, hwloc offers routines to convert + hwloc CPU sets from/to taskset-specific string format. + See for instance hwloc_bitmap_taskset_snprintf() in + \ref hwlocality_bitmap(). + + Most hwloc command-line tools also support the \--taskset + option to manipulate taskset-specific strings. +
      + +
      + + + +\page threadsafety Thread Safety + +\htmlonly +
      +\endhtmlonly + +Like most libraries that mainly fill data structures, hwloc is not +thread safe but rather reentrant: all state is held in a +::hwloc_topology_t instance without mutex protection. That means, for +example, that two threads can safely operate on and modify two +different ::hwloc_topology_t instances, but they should not +simultaneously invoke functions that modify the same +instance. Similarly, one thread should not modify a +::hwloc_topology_t instance while another thread is reading or +traversing it. However, two threads can safely read or traverse the +same ::hwloc_topology_t instance concurrently. + +When running in multiprocessor environments, be aware that proper thread +synchronization and/or memory coherency protection is needed to pass hwloc +data (such as ::hwloc_topology_t pointers) from one processor +to another (e.g., a mutex, semaphore, or a memory barrier). +Note that this is not a hwloc-specific requirement, but it is worth +mentioning. + +For reference, ::hwloc_topology_t modification operations include +(but may not be limited to): + +
      + +
      Creation and destruction
      +
      hwloc_topology_init(), hwloc_topology_load(), + hwloc_topology_destroy() (see \ref hwlocality_creation) imply + major modifications of the structure, including freeing some + objects. No other thread cannot access the topology or any of its + objects at the same time. + + Also references to objects inside the topology are not valid anymore + after these functions return.
      + +
      Runtime topology modifications
      +
      hwloc_topology_insert_misc_object(), + hwloc_topology_alloc_group_object(), + and hwloc_topology_insert_group_object() + (see \ref hwlocality_tinker) may modify the topology significantly by adding + objects inside the tree, changing the topology depth, etc. + + hwloc_distances_add_commit() and hwloc_distances_remove() + (see \ref hwlocality_distances_add) modify the list of distance structures + in the topology, and the former may even insert new Group objects. + + hwloc_memattr_register() and hwloc_memattr_set_value() + (see \ref hwlocality_memattrs_manage) modify the memory attributes + of the topology. + + hwloc_topology_restrict() modifies the topology even more + dramatically by removing some objects. + + hwloc_topology_refresh() updates some internal cached structures. + (see below). + + Although references to former objects may still be valid + after insertion or restriction, it is strongly advised to not rely on any such + guarantee and always re-consult the topology to reacquire new + instances of objects.
      + +
      Consulting distances
      +
      + hwloc_distances_get() and its variants are thread-safe + except if the topology was recently modified + (because distances may involve objects that were removed). + + Whenever the topology is modified (see above), hwloc_topology_refresh() + should be called in the same thread-safe context to force the refresh + of internal distances structures. + A call to hwloc_distances_get() may also refresh + distances-related structures. + + Once this refresh has been performed, multiple hwloc_distances_get() + may then be performed concurrently by multiple threads. +
      + +
      Consulting memory attributes
      +
      + Functions consulting memory attributes in hwloc/memattrs.h + are thread-safe except if the topology was recently modified + (because memory attributes may involve objects that were removed). + + Whenever the topology is modified (see above), hwloc_topology_refresh() + should be called in the same thread-safe context to force the refresh + of internal memory attribute structures. + A call to hwloc_memattr_get_value() or + hwloc_memattr_get_targets() may also refresh internal + structures for a given memory attribute. + + Once this refresh has been performed, multiple functions consulting + memory attributes may then be performed concurrently by multiple threads. +
      + +
      Locating topologies
      + +
      hwloc_topology_set_* + (see \ref hwlocality_configuration) do not modify the topology + directly, but they do modify internal structures describing the + behavior of the upcoming invocation of hwloc_topology_load(). + Hence, all of these functions should not be used concurrently. +
      + +
      + + + +\page plugins Components and plugins + +\htmlonly +
      +\endhtmlonly + +hwloc is organized in components that are responsible for discovering +objects. +Depending on the topology configuration, some components will be used, +some will be ignored. +The usual default is to enable the native operating system component, +(e.g. linux or solaris) and the +pci miscellaneous component. +If available, an architecture-specific component (such as x86) +may also improve the topology detection. + +If a XML topology is loaded, the xml discovery component +will be used instead of all other components. +It internally uses a specific class of components for the actual XML +import/export routines (xml_libxml and xml_nolibxml) +but these will not be discussed here (see \ref xml_backends). + + +\htmlonly +
      +\endhtmlonly +\section plugins_default Components enabled by default + +The hwloc core contains a list of components sorted by priority. +Each one is enabled as long as it does not conflict with the +previously enabled ones. +This includes native operating system components, +architecture-specific ones, and if available, I/O components +such as pci. + +Usually the native operating system component +(when it exists, e.g. linux or aix) +is enabled first. +Then hwloc looks for an architecture specific component +(e.g. x86). +Finally there also exist a basic component (no_os) +that just tries to discover the number of PUs in the system. + +Each component discovers as much topology information as possible. +Most of them, including most native OS components, do nothing +unless the topology is still empty. +Some others, such as x86 and pci, +can complete and annotate what other backends found earlier. +Discovery is performed by phases: CPUs are first discovered, +then memory is attached, then PCI, etc. + +Default priorities ensure that clever components are invoked first. +Native operating system components have higher priorities, +and are therefore invoked first, because they likely offer +very detailed topology information. +If needed, it will be later extended by architecture-specific +information (e.g. from the x86 component). + +If any configuration function such as hwloc_topology_set_xml() +is used before loading the topology, the corresponding component +is enabled first. +Then, as usual, hwloc enables any other component (based on +priorities) that does not conflict. + +Certain components that manage a virtual topology, for instance XML +topology import or synthetic topology description, +conflict with all other components. +Therefore, one of them may only be loaded +(e.g. with hwloc_topology_set_xml()) +if no other component is enabled. + +The environment variable HWLOC_COMPONENTS_VERBOSE +may be set to get verbose messages about component registration +(including their priority) and enabling. + + +\htmlonly +
      +\endhtmlonly +\section plugins_select Selecting which components to use + +If no topology configuration functions such as +hwloc_topology_set_synthetic() have been called, +plugins may be selected with environment variables such as +HWLOC_XMLFILE, HWLOC_SYNTHETIC, +HWLOC_FSROOT, or HWLOC_CPUID_PATH (see \ref envvar). + +Finally, the environment variable HWLOC_COMPONENTS +resets the list of selected components. +If the variable is set and empty (or set to a single comma separating nothing, +since some operating systems do not accept empty variables), +the normal plugin priority order is used. + +If the variable is set to x86 in this variable will cause +the x86 component to take precedence over any other component, +including the native operating system component. +It is therefore loaded first, before hwloc tries to load all remaining +non-conflicting components. +In this case, x86 would take care of discovering everything +it supports, instead of only completing what the native OS information. +This may be useful if the native component is buggy on some platforms. + +It is possible to prevent some components from being loaded by prefixing their +name with - in the list. For instance x86,-pci will load the +x86 component, then let hwloc load all the usual components except +pci. +A single component phase may also be blacklisted, for instance with -linux:io. +hwloc_topology_set_components() may also be used inside the program +to prevent the loading of a specific component (or phases) for the target topology. + +It is possible to prevent all remaining components from being loaded +by placing stop in the environment variable. +Only the components listed before this keyword will be enabled. + + +\htmlonly +
      +\endhtmlonly +\section plugins_load Loading components from plugins + +Components may optionally be built as plugins so that the hwloc core +library does not directly depend on their dependencies (for instance +the libpciaccess library). +Plugin support may be enabled with the \--enable-plugins +configure option. +All components buildable as plugins will then be built as plugins. +The configure option may be given a comma-separated list of component +names to specify the exact list of components to build as plugins. + +Plugins are built as independent dynamic libraries that are installed +in $libdir/hwloc. +All plugins found in this directory are loaded during +topology_init() +(unless blacklisted in HWLOC_PLUGINS_BLACKLIST, see \ref envvar). +A specific list of directories (colon-separated) to scan may be +specified in the HWLOC_PLUGINS_PATH environment variable. + +Note that loading a plugin just means that the corresponding component +is registered to the hwloc core. +Components are then only enabled if the topology configuration +requests it, as explained in the previous sections. + +Also note that plugins should carefully be enabled and used when +embedding hwloc in another project, see \ref embed for details. + + +\htmlonly +
      +\endhtmlonly +\section plugins_list Existing components and plugins + +All components distributed within hwloc are listed below. +The list of actually available components may be listed +at running with the HWLOC_COMPONENTS_VERBOSE +environment variable (see \ref envvar). + +
      + +
      linux
      +
      + The official component for discovering CPU, memory and I/O devices on Linux. + It discovers PCI devices without the help of external libraries such as libpciaccess, + but requires the pci component for adding vendor/device names to PCI objects. + It also discovers many kinds of Linux-specific OS devices. +
      +
      aix, darwin, freebsd, hpux, netbsd, solaris, windows
      +
      + Each officially supported operating system has its own native component, + which is statically built when supported, and which is used by default. +
      +
      x86
      +
      + The x86 architecture (either 32 or 64 bits) has its own component + that may complete or replace the previously-found CPU information. + It is statically built when supported. +
      +
      bgq
      +
      + This component is specific to IBM BlueGene/Q compute node (running CNK). + It is built and enabled by default when \--host=powerpc64-bgq-linux + is passed to configure (see \ref faq_bgq). +
      +
      no_os
      +
      + A basic component that just tries to detect the number of processing + units in the system. It mostly serves on operating systems that are + not natively supported. + It is always statically built. +
      +
      pci
      +
      + PCI object discovery uses the external pciaccess library (aka libpciaccess); + see \ref iodevices. It may also annotate existing PCI devices with vendor + and device names. + It may be built as a plugin. +
      +
      opencl
      +
      + The OpenCL component creates co-processor OS device objects such as + opencl0d0 (first device of the first OpenCL platform) + or opencl1d3 (fourth device of the second platform). + Only the AMD and NVIDIA OpenCL implementations currently offer locality + information. + It may be built as a plugin. +
      +
      rsmi
      +
      + This component creates GPU OS device objects such as + rsmi0 for describing AMD GPUs. + It may be built as a plugin. +
      +
      levelzero
      +
      + This component creates co-processor OS device objects such as + ze0 for describing oneAPI Level Zero devices. + It may also create sub-OS-devices such as ze0.0 inside those devices. + It may be built as a plugin. +
      +
      cuda
      +
      + This component creates co-processor OS device objects such as cuda0 + that correspond to NVIDIA GPUs used with CUDA library. + It may be built as a plugin. +
      +
      nvml
      +
      + Probing the NVIDIA Management Library creates OS device objects + such as nvml0 that are useful for batch schedulers. + It also detects the actual PCIe link bandwidth without depending + on power management state and without requiring administrator + privileges. + It may be built as a plugin. +
      +
      gl
      +
      + Probing the NV-CONTROL X extension (NVCtrl library) creates OS + device objects such as :0.0 corresponding to NVIDIA + displays. + They are useful for graphical applications that need to place + computation and/or data near a rendering GPU. + It may be built as a plugin. +
      +
      synthetic
      +
      + Synthetic topology support (see \ref synthetic) is always built statically. +
      +
      xml
      +
      + XML topology import (see \ref xml) is always built statically. + It internally uses one of the XML backends (see \ref xml_backends). +
        +
      • xml_nolibxml is a basic and hwloc-specific XML import/export. + It is always statically built. +
      • +
      • xml_libxml relies on the external libxml2 library for + provinding a feature-complete XML import/export. + It may be built as a plugin. +
      • +
      +
      fake
      +
      + A dummy plugin that does nothing but is used for debugging plugin support. +
      +
      + + + + +\page embed Embedding hwloc in Other Software + +\htmlonly +
      +\endhtmlonly + +It can be desirable to include hwloc in a larger software package (be +sure to check out the LICENSE file) so that users don't have to +separately download and install it before installing your software. +This can be advantageous to ensure that your software uses a +known-tested/good version of hwloc, or for use on systems that do not +have hwloc pre-installed. + +When used in "embedded" mode, hwloc will: + +- not install any header files +- not build any documentation files +- not build or install any executables or tests +- not build libhwloc.* -- instead, it will build + libhwloc_embedded.* + +There are two ways to put hwloc into "embedded" mode. The first is +directly from the configure command line: + +\verbatim +shell$ ./configure --enable-embedded-mode ... +\endverbatim + +The second requires that your software project uses the GNU Autoconf / +Automake / Libtool tool chain to build your software. If you do this, +you can directly integrate hwloc's m4 configure macro into your +configure script. You can then invoke hwloc's configuration tests and +build setup by calling a m4 macro (see below). + +Although hwloc dynamic shared object plugins may be used in embedded +mode, the embedder project will have to manually setup dlopen or libltdl in its +build system so that hwloc can load its plugins at run time. +Also, embedders should be aware of complications that can arise due to +public and private linker namespaces (e.g., if the embedder project is +loaded into a private namespace and then hwloc tries to dynamically +load its plugins, such loading may fail since the hwloc plugins can't +find the hwloc symbols they need). +The embedder project is strongly advised not to use hwloc's +dynamically loading plugins / dlopen / libltdl capability. + + +\htmlonly +
      +\endhtmlonly +\section embedding_m4 Using hwloc's M4 Embedding Capabilities + +Every project is different, and there are many different ways of +integrating hwloc into yours. What follows is one example of +how to do it. + +If your project uses recent versions Autoconf, Automake, and Libtool +to build, you can use hwloc's embedded m4 capabilities. We have +tested the embedded m4 with projects that use Autoconf 2.65, Automake +1.11.1, and Libtool 2.2.6b. Slightly earlier versions of may also +work but are untested. Autoconf versions prior to 2.65 are almost +certain to not work. + +You can either copy all the config/hwloc*m4 files from the hwloc +source tree to the directory where your project's m4 files reside, or +you can tell aclocal to find more m4 files in the embedded hwloc's +"config" subdirectory (e.g., add "-Ipath/to/embedded/hwloc/config" to +your Makefile.am's ACLOCAL_AMFLAGS). + +The following macros can then be used from your configure script (only +HWLOC_SETUP_CORE must be invoked if using the m4 macros): + +- HWLOC_SETUP_CORE(config-dir-prefix, action-upon-success, + action-upon-failure, print_banner_or_not): Invoke the hwloc + configuration tests and setup the hwloc tree to build. The first + argument is the prefix to use for AC_OUTPUT files -- it's where the + hwloc tree is located relative to $top_srcdir. Hence, if + your embedded hwloc is located in the source tree at contrib/hwloc, + you should pass [contrib/hwloc] as the first argument. If + HWLOC_SETUP_CORE and the rest of configure completes + successfully, then "make" traversals of the hwloc tree with standard + Automake targets (all, clean, install, etc.) should behave as + expected. For example, it is safe to list the hwloc directory in + the SUBDIRS of a higher-level Makefile.am. The last argument, if + not empty, will cause the macro to display an announcement banner + that it is starting the hwloc core configuration tests. + + HWLOC_SETUP_CORE will set the following environment variables and + AC_SUBST them: HWLOC_EMBEDDED_CFLAGS, HWLOC_EMBEDDED_CPPFLAGS, and + HWLOC_EMBEDDED_LIBS. These flags are filled with the values + discovered in the hwloc-specific m4 tests, and can be used in your + build process as relevant. The _CFLAGS, _CPPFLAGS, and _LIBS + variables are necessary to build libhwloc (or libhwloc_embedded) + itself. + + HWLOC_SETUP_CORE also sets HWLOC_EMBEDDED_LDADD environment variable + (and AC_SUBSTs it) to contain the location of the + libhwloc_embedded.la convenience Libtool archive. It can be used in + your build process to link an application or other library against + the embedded hwloc library. + + NOTE: If the HWLOC_SET_SYMBOL_PREFIX macro is used, it must + be invoked before HWLOC_SETUP_CORE. + +- HWLOC_BUILD_STANDALONE: HWLOC_SETUP_CORE defaults to building hwloc + in an "embedded" mode (described above). If HWLOC_BUILD_STANDALONE + is invoked *before* HWLOC_SETUP_CORE, the embedded definitions will + not apply (e.g., libhwloc.la will be built, not + libhwloc_embedded.la). + +- HWLOC_SET_SYMBOL_PREFIX(foo_): Tells the hwloc to prefix all of + hwloc's types and public symbols with "foo_"; meaning that function + hwloc_init() becomes foo_hwloc_init(). Enum values are prefixed + with an upper-case translation if the prefix supplied; + HWLOC_OBJ_CORE becomes FOO_hwloc_OBJ_CORE. This is recommended + behavior if you are including hwloc in middleware -- it is possible + that your software will be combined with other software that links + to another copy of hwloc. If both uses of hwloc utilize different + symbol prefixes, there will be no type/symbol clashes, and + everything will compile, link, and run successfully. If you both + embed hwloc without changing the symbol prefix and also link against + an external hwloc, you may get multiple symbol definitions when + linking your final library or application. + +- HWLOC_SETUP_DOCS, HWLOC_SETUP_UTILS, HWLOC_SETUP_TESTS: These three + macros only apply when hwloc is built in "standalone" mode (i.e., + they should NOT be invoked unless HWLOC_BUILD_STANDALONE has already + been invoked). + +- HWLOC_DO_AM_CONDITIONALS: If you embed hwloc in a larger project and + build it conditionally with Automake (e.g., if HWLOC_SETUP_CORE is + invoked conditionally), you must unconditionally invoke + HWLOC_DO_AM_CONDITIONALS to avoid warnings from Automake (for the + cases where hwloc is not selected to be built). This macro is + necessary because hwloc uses some AM_CONDITIONALs to build itself, + and AM_CONDITIONALs cannot be defined conditionally. Note that it + is safe (but unnecessary) to call HWLOC_DO_AM_CONDITIONALS even if + HWLOC_SETUP_CORE is invoked unconditionally. If you are not using + Automake to build hwloc, this macro is unnecessary (and will actually + cause errors because it invoked AM_* macros that will be undefined). + +NOTE: When using the HWLOC_SETUP_CORE m4 macro, it may +be necessary to explicitly invoke AC_CANONICAL_TARGET (which requires +config.sub and config.guess) and/or AC_USE_SYSTEM_EXTENSIONS macros +early in the configure script (e.g., after AC_INIT but before +AM_INIT_AUTOMAKE). See the Autoconf documentation for further +information. + +Also note that hwloc's top-level configure.ac script uses exactly the +macros described above to build hwloc in a standalone mode (by +default). You may want to examine it for one example of how these +macros are used. + + +\htmlonly +
      +\endhtmlonly +\section embedding_example Example Embedding hwloc + +Here's an example of integrating with a larger project named sandbox +that already uses Autoconf, Automake, and Libtool to build itself: + +\verbatim +# First, cd into the sandbox project source tree +shell$ cd sandbox +shell$ cp -r /somewhere/else/hwloc- my-embedded-hwloc +shell$ edit Makefile.am + 1. Add "-Imy-embedded-hwloc/config" to ACLOCAL_AMFLAGS + 2. Add "my-embedded-hwloc" to SUBDIRS + 3. Add "$(HWLOC_EMBEDDED_LDADD)" and "$(HWLOC_EMBEDDED_LIBS)" to + sandbox's executable's LDADD line. The former is the name of the + Libtool convenience library that hwloc will generate. The latter + is any dependent support libraries that may be needed by + $(HWLOC_EMBEDDED_LDADD). + 4. Add "$(HWLOC_EMBEDDED_CFLAGS)" to AM_CFLAGS + 5. Add "$(HWLOC_EMBEDDED_CPPFLAGS)" to AM_CPPFLAGS +shell$ edit configure.ac + 1. Add "HWLOC_SET_SYMBOL_PREFIX(sandbox_hwloc_)" line + 2. Add "HWLOC_SETUP_CORE([my-embedded-hwloc], [happy=yes], [happy=no])" line + 3. Add error checking for happy=no case +shell$ edit sandbox.c + 1. Add #include + 2. Add calls to sandbox_hwloc_init() and other hwloc API functions +\endverbatim + +Now you can bootstrap, configure, build, and run the sandbox as normal +-- all calls to "sandbox_hwloc_*" will use the embedded hwloc rather +than any system-provided copy of hwloc. + + + + + + +\page faq Frequently Asked Questions (FAQ) + + +\htmlonly +
      +\endhtmlonly +\section faq1 Concepts + + +\subsection faq_why I only need binding, why should I use hwloc ? + +hwloc is its portable API that works on a variety of operating +systems. +It supports binding of threads, processes and memory buffers +(see \ref hwlocality_cpubinding and \ref hwlocality_membinding). +Even if some features are not supported on some systems, +using hwloc is much easier than reimplementing your own portability layer. + +Moreover, hwloc provides knowledge of cores and hardware threads. +It offers easy ways to bind tasks to individual hardware threads, +or to entire multithreaded cores, etc. +See \ref faq_smt. +Most alternative software for binding do not even know whether each +core is single-threaded, multithreaded or hyper-threaded. +They would bind to individual threads without any way to know whether +multiple tasks are in the same physical core. + +However, using hwloc comes with an overhead since a topology must +be loaded before gathering information and binding tasks or memory. +Fortunately this overhead may be significantly reduced by filtering +non-interesting information out of the topology. +For instance the following code builds a topology that only contains +Cores (explicitly filtered-in below), +hardware threads (PUs, cannot be filtered-out), +NUMA nodes (cannot be filtered-out), +and the root object (usually a Machine; the root cannot be removed without breaking the tree). + +\verbatim +hwloc_topology_t topology; +hwloc_topology_init(&topology); +/* filter everything out */ +hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_NONE); +/* filter Cores back in */ +hwloc_topology_set_type_filter(topology, HWLOC_OBJ_CORE, HWLOC_TYPE_FILTER_KEEP_ALL); +hwloc_topology_load(topology); +\endverbatim + +However, one should remember that filtering such objects out removes +locality information from the hwloc tree. +For instance, we do not know anymore which PU is close to which NUMA +node. +This would be useful to applications that explicitly want to +place specific memory buffers close to specific tasks. +Those applications just need to tell hwloc to keep Group objects that +bring structure information: +\verbatim +hwloc_topology_set_type_filter(topology, HWLOC_OBJ_GROUP, HWLOC_TYPE_FILTER_KEEP_STRUCTURE); +\endverbatim + +Note that the default configuration is to keep all objects enabled, +except I/Os and instruction caches. + + +\subsection faq_indexes Should I use logical or physical/OS indexes? and how? + +One of the original reasons why hwloc was created is that physical/OS indexes +(obj->os_index) are often crazy and unpredictable: +processors numbers are usually +non-contiguous (processors 0 and 1 are not physically close), they vary from +one machine to another, and may even change after a BIOS or system update. +This numbers make task placement hardly portable. +Moreover some objects have no physical/OS numbers (caches), and some objects +have non-unique numbers (core numbers are only unique within a socket). +Physical/OS indexes are only guaranteed to exist and be unique for PU +and NUMA nodes. + +hwloc therefore introduces logical indexes (obj->logical_index) +which are portable, contiguous and logically ordered +(based on the resource organization in the locality tree). +In general, one should only use logical indexes and just let hwloc do the +internal conversion when really needed (when talking to the OS and hardware). + +hwloc developers recommends that users do not use physical/OS indexes +unless they really know what they are doing. +The main reason for still using physical/OS indexes is when interacting with +non-hwloc tools such as numactl or taskset, or when reading hardware information +from raw sources such as /proc/cpuinfo. + +lstopo options -l and -p may be used to switch between +logical indexes (prefixed with L#) and physical/OS indexes (P#). +Converting one into the other may also be achieved with hwloc-calc which may +manipulate either logical or physical indexes as input or output. +See also \ref cli_hwloc_calc. + +\verbatim +# Convert PU with physical number 3 into logical number +$ hwloc-calc -I pu --physical-input --logical-output pu:3 +5 + +# Convert a set of NUMA nodes from logical to physical +# (beware that the output order may not match the input order) +$ hwloc-calc -I numa --logical-input --physical-output numa:2-3 numa:7 +0,2,5 +\endverbatim + + +\subsection faq_structural hwloc is only a structural model, it ignores performance models, memory bandwidth, etc.? + +hwloc is indeed designed to provide applications with a structural model +of the platform. This is an orthogonal approach to describing the +machine with performance models, for instance using memory bandwidth +or latencies measured by benchmarks. +We believe that both approaches are important for helping application +make the most of the hardware. + +For instance, on a dual-processor host with four cores each, hwloc +clearly shows which four cores are together. +Latencies between all pairs of cores of the same processor are likely +identical, and also likely lower than the latency between cores of +different processors. +However, the structural model cannot guarantee such implementation +details. +On the other side, performance models would reveal such details +without always clearly identifying which cores are in the same +processor. + +The focus of hwloc is mainly of the structural modeling side. +However, hwloc lets user adds performance information to the topology +through distances +(see \ref topoattrs_distances), +memory attributes +(see \ref topoattrs_memattrs) +or even custom annotations (see \ref faq_annotate). +hwloc may also use such distance information for grouping objects +together (see \ref faq_onedim and \ref faq_groups). + + +\subsection faq_onedim hwloc only has a one-dimensional view of the architecture, it ignores distances? + +hwloc places all objects in a tree. Each level is a one-dimensional +view of a set of similar objects. All children of the same object (siblings) +are assumed to be equally interconnected (same distance between any of them), +while the distance between children of different objects (cousins) is supposed +to be larger. + +Modern machines exhibit complex hardware interconnects, so this tree +may miss some information about the actual physical distances between objects. +The hwloc topology may therefore be annotated with distance information that +may be used to build a more realistic representation (multi-dimensional) +of each level. +For instance, there can be a distance matrix that representing the latencies +between any pair of NUMA nodes if the BIOS and/or operating system reports them. + +For more information about the hwloc distances, see \ref topoattrs_distances. + + +\subsection faq_groups What are these Group objects in my topology? + +hwloc comes with a set of predefined object types (Core, Package, NUMA node, Caches) +that match the vast majority of hardware platforms. +The ::HWLOC_OBJ_GROUP type was designed for cases where this set is not sufficient. +Groups may be used anywhere to add more structure information to the topology, +for instance to show that 2 out of 4 NUMA nodes are actually closer than the others. +When applicable, the subtype field describes why a Group +was actually added (see also \ref attributes_normal). + +hwloc currently uses Groups for the following reasons: +
        +
      • NUMA parents when memory locality does not match any existing object.
      • +
      • I/O parents when I/O locality does not match any existing object.
      • +
      • Distance-based groups made of close objects.
      • +
      • AMD Bulldozer dual-core compute units (subtype is ComputeUnit, in the x86 backend), + but these objects are usually merged with the L2 caches.
      • +
      • Intel Extended Topology Enumeration levels (in the x86 backend).
      • +
      • Windows processor groups when HWLOC_WINDOWS_PROCESSOR_GROUP_OBJS=1 is set in the environment + (except if they contain exactly a single NUMA node, or a single Package, etc.).
      • +
      • IBM S/390 "Books" on Linux (subtype is Book).
      • +
      • Linux Clusters of CPUs (subtype is Cluster), + for instance for ARM cores sharing of some internal cache or bus, + or x86 cores sharing a L2 cache (since Linux kernel 5.16). + HWLOC_DONT_MERGE_CLUSTER_GROUPS=1 may be set in the environment + to disable the automerging of these groups with identical caches, etc. +
      • +
      • AIX unknown hierarchy levels.
      • +
      + +hwloc Groups are only kept if no other object has the same +locality information. +It means that a Group containing a single child is merged +into that child. +And a Group is merged into its parent if it is its only child. +For instance a Windows processor group containing a single NUMA node +would be merged with that NUMA node since it already contains the +relevant hierarchy information. + +When inserting a custom Group with hwloc_hwloc_topology_insert_group_object(), +this merging may be disabled by setting its dont_merge attribute. + + +\subsection faq_asymmetric What happens if my topology is asymmetric? + +hwloc supports asymmetric topologies even if most platforms are usually +symmetric. For example, there could be different types of processors +in a single machine, each with different numbers of cores, symmetric +multithreading, or levels of caches. + +In practice, asymmetric topologies are rare but occur for at least two reasons: +
        +
      • Intermediate groups may added for I/O affinity: +on a 4-package machine, an I/O bus may be +connected to 2 packages. These packages are below an additional Group +object, while the other packages are not (see also \ref faq_groups). +
      • +If only part of a node is available to the current process, +for instance because the resource manager uses Linux Cgroups to restrict +process resources, some cores (or NUMA nodes) will disappear from +the topology (unless flag ::HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED was passed). +On a 32-core machine where 12 cores were allocated to the process, +this may lead to one CPU package with 8 cores, another one with only 4 cores, +and two missing packages. +
      • +
      + +To understand how hwloc manages such cases, one should first remember +the meaning of levels and cousin objects. All objects of the same type +are gathered as horizontal levels with a given depth. They are also +connected through the cousin pointers of the ::hwloc_obj structure. +Object attribute (cache depth and type, group depth) are also taken +in account when gathering objects as horizontal levels. +To be clear: there will be one level for L1i +caches, another level for L1d caches, another one for L2, etc. + +If the topology is asymmetric (e.g., if a group is missing above some +processors), a given horizontal level will still exist if there +exist any objects of that type. However, some branches of the overall +tree may not have an object located in that horizontal level. Note +that this specific hole within one horizontal level does not imply +anything for other levels. All objects of the same type are gathered +in horizontal levels even if their parents or children have different +depths and types. + +See the diagram in \ref termsanddefs for a graphical representation +of such topologies. + +Moreover, it is important to understand that a same parent object may +have children of different types (and therefore, different +depths). These children are therefore siblings (because they +have the same parent), but they are not cousins (because they +do not belong to the same horizontal level). + + +\subsection faq_nosmt What happens to my topology if I disable symmetric multithreading, hyper-threading, etc. in the system? + +hwloc creates one PU (processing unit) object per hardware thread. +If your machine supports symmetric multithreading, for instance Hyper-Threading, +each Core object may contain multiple PU objects: +\verbatim +$ lstopo - +... + Core L#0 + PU L#0 (P#0) + PU L#1 (P#2) + Core L#1 + PU L#2 (P#1) + PU L#3 (P#3) +\endverbatim + +x86 machines usually offer the ability to disable hyper-threading in the BIOS. +Or it can be disabled on the Linux kernel command-line at boot time, +or later by writing in sysfs virtual files. + +If you do so, the hwloc topology structure does not significantly change, +but some PU objects will not appear anymore. +No level will disappear, you will see the same number of Core objects, +but each of them will contain a single PU now. +The PU level does not disappear either +(remember that hwloc topologies always contain a PU level at the bottom of the topology) +even if there is a single PU object per Core parent. +\verbatim +$ lstopo - +... + Core L#0 + PU L#0 (P#0) + Core L#1 + PU L#1 (P#1) +\endverbatim + + +\subsection faq_smt How may I ignore symmetric multithreading, hyper-threading, etc. in hwloc? + +First, see \ref faq_nosmt for more information about multithreading. + +If you need to ignore symmetric multithreading in software, +you should likely manipulate hwloc Core objects directly: +\verbatim +/* get the number of cores */ +unsigned nbcores = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_CORE); +... +/* get the third core below the first package */ +hwloc_obj_t package, core; +package = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 0); +core = hwloc_get_obj_inside_cpuset_by_type(topology, package->cpuset, + HWLOC_OBJ_CORE, 2); +\endverbatim + +Whenever you want to bind a process or thread to a core, make sure you +singlify its cpuset first, so that the task is actually bound to a single +thread within this core (to avoid useless migrations). +\verbatim +/* bind on the second core */ +hwloc_obj_t core = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, 1); +hwloc_cpuset_t set = hwloc_bitmap_dup(core->cpuset); +hwloc_bitmap_singlify(set); +hwloc_set_cpubind(topology, set, 0); +hwloc_bitmap_free(set); +\endverbatim + +With hwloc-calc or hwloc-bind command-line tools, you may specify that +you only want a single-thread within each core by asking for their first +PU object: +\verbatim +$ hwloc-calc core:4-7 +0x0000ff00 +$ hwloc-calc core:4-7.pu:0 +0x00005500 +\endverbatim + +When binding a process on the command-line, you may either specify +the exact thread that you want to use, or ask hwloc-bind to singlify +the cpuset before binding +\verbatim +$ hwloc-bind core:3.pu:0 -- echo "hello from first thread on core #3" +hello from first thread on core #3 +... +$ hwloc-bind core:3 --single -- echo "hello from a single thread on core #3" +hello from a single thread on core #3 +\endverbatim + + + +\htmlonly +
      +\endhtmlonly +\section faq2 Advanced + + + +\subsection faq_xml I do not want hwloc to rediscover my enormous machine topology every time I rerun a process + +Although the topology discovery is not expensive on common machines, +its overhead may become significant when multiple processes repeat +the discovery on large machines (for instance when starting one process +per core in a parallel application). +The machine topology usually does not vary much, except if some cores +are stopped/restarted or if the administrator restrictions are modified. +Thus rediscovering the whole topology again and again may look useless. + +For this purpose, hwloc offers XML import/export and shared memory features. + +XML lets you +save the discovered topology to a file (for instance with the lstopo program) +and reload it later by setting the HWLOC_XMLFILE environment variable. +The HWLOC_THISSYSTEM environment variable should also be set to 1 to +assert that loaded file is really the underlying system. + +Loading a XML topology is usually much faster than querying multiple +files or calling multiple functions of the operating system. +It is also possible to manipulate such XML files with the C programming +interface, and the import/export may also be directed to memory buffer +(that may for instance be transmitted between applications through a package). +See also \ref xml. + +\note The environment variable HWLOC_THISSYSTEM_ALLOWED_RESOURCES +may be used to load a XML topology that contains the entire machine +and restrict it to the part that is actually available to the current +process (e.g. when Linux Cgroup/Cpuset are used to restrict the set +of resources). See \ref envvar. + +Shared-memory topologies consist in one process exposing its topology +in a shared-memory buffer so that other processes (running on the same machine) +may use it directly. +This has the advantage of reducing the memory footprint since a single +topology is stored in physical memory for multiple processes. +However, it requires all processes to map this shared-memory buffer +at the same virtual address, which may be difficult in some cases. +This API is described in \ref hwlocality_shmem. + + +\subsection faq_multitopo How many topologies may I use in my program? + +hwloc lets you manipulate multiple topologies at the same time. +However, these topologies consume memory and system resources +(for instance file descriptors) until they are destroyed. +It is therefore discouraged to open the same topology multiple +times. + +Sharing a single topology between threads is easy (see \ref threadsafety) +since the vast majority of accesses are read-only. + +If multiple topologies of different (but similar) nodes are needed +in your program, have a look at \ref faq_diff. + + +\subsection faq_diff How to avoid memory waste when manipulating multiple similar topologies? + +hwloc does not share information between topologies. +If multiple similar topologies are loaded in memory, for instance +the topologies of different identical nodes of a cluster, +lots of information will be duplicated. + +hwloc/diff.h (see also \ref hwlocality_diff) offers the ability to +compute topology differences, apply or unapply them, or export/import +to/from XML. +However, this feature is limited to basic differences such as attribute changes. +It does not support complex modifications such as adding or removing some objects. + + +\subsection faq_annotate How do I annotate the topology with private notes? + +Each hwloc object contains a userdata field that may be used by +applications to store private pointers. This field is only valid +during the lifetime of these container object and topology. +It becomes invalid as soon the topology is destroyed, +or as soon as the object disappears, for instance when restricting +the topology. +The userdata field is not exported/imported to/from XML by default since +hwloc does not know what it contains. +This behavior may be changed by specifying application-specific callbacks +with hwloc_topology_set_userdata_export_callback() +and hwloc_topology_set_userdata_import_callback(). + +Each object may also contain some info attributes +(key name and value) that are setup by hwloc during discovery +and that may be extended by the user with +hwloc_obj_add_info() (see also \ref attributes). +Contrary to the userdata field which is unique, multiple info +attributes may exist for each object, even with the same name. +These attributes are always exported to XML. +However, only character strings may be used as key names and values. + +It is also possible to insert Misc objects with a custom name +anywhere as a leaf of the topology (see \ref miscobjs). +And Misc objects may have their own userdata and info attributes +just like any other object. + +The hwloc-annotate command-line tool may be used for adding +Misc objects and info attributes. + +There is also a topology-specific userdata pointer that can be used +to recognize different topologies by storing a custom pointer. +It may be manipulated with hwloc_topology_set_userdata() +and hwloc_topology_get_userdata(). + + +\subsection faq_create_asymmetric How do I create a custom heterogeneous and asymmetric topology? + +Synthetic topologies (see \ref synthetic) allow to create custom topologies +but they are always symmetric: same numbers of cores in each package, +same local NUMA nodes, same shared cache, etc. +To create an asymmetric topology, for instance to simulate hybrid CPUs, +one may want to start from a larger symmetric topology and restrict it. +
      + +Assuming we want two packages, one with 4 dual-threaded cores, and one with 8 single-threaded cores, +first we create a topology with two identical packages, each with 8 dual-threaded cores: +\verbatim +$ lstopo -i "pack:2 core:8 pu:2" topo.xml +\endverbatim +Then create the bitmask representing the PUs that we wish to keep and pass it to lstopo's restrict option: +\verbatim +$ hwloc-calc -i topo.xml pack:0.core:0-3.pu:0-1 pack:1.core:0-7.pu:0 +0x555500ff +$ lstopo -i topo.xml --restrict 0x555500ff topo2.xml +$ mv -f topo2.xml topo.xml +\endverbatim +To mark the cores of first package as Big (power hungry) +and those of second package as Little (energy efficient), define CPU kinds: +\verbatim +$ hwloc-annotate topo.xml topo.xml -- none -- cpukind $(hwloc-calc -i topo.xml pack:0) 1 0 CoreType Big +$ hwloc-annotate topo.xml topo.xml -- none -- cpukind $(hwloc-calc -i topo.xml pack:1) 0 0 CoreType Little +\endverbatim +
      + +A similar method may be used for heterogeneous memory. +First we specify 2 NUMA nodes per package in our synthetic description: +\verbatim +$ lstopo -i "pack:2 [numa(memory=100GB)] [numa(memory=10GB)] core:8 pu:2" topo.xml +\endverbatim +Then remove the second node of first package: +\verbatim +$ hwloc-calc -i topo.xml --nodeset node:all ~pack:0.node:1 +0x0000000e +$ lstopo -i topo.xml --restrict nodeset=0xe topo2.xml +$ mv -f topo2.xml topo.xml +\endverbatim +Then make one large node even bigger: +\verbatim +$ hwloc-annotate topo.xml topo.xml -- pack:0.numa:0 -- size 200GB +\endverbatim +Now we have 200GB in first package, and 100GB+10GB in second package. +
      + +Next we may specify that the small NUMA node (second of second package) is HBM while the large ones are DRAM: +\verbatim +$ hwloc-annotate topo.xml topo.xml -- pack:0.numa:0 pack:1.numa:0 -- subtype DRAM +$ hwloc-annotate topo.xml topo.xml -- pack:1.numa:1 -- subtype HBM +\endverbatim +Finally we may define memory performance attributes to specify that the HBM bandwidth (200GB/s) +from local cores is higher than the DRAM bandwidth (50GB/s): +\verbatim +$ hwloc-annotate topo.xml topo.xml -- pack:0.numa:0 -- memattr Bandwidth pack:0 50000 +$ hwloc-annotate topo.xml topo.xml -- pack:1.numa:0 -- memattr Bandwidth pack:1 50000 +$ hwloc-annotate topo.xml topo.xml -- pack:1.numa:1 -- memattr Bandwidth pack:1 200000 +\endverbatim +
      + +There is currently no way to create or modify I/O devices attached to such fake topologies. +There is also no way to have some partial levels, e.g. a L3 cache in one package +but not in the other. +
      + +More changes may obviously be performed by manually modifying the XML export file. +Simple operations such as modifying object attributes (cache size, memory size +info keypairs, etc.), moving I/O subtrees, moving Misc objects, or removing +objects are easy to perform. + +However, modifying CPU and Memory objects requires care since cpusets and nodesets +are supposed to remain consistent between parents and children. +Similarly, PCI bus IDs should remain consistent between bridges and children within +an I/O subtree. + + + +\htmlonly +
      +\endhtmlonly +\section faq3 Caveats + + + +\subsection faq_slow_lstopo Why is hwloc slow? + +Building a hwloc topology on a large machine may be slow because +the discovery of hundreds of hardware cores or threads takes time +(especially when reading thousands of sysfs files on Linux). +Ignoring some objects (for instance caches) that aren't useful +to the current application may improve this overhead (see \ref faq_why). +One should also consider using XML (see \ref faq_xml) to work +around such issues. + +Additionally, lstopo enables most hwloc objects and discovery flags +by default so that the output topology is as precise as possible +(while hwloc disables many of them by default). +This includes I/O device discovery through PCI libraries as well as external +libraries such as NVML. +To speed up lstopo, you may disable such features with command-line +options such as \--no-io. + +When NVIDIA GPU probing is enabled with CUDA or NVML, one should make sure that +the Persistent mode is enabled (with nvidia-smi -pm 1) +to avoid significant GPU initialization overhead. + +When AMD GPU discovery is enabled with OpenCL and hwloc is used remotely +over ssh, some spurious round-trips on the network may significantly +increase the discovery time. +Forcing the DISPLAY environment variable to the remote X server +display (usually :0) instead of only setting the COMPUTE +variable may avoid this. + +Also remember that these components may be disabled at build-time with +configure flags such as \--disable-opencl, \--disable-cuda or \--disable-nvml, +and at runtime with the environment variable +HWLOC_COMPONENTS=-opencl,-cuda,-nvml +or with hwloc_topology_set_components(). + + +\subsection faq_privileged Does hwloc require privileged access? + +hwloc discovers the topology by querying the operating system. +Some minor features may require privileged access to the operation +system. +For instance memory module discovery on Linux is reserved to root, +and the entire PCI discovery on Solaris and BSDs requires access to +some special files that are usually restricted to root +(/dev/pci* or /devices/pci*). + +To workaround this limitation, it is recommended to export the +topology as a XML file generated by the administrator (with the +lstopo program) and make it available to all users +(see \ref xml). +It will offer all discovery information to any application without +requiring any privileged access anymore. +Only the necessary hardware characteristics will be exported, no +sensitive information will be disclosed through this XML export. + +This XML-based model also has the advantage of speeding up the +discovery because reading a XML topology is usually much faster +than querying the operating system again. + +The utility hwloc-dump-hwdata is also involved in gathering +privileged information at boot time and making it available to +non-privileged users (note that this may require a specific SELinux +MLS policy module). However, it only applies to Intel Xeon Phi processors +for now (see \ref faq_knl_dump). +See also HWLOC_DUMPED_HWDATA_DIR in \ref envvar for details +about the location of dumped files. + + +\subsection faq_os_error What should I do when hwloc reports "operating system" warnings? + +When the operating system reports invalid locality information (because +of either software or hardware bugs), hwloc may fail to insert some objects +in the topology because they cannot fit in the already built tree of resources. +If so, hwloc will report a warning like the following. +The object causing this error is ignored, the discovery continues but the +resulting topology will miss some objects and may be asymmetric +(see also \ref faq_asymmetric). + +\verbatim +**************************************************************************** +* hwloc received invalid information from the operating system. +* +* L3 (cpuset 0x000003f0) intersects with NUMANode (P#0 cpuset 0x0000003f) without inclusion! +* Error occurred in topology.c line 940 +* +* Please report this error message to the hwloc user's mailing list, +* along with the files generated by the hwloc-gather-topology script. +* +* hwloc will now ignore this invalid topology information and continue. +**************************************************************************** +\endverbatim + +These errors are common on large AMD platforms because of BIOS and/or Linux +kernel bugs causing invalid L3 cache information. +In the above example, the hardware reports +a L3 cache that is shared by 2 cores in the first NUMA node and 4 cores +in the second NUMA node. That's wrong, it should actually be shared by all 6 +cores in a single NUMA node. +The resulting topology will miss some L3 caches. + +If your application does not care about cache sharing, or if you do not plan to +request cache-aware binding in your process launcher, you may likely ignore +this error (and hide it by setting HWLOC_HIDE_ERRORS=1 in your environment). + +Some platforms report similar warnings about conflicting Packages and NUMANodes. + +On x86 hosts, passing HWLOC_COMPONENTS=x86 in the environment may +workaround some of these issues by switching to a different way to discover the topology. + +Upgrading the BIOS and/or the operating system may help. +Otherwise, as explained in the message, reporting this issue to the hwloc developers +(by sending the tarball that is generated by the hwloc-gather-topology script + on this platform) is a good way to make sure that this is a software +(operating system) or hardware bug (BIOS, etc). + +See also \ref bugs. Opening an issue on GitHub automatically displays hints +on what information you should provide when reporting such bugs. + + +\subsection faq_valgrind Why does Valgrind complain about hwloc memory leaks? + +If you are debugging your application with Valgrind, you want to +avoid memory leak reports that are caused by hwloc and not by your +program. + +hwloc itself is often checked with Valgrind to make sure it does +not leak memory. +However, some global variables in hwloc dependencies are never freed. +For instance libz allocates its global state once at startup and +never frees it so that it may be reused later. +Some libxml2 global state is also never freed because hwloc does not +know whether it can safely ask libxml2 to free it (the application may +also be using libxml2 outside of hwloc). + +These unfreed variables cause leak reports in Valgrind. +hwloc installs a Valgrind suppressions file to hide them. +You should pass the following command-line option to Valgrind to use it: +\verbatim + --suppressions=/path/to/hwloc-valgrind.supp +\endverbatim + + + + +\htmlonly +
      +\endhtmlonly +\section faq4 Platform-specific + + +\subsection faq_rocm_build How do I enable ROCm SMI and select which version to use? + +hwloc enables ROCm SMI as soon as it finds its development headers and libraries +on the system. +This detection consists in looking in /opt/rocm by default. +If a ROCm version was specified with \--with-rocm-version=4.4.0 +or in the ROCM_VERSION environment variable, +then /opt/rocm-<version> is used instead. +Finally, a specific installation path may be specified with \--with-rocm=/path/to/rocm. + +As usual, developer header and library paths may also be set through +environment variables such as LIBRARY_PATH and C_INCLUDE_PATH. + +To find out whether ROCm SMI was detected and enabled, look in Probe / display I/O devices +at the end of the configure script output. +Passing \--enable-rsmi will also cause configure to fail +if RSMI could not be found and enabled in hwloc. + + + +\subsection faq_cuda_build How do I enable CUDA and select which CUDA version to use? + +hwloc enables CUDA as soon as it finds CUDA development headers and libraries +on the system. +This detection may be performed thanks to pkg-config but it requires +hwloc to know which CUDA version to look for. This may be done by passing +\--with-cuda-version=11.0 to the configure script. Otherwise hwloc +will also look for the CUDA_VERSION environment variable. + +If pkg-config does not work, passing \--with-cuda=/path/to/cuda +to the configure script is another way to define the corresponding library +and header paths. +Finally, these paths may also be set through environment variables such +as LIBRARY_PATH and C_INCLUDE_PATH. + +These paths, either detected by pkg-config or given manually, will +also be used to detect NVML and OpenCL libraries and enable their hwloc backends. + +To find out whether CUDA was detected and enabled, look in Probe / display I/O devices +at the end of the configure script output. +Passing \--enable-cuda will also cause configure to fail +if CUDA could not be found and enabled in hwloc. + +Note that \--with-cuda=/nonexisting may be used to disable all dependencies +that are installed by CUDA, i.e. the CUDA, NVML and NVIDIA OpenCL backends, +since the given directory does not exist. + + + +\subsection faq_knl_numa How do I find the local MCDRAM NUMA node on Intel Xeon Phi processor? + +Intel Xeon Phi processors introduced a new memory architecture by +possibly having two distinct local memories: +some normal memory (DDR) and some high-bandwidth on-package memory (MCDRAM). +Processors can be configured in various clustering modes to have up to 4 Clusters. +Moreover, each Cluster (quarter, half or whole processor) of the processor may have its own local +parts of the DDR and of the MCDRAM. +This memory and clustering configuration may be probed by looking at MemoryMode +and ClusterMode attributes, see \ref attributes_info_platform and doc/examples/get-knl-modes.c +in the source directory. + +Starting with version 2.0, hwloc properly exposes this memory +configuration. +DDR and MCDRAM are attached as two memory children of the same parent, +DDR first, and MCDRAM second if any. +Depending on the processor configuration, that parent may be a Package, +a Cache, or a Group object of type Cluster. + +Hence cores may have one or two local NUMA nodes, listed by the core nodeset. +An application may allocate local memory from a core by using that nodeset. +The operating system will actually allocate from the DDR when +possible, or fallback to the MCDRAM. + +To allocate specifically on one of these memories, +one should walk up the parent pointers until finding an object with +some memory children. +Looking at these memory children will give the DDR first, +then the MCDRAM if any. +Their nodeset may then be used for allocating or binding memory buffers. + +One may also traverse the list of NUMA nodes until finding some whose +cpuset matches the target core or PUs. +The MCDRAM NUMA nodes may be identified thanks to the subtype field +which is set to MCDRAM. + +Command-line tools such as hwloc-bind may bind memory on the MCDRAM by +using the hbm keyword. For instance, to bind on the first MCDRAM NUMA node: + +\verbatim +$ hwloc-bind --membind --hbm numa:0 -- myprogram +$ hwloc-bind --membind numa:0 -- myprogram +\endverbatim + + +\subsection faq_knl_dump Why do I need hwloc-dump-hwdata for memory on Intel Xeon Phi processor? + +Intel Xeon Phi processors may use the on-package memory (MCDRAM) +as either memory or a memory-side cache +(reported as a L3 cache by hwloc by default, +see HWLOC_KNL_MSCACHE_L3 in \ref envvar). +There are also several clustering modes that significantly affect the memory organization +(see \ref faq_knl_numa for more information about these modes). +Details about these are currently only available to privileged users. +Without them, hwloc relies on a heuristic for guessing the modes. + +The hwloc-dump-hwdata utility may be used to dump this privileged binary information +into human-readable and world-accessible files that the hwloc library will later load. +The utility should usually run as root once during boot, in order to update dumped +information (stored under /var/run/hwloc by default) in case the MCDRAM or clustering configuration +changed between reboots. + +When SELinux MLS policy is enabled, a specific hwloc policy module may be required +so that all users get access to the dumped files (in /var/run/hwloc by default). +One may use hwloc policy files from the SELinux Reference Policy at +https://github.com/TresysTechnology/refpolicy-contrib +(see also the documentation at https://github.com/TresysTechnology/refpolicy/wiki/GettingStarted). + +hwloc-dump-hwdata requires dmi-sysfs kernel module loaded. + +The utility is currently unneeded on platforms without Intel Xeon Phi processors. + +See HWLOC_DUMPED_HWDATA_DIR in \ref envvar for details +about the location of dumped files. + + +\subsection faq_bgq How do I build hwloc for BlueGene/Q? + +IBM BlueGene/Q machines run a standard Linux on the login/frontend nodes +and a custom CNK (Compute Node Kernel) on the compute nodes. + +To discover the topology of a login/frontend node, hwloc should be +configured as usual, without any BlueGene/Q-specific option. + +However, one would likely rather discover the topology of the compute nodes +where parallel jobs are actually running. +If so, hwloc must be cross-compiled with the following configuration line: +\verbatim +./configure --host=powerpc64-bgq-linux --disable-shared --enable-static \ + CPPFLAGS='-I/bgsys/drivers/ppcfloor -I/bgsys/drivers/ppcfloor/spi/include/kernel/cnk/' +\endverbatim + +CPPFLAGS may have to be updated if your platform headers are installed +in a different directory. + + +\subsection faq_windows How do I build hwloc for Windows? + +hwloc binary releases for Windows are available on the website download pages +(as pre-built ZIPs for both 32bits and 64bits x86 platforms). +However hwloc also offers several ways to build on Windows: + +
        +
      • +The usual Unix build steps (configure, make and make install) +work on the MSYS2/MinGW environment on Windows +(the official hwloc binary releases are built this way). +Some environment variables and options must be configured, +see contrib/ci.inria.fr/job-3-mingw.sh in the hwloc repository +for an example (used for nightly testing). +
      • +
      • +hwloc also supports such Unix-like builds in Cygwin +(environment for porting Unix code to Windows). +
      • +
      • +Windows build is also possible with CMake +(CMakeLists.txt available under contrib/windows-cmake/). +
      • +
      • +hwloc also comes with an example of Microsoft Visual Studio solution +(under contrib/windows/) that may serve as a base for custom builds. +
      • +
      + + +\subsection faq_netbsd_bind How to get useful topology information on NetBSD? + +The NetBSD (and FreeBSD) backend uses x86-specific topology discovery +(through the x86 component). +This implementation requires CPU binding so as to query topology +information from each individual processor. +This means that hwloc cannot find any useful topology information +unless user-level process binding is allowed by the NetBSD kernel. +The security.models.extensions.user_set_cpu_affinity +sysctl variable must be set to 1 to do so. +Otherwise, only the number of processors will be detected. + + +\subsection faq_aix_bind Why does binding fail on AIX? + +The AIX operating system requires specific user capabilities for +attaching processes to resource sets (CAP_NUMA_ATTACH). +Otherwise functions such as hwloc_set_cpubind() fail (return -1 with errno set to EPERM). + +This capability must also be inherited (through the additional CAP_PROPAGATE capability) +if you plan to bind a process before forking another process, +for instance with hwloc-bind. + +These capabilities may be given by the administrator with: +\verbatim +chuser "capabilities=CAP_PROPAGATE,CAP_NUMA_ATTACH" +\endverbatim + + +\htmlonly +
      +\endhtmlonly +\section faq5 Compatibility between hwloc versions + +\subsection faq_version_api How do I handle API changes? + +The hwloc interface is extended with every new major release. +Any application using the hwloc API should be prepared to check at +compile-time whether some features are available in the currently +installed hwloc distribution. + +For instance, to check whether the hwloc version is at least 2.0, you should use: +\verbatim +#include +#if HWLOC_API_VERSION >= 0x00020000 +... +#endif +\endverbatim + +To check for the API of release X.Y.Z at build time, +you may compare ::HWLOC_API_VERSION with (X<<16)+(Y<<8)+Z. + +For supporting older releases that do not have HWLOC_OBJ_NUMANODE +and HWLOC_OBJ_PACKAGE yet, you may use: + +\verbatim +#include +#if HWLOC_API_VERSION < 0x00010b00 +#define HWLOC_OBJ_NUMANODE HWLOC_OBJ_NODE +#define HWLOC_OBJ_PACKAGE HWLOC_OBJ_SOCKET +#endif +\endverbatim + +Once a program is built against a hwloc library, it may also dynamically +link with compatible libraries from other hwloc releases. +The version of that runtime library may be queried with hwloc_get_api_version(). +See \ref faq_version_abi for using this function for testing ABI compatibility. + + + +\subsection faq_version What is the difference between API and library version numbers? + +::HWLOC_API_VERSION is the version of the API. +It changes when functions are added, modified, etc. +However it does not necessarily change from one release to another. +For instance, two releases of the same series (e.g. 2.0.3 and 2.0.4) +usually have the same ::HWLOC_API_VERSION (0x00020000). +However their HWLOC_VERSION strings are different +(\"2.0.3\" and \"2.0.4\" respectively). + + + +\subsection faq_version_abi How do I handle ABI breaks? + +The hwloc interface was deeply modified in release 2.0 +to fix several issues of the 1.x interface +(see \ref upgrade_to_api_2x and the NEWS file in the source directory for details). +The ABI was broken, which means +applications must be recompiled against the new 2.0 interface. + +To check that you are not mixing old/recent headers with a recent/old runtime library, +check the major revision number in the API version: +\verbatim +#include + unsigned version = hwloc_get_api_version(); + if ((version >> 16) != (HWLOC_API_VERSION >> 16)) { + fprintf(stderr, + "%s compiled for hwloc API 0x%x but running on library API 0x%x.\n" + "You may need to point LD_LIBRARY_PATH to the right hwloc library.\n" + "Aborting since the new ABI is not backward compatible.\n", + callname, HWLOC_API_VERSION, version); + exit(EXIT_FAILURE); + } +\endverbatim +To specifically detect v2.0 issues: +\verbatim +#include +#if HWLOC_API_VERSION >= 0x00020000 + /* headers are recent */ + if (hwloc_get_api_version() < 0x20000) + ... error out, the hwloc runtime library is older than 2.0 ... +#else + /* headers are pre-2.0 */ + if (hwloc_get_api_version() >= 0x20000) + ... error out, the hwloc runtime library is more recent than 2.0 ... +#endif +\endverbatim + +In theory, library sonames prevent linking with incompatible libraries. +However custom hwloc installations or improperly configured build environments +may still lead to such issues. +Hence running one of the above (cheap) checks before initializing hwloc topology +may be useful. + + + +\subsection faq_version_xml Are XML topology files compatible between hwloc releases? + +XML topology files are forward-compatible: +a XML file may be loaded by a hwloc library that is more recent +than the hwloc release that exported that file. + +However, hwloc XMLs are not always backward-compatible: +Topologies exported by hwloc 2.x cannot be imported by 1.x by default +(see \ref upgrade_to_api_2x_xml for working around such issues). +There are also some corner cases where backward compatibility +is not guaranteed because of changes between major releases +(for instance 1.11 XMLs could not be imported in 1.10). + +XMLs are exchanged at runtime between some components of the HPC software stack +(for instance the resource managers and MPI processes). +Building all these components on the same (cluster-wide) +hwloc installation is a good way to avoid such incompatibilities. + + + +\subsection faq_version_synthetic Are synthetic strings compatible between hwloc releases? + +Synthetic strings (see \ref synthetic) are forward-compatible: +a synthetic string generated by a release may be imported by future hwloc libraries. + +However they are often not backward-compatible because new details may have been +added to synthetic descriptions in recent releases. +Some flags may be given to hwloc_topology_export_synthetic() to avoid such details +and stay backward compatible. + + + +\subsection faq_version_shmem Is it possible to share a shared-memory topology between different hwloc releases? + +Shared-memory topologies (see \ref hwlocality_shmem) have strong +requirements on compatibility between hwloc libraries. +Adopting a shared-memory topology fails +if it was exported by a non-compatible hwloc release. +Releases with same major revision are usually compatible +(e.g. hwloc 2.0.4 may adopt a topology exported by 2.0.3) +but different major revisions may be incompatible +(e.g. hwloc 2.1.0 cannot adopt from 2.0.x). + +Topologies are shared at runtime between some components of the HPC software stack +(for instance the resource managers and MPI processes). +Building all these components on the same (system-wide) hwloc installation +is a good way to avoid such incompatibilities. + + + +\page upgrade_to_api_2x Upgrading to the hwloc 2.0 API + +\htmlonly +
      +\endhtmlonly + +See \ref faq5 for detecting the hwloc version that you are compiling +and/or running against. + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_memory New Organization of NUMA nodes and Memory + +\subsection upgrade_to_api_2x_memory_children Memory children + +In hwloc v1.x, NUMA nodes were inside the tree, for instance Packages +contained 2 NUMA nodes which contained a L3 and several cache. + +Starting with hwloc v2.0, NUMA nodes are not in the main tree anymore. +They are attached under objects as Memory Children on the side +of normal children. +This memory children list starts at obj->memory_first_child +and its size is obj->memory_arity. +Hence there can now exist two local NUMA nodes, +for instance on Intel Xeon Phi processors. + +The normal list of children (starting at obj->first_child, +ending at obj->last_child, of size obj->arity, +and available as the array obj->children) +now only contains CPU-side objects: +PUs, Cores, Packages, Caches, Groups, Machine and System. +hwloc_get_next_child() may still be used to iterate over all children of all lists. + +Hence the CPU-side hierarchy is built using normal children, +while memory is attached to that hierarchy depending on its affinity. + +\subsection upgrade_to_api_2x_memory_examples Examples + +
        +
      • a UMA machine with 2 packages and a single NUMA node is now modeled + as a "Machine" object with two "Package" children + and one "NUMANode" memory children (displayed first in lstopo below): +\verbatim +Machine (1024MB total) + NUMANode L#0 (P#0 1024MB) + Package L#0 + Core L#0 + PU L#0 (P#0) + Core L#1 + PU L#1 (P#1) + Package L#1 + Core L#2 + PU L#2 (P#2) + Core L#3 + PU L#3 (P#3) +\endverbatim +
      • + +
      • a machine with 2 packages with one NUMA node and 2 cores in each is now: +\verbatim +Machine (2048MB total) + Package L#0 + NUMANode L#0 (P#0 1024MB) + Core L#0 + PU L#0 (P#0) + Core L#1 + PU L#1 (P#1) + Package L#1 + NUMANode L#1 (P#1 1024MB) + Core L#2 + PU L#2 (P#2) + Core L#3 + PU L#3 (P#3) +\endverbatim +
      • + +
      • if there are two NUMA nodes per package, a Group object may be added to keep +cores together with their local NUMA node: +\verbatim +Machine (4096MB total) + Package L#0 + Group0 L#0 + NUMANode L#0 (P#0 1024MB) + Core L#0 + PU L#0 (P#0) + Core L#1 + PU L#1 (P#1) + Group0 L#1 + NUMANode L#1 (P#1 1024MB) + Core L#2 + PU L#2 (P#2) + Core L#3 + PU L#3 (P#3) + Package L#1 + [...] +\endverbatim +
      • + +
      • if the platform has L3 caches whose localities are identical to NUMA nodes, Groups aren't needed: +\verbatim +Machine (4096MB total) + Package L#0 + L3 L#0 (16MB) + NUMANode L#0 (P#0 1024MB) + Core L#0 + PU L#0 (P#0) + Core L#1 + PU L#1 (P#1) + L3 L#1 (16MB) + NUMANode L#1 (P#1 1024MB) + Core L#2 + PU L#2 (P#2) + Core L#3 + PU L#3 (P#3) + Package L#1 + [...] +\endverbatim +
      • +
      + + +\subsection upgrade_to_api_2x_numa_level NUMA level and depth + +NUMA nodes are not in "main" tree of normal objects anymore. +Hence, they don't have a meaningful depth anymore (like I/O and Misc objects). +They have a virtual (negative) depth (::HWLOC_TYPE_DEPTH_NUMANODE) +so that functions manipulating depths and level still work, +and so that we can still iterate over the level of NUMA nodes just like for any other level. + +For instance we can still use lines such as +\verbatim +int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE); +hwloc_obj_t obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 4); +hwloc_obj_t node = hwloc_get_next_obj_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE, prev); +\endverbatim + +The NUMA depth should not be compared with others. +An unmodified code that still compares NUMA and Package depths +(to find out whether Packages contain NUMA or the contrary) +would now always assume Packages contain NUMA (because the NUMA depth is negative). + +However, the depth of the Normal parents of NUMA nodes may be used instead. +In the last example above, NUMA nodes are attached to L3 caches, +hence one may compare the depth of Packages and L3 to find out +that NUMA nodes are contained in Packages. +This depth of parents may be retrieved with hwloc_get_memory_parents_depth(). +However, this function may return ::HWLOC_TYPE_DEPTH_MULTIPLE +on future platforms if NUMA nodes are attached to different levels. + + +\subsection upgrade_to_api_2x_memory_find Finding Local NUMA nodes and looking at Children and Parents + +Applications that walked up/down to find NUMANode parent/children must +now be updated. +Instead of looking directly for a NUMA node, one should now look for +an object that has some memory children. +NUMA node(s) will be attached there. +For instance, when looking for a NUMA node above a given core core: +\verbatim +hwloc_obj_t parent = core->parent; +while (parent && !parent->memory_arity) + parent = parent->parent; /* no memory child, walk up */ +if (parent) + /* use parent->memory_first_child (and its siblings if there are multiple local NUMA nodes) */ +\endverbatim + +The list of local NUMA nodes (usually a single one) is also described +by the nodeset attribute of each object (which contains the +physical indexes of these nodes). +Iterating over the NUMA level is also an easy way to find local NUMA nodes: +\verbatim +hwloc_obj_t tmp = NULL; +while ((tmp = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, tmp)) != NULL) { + if (hwloc_bitmap_isset(obj->nodeset, tmp->os_index)) + /* tmp is a NUMA node local to obj, use it */ +} +\endverbatim + +Similarly finding objects that are close to a given NUMA nodes +should be updated too. +Instead of looking at the NUMA node parents/children, one should +now find a Normal parent above that NUMA node, and then look +at its parents/children as usual: +\verbatim +hwloc_obj_t tmp = obj->parent; +while (hwloc_obj_type_is_memory(tmp)) + tmp = tmp->parent; +/* now use tmp instead of obj */ +\endverbatim + +To avoid such hwloc v2.x-specific and NUMA-specific cases in the code, +a generic lookup for any kind of object, including NUMA nodes, +might also be implemented by iterating over a level. +For instance finding an object of type type which either +contains or is included in object obj can be +performed by traversing the level of that type and comparing CPU sets: +\verbatim +hwloc_obj_t tmp = NULL; +while ((tmp = hwloc_get_next_obj_by_type(topology, type, tmp)) != NULL) { + if (hwloc_bitmap_intersects(tmp->cpuset, obj->cpuset)) + /* tmp matches, use it */ +} +\endverbatim + +This generic lookup works whenever type or obj +are Normal or Memory objects since both have CPU sets. +Moreover, it is compatible with the hwloc v1.x API. + + + + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_children 4 Kinds of Objects and Children + +\subsection upgrade_to_api_2x_io_misc_children I/O and Misc children + +I/O children are not in the main object children list anymore either. +They are in the list starting at obj->io_first_child +and its size is obj->io_arity. + +Misc children are not in the main object children list anymore. +They are in the list starting at obj->misc_first_child +and its size is obj->misc_arity. + +See hwloc_obj for details about children lists. + +hwloc_get_next_child() may still be used to iterate over all children of all lists. + + +\subsection upgrade_to_api_2x_kinds_subsec Kinds of objects + +Given the above, objects may now be of 4 kinds: +
        +
      • Normal (everything not listed below, including Machine, Package, Core, PU, CPU Caches, etc);
      • +
      • Memory (currently NUMA nodes or Memory-side Caches), attached to parents as Memory children;
      • +
      • I/O (Bridges, PCI and OS devices), attached to parents as I/O children;
      • +
      • Misc objects, attached to parents as Misc children.
      • +
      +See hwloc_obj for details about children lists. + +For a given object type, the kind may be found with hwloc_obj_type_is_normal(), +hwloc_obj_type_is_memory(), hwloc_obj_type_is_normal(), +or comparing with ::HWLOC_OBJ_MISC. + +Normal and Memory objects have (non-NULL) CPU sets and nodesets, +while I/O and Misc objects don't have any sets (they are NULL). + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_cache HWLOC_OBJ_CACHE replaced + +Instead of a single HWLOC_OBJ_CACHE, there are now 8 types +::HWLOC_OBJ_L1CACHE, ..., ::HWLOC_OBJ_L5CACHE, +::HWLOC_OBJ_L1ICACHE, ..., ::HWLOC_OBJ_L3ICACHE. + +Cache object attributes are unchanged. + +hwloc_get_cache_type_depth() is not needed to disambiguate cache types anymore +since new types can be passed to hwloc_get_type_depth() +without ever getting ::HWLOC_TYPE_DEPTH_MULTIPLE anymore. + +hwloc_obj_type_is_cache(), hwloc_obj_type_is_dcache() and hwloc_obj_type_is_icache() +may be used to check whether a given type is a cache, data/unified cache or instruction cache. + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_allowed allowed_cpuset and allowed_nodeset only in the main topology + +Objects do not have allowed_cpuset and allowed_nodeset anymore. +They are only available for the entire topology using +hwloc_topology_get_allowed_cpuset() and hwloc_topology_get_allowed_nodeset(). + +As usual, those are only needed when the INCLUDE_DISALLOWED topology flag is given, +which means disallowed objects are kept in the topology. +If so, one may find out whether some PUs inside an object is allowed by checking +\verbatim +hwloc_bitmap_intersects(obj->cpuset, hwloc_topology_get_allowed_cpuset(topology)) +\endverbatim +Replace cpusets with nodesets for NUMA nodes. +To find out which ones, replace intersects() with and() to get the actual intersection. + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_depth Object depths are now signed int + +obj->depth as well as depths given to functions +such as hwloc_get_obj_by_depth() or returned by hwloc_topology_get_depth() are now +signed int. + +Other depth such as cache-specific depth attribute are still unsigned. + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_memory_attrs Memory attributes become NUMANode-specific + +Memory attributes such as obj->memory.local_memory +are now only available in NUMANode-specific attributes +in obj->attr->numanode.local_memory. + +obj->memory.total_memory is available +in all objects as obj->total_memory. + +See hwloc_obj_attr_u::hwloc_numanode_attr_s and hwloc_obj for details. + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_config Topology configuration changes + +The old ignoring API as well as several configuration flags +are replaced with the new filtering API, +see hwloc_topology_set_type_filter() and its variants, +and ::hwloc_type_filter_e for details. + +
        + +
      • +hwloc_topology_ignore_type(), hwloc_topology_ignore_type_keep_structure() +and hwloc_topology_ignore_all_keep_structure() are respectively superseded by +\verbatim +hwloc_topology_set_type_filter(topology, type, HWLOC_TYPE_FILTER_KEEP_NONE); +hwloc_topology_set_type_filter(topology, type, HWLOC_TYPE_FILTER_KEEP_STRUCTURE); +hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_STRUCTURE); +\endverbatim + +Also, the meaning of KEEP_STRUCTURE has changed (only entire levels may be ignored, instead of single objects), the old behavior is not available anymore. +
      • + +
      • +HWLOC_TOPOLOGY_FLAG_ICACHES is superseded by +\verbatim +hwloc_topology_set_icache_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); +\endverbatim +
      • + +
      • +HWLOC_TOPOLOGY_FLAG_WHOLE_IO, HWLOC_TOPOLOGY_FLAG_IO_DEVICES and HWLOC_TOPOLOGY_FLAG_IO_BRIDGES replaced. + +To keep all I/O devices (PCI, Bridges, and OS devices), use: +\verbatim +hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); +\endverbatim + +To only keep important devices (Bridges with children, common PCI devices and OS devices): +\verbatim +hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); +\endverbatim +
      • + +
      + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_xml XML changes + +2.0 XML files are not compatible with 1.x + +2.0 can load 1.x files, but only NUMA distances are imported. Other distance matrices are ignored + (they were never used by default anyway). + +2.0 can export 1.x-compatible files, but only distances attached to the root object are exported +(i.e. distances that cover the entire machine). +Other distance matrices are dropped (they were never used by default anyway). + +Users are advised to negociate hwloc versions between exporter and importer: +If the importer isn't 2.x, the exporter should export to 1.x. +Otherwise, things should work by default. + +Hence hwloc_topology_export_xml() and hwloc_topology_export_xmlbuffer() have a new flags argument. +to force a hwloc-1.x-compatible XML export. +
        +
      • + If both always support 2.0, don't pass any flag. +
      • +
      • + When the importer uses hwloc 1.x, export with ::HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1. + Otherwise the importer will fail to import. +
      • +
      • + When the exporter uses hwloc 1.x, it cannot pass any flag, + and a 2.0 importer can import without problem. +
      • +
      + +\verbatim +#if HWLOC_API_VERSION >= 0x20000 + if (need 1.x compatible XML export) + hwloc_topology_export_xml(...., HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1); + else /* need 2.x compatible XML export */ + hwloc_topology_export_xml(...., 0); +#else + hwloc_topology_export_xml(....); +#endif +\endverbatim + +Additionally, hwloc_topology_diff_load_xml(), hwloc_topology_diff_load_xmlbuffer(), +hwloc_topology_diff_export_xml(), hwloc_topology_diff_export_xmlbuffer() +and hwloc_topology_diff_destroy() lost the topology argument: +The first argument (topology) isn't needed anymore. + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_distances Distances API totally rewritten + +The new distances API is in hwloc/distances.h. + +Distances are not accessible directly from objects anymore. +One should first call hwloc_distances_get() (or a variant) +to retrieve distances (possibly with one call to get the +number of available distances structures, and another call +to actually get them). +Then it may consult these structures, and finally release them. + +The set of object involved in a distances structure is specified +by an array of objects, it may not always cover the entire machine or so. + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_return Return values of functions + +Bitmap functions (and a couple other functions) can return errors (in theory). + +Most bitmap functions may have to reallocate the internal bitmap storage. +In v1.x, they would silently crash if realloc failed. +In v2.0, they now return an int that can be negative on error. +However, the preallocated storage is 512 bits, +hence realloc will not even be used unless you run +hwloc on machines with larger PU or NUMAnode indexes. + +hwloc_obj_add_info(), hwloc_cpuset_from_nodeset() and hwloc_cpuset_from_nodeset() +also return an int, which would be -1 in case of allocation errors. + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_misc Misc API changes + +
        + +
      • +hwloc_type_sscanf() extends hwloc_obj_type_sscanf() +by passing a union hwloc_obj_attr_u which may receive +Cache, Group, Bridge or OS device attributes. +
      • + +
      • +hwloc_type_sscanf_as_depth() is also added to +directly return the corresponding level depth within a topology. +
      • + +
      • +hwloc_topology_insert_misc_object_by_cpuset() is replaced +with hwloc_topology_alloc_group_object() and hwloc_topology_insert_group_object(). +
      • + +
      • +hwloc_topology_insert_misc_object_by_parent() is replaced +with hwloc_topology_insert_misc_object(). +
      • + +
      + + +\htmlonly +
      +\endhtmlonly +\section upgrade_to_api_2x_removals API removals and deprecations + +
        + +
      • +HWLOC_OBJ_SYSTEM removed: +The root object is always ::HWLOC_OBJ_MACHINE +
      • + +
      • +*_membind_nodeset() memory binding interfaces deprecated: +One should use the variant without _nodeset suffix and pass the ::HWLOC_MEMBIND_BYNODESET flag. +
      • + +
      • +HWLOC_MEMBIND_REPLICATE removed: +no supported operating system supports it anymore. +
      • + +
      • +hwloc_obj_snprintf() removed because it was long-deprecated +by hwloc_obj_type_snprintf() and hwloc_obj_attr_snprintf(). +
      • + +
      • +hwloc_obj_type_sscanf() deprecated, hwloc_obj_type_of_string() removed. +
      • + +
      • +hwloc_cpuset_from/to_nodeset_strict() deprecated: +Now useless since all topologies are NUMA. Use the variant without the _strict suffix +
      • + +
      • +hwloc_distribute() and hwloc_distributev() removed, +deprecated by hwloc_distrib(). +
      • + +
      • +The Custom interface (hwloc_topology_set_custom(), etc.) +was removed, as well as the corresponding command-line tools (hwloc-assembler, etc.). +Topologies always start with object with valid cpusets and nodesets. +
      • + +
      • +obj->online_cpuset removed: +Offline PUs are simply listed in the complete_cpuset as previously. +
      • + +
      • +obj->os_level removed. +
      • + +
      + + + +*/ diff --git a/3rd-party/hwloc-2.7.1/doc/images/devel09-pci.png b/3rd-party/hwloc-2.7.1/doc/images/devel09-pci.png new file mode 100644 index 0000000000000000000000000000000000000000..0a60161d408c07ade6de004c63802da958a4ff5e GIT binary patch literal 23431 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/images/hagrid.png b/3rd-party/hwloc-2.7.1/doc/images/hagrid.png new file mode 100644 index 0000000000000000000000000000000000000000..f81d7d54188512553d2051391d52a26d0e9e062d GIT binary patch literal 13780 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 JJ$?QD{{VYh-vR&t literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/images/netloc_design.png b/3rd-party/hwloc-2.7.1/doc/images/netloc_design.png new file mode 100644 index 0000000000000000000000000000000000000000..964d0c7e30327b408ae3d31c74a3163cf607a543 GIT binary patch literal 67547 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 z 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/images/ppc64-full-with-smt.png b/3rd-party/hwloc-2.7.1/doc/images/ppc64-full-with-smt.png new file mode 100644 index 0000000000000000000000000000000000000000..35da6b17532dc12dbb699a7eaf06f059f8ab6363 GIT binary patch literal 18107 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/images/ppc64-with-smt.png b/3rd-party/hwloc-2.7.1/doc/images/ppc64-with-smt.png new file mode 100644 index 0000000000000000000000000000000000000000..230510af7142845f05f56ad7ad24acdcb574c15b GIT binary patch literal 8362 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

    8. Qu0jhY*Oh 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/images/ppc64-without-smt.png b/3rd-party/hwloc-2.7.1/doc/images/ppc64-without-smt.png new file mode 100644 index 0000000000000000000000000000000000000000..bb916f6b0737edaf59b5ab836126e6946202a091 GIT binary patch literal 7045 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 Np^BDrDeTFMe*=MahS>lB literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/doc/main.doxy b/3rd-party/hwloc-2.7.1/doc/main.doxy new file mode 100644 index 0000000000..3d2be237c8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/main.doxy @@ -0,0 +1,123 @@ +/*! + +\mainpage Hardware Locality + +

      Portable abstraction of parallel architectures for high-performance computing

      + +
      + +\htmlonly +
      +\endhtmlonly +\section common_introduction Introduction + +The Hardware Locality (hwloc) software project aims at easing the process +of discovering hardware resources in parallel architectures. +It offers command-line tools and a C API for consulting these +resources, their locality, attributes, and interconnection. +hwloc primarily aims at helping high-performance computing (HPC) +applications, but is also applicable to any project seeking to exploit +code and/or data locality on modern computing platforms. + +hwloc is actually made of two subprojects distributed together: +
        +
      • +The original hwloc project for describing the internals of computing nodes. +It is described in details starting at section \ref hwloc_intro. +
      • +
      • +The network-oriented companion called netloc (Network Locality), +described in details starting with section \ref netloc_intro. +
      • +
      + +\htmlonly +See also the Related pages tab above for links to other sections. +\endhtmlonly + +Netloc may be disabled, but the original hwloc cannot. +Both hwloc and netloc APIs are documented after these sections. + + +\htmlonly +
      +\endhtmlonly +\section common_installation Installation + +hwloc (https://www.open-mpi.org/projects/hwloc/) is available under the +BSD license. It is hosted as a sub-project of the overall Open MPI +project (https://www.open-mpi.org/). Note that hwloc does not require +any functionality from Open MPI -- it is a wholly separate (and much +smaller!) project and code base. It just happens to be hosted as part +of the overall Open MPI project. + +\subsection basic_installation Basic Installation + +Installation is the fairly common GNU-based process: + +\verbatim +shell$ ./configure --prefix=... +shell$ make +shell$ make install +\endverbatim + +hwloc- and netloc-specific configure options and requirements are +documented in sections \ref hwloc_installation and \ref netloc_installation +respectively. + +Also note that if you install supplemental libraries in non-standard +locations, hwloc's configure script may not be able to find them +without some help. You may need to specify additional CPPFLAGS, +LDFLAGS, or PKG_CONFIG_PATH values on the configure command line. + +For example, if libpciaccess was installed into /opt/pciaccess, +hwloc's configure script may not find it be default. Try adding +PKG_CONFIG_PATH to the ./configure command line, like this: + +\verbatim +./configure PKG_CONFIG_PATH=/opt/pciaccess/lib/pkgconfig ... +\endverbatim + +Running the "lstopo" tool is a good way to check as a graphical output +whether hwloc properly detected the architecture of your node. +Netloc command-line tools can be used to display the network topology +interconnecting your nodes. + +\subsection gitclone_installation Installing from a Git clone + +Additionally, the code can be directly cloned from Git: + +\verbatim +shell$ git clone https://github.com/open-mpi/hwloc.git +shell$ cd hwloc +shell$ ./autogen.sh +\endverbatim + +Note that GNU Autoconf >=2.63, Automake >=1.11 and Libtool >=2.2.6 are +required when building from a Git clone. + +Nightly development snapshots are available on the web site, +they can be configured and built without any need for Git +or GNU Autotools. + + +\htmlonly +
      +\endhtmlonly +\section bugs Questions and Bugs + +Bugs should be reported in the tracker +(https://github.com/open-mpi/hwloc/issues). +Opening a new issue automatically displays lots of hints about +how to debug and report issues. + +Questions may be sent to the users or developers mailing lists +(https://www.open-mpi.org/community/lists/hwloc.php). + +There is also a \#hwloc IRC channel on Libera Chat (irc.libera.chat). + + +*/ + +\input hwloc.doxy +\input netloc.doxy diff --git a/3rd-party/hwloc-2.7.1/doc/netloc.doxy b/3rd-party/hwloc-2.7.1/doc/netloc.doxy new file mode 100644 index 0000000000..644888e492 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/netloc.doxy @@ -0,0 +1,342 @@ +/* + * Copyright © 2013-2014 University of Wisconsin-La Crosse. + * All rights reserved. + * Copyright © 2014 Cisco Systems, Inc. All rights reserved. + * + * Copyright © 2014-2018 Inria. All rights reserved. + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +/*! \page netloc_intro Network Locality (netloc) + +\htmlonly +
      +\endhtmlonly + +Portable abstraction of network topologies for high-performance computing. + +The netloc documentation spans of these sections: +
        +
      • + \ref netloc_intro, this section below +
      • +
      • + \ref netloc_scotch +
      • +
      + + + + +\htmlonly +
      +\endhtmlonly +\section netloc_summary Netloc Summary + +The Portable Network Locality (netloc) software package provides network +topology discovery tools, and an abstract representation of those networks +topologies for a range of network types and configurations. It is provided as a +companion to the Portable Hardware Locality (hwloc) package. These two software +packages work together to provide a comprehensive view of the HPC system +topology, spanning from the processor cores in one server to the cores in +another - including the complex network(s) in between. + +Towards this end, netloc is divided into two sets of components. The first +tools are for the admin to extract the information about the topology of the +machines with topology discovery tools for each network type and discovery +technique (called readers). The second set of tools is for the user to exploit +the collected information: to display the topology or create a +topology-aware mapping of the processes of an application. + +\image html netloc_design.png +\image latex netloc_design.png "" width=9cm + + + + +\htmlonly +
      +\endhtmlonly +\subsection supportednetworks Supported Networks + +For now, only InfiniBand (See \ref netloc_setup) is supported, but it is +planned to be extended it very soon. + + + + +\htmlonly +
      +\endhtmlonly +\section netloc_installation Netloc Installation + +The generic installation procedure for both hwloc and netloc +is described in \ref common_installation. + +Note that netloc is currently not supported on as many platforms as +the original hwloc project. +netloc is enabled by default when supported, or can be disabled +by passing \--disable-netloc to the configure command-line. + + + + +\htmlonly +
      +\endhtmlonly +\section netloc_setup Setup + +To use Netloc tools, we need two steps. The first step consists in getting +information about network directly from tools distributed by manufacturers. For +Infiniband, for instance, this operation needs privileges to access to the +network device. For this step we have wrappers in Netloc that will call the +right tools with the right options. + +The second step will transform the raw files generated by manufacturer tools, +into files in a format readable by Netloc tools, and that will not depend on +network technologies. + +To be clear, let's take an example with Infiniband. This first step is handled by +\c netloc_ib_gather_raw that will call \c ibnetdiscover and \c ibroutes tools +to generate the necessary raw data files. The step has to be run by an +administrator, since the Infiniband tools need to access to the network device. + +\verbatim +shell$ netloc_ib_gather_raw --help +Usage: netloc_ib_gather_raw [options] + Dumps topology information to /ib-raw/ + Subnets are guessed from the /hwloc/ directory where + the hwloc XML exports of some nodes are stored. +Options: + --sudo + Pass sudo to internal ibnetdiscover and ibroute invocations. + Useful when the entire script cannot run as root. + --hwloc-dir + Use instead of /hwloc/ for hwloc XML exports. + --force-subnet [:]: to force the discovery + Do not guess subnets from hwloc XML exports. + Force discovery on local board port + and optionally force the subnet id + instead of reading it from the first GID. + Examples: --force-subnet mlx4_0:1 + --force-subnet fe80:0000:0000:0000:mlx4_0:1 + --ibnetdiscover /path/to/ibnetdiscover + --ibroute /path/to/ibroute + Specify exact location of programs. Default is /usr/bin/ + --sleep + Sleep for seconds between invocations of programs probing the network + --ignore-errors + Ignore errors from ibnetdiscover and ibroute, assume their outputs are ok + --force -f + Always rediscover to overwrite existing files without asking + --verbose -v + Add verbose messages + --dry-run + Do not actually run programs or modify anything + --help -h + Show this help + +shell$ ./netloc_ib_gather_raw /home/netloc/data +WARNING: Not running as root. +Using /home/netloc/data/hwloc as hwloc lstopo XML directory. + +Exporting local node hwloc XML... + Running lstopo-no-graphics... + +Found 1 subnets in hwloc directory: + Subnet fe80:0000:0000:0000 is locally accessible from board qib0 port 1. + +Looking at fe80:0000:0000:0000 (through local board qib0 port 1)... + Running ibnetdiscover... + Getting routes... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L112' LID 18... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L108' LID 20... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L102' LID 23... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L104' LID 25... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L106' LID 24... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L114' LID 22... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L116' LID 21... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L109' LID 12... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L111' LID 11... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L107' LID 13... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L103' LID 17... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L105' LID 16... + Running ibroute for switch 'QLogic 12800-180 GUID=0x00066a00e8001310 L113' LID 15... +\endverbatim + +The second step, that can be done by a regular user, is done by the tool \c +netloc_ib_extract_dats. + +\verbatim +shell$ netloc_ib_extract_dats --help +Usage: netloc_ib_extract_dats [--hwloc-dir +] + hwloc-dir can be an absolute path or a relative path from output path + +shell$ netloc_ib_extract_dats /home/netloc/data/ib-raw /home/netloc/data/netloc \ + --hwloc-dir ../hwloc +Read subnet: fe80:0000:0000:0000 +2 partitions found + 'node' + 'admin' +\endverbatim + + + + +\htmlonly +
      +\endhtmlonly +\section netloc_draw Topology display + +Netloc provides a tool, \c netloc_draw.html, that displays a topology in a web +browser, by using a JSON file. + +\subsection netloc_draw_setup Generate the JSON file + +In order to display a topology, Netloc needs to generate a JSON file +corresponding to a topology. For this operation, the user must run \c +netloc_draw_to_json. + +\verbatim +shell$ netloc_draw_to_json --help +Usage: netloc_draw_to_json + +shell$ netloc_draw_to_json /home/netloc/data/netloc +\endverbatim + +The \c netloc_draw_to_json command will write a JSON file for each topology +file found in the input directory. The output files, written also in the input +directory, can be open by \c netloc_draw.html in a web browser. + +\subsection netloc_draw_tool Using netloc_draw + +Once the JSON file is opened, the rendering is generated by the Javascript vis +library for computing the position of the nodes. From the interface, it is +possible to search for a specific node, to color the nodes, to expand merged +switches, to show statistics, to export as an image... The user can interact +with the nodes by moving them. For now, there are bugs and other nodes might +move too. + +The placement of the nodes is done statically if the topology is detected as a +tree. If not, vis.js will use physics to find good positions, and it can be very +time consuming. + +\image html netloc_draw.png +\image latex netloc_draw.png "" width=15cm + + + + + + + +\page netloc_scotch Netloc with Scotch + + + +\htmlonly +
      +\endhtmlonly + +Scotch is a toolbox for graph partitioning [XXX], that can do mapping between a +communication graph and an architecture. Netloc interfaces with Scotch, by +getting the topology of the machine and building the Scotch architecture. It is +also possible to directly build a mapping file that can be given to \c mpirun. + + +\htmlonly +
      +\endhtmlonly +\section scotch_intro Introduction + +Scotch is able to deal architectures to represent the topology of a complete +machine. Scotch handles several types of topologies: complete graphs, +hypercubes, fat trees, meshes, torus, and random graphs. Moreover, Scotch is +able to manage parts of architectures that are called sub-architectures. Thus, +from a complete architecture, we can create a sub-architecture that will +represent the available resources of the complete machine. + + +\htmlonly +
      +\endhtmlonly +\section scotch_setup Setup + +The first step in order to use Netloc tools is to discover the network. For +this task, we provide tools called netloc_gather that are wrappers to the +dedicated tools provided by the manufacturer of the network, that generate the +raw data given by the devices. This task needs privileges to access to the +network devices. Once, this task is completed, the raw data is converted in a +generic format independent to the fabric by extract_dats. Figure 1 shows how +the different modules of Netloc are linked, and what are the tools provided by +Netloc. + + +\htmlonly +
      +\endhtmlonly +\section scotch_tools_api Tools and API + +When the machine is discovered and all the needed files are generated as seen +previously, a user can call the netlocscotch functions from the API and +interact with Scotch. + +\subsection netlocscotch_arch Build Scotch architectures + +Netloc provides a function to export the built topology into the Scotch format. +That will give the possibility to the user to play with the topology in Scotch. +Since Netloc matches the discovered topology with known topologies, the Scotch +architecture won’t be random graphs but known topologies also in Scotch that +will lead to optimized graph algorithms. This function is called +netlocscotch_build_arch. + +When the network topology is a tree, the topology converted by netlocscotch is +the complete topology of the machine containing intranode topologies from +hwloc. In this case, merging the two levels results in a bigger tree. For other +network topologies, the global graph created for Scotch is a generic graph +since it not not (at this moment) possible to create nested known +architectures. + +\subsection netlocscotch_subarch Build Scotch sub-architectures + +Most of the time, the user does not have access to the complete machine. He +uses a resource manager to run his application and he will gain access only to +a set of nodes. In this case getting the Scotch architecture of the complete +machine is not relevant. Fortunately, Netloc is also able to build a Scotch +sub-architecture that will contain only the available nodes. For this operation +the user needs to run a specific program, netloc_get_resources, that will +record in a file, the lists of available nodes and available cores by using MPI +and hwloc. From this file, the function netlocscotch_build_subarch will build +the Scotch sub-architecture. + +\subsection netlocscotch_mapping Mapping of processes + +A main goal in having all these data about the network topology, especially in +Scotch structures, is to help the process placement. For that, we use the +mapping of a process graph to the architecture provided by Scotch. As we have +seen previously, Netloc is able to detect the structure of the topology and +will build the adapted Scotch architecture that will be more efficient than a +random structure. + +In case, the network topology is not a tree, netlocscotch converts the complete +topology into a generic graph. The drawback in that is the Scotch graph +algorithms are less efficient. To overcome that, netlocscotch does two steps of +mapping: first it maps the processes to the nodes, and then for each node maps +the processes to the cores. We have to conduct tests to check if the method +gives better results than using a generic graph directly. + +The other input needed in Scotch is the process graph. Since we want to +optimize the placement to decrease the communication time, a good metric for +building the application graph is the amount of communications between all +pairs of processes. Studies still have to be done to choose, in the most +efficient way, what we take into account to define the amount of communications +between the number of messages, the size of messages... This information will +be transformed into a process graph. + +Once we have a good mapping computed by Scotch, we can give it to the user, or +Netloc can even generate the corresponding rank file useful to MPI. + +*/ diff --git a/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-css.inc b/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-css.inc new file mode 100644 index 0000000000..339ffeb0bc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-css.inc @@ -0,0 +1,2 @@ + + diff --git a/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-footer.inc b/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-footer.inc new file mode 100644 index 0000000000..50e092203e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org-footer.inc @@ -0,0 +1,2 @@ + diff --git a/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org.cfg b/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org.cfg new file mode 100644 index 0000000000..f4d8a5a0de --- /dev/null +++ b/3rd-party/hwloc-2.7.1/doc/www.open-mpi.org.cfg @@ -0,0 +1,20 @@ +# Copyright © 2010-2015 Inria. All rights reserved. +# Copyright © 2009 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +############################################################### +# Customized for output onto the www.open-mpi.org web site. +############################################################### + +@INCLUDE = doxygen.cfg + +#PROJECT_NUMBER = @HWLOC_VERSION@ +OUTPUT_DIRECTORY = www.open-mpi.org +#EXAMPLE_PATH = @top_srcdir@/doc +#IMAGE_PATH = @top_srcdir@/doc/images images +HTML_FILE_EXTENSION = .php +HTML_HEADER = www.open-mpi.org-header.inc +HTML_FOOTER = www.open-mpi.org-footer.inc +GENERATE_MAN = NO +GENERATE_LATEX = NO +#INCLUDE_PATH = @top_srcdir@/doc diff --git a/3rd-party/hwloc-2.7.1/hwloc.pc.in b/3rd-party/hwloc-2.7.1/hwloc.pc.in new file mode 100644 index 0000000000..528c952cad --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: hwloc +Description: Hardware locality detection and management library +Version: @HWLOC_VERSION@ +Requires.private: @HWLOC_REQUIRES@ +Cflags: -I${includedir} +Libs: -L${libdir} -lhwloc +Libs.private: @HWLOC_LIBS@ @HWLOC_DL_LIBS@ @HWLOC_LTDL_LIBS@ @HWLOC_LIBS_PRIVATE@ diff --git a/3rd-party/hwloc-2.7.1/hwloc/Makefile.am b/3rd-party/hwloc-2.7.1/hwloc/Makefile.am new file mode 100644 index 0000000000..4b3800a187 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/Makefile.am @@ -0,0 +1,247 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2012 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# Copyright © 2011-2012 Oracle and/or its affiliates. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) -DHWLOC_INSIDE_LIBHWLOC +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +EXTRA_DIST = + +# If we're in standalone mode, build the installable library. +# Otherwise, build the embedded library. + +if HWLOC_BUILD_STANDALONE +lib_LTLIBRARIES = libhwloc.la +else +noinst_LTLIBRARIES = libhwloc_embedded.la +endif + +pluginsdir = @HWLOC_PLUGINS_DIR@ +plugins_LTLIBRARIES = +plugins_ldflags = -module -avoid-version $(HWLOC_DL_LIBS) $(HWLOC_LTDL_LIBS) +# Beware that files are not rebuilt automatically when reconfiguring with different paths in these flags. +AM_CPPFLAGS += -DHWLOC_PLUGINS_PATH="\"$(HWLOC_PLUGINS_PATH)\"" -DRUNSTATEDIR="\"$(HWLOC_runstatedir)\"" + +# Sources and ldflags + +sources = \ + topology.c \ + traversal.c \ + distances.c \ + memattrs.c \ + cpukinds.c \ + components.c \ + bind.c \ + bitmap.c \ + pci-common.c \ + diff.c \ + shmem.c \ + misc.c \ + base64.c \ + topology-noos.c \ + topology-synthetic.c \ + topology-xml.c \ + topology-xml-nolibxml.c +ldflags = -no-undefined + + +# Conditionally add to the sources and ldflags + +if HWLOC_HAVE_LIBXML2 +if HWLOC_XML_LIBXML_BUILD_STATIC +sources += topology-xml-libxml.c +else +plugins_LTLIBRARIES += hwloc_xml_libxml.la +hwloc_xml_libxml_la_SOURCES = topology-xml-libxml.c +hwloc_xml_libxml_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_LIBXML2_CPPFLAGS) $(HWLOC_LIBXML2_CFLAGS) -DHWLOC_INSIDE_PLUGIN +hwloc_xml_libxml_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_LIBXML2_LIBS) $(HWLOC_LIBXML2_LDFLAGS) +endif +endif HWLOC_HAVE_LIBXML2 + +if HWLOC_HAVE_PCIACCESS +if HWLOC_PCI_BUILD_STATIC +sources += topology-pci.c +else +plugins_LTLIBRARIES += hwloc_pci.la +hwloc_pci_la_SOURCES = topology-pci.c +hwloc_pci_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_PCIACCESS_CPPFLAGS) $(HWLOC_PCIACCESS_CFLAGS) -DHWLOC_INSIDE_PLUGIN +hwloc_pci_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_PCIACCESS_LIBS) $(HWLOC_PCIACCESS_LDFLAGS) +endif +endif HWLOC_HAVE_PCIACCESS + +if HWLOC_HAVE_OPENCL +if HWLOC_OPENCL_BUILD_STATIC +sources += topology-opencl.c +else +plugins_LTLIBRARIES += hwloc_opencl.la +hwloc_opencl_la_SOURCES = topology-opencl.c +hwloc_opencl_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_OPENCL_CPPFLAGS) $(HWLOC_OPENCL_CFLAGS) -DHWLOC_INSIDE_PLUGIN +hwloc_opencl_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_OPENCL_LIBS) $(HWLOC_OPENCL_LDFLAGS) +endif +endif HWLOC_HAVE_OPENCL + +if HWLOC_HAVE_CUDART +if HWLOC_CUDA_BUILD_STATIC +sources += topology-cuda.c +else +plugins_LTLIBRARIES += hwloc_cuda.la +hwloc_cuda_la_SOURCES = topology-cuda.c +hwloc_cuda_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_CUDART_CPPFLAGS) $(HWLOC_CUDART_CFLAGS) -DHWLOC_INSIDE_PLUGIN +hwloc_cuda_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_CUDART_LIBS) $(HWLOC_CUDART_LDFLAGS) +endif +endif HWLOC_HAVE_CUDART + +if HWLOC_HAVE_NVML +if HWLOC_NVML_BUILD_STATIC +sources += topology-nvml.c +else +plugins_LTLIBRARIES += hwloc_nvml.la +hwloc_nvml_la_SOURCES = topology-nvml.c +hwloc_nvml_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_NVML_CPPFLAGS) $(HWLOC_NVML_CFLAGS) -DHWLOC_INSIDE_PLUGIN +hwloc_nvml_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_NVML_LIBS) $(HWLOC_NVML_LDFLAGS) +endif +endif HWLOC_HAVE_NVML + +if HWLOC_HAVE_RSMI +if HWLOC_RSMI_BUILD_STATIC +sources += topology-rsmi.c +else +plugins_LTLIBRARIES += hwloc_rsmi.la +hwloc_rsmi_la_SOURCES = topology-rsmi.c +hwloc_rsmi_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_RSMI_CPPFLAGS) $(HWLOC_RSMI_CFLAGS) -DHWLOC_INSIDE_PLUGIN +hwloc_rsmi_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_RSMI_LIBS) $(HWLOC_RSMI_LDFLAGS) +endif +endif HWLOC_HAVE_RSMI + +if HWLOC_HAVE_LEVELZERO +if HWLOC_LEVELZERO_BUILD_STATIC +sources += topology-levelzero.c +else +plugins_LTLIBRARIES += hwloc_levelzero.la +hwloc_levelzero_la_SOURCES = topology-levelzero.c +hwloc_levelzero_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_LEVELZERO_CFLAGS) -DHWLOC_INSIDE_PLUGIN +hwloc_levelzero_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_LEVELZERO_LIBS) +endif +endif HWLOC_HAVE_LEVELZERO + +if HWLOC_HAVE_GL +if HWLOC_GL_BUILD_STATIC +sources += topology-gl.c +else +plugins_LTLIBRARIES += hwloc_gl.la +hwloc_gl_la_SOURCES = topology-gl.c +hwloc_gl_la_CFLAGS = $(AM_CFLAGS) $(HWLOC_GL_CPPFLAGS) $(HWLOC_GL_CFLAGS) -DHWLOC_INSIDE_PLUGIN +hwloc_gl_la_LDFLAGS = $(plugins_ldflags) $(HWLOC_GL_LIBS) $(HWLOC_GL_LDFLAGS) +endif +endif HWLOC_HAVE_GL + +if HWLOC_HAVE_SOLARIS +sources += topology-solaris.c +sources += topology-solaris-chiptype.c +endif HWLOC_HAVE_SOLARIS + +if HWLOC_HAVE_LINUX +sources += topology-linux.c topology-hardwired.c +endif HWLOC_HAVE_LINUX + +if HWLOC_HAVE_BGQ +sources += topology-bgq.c +endif HWLOC_HAVE_BGQ + +if HWLOC_HAVE_AIX +sources += topology-aix.c +ldflags += -lpthread +endif HWLOC_HAVE_AIX + +if HWLOC_HAVE_HPUX +sources += topology-hpux.c +ldflags += -lpthread +endif HWLOC_HAVE_HPUX + +if HWLOC_HAVE_WINDOWS +sources += topology-windows.c +endif HWLOC_HAVE_WINDOWS + +if HWLOC_HAVE_DARWIN +sources += topology-darwin.c +ldflags += $(HWLOC_DARWIN_LDFLAGS) +endif HWLOC_HAVE_DARWIN + +if HWLOC_HAVE_FREEBSD +sources += topology-freebsd.c +endif HWLOC_HAVE_FREEBSD + +if HWLOC_HAVE_NETBSD +sources += topology-netbsd.c +ldflags += -lpthread +endif HWLOC_HAVE_NETBSD + +if HWLOC_HAVE_X86_CPUID +sources += topology-x86.c +endif HWLOC_HAVE_X86_CPUID + + +if HWLOC_HAVE_WINDOWS +# Windows specific rules + +LC_MESSAGES=C +export LC_MESSAGES +ldflags += -Xlinker --output-def -Xlinker .libs/libhwloc.def + +if HWLOC_HAVE_MS_LIB +.libs/libhwloc.lib: libhwloc.la + [ ! -r .libs/libhwloc.def ] || "$(HWLOC_MS_LIB)" -machine:$(HWLOC_MS_LIB_ARCH) -def:.libs/libhwloc.def -name:libhwloc-$(libhwloc_so_name) -out:.libs/libhwloc.lib +all-local: .libs/libhwloc.lib +endif HWLOC_HAVE_MS_LIB + +install-exec-hook: + [ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.def $(DESTDIR)$(libdir) +if HWLOC_HAVE_MS_LIB + [ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.lib $(DESTDIR)$(libdir) + [ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.exp $(DESTDIR)$(libdir) +endif HWLOC_HAVE_MS_LIB + +uninstall-local: + rm -f $(DESTDIR)$(libdir)/libhwloc.def +if HWLOC_HAVE_MS_LIB + rm -f $(DESTDIR)$(libdir)/libhwloc.lib $(DESTDIR)$(libdir)/libhwloc.exp +endif HWLOC_HAVE_MS_LIB + +# End of Windows specific rules +endif HWLOC_HAVE_WINDOWS + + +# Installable library + +libhwloc_la_SOURCES = $(sources) +libhwloc_la_LDFLAGS = $(ldflags) -version-info $(libhwloc_so_version) $(HWLOC_LIBS) $(HWLOC_DL_LIBS) $(HWLOC_LTDL_LIBS) $(HWLOC_LDFLAGS) + +if HWLOC_HAVE_PLUGINS +libhwloc_la_LDFLAGS += -export-dynamic +endif + +# Embedded library (note the lack of a .so version number -- that +# intentionally only appears in the installable library). Also note +# the lack of _LDFLAGS -- all libs are added by the upper layer (via +# HWLOC_EMBEDDED_LIBS). + +libhwloc_embedded_la_SOURCES = $(sources) + +# XML data (only install if we're building in standalone mode) + +if HWLOC_BUILD_STANDALONE +xml_DATA = $(srcdir)/hwloc.dtd $(srcdir)/hwloc2.dtd $(srcdir)/hwloc2-diff.dtd +xmldir = $(pkgdatadir) +EXTRA_DIST += hwloc.dtd hwloc2.dtd hwloc2-diff.dtd +endif + +DISTCLEANFILES = static-components.h + +if HWLOC_HAVE_PLUGINS +check_LTLIBRARIES = hwloc_fake.la +hwloc_fake_la_SOURCES = topology-fake.c +hwloc_fake_la_LDFLAGS = $(plugins_ldflags) -rpath /nowhere # force libtool to build a shared-library even it's check-only +endif diff --git a/3rd-party/hwloc-2.7.1/hwloc/base64.c b/3rd-party/hwloc-2.7.1/hwloc/base64.c new file mode 100644 index 0000000000..4df67bf97e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/base64.c @@ -0,0 +1,309 @@ +/* + * Copyright © 2012-2018 Inria. All rights reserved. + * See COPYING in top-level directory. + * + * Modifications after import: + * - removed all #if + * - updated prototypes + * - updated #include + */ + +/* include hwloc's config before anything else + * so that extensions and features are properly enabled + */ +#include "private/private.h" + +/* $OpenBSD: base64.c,v 1.5 2006/10/21 09:55:03 otto Exp $ */ + +/* + * Copyright (c) 1996 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/* + * Portions Copyright (c) 1995 by International Business Machines, Inc. + * + * International Business Machines, Inc. (hereinafter called IBM) grants + * permission under its copyrights to use, copy, modify, and distribute this + * Software with or without fee, provided that the above copyright notice and + * all paragraphs of this notice appear in all copies, and that the name of IBM + * not be used in connection with the marketing of any product incorporating + * the Software or modifications thereof, without specific, written prior + * permission. + * + * To the extent it has a right to do so, IBM grants an immunity from suit + * under its patents, if any, for the use, sale or manufacture of products to + * the extent that such products are used for performing Domain Name System + * dynamic updates in TCP/IP networks by means of the Software. No immunity is + * granted for any product per se or for any other function of any product. + * + * THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, + * DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN + * IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. + */ + +/* OPENBSD ORIGINAL: lib/libc/net/base64.c */ + +static const char Base64[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +static const char Pad64 = '='; + +/* (From RFC1521 and draft-ietf-dnssec-secext-03.txt) + The following encoding technique is taken from RFC 1521 by Borenstein + and Freed. It is reproduced here in a slightly edited form for + convenience. + + A 65-character subset of US-ASCII is used, enabling 6 bits to be + represented per printable character. (The extra 65th character, "=", + is used to signify a special processing function.) + + The encoding process represents 24-bit groups of input bits as output + strings of 4 encoded characters. Proceeding from left to right, a + 24-bit input group is formed by concatenating 3 8-bit input groups. + These 24 bits are then treated as 4 concatenated 6-bit groups, each + of which is translated into a single digit in the base64 alphabet. + + Each 6-bit group is used as an index into an array of 64 printable + characters. The character referenced by the index is placed in the + output string. + + Table 1: The Base64 Alphabet + + Value Encoding Value Encoding Value Encoding Value Encoding + 0 A 17 R 34 i 51 z + 1 B 18 S 35 j 52 0 + 2 C 19 T 36 k 53 1 + 3 D 20 U 37 l 54 2 + 4 E 21 V 38 m 55 3 + 5 F 22 W 39 n 56 4 + 6 G 23 X 40 o 57 5 + 7 H 24 Y 41 p 58 6 + 8 I 25 Z 42 q 59 7 + 9 J 26 a 43 r 60 8 + 10 K 27 b 44 s 61 9 + 11 L 28 c 45 t 62 + + 12 M 29 d 46 u 63 / + 13 N 30 e 47 v + 14 O 31 f 48 w (pad) = + 15 P 32 g 49 x + 16 Q 33 h 50 y + + Special processing is performed if fewer than 24 bits are available + at the end of the data being encoded. A full encoding quantum is + always completed at the end of a quantity. When fewer than 24 input + bits are available in an input group, zero bits are added (on the + right) to form an integral number of 6-bit groups. Padding at the + end of the data is performed using the '=' character. + + Since all base64 input is an integral number of octets, only the + ------------------------------------------------- + following cases can arise: + + (1) the final quantum of encoding input is an integral + multiple of 24 bits; here, the final unit of encoded + output will be an integral multiple of 4 characters + with no "=" padding, + (2) the final quantum of encoding input is exactly 8 bits; + here, the final unit of encoded output will be two + characters followed by two "=" padding characters, or + (3) the final quantum of encoding input is exactly 16 bits; + here, the final unit of encoded output will be three + characters followed by one "=" padding character. + */ + +#include +#include +#include + +int +hwloc_encode_to_base64(const char *src, size_t srclength, char *target, size_t targsize) +{ + size_t datalength = 0; + unsigned char input[3]; + unsigned char output[4]; + unsigned int i; + + while (2 < srclength) { + input[0] = *src++; + input[1] = *src++; + input[2] = *src++; + srclength -= 3; + + output[0] = input[0] >> 2; + output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); + output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); + output[3] = input[2] & 0x3f; + + if (datalength + 4 > targsize) + return (-1); + target[datalength++] = Base64[output[0]]; + target[datalength++] = Base64[output[1]]; + target[datalength++] = Base64[output[2]]; + target[datalength++] = Base64[output[3]]; + } + + /* Now we worry about padding. */ + if (0 != srclength) { + /* Get what's left. */ + input[0] = input[1] = input[2] = '\0'; + for (i = 0; i < srclength; i++) + input[i] = *src++; + + output[0] = input[0] >> 2; + output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); + output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); + + if (datalength + 4 > targsize) + return (-1); + target[datalength++] = Base64[output[0]]; + target[datalength++] = Base64[output[1]]; + if (srclength == 1) + target[datalength++] = Pad64; + else + target[datalength++] = Base64[output[2]]; + target[datalength++] = Pad64; + } + if (datalength >= targsize) + return (-1); + target[datalength] = '\0'; /* Returned value doesn't count \0. */ + return (int)(datalength); +} + +/* skips all whitespace anywhere. + converts characters, four at a time, starting at (or after) + src from base - 64 numbers into three 8 bit bytes in the target area. + it returns the number of data bytes stored at the target, or -1 on error. + */ + +int +hwloc_decode_from_base64(char const *src, char *target, size_t targsize) +{ + unsigned int tarindex, state; + int ch; + char *pos; + + state = 0; + tarindex = 0; + + while ((ch = *src++) != '\0') { + if (isspace(ch)) /* Skip whitespace anywhere. */ + continue; + + if (ch == Pad64) + break; + + pos = strchr(Base64, ch); + if (pos == 0) /* A non-base64 character. */ + return (-1); + + switch (state) { + case 0: + if (target) { + if (tarindex >= targsize) + return (-1); + target[tarindex] = (char)(pos - Base64) << 2; + } + state = 1; + break; + case 1: + if (target) { + if (tarindex + 1 >= targsize) + return (-1); + target[tarindex] |= (pos - Base64) >> 4; + target[tarindex+1] = ((pos - Base64) & 0x0f) + << 4 ; + } + tarindex++; + state = 2; + break; + case 2: + if (target) { + if (tarindex + 1 >= targsize) + return (-1); + target[tarindex] |= (pos - Base64) >> 2; + target[tarindex+1] = ((pos - Base64) & 0x03) + << 6; + } + tarindex++; + state = 3; + break; + case 3: + if (target) { + if (tarindex >= targsize) + return (-1); + target[tarindex] |= (pos - Base64); + } + tarindex++; + state = 0; + break; + } + } + + /* + * We are done decoding Base-64 chars. Let's see if we ended + * on a byte boundary, and/or with erroneous trailing characters. + */ + + if (ch == Pad64) { /* We got a pad char. */ + ch = *src++; /* Skip it, get next. */ + switch (state) { + case 0: /* Invalid = in first position */ + case 1: /* Invalid = in second position */ + return (-1); + + case 2: /* Valid, means one byte of info */ + /* Skip any number of spaces. */ + for (; ch != '\0'; ch = *src++) + if (!isspace(ch)) + break; + /* Make sure there is another trailing = sign. */ + if (ch != Pad64) + return (-1); + ch = *src++; /* Skip the = */ + /* Fall through to "single trailing =" case. */ + /* FALLTHROUGH */ + + case 3: /* Valid, means two bytes of info */ + /* + * We know this char is an =. Is there anything but + * whitespace after it? + */ + for (; ch != '\0'; ch = *src++) + if (!isspace(ch)) + return (-1); + + /* + * Now make sure for cases 2 and 3 that the "extra" + * bits that slopped past the last full byte were + * zeros. If we don't check them, they become a + * subliminal channel. + */ + if (target && target[tarindex] != 0) + return (-1); + } + } else { + /* + * We ended by seeing the end of the string. Make sure we + * have no partial bytes lying around. + */ + if (state != 0) + return (-1); + } + + return (tarindex); +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/bind.c b/3rd-party/hwloc-2.7.1/hwloc/bind.c new file mode 100644 index 0000000000..2b5d099474 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/bind.c @@ -0,0 +1,926 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009-2010, 2012 Université Bordeaux + * Copyright © 2011-2015 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" +#include "hwloc/helper.h" + +#ifdef HAVE_SYS_MMAN_H +# include +#endif +/* is only needed if we don't have posix_memalign() */ +#if defined(hwloc_getpagesize) && !defined(HAVE_POSIX_MEMALIGN) && defined(HAVE_MEMALIGN) && defined(HAVE_MALLOC_H) +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include + +/* TODO: HWLOC_GNU_SYS, + * + * We could use glibc's sched_setaffinity generically when it is available + * + * Darwin and OpenBSD don't seem to have binding facilities. + */ + +#define HWLOC_CPUBIND_ALLFLAGS (HWLOC_CPUBIND_PROCESS|HWLOC_CPUBIND_THREAD|HWLOC_CPUBIND_STRICT|HWLOC_CPUBIND_NOMEMBIND) + +static hwloc_const_bitmap_t +hwloc_fix_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t set) +{ + hwloc_const_bitmap_t topology_set = hwloc_topology_get_topology_cpuset(topology); + hwloc_const_bitmap_t complete_set = hwloc_topology_get_complete_cpuset(topology); + + if (hwloc_bitmap_iszero(set)) { + errno = EINVAL; + return NULL; + } + + if (!hwloc_bitmap_isincluded(set, complete_set)) { + errno = EINVAL; + return NULL; + } + + if (hwloc_bitmap_isincluded(topology_set, set)) + set = complete_set; + + return set; +} + +int +hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t set, int flags) +{ + if (flags & ~HWLOC_CPUBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + set = hwloc_fix_cpubind(topology, set); + if (!set) + return -1; + + if (flags & HWLOC_CPUBIND_PROCESS) { + if (topology->binding_hooks.set_thisproc_cpubind) + return topology->binding_hooks.set_thisproc_cpubind(topology, set, flags); + } else if (flags & HWLOC_CPUBIND_THREAD) { + if (topology->binding_hooks.set_thisthread_cpubind) + return topology->binding_hooks.set_thisthread_cpubind(topology, set, flags); + } else { + if (topology->binding_hooks.set_thisproc_cpubind) { + int err = topology->binding_hooks.set_thisproc_cpubind(topology, set, flags); + if (err >= 0 || errno != ENOSYS) + return err; + /* ENOSYS, fallback */ + } + if (topology->binding_hooks.set_thisthread_cpubind) + return topology->binding_hooks.set_thisthread_cpubind(topology, set, flags); + } + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_cpubind(hwloc_topology_t topology, hwloc_bitmap_t set, int flags) +{ + if (flags & ~HWLOC_CPUBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (flags & HWLOC_CPUBIND_PROCESS) { + if (topology->binding_hooks.get_thisproc_cpubind) + return topology->binding_hooks.get_thisproc_cpubind(topology, set, flags); + } else if (flags & HWLOC_CPUBIND_THREAD) { + if (topology->binding_hooks.get_thisthread_cpubind) + return topology->binding_hooks.get_thisthread_cpubind(topology, set, flags); + } else { + if (topology->binding_hooks.get_thisproc_cpubind) { + int err = topology->binding_hooks.get_thisproc_cpubind(topology, set, flags); + if (err >= 0 || errno != ENOSYS) + return err; + /* ENOSYS, fallback */ + } + if (topology->binding_hooks.get_thisthread_cpubind) + return topology->binding_hooks.get_thisthread_cpubind(topology, set, flags); + } + + errno = ENOSYS; + return -1; +} + +int +hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, int flags) +{ + if (flags & ~HWLOC_CPUBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + set = hwloc_fix_cpubind(topology, set); + if (!set) + return -1; + + if (topology->binding_hooks.set_proc_cpubind) + return topology->binding_hooks.set_proc_cpubind(topology, pid, set, flags); + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, int flags) +{ + if (flags & ~HWLOC_CPUBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (topology->binding_hooks.get_proc_cpubind) + return topology->binding_hooks.get_proc_cpubind(topology, pid, set, flags); + + errno = ENOSYS; + return -1; +} + +#ifdef hwloc_thread_t +int +hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_bitmap_t set, int flags) +{ + if (flags & ~HWLOC_CPUBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + set = hwloc_fix_cpubind(topology, set); + if (!set) + return -1; + + if (topology->binding_hooks.set_thread_cpubind) + return topology->binding_hooks.set_thread_cpubind(topology, tid, set, flags); + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_bitmap_t set, int flags) +{ + if (flags & ~HWLOC_CPUBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (topology->binding_hooks.get_thread_cpubind) + return topology->binding_hooks.get_thread_cpubind(topology, tid, set, flags); + + errno = ENOSYS; + return -1; +} +#endif + +int +hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_bitmap_t set, int flags) +{ + if (flags & ~HWLOC_CPUBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (flags & HWLOC_CPUBIND_PROCESS) { + if (topology->binding_hooks.get_thisproc_last_cpu_location) + return topology->binding_hooks.get_thisproc_last_cpu_location(topology, set, flags); + } else if (flags & HWLOC_CPUBIND_THREAD) { + if (topology->binding_hooks.get_thisthread_last_cpu_location) + return topology->binding_hooks.get_thisthread_last_cpu_location(topology, set, flags); + } else { + if (topology->binding_hooks.get_thisproc_last_cpu_location) { + int err = topology->binding_hooks.get_thisproc_last_cpu_location(topology, set, flags); + if (err >= 0 || errno != ENOSYS) + return err; + /* ENOSYS, fallback */ + } + if (topology->binding_hooks.get_thisthread_last_cpu_location) + return topology->binding_hooks.get_thisthread_last_cpu_location(topology, set, flags); + } + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, int flags) +{ + if (flags & ~HWLOC_CPUBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (topology->binding_hooks.get_proc_last_cpu_location) + return topology->binding_hooks.get_proc_last_cpu_location(topology, pid, set, flags); + + errno = ENOSYS; + return -1; +} + +#define HWLOC_MEMBIND_ALLFLAGS (HWLOC_MEMBIND_PROCESS|HWLOC_MEMBIND_THREAD|HWLOC_MEMBIND_STRICT|HWLOC_MEMBIND_MIGRATE|HWLOC_MEMBIND_NOCPUBIND|HWLOC_MEMBIND_BYNODESET) + +static hwloc_const_nodeset_t +hwloc_fix_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset) +{ + hwloc_const_bitmap_t topology_nodeset = hwloc_topology_get_topology_nodeset(topology); + hwloc_const_bitmap_t complete_nodeset = hwloc_topology_get_complete_nodeset(topology); + + if (hwloc_bitmap_iszero(nodeset)) { + errno = EINVAL; + return NULL; + } + + if (!hwloc_bitmap_isincluded(nodeset, complete_nodeset)) { + errno = EINVAL; + return NULL; + } + + if (hwloc_bitmap_isincluded(topology_nodeset, nodeset)) + return complete_nodeset; + + return nodeset; +} + +static int +hwloc_fix_membind_cpuset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_const_cpuset_t cpuset) +{ + hwloc_const_bitmap_t topology_set = hwloc_topology_get_topology_cpuset(topology); + hwloc_const_bitmap_t complete_set = hwloc_topology_get_complete_cpuset(topology); + hwloc_const_bitmap_t complete_nodeset = hwloc_topology_get_complete_nodeset(topology); + + if (hwloc_bitmap_iszero(cpuset)) { + errno = EINVAL; + return -1; + } + + if (!hwloc_bitmap_isincluded(cpuset, complete_set)) { + errno = EINVAL; + return -1; + } + + if (hwloc_bitmap_isincluded(topology_set, cpuset)) { + hwloc_bitmap_copy(nodeset, complete_nodeset); + return 0; + } + + hwloc_cpuset_to_nodeset(topology, cpuset, nodeset); + return 0; +} + +static __hwloc_inline int hwloc__check_membind_policy(hwloc_membind_policy_t policy) +{ + if (policy == HWLOC_MEMBIND_DEFAULT + || policy == HWLOC_MEMBIND_FIRSTTOUCH + || policy == HWLOC_MEMBIND_BIND + || policy == HWLOC_MEMBIND_INTERLEAVE + || policy == HWLOC_MEMBIND_NEXTTOUCH) + return 0; + return -1; +} + +static int +hwloc_set_membind_by_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) +{ + if ((flags & ~HWLOC_MEMBIND_ALLFLAGS) || hwloc__check_membind_policy(policy) < 0) { + errno = EINVAL; + return -1; + } + + nodeset = hwloc_fix_membind(topology, nodeset); + if (!nodeset) + return -1; + + if (flags & HWLOC_MEMBIND_PROCESS) { + if (topology->binding_hooks.set_thisproc_membind) + return topology->binding_hooks.set_thisproc_membind(topology, nodeset, policy, flags); + } else if (flags & HWLOC_MEMBIND_THREAD) { + if (topology->binding_hooks.set_thisthread_membind) + return topology->binding_hooks.set_thisthread_membind(topology, nodeset, policy, flags); + } else { + if (topology->binding_hooks.set_thisproc_membind) { + int err = topology->binding_hooks.set_thisproc_membind(topology, nodeset, policy, flags); + if (err >= 0 || errno != ENOSYS) + return err; + /* ENOSYS, fallback */ + } + if (topology->binding_hooks.set_thisthread_membind) + return topology->binding_hooks.set_thisthread_membind(topology, nodeset, policy, flags); + } + + errno = ENOSYS; + return -1; +} + +int +hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) +{ + int ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_set_membind_by_nodeset(topology, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + if (hwloc_fix_membind_cpuset(topology, nodeset, set)) + ret = -1; + else + ret = hwloc_set_membind_by_nodeset(topology, nodeset, policy, flags); + hwloc_bitmap_free(nodeset); + } + return ret; +} + +static int +hwloc_get_membind_by_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) +{ + if (flags & ~HWLOC_MEMBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (flags & HWLOC_MEMBIND_PROCESS) { + if (topology->binding_hooks.get_thisproc_membind) + return topology->binding_hooks.get_thisproc_membind(topology, nodeset, policy, flags); + } else if (flags & HWLOC_MEMBIND_THREAD) { + if (topology->binding_hooks.get_thisthread_membind) + return topology->binding_hooks.get_thisthread_membind(topology, nodeset, policy, flags); + } else { + if (topology->binding_hooks.get_thisproc_membind) { + int err = topology->binding_hooks.get_thisproc_membind(topology, nodeset, policy, flags); + if (err >= 0 || errno != ENOSYS) + return err; + /* ENOSYS, fallback */ + } + if (topology->binding_hooks.get_thisthread_membind) + return topology->binding_hooks.get_thisthread_membind(topology, nodeset, policy, flags); + } + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags) +{ + int ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_get_membind_by_nodeset(topology, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + ret = hwloc_get_membind_by_nodeset(topology, nodeset, policy, flags); + if (!ret) + hwloc_cpuset_from_nodeset(topology, set, nodeset); + hwloc_bitmap_free(nodeset); + } + + return ret; +} + +static int +hwloc_set_proc_membind_by_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) +{ + if ((flags & ~HWLOC_MEMBIND_ALLFLAGS) || hwloc__check_membind_policy(policy) < 0) { + errno = EINVAL; + return -1; + } + + nodeset = hwloc_fix_membind(topology, nodeset); + if (!nodeset) + return -1; + + if (topology->binding_hooks.set_proc_membind) + return topology->binding_hooks.set_proc_membind(topology, pid, nodeset, policy, flags); + + errno = ENOSYS; + return -1; +} + + +int +hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) +{ + int ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_set_proc_membind_by_nodeset(topology, pid, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + if (hwloc_fix_membind_cpuset(topology, nodeset, set)) + ret = -1; + else + ret = hwloc_set_proc_membind_by_nodeset(topology, pid, nodeset, policy, flags); + hwloc_bitmap_free(nodeset); + } + + return ret; +} + +static int +hwloc_get_proc_membind_by_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) +{ + if (flags & ~HWLOC_MEMBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (topology->binding_hooks.get_proc_membind) + return topology->binding_hooks.get_proc_membind(topology, pid, nodeset, policy, flags); + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags) +{ + int ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_get_proc_membind_by_nodeset(topology, pid, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + ret = hwloc_get_proc_membind_by_nodeset(topology, pid, nodeset, policy, flags); + if (!ret) + hwloc_cpuset_from_nodeset(topology, set, nodeset); + hwloc_bitmap_free(nodeset); + } + + return ret; +} + +static int +hwloc_set_area_membind_by_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) +{ + if ((flags & ~HWLOC_MEMBIND_ALLFLAGS) || hwloc__check_membind_policy(policy) < 0) { + errno = EINVAL; + return -1; + } + + if (!len) + /* nothing to do */ + return 0; + + nodeset = hwloc_fix_membind(topology, nodeset); + if (!nodeset) + return -1; + + if (topology->binding_hooks.set_area_membind) + return topology->binding_hooks.set_area_membind(topology, addr, len, nodeset, policy, flags); + + errno = ENOSYS; + return -1; +} + +int +hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) +{ + int ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_set_area_membind_by_nodeset(topology, addr, len, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + if (hwloc_fix_membind_cpuset(topology, nodeset, set)) + ret = -1; + else + ret = hwloc_set_area_membind_by_nodeset(topology, addr, len, nodeset, policy, flags); + hwloc_bitmap_free(nodeset); + } + + return ret; +} + +static int +hwloc_get_area_membind_by_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) +{ + if (flags & ~HWLOC_MEMBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (!len) { + /* nothing to query */ + errno = EINVAL; + return -1; + } + + if (topology->binding_hooks.get_area_membind) + return topology->binding_hooks.get_area_membind(topology, addr, len, nodeset, policy, flags); + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags) +{ + int ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_get_area_membind_by_nodeset(topology, addr, len, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + ret = hwloc_get_area_membind_by_nodeset(topology, addr, len, nodeset, policy, flags); + if (!ret) + hwloc_cpuset_from_nodeset(topology, set, nodeset); + hwloc_bitmap_free(nodeset); + } + + return ret; +} + +static int +hwloc_get_area_memlocation_by_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, int flags) +{ + if (flags & ~HWLOC_MEMBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (!len) + /* nothing to do */ + return 0; + + if (topology->binding_hooks.get_area_memlocation) + return topology->binding_hooks.get_area_memlocation(topology, addr, len, nodeset, flags); + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_cpuset_t set, int flags) +{ + int ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_get_area_memlocation_by_nodeset(topology, addr, len, set, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + ret = hwloc_get_area_memlocation_by_nodeset(topology, addr, len, nodeset, flags); + if (!ret) + hwloc_cpuset_from_nodeset(topology, set, nodeset); + hwloc_bitmap_free(nodeset); + } + + return ret; +} + +void * +hwloc_alloc_heap(hwloc_topology_t topology __hwloc_attribute_unused, size_t len) +{ + void *p = NULL; +#if defined(hwloc_getpagesize) && defined(HAVE_POSIX_MEMALIGN) + errno = posix_memalign(&p, hwloc_getpagesize(), len); + if (errno) + p = NULL; +#elif defined(hwloc_getpagesize) && defined(HAVE_MEMALIGN) + p = memalign(hwloc_getpagesize(), len); +#else + p = malloc(len); +#endif + return p; +} + +#ifdef MAP_ANONYMOUS +void * +hwloc_alloc_mmap(hwloc_topology_t topology __hwloc_attribute_unused, size_t len) +{ + void * buffer = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + return buffer == MAP_FAILED ? NULL : buffer; +} +#endif + +int +hwloc_free_heap(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len __hwloc_attribute_unused) +{ + free(addr); + return 0; +} + +#ifdef MAP_ANONYMOUS +int +hwloc_free_mmap(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len) +{ + if (!addr) + return 0; + return munmap(addr, len); +} +#endif + +void * +hwloc_alloc(hwloc_topology_t topology, size_t len) +{ + if (topology->binding_hooks.alloc) + return topology->binding_hooks.alloc(topology, len); + return hwloc_alloc_heap(topology, len); +} + +static void * +hwloc_alloc_membind_by_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) +{ + void *p; + + if ((flags & ~HWLOC_MEMBIND_ALLFLAGS) || hwloc__check_membind_policy(policy) < 0) { + errno = EINVAL; + return NULL; + } + + nodeset = hwloc_fix_membind(topology, nodeset); + if (!nodeset) + goto fallback; + if (flags & HWLOC_MEMBIND_MIGRATE) { + errno = EINVAL; + goto fallback; + } + + if (topology->binding_hooks.alloc_membind) + return topology->binding_hooks.alloc_membind(topology, len, nodeset, policy, flags); + else if (topology->binding_hooks.set_area_membind) { + p = hwloc_alloc(topology, len); + if (!p) + return NULL; + if (topology->binding_hooks.set_area_membind(topology, p, len, nodeset, policy, flags) && flags & HWLOC_MEMBIND_STRICT) { + int error = errno; + free(p); + errno = error; + return NULL; + } + return p; + } else { + errno = ENOSYS; + } + +fallback: + if (flags & HWLOC_MEMBIND_STRICT) + /* Report error */ + return NULL; + /* Never mind, allocate anyway */ + return hwloc_alloc(topology, len); +} + +void * +hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) +{ + void *ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_alloc_membind_by_nodeset(topology, len, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + if (hwloc_fix_membind_cpuset(topology, nodeset, set)) { + if (flags & HWLOC_MEMBIND_STRICT) + ret = NULL; + else + ret = hwloc_alloc(topology, len); + } else + ret = hwloc_alloc_membind_by_nodeset(topology, len, nodeset, policy, flags); + hwloc_bitmap_free(nodeset); + } + + return ret; +} + +int +hwloc_free(hwloc_topology_t topology, void *addr, size_t len) +{ + if (topology->binding_hooks.free_membind) + return topology->binding_hooks.free_membind(topology, addr, len); + return hwloc_free_heap(topology, addr, len); +} + +/* + * Empty binding hooks always returning success + */ + +static int dontset_return_complete_cpuset(hwloc_topology_t topology, hwloc_cpuset_t set) +{ + hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology)); + return 0; +} + +static int dontset_thisthread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return 0; +} +static int dontget_thisthread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, int flags __hwloc_attribute_unused) +{ + return dontset_return_complete_cpuset(topology, set); +} +static int dontset_thisproc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return 0; +} +static int dontget_thisproc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, int flags __hwloc_attribute_unused) +{ + return dontset_return_complete_cpuset(topology, set); +} +static int dontset_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return 0; +} +static int dontget_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_bitmap_t cpuset, int flags __hwloc_attribute_unused) +{ + return dontset_return_complete_cpuset(topology, cpuset); +} +#ifdef hwloc_thread_t +static int dontset_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return 0; +} +static int dontget_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid __hwloc_attribute_unused, hwloc_bitmap_t cpuset, int flags __hwloc_attribute_unused) +{ + return dontset_return_complete_cpuset(topology, cpuset); +} +#endif + +static int dontset_return_complete_nodeset(hwloc_topology_t topology, hwloc_nodeset_t set, hwloc_membind_policy_t *policy) +{ + hwloc_bitmap_copy(set, hwloc_topology_get_complete_nodeset(topology)); + *policy = HWLOC_MEMBIND_MIXED; + return 0; +} + +static int dontset_thisproc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return 0; +} +static int dontget_thisproc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused) +{ + return dontset_return_complete_nodeset(topology, set, policy); +} + +static int dontset_thisthread_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return 0; +} +static int dontget_thisthread_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused) +{ + return dontset_return_complete_nodeset(topology, set, policy); +} + +static int dontset_proc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return 0; +} +static int dontget_proc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused) +{ + return dontset_return_complete_nodeset(topology, set, policy); +} + +static int dontset_area_membind(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return 0; +} +static int dontget_area_membind(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused) +{ + return dontset_return_complete_nodeset(topology, set, policy); +} +static int dontget_area_memlocation(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_bitmap_t set, int flags __hwloc_attribute_unused) +{ + hwloc_membind_policy_t policy; + return dontset_return_complete_nodeset(topology, set, &policy); +} + +static void * dontalloc_membind(hwloc_topology_t topology __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) +{ + return malloc(size); +} +static int dontfree_membind(hwloc_topology_t topology __hwloc_attribute_unused, void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused) +{ + free(addr); + return 0; +} + +static void hwloc_set_dummy_hooks(struct hwloc_binding_hooks *hooks, + struct hwloc_topology_support *support __hwloc_attribute_unused) +{ + hooks->set_thisproc_cpubind = dontset_thisproc_cpubind; + hooks->get_thisproc_cpubind = dontget_thisproc_cpubind; + hooks->set_thisthread_cpubind = dontset_thisthread_cpubind; + hooks->get_thisthread_cpubind = dontget_thisthread_cpubind; + hooks->set_proc_cpubind = dontset_proc_cpubind; + hooks->get_proc_cpubind = dontget_proc_cpubind; +#ifdef hwloc_thread_t + hooks->set_thread_cpubind = dontset_thread_cpubind; + hooks->get_thread_cpubind = dontget_thread_cpubind; +#endif + hooks->get_thisproc_last_cpu_location = dontget_thisproc_cpubind; /* cpubind instead of last_cpu_location is ok */ + hooks->get_thisthread_last_cpu_location = dontget_thisthread_cpubind; /* cpubind instead of last_cpu_location is ok */ + hooks->get_proc_last_cpu_location = dontget_proc_cpubind; /* cpubind instead of last_cpu_location is ok */ + /* TODO: get_thread_last_cpu_location */ + hooks->set_thisproc_membind = dontset_thisproc_membind; + hooks->get_thisproc_membind = dontget_thisproc_membind; + hooks->set_thisthread_membind = dontset_thisthread_membind; + hooks->get_thisthread_membind = dontget_thisthread_membind; + hooks->set_proc_membind = dontset_proc_membind; + hooks->get_proc_membind = dontget_proc_membind; + hooks->set_area_membind = dontset_area_membind; + hooks->get_area_membind = dontget_area_membind; + hooks->get_area_memlocation = dontget_area_memlocation; + hooks->alloc_membind = dontalloc_membind; + hooks->free_membind = dontfree_membind; +} + +void +hwloc_set_native_binding_hooks(struct hwloc_binding_hooks *hooks, struct hwloc_topology_support *support) +{ +# ifdef HWLOC_LINUX_SYS + hwloc_set_linuxfs_hooks(hooks, support); +# endif /* HWLOC_LINUX_SYS */ + +# ifdef HWLOC_BGQ_SYS + hwloc_set_bgq_hooks(hooks, support); +# endif /* HWLOC_BGQ_SYS */ + +# ifdef HWLOC_AIX_SYS + hwloc_set_aix_hooks(hooks, support); +# endif /* HWLOC_AIX_SYS */ + +# ifdef HWLOC_SOLARIS_SYS + hwloc_set_solaris_hooks(hooks, support); +# endif /* HWLOC_SOLARIS_SYS */ + +# ifdef HWLOC_WIN_SYS + hwloc_set_windows_hooks(hooks, support); +# endif /* HWLOC_WIN_SYS */ + +# ifdef HWLOC_DARWIN_SYS + hwloc_set_darwin_hooks(hooks, support); +# endif /* HWLOC_DARWIN_SYS */ + +# ifdef HWLOC_FREEBSD_SYS + hwloc_set_freebsd_hooks(hooks, support); +# endif /* HWLOC_FREEBSD_SYS */ + +# ifdef HWLOC_NETBSD_SYS + hwloc_set_netbsd_hooks(hooks, support); +# endif /* HWLOC_NETBSD_SYS */ + +# ifdef HWLOC_HPUX_SYS + hwloc_set_hpux_hooks(hooks, support); +# endif /* HWLOC_HPUX_SYS */ +} + +/* If the represented system is actually not this system, use dummy binding hooks. */ +void +hwloc_set_binding_hooks(struct hwloc_topology *topology) +{ + if (topology->is_thissystem) { + hwloc_set_native_binding_hooks(&topology->binding_hooks, &topology->support); + /* every hook not set above will return ENOSYS */ + } else { + /* not this system, use dummy binding hooks that do nothing (but don't return ENOSYS) */ + hwloc_set_dummy_hooks(&topology->binding_hooks, &topology->support); + + /* Linux has some hooks that also work in this case, but they are not strictly needed yet. */ + } + + /* if not is_thissystem, set_cpubind is fake + * and get_cpubind returns the whole system cpuset, + * so don't report that set/get_cpubind as supported + */ + if (topology->is_thissystem) { +#define DO(which,kind) \ + if (topology->binding_hooks.kind) \ + topology->support.which##bind->kind = 1; + DO(cpu,set_thisproc_cpubind); + DO(cpu,get_thisproc_cpubind); + DO(cpu,set_proc_cpubind); + DO(cpu,get_proc_cpubind); + DO(cpu,set_thisthread_cpubind); + DO(cpu,get_thisthread_cpubind); +#ifdef hwloc_thread_t + DO(cpu,set_thread_cpubind); + DO(cpu,get_thread_cpubind); +#endif + DO(cpu,get_thisproc_last_cpu_location); + DO(cpu,get_proc_last_cpu_location); + DO(cpu,get_thisthread_last_cpu_location); + DO(mem,set_thisproc_membind); + DO(mem,get_thisproc_membind); + DO(mem,set_thisthread_membind); + DO(mem,get_thisthread_membind); + DO(mem,set_proc_membind); + DO(mem,get_proc_membind); + DO(mem,set_area_membind); + DO(mem,get_area_membind); + DO(mem,get_area_memlocation); + DO(mem,alloc_membind); +#undef DO + } +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/bitmap.c b/3rd-party/hwloc-2.7.1/hwloc/bitmap.c new file mode 100644 index 0000000000..cf071edb15 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/bitmap.c @@ -0,0 +1,1717 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009-2011 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc/autogen/config.h" +#include "hwloc.h" +#include "private/misc.h" +#include "private/private.h" +#include "private/debug.h" +#include "hwloc/bitmap.h" + +#include +#include +#include +#include +#include + +/* + * possible improvements: + * - have a way to change the initial allocation size: + * add hwloc_bitmap_set_foo() to changes a global here, + * and make the hwloc core call based on the early number of PUs + * - make HWLOC_BITMAP_PREALLOC_BITS configurable, and detectable + * by parsing /proc/cpuinfo during configure on Linux. + * - preallocate inside the bitmap structure (so that the whole structure is a cacheline for instance) + * and allocate a dedicated array only later when reallocating larger + * - add a bitmap->ulongs_empty_first which guarantees that some first ulongs are empty, + * making tests much faster for big bitmaps since there's no need to look at first ulongs. + * no need for ulongs_empty_first to be exactly the max number of empty ulongs, + * clearing bits that were set earlier isn't very common. + */ + +/* magic number */ +#define HWLOC_BITMAP_MAGIC 0x20091007 + +/* preallocated bits in every bitmap */ +#define HWLOC_BITMAP_PREALLOC_BITS 512 +#define HWLOC_BITMAP_PREALLOC_ULONGS (HWLOC_BITMAP_PREALLOC_BITS/HWLOC_BITS_PER_LONG) + +/* actual opaque type internals */ +struct hwloc_bitmap_s { + unsigned ulongs_count; /* how many ulong bitmasks are valid, >= 1 */ + unsigned ulongs_allocated; /* how many ulong bitmasks are allocated, >= ulongs_count */ + unsigned long *ulongs; + int infinite; /* set to 1 if all bits beyond ulongs are set */ +#ifdef HWLOC_DEBUG + int magic; +#endif +}; + +/* overzealous check in debug-mode, not as powerful as valgrind but still useful */ +#ifdef HWLOC_DEBUG +#define HWLOC__BITMAP_CHECK(set) do { \ + assert((set)->magic == HWLOC_BITMAP_MAGIC); \ + assert((set)->ulongs_count >= 1); \ + assert((set)->ulongs_allocated >= (set)->ulongs_count); \ +} while (0) +#else +#define HWLOC__BITMAP_CHECK(set) +#endif + +/* extract a subset from a set using an index or a cpu */ +#define HWLOC_SUBBITMAP_INDEX(cpu) ((cpu)/(HWLOC_BITS_PER_LONG)) +#define HWLOC_SUBBITMAP_CPU_ULBIT(cpu) ((cpu)%(HWLOC_BITS_PER_LONG)) +/* Read from a bitmap ulong without knowing whether x is valid. + * Writers should make sure that x is valid and modify set->ulongs[x] directly. + */ +#define HWLOC_SUBBITMAP_READULONG(set,x) ((x) < (set)->ulongs_count ? (set)->ulongs[x] : (set)->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO) + +/* predefined subset values */ +#define HWLOC_SUBBITMAP_ZERO 0UL +#define HWLOC_SUBBITMAP_FULL (~0UL) +#define HWLOC_SUBBITMAP_ULBIT(bit) (1UL<<(bit)) +#define HWLOC_SUBBITMAP_CPU(cpu) HWLOC_SUBBITMAP_ULBIT(HWLOC_SUBBITMAP_CPU_ULBIT(cpu)) +#define HWLOC_SUBBITMAP_ULBIT_TO(bit) (HWLOC_SUBBITMAP_FULL>>(HWLOC_BITS_PER_LONG-1-(bit))) +#define HWLOC_SUBBITMAP_ULBIT_FROM(bit) (HWLOC_SUBBITMAP_FULL<<(bit)) +#define HWLOC_SUBBITMAP_ULBIT_FROMTO(begin,end) (HWLOC_SUBBITMAP_ULBIT_TO(end) & HWLOC_SUBBITMAP_ULBIT_FROM(begin)) + +struct hwloc_bitmap_s * hwloc_bitmap_alloc(void) +{ + struct hwloc_bitmap_s * set; + + set = malloc(sizeof(struct hwloc_bitmap_s)); + if (!set) + return NULL; + + set->ulongs_count = 1; + set->ulongs_allocated = HWLOC_BITMAP_PREALLOC_ULONGS; + set->ulongs = malloc(HWLOC_BITMAP_PREALLOC_ULONGS * sizeof(unsigned long)); + if (!set->ulongs) { + free(set); + return NULL; + } + + set->ulongs[0] = HWLOC_SUBBITMAP_ZERO; + set->infinite = 0; +#ifdef HWLOC_DEBUG + set->magic = HWLOC_BITMAP_MAGIC; +#endif + return set; +} + +struct hwloc_bitmap_s * hwloc_bitmap_alloc_full(void) +{ + struct hwloc_bitmap_s * set = hwloc_bitmap_alloc(); + if (set) { + set->infinite = 1; + set->ulongs[0] = HWLOC_SUBBITMAP_FULL; + } + return set; +} + +void hwloc_bitmap_free(struct hwloc_bitmap_s * set) +{ + if (!set) + return; + + HWLOC__BITMAP_CHECK(set); +#ifdef HWLOC_DEBUG + set->magic = 0; +#endif + + free(set->ulongs); + free(set); +} + +/* enlarge until it contains at least needed_count ulongs. + */ +static int +hwloc_bitmap_enlarge_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) __hwloc_attribute_warn_unused_result; +static int +hwloc_bitmap_enlarge_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) +{ + unsigned tmp = 1U << hwloc_flsl((unsigned long) needed_count - 1); + if (tmp > set->ulongs_allocated) { + unsigned long *tmpulongs; + tmpulongs = realloc(set->ulongs, tmp * sizeof(unsigned long)); + if (!tmpulongs) + return -1; + set->ulongs = tmpulongs; + set->ulongs_allocated = tmp; + } + return 0; +} + +/* enlarge until it contains at least needed_count ulongs, + * and update new ulongs according to the infinite field. + */ +static int +hwloc_bitmap_realloc_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) __hwloc_attribute_warn_unused_result; +static int +hwloc_bitmap_realloc_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) +{ + unsigned i; + + HWLOC__BITMAP_CHECK(set); + + if (needed_count <= set->ulongs_count) + return 0; + + /* realloc larger if needed */ + if (hwloc_bitmap_enlarge_by_ulongs(set, needed_count) < 0) + return -1; + + /* fill the newly allocated subset depending on the infinite flag */ + for(i=set->ulongs_count; iulongs[i] = set->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO; + set->ulongs_count = needed_count; + return 0; +} + +/* realloc until it contains at least cpu+1 bits */ +#define hwloc_bitmap_realloc_by_cpu_index(set, cpu) hwloc_bitmap_realloc_by_ulongs(set, ((cpu)/HWLOC_BITS_PER_LONG)+1) + +/* reset a bitmap to exactely the needed size. + * the caller must reinitialize all ulongs and the infinite flag later. + */ +static int +hwloc_bitmap_reset_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) __hwloc_attribute_warn_unused_result; +static int +hwloc_bitmap_reset_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) +{ + if (hwloc_bitmap_enlarge_by_ulongs(set, needed_count)) + return -1; + set->ulongs_count = needed_count; + return 0; +} + +/* reset until it contains exactly cpu+1 bits (roundup to a ulong). + * the caller must reinitialize all ulongs and the infinite flag later. + */ +#define hwloc_bitmap_reset_by_cpu_index(set, cpu) hwloc_bitmap_reset_by_ulongs(set, ((cpu)/HWLOC_BITS_PER_LONG)+1) + +struct hwloc_bitmap_s * hwloc_bitmap_tma_dup(struct hwloc_tma *tma, const struct hwloc_bitmap_s * old) +{ + struct hwloc_bitmap_s * new; + + if (!old) + return NULL; + + HWLOC__BITMAP_CHECK(old); + + new = hwloc_tma_malloc(tma, sizeof(struct hwloc_bitmap_s)); + if (!new) + return NULL; + + new->ulongs = hwloc_tma_malloc(tma, old->ulongs_allocated * sizeof(unsigned long)); + if (!new->ulongs) { + free(new); + return NULL; + } + new->ulongs_allocated = old->ulongs_allocated; + new->ulongs_count = old->ulongs_count; + memcpy(new->ulongs, old->ulongs, new->ulongs_count * sizeof(unsigned long)); + new->infinite = old->infinite; +#ifdef HWLOC_DEBUG + new->magic = HWLOC_BITMAP_MAGIC; +#endif + return new; +} + +struct hwloc_bitmap_s * hwloc_bitmap_dup(const struct hwloc_bitmap_s * old) +{ + return hwloc_bitmap_tma_dup(NULL, old); +} + +int hwloc_bitmap_copy(struct hwloc_bitmap_s * dst, const struct hwloc_bitmap_s * src) +{ + HWLOC__BITMAP_CHECK(dst); + HWLOC__BITMAP_CHECK(src); + + if (hwloc_bitmap_reset_by_ulongs(dst, src->ulongs_count) < 0) + return -1; + + memcpy(dst->ulongs, src->ulongs, src->ulongs_count * sizeof(unsigned long)); + dst->infinite = src->infinite; + return 0; +} + +/* Strings always use 32bit groups */ +#define HWLOC_PRIxSUBBITMAP "%08lx" +#define HWLOC_BITMAP_SUBSTRING_SIZE 32 +#define HWLOC_BITMAP_SUBSTRING_LENGTH (HWLOC_BITMAP_SUBSTRING_SIZE/4) +#define HWLOC_BITMAP_STRING_PER_LONG (HWLOC_BITS_PER_LONG/HWLOC_BITMAP_SUBSTRING_SIZE) + +int hwloc_bitmap_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) +{ + ssize_t size = buflen; + char *tmp = buf; + int res, ret = 0; + int needcomma = 0; + int i; + unsigned long accum = 0; + int accumed = 0; +#if HWLOC_BITS_PER_LONG == HWLOC_BITMAP_SUBSTRING_SIZE + const unsigned long accum_mask = ~0UL; +#else /* HWLOC_BITS_PER_LONG != HWLOC_BITMAP_SUBSTRING_SIZE */ + const unsigned long accum_mask = ((1UL << HWLOC_BITMAP_SUBSTRING_SIZE) - 1) << (HWLOC_BITS_PER_LONG - HWLOC_BITMAP_SUBSTRING_SIZE); +#endif /* HWLOC_BITS_PER_LONG != HWLOC_BITMAP_SUBSTRING_SIZE */ + + HWLOC__BITMAP_CHECK(set); + + /* mark the end in case we do nothing later */ + if (buflen > 0) + tmp[0] = '\0'; + + if (set->infinite) { + res = hwloc_snprintf(tmp, size, "0xf...f"); + needcomma = 1; + if (res < 0) + return -1; + ret += res; + if (res >= size) + res = size>0 ? (int)size - 1 : 0; + tmp += res; + size -= res; + } + + i=(int) set->ulongs_count-1; + + if (set->infinite) { + /* ignore starting FULL since we have 0xf...f already */ + while (i>=0 && set->ulongs[i] == HWLOC_SUBBITMAP_FULL) + i--; + } else { + /* ignore starting ZERO except the last one */ + while (i>=0 && set->ulongs[i] == HWLOC_SUBBITMAP_ZERO) + i--; + } + + while (i>=0 || accumed) { + /* Refill accumulator */ + if (!accumed) { + accum = set->ulongs[i--]; + accumed = HWLOC_BITS_PER_LONG; + } + + if (accum & accum_mask) { + /* print the whole subset if not empty */ + res = hwloc_snprintf(tmp, size, needcomma ? ",0x" HWLOC_PRIxSUBBITMAP : "0x" HWLOC_PRIxSUBBITMAP, + (accum & accum_mask) >> (HWLOC_BITS_PER_LONG - HWLOC_BITMAP_SUBSTRING_SIZE)); + needcomma = 1; + } else if (i == -1 && accumed == HWLOC_BITMAP_SUBSTRING_SIZE) { + /* print a single 0 to mark the last subset */ + res = hwloc_snprintf(tmp, size, needcomma ? ",0x0" : "0x0"); + } else if (needcomma) { + res = hwloc_snprintf(tmp, size, ","); + } else { + res = 0; + } + if (res < 0) + return -1; + ret += res; + +#if HWLOC_BITS_PER_LONG == HWLOC_BITMAP_SUBSTRING_SIZE + accum = 0; + accumed = 0; +#else + accum <<= HWLOC_BITMAP_SUBSTRING_SIZE; + accumed -= HWLOC_BITMAP_SUBSTRING_SIZE; +#endif + + if (res >= size) + res = size>0 ? (int)size - 1 : 0; + + tmp += res; + size -= res; + } + + /* if didn't display anything, display 0x0 */ + if (!ret) { + res = hwloc_snprintf(tmp, size, "0x0"); + if (res < 0) + return -1; + ret += res; + } + + return ret; +} + +int hwloc_bitmap_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) +{ + int len; + char *buf; + + HWLOC__BITMAP_CHECK(set); + + len = hwloc_bitmap_snprintf(NULL, 0, set); + buf = malloc(len+1); + if (!buf) + return -1; + *strp = buf; + return hwloc_bitmap_snprintf(buf, len+1, set); +} + +int hwloc_bitmap_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) +{ + const char * current = string; + unsigned long accum = 0; + int count=0; + int infinite = 0; + + /* count how many substrings there are */ + count++; + while ((current = strchr(current+1, ',')) != NULL) + count++; + + current = string; + if (!strncmp("0xf...f", current, 7)) { + current += 7; + if (*current != ',') { + /* special case for infinite/full bitmap */ + hwloc_bitmap_fill(set); + return 0; + } + current++; + infinite = 1; + count--; + } + + if (hwloc_bitmap_reset_by_ulongs(set, (count + HWLOC_BITMAP_STRING_PER_LONG - 1) / HWLOC_BITMAP_STRING_PER_LONG) < 0) + return -1; + set->infinite = 0; + + while (*current != '\0') { + unsigned long val; + char *next; + val = strtoul(current, &next, 16); + + assert(count > 0); + count--; + + accum |= (val << ((count * HWLOC_BITMAP_SUBSTRING_SIZE) % HWLOC_BITS_PER_LONG)); + if (!(count % HWLOC_BITMAP_STRING_PER_LONG)) { + set->ulongs[count / HWLOC_BITMAP_STRING_PER_LONG] = accum; + accum = 0; + } + + if (*next != ',') { + if (*next || count > 0) + goto failed; + else + break; + } + current = (const char*) next+1; + } + + set->infinite = infinite; /* set at the end, to avoid spurious realloc with filled new ulongs */ + + return 0; + + failed: + /* failure to parse */ + hwloc_bitmap_zero(set); + return -1; +} + +int hwloc_bitmap_list_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) +{ + int prev = -1; + ssize_t size = buflen; + char *tmp = buf; + int res, ret = 0; + int needcomma = 0; + + HWLOC__BITMAP_CHECK(set); + + /* mark the end in case we do nothing later */ + if (buflen > 0) + tmp[0] = '\0'; + + while (1) { + int begin, end; + + begin = hwloc_bitmap_next(set, prev); + if (begin == -1) + break; + end = hwloc_bitmap_next_unset(set, begin); + + if (end == begin+1) { + res = hwloc_snprintf(tmp, size, needcomma ? ",%d" : "%d", begin); + } else if (end == -1) { + res = hwloc_snprintf(tmp, size, needcomma ? ",%d-" : "%d-", begin); + } else { + res = hwloc_snprintf(tmp, size, needcomma ? ",%d-%d" : "%d-%d", begin, end-1); + } + if (res < 0) + return -1; + ret += res; + + if (res >= size) + res = size>0 ? (int)size - 1 : 0; + + tmp += res; + size -= res; + needcomma = 1; + + if (end == -1) + break; + else + prev = end - 1; + } + + return ret; +} + +int hwloc_bitmap_list_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) +{ + int len; + char *buf; + + HWLOC__BITMAP_CHECK(set); + + len = hwloc_bitmap_list_snprintf(NULL, 0, set); + buf = malloc(len+1); + if (!buf) + return -1; + *strp = buf; + return hwloc_bitmap_list_snprintf(buf, len+1, set); +} + +int hwloc_bitmap_list_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) +{ + const char * current = string; + char *next; + long begin = -1, val; + + hwloc_bitmap_zero(set); + + while (*current != '\0') { + + /* ignore empty ranges */ + while (*current == ',' || *current == ' ') + current++; + + val = strtoul(current, &next, 0); + /* make sure we got at least one digit */ + if (next == current) + goto failed; + + if (begin != -1) { + /* finishing a range */ + if (hwloc_bitmap_set_range(set, begin, val) < 0) + goto failed; + begin = -1; + + } else if (*next == '-') { + /* starting a new range */ + if (*(next+1) == '\0') { + /* infinite range */ + if (hwloc_bitmap_set_range(set, val, -1) < 0) + goto failed; + break; + } else { + /* normal range */ + begin = val; + } + + } else if (*next == ',' || *next == ' ' || *next == '\0') { + /* single digit */ + hwloc_bitmap_set(set, val); + } + + if (*next == '\0') + break; + current = next+1; + } + + return 0; + + failed: + /* failure to parse */ + hwloc_bitmap_zero(set); + return -1; +} + +int hwloc_bitmap_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) +{ + ssize_t size = buflen; + char *tmp = buf; + int res, ret = 0; + int started = 0; + int i; + + HWLOC__BITMAP_CHECK(set); + + /* mark the end in case we do nothing later */ + if (buflen > 0) + tmp[0] = '\0'; + + if (set->infinite) { + res = hwloc_snprintf(tmp, size, "0xf...f"); + started = 1; + if (res < 0) + return -1; + ret += res; + if (res >= size) + res = size>0 ? (int)size - 1 : 0; + tmp += res; + size -= res; + } + + i=set->ulongs_count-1; + + if (set->infinite) { + /* ignore starting FULL since we have 0xf...f already */ + while (i>=0 && set->ulongs[i] == HWLOC_SUBBITMAP_FULL) + i--; + } else { + /* ignore starting ZERO except the last one */ + while (i>=1 && set->ulongs[i] == HWLOC_SUBBITMAP_ZERO) + i--; + } + + while (i>=0) { + unsigned long val = set->ulongs[i--]; + if (started) { + /* print the whole subset */ +#if HWLOC_BITS_PER_LONG == 64 + res = hwloc_snprintf(tmp, size, "%016lx", val); +#else + res = hwloc_snprintf(tmp, size, "%08lx", val); +#endif + } else if (val || i == -1) { + res = hwloc_snprintf(tmp, size, "0x%lx", val); + started = 1; + } else { + res = 0; + } + if (res < 0) + return -1; + ret += res; + if (res >= size) + res = size>0 ? (int)size - 1 : 0; + tmp += res; + size -= res; + } + + /* if didn't display anything, display 0x0 */ + if (!ret) { + res = hwloc_snprintf(tmp, size, "0x0"); + if (res < 0) + return -1; + ret += res; + } + + return ret; +} + +int hwloc_bitmap_taskset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) +{ + int len; + char *buf; + + HWLOC__BITMAP_CHECK(set); + + len = hwloc_bitmap_taskset_snprintf(NULL, 0, set); + buf = malloc(len+1); + if (!buf) + return -1; + *strp = buf; + return hwloc_bitmap_taskset_snprintf(buf, len+1, set); +} + +int hwloc_bitmap_taskset_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) +{ + const char * current = string; + int chars; + int count; + int infinite = 0; + + if (!strncmp("0xf...f", current, 7)) { + /* infinite bitmap */ + infinite = 1; + current += 7; + if (*current == '\0') { + /* special case for infinite/full bitmap */ + hwloc_bitmap_fill(set); + return 0; + } + } else { + /* finite bitmap */ + if (!strncmp("0x", current, 2)) + current += 2; + if (*current == '\0') { + /* special case for empty bitmap */ + hwloc_bitmap_zero(set); + return 0; + } + } + /* we know there are other characters now */ + + chars = (int)strlen(current); + count = (chars * 4 + HWLOC_BITS_PER_LONG - 1) / HWLOC_BITS_PER_LONG; + + if (hwloc_bitmap_reset_by_ulongs(set, count) < 0) + return -1; + set->infinite = 0; + + while (*current != '\0') { + int tmpchars; + char ustr[17]; + unsigned long val; + char *next; + + tmpchars = chars % (HWLOC_BITS_PER_LONG/4); + if (!tmpchars) + tmpchars = (HWLOC_BITS_PER_LONG/4); + + memcpy(ustr, current, tmpchars); + ustr[tmpchars] = '\0'; + val = strtoul(ustr, &next, 16); + if (*next != '\0') + goto failed; + + set->ulongs[count-1] = val; + + current += tmpchars; + chars -= tmpchars; + count--; + } + + set->infinite = infinite; /* set at the end, to avoid spurious realloc with filled new ulongs */ + + return 0; + + failed: + /* failure to parse */ + hwloc_bitmap_zero(set); + return -1; +} + +static void hwloc_bitmap__zero(struct hwloc_bitmap_s *set) +{ + unsigned i; + for(i=0; iulongs_count; i++) + set->ulongs[i] = HWLOC_SUBBITMAP_ZERO; + set->infinite = 0; +} + +void hwloc_bitmap_zero(struct hwloc_bitmap_s * set) +{ + HWLOC__BITMAP_CHECK(set); + + HWLOC_BUILD_ASSERT(HWLOC_BITMAP_PREALLOC_ULONGS >= 1); + if (hwloc_bitmap_reset_by_ulongs(set, 1) < 0) { + /* cannot fail since we preallocate some ulongs. + * if we ever preallocate nothing, we'll reset to 0 ulongs. + */ + } + hwloc_bitmap__zero(set); +} + +static void hwloc_bitmap__fill(struct hwloc_bitmap_s * set) +{ + unsigned i; + for(i=0; iulongs_count; i++) + set->ulongs[i] = HWLOC_SUBBITMAP_FULL; + set->infinite = 1; +} + +void hwloc_bitmap_fill(struct hwloc_bitmap_s * set) +{ + HWLOC__BITMAP_CHECK(set); + + HWLOC_BUILD_ASSERT(HWLOC_BITMAP_PREALLOC_ULONGS >= 1); + if (hwloc_bitmap_reset_by_ulongs(set, 1) < 0) { + /* cannot fail since we pre-allocate some ulongs. + * if we ever pre-allocate nothing, we'll reset to 0 ulongs. + */ + } + hwloc_bitmap__fill(set); +} + +int hwloc_bitmap_from_ulong(struct hwloc_bitmap_s *set, unsigned long mask) +{ + HWLOC__BITMAP_CHECK(set); + + HWLOC_BUILD_ASSERT(HWLOC_BITMAP_PREALLOC_ULONGS >= 1); + if (hwloc_bitmap_reset_by_ulongs(set, 1) < 0) { + /* cannot fail since we pre-allocate some ulongs. + * if ever pre-allocate nothing, we may have to return a failure. + */ + } + set->ulongs[0] = mask; /* there's always at least one ulong allocated */ + set->infinite = 0; + return 0; +} + +int hwloc_bitmap_from_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask) +{ + unsigned j; + + HWLOC__BITMAP_CHECK(set); + + if (hwloc_bitmap_reset_by_ulongs(set, i+1) < 0) + return -1; + + set->ulongs[i] = mask; + for(j=0; julongs[j] = HWLOC_SUBBITMAP_ZERO; + set->infinite = 0; + return 0; +} + +int hwloc_bitmap_from_ulongs(struct hwloc_bitmap_s *set, unsigned nr, const unsigned long *masks) +{ + unsigned j; + + HWLOC__BITMAP_CHECK(set); + + if (hwloc_bitmap_reset_by_ulongs(set, nr) < 0) + return -1; + + for(j=0; julongs[j] = masks[j]; + set->infinite = 0; + return 0; +} + +unsigned long hwloc_bitmap_to_ulong(const struct hwloc_bitmap_s *set) +{ + HWLOC__BITMAP_CHECK(set); + + return set->ulongs[0]; /* there's always at least one ulong allocated */ +} + +unsigned long hwloc_bitmap_to_ith_ulong(const struct hwloc_bitmap_s *set, unsigned i) +{ + HWLOC__BITMAP_CHECK(set); + + return HWLOC_SUBBITMAP_READULONG(set, i); +} + +int hwloc_bitmap_to_ulongs(const struct hwloc_bitmap_s *set, unsigned nr, unsigned long *masks) +{ + unsigned j; + + HWLOC__BITMAP_CHECK(set); + + for(j=0; jinfinite) + return -1; + + last = hwloc_bitmap_last(set); + return (last + HWLOC_BITS_PER_LONG)/HWLOC_BITS_PER_LONG; +} + +int hwloc_bitmap_only(struct hwloc_bitmap_s * set, unsigned cpu) +{ + unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); + + HWLOC__BITMAP_CHECK(set); + + if (hwloc_bitmap_reset_by_cpu_index(set, cpu) < 0) + return -1; + + hwloc_bitmap__zero(set); + set->ulongs[index_] |= HWLOC_SUBBITMAP_CPU(cpu); + return 0; +} + +int hwloc_bitmap_allbut(struct hwloc_bitmap_s * set, unsigned cpu) +{ + unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); + + HWLOC__BITMAP_CHECK(set); + + if (hwloc_bitmap_reset_by_cpu_index(set, cpu) < 0) + return -1; + + hwloc_bitmap__fill(set); + set->ulongs[index_] &= ~HWLOC_SUBBITMAP_CPU(cpu); + return 0; +} + +int hwloc_bitmap_set(struct hwloc_bitmap_s * set, unsigned cpu) +{ + unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); + + HWLOC__BITMAP_CHECK(set); + + /* nothing to do if setting inside the infinite part of the bitmap */ + if (set->infinite && cpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) + return 0; + + if (hwloc_bitmap_realloc_by_cpu_index(set, cpu) < 0) + return -1; + + set->ulongs[index_] |= HWLOC_SUBBITMAP_CPU(cpu); + return 0; +} + +int hwloc_bitmap_set_range(struct hwloc_bitmap_s * set, unsigned begincpu, int _endcpu) +{ + unsigned i; + unsigned beginset,endset; + unsigned endcpu = (unsigned) _endcpu; + + HWLOC__BITMAP_CHECK(set); + + if (endcpu < begincpu) + return 0; + if (set->infinite && begincpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) + /* setting only in the already-set infinite part, nothing to do */ + return 0; + + if (_endcpu == -1) { + /* infinite range */ + + /* make sure we can play with the ulong that contains begincpu */ + if (hwloc_bitmap_realloc_by_cpu_index(set, begincpu) < 0) + return -1; + + /* update the ulong that contains begincpu */ + beginset = HWLOC_SUBBITMAP_INDEX(begincpu); + set->ulongs[beginset] |= HWLOC_SUBBITMAP_ULBIT_FROM(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu)); + /* set ulongs after begincpu if any already allocated */ + for(i=beginset+1; iulongs_count; i++) + set->ulongs[i] = HWLOC_SUBBITMAP_FULL; + /* mark the infinity as set */ + set->infinite = 1; + } else { + /* finite range */ + + /* ignore the part of the range that overlaps with the already-set infinite part */ + if (set->infinite && endcpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) + endcpu = set->ulongs_count * HWLOC_BITS_PER_LONG - 1; + /* make sure we can play with the ulongs that contain begincpu and endcpu */ + if (hwloc_bitmap_realloc_by_cpu_index(set, endcpu) < 0) + return -1; + + /* update first and last ulongs */ + beginset = HWLOC_SUBBITMAP_INDEX(begincpu); + endset = HWLOC_SUBBITMAP_INDEX(endcpu); + if (beginset == endset) { + set->ulongs[beginset] |= HWLOC_SUBBITMAP_ULBIT_FROMTO(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu), HWLOC_SUBBITMAP_CPU_ULBIT(endcpu)); + } else { + set->ulongs[beginset] |= HWLOC_SUBBITMAP_ULBIT_FROM(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu)); + set->ulongs[endset] |= HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(endcpu)); + } + /* set ulongs in the middle of the range */ + for(i=beginset+1; iulongs[i] = HWLOC_SUBBITMAP_FULL; + } + + return 0; +} + +int hwloc_bitmap_set_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask) +{ + HWLOC__BITMAP_CHECK(set); + + if (hwloc_bitmap_realloc_by_ulongs(set, i+1) < 0) + return -1; + + set->ulongs[i] = mask; + return 0; +} + +int hwloc_bitmap_clr(struct hwloc_bitmap_s * set, unsigned cpu) +{ + unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); + + HWLOC__BITMAP_CHECK(set); + + /* nothing to do if clearing inside the infinitely-unset part of the bitmap */ + if (!set->infinite && cpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) + return 0; + + if (hwloc_bitmap_realloc_by_cpu_index(set, cpu) < 0) + return -1; + + set->ulongs[index_] &= ~HWLOC_SUBBITMAP_CPU(cpu); + return 0; +} + +int hwloc_bitmap_clr_range(struct hwloc_bitmap_s * set, unsigned begincpu, int _endcpu) +{ + unsigned i; + unsigned beginset,endset; + unsigned endcpu = (unsigned) _endcpu; + + HWLOC__BITMAP_CHECK(set); + + if (endcpu < begincpu) + return 0; + + if (!set->infinite && begincpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) + /* clearing only in the already-unset infinite part, nothing to do */ + return 0; + + if (_endcpu == -1) { + /* infinite range */ + + /* make sure we can play with the ulong that contains begincpu */ + if (hwloc_bitmap_realloc_by_cpu_index(set, begincpu) < 0) + return -1; + + /* update the ulong that contains begincpu */ + beginset = HWLOC_SUBBITMAP_INDEX(begincpu); + set->ulongs[beginset] &= ~HWLOC_SUBBITMAP_ULBIT_FROM(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu)); + /* clear ulong after begincpu if any already allocated */ + for(i=beginset+1; iulongs_count; i++) + set->ulongs[i] = HWLOC_SUBBITMAP_ZERO; + /* mark the infinity as unset */ + set->infinite = 0; + } else { + /* finite range */ + + /* ignore the part of the range that overlaps with the already-unset infinite part */ + if (!set->infinite && endcpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) + endcpu = set->ulongs_count * HWLOC_BITS_PER_LONG - 1; + /* make sure we can play with the ulongs that contain begincpu and endcpu */ + if (hwloc_bitmap_realloc_by_cpu_index(set, endcpu) < 0) + return -1; + + /* update first and last ulongs */ + beginset = HWLOC_SUBBITMAP_INDEX(begincpu); + endset = HWLOC_SUBBITMAP_INDEX(endcpu); + if (beginset == endset) { + set->ulongs[beginset] &= ~HWLOC_SUBBITMAP_ULBIT_FROMTO(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu), HWLOC_SUBBITMAP_CPU_ULBIT(endcpu)); + } else { + set->ulongs[beginset] &= ~HWLOC_SUBBITMAP_ULBIT_FROM(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu)); + set->ulongs[endset] &= ~HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(endcpu)); + } + /* clear ulongs in the middle of the range */ + for(i=beginset+1; iulongs[i] = HWLOC_SUBBITMAP_ZERO; + } + + return 0; +} + +int hwloc_bitmap_isset(const struct hwloc_bitmap_s * set, unsigned cpu) +{ + unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); + + HWLOC__BITMAP_CHECK(set); + + return (HWLOC_SUBBITMAP_READULONG(set, index_) & HWLOC_SUBBITMAP_CPU(cpu)) != 0; +} + +int hwloc_bitmap_iszero(const struct hwloc_bitmap_s *set) +{ + unsigned i; + + HWLOC__BITMAP_CHECK(set); + + if (set->infinite) + return 0; + for(i=0; iulongs_count; i++) + if (set->ulongs[i] != HWLOC_SUBBITMAP_ZERO) + return 0; + return 1; +} + +int hwloc_bitmap_isfull(const struct hwloc_bitmap_s *set) +{ + unsigned i; + + HWLOC__BITMAP_CHECK(set); + + if (!set->infinite) + return 0; + for(i=0; iulongs_count; i++) + if (set->ulongs[i] != HWLOC_SUBBITMAP_FULL) + return 0; + return 1; +} + +int hwloc_bitmap_isequal (const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) +{ + unsigned count1 = set1->ulongs_count; + unsigned count2 = set2->ulongs_count; + unsigned min_count = count1 < count2 ? count1 : count2; + unsigned i; + + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + for(i=0; iulongs[i] != set2->ulongs[i]) + return 0; + + if (count1 != count2) { + unsigned long w1 = set1->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO; + unsigned long w2 = set2->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO; + for(i=min_count; iulongs[i] != w2) + return 0; + } + for(i=min_count; iulongs[i] != w1) + return 0; + } + } + + if (set1->infinite != set2->infinite) + return 0; + + return 1; +} + +int hwloc_bitmap_intersects (const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) +{ + unsigned count1 = set1->ulongs_count; + unsigned count2 = set2->ulongs_count; + unsigned min_count = count1 < count2 ? count1 : count2; + unsigned i; + + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + for(i=0; iulongs[i] & set2->ulongs[i]) + return 1; + + if (count1 != count2) { + if (set2->infinite) { + for(i=min_count; iulongs_count; i++) + if (set1->ulongs[i]) + return 1; + } + if (set1->infinite) { + for(i=min_count; iulongs_count; i++) + if (set2->ulongs[i]) + return 1; + } + } + + if (set1->infinite && set2->infinite) + return 1; + + return 0; +} + +int hwloc_bitmap_isincluded (const struct hwloc_bitmap_s *sub_set, const struct hwloc_bitmap_s *super_set) +{ + unsigned super_count = super_set->ulongs_count; + unsigned sub_count = sub_set->ulongs_count; + unsigned min_count = super_count < sub_count ? super_count : sub_count; + unsigned i; + + HWLOC__BITMAP_CHECK(sub_set); + HWLOC__BITMAP_CHECK(super_set); + + for(i=0; iulongs[i] != (super_set->ulongs[i] | sub_set->ulongs[i])) + return 0; + + if (super_count != sub_count) { + if (!super_set->infinite) + for(i=min_count; iulongs[i]) + return 0; + if (sub_set->infinite) + for(i=min_count; iulongs[i] != HWLOC_SUBBITMAP_FULL) + return 0; + } + + if (sub_set->infinite && !super_set->infinite) + return 0; + + return 1; +} + +int hwloc_bitmap_or (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) +{ + /* cache counts so that we can reset res even if it's also set1 or set2 */ + unsigned count1 = set1->ulongs_count; + unsigned count2 = set2->ulongs_count; + unsigned max_count = count1 > count2 ? count1 : count2; + unsigned min_count = count1 + count2 - max_count; + unsigned i; + + HWLOC__BITMAP_CHECK(res); + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + if (hwloc_bitmap_reset_by_ulongs(res, max_count) < 0) + return -1; + + for(i=0; iulongs[i] = set1->ulongs[i] | set2->ulongs[i]; + + if (count1 != count2) { + if (min_count < count1) { + if (set2->infinite) { + res->ulongs_count = min_count; + } else { + for(i=min_count; iulongs[i] = set1->ulongs[i]; + } + } else { + if (set1->infinite) { + res->ulongs_count = min_count; + } else { + for(i=min_count; iulongs[i] = set2->ulongs[i]; + } + } + } + + res->infinite = set1->infinite || set2->infinite; + return 0; +} + +int hwloc_bitmap_and (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) +{ + /* cache counts so that we can reset res even if it's also set1 or set2 */ + unsigned count1 = set1->ulongs_count; + unsigned count2 = set2->ulongs_count; + unsigned max_count = count1 > count2 ? count1 : count2; + unsigned min_count = count1 + count2 - max_count; + unsigned i; + + HWLOC__BITMAP_CHECK(res); + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + if (hwloc_bitmap_reset_by_ulongs(res, max_count) < 0) + return -1; + + for(i=0; iulongs[i] = set1->ulongs[i] & set2->ulongs[i]; + + if (count1 != count2) { + if (min_count < count1) { + if (set2->infinite) { + for(i=min_count; iulongs[i] = set1->ulongs[i]; + } else { + res->ulongs_count = min_count; + } + } else { + if (set1->infinite) { + for(i=min_count; iulongs[i] = set2->ulongs[i]; + } else { + res->ulongs_count = min_count; + } + } + } + + res->infinite = set1->infinite && set2->infinite; + return 0; +} + +int hwloc_bitmap_andnot (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) +{ + /* cache counts so that we can reset res even if it's also set1 or set2 */ + unsigned count1 = set1->ulongs_count; + unsigned count2 = set2->ulongs_count; + unsigned max_count = count1 > count2 ? count1 : count2; + unsigned min_count = count1 + count2 - max_count; + unsigned i; + + HWLOC__BITMAP_CHECK(res); + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + if (hwloc_bitmap_reset_by_ulongs(res, max_count) < 0) + return -1; + + for(i=0; iulongs[i] = set1->ulongs[i] & ~set2->ulongs[i]; + + if (count1 != count2) { + if (min_count < count1) { + if (!set2->infinite) { + for(i=min_count; iulongs[i] = set1->ulongs[i]; + } else { + res->ulongs_count = min_count; + } + } else { + if (set1->infinite) { + for(i=min_count; iulongs[i] = ~set2->ulongs[i]; + } else { + res->ulongs_count = min_count; + } + } + } + + res->infinite = set1->infinite && !set2->infinite; + return 0; +} + +int hwloc_bitmap_xor (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) +{ + /* cache counts so that we can reset res even if it's also set1 or set2 */ + unsigned count1 = set1->ulongs_count; + unsigned count2 = set2->ulongs_count; + unsigned max_count = count1 > count2 ? count1 : count2; + unsigned min_count = count1 + count2 - max_count; + unsigned i; + + HWLOC__BITMAP_CHECK(res); + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + if (hwloc_bitmap_reset_by_ulongs(res, max_count) < 0) + return -1; + + for(i=0; iulongs[i] = set1->ulongs[i] ^ set2->ulongs[i]; + + if (count1 != count2) { + if (min_count < count1) { + unsigned long w2 = set2->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO; + for(i=min_count; iulongs[i] = set1->ulongs[i] ^ w2; + } else { + unsigned long w1 = set1->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO; + for(i=min_count; iulongs[i] = set2->ulongs[i] ^ w1; + } + } + + res->infinite = (!set1->infinite) != (!set2->infinite); + return 0; +} + +int hwloc_bitmap_not (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set) +{ + unsigned count = set->ulongs_count; + unsigned i; + + HWLOC__BITMAP_CHECK(res); + HWLOC__BITMAP_CHECK(set); + + if (hwloc_bitmap_reset_by_ulongs(res, count) < 0) + return -1; + + for(i=0; iulongs[i] = ~set->ulongs[i]; + + res->infinite = !set->infinite; + return 0; +} + +int hwloc_bitmap_first(const struct hwloc_bitmap_s * set) +{ + unsigned i; + + HWLOC__BITMAP_CHECK(set); + + for(i=0; iulongs_count; i++) { + /* subsets are unsigned longs, use ffsl */ + unsigned long w = set->ulongs[i]; + if (w) + return hwloc_ffsl(w) - 1 + HWLOC_BITS_PER_LONG*i; + } + + if (set->infinite) + return set->ulongs_count * HWLOC_BITS_PER_LONG; + + return -1; +} + +int hwloc_bitmap_first_unset(const struct hwloc_bitmap_s * set) +{ + unsigned i; + + HWLOC__BITMAP_CHECK(set); + + for(i=0; iulongs_count; i++) { + /* subsets are unsigned longs, use ffsl */ + unsigned long w = ~set->ulongs[i]; + if (w) + return hwloc_ffsl(w) - 1 + HWLOC_BITS_PER_LONG*i; + } + + if (!set->infinite) + return set->ulongs_count * HWLOC_BITS_PER_LONG; + + return -1; +} + +int hwloc_bitmap_last(const struct hwloc_bitmap_s * set) +{ + int i; + + HWLOC__BITMAP_CHECK(set); + + if (set->infinite) + return -1; + + for(i=(int)set->ulongs_count-1; i>=0; i--) { + /* subsets are unsigned longs, use flsl */ + unsigned long w = set->ulongs[i]; + if (w) + return hwloc_flsl(w) - 1 + HWLOC_BITS_PER_LONG*i; + } + + return -1; +} + +int hwloc_bitmap_last_unset(const struct hwloc_bitmap_s * set) +{ + int i; + + HWLOC__BITMAP_CHECK(set); + + if (!set->infinite) + return -1; + + for(i=(int)set->ulongs_count-1; i>=0; i--) { + /* subsets are unsigned longs, use flsl */ + unsigned long w = ~set->ulongs[i]; + if (w) + return hwloc_flsl(w) - 1 + HWLOC_BITS_PER_LONG*i; + } + + return -1; +} + +int hwloc_bitmap_next(const struct hwloc_bitmap_s * set, int prev_cpu) +{ + unsigned i = HWLOC_SUBBITMAP_INDEX(prev_cpu + 1); + + HWLOC__BITMAP_CHECK(set); + + if (i >= set->ulongs_count) { + if (set->infinite) + return prev_cpu + 1; + else + return -1; + } + + for(; iulongs_count; i++) { + /* subsets are unsigned longs, use ffsl */ + unsigned long w = set->ulongs[i]; + + /* if the prev cpu is in the same word as the possible next one, + we need to mask out previous cpus */ + if (prev_cpu >= 0 && HWLOC_SUBBITMAP_INDEX((unsigned) prev_cpu) == i) + w &= ~HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(prev_cpu)); + + if (w) + return hwloc_ffsl(w) - 1 + HWLOC_BITS_PER_LONG*i; + } + + if (set->infinite) + return set->ulongs_count * HWLOC_BITS_PER_LONG; + + return -1; +} + +int hwloc_bitmap_next_unset(const struct hwloc_bitmap_s * set, int prev_cpu) +{ + unsigned i = HWLOC_SUBBITMAP_INDEX(prev_cpu + 1); + + HWLOC__BITMAP_CHECK(set); + + if (i >= set->ulongs_count) { + if (!set->infinite) + return prev_cpu + 1; + else + return -1; + } + + for(; iulongs_count; i++) { + /* subsets are unsigned longs, use ffsl */ + unsigned long w = ~set->ulongs[i]; + + /* if the prev cpu is in the same word as the possible next one, + we need to mask out previous cpus */ + if (prev_cpu >= 0 && HWLOC_SUBBITMAP_INDEX((unsigned) prev_cpu) == i) + w &= ~HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(prev_cpu)); + + if (w) + return hwloc_ffsl(w) - 1 + HWLOC_BITS_PER_LONG*i; + } + + if (!set->infinite) + return set->ulongs_count * HWLOC_BITS_PER_LONG; + + return -1; +} + +int hwloc_bitmap_singlify(struct hwloc_bitmap_s * set) +{ + unsigned i; + int found = 0; + + HWLOC__BITMAP_CHECK(set); + + for(i=0; iulongs_count; i++) { + if (found) { + set->ulongs[i] = HWLOC_SUBBITMAP_ZERO; + continue; + } else { + /* subsets are unsigned longs, use ffsl */ + unsigned long w = set->ulongs[i]; + if (w) { + int _ffs = hwloc_ffsl(w); + set->ulongs[i] = HWLOC_SUBBITMAP_CPU(_ffs-1); + found = 1; + } + } + } + + if (set->infinite) { + if (found) { + set->infinite = 0; + } else { + /* set the first non allocated bit */ + unsigned first = set->ulongs_count * HWLOC_BITS_PER_LONG; + set->infinite = 0; /* do not let realloc fill the newly allocated sets */ + return hwloc_bitmap_set(set, first); + } + } + + return 0; +} + +int hwloc_bitmap_compare_first(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) +{ + unsigned count1 = set1->ulongs_count; + unsigned count2 = set2->ulongs_count; + unsigned max_count = count1 > count2 ? count1 : count2; + unsigned min_count = count1 + count2 - max_count; + unsigned i; + + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + for(i=0; iulongs[i]; + unsigned long w2 = set2->ulongs[i]; + if (w1 || w2) { + int _ffs1 = hwloc_ffsl(w1); + int _ffs2 = hwloc_ffsl(w2); + /* if both have a bit set, compare for real */ + if (_ffs1 && _ffs2) + return _ffs1-_ffs2; + /* one is empty, and it is considered higher, so reverse-compare them */ + return _ffs2-_ffs1; + } + } + + if (count1 != count2) { + if (min_count < count2) { + for(i=min_count; iulongs[i]; + if (set1->infinite) + return -!(w2 & 1); + else if (w2) + return 1; + } + } else { + for(i=min_count; iulongs[i]; + if (set2->infinite) + return !(w1 & 1); + else if (w1) + return -1; + } + } + } + + return !!set1->infinite - !!set2->infinite; +} + +int hwloc_bitmap_compare(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) +{ + unsigned count1 = set1->ulongs_count; + unsigned count2 = set2->ulongs_count; + unsigned max_count = count1 > count2 ? count1 : count2; + unsigned min_count = count1 + count2 - max_count; + int i; + + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + if ((!set1->infinite) != (!set2->infinite)) + return !!set1->infinite - !!set2->infinite; + + if (count1 != count2) { + if (min_count < count2) { + unsigned long val1 = set1->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO; + for(i=(int)max_count-1; i>=(int) min_count; i--) { + unsigned long val2 = set2->ulongs[i]; + if (val1 == val2) + continue; + return val1 < val2 ? -1 : 1; + } + } else { + unsigned long val2 = set2->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO; + for(i=(int)max_count-1; i>=(int) min_count; i--) { + unsigned long val1 = set1->ulongs[i]; + if (val1 == val2) + continue; + return val1 < val2 ? -1 : 1; + } + } + } + + for(i=(int)min_count-1; i>=0; i--) { + unsigned long val1 = set1->ulongs[i]; + unsigned long val2 = set2->ulongs[i]; + if (val1 == val2) + continue; + return val1 < val2 ? -1 : 1; + } + + return 0; +} + +int hwloc_bitmap_weight(const struct hwloc_bitmap_s * set) +{ + int weight = 0; + unsigned i; + + HWLOC__BITMAP_CHECK(set); + + if (set->infinite) + return -1; + + for(i=0; iulongs_count; i++) + weight += hwloc_weight_long(set->ulongs[i]); + return weight; +} + +int hwloc_bitmap_compare_inclusion(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) +{ + unsigned max_count = set1->ulongs_count > set2->ulongs_count ? set1->ulongs_count : set2->ulongs_count; + int result = HWLOC_BITMAP_EQUAL; /* means empty sets return equal */ + int empty1 = 1; + int empty2 = 1; + unsigned i; + + HWLOC__BITMAP_CHECK(set1); + HWLOC__BITMAP_CHECK(set2); + + for(i=0; iinfinite) { + if (set2->infinite) { + /* set2 infinite only */ + if (result == HWLOC_BITMAP_CONTAINS) { + if (!empty2) + return HWLOC_BITMAP_INTERSECTS; + result = HWLOC_BITMAP_DIFFERENT; + } else if (result == HWLOC_BITMAP_EQUAL) { + result = HWLOC_BITMAP_INCLUDED; + } + /* no change otherwise */ + } + } else if (!set2->infinite) { + /* set1 infinite only */ + if (result == HWLOC_BITMAP_INCLUDED) { + if (!empty1) + return HWLOC_BITMAP_INTERSECTS; + result = HWLOC_BITMAP_DIFFERENT; + } else if (result == HWLOC_BITMAP_EQUAL) { + result = HWLOC_BITMAP_CONTAINS; + } + /* no change otherwise */ + } else { + /* both infinite */ + if (result == HWLOC_BITMAP_DIFFERENT) + return HWLOC_BITMAP_INTERSECTS; + /* equal/contains/included unchanged */ + } + + return result; +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/components.c b/3rd-party/hwloc-2.7.1/hwloc/components.c new file mode 100644 index 0000000000..81e3116b34 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/components.c @@ -0,0 +1,1091 @@ +/* + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2012 Université Bordeaux + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" +#include "private/xml.h" +#include "private/misc.h" + +#define HWLOC_COMPONENT_STOP_NAME "stop" +#define HWLOC_COMPONENT_EXCLUDE_CHAR '-' +#define HWLOC_COMPONENT_SEPS "," +#define HWLOC_COMPONENT_PHASESEP_CHAR ':' + +/* list of all registered discovery components, sorted by priority, higher priority first. + * noos is last because its priority is 0. + * others' priority is 10. + */ +static struct hwloc_disc_component * hwloc_disc_components = NULL; + +static unsigned hwloc_components_users = 0; /* first one initializes, last ones destroys */ + +static int hwloc_components_verbose = 0; +#ifdef HWLOC_HAVE_PLUGINS +static int hwloc_plugins_verbose = 0; +static const char * hwloc_plugins_blacklist = NULL; +#endif + +/* hwloc_components_mutex serializes: + * - loading/unloading plugins, and modifications of the hwloc_plugins list + * - calls to ltdl, including in hwloc_check_plugin_namespace() + * - registration of components with hwloc_disc_component_register() + * and hwloc_xml_callbacks_register() + */ +#ifdef HWLOC_WIN_SYS +/* Basic mutex on top of InterlockedCompareExchange() on windows, + * Far from perfect, but easy to maintain, and way enough given that this code will never be needed for real. */ +#include +static LONG hwloc_components_mutex = 0; +#define HWLOC_COMPONENTS_LOCK() do { \ + while (InterlockedCompareExchange(&hwloc_components_mutex, 1, 0) != 0) \ + SwitchToThread(); \ +} while (0) +#define HWLOC_COMPONENTS_UNLOCK() do { \ + assert(hwloc_components_mutex == 1); \ + hwloc_components_mutex = 0; \ +} while (0) + +#elif defined HWLOC_HAVE_PTHREAD_MUTEX +/* pthread mutex if available (except on windows) */ +#include +static pthread_mutex_t hwloc_components_mutex = PTHREAD_MUTEX_INITIALIZER; +#define HWLOC_COMPONENTS_LOCK() pthread_mutex_lock(&hwloc_components_mutex) +#define HWLOC_COMPONENTS_UNLOCK() pthread_mutex_unlock(&hwloc_components_mutex) + +#else /* HWLOC_WIN_SYS || HWLOC_HAVE_PTHREAD_MUTEX */ +#error No mutex implementation available +#endif + + +#ifdef HWLOC_HAVE_PLUGINS + +#ifdef HWLOC_HAVE_LTDL +/* ltdl-based plugin load */ +#include +typedef lt_dlhandle hwloc_dlhandle; +#define hwloc_dlinit lt_dlinit +#define hwloc_dlexit lt_dlexit +#define hwloc_dlopenext lt_dlopenext +#define hwloc_dlclose lt_dlclose +#define hwloc_dlerror lt_dlerror +#define hwloc_dlsym lt_dlsym +#define hwloc_dlforeachfile lt_dlforeachfile + +#else /* !HWLOC_HAVE_LTDL */ +/* no-ltdl plugin load relies on less portable libdl */ +#include +typedef void * hwloc_dlhandle; +static __hwloc_inline int hwloc_dlinit(void) { return 0; } +static __hwloc_inline int hwloc_dlexit(void) { return 0; } +#define hwloc_dlclose dlclose +#define hwloc_dlerror dlerror +#define hwloc_dlsym dlsym + +#include +#include +#include +#include + +static hwloc_dlhandle hwloc_dlopenext(const char *_filename) +{ + hwloc_dlhandle handle; + char *filename = NULL; + (void) asprintf(&filename, "%s.so", _filename); + if (!filename) + return NULL; + handle = dlopen(filename, RTLD_NOW|RTLD_LOCAL); + free(filename); + return handle; +} + +static int +hwloc_dlforeachfile(const char *_paths, + int (*func)(const char *filename, void *data), + void *data) +{ + char *paths = NULL, *path; + + paths = strdup(_paths); + if (!paths) + return -1; + + path = paths; + while (*path) { + char *colon; + DIR *dir; + struct dirent *dirent; + + colon = strchr(path, ':'); + if (colon) + *colon = '\0'; + + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Looking under %s\n", path); + + dir = opendir(path); + if (!dir) + goto next; + + while ((dirent = readdir(dir)) != NULL) { + char *abs_name, *suffix; + struct stat stbuf; + int err; + + err = asprintf(&abs_name, "%s/%s", path, dirent->d_name); + if (err < 0) + continue; + + err = stat(abs_name, &stbuf); + if (err < 0) { + free(abs_name); + continue; + } + if (!S_ISREG(stbuf.st_mode)) { + free(abs_name); + continue; + } + + /* Only keep .so files, and remove that suffix to get the component basename */ + suffix = strrchr(abs_name, '.'); + if (!suffix || strcmp(suffix, ".so")) { + free(abs_name); + continue; + } + *suffix = '\0'; + + err = func(abs_name, data); + if (err) { + free(abs_name); + continue; + } + + free(abs_name); + } + + closedir(dir); + + next: + if (!colon) + break; + path = colon+1; + } + + free(paths); + return 0; +} +#endif /* !HWLOC_HAVE_LTDL */ + +/* array of pointers to dynamically loaded plugins */ +static struct hwloc__plugin_desc { + char *name; + struct hwloc_component *component; + char *filename; + hwloc_dlhandle handle; + struct hwloc__plugin_desc *next; +} *hwloc_plugins = NULL; + +static int +hwloc__dlforeach_cb(const char *filename, void *_data __hwloc_attribute_unused) +{ + const char *basename; + hwloc_dlhandle handle; + struct hwloc_component *component; + struct hwloc__plugin_desc *desc, **prevdesc; + char *componentsymbolname; + + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin dlforeach found `%s'\n", filename); + + basename = strrchr(filename, '/'); + if (!basename) + basename = filename; + else + basename++; + + if (hwloc_plugins_blacklist && strstr(hwloc_plugins_blacklist, basename)) { + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin `%s' is blacklisted in the environment\n", basename); + goto out; + } + + /* dlopen and get the component structure */ + handle = hwloc_dlopenext(filename); + if (!handle) { + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Failed to load plugin: %s\n", hwloc_dlerror()); + goto out; + } + + componentsymbolname = malloc(strlen(basename)+10+1); + if (!componentsymbolname) { + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Failed to allocation component `%s' symbol\n", + basename); + goto out_with_handle; + } + sprintf(componentsymbolname, "%s_component", basename); + component = hwloc_dlsym(handle, componentsymbolname); + if (!component) { + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Failed to find component symbol `%s'\n", + componentsymbolname); + free(componentsymbolname); + goto out_with_handle; + } + if (component->abi != HWLOC_COMPONENT_ABI) { + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin symbol ABI %u instead of %d\n", + component->abi, HWLOC_COMPONENT_ABI); + free(componentsymbolname); + goto out_with_handle; + } + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin contains expected symbol `%s'\n", + componentsymbolname); + free(componentsymbolname); + + if (HWLOC_COMPONENT_TYPE_DISC == component->type) { + if (strncmp(basename, "hwloc_", 6)) { + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin name `%s' doesn't match its type DISCOVERY\n", basename); + goto out_with_handle; + } + } else if (HWLOC_COMPONENT_TYPE_XML == component->type) { + if (strncmp(basename, "hwloc_xml_", 10)) { + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin name `%s' doesn't match its type XML\n", basename); + goto out_with_handle; + } + } else { + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin name `%s' has invalid type %u\n", + basename, (unsigned) component->type); + goto out_with_handle; + } + + /* allocate a plugin_desc and queue it */ + desc = malloc(sizeof(*desc)); + if (!desc) + goto out_with_handle; + desc->name = strdup(basename); + desc->filename = strdup(filename); + desc->component = component; + desc->handle = handle; + desc->next = NULL; + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin descriptor `%s' ready\n", basename); + + /* append to the list */ + prevdesc = &hwloc_plugins; + while (*prevdesc) + prevdesc = &((*prevdesc)->next); + *prevdesc = desc; + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Plugin descriptor `%s' queued\n", basename); + return 0; + + out_with_handle: + hwloc_dlclose(handle); + out: + return 0; +} + +static void +hwloc_plugins_exit(void) +{ + struct hwloc__plugin_desc *desc, *next; + + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Closing all plugins\n"); + + desc = hwloc_plugins; + while (desc) { + next = desc->next; + hwloc_dlclose(desc->handle); + free(desc->name); + free(desc->filename); + free(desc); + desc = next; + } + hwloc_plugins = NULL; + + hwloc_dlexit(); +} + +static int +hwloc_plugins_init(void) +{ + const char *verboseenv; + const char *path = HWLOC_PLUGINS_PATH; + const char *env; + int err; + + verboseenv = getenv("HWLOC_PLUGINS_VERBOSE"); + hwloc_plugins_verbose = verboseenv ? atoi(verboseenv) : 0; + + hwloc_plugins_blacklist = getenv("HWLOC_PLUGINS_BLACKLIST"); + + err = hwloc_dlinit(); + if (err) + goto out; + + env = getenv("HWLOC_PLUGINS_PATH"); + if (env) + path = env; + + hwloc_plugins = NULL; + + if (hwloc_plugins_verbose) + fprintf(stderr, "hwloc: Starting plugin dlforeach in %s\n", path); + err = hwloc_dlforeachfile(path, hwloc__dlforeach_cb, NULL); + if (err) + goto out_with_init; + + return 0; + + out_with_init: + hwloc_plugins_exit(); + out: + return -1; +} + +#endif /* HWLOC_HAVE_PLUGINS */ + +static int +hwloc_disc_component_register(struct hwloc_disc_component *component, + const char *filename) +{ + struct hwloc_disc_component **prev; + + /* check that the component name is valid */ + if (!strcmp(component->name, HWLOC_COMPONENT_STOP_NAME)) { + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Cannot register discovery component with reserved name `" HWLOC_COMPONENT_STOP_NAME "'\n"); + return -1; + } + if (strchr(component->name, HWLOC_COMPONENT_EXCLUDE_CHAR) + || strchr(component->name, HWLOC_COMPONENT_PHASESEP_CHAR) + || strcspn(component->name, HWLOC_COMPONENT_SEPS) != strlen(component->name)) { + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Cannot register discovery component with name `%s' containing reserved characters `%c" HWLOC_COMPONENT_SEPS "'\n", + component->name, HWLOC_COMPONENT_EXCLUDE_CHAR); + return -1; + } + + /* check that the component phases are valid */ + if (!component->phases + || (component->phases != HWLOC_DISC_PHASE_GLOBAL + && component->phases & ~(HWLOC_DISC_PHASE_CPU + |HWLOC_DISC_PHASE_MEMORY + |HWLOC_DISC_PHASE_PCI + |HWLOC_DISC_PHASE_IO + |HWLOC_DISC_PHASE_MISC + |HWLOC_DISC_PHASE_ANNOTATE + |HWLOC_DISC_PHASE_TWEAK))) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc: Cannot register discovery component `%s' with invalid phases 0x%x\n", + component->name, component->phases); + return -1; + } + + prev = &hwloc_disc_components; + while (NULL != *prev) { + if (!strcmp((*prev)->name, component->name)) { + /* if two components have the same name, only keep the highest priority one */ + if ((*prev)->priority < component->priority) { + /* drop the existing component */ + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Dropping previously registered discovery component `%s', priority %u lower than new one %u\n", + (*prev)->name, (*prev)->priority, component->priority); + *prev = (*prev)->next; + } else { + /* drop the new one */ + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Ignoring new discovery component `%s', priority %u lower than previously registered one %u\n", + component->name, component->priority, (*prev)->priority); + return -1; + } + } + prev = &((*prev)->next); + } + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Registered discovery component `%s' phases 0x%x with priority %u (%s%s)\n", + component->name, component->phases, component->priority, + filename ? "from plugin " : "statically build", filename ? filename : ""); + + prev = &hwloc_disc_components; + while (NULL != *prev) { + if ((*prev)->priority < component->priority) + break; + prev = &((*prev)->next); + } + component->next = *prev; + *prev = component; + return 0; +} + +#include "static-components.h" + +static void (**hwloc_component_finalize_cbs)(unsigned long); +static unsigned hwloc_component_finalize_cb_count; + +void +hwloc_components_init(void) +{ +#ifdef HWLOC_HAVE_PLUGINS + struct hwloc__plugin_desc *desc; +#endif + const char *verboseenv; + unsigned i; + + HWLOC_COMPONENTS_LOCK(); + assert((unsigned) -1 != hwloc_components_users); + if (0 != hwloc_components_users++) { + HWLOC_COMPONENTS_UNLOCK(); + return; + } + + verboseenv = getenv("HWLOC_COMPONENTS_VERBOSE"); + hwloc_components_verbose = verboseenv ? atoi(verboseenv) : 0; + +#ifdef HWLOC_HAVE_PLUGINS + hwloc_plugins_init(); +#endif + + hwloc_component_finalize_cbs = NULL; + hwloc_component_finalize_cb_count = 0; + /* count the max number of finalize callbacks */ + for(i=0; NULL != hwloc_static_components[i]; i++) + hwloc_component_finalize_cb_count++; +#ifdef HWLOC_HAVE_PLUGINS + for(desc = hwloc_plugins; NULL != desc; desc = desc->next) + hwloc_component_finalize_cb_count++; +#endif + if (hwloc_component_finalize_cb_count) { + hwloc_component_finalize_cbs = calloc(hwloc_component_finalize_cb_count, + sizeof(*hwloc_component_finalize_cbs)); + assert(hwloc_component_finalize_cbs); + /* forget that max number and recompute the real one below */ + hwloc_component_finalize_cb_count = 0; + } + + /* hwloc_static_components is created by configure in static-components.h */ + for(i=0; NULL != hwloc_static_components[i]; i++) { + if (hwloc_static_components[i]->flags) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc: Ignoring static component with invalid flags %lx\n", + hwloc_static_components[i]->flags); + continue; + } + + /* initialize the component */ + if (hwloc_static_components[i]->init && hwloc_static_components[i]->init(0) < 0) { + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Ignoring static component, failed to initialize\n"); + continue; + } + /* queue ->finalize() callback if any */ + if (hwloc_static_components[i]->finalize) + hwloc_component_finalize_cbs[hwloc_component_finalize_cb_count++] = hwloc_static_components[i]->finalize; + + /* register for real now */ + if (HWLOC_COMPONENT_TYPE_DISC == hwloc_static_components[i]->type) + hwloc_disc_component_register(hwloc_static_components[i]->data, NULL); + else if (HWLOC_COMPONENT_TYPE_XML == hwloc_static_components[i]->type) + hwloc_xml_callbacks_register(hwloc_static_components[i]->data); + else + assert(0); + } + + /* dynamic plugins */ +#ifdef HWLOC_HAVE_PLUGINS + for(desc = hwloc_plugins; NULL != desc; desc = desc->next) { + if (desc->component->flags) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc: Ignoring plugin `%s' component with invalid flags %lx\n", + desc->name, desc->component->flags); + continue; + } + + /* initialize the component */ + if (desc->component->init && desc->component->init(0) < 0) { + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Ignoring plugin `%s', failed to initialize\n", desc->name); + continue; + } + /* queue ->finalize() callback if any */ + if (desc->component->finalize) + hwloc_component_finalize_cbs[hwloc_component_finalize_cb_count++] = desc->component->finalize; + + /* register for real now */ + if (HWLOC_COMPONENT_TYPE_DISC == desc->component->type) + hwloc_disc_component_register(desc->component->data, desc->filename); + else if (HWLOC_COMPONENT_TYPE_XML == desc->component->type) + hwloc_xml_callbacks_register(desc->component->data); + else + assert(0); + } +#endif + + HWLOC_COMPONENTS_UNLOCK(); +} + +void +hwloc_topology_components_init(struct hwloc_topology *topology) +{ + topology->nr_blacklisted_components = 0; + topology->blacklisted_components = NULL; + + topology->backends = NULL; + topology->backend_phases = 0; + topology->backend_excluded_phases = 0; +} + +/* look for name among components, ignoring things after `:' */ +static struct hwloc_disc_component * +hwloc_disc_component_find(const char *name, const char **endp) +{ + struct hwloc_disc_component *comp; + size_t length; + const char *end = strchr(name, HWLOC_COMPONENT_PHASESEP_CHAR); + if (end) { + length = end-name; + if (endp) + *endp = end+1; + } else { + length = strlen(name); + if (endp) + *endp = NULL; + } + + comp = hwloc_disc_components; + while (NULL != comp) { + if (!strncmp(name, comp->name, length)) + return comp; + comp = comp->next; + } + return NULL; +} + +static unsigned +hwloc_phases_from_string(const char *s) +{ + if (!s) + return ~0U; + if (s[0]<'0' || s[0]>'9') { + if (!strcasecmp(s, "global")) + return HWLOC_DISC_PHASE_GLOBAL; + else if (!strcasecmp(s, "cpu")) + return HWLOC_DISC_PHASE_CPU; + if (!strcasecmp(s, "memory")) + return HWLOC_DISC_PHASE_MEMORY; + if (!strcasecmp(s, "pci")) + return HWLOC_DISC_PHASE_PCI; + if (!strcasecmp(s, "io")) + return HWLOC_DISC_PHASE_IO; + if (!strcasecmp(s, "misc")) + return HWLOC_DISC_PHASE_MISC; + if (!strcasecmp(s, "annotate")) + return HWLOC_DISC_PHASE_ANNOTATE; + if (!strcasecmp(s, "tweak")) + return HWLOC_DISC_PHASE_TWEAK; + return 0; + } + return (unsigned) strtoul(s, NULL, 0); +} + +static int +hwloc_disc_component_blacklist_one(struct hwloc_topology *topology, + const char *name) +{ + struct hwloc_topology_forced_component_s *blacklisted; + struct hwloc_disc_component *comp; + unsigned phases; + unsigned i; + + if (!strcmp(name, "linuxpci") || !strcmp(name, "linuxio")) { + /* replace linuxpci and linuxio with linux (with IO phases) + * for backward compatibility with pre-v2.0 and v2.0 respectively */ + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Replacing deprecated component `%s' with `linux' IO phases in blacklisting\n", name); + comp = hwloc_disc_component_find("linux", NULL); + phases = HWLOC_DISC_PHASE_PCI | HWLOC_DISC_PHASE_IO | HWLOC_DISC_PHASE_MISC | HWLOC_DISC_PHASE_ANNOTATE; + + } else { + /* normal lookup */ + const char *end; + comp = hwloc_disc_component_find(name, &end); + phases = hwloc_phases_from_string(end); + } + if (!comp) { + errno = EINVAL; + return -1; + } + + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Blacklisting component `%s` phases 0x%x\n", comp->name, phases); + + for(i=0; inr_blacklisted_components; i++) { + if (topology->blacklisted_components[i].component == comp) { + topology->blacklisted_components[i].phases |= phases; + return 0; + } + } + + blacklisted = realloc(topology->blacklisted_components, (topology->nr_blacklisted_components+1)*sizeof(*blacklisted)); + if (!blacklisted) + return -1; + + blacklisted[topology->nr_blacklisted_components].component = comp; + blacklisted[topology->nr_blacklisted_components].phases = phases; + topology->blacklisted_components = blacklisted; + topology->nr_blacklisted_components++; + return 0; +} + +int +hwloc_topology_set_components(struct hwloc_topology *topology, + unsigned long flags, + const char *name) +{ + if (topology->is_loaded) { + errno = EBUSY; + return -1; + } + + if (flags & ~HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST) { + errno = EINVAL; + return -1; + } + + /* this flag is strictly required for now */ + if (flags != HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST) { + errno = EINVAL; + return -1; + } + + if (!strncmp(name, "all", 3) && name[3] == HWLOC_COMPONENT_PHASESEP_CHAR) { + topology->backend_excluded_phases = hwloc_phases_from_string(name+4); + return 0; + } + + return hwloc_disc_component_blacklist_one(topology, name); +} + +/* used by set_xml(), set_synthetic(), ... environment variables, ... to force the first backend */ +int +hwloc_disc_component_force_enable(struct hwloc_topology *topology, + int envvar_forced, + const char *name, + const void *data1, const void *data2, const void *data3) +{ + struct hwloc_disc_component *comp; + struct hwloc_backend *backend; + + if (topology->is_loaded) { + errno = EBUSY; + return -1; + } + + comp = hwloc_disc_component_find(name, NULL); + if (!comp) { + errno = ENOSYS; + return -1; + } + + backend = comp->instantiate(topology, comp, 0U /* force-enabled don't get any phase blacklisting */, + data1, data2, data3); + if (backend) { + int err; + backend->envvar_forced = envvar_forced; + if (topology->backends) + hwloc_backends_disable_all(topology); + err = hwloc_backend_enable(backend); + + if (comp->phases == HWLOC_DISC_PHASE_GLOBAL) { + char *env = getenv("HWLOC_ANNOTATE_GLOBAL_COMPONENTS"); + if (env && atoi(env)) + topology->backend_excluded_phases &= ~HWLOC_DISC_PHASE_ANNOTATE; + } + + return err; + } else + return -1; +} + +static int +hwloc_disc_component_try_enable(struct hwloc_topology *topology, + struct hwloc_disc_component *comp, + int envvar_forced, + unsigned blacklisted_phases) +{ + struct hwloc_backend *backend; + + if (!(comp->phases & ~(topology->backend_excluded_phases | blacklisted_phases))) { + /* all this backend phases are already excluded, exclude the backend entirely */ + if (hwloc_components_verbose) + /* do not warn if envvar_forced since system-wide HWLOC_COMPONENTS must be silently ignored after set_xml() etc. + */ + fprintf(stderr, "hwloc: Excluding discovery component `%s' phases 0x%x, conflicts with excludes 0x%x\n", + comp->name, comp->phases, topology->backend_excluded_phases); + return -1; + } + + backend = comp->instantiate(topology, comp, topology->backend_excluded_phases | blacklisted_phases, + NULL, NULL, NULL); + if (!backend) { + if (hwloc_components_verbose || (envvar_forced && hwloc_hide_errors() < 2)) + fprintf(stderr, "hwloc: Failed to instantiate discovery component `%s'\n", comp->name); + return -1; + } + + backend->phases &= ~blacklisted_phases; + backend->envvar_forced = envvar_forced; + return hwloc_backend_enable(backend); +} + +void +hwloc_disc_components_enable_others(struct hwloc_topology *topology) +{ + struct hwloc_disc_component *comp; + struct hwloc_backend *backend; + int tryall = 1; + const char *_env; + char *env; /* we'll to modify the env value, so duplicate it */ + unsigned i; + + _env = getenv("HWLOC_COMPONENTS"); + env = _env ? strdup(_env) : NULL; + + /* blacklist disabled components */ + if (env) { + char *curenv = env; + size_t s; + + while (*curenv) { + s = strcspn(curenv, HWLOC_COMPONENT_SEPS); + if (s) { + char c; + + if (curenv[0] != HWLOC_COMPONENT_EXCLUDE_CHAR) + goto nextname; + + /* save the last char and replace with \0 */ + c = curenv[s]; + curenv[s] = '\0'; + + /* blacklist it, and just ignore failures to allocate */ + hwloc_disc_component_blacklist_one(topology, curenv+1); + + /* remove that blacklisted name from the string */ + for(i=0; inr_blacklisted_components; i++) + if (comp == topology->blacklisted_components[i].component) { + blacklisted_phases = topology->blacklisted_components[i].phases; + break; + } + if (comp->phases & ~blacklisted_phases) + hwloc_disc_component_try_enable(topology, comp, 1 /* envvar forced */, blacklisted_phases); + } else { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc: Cannot find discovery component `%s'\n", name); + } + + /* restore chars (the second loop below needs env to be unmodified) */ + curenv[s] = c; + } + + curenv += s; + if (*curenv) + /* Skip comma */ + curenv++; + } + } + + /* env is still the same, the above loop didn't modify it */ + + /* now enable remaining components (except the explicitly '-'-listed ones) */ + if (tryall) { + comp = hwloc_disc_components; + while (NULL != comp) { + unsigned blacklisted_phases = 0U; + if (!comp->enabled_by_default) + goto nextcomp; + /* check if this component was blacklisted by the application */ + for(i=0; inr_blacklisted_components; i++) + if (comp == topology->blacklisted_components[i].component) { + blacklisted_phases = topology->blacklisted_components[i].phases; + break; + } + + if (!(comp->phases & ~blacklisted_phases)) { + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Excluding blacklisted discovery component `%s' phases 0x%x\n", + comp->name, comp->phases); + goto nextcomp; + } + + hwloc_disc_component_try_enable(topology, comp, 0 /* defaults, not envvar forced */, blacklisted_phases); +nextcomp: + comp = comp->next; + } + } + + if (hwloc_components_verbose) { + /* print a summary */ + int first = 1; + backend = topology->backends; + fprintf(stderr, "hwloc: Final list of enabled discovery components: "); + while (backend != NULL) { + fprintf(stderr, "%s%s(0x%x)", first ? "" : ",", backend->component->name, backend->phases); + backend = backend->next; + first = 0; + } + fprintf(stderr, "\n"); + } + + free(env); +} + +void +hwloc_components_fini(void) +{ + unsigned i; + + HWLOC_COMPONENTS_LOCK(); + assert(0 != hwloc_components_users); + if (0 != --hwloc_components_users) { + HWLOC_COMPONENTS_UNLOCK(); + return; + } + + for(i=0; icomponent = component; + backend->topology = topology; + /* filter-out component phases that are excluded */ + backend->phases = component->phases & ~topology->backend_excluded_phases; + if (backend->phases != component->phases && hwloc_components_verbose) + fprintf(stderr, "hwloc: Trying discovery component `%s' with phases 0x%x instead of 0x%x\n", + component->name, backend->phases, component->phases); + backend->flags = 0; + backend->discover = NULL; + backend->get_pci_busid_cpuset = NULL; + backend->disable = NULL; + backend->is_thissystem = -1; + backend->next = NULL; + backend->envvar_forced = 0; + return backend; +} + +static void +hwloc_backend_disable(struct hwloc_backend *backend) +{ + if (backend->disable) + backend->disable(backend); + free(backend); +} + +int +hwloc_backend_enable(struct hwloc_backend *backend) +{ + struct hwloc_topology *topology = backend->topology; + struct hwloc_backend **pprev; + + /* check backend flags */ + if (backend->flags) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc: Cannot enable discovery component `%s' phases 0x%x with unknown flags %lx\n", + backend->component->name, backend->component->phases, backend->flags); + return -1; + } + + /* make sure we didn't already enable this backend, we don't want duplicates */ + pprev = &topology->backends; + while (NULL != *pprev) { + if ((*pprev)->component == backend->component) { + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Cannot enable discovery component `%s' phases 0x%x twice\n", + backend->component->name, backend->component->phases); + hwloc_backend_disable(backend); + errno = EBUSY; + return -1; + } + pprev = &((*pprev)->next); + } + + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Enabling discovery component `%s' with phases 0x%x (among 0x%x)\n", + backend->component->name, backend->phases, backend->component->phases); + + /* enqueue at the end */ + pprev = &topology->backends; + while (NULL != *pprev) + pprev = &((*pprev)->next); + backend->next = *pprev; + *pprev = backend; + + topology->backend_phases |= backend->component->phases; + topology->backend_excluded_phases |= backend->component->excluded_phases; + return 0; +} + +void +hwloc_backends_is_thissystem(struct hwloc_topology *topology) +{ + struct hwloc_backend *backend; + const char *local_env; + + /* + * If the application changed the backend with set_foo(), + * it may use set_flags() update the is_thissystem flag here. + * If it changes the backend with environment variables below, + * it may use HWLOC_THISSYSTEM envvar below as well. + */ + + topology->is_thissystem = 1; + + /* apply thissystem from normally-given backends (envvar_forced=0, either set_foo() or defaults) */ + backend = topology->backends; + while (backend != NULL) { + if (backend->envvar_forced == 0 && backend->is_thissystem != -1) { + assert(backend->is_thissystem == 0); + topology->is_thissystem = 0; + } + backend = backend->next; + } + + /* override set_foo() with flags */ + if (topology->flags & HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM) + topology->is_thissystem = 1; + + /* now apply envvar-forced backend (envvar_forced=1) */ + backend = topology->backends; + while (backend != NULL) { + if (backend->envvar_forced == 1 && backend->is_thissystem != -1) { + assert(backend->is_thissystem == 0); + topology->is_thissystem = 0; + } + backend = backend->next; + } + + /* override with envvar-given flag */ + local_env = getenv("HWLOC_THISSYSTEM"); + if (local_env) + topology->is_thissystem = atoi(local_env); +} + +void +hwloc_backends_find_callbacks(struct hwloc_topology *topology) +{ + struct hwloc_backend *backend = topology->backends; + /* use the first backend's get_pci_busid_cpuset callback */ + topology->get_pci_busid_cpuset_backend = NULL; + while (backend != NULL) { + if (backend->get_pci_busid_cpuset) { + topology->get_pci_busid_cpuset_backend = backend; + return; + } + backend = backend->next; + } + return; +} + +void +hwloc_backends_disable_all(struct hwloc_topology *topology) +{ + struct hwloc_backend *backend; + + while (NULL != (backend = topology->backends)) { + struct hwloc_backend *next = backend->next; + if (hwloc_components_verbose) + fprintf(stderr, "hwloc: Disabling discovery component `%s'\n", + backend->component->name); + hwloc_backend_disable(backend); + topology->backends = next; + } + topology->backends = NULL; + topology->backend_excluded_phases = 0; +} + +void +hwloc_topology_components_fini(struct hwloc_topology *topology) +{ + /* hwloc_backends_disable_all() must have been called earlier */ + assert(!topology->backends); + + free(topology->blacklisted_components); +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/cpukinds.c b/3rd-party/hwloc-2.7.1/hwloc/cpukinds.c new file mode 100644 index 0000000000..fc05f17ee9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/cpukinds.c @@ -0,0 +1,661 @@ +/* + * Copyright © 2020-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" +#include "private/debug.h" + + +/***************** + * Basics + */ + +void +hwloc_internal_cpukinds_init(struct hwloc_topology *topology) +{ + topology->cpukinds = NULL; + topology->nr_cpukinds = 0; + topology->nr_cpukinds_allocated = 0; +} + +void +hwloc_internal_cpukinds_destroy(struct hwloc_topology *topology) +{ + unsigned i; + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + hwloc_bitmap_free(kind->cpuset); + hwloc__free_infos(kind->infos, kind->nr_infos); + } + free(topology->cpukinds); + topology->cpukinds = NULL; + topology->nr_cpukinds = 0; +} + +int +hwloc_internal_cpukinds_dup(hwloc_topology_t new, hwloc_topology_t old) +{ + struct hwloc_tma *tma = new->tma; + struct hwloc_internal_cpukind_s *kinds; + unsigned i; + + if (!old->nr_cpukinds) + return 0; + + kinds = hwloc_tma_malloc(tma, old->nr_cpukinds * sizeof(*kinds)); + if (!kinds) + return -1; + new->cpukinds = kinds; + new->nr_cpukinds = old->nr_cpukinds; + memcpy(kinds, old->cpukinds, old->nr_cpukinds * sizeof(*kinds)); + + for(i=0;inr_cpukinds; i++) { + kinds[i].cpuset = hwloc_bitmap_tma_dup(tma, old->cpukinds[i].cpuset); + if (!kinds[i].cpuset) { + new->nr_cpukinds = i; + goto failed; + } + if (hwloc__tma_dup_infos(tma, + &kinds[i].infos, &kinds[i].nr_infos, + old->cpukinds[i].infos, old->cpukinds[i].nr_infos) < 0) { + assert(!tma || !tma->dontfree); /* this tma cannot fail to allocate */ + hwloc_bitmap_free(kinds[i].cpuset); + new->nr_cpukinds = i; + goto failed; + } + } + + return 0; + + failed: + hwloc_internal_cpukinds_destroy(new); + return -1; +} + +void +hwloc_internal_cpukinds_restrict(hwloc_topology_t topology) +{ + unsigned i; + int removed = 0; + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + hwloc_bitmap_and(kind->cpuset, kind->cpuset, hwloc_get_root_obj(topology)->cpuset); + if (hwloc_bitmap_iszero(kind->cpuset)) { + hwloc_bitmap_free(kind->cpuset); + hwloc__free_infos(kind->infos, kind->nr_infos); + memmove(kind, kind+1, (topology->nr_cpukinds - i - 1)*sizeof(*kind)); + i--; + topology->nr_cpukinds--; + removed = 1; + } + } + if (removed) + hwloc_internal_cpukinds_rank(topology); +} + + +/******************** + * Registering + */ + +static __hwloc_inline int +hwloc__cpukind_check_duplicate_info(struct hwloc_internal_cpukind_s *kind, + const char *name, const char *value) +{ + unsigned i; + for(i=0; inr_infos; i++) + if (!strcmp(kind->infos[i].name, name) + && !strcmp(kind->infos[i].value, value)) + return 1; + return 0; +} + +static __hwloc_inline void +hwloc__cpukind_add_infos(struct hwloc_internal_cpukind_s *kind, + const struct hwloc_info_s *infos, unsigned nr_infos) +{ + unsigned i; + for(i=0; iinfos, &kind->nr_infos, infos[i].name, infos[i].value); + } +} + +int +hwloc_internal_cpukinds_register(hwloc_topology_t topology, hwloc_cpuset_t cpuset, + int forced_efficiency, + const struct hwloc_info_s *infos, unsigned nr_infos, + unsigned long flags) +{ + struct hwloc_internal_cpukind_s *kinds; + unsigned i, max, bits, oldnr, newnr; + + if (hwloc_bitmap_iszero(cpuset)) { + hwloc_bitmap_free(cpuset); + errno = EINVAL; + return -1; + } + + if (flags & ~HWLOC_CPUKINDS_REGISTER_FLAG_OVERWRITE_FORCED_EFFICIENCY) { + errno = EINVAL; + return -1; + } + + /* TODO: for now, only windows provides a forced efficiency. + * if another backend ever provides a conflicting value, the first backend value will be kept. + * (user-provided values are not an issue, they are meant to overwrite) + */ + + /* If we have N kinds currently, we may need 2N+1 kinds after inserting the new one: + * - each existing kind may get split into which PUs are in the new kind and which aren't. + * - some PUs might not have been in any kind yet. + */ + max = 2 * topology->nr_cpukinds + 1; + /* Allocate the power-of-two above 2N+1. */ + bits = hwloc_flsl(max-1) + 1; + max = 1U<cpukinds; + if (max > topology->nr_cpukinds_allocated) { + kinds = realloc(kinds, max * sizeof(*kinds)); + if (!kinds) { + hwloc_bitmap_free(cpuset); + return -1; + } + memset(&kinds[topology->nr_cpukinds_allocated], 0, (max - topology->nr_cpukinds_allocated) * sizeof(*kinds)); + topology->nr_cpukinds_allocated = max; + topology->cpukinds = kinds; + } + + newnr = oldnr = topology->nr_cpukinds; + for(i=0; inr_cpukinds = newnr; + return 0; +} + +int +hwloc_cpukinds_register(hwloc_topology_t topology, hwloc_cpuset_t _cpuset, + int forced_efficiency, + unsigned nr_infos, struct hwloc_info_s *infos, + unsigned long flags) +{ + hwloc_bitmap_t cpuset; + int err; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (!_cpuset || hwloc_bitmap_iszero(_cpuset)) { + errno = EINVAL; + return -1; + } + + cpuset = hwloc_bitmap_dup(_cpuset); + if (!cpuset) + return -1; + + if (forced_efficiency < 0) + forced_efficiency = HWLOC_CPUKIND_EFFICIENCY_UNKNOWN; + + err = hwloc_internal_cpukinds_register(topology, cpuset, forced_efficiency, infos, nr_infos, HWLOC_CPUKINDS_REGISTER_FLAG_OVERWRITE_FORCED_EFFICIENCY); + if (err < 0) + return err; + + hwloc_internal_cpukinds_rank(topology); + return 0; +} + + +/********************* + * Ranking + */ + +static int +hwloc__cpukinds_check_duplicate_rankings(struct hwloc_topology *topology) +{ + unsigned i,j; + for(i=0; inr_cpukinds; i++) + for(j=i+1; jnr_cpukinds; j++) + if (topology->cpukinds[i].ranking_value == topology->cpukinds[j].ranking_value) + /* if any duplicate, fail */ + return -1; + return 0; +} + +static int +hwloc__cpukinds_try_rank_by_forced_efficiency(struct hwloc_topology *topology) +{ + unsigned i; + + hwloc_debug("Trying to rank cpukinds by forced efficiency...\n"); + for(i=0; inr_cpukinds; i++) { + if (topology->cpukinds[i].forced_efficiency == HWLOC_CPUKIND_EFFICIENCY_UNKNOWN) + /* if any unknown, fail */ + return -1; + topology->cpukinds[i].ranking_value = topology->cpukinds[i].forced_efficiency; + } + + return hwloc__cpukinds_check_duplicate_rankings(topology); +} + +struct hwloc_cpukinds_info_summary { + int have_max_freq; + int have_base_freq; + int have_intel_core_type; + struct hwloc_cpukind_info_summary { + unsigned intel_core_type; /* 1 for atom, 2 for core */ + unsigned max_freq, base_freq; /* MHz, hence < 100000 */ + } * summaries; +}; + +static void +hwloc__cpukinds_summarize_info(struct hwloc_topology *topology, + struct hwloc_cpukinds_info_summary *summary) +{ + unsigned i, j; + + summary->have_max_freq = 1; + summary->have_base_freq = 1; + summary->have_intel_core_type = 1; + + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + for(j=0; jnr_infos; j++) { + struct hwloc_info_s *info = &kind->infos[j]; + if (!strcmp(info->name, "FrequencyMaxMHz")) { + summary->summaries[i].max_freq = atoi(info->value); + } else if (!strcmp(info->name, "FrequencyBaseMHz")) { + summary->summaries[i].base_freq = atoi(info->value); + } else if (!strcmp(info->name, "CoreType")) { + if (!strcmp(info->value, "IntelAtom")) + summary->summaries[i].intel_core_type = 1; + else if (!strcmp(info->value, "IntelCore")) + summary->summaries[i].intel_core_type = 2; + } + } + hwloc_debug("cpukind #%u has intel_core_type %u max_freq %u base_freq %u\n", + i, summary->summaries[i].intel_core_type, + summary->summaries[i].max_freq, summary->summaries[i].base_freq); + if (!summary->summaries[i].base_freq) + summary->have_base_freq = 0; + if (!summary->summaries[i].max_freq) + summary->have_max_freq = 0; + if (!summary->summaries[i].intel_core_type) + summary->have_intel_core_type = 0; + } +} + +enum hwloc_cpukinds_ranking { + HWLOC_CPUKINDS_RANKING_DEFAULT, /* forced + frequency on ARM, forced + coretype_frequency otherwise */ + HWLOC_CPUKINDS_RANKING_NO_FORCED_EFFICIENCY, /* default without forced */ + HWLOC_CPUKINDS_RANKING_FORCED_EFFICIENCY, + HWLOC_CPUKINDS_RANKING_CORETYPE_FREQUENCY, /* either coretype or frequency or both */ + HWLOC_CPUKINDS_RANKING_CORETYPE_FREQUENCY_STRICT, /* both coretype and frequency are required */ + HWLOC_CPUKINDS_RANKING_CORETYPE, + HWLOC_CPUKINDS_RANKING_FREQUENCY, + HWLOC_CPUKINDS_RANKING_FREQUENCY_MAX, + HWLOC_CPUKINDS_RANKING_FREQUENCY_BASE, + HWLOC_CPUKINDS_RANKING_NONE +}; + +static int +hwloc__cpukinds_try_rank_by_info(struct hwloc_topology *topology, + enum hwloc_cpukinds_ranking heuristics, + struct hwloc_cpukinds_info_summary *summary) +{ + unsigned i; + + if (HWLOC_CPUKINDS_RANKING_CORETYPE_FREQUENCY_STRICT == heuristics) { + hwloc_debug("Trying to rank cpukinds by coretype+frequency_strict...\n"); + /* we need intel_core_type AND (base or max freq) for all kinds */ + if (!summary->have_intel_core_type + || (!summary->have_max_freq && !summary->have_base_freq)) + return -1; + /* rank first by coretype (Core>>Atom) then by frequency, base if available, max otherwise */ + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + if (summary->have_base_freq) + kind->ranking_value = (summary->summaries[i].intel_core_type << 20) + summary->summaries[i].base_freq; + else + kind->ranking_value = (summary->summaries[i].intel_core_type << 20) + summary->summaries[i].max_freq; + } + + } else if (HWLOC_CPUKINDS_RANKING_CORETYPE_FREQUENCY == heuristics) { + hwloc_debug("Trying to rank cpukinds by coretype+frequency...\n"); + /* we need intel_core_type OR (base or max freq) for all kinds */ + if (!summary->have_intel_core_type + && (!summary->have_max_freq && !summary->have_base_freq)) + return -1; + /* rank first by coretype (Core>>Atom) then by frequency, base if available, max otherwise */ + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + if (summary->have_base_freq) + kind->ranking_value = (summary->summaries[i].intel_core_type << 20) + summary->summaries[i].base_freq; + else + kind->ranking_value = (summary->summaries[i].intel_core_type << 20) + summary->summaries[i].max_freq; + } + + } else if (HWLOC_CPUKINDS_RANKING_CORETYPE == heuristics) { + hwloc_debug("Trying to rank cpukinds by coretype...\n"); + /* we need intel_core_type */ + if (!summary->have_intel_core_type) + return -1; + /* rank by coretype (Core>>Atom) */ + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + kind->ranking_value = (summary->summaries[i].intel_core_type << 20); + } + + } else if (HWLOC_CPUKINDS_RANKING_FREQUENCY == heuristics) { + hwloc_debug("Trying to rank cpukinds by frequency...\n"); + /* we need base or max freq for all kinds */ + if (!summary->have_max_freq && !summary->have_base_freq) + return -1; + /* rank first by frequency, base if available, max otherwise */ + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + if (summary->have_base_freq) + kind->ranking_value = summary->summaries[i].base_freq; + else + kind->ranking_value = summary->summaries[i].max_freq; + } + + } else if (HWLOC_CPUKINDS_RANKING_FREQUENCY_MAX == heuristics) { + hwloc_debug("Trying to rank cpukinds by frequency max...\n"); + /* we need max freq for all kinds */ + if (!summary->have_max_freq) + return -1; + /* rank first by frequency, base if available, max otherwise */ + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + kind->ranking_value = summary->summaries[i].max_freq; + } + + } else if (HWLOC_CPUKINDS_RANKING_FREQUENCY_BASE == heuristics) { + hwloc_debug("Trying to rank cpukinds by frequency base...\n"); + /* we need max freq for all kinds */ + if (!summary->have_base_freq) + return -1; + /* rank first by frequency, base if available, max otherwise */ + for(i=0; inr_cpukinds; i++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[i]; + kind->ranking_value = summary->summaries[i].base_freq; + } + + } else assert(0); + + return hwloc__cpukinds_check_duplicate_rankings(topology); +} + +static int hwloc__cpukinds_compare_ranking_values(const void *_a, const void *_b) +{ + const struct hwloc_internal_cpukind_s *a = _a; + const struct hwloc_internal_cpukind_s *b = _b; + uint64_t arv = a->ranking_value; + uint64_t brv = b->ranking_value; + return arv < brv ? -1 : arv > brv ? 1 : 0; +} + +/* this function requires ranking values to be unique */ +static void +hwloc__cpukinds_finalize_ranking(struct hwloc_topology *topology) +{ + unsigned i; + /* sort */ + qsort(topology->cpukinds, topology->nr_cpukinds, sizeof(*topology->cpukinds), hwloc__cpukinds_compare_ranking_values); + /* define our own efficiency between 0 and N-1 */ + for(i=0; inr_cpukinds; i++) + topology->cpukinds[i].efficiency = i; +} + +int +hwloc_internal_cpukinds_rank(struct hwloc_topology *topology) +{ + enum hwloc_cpukinds_ranking heuristics; + char *env; + unsigned i; + int err; + + if (!topology->nr_cpukinds) + return 0; + + if (topology->nr_cpukinds == 1) { + topology->cpukinds[0].efficiency = 0; + return 0; + } + + heuristics = HWLOC_CPUKINDS_RANKING_DEFAULT; + env = getenv("HWLOC_CPUKINDS_RANKING"); + if (env) { + if (!strcmp(env, "default")) + heuristics = HWLOC_CPUKINDS_RANKING_DEFAULT; + else if (!strcmp(env, "none")) + heuristics = HWLOC_CPUKINDS_RANKING_NONE; + else if (!strcmp(env, "coretype+frequency")) + heuristics = HWLOC_CPUKINDS_RANKING_CORETYPE_FREQUENCY; + else if (!strcmp(env, "coretype+frequency_strict")) + heuristics = HWLOC_CPUKINDS_RANKING_CORETYPE_FREQUENCY_STRICT; + else if (!strcmp(env, "coretype")) + heuristics = HWLOC_CPUKINDS_RANKING_CORETYPE; + else if (!strcmp(env, "frequency")) + heuristics = HWLOC_CPUKINDS_RANKING_FREQUENCY; + else if (!strcmp(env, "frequency_max")) + heuristics = HWLOC_CPUKINDS_RANKING_FREQUENCY_MAX; + else if (!strcmp(env, "frequency_base")) + heuristics = HWLOC_CPUKINDS_RANKING_FREQUENCY_BASE; + else if (!strcmp(env, "forced_efficiency")) + heuristics = HWLOC_CPUKINDS_RANKING_FORCED_EFFICIENCY; + else if (!strcmp(env, "no_forced_efficiency")) + heuristics = HWLOC_CPUKINDS_RANKING_NO_FORCED_EFFICIENCY; + else if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc: Failed to recognize HWLOC_CPUKINDS_RANKING value %s\n", env); + } + + if (heuristics == HWLOC_CPUKINDS_RANKING_DEFAULT + || heuristics == HWLOC_CPUKINDS_RANKING_NO_FORCED_EFFICIENCY) { + /* default is forced_efficiency first */ + struct hwloc_cpukinds_info_summary summary; + + if (heuristics == HWLOC_CPUKINDS_RANKING_DEFAULT) + hwloc_debug("Using default ranking strategy...\n"); + else + hwloc_debug("Using custom ranking strategy from HWLOC_CPUKINDS_RANKING=%s\n", env); + + if (heuristics != HWLOC_CPUKINDS_RANKING_NO_FORCED_EFFICIENCY) { + err = hwloc__cpukinds_try_rank_by_forced_efficiency(topology); + if (!err) + goto ready; + } + + summary.summaries = calloc(topology->nr_cpukinds, sizeof(*summary.summaries)); + if (!summary.summaries) + goto failed; + hwloc__cpukinds_summarize_info(topology, &summary); + + err = hwloc__cpukinds_try_rank_by_info(topology, HWLOC_CPUKINDS_RANKING_CORETYPE_FREQUENCY, &summary); + free(summary.summaries); + if (!err) + goto ready; + + } else if (heuristics == HWLOC_CPUKINDS_RANKING_FORCED_EFFICIENCY) { + hwloc_debug("Using custom ranking strategy from HWLOC_CPUKINDS_RANKING=%s\n", env); + + err = hwloc__cpukinds_try_rank_by_forced_efficiency(topology); + if (!err) + goto ready; + + } else if (heuristics != HWLOC_CPUKINDS_RANKING_NONE) { + /* custom heuristics */ + struct hwloc_cpukinds_info_summary summary; + + hwloc_debug("Using custom ranking strategy from HWLOC_CPUKINDS_RANKING=%s\n", env); + + summary.summaries = calloc(topology->nr_cpukinds, sizeof(*summary.summaries)); + if (!summary.summaries) + goto failed; + hwloc__cpukinds_summarize_info(topology, &summary); + + err = hwloc__cpukinds_try_rank_by_info(topology, heuristics, &summary); + free(summary.summaries); + if (!err) + goto ready; + } + + failed: + /* failed to rank, clear efficiencies */ + for(i=0; inr_cpukinds; i++) + topology->cpukinds[i].efficiency = HWLOC_CPUKIND_EFFICIENCY_UNKNOWN; + hwloc_debug("Failed to rank cpukinds.\n\n"); + return 0; + + ready: + for(i=0; inr_cpukinds; i++) + hwloc_debug("cpukind #%u got ranking value %llu\n", i, (unsigned long long) topology->cpukinds[i].ranking_value); + hwloc__cpukinds_finalize_ranking(topology); +#ifdef HWLOC_DEBUG + for(i=0; inr_cpukinds; i++) + assert(topology->cpukinds[i].efficiency == (int) i); +#endif + hwloc_debug("\n"); + return 0; +} + + +/***************** + * Consulting + */ + +int +hwloc_cpukinds_get_nr(hwloc_topology_t topology, unsigned long flags) +{ + if (flags) { + errno = EINVAL; + return -1; + } + + return topology->nr_cpukinds; +} + +int +hwloc_cpukinds_get_info(hwloc_topology_t topology, + unsigned id, + hwloc_bitmap_t cpuset, + int *efficiencyp, + unsigned *nr_infosp, struct hwloc_info_s **infosp, + unsigned long flags) +{ + struct hwloc_internal_cpukind_s *kind; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (id >= topology->nr_cpukinds) { + errno = ENOENT; + return -1; + } + + kind = &topology->cpukinds[id]; + + if (cpuset) + hwloc_bitmap_copy(cpuset, kind->cpuset); + + if (efficiencyp) + *efficiencyp = kind->efficiency; + + if (nr_infosp && infosp) { + *nr_infosp = kind->nr_infos; + *infosp = kind->infos; + } + return 0; +} + +int +hwloc_cpukinds_get_by_cpuset(hwloc_topology_t topology, + hwloc_const_bitmap_t cpuset, + unsigned long flags) +{ + unsigned id; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (!cpuset || hwloc_bitmap_iszero(cpuset)) { + errno = EINVAL; + return -1; + } + + for(id=0; idnr_cpukinds; id++) { + struct hwloc_internal_cpukind_s *kind = &topology->cpukinds[id]; + int res = hwloc_bitmap_compare_inclusion(cpuset, kind->cpuset); + if (res == HWLOC_BITMAP_EQUAL || res == HWLOC_BITMAP_INCLUDED) { + return (int) id; + } else if (res == HWLOC_BITMAP_INTERSECTS || res == HWLOC_BITMAP_CONTAINS) { + errno = EXDEV; + return -1; + } + } + + errno = ENOENT; + return -1; +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/diff.c b/3rd-party/hwloc-2.7.1/hwloc/diff.c new file mode 100644 index 0000000000..7449a8582c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/diff.c @@ -0,0 +1,540 @@ +/* + * Copyright © 2013-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "private/private.h" +#include "private/misc.h" + +int hwloc_topology_diff_destroy(hwloc_topology_diff_t diff) +{ + hwloc_topology_diff_t next; + while (diff) { + next = diff->generic.next; + switch (diff->generic.type) { + default: + break; + case HWLOC_TOPOLOGY_DIFF_OBJ_ATTR: + switch (diff->obj_attr.diff.generic.type) { + default: + break; + case HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME: + case HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO: + free(diff->obj_attr.diff.string.name); + free(diff->obj_attr.diff.string.oldvalue); + free(diff->obj_attr.diff.string.newvalue); + break; + } + break; + } + free(diff); + diff = next; + } + return 0; +} + +/************************ + * Computing diffs + */ + +static void hwloc_append_diff(hwloc_topology_diff_t newdiff, + hwloc_topology_diff_t *firstdiffp, + hwloc_topology_diff_t *lastdiffp) +{ + if (*firstdiffp) + (*lastdiffp)->generic.next = newdiff; + else + *firstdiffp = newdiff; + *lastdiffp = newdiff; + newdiff->generic.next = NULL; +} + +static int hwloc_append_diff_too_complex(hwloc_obj_t obj1, + hwloc_topology_diff_t *firstdiffp, + hwloc_topology_diff_t *lastdiffp) +{ + hwloc_topology_diff_t newdiff; + newdiff = malloc(sizeof(*newdiff)); + if (!newdiff) + return -1; + + newdiff->too_complex.type = HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX; + newdiff->too_complex.obj_depth = obj1->depth; + newdiff->too_complex.obj_index = obj1->logical_index; + hwloc_append_diff(newdiff, firstdiffp, lastdiffp); + return 0; +} + +static int hwloc_append_diff_obj_attr_string(hwloc_obj_t obj, + hwloc_topology_diff_obj_attr_type_t type, + const char *name, + const char *oldvalue, + const char *newvalue, + hwloc_topology_diff_t *firstdiffp, + hwloc_topology_diff_t *lastdiffp) +{ + hwloc_topology_diff_t newdiff; + newdiff = malloc(sizeof(*newdiff)); + if (!newdiff) + return -1; + + newdiff->obj_attr.type = HWLOC_TOPOLOGY_DIFF_OBJ_ATTR; + newdiff->obj_attr.obj_depth = obj->depth; + newdiff->obj_attr.obj_index = obj->logical_index; + newdiff->obj_attr.diff.string.type = type; + newdiff->obj_attr.diff.string.name = name ? strdup(name) : NULL; + newdiff->obj_attr.diff.string.oldvalue = oldvalue ? strdup(oldvalue) : NULL; + newdiff->obj_attr.diff.string.newvalue = newvalue ? strdup(newvalue) : NULL; + hwloc_append_diff(newdiff, firstdiffp, lastdiffp); + return 0; +} + +static int hwloc_append_diff_obj_attr_uint64(hwloc_obj_t obj, + hwloc_topology_diff_obj_attr_type_t type, + hwloc_uint64_t idx, + hwloc_uint64_t oldvalue, + hwloc_uint64_t newvalue, + hwloc_topology_diff_t *firstdiffp, + hwloc_topology_diff_t *lastdiffp) +{ + hwloc_topology_diff_t newdiff; + newdiff = malloc(sizeof(*newdiff)); + if (!newdiff) + return -1; + + newdiff->obj_attr.type = HWLOC_TOPOLOGY_DIFF_OBJ_ATTR; + newdiff->obj_attr.obj_depth = obj->depth; + newdiff->obj_attr.obj_index = obj->logical_index; + newdiff->obj_attr.diff.uint64.type = type; + newdiff->obj_attr.diff.uint64.index = idx; + newdiff->obj_attr.diff.uint64.oldvalue = oldvalue; + newdiff->obj_attr.diff.uint64.newvalue = newvalue; + hwloc_append_diff(newdiff, firstdiffp, lastdiffp); + return 0; +} + +static int +hwloc_diff_trees(hwloc_topology_t topo1, hwloc_obj_t obj1, + hwloc_topology_t topo2, hwloc_obj_t obj2, + unsigned flags, + hwloc_topology_diff_t *firstdiffp, hwloc_topology_diff_t *lastdiffp) +{ + unsigned i; + int err; + hwloc_obj_t child1, child2; + + if (obj1->depth != obj2->depth) + goto out_too_complex; + + if (obj1->type != obj2->type) + goto out_too_complex; + if ((!obj1->subtype) != (!obj2->subtype) + || (obj1->subtype && strcmp(obj1->subtype, obj2->subtype))) + goto out_too_complex; + + if (obj1->os_index != obj2->os_index) + /* we could allow different os_index for non-PU non-NUMAnode objects + * but it's likely useless anyway */ + goto out_too_complex; + +#define _SETS_DIFFERENT(_set1, _set2) \ + ( ( !(_set1) != !(_set2) ) \ + || ( (_set1) && !hwloc_bitmap_isequal(_set1, _set2) ) ) +#define SETS_DIFFERENT(_set, _obj1, _obj2) _SETS_DIFFERENT((_obj1)->_set, (_obj2)->_set) + if (SETS_DIFFERENT(cpuset, obj1, obj2) + || SETS_DIFFERENT(complete_cpuset, obj1, obj2) + || SETS_DIFFERENT(nodeset, obj1, obj2) + || SETS_DIFFERENT(complete_nodeset, obj1, obj2)) + goto out_too_complex; + + /* no need to check logical_index, sibling_rank, symmetric_subtree, + * the parents did it */ + + /* gp_index don't have to be strictly identical */ + + if ((!obj1->name) != (!obj2->name) + || (obj1->name && strcmp(obj1->name, obj2->name))) { + err = hwloc_append_diff_obj_attr_string(obj1, + HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME, + NULL, + obj1->name, + obj2->name, + firstdiffp, lastdiffp); + if (err < 0) + return err; + } + + /* type-specific attrs */ + switch (obj1->type) { + default: + break; + case HWLOC_OBJ_NUMANODE: + if (obj1->attr->numanode.local_memory != obj2->attr->numanode.local_memory) { + err = hwloc_append_diff_obj_attr_uint64(obj1, + HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE, + 0, + obj1->attr->numanode.local_memory, + obj2->attr->numanode.local_memory, + firstdiffp, lastdiffp); + if (err < 0) + return err; + } + /* ignore memory page_types */ + break; + case HWLOC_OBJ_L1CACHE: + case HWLOC_OBJ_L2CACHE: + case HWLOC_OBJ_L3CACHE: + case HWLOC_OBJ_L4CACHE: + case HWLOC_OBJ_L5CACHE: + case HWLOC_OBJ_L1ICACHE: + case HWLOC_OBJ_L2ICACHE: + case HWLOC_OBJ_L3ICACHE: + if (memcmp(obj1->attr, obj2->attr, sizeof(obj1->attr->cache))) + goto out_too_complex; + break; + case HWLOC_OBJ_GROUP: + if (memcmp(obj1->attr, obj2->attr, sizeof(obj1->attr->group))) + goto out_too_complex; + break; + case HWLOC_OBJ_PCI_DEVICE: + if (memcmp(obj1->attr, obj2->attr, sizeof(obj1->attr->pcidev))) + goto out_too_complex; + break; + case HWLOC_OBJ_BRIDGE: + if (memcmp(obj1->attr, obj2->attr, sizeof(obj1->attr->bridge))) + goto out_too_complex; + break; + case HWLOC_OBJ_OS_DEVICE: + if (memcmp(obj1->attr, obj2->attr, sizeof(obj1->attr->osdev))) + goto out_too_complex; + break; + } + + /* infos */ + if (obj1->infos_count != obj2->infos_count) + goto out_too_complex; + for(i=0; iinfos_count; i++) { + struct hwloc_info_s *info1 = &obj1->infos[i], *info2 = &obj2->infos[i]; + if (strcmp(info1->name, info2->name)) + goto out_too_complex; + if (strcmp(obj1->infos[i].value, obj2->infos[i].value)) { + err = hwloc_append_diff_obj_attr_string(obj1, + HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO, + info1->name, + info1->value, + info2->value, + firstdiffp, lastdiffp); + if (err < 0) + return err; + } + } + + /* ignore userdata */ + + /* children */ + for(child1 = obj1->first_child, child2 = obj2->first_child; + child1 != NULL && child2 != NULL; + child1 = child1->next_sibling, child2 = child2->next_sibling) { + err = hwloc_diff_trees(topo1, child1, + topo2, child2, + flags, + firstdiffp, lastdiffp); + if (err < 0) + return err; + } + if (child1 || child2) + goto out_too_complex; + + /* memory children */ + for(child1 = obj1->memory_first_child, child2 = obj2->memory_first_child; + child1 != NULL && child2 != NULL; + child1 = child1->next_sibling, child2 = child2->next_sibling) { + err = hwloc_diff_trees(topo1, child1, + topo2, child2, + flags, + firstdiffp, lastdiffp); + if (err < 0) + return err; + } + if (child1 || child2) + goto out_too_complex; + + /* I/O children */ + for(child1 = obj1->io_first_child, child2 = obj2->io_first_child; + child1 != NULL && child2 != NULL; + child1 = child1->next_sibling, child2 = child2->next_sibling) { + err = hwloc_diff_trees(topo1, child1, + topo2, child2, + flags, + firstdiffp, lastdiffp); + if (err < 0) + return err; + } + if (child1 || child2) + goto out_too_complex; + + /* misc children */ + for(child1 = obj1->misc_first_child, child2 = obj2->misc_first_child; + child1 != NULL && child2 != NULL; + child1 = child1->next_sibling, child2 = child2->next_sibling) { + err = hwloc_diff_trees(topo1, child1, + topo2, child2, + flags, + firstdiffp, lastdiffp); + if (err < 0) + return err; + } + if (child1 || child2) + goto out_too_complex; + + return 0; + +out_too_complex: + hwloc_append_diff_too_complex(obj1, firstdiffp, lastdiffp); + return 0; +} + +int hwloc_topology_diff_build(hwloc_topology_t topo1, + hwloc_topology_t topo2, + unsigned long flags, + hwloc_topology_diff_t *diffp) +{ + hwloc_topology_diff_t lastdiff, tmpdiff; + struct hwloc_internal_distances_s *dist1, *dist2; + unsigned i; + int err; + + if (!topo1->is_loaded || !topo2->is_loaded) { + errno = EINVAL; + return -1; + } + + if (flags != 0) { + errno = EINVAL; + return -1; + } + + *diffp = NULL; + err = hwloc_diff_trees(topo1, hwloc_get_root_obj(topo1), + topo2, hwloc_get_root_obj(topo2), + flags, + diffp, &lastdiff); + if (!err) { + tmpdiff = *diffp; + while (tmpdiff) { + if (tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX) { + err = 1; + break; + } + tmpdiff = tmpdiff->generic.next; + } + } + + if (!err) { + if (SETS_DIFFERENT(allowed_cpuset, topo1, topo2) + || SETS_DIFFERENT(allowed_nodeset, topo1, topo2)) + goto roottoocomplex; + } + + if (!err) { + /* distances */ + hwloc_internal_distances_refresh(topo1); + hwloc_internal_distances_refresh(topo2); + dist1 = topo1->first_dist; + dist2 = topo2->first_dist; + while (dist1 || dist2) { + if (!!dist1 != !!dist2) + goto roottoocomplex; + if (dist1->unique_type != dist2->unique_type + || dist1->different_types || dist2->different_types /* too lazy to support this case */ + || dist1->nbobjs != dist2->nbobjs + || dist1->kind != dist2->kind + || memcmp(dist1->values, dist2->values, dist1->nbobjs * dist1->nbobjs * sizeof(*dist1->values))) + goto roottoocomplex; + for(i=0; inbobjs; i++) + /* gp_index isn't enforced above. so compare logical_index instead, which is enforced. requires distances refresh() above */ + if (dist1->objs[i]->logical_index != dist2->objs[i]->logical_index) + goto roottoocomplex; + dist1 = dist1->next; + dist2 = dist2->next; + } + } + + if (!err) { + /* memattrs */ + hwloc_internal_memattrs_refresh(topo1); + hwloc_internal_memattrs_refresh(topo2); + if (topo1->nr_memattrs != topo2->nr_memattrs) + goto roottoocomplex; + for(i=0; inr_memattrs; i++) { + struct hwloc_internal_memattr_s *imattr1 = &topo1->memattrs[i], *imattr2 = &topo2->memattrs[i]; + unsigned j; + if (strcmp(imattr1->name, imattr2->name) + || imattr1->flags != imattr2->flags + || imattr1->nr_targets != imattr2->nr_targets) + goto roottoocomplex; + if (i == HWLOC_MEMATTR_ID_CAPACITY + || i == HWLOC_MEMATTR_ID_LOCALITY) + /* no need to check virtual attributes, there were refreshed from other topology attributes, checked above */ + continue; + for(j=0; jnr_targets; j++) { + struct hwloc_internal_memattr_target_s *imtg1 = &imattr1->targets[j], *imtg2 = &imattr2->targets[j]; + if (imtg1->type != imtg2->type) + goto roottoocomplex; + if (imtg1->obj->logical_index != imtg2->obj->logical_index) + goto roottoocomplex; + if (imattr1->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR) { + unsigned k; + for(k=0; knr_initiators; k++) { + struct hwloc_internal_memattr_initiator_s *imi1 = &imtg1->initiators[k], *imi2 = &imtg2->initiators[k]; + if (imi1->value != imi2->value + || imi1->initiator.type != imi2->initiator.type) + goto roottoocomplex; + if (imi1->initiator.type == HWLOC_LOCATION_TYPE_CPUSET) { + if (!hwloc_bitmap_isequal(imi1->initiator.location.cpuset, imi2->initiator.location.cpuset)) + goto roottoocomplex; + } else if (imi1->initiator.type == HWLOC_LOCATION_TYPE_OBJECT) { + if (imi1->initiator.location.object.type != imi2->initiator.location.object.type) + goto roottoocomplex; + if (imi1->initiator.location.object.obj->logical_index != imi2->initiator.location.object.obj->logical_index) + goto roottoocomplex; + } else { + assert(0); + } + } + } else { + if (imtg1->noinitiator_value != imtg2->noinitiator_value) + goto roottoocomplex; + } + } + } + } + + return err; + + roottoocomplex: + hwloc_append_diff_too_complex(hwloc_get_root_obj(topo1), diffp, &lastdiff); + return 1; +} + +/******************** + * Applying diffs + */ + +static int +hwloc_apply_diff_one(hwloc_topology_t topology, + hwloc_topology_diff_t diff, + unsigned long flags) +{ + int reverse = !!(flags & HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE); + + switch (diff->generic.type) { + case HWLOC_TOPOLOGY_DIFF_OBJ_ATTR: { + struct hwloc_topology_diff_obj_attr_s *obj_attr = &diff->obj_attr; + hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, obj_attr->obj_depth, obj_attr->obj_index); + if (!obj) + return -1; + + switch (obj_attr->diff.generic.type) { + case HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE: { + hwloc_obj_t tmpobj; + hwloc_uint64_t oldvalue = reverse ? obj_attr->diff.uint64.newvalue : obj_attr->diff.uint64.oldvalue; + hwloc_uint64_t newvalue = reverse ? obj_attr->diff.uint64.oldvalue : obj_attr->diff.uint64.newvalue; + hwloc_uint64_t valuediff = newvalue - oldvalue; + if (obj->type != HWLOC_OBJ_NUMANODE) + return -1; + if (obj->attr->numanode.local_memory != oldvalue) + return -1; + obj->attr->numanode.local_memory = newvalue; + tmpobj = obj; + while (tmpobj) { + tmpobj->total_memory += valuediff; + tmpobj = tmpobj->parent; + } + break; + } + case HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME: { + const char *oldvalue = reverse ? obj_attr->diff.string.newvalue : obj_attr->diff.string.oldvalue; + const char *newvalue = reverse ? obj_attr->diff.string.oldvalue : obj_attr->diff.string.newvalue; + if (!obj->name || strcmp(obj->name, oldvalue)) + return -1; + free(obj->name); + obj->name = strdup(newvalue); + break; + } + case HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO: { + const char *name = obj_attr->diff.string.name; + const char *oldvalue = reverse ? obj_attr->diff.string.newvalue : obj_attr->diff.string.oldvalue; + const char *newvalue = reverse ? obj_attr->diff.string.oldvalue : obj_attr->diff.string.newvalue; + unsigned i; + int found = 0; + for(i=0; iinfos_count; i++) { + struct hwloc_info_s *info = &obj->infos[i]; + if (!strcmp(info->name, name) + && !strcmp(info->value, oldvalue)) { + free(info->value); + info->value = strdup(newvalue); + found = 1; + break; + } + } + if (!found) + return -1; + break; + } + default: + return -1; + } + + break; + } + default: + return -1; + } + + return 0; +} + +int hwloc_topology_diff_apply(hwloc_topology_t topology, + hwloc_topology_diff_t diff, + unsigned long flags) +{ + hwloc_topology_diff_t tmpdiff, tmpdiff2; + int err, nr; + + if (!topology->is_loaded) { + errno = EINVAL; + return -1; + } + if (topology->adopted_shmem_addr) { + errno = EPERM; + return -1; + } + + if (flags & ~HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE) { + errno = EINVAL; + return -1; + } + + tmpdiff = diff; + nr = 0; + while (tmpdiff) { + nr++; + err = hwloc_apply_diff_one(topology, tmpdiff, flags); + if (err < 0) + goto cancel; + tmpdiff = tmpdiff->generic.next; + } + return 0; + +cancel: + tmpdiff2 = tmpdiff; + tmpdiff = diff; + while (tmpdiff != tmpdiff2) { + hwloc_apply_diff_one(topology, tmpdiff, flags ^ HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE); + tmpdiff = tmpdiff->generic.next; + } + errno = EINVAL; + return -nr; /* return the index (starting at 1) of the first element that couldn't be applied */ +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/distances.c b/3rd-party/hwloc-2.7.1/hwloc/distances.c new file mode 100644 index 0000000000..252c253e5e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/distances.c @@ -0,0 +1,1509 @@ +/* + * Copyright © 2010-2021 Inria. All rights reserved. + * Copyright © 2011-2012 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" +#include "private/debug.h" +#include "private/misc.h" + +#include +#include + +static struct hwloc_internal_distances_s * +hwloc__internal_distances_from_public(hwloc_topology_t topology, struct hwloc_distances_s *distances); + +static void +hwloc__groups_by_distances(struct hwloc_topology *topology, unsigned nbobjs, struct hwloc_obj **objs, uint64_t *values, unsigned long kind, unsigned nbaccuracies, float *accuracies, int needcheck); + +static void +hwloc_internal_distances_restrict(hwloc_obj_t *objs, + uint64_t *indexes, + hwloc_obj_type_t *different_types, + uint64_t *values, + unsigned nbobjs, unsigned disappeared); + +static void +hwloc_internal_distances_print_matrix(struct hwloc_internal_distances_s *dist) +{ + unsigned nbobjs = dist->nbobjs; + hwloc_obj_t *objs = dist->objs; + hwloc_uint64_t *values = dist->values; + int gp = !HWLOC_DIST_TYPE_USE_OS_INDEX(dist->unique_type); + unsigned i, j; + + fprintf(stderr, "%s", gp ? "gp_index" : "os_index"); + for(j=0; jgp_index : objs[j]->os_index)); + fprintf(stderr, "\n"); + for(i=0; igp_index : objs[i]->os_index)); + for(j=0; jfirst_dist = topology->last_dist = NULL; + topology->next_dist_id = 0; +} + +/* called at the beginning of load() */ +void hwloc_internal_distances_prepare(struct hwloc_topology *topology) +{ + char *env; + hwloc_localeswitch_declare; + + topology->grouping = 1; + if (topology->type_filter[HWLOC_OBJ_GROUP] == HWLOC_TYPE_FILTER_KEEP_NONE) + topology->grouping = 0; + env = getenv("HWLOC_GROUPING"); + if (env && !atoi(env)) + topology->grouping = 0; + + if (topology->grouping) { + topology->grouping_next_subkind = 0; + + HWLOC_BUILD_ASSERT(sizeof(topology->grouping_accuracies)/sizeof(*topology->grouping_accuracies) == 5); + topology->grouping_accuracies[0] = 0.0f; + topology->grouping_accuracies[1] = 0.01f; + topology->grouping_accuracies[2] = 0.02f; + topology->grouping_accuracies[3] = 0.05f; + topology->grouping_accuracies[4] = 0.1f; + topology->grouping_nbaccuracies = 5; + + hwloc_localeswitch_init(); + env = getenv("HWLOC_GROUPING_ACCURACY"); + if (!env) { + /* only use 0.0 */ + topology->grouping_nbaccuracies = 1; + } else if (strcmp(env, "try")) { + /* use the given value */ + topology->grouping_nbaccuracies = 1; + topology->grouping_accuracies[0] = (float) atof(env); + } /* otherwise try all values */ + hwloc_localeswitch_fini(); + + topology->grouping_verbose = 0; + env = getenv("HWLOC_GROUPING_VERBOSE"); + if (env) + topology->grouping_verbose = atoi(env); + } +} + +static void hwloc_internal_distances_free(struct hwloc_internal_distances_s *dist) +{ + free(dist->name); + free(dist->different_types); + free(dist->indexes); + free(dist->objs); + free(dist->values); + free(dist); +} + +/* called during topology destroy */ +void hwloc_internal_distances_destroy(struct hwloc_topology * topology) +{ + struct hwloc_internal_distances_s *dist, *next = topology->first_dist; + while ((dist = next) != NULL) { + next = dist->next; + hwloc_internal_distances_free(dist); + } + topology->first_dist = topology->last_dist = NULL; +} + +static int hwloc_internal_distances_dup_one(struct hwloc_topology *new, struct hwloc_internal_distances_s *olddist) +{ + struct hwloc_tma *tma = new->tma; + struct hwloc_internal_distances_s *newdist; + unsigned nbobjs = olddist->nbobjs; + + newdist = hwloc_tma_malloc(tma, sizeof(*newdist)); + if (!newdist) + return -1; + if (olddist->name) { + newdist->name = hwloc_tma_strdup(tma, olddist->name); + if (!newdist->name) { + assert(!tma || !tma->dontfree); /* this tma cannot fail to allocate */ + hwloc_internal_distances_free(newdist); + return -1; + } + } else { + newdist->name = NULL; + } + + if (olddist->different_types) { + newdist->different_types = hwloc_tma_malloc(tma, nbobjs * sizeof(*newdist->different_types)); + if (!newdist->different_types) { + assert(!tma || !tma->dontfree); /* this tma cannot fail to allocate */ + hwloc_internal_distances_free(newdist); + return -1; + } + memcpy(newdist->different_types, olddist->different_types, nbobjs * sizeof(*newdist->different_types)); + } else + newdist->different_types = NULL; + newdist->unique_type = olddist->unique_type; + newdist->nbobjs = nbobjs; + newdist->kind = olddist->kind; + newdist->id = olddist->id; + + newdist->indexes = hwloc_tma_malloc(tma, nbobjs * sizeof(*newdist->indexes)); + newdist->objs = hwloc_tma_calloc(tma, nbobjs * sizeof(*newdist->objs)); + newdist->iflags = olddist->iflags & ~HWLOC_INTERNAL_DIST_FLAG_OBJS_VALID; /* must be revalidated after dup() */ + newdist->values = hwloc_tma_malloc(tma, nbobjs*nbobjs * sizeof(*newdist->values)); + if (!newdist->indexes || !newdist->objs || !newdist->values) { + assert(!tma || !tma->dontfree); /* this tma cannot fail to allocate */ + hwloc_internal_distances_free(newdist); + return -1; + } + + memcpy(newdist->indexes, olddist->indexes, nbobjs * sizeof(*newdist->indexes)); + memcpy(newdist->values, olddist->values, nbobjs*nbobjs * sizeof(*newdist->values)); + + newdist->next = NULL; + newdist->prev = new->last_dist; + if (new->last_dist) + new->last_dist->next = newdist; + else + new->first_dist = newdist; + new->last_dist = newdist; + + return 0; +} + +/* This function may be called with topology->tma set, it cannot free() or realloc() */ +int hwloc_internal_distances_dup(struct hwloc_topology *new, struct hwloc_topology *old) +{ + struct hwloc_internal_distances_s *olddist; + int err; + new->next_dist_id = old->next_dist_id; + for(olddist = old->first_dist; olddist; olddist = olddist->next) { + err = hwloc_internal_distances_dup_one(new, olddist); + if (err < 0) + return err; + } + return 0; +} + +/****************************************************** + * Remove distances from the topology + */ + +int hwloc_distances_remove(hwloc_topology_t topology) +{ + if (!topology->is_loaded) { + errno = EINVAL; + return -1; + } + if (topology->adopted_shmem_addr) { + errno = EPERM; + return -1; + } + hwloc_internal_distances_destroy(topology); + return 0; +} + +int hwloc_distances_remove_by_depth(hwloc_topology_t topology, int depth) +{ + struct hwloc_internal_distances_s *dist, *next; + hwloc_obj_type_t type; + + if (!topology->is_loaded) { + errno = EINVAL; + return -1; + } + if (topology->adopted_shmem_addr) { + errno = EPERM; + return -1; + } + + /* switch back to types since we don't support groups for now */ + type = hwloc_get_depth_type(topology, depth); + if (type == (hwloc_obj_type_t)-1) { + errno = EINVAL; + return -1; + } + + next = topology->first_dist; + while ((dist = next) != NULL) { + next = dist->next; + if (dist->unique_type == type) { + if (next) + next->prev = dist->prev; + else + topology->last_dist = dist->prev; + if (dist->prev) + dist->prev->next = dist->next; + else + topology->first_dist = dist->next; + hwloc_internal_distances_free(dist); + } + } + + return 0; +} + +int hwloc_distances_release_remove(hwloc_topology_t topology, + struct hwloc_distances_s *distances) +{ + struct hwloc_internal_distances_s *dist = hwloc__internal_distances_from_public(topology, distances); + if (!dist) { + errno = EINVAL; + return -1; + } + if (dist->prev) + dist->prev->next = dist->next; + else + topology->first_dist = dist->next; + if (dist->next) + dist->next->prev = dist->prev; + else + topology->last_dist = dist->prev; + hwloc_internal_distances_free(dist); + hwloc_distances_release(topology, distances); + return 0; +} + +/********************************************************* + * Backend functions for adding distances to the topology + */ + +/* cancel a distances handle. only needed internally for now */ +static void +hwloc_backend_distances_add__cancel(struct hwloc_internal_distances_s *dist) +{ + /* everything is set to NULL in hwloc_backend_distances_add_create() */ + free(dist->name); + free(dist->indexes); + free(dist->objs); + free(dist->different_types); + free(dist->values); + free(dist); +} + +/* prepare a distances handle for later commit in the topology. + * we duplicate the caller's name. + */ +hwloc_backend_distances_add_handle_t +hwloc_backend_distances_add_create(hwloc_topology_t topology, + const char *name, unsigned long kind, unsigned long flags) +{ + struct hwloc_internal_distances_s *dist; + + if (flags) { + errno = EINVAL; + goto err; + } + + dist = calloc(1, sizeof(*dist)); + if (!dist) + goto err; + + if (name) { + dist->name = strdup(name); /* ignore failure */ + if (!dist->name) + goto err_with_dist; + } + + dist->kind = kind; + dist->iflags = HWLOC_INTERNAL_DIST_FLAG_NOT_COMMITTED; + + dist->unique_type = HWLOC_OBJ_TYPE_NONE; + dist->different_types = NULL; + dist->nbobjs = 0; + dist->indexes = NULL; + dist->objs = NULL; + dist->values = NULL; + + dist->id = topology->next_dist_id++; + return dist; + + err_with_dist: + hwloc_backend_distances_add__cancel(dist); + err: + return NULL; +} + +/* attach objects and values to a distances handle. + * on success, objs and values arrays are attached and will be freed with the distances. + * on failure, the handle is freed. + */ +int +hwloc_backend_distances_add_values(hwloc_topology_t topology __hwloc_attribute_unused, + hwloc_backend_distances_add_handle_t handle, + unsigned nbobjs, hwloc_obj_t *objs, + hwloc_uint64_t *values, + unsigned long flags) +{ + struct hwloc_internal_distances_s *dist = handle; + hwloc_obj_type_t unique_type, *different_types = NULL; + hwloc_uint64_t *indexes = NULL; + unsigned i, disappeared = 0; + + if (dist->nbobjs || !(dist->iflags & HWLOC_INTERNAL_DIST_FLAG_NOT_COMMITTED)) { + /* target distances is already set */ + errno = EINVAL; + goto err; + } + + if (flags || nbobjs < 2 || !objs || !values) { + errno = EINVAL; + goto err; + } + + /* is there any NULL object? (useful in case of problem during insert in backends) */ + for(i=0; itype; + for(i=1; itype != unique_type) { + unique_type = HWLOC_OBJ_TYPE_NONE; + break; + } + if (unique_type == HWLOC_OBJ_TYPE_NONE) { + /* heterogeneous types */ + different_types = malloc(nbobjs * sizeof(*different_types)); + if (!different_types) + goto err_with_indexes; + for(i=0; itype; + } + + dist->nbobjs = nbobjs; + dist->objs = objs; + dist->iflags |= HWLOC_INTERNAL_DIST_FLAG_OBJS_VALID; + dist->indexes = indexes; + dist->unique_type = unique_type; + dist->different_types = different_types; + dist->values = values; + + if (different_types) + dist->kind |= HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES; + + if (HWLOC_DIST_TYPE_USE_OS_INDEX(dist->unique_type)) { + for(i=0; iindexes[i] = objs[i]->os_index; + } else { + for(i=0; iindexes[i] = objs[i]->gp_index; + } + + return 0; + + err_with_indexes: + free(indexes); + err: + hwloc_backend_distances_add__cancel(dist); + return -1; +} + +/* attach objects and values to a distance handle. + * on success, objs and values arrays are attached and will be freed with the distances. + * on failure, the handle is freed. + */ +static int +hwloc_backend_distances_add_values_by_index(hwloc_topology_t topology __hwloc_attribute_unused, + hwloc_backend_distances_add_handle_t handle, + unsigned nbobjs, hwloc_obj_type_t unique_type, hwloc_obj_type_t *different_types, hwloc_uint64_t *indexes, + hwloc_uint64_t *values) +{ + struct hwloc_internal_distances_s *dist = handle; + hwloc_obj_t *objs; + + if (dist->nbobjs || !(dist->iflags & HWLOC_INTERNAL_DIST_FLAG_NOT_COMMITTED)) { + /* target distances is already set */ + errno = EINVAL; + goto err; + } + if (nbobjs < 2 || !indexes || !values || (unique_type == HWLOC_OBJ_TYPE_NONE && !different_types)) { + errno = EINVAL; + goto err; + } + + objs = malloc(nbobjs * sizeof(*objs)); + if (!objs) + goto err; + + dist->nbobjs = nbobjs; + dist->objs = objs; + dist->indexes = indexes; + dist->unique_type = unique_type; + dist->different_types = different_types; + dist->values = values; + + if (different_types) + dist->kind |= HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES; + + return 0; + + err: + hwloc_backend_distances_add__cancel(dist); + return -1; +} + +/* commit a distances handle. + * on failure, the handle is freed with its objects and values arrays. + */ +int +hwloc_backend_distances_add_commit(hwloc_topology_t topology, + hwloc_backend_distances_add_handle_t handle, + unsigned long flags) +{ + struct hwloc_internal_distances_s *dist = handle; + + if (!dist->nbobjs || !(dist->iflags & HWLOC_INTERNAL_DIST_FLAG_NOT_COMMITTED)) { + /* target distances not ready for commit */ + errno = EINVAL; + goto err; + } + + if ((flags & HWLOC_DISTANCES_ADD_FLAG_GROUP) && !dist->objs) { + /* cannot group without objects, + * and we don't group from XML anyway since the hwloc that generated the XML should have grouped already. + */ + errno = EINVAL; + goto err; + } + + if (topology->grouping && (flags & HWLOC_DISTANCES_ADD_FLAG_GROUP) && !dist->different_types) { + float full_accuracy = 0.f; + float *accuracies; + unsigned nbaccuracies; + + if (flags & HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE) { + accuracies = topology->grouping_accuracies; + nbaccuracies = topology->grouping_nbaccuracies; + } else { + accuracies = &full_accuracy; + nbaccuracies = 1; + } + + if (topology->grouping_verbose) { + fprintf(stderr, "Trying to group objects using distance matrix:\n"); + hwloc_internal_distances_print_matrix(dist); + } + + hwloc__groups_by_distances(topology, dist->nbobjs, dist->objs, dist->values, + dist->kind, nbaccuracies, accuracies, 1 /* check the first matrix */); + } + + if (topology->last_dist) + topology->last_dist->next = dist; + else + topology->first_dist = dist; + dist->prev = topology->last_dist; + dist->next = NULL; + topology->last_dist = dist; + + dist->iflags &= ~HWLOC_INTERNAL_DIST_FLAG_NOT_COMMITTED; + return 0; + + err: + hwloc_backend_distances_add__cancel(dist); + return -1; +} + +/* all-in-one backend function not exported to plugins, only used by XML for now */ +int hwloc_internal_distances_add_by_index(hwloc_topology_t topology, const char *name, + hwloc_obj_type_t unique_type, hwloc_obj_type_t *different_types, unsigned nbobjs, uint64_t *indexes, uint64_t *values, + unsigned long kind, unsigned long flags) +{ + hwloc_backend_distances_add_handle_t handle; + int err; + + handle = hwloc_backend_distances_add_create(topology, name, kind, 0); + if (!handle) + goto err; + + err = hwloc_backend_distances_add_values_by_index(topology, handle, + nbobjs, unique_type, different_types, indexes, + values); + if (err < 0) + goto err; + + /* arrays are now attached to the handle */ + indexes = NULL; + different_types = NULL; + values = NULL; + + err = hwloc_backend_distances_add_commit(topology, handle, flags); + if (err < 0) + goto err; + + return 0; + + err: + free(indexes); + free(different_types); + free(values); + return -1; +} + +/* all-in-one backend function not exported to plugins, used by OS backends */ +int hwloc_internal_distances_add(hwloc_topology_t topology, const char *name, + unsigned nbobjs, hwloc_obj_t *objs, uint64_t *values, + unsigned long kind, unsigned long flags) +{ + hwloc_backend_distances_add_handle_t handle; + int err; + + handle = hwloc_backend_distances_add_create(topology, name, kind, 0); + if (!handle) + goto err; + + err = hwloc_backend_distances_add_values(topology, handle, + nbobjs, objs, + values, + 0); + if (err < 0) + goto err; + + /* arrays are now attached to the handle */ + objs = NULL; + values = NULL; + + err = hwloc_backend_distances_add_commit(topology, handle, flags); + if (err < 0) + goto err; + + return 0; + + err: + free(objs); + free(values); + return -1; +} + +/******************************** + * User API for adding distances + */ + +#define HWLOC_DISTANCES_KIND_FROM_ALL (HWLOC_DISTANCES_KIND_FROM_OS|HWLOC_DISTANCES_KIND_FROM_USER) +#define HWLOC_DISTANCES_KIND_MEANS_ALL (HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH) +#define HWLOC_DISTANCES_KIND_ALL (HWLOC_DISTANCES_KIND_FROM_ALL|HWLOC_DISTANCES_KIND_MEANS_ALL|HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES) +#define HWLOC_DISTANCES_ADD_FLAG_ALL (HWLOC_DISTANCES_ADD_FLAG_GROUP|HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE) + +void * hwloc_distances_add_create(hwloc_topology_t topology, + const char *name, unsigned long kind, + unsigned long flags) +{ + if (!topology->is_loaded) { + errno = EINVAL; + return NULL; + } + if (topology->adopted_shmem_addr) { + errno = EPERM; + return NULL; + } + if ((kind & ~HWLOC_DISTANCES_KIND_ALL) + || hwloc_weight_long(kind & HWLOC_DISTANCES_KIND_FROM_ALL) != 1 + || hwloc_weight_long(kind & HWLOC_DISTANCES_KIND_MEANS_ALL) != 1) { + errno = EINVAL; + return NULL; + } + + return hwloc_backend_distances_add_create(topology, name, kind, flags); +} + +int hwloc_distances_add_values(hwloc_topology_t topology, + void *handle, + unsigned nbobjs, hwloc_obj_t *objs, + hwloc_uint64_t *values, + unsigned long flags) +{ + unsigned i; + uint64_t *_values; + hwloc_obj_t *_objs; + int err; + + /* no strict need to check for duplicates, things shouldn't break */ + + for(i=1; iunique_type; + hwloc_obj_type_t *different_types = dist->different_types; + unsigned nbobjs = dist->nbobjs; + hwloc_obj_t *objs = dist->objs; + uint64_t *indexes = dist->indexes; + unsigned disappeared = 0; + unsigned i; + + if (dist->iflags & HWLOC_INTERNAL_DIST_FLAG_OBJS_VALID) + return 0; + + for(i=0; iindexes, dist->different_types, dist->values, nbobjs, disappeared); + dist->nbobjs -= disappeared; + } + + dist->iflags |= HWLOC_INTERNAL_DIST_FLAG_OBJS_VALID; + return 0; +} + +/* This function may be called with topology->tma set, it cannot free() or realloc() */ +void +hwloc_internal_distances_refresh(hwloc_topology_t topology) +{ + struct hwloc_internal_distances_s *dist, *next; + + for(dist = topology->first_dist; dist; dist = next) { + next = dist->next; + + if (hwloc_internal_distances_refresh_one(topology, dist) < 0) { + assert(!topology->tma || !topology->tma->dontfree); /* this tma cannot fail to allocate */ + if (dist->prev) + dist->prev->next = next; + else + topology->first_dist = next; + if (next) + next->prev = dist->prev; + else + topology->last_dist = dist->prev; + hwloc_internal_distances_free(dist); + continue; + } + } +} + +void +hwloc_internal_distances_invalidate_cached_objs(hwloc_topology_t topology) +{ + struct hwloc_internal_distances_s *dist; + for(dist = topology->first_dist; dist; dist = dist->next) + dist->iflags &= ~HWLOC_INTERNAL_DIST_FLAG_OBJS_VALID; +} + +/****************************************************** + * User API for getting distances + */ + +/* what we actually allocate for user queries, even if we only + * return the distances part of it. + */ +struct hwloc_distances_container_s { + unsigned id; + struct hwloc_distances_s distances; +}; + +#define HWLOC_DISTANCES_CONTAINER_OFFSET ((char*)&((struct hwloc_distances_container_s*)NULL)->distances - (char*)NULL) +#define HWLOC_DISTANCES_CONTAINER(_d) (struct hwloc_distances_container_s *) ( ((char*)_d) - HWLOC_DISTANCES_CONTAINER_OFFSET ) + +static struct hwloc_internal_distances_s * +hwloc__internal_distances_from_public(hwloc_topology_t topology, struct hwloc_distances_s *distances) +{ + struct hwloc_distances_container_s *cont = HWLOC_DISTANCES_CONTAINER(distances); + struct hwloc_internal_distances_s *dist; + for(dist = topology->first_dist; dist; dist = dist->next) + if (dist->id == cont->id) + return dist; + return NULL; +} + +void +hwloc_distances_release(hwloc_topology_t topology __hwloc_attribute_unused, + struct hwloc_distances_s *distances) +{ + struct hwloc_distances_container_s *cont = HWLOC_DISTANCES_CONTAINER(distances); + free(distances->values); + free(distances->objs); + free(cont); +} + +const char * +hwloc_distances_get_name(hwloc_topology_t topology, struct hwloc_distances_s *distances) +{ + struct hwloc_internal_distances_s *dist = hwloc__internal_distances_from_public(topology, distances); + return dist ? dist->name : NULL; +} + +static struct hwloc_distances_s * +hwloc_distances_get_one(hwloc_topology_t topology __hwloc_attribute_unused, + struct hwloc_internal_distances_s *dist) +{ + struct hwloc_distances_container_s *cont; + struct hwloc_distances_s *distances; + unsigned nbobjs; + + cont = malloc(sizeof(*cont)); + if (!cont) + return NULL; + distances = &cont->distances; + + nbobjs = distances->nbobjs = dist->nbobjs; + + distances->objs = malloc(nbobjs * sizeof(hwloc_obj_t)); + if (!distances->objs) + goto out; + memcpy(distances->objs, dist->objs, nbobjs * sizeof(hwloc_obj_t)); + + distances->values = malloc(nbobjs * nbobjs * sizeof(*distances->values)); + if (!distances->values) + goto out_with_objs; + memcpy(distances->values, dist->values, nbobjs*nbobjs*sizeof(*distances->values)); + + distances->kind = dist->kind; + + cont->id = dist->id; + return distances; + + out_with_objs: + free(distances->objs); + out: + free(cont); + return NULL; +} + +static int +hwloc__distances_get(hwloc_topology_t topology, + const char *name, hwloc_obj_type_t type, + unsigned *nrp, struct hwloc_distances_s **distancesp, + unsigned long kind, unsigned long flags __hwloc_attribute_unused) +{ + struct hwloc_internal_distances_s *dist; + unsigned nr = 0, i; + + /* We could return the internal arrays (as const), + * but it would require to prevent removing distances between get() and free(). + * Not performance critical anyway. + */ + + if (flags) { + errno = EINVAL; + return -1; + } + + /* we could refresh only the distances that match, but we won't have many distances anyway, + * so performance is totally negligible. + * + * This is also useful in multithreaded apps that modify the topology. + * They can call any valid hwloc_distances_get() to force a refresh after + * changing the topology, so that future concurrent get() won't cause + * concurrent refresh(). + */ + hwloc_internal_distances_refresh(topology); + + for(dist = topology->first_dist; dist; dist = dist->next) { + unsigned long kind_from = kind & HWLOC_DISTANCES_KIND_FROM_ALL; + unsigned long kind_means = kind & HWLOC_DISTANCES_KIND_MEANS_ALL; + + if (name && (!dist->name || strcmp(name, dist->name))) + continue; + + if (type != HWLOC_OBJ_TYPE_NONE && type != dist->unique_type) + continue; + + if (kind_from && !(kind_from & dist->kind)) + continue; + if (kind_means && !(kind_means & dist->kind)) + continue; + + if (nr < *nrp) { + struct hwloc_distances_s *distances = hwloc_distances_get_one(topology, dist); + if (!distances) + goto error; + distancesp[nr] = distances; + } + nr++; + } + + for(i=nr; i<*nrp; i++) + distancesp[i] = NULL; + *nrp = nr; + return 0; + + error: + for(i=0; iis_loaded) { + errno = EINVAL; + return -1; + } + + return hwloc__distances_get(topology, NULL, HWLOC_OBJ_TYPE_NONE, nrp, distancesp, kind, flags); +} + +int +hwloc_distances_get_by_depth(hwloc_topology_t topology, int depth, + unsigned *nrp, struct hwloc_distances_s **distancesp, + unsigned long kind, unsigned long flags) +{ + hwloc_obj_type_t type; + + if (flags || !topology->is_loaded) { + errno = EINVAL; + return -1; + } + + /* FIXME: passing the depth of a group level may return group distances at a different depth */ + type = hwloc_get_depth_type(topology, depth); + if (type == (hwloc_obj_type_t)-1) { + errno = EINVAL; + return -1; + } + + return hwloc__distances_get(topology, NULL, type, nrp, distancesp, kind, flags); +} + +int +hwloc_distances_get_by_name(hwloc_topology_t topology, const char *name, + unsigned *nrp, struct hwloc_distances_s **distancesp, + unsigned long flags) +{ + if (flags || !topology->is_loaded) { + errno = EINVAL; + return -1; + } + + return hwloc__distances_get(topology, name, HWLOC_OBJ_TYPE_NONE, nrp, distancesp, HWLOC_DISTANCES_KIND_ALL, flags); +} + +int +hwloc_distances_get_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, + unsigned *nrp, struct hwloc_distances_s **distancesp, + unsigned long kind, unsigned long flags) +{ + if (flags || !topology->is_loaded) { + errno = EINVAL; + return -1; + } + + return hwloc__distances_get(topology, NULL, type, nrp, distancesp, kind, flags); +} + +/****************************************************** + * Grouping objects according to distances + */ + +static int hwloc_compare_values(uint64_t a, uint64_t b, float accuracy) +{ + if (accuracy != 0.0f && fabsf((float)a-(float)b) < (float)a * accuracy) + return 0; + return a < b ? -1 : a == b ? 0 : 1; +} + +/* + * Place objects in groups if they are in a transitive graph of minimal values. + * Return how many groups were created, or 0 if some incomplete distance graphs were found. + */ +static unsigned +hwloc__find_groups_by_min_distance(unsigned nbobjs, + uint64_t *_values, + float accuracy, + unsigned *groupids, + int verbose) +{ + uint64_t min_distance = UINT64_MAX; + unsigned groupid = 1; + unsigned i,j,k; + unsigned skipped = 0; + +#define VALUE(i, j) _values[(i) * nbobjs + (j)] + + memset(groupids, 0, nbobjs*sizeof(*groupids)); + + /* find the minimal distance */ + for(i=0; igrouping_verbose; + hwloc_obj_t *groupobjs; + unsigned * groupsizes; + uint64_t *groupvalues; + unsigned failed = 0; + + if (nbobjs <= 2) + return; + + if (!(kind & HWLOC_DISTANCES_KIND_MEANS_LATENCY)) + /* don't know use to use those for grouping */ + /* TODO hwloc__find_groups_by_max_distance() for bandwidth */ + return; + + groupids = malloc(nbobjs * sizeof(*groupids)); + if (!groupids) + return; + + for(i=0; itype), accuracies[i]); + if (needcheck && hwloc__check_grouping_matrix(nbobjs, _values, accuracies[i], verbose) < 0) + continue; + nbgroups = hwloc__find_groups_by_min_distance(nbobjs, _values, accuracies[i], groupids, verbose); + if (nbgroups) + break; + } + if (!nbgroups) + goto out_with_groupids; + + groupobjs = malloc(nbgroups * sizeof(*groupobjs)); + groupsizes = malloc(nbgroups * sizeof(*groupsizes)); + groupvalues = malloc(nbgroups * nbgroups * sizeof(*groupvalues)); + if (!groupobjs || !groupsizes || !groupvalues) + goto out_with_groups; + + /* create new Group objects and record their size */ + memset(&(groupsizes[0]), 0, sizeof(groupsizes[0]) * nbgroups); + for(i=0; icpuset = hwloc_bitmap_alloc(); + group_obj->attr->group.kind = HWLOC_GROUP_KIND_DISTANCE; + group_obj->attr->group.subkind = topology->grouping_next_subkind; + for (j=0; jcpuset); + res_obj = hwloc__insert_object_by_cpuset(topology, NULL, group_obj, + (kind & HWLOC_DISTANCES_KIND_FROM_USER) ? "distances:fromuser:group" : "distances:group"); + /* res_obj may be NULL on failure to insert. */ + if (!res_obj) + failed++; + /* or it may be different from groupobjs if we got groups from XML import before grouping */ + groupobjs[i] = res_obj; + } + topology->grouping_next_subkind++; + + if (failed) + /* don't try to group above if we got a NULL group here, just keep this incomplete level */ + goto out_with_groups; + + /* factorize values */ + memset(&(groupvalues[0]), 0, sizeof(groupvalues[0]) * nbgroups * nbgroups); +#undef VALUE +#define VALUE(i, j) _values[(i) * nbobjs + (j)] +#define GROUP_VALUE(i, j) groupvalues[(i) * nbgroups + (j)] + for(i=0; ivalues; + hwloc_obj_t *objs = distances->objs; + unsigned i, nb, nbobjs = distances->nbobjs; + hwloc_obj_type_t unique_type; + + for(i=0, nb=0; inbobjs = nb; + + /* update HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES for convenience */ + unique_type = objs[0]->type; + for(i=1; itype != unique_type) { + unique_type = HWLOC_OBJ_TYPE_NONE; + break; + } + if (unique_type == HWLOC_OBJ_TYPE_NONE) + distances->kind |= HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES; + else + distances->kind &= ~HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES; + + return 0; +} + +static int +hwloc__distances_transform_links(struct hwloc_distances_s *distances) +{ + /* FIXME: we should look for the greatest common denominator + * but we just use the smallest positive value, that's enough for current use-cases. + * We'll return -1 in other cases. + */ + hwloc_uint64_t divider, *values = distances->values; + unsigned i, nbobjs = distances->nbobjs; + + if (!(distances->kind & HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH)) { + errno = EINVAL; + return -1; + } + + for(i=0; isubtype && !strcmp(obj->subtype, "NVSwitch"); +} + +static int +hwloc__distances_transform_merge_switch_ports(hwloc_topology_t topology, + struct hwloc_distances_s *distances) +{ + struct hwloc_internal_distances_s *dist = hwloc__internal_distances_from_public(topology, distances); + hwloc_obj_t *objs = distances->objs; + hwloc_uint64_t *values = distances->values; + unsigned first, i, j, nbobjs = distances->nbobjs; + + if (strcmp(dist->name, "NVLinkBandwidth")) { + errno = EINVAL; + return -1; + } + + /* find the first port */ + first = (unsigned) -1; + for(i=0; iobjs; + hwloc_uint64_t *values = distances->values; + unsigned nbobjs = distances->nbobjs; + unsigned i, j, k; + + if (strcmp(dist->name, "NVLinkBandwidth")) { + errno = EINVAL; + return -1; + } + + for(i=0; i bw_sw2j ? bw_sw2j : bw_i2sw; + } + } + + return 0; +} + +int +hwloc_distances_transform(hwloc_topology_t topology, + struct hwloc_distances_s *distances, + enum hwloc_distances_transform_e transform, + void *transform_attr, + unsigned long flags) +{ + if (flags || transform_attr) { + errno = EINVAL; + return -1; + } + + switch (transform) { + case HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL: + return hwloc__distances_transform_remove_null(distances); + case HWLOC_DISTANCES_TRANSFORM_LINKS: + return hwloc__distances_transform_links(distances); + case HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS: + { + int err; + err = hwloc__distances_transform_merge_switch_ports(topology, distances); + if (!err) + err = hwloc__distances_transform_remove_null(distances); + return err; + } + case HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE: + return hwloc__distances_transform_transitive_closure(topology, distances); + default: + errno = EINVAL; + return -1; + } +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/hwloc.dtd b/3rd-party/hwloc-2.7.1/hwloc/hwloc.dtd new file mode 100644 index 0000000000..54b6fa290b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/hwloc.dtd @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/hwloc/hwloc2-diff.dtd b/3rd-party/hwloc-2.7.1/hwloc/hwloc2-diff.dtd new file mode 100644 index 0000000000..44e182c3b9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/hwloc2-diff.dtd @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/hwloc/hwloc2.dtd b/3rd-party/hwloc-2.7.1/hwloc/hwloc2.dtd new file mode 100644 index 0000000000..adc014b163 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/hwloc2.dtd @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/hwloc/memattrs.c b/3rd-party/hwloc-2.7.1/hwloc/memattrs.c new file mode 100644 index 0000000000..92efe5757d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/memattrs.c @@ -0,0 +1,1199 @@ +/* + * Copyright © 2020-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" + + +/***************************** + * Attributes + */ + +static __hwloc_inline +hwloc_uint64_t hwloc__memattr_get_convenience_value(hwloc_memattr_id_t id, + hwloc_obj_t node) +{ + if (id == HWLOC_MEMATTR_ID_CAPACITY) + return node->attr->numanode.local_memory; + else if (id == HWLOC_MEMATTR_ID_LOCALITY) + return hwloc_bitmap_weight(node->cpuset); + else + assert(0); + return 0; /* shut up the compiler */ +} + +void +hwloc_internal_memattrs_init(struct hwloc_topology *topology) +{ + topology->nr_memattrs = 0; + topology->memattrs = NULL; +} + +static void +hwloc__setup_memattr(struct hwloc_internal_memattr_s *imattr, + char *name, + unsigned long flags, + unsigned long iflags) +{ + imattr->name = name; + imattr->flags = flags; + imattr->iflags = iflags; + + imattr->nr_targets = 0; + imattr->targets = NULL; +} + +void +hwloc_internal_memattrs_prepare(struct hwloc_topology *topology) +{ +#define NR_DEFAULT_MEMATTRS 4 + topology->memattrs = malloc(NR_DEFAULT_MEMATTRS * sizeof(*topology->memattrs)); + if (!topology->memattrs) + return; + + assert(HWLOC_MEMATTR_ID_CAPACITY < NR_DEFAULT_MEMATTRS); + hwloc__setup_memattr(&topology->memattrs[HWLOC_MEMATTR_ID_CAPACITY], + (char *) "Capacity", + HWLOC_MEMATTR_FLAG_HIGHER_FIRST, + HWLOC_IMATTR_FLAG_STATIC_NAME|HWLOC_IMATTR_FLAG_CONVENIENCE); + + assert(HWLOC_MEMATTR_ID_LOCALITY < NR_DEFAULT_MEMATTRS); + hwloc__setup_memattr(&topology->memattrs[HWLOC_MEMATTR_ID_LOCALITY], + (char *) "Locality", + HWLOC_MEMATTR_FLAG_LOWER_FIRST, + HWLOC_IMATTR_FLAG_STATIC_NAME|HWLOC_IMATTR_FLAG_CONVENIENCE); + + assert(HWLOC_MEMATTR_ID_BANDWIDTH < NR_DEFAULT_MEMATTRS); + hwloc__setup_memattr(&topology->memattrs[HWLOC_MEMATTR_ID_BANDWIDTH], + (char *) "Bandwidth", + HWLOC_MEMATTR_FLAG_HIGHER_FIRST|HWLOC_MEMATTR_FLAG_NEED_INITIATOR, + HWLOC_IMATTR_FLAG_STATIC_NAME); + + assert(HWLOC_MEMATTR_ID_LATENCY < NR_DEFAULT_MEMATTRS); + hwloc__setup_memattr(&topology->memattrs[HWLOC_MEMATTR_ID_LATENCY], + (char *) "Latency", + HWLOC_MEMATTR_FLAG_LOWER_FIRST|HWLOC_MEMATTR_FLAG_NEED_INITIATOR, + HWLOC_IMATTR_FLAG_STATIC_NAME); + + topology->nr_memattrs = NR_DEFAULT_MEMATTRS; +} + +static void +hwloc__imi_destroy(struct hwloc_internal_memattr_initiator_s *imi) +{ + if (imi->initiator.type == HWLOC_LOCATION_TYPE_CPUSET) + hwloc_bitmap_free(imi->initiator.location.cpuset); +} + +static void +hwloc__imtg_destroy(struct hwloc_internal_memattr_s *imattr, + struct hwloc_internal_memattr_target_s *imtg) +{ + if (imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR) { + /* only attributes with initiators may have something to free() in the array */ + unsigned k; + for(k=0; knr_initiators; k++) + hwloc__imi_destroy(&imtg->initiators[k]); + } + free(imtg->initiators); +} + +void +hwloc_internal_memattrs_destroy(struct hwloc_topology *topology) +{ + unsigned id; + for(id=0; idnr_memattrs; id++) { + struct hwloc_internal_memattr_s *imattr = &topology->memattrs[id]; + unsigned j; + for(j=0; jnr_targets; j++) + hwloc__imtg_destroy(imattr, &imattr->targets[j]); + free(imattr->targets); + if (!(imattr->iflags & HWLOC_IMATTR_FLAG_STATIC_NAME)) + free(imattr->name); + } + free(topology->memattrs); + + topology->memattrs = NULL; + topology->nr_memattrs = 0; +} + +int +hwloc_internal_memattrs_dup(struct hwloc_topology *new, struct hwloc_topology *old) +{ + struct hwloc_tma *tma = new->tma; + struct hwloc_internal_memattr_s *imattrs; + hwloc_memattr_id_t id; + + /* old->nr_memattrs is always > 0 thanks to default memattrs */ + + imattrs = hwloc_tma_malloc(tma, old->nr_memattrs * sizeof(*imattrs)); + if (!imattrs) + return -1; + new->memattrs = imattrs; + new->nr_memattrs = old->nr_memattrs; + memcpy(imattrs, old->memattrs, old->nr_memattrs * sizeof(*imattrs)); + + for(id=0; idnr_memattrs; id++) { + struct hwloc_internal_memattr_s *oimattr = &old->memattrs[id]; + struct hwloc_internal_memattr_s *nimattr = &imattrs[id]; + unsigned j; + + assert(oimattr->name); + nimattr->name = hwloc_tma_strdup(tma, oimattr->name); + if (!nimattr->name) { + assert(!tma || !tma->dontfree); /* this tma cannot fail to allocate */ + new->nr_memattrs = id; + goto failed; + } + nimattr->iflags &= ~HWLOC_IMATTR_FLAG_STATIC_NAME; + nimattr->iflags &= ~HWLOC_IMATTR_FLAG_CACHE_VALID; /* cache will need refresh */ + + if (!oimattr->nr_targets) + continue; + + nimattr->targets = hwloc_tma_malloc(tma, oimattr->nr_targets * sizeof(*nimattr->targets)); + if (!nimattr->targets) { + free(nimattr->name); + new->nr_memattrs = id; + goto failed; + } + memcpy(nimattr->targets, oimattr->targets, oimattr->nr_targets * sizeof(*nimattr->targets)); + + for(j=0; jnr_targets; j++) { + struct hwloc_internal_memattr_target_s *oimtg = &oimattr->targets[j]; + struct hwloc_internal_memattr_target_s *nimtg = &nimattr->targets[j]; + unsigned k; + + nimtg->obj = NULL; /* cache will need refresh */ + + if (!oimtg->nr_initiators) + continue; + + nimtg->initiators = hwloc_tma_malloc(tma, oimtg->nr_initiators * sizeof(*nimtg->initiators)); + if (!nimtg->initiators) { + nimattr->nr_targets = j; + new->nr_memattrs = id+1; + goto failed; + } + memcpy(nimtg->initiators, oimtg->initiators, oimtg->nr_initiators * sizeof(*nimtg->initiators)); + + for(k=0; knr_initiators; k++) { + struct hwloc_internal_memattr_initiator_s *oimi = &oimtg->initiators[k]; + struct hwloc_internal_memattr_initiator_s *nimi = &nimtg->initiators[k]; + if (oimi->initiator.type == HWLOC_LOCATION_TYPE_CPUSET) { + nimi->initiator.location.cpuset = hwloc_bitmap_tma_dup(tma, oimi->initiator.location.cpuset); + if (!nimi->initiator.location.cpuset) { + nimtg->nr_initiators = k; + nimattr->nr_targets = j+1; + new->nr_memattrs = id+1; + goto failed; + } + } else if (oimi->initiator.type == HWLOC_LOCATION_TYPE_OBJECT) { + nimi->initiator.location.object.obj = NULL; /* cache will need refresh */ + } + } + } + } + return 0; + + failed: + hwloc_internal_memattrs_destroy(new); + return -1; +} + +int +hwloc_memattr_get_by_name(hwloc_topology_t topology, + const char *name, + hwloc_memattr_id_t *idp) +{ + unsigned id; + for(id=0; idnr_memattrs; id++) { + if (!strcmp(topology->memattrs[id].name, name)) { + *idp = id; + return 0; + } + } + errno = EINVAL; + return -1; +} + +int +hwloc_memattr_get_name(hwloc_topology_t topology, + hwloc_memattr_id_t id, + const char **namep) +{ + if (id >= topology->nr_memattrs) { + errno = EINVAL; + return -1; + } + *namep = topology->memattrs[id].name; + return 0; +} + +int +hwloc_memattr_get_flags(hwloc_topology_t topology, + hwloc_memattr_id_t id, + unsigned long *flagsp) +{ + if (id >= topology->nr_memattrs) { + errno = EINVAL; + return -1; + } + *flagsp = topology->memattrs[id].flags; + return 0; +} + +int +hwloc_memattr_register(hwloc_topology_t topology, + const char *_name, + unsigned long flags, + hwloc_memattr_id_t *id) +{ + struct hwloc_internal_memattr_s *newattrs; + char *name; + unsigned i; + + /* check flags */ + if (flags & ~(HWLOC_MEMATTR_FLAG_NEED_INITIATOR|HWLOC_MEMATTR_FLAG_LOWER_FIRST|HWLOC_MEMATTR_FLAG_HIGHER_FIRST)) { + errno = EINVAL; + return -1; + } + if (!(flags & (HWLOC_MEMATTR_FLAG_LOWER_FIRST|HWLOC_MEMATTR_FLAG_HIGHER_FIRST))) { + errno = EINVAL; + return -1; + } + if ((flags & (HWLOC_MEMATTR_FLAG_LOWER_FIRST|HWLOC_MEMATTR_FLAG_HIGHER_FIRST)) + == (HWLOC_MEMATTR_FLAG_LOWER_FIRST|HWLOC_MEMATTR_FLAG_HIGHER_FIRST)) { + errno = EINVAL; + return -1; + } + + if (!_name) { + errno = EINVAL; + return -1; + } + + /* check name isn't already used */ + for(i=0; inr_memattrs; i++) { + if (!strcmp(_name, topology->memattrs[i].name)) { + errno = EBUSY; + return -1; + } + } + + name = strdup(_name); + if (!name) + return -1; + + newattrs = realloc(topology->memattrs, (topology->nr_memattrs + 1) * sizeof(*topology->memattrs)); + if (!newattrs) { + free(name); + return -1; + } + + hwloc__setup_memattr(&newattrs[topology->nr_memattrs], + name, flags, 0); + + /* memattr valid when just created */ + newattrs[topology->nr_memattrs].iflags |= HWLOC_IMATTR_FLAG_CACHE_VALID; + + *id = topology->nr_memattrs; + topology->nr_memattrs++; + topology->memattrs = newattrs; + return 0; +} + + +/*************************** + * Internal Locations + */ + +/* return 1 if cpuset/obj matchs the existing initiator location, + * for instance if the cpuset of query is included in the cpuset of existing + */ +static int +match_internal_location(struct hwloc_internal_location_s *iloc, + struct hwloc_internal_memattr_initiator_s *imi) +{ + if (iloc->type != imi->initiator.type) + return 0; + switch (iloc->type) { + case HWLOC_LOCATION_TYPE_CPUSET: + return hwloc_bitmap_isincluded(iloc->location.cpuset, imi->initiator.location.cpuset); + case HWLOC_LOCATION_TYPE_OBJECT: + return iloc->location.object.type == imi->initiator.location.object.type + && iloc->location.object.gp_index == imi->initiator.location.object.gp_index; + default: + return 0; + } +} + +static int +to_internal_location(struct hwloc_internal_location_s *iloc, + struct hwloc_location *location) +{ + iloc->type = location->type; + + switch (location->type) { + case HWLOC_LOCATION_TYPE_CPUSET: + if (!location->location.cpuset || hwloc_bitmap_iszero(location->location.cpuset)) { + errno = EINVAL; + return -1; + } + iloc->location.cpuset = location->location.cpuset; + return 0; + case HWLOC_LOCATION_TYPE_OBJECT: + if (!location->location.object) { + errno = EINVAL; + return -1; + } + iloc->location.object.gp_index = location->location.object->gp_index; + iloc->location.object.type = location->location.object->type; + return 0; + default: + errno = EINVAL; + return -1; + } +} + +static int +from_internal_location(struct hwloc_internal_location_s *iloc, + struct hwloc_location *location) +{ + location->type = iloc->type; + + switch (iloc->type) { + case HWLOC_LOCATION_TYPE_CPUSET: + location->location.cpuset = iloc->location.cpuset; + return 0; + case HWLOC_LOCATION_TYPE_OBJECT: + /* requires the cache to be refreshed */ + location->location.object = iloc->location.object.obj; + if (!location->location.object) + return -1; + return 0; + default: + errno = EINVAL; + return -1; + } +} + + +/************************ + * Refreshing + */ + +static int +hwloc__imi_refresh(struct hwloc_topology *topology, + struct hwloc_internal_memattr_initiator_s *imi) +{ + switch (imi->initiator.type) { + case HWLOC_LOCATION_TYPE_CPUSET: { + hwloc_bitmap_and(imi->initiator.location.cpuset, imi->initiator.location.cpuset, topology->levels[0][0]->cpuset); + if (hwloc_bitmap_iszero(imi->initiator.location.cpuset)) { + hwloc__imi_destroy(imi); + return -1; + } + return 0; + } + case HWLOC_LOCATION_TYPE_OBJECT: { + hwloc_obj_t obj = hwloc_get_obj_by_type_and_gp_index(topology, + imi->initiator.location.object.type, + imi->initiator.location.object.gp_index); + if (!obj) { + hwloc__imi_destroy(imi); + return -1; + } + imi->initiator.location.object.obj = obj; + return 0; + } + default: + assert(0); + } + return -1; +} + +static int +hwloc__imtg_refresh(struct hwloc_topology *topology, + struct hwloc_internal_memattr_s *imattr, + struct hwloc_internal_memattr_target_s *imtg) +{ + hwloc_obj_t node; + + /* no need to refresh convenience memattrs */ + assert(!(imattr->iflags & HWLOC_IMATTR_FLAG_CONVENIENCE)); + + /* check the target object */ + if (imtg->gp_index == (hwloc_uint64_t) -1) { + /* only NUMA and PU may work with os_index, and only NUMA is currently used internally */ + if (imtg->type == HWLOC_OBJ_NUMANODE) + node = hwloc_get_numanode_obj_by_os_index(topology, imtg->os_index); + else if (imtg->type == HWLOC_OBJ_PU) + node = hwloc_get_pu_obj_by_os_index(topology, imtg->os_index); + else + node = NULL; + } else { + node = hwloc_get_obj_by_type_and_gp_index(topology, imtg->type, imtg->gp_index); + } + if (!node) { + hwloc__imtg_destroy(imattr, imtg); + return -1; + } + + /* save the gp_index in case it wasn't initialized yet */ + imtg->gp_index = node->gp_index; + /* cache the object */ + imtg->obj = node; + + if (imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR) { + /* check the initiators */ + unsigned k, l; + for(k=0, l=0; knr_initiators; k++) { + int err = hwloc__imi_refresh(topology, &imtg->initiators[k]); + if (err < 0) + continue; + if (k != l) + memcpy(&imtg->initiators[l], &imtg->initiators[k], sizeof(*imtg->initiators)); + l++; + } + imtg->nr_initiators = l; + if (!imtg->nr_initiators) { + hwloc__imtg_destroy(imattr, imtg); + return -1; + } + } + return 0; +} + +static void +hwloc__imattr_refresh(struct hwloc_topology *topology, + struct hwloc_internal_memattr_s *imattr) +{ + unsigned j, k; + for(j=0, k=0; jnr_targets; j++) { + int ret = hwloc__imtg_refresh(topology, imattr, &imattr->targets[j]); + if (!ret) { + /* target still valid, move it if some former targets were removed */ + if (j != k) + memcpy(&imattr->targets[k], &imattr->targets[j], sizeof(*imattr->targets)); + k++; + } + } + imattr->nr_targets = k; + imattr->iflags |= HWLOC_IMATTR_FLAG_CACHE_VALID; +} + +void +hwloc_internal_memattrs_refresh(struct hwloc_topology *topology) +{ + unsigned id; + for(id=0; idnr_memattrs; id++) { + struct hwloc_internal_memattr_s *imattr = &topology->memattrs[id]; + if (imattr->iflags & HWLOC_IMATTR_FLAG_CACHE_VALID) + /* nothing to refresh */ + continue; + hwloc__imattr_refresh(topology, imattr); + } +} + +void +hwloc_internal_memattrs_need_refresh(struct hwloc_topology *topology) +{ + unsigned id; + for(id=0; idnr_memattrs; id++) { + struct hwloc_internal_memattr_s *imattr = &topology->memattrs[id]; + if (imattr->iflags & HWLOC_IMATTR_FLAG_CONVENIENCE) + /* no need to refresh convenience memattrs */ + continue; + imattr->iflags &= ~HWLOC_IMATTR_FLAG_CACHE_VALID; + } +} + + +/******************************** + * Targets + */ + +static struct hwloc_internal_memattr_target_s * +hwloc__memattr_get_target(struct hwloc_internal_memattr_s *imattr, + hwloc_obj_type_t target_type, + hwloc_uint64_t target_gp_index, + unsigned target_os_index, + int create) +{ + struct hwloc_internal_memattr_target_s *news, *new; + unsigned j; + + for(j=0; jnr_targets; j++) { + if (target_type == imattr->targets[j].type) + if ((target_gp_index != (hwloc_uint64_t)-1 && target_gp_index == imattr->targets[j].gp_index) + || (target_os_index != (unsigned)-1 && target_os_index == imattr->targets[j].os_index)) + return &imattr->targets[j]; + } + if (!create) + return NULL; + + news = realloc(imattr->targets, (imattr->nr_targets+1)*sizeof(*imattr->targets)); + if (!news) + return NULL; + imattr->targets = news; + + /* FIXME sort targets? by logical index at the end of load? */ + + new = &news[imattr->nr_targets]; + new->type = target_type; + new->gp_index = target_gp_index; + new->os_index = target_os_index; + + /* cached object will be refreshed later on actual access */ + new->obj = NULL; + imattr->iflags &= ~HWLOC_IMATTR_FLAG_CACHE_VALID; + /* When setting a value after load(), the caller has the target object + * (and initiator object, if not CPU set). Hence, we could avoid invalidating + * the cache here. + * The overhead of the imattr-wide refresh isn't high enough so far + * to justify making the cache management more complex. + */ + + new->nr_initiators = 0; + new->initiators = NULL; + new->noinitiator_value = 0; + imattr->nr_targets++; + return new; +} + +static struct hwloc_internal_memattr_initiator_s * +hwloc__memattr_get_initiator_from_location(struct hwloc_internal_memattr_s *imattr, + struct hwloc_internal_memattr_target_s *imtg, + struct hwloc_location *location); + +int +hwloc_memattr_get_targets(hwloc_topology_t topology, + hwloc_memattr_id_t id, + struct hwloc_location *initiator, + unsigned long flags, + unsigned *nrp, hwloc_obj_t *targets, hwloc_uint64_t *values) +{ + struct hwloc_internal_memattr_s *imattr; + unsigned i, found = 0, max; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (!nrp || (*nrp && !targets)) { + errno = EINVAL; + return -1; + } + max = *nrp; + + if (id >= topology->nr_memattrs) { + errno = EINVAL; + return -1; + } + imattr = &topology->memattrs[id]; + + if (imattr->iflags & HWLOC_IMATTR_FLAG_CONVENIENCE) { + /* convenience attributes */ + for(i=0; ; i++) { + hwloc_obj_t node = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, i); + if (!node) + break; + if (foundiflags & HWLOC_IMATTR_FLAG_CACHE_VALID)) + hwloc__imattr_refresh(topology, imattr); + + for(i=0; inr_targets; i++) { + struct hwloc_internal_memattr_target_s *imtg = &imattr->targets[i]; + hwloc_uint64_t value = 0; + + if (imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR) { + if (initiator) { + /* find a matching initiator */ + struct hwloc_internal_memattr_initiator_s *imi = hwloc__memattr_get_initiator_from_location(imattr, imtg, initiator); + if (!imi) + continue; + value = imi->value; + } + } else { + value = imtg->noinitiator_value; + } + + if (foundobj; + if (values) + values[found] = value; + } + found++; + } + + done: + *nrp = found; + return 0; +} + + +/************************ + * Initiators + */ + +static struct hwloc_internal_memattr_initiator_s * +hwloc__memattr_target_get_initiator(struct hwloc_internal_memattr_target_s *imtg, + struct hwloc_internal_location_s *iloc, + int create) +{ + struct hwloc_internal_memattr_initiator_s *news, *new; + unsigned k; + + for(k=0; knr_initiators; k++) { + struct hwloc_internal_memattr_initiator_s *imi = &imtg->initiators[k]; + if (match_internal_location(iloc, imi)) { + return imi; + } + } + + if (!create) + return NULL; + + news = realloc(imtg->initiators, (imtg->nr_initiators+1)*sizeof(*imtg->initiators)); + if (!news) + return NULL; + new = &news[imtg->nr_initiators]; + + new->initiator = *iloc; + if (iloc->type == HWLOC_LOCATION_TYPE_CPUSET) { + new->initiator.location.cpuset = hwloc_bitmap_dup(iloc->location.cpuset); + if (!new->initiator.location.cpuset) + goto out_with_realloc; + } + + imtg->nr_initiators++; + imtg->initiators = news; + return new; + + out_with_realloc: + imtg->initiators = news; + return NULL; +} + +static struct hwloc_internal_memattr_initiator_s * +hwloc__memattr_get_initiator_from_location(struct hwloc_internal_memattr_s *imattr, + struct hwloc_internal_memattr_target_s *imtg, + struct hwloc_location *location) +{ + struct hwloc_internal_memattr_initiator_s *imi; + struct hwloc_internal_location_s iloc; + + assert(imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR); + + /* use the initiator value */ + if (!location) { + errno = EINVAL; + return NULL; + } + + if (to_internal_location(&iloc, location) < 0) { + errno = EINVAL; + return NULL; + } + + imi = hwloc__memattr_target_get_initiator(imtg, &iloc, 0); + if (!imi) { + errno = EINVAL; + return NULL; + } + + return imi; +} + +int +hwloc_memattr_get_initiators(hwloc_topology_t topology, + hwloc_memattr_id_t id, + hwloc_obj_t target_node, + unsigned long flags, + unsigned *nrp, struct hwloc_location *initiators, hwloc_uint64_t *values) +{ + struct hwloc_internal_memattr_s *imattr; + struct hwloc_internal_memattr_target_s *imtg; + unsigned i, max; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (!nrp || (*nrp && !initiators)) { + errno = EINVAL; + return -1; + } + max = *nrp; + + if (id >= topology->nr_memattrs) { + errno = EINVAL; + return -1; + } + imattr = &topology->memattrs[id]; + if (!(imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR)) { + *nrp = 0; + return 0; + } + + /* all convenience attributes have no initiators */ + assert(!(imattr->iflags & HWLOC_IMATTR_FLAG_CONVENIENCE)); + + if (!(imattr->iflags & HWLOC_IMATTR_FLAG_CACHE_VALID)) + hwloc__imattr_refresh(topology, imattr); + + imtg = hwloc__memattr_get_target(imattr, target_node->type, target_node->gp_index, target_node->os_index, 0); + if (!imtg) { + errno = EINVAL; + return -1; + } + + for(i=0; inr_initiators && iinitiators[i]; + int err = from_internal_location(&imi->initiator, &initiators[i]); + assert(!err); + if (values) + /* no need to handle capacity/locality special cases here, those are initiator-less attributes */ + values[i] = imi->value; + } + + *nrp = imtg->nr_initiators; + return 0; +} + + +/************************** + * Values + */ + +int +hwloc_memattr_get_value(hwloc_topology_t topology, + hwloc_memattr_id_t id, + hwloc_obj_t target_node, + struct hwloc_location *initiator, + unsigned long flags, + hwloc_uint64_t *valuep) +{ + struct hwloc_internal_memattr_s *imattr; + struct hwloc_internal_memattr_target_s *imtg; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (id >= topology->nr_memattrs) { + errno = EINVAL; + return -1; + } + imattr = &topology->memattrs[id]; + + if (imattr->iflags & HWLOC_IMATTR_FLAG_CONVENIENCE) { + /* convenience attributes */ + *valuep = hwloc__memattr_get_convenience_value(id, target_node); + return 0; + } + + /* normal attributes */ + + if (!(imattr->iflags & HWLOC_IMATTR_FLAG_CACHE_VALID)) + hwloc__imattr_refresh(topology, imattr); + + imtg = hwloc__memattr_get_target(imattr, target_node->type, target_node->gp_index, target_node->os_index, 0); + if (!imtg) { + errno = EINVAL; + return -1; + } + + if (imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR) { + /* find the initiator and set its value */ + struct hwloc_internal_memattr_initiator_s *imi = hwloc__memattr_get_initiator_from_location(imattr, imtg, initiator); + if (!imi) + return -1; + *valuep = imi->value; + } else { + /* get the no-initiator value */ + *valuep = imtg->noinitiator_value; + } + return 0; +} + +static int +hwloc__internal_memattr_set_value(hwloc_topology_t topology, + hwloc_memattr_id_t id, + hwloc_obj_type_t target_type, + hwloc_uint64_t target_gp_index, + unsigned target_os_index, + struct hwloc_internal_location_s *initiator, + hwloc_uint64_t value) +{ + struct hwloc_internal_memattr_s *imattr; + struct hwloc_internal_memattr_target_s *imtg; + + if (id >= topology->nr_memattrs) { + /* something bad happened during init */ + errno = EINVAL; + return -1; + } + imattr = &topology->memattrs[id]; + + if (imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR) { + /* check given initiator */ + if (!initiator) { + errno = EINVAL; + return -1; + } + } + + if (imattr->iflags & HWLOC_IMATTR_FLAG_CONVENIENCE) { + /* convenience attributes are read-only */ + errno = EINVAL; + return -1; + } + + if (topology->is_loaded && !(imattr->iflags & HWLOC_IMATTR_FLAG_CACHE_VALID)) + /* don't refresh when adding values during load (some nodes might not be ready yet), + * we'll refresh later + */ + hwloc__imattr_refresh(topology, imattr); + + imtg = hwloc__memattr_get_target(imattr, target_type, target_gp_index, target_os_index, 1); + if (!imtg) + return -1; + + if (imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR) { + /* find/add the initiator and set its value */ + // FIXME what if cpuset is larger than an existing one ? + struct hwloc_internal_memattr_initiator_s *imi = hwloc__memattr_target_get_initiator(imtg, initiator, 1); + if (!imi) + return -1; + imi->value = value; + + } else { + /* set the no-initiator value */ + imtg->noinitiator_value = value; + } + + return 0; + +} + +int +hwloc_internal_memattr_set_value(hwloc_topology_t topology, + hwloc_memattr_id_t id, + hwloc_obj_type_t target_type, + hwloc_uint64_t target_gp_index, + unsigned target_os_index, + struct hwloc_internal_location_s *initiator, + hwloc_uint64_t value) +{ + assert(id != HWLOC_MEMATTR_ID_CAPACITY); + assert(id != HWLOC_MEMATTR_ID_LOCALITY); + + return hwloc__internal_memattr_set_value(topology, id, target_type, target_gp_index, target_os_index, initiator, value); +} + +int +hwloc_memattr_set_value(hwloc_topology_t topology, + hwloc_memattr_id_t id, + hwloc_obj_t target_node, + struct hwloc_location *initiator, + unsigned long flags, + hwloc_uint64_t value) +{ + struct hwloc_internal_location_s iloc, *ilocp; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (initiator) { + if (to_internal_location(&iloc, initiator) < 0) { + errno = EINVAL; + return -1; + } + ilocp = &iloc; + } else { + ilocp = NULL; + } + + return hwloc__internal_memattr_set_value(topology, id, target_node->type, target_node->gp_index, target_node->os_index, ilocp, value); +} + + +/********************** + * Best target + */ + +static void +hwloc__update_best_target(hwloc_obj_t *best_obj, hwloc_uint64_t *best_value, int *found, + hwloc_obj_t new_obj, hwloc_uint64_t new_value, + int keep_highest) +{ + if (*found) { + if (keep_highest) { + if (new_value <= *best_value) + return; + } else { + if (new_value >= *best_value) + return; + } + } + + *best_obj = new_obj; + *best_value = new_value; + *found = 1; +} + +int +hwloc_memattr_get_best_target(hwloc_topology_t topology, + hwloc_memattr_id_t id, + struct hwloc_location *initiator, + unsigned long flags, + hwloc_obj_t *bestp, hwloc_uint64_t *valuep) +{ + struct hwloc_internal_memattr_s *imattr; + hwloc_uint64_t best_value = 0; /* shutup the compiler */ + hwloc_obj_t best = NULL; + int found = 0; + unsigned j; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (id >= topology->nr_memattrs) { + errno = EINVAL; + return -1; + } + imattr = &topology->memattrs[id]; + + if (imattr->iflags & HWLOC_IMATTR_FLAG_CONVENIENCE) { + /* convenience attributes */ + for(j=0; ; j++) { + hwloc_obj_t node = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, j); + hwloc_uint64_t value; + if (!node) + break; + value = hwloc__memattr_get_convenience_value(id, node); + hwloc__update_best_target(&best, &best_value, &found, + node, value, + imattr->flags & HWLOC_MEMATTR_FLAG_HIGHER_FIRST); + } + goto done; + } + + /* normal attributes */ + + if (!(imattr->iflags & HWLOC_IMATTR_FLAG_CACHE_VALID)) + /* not strictly need */ + hwloc__imattr_refresh(topology, imattr); + + for(j=0; jnr_targets; j++) { + struct hwloc_internal_memattr_target_s *imtg = &imattr->targets[j]; + hwloc_uint64_t value; + if (imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR) { + /* find the initiator and set its value */ + struct hwloc_internal_memattr_initiator_s *imi = hwloc__memattr_get_initiator_from_location(imattr, imtg, initiator); + if (!imi) + continue; + value = imi->value; + } else { + /* get the no-initiator value */ + value = imtg->noinitiator_value; + } + hwloc__update_best_target(&best, &best_value, &found, + imtg->obj, value, + imattr->flags & HWLOC_MEMATTR_FLAG_HIGHER_FIRST); + } + + done: + if (found) { + assert(best); + *bestp = best; + if (valuep) + *valuep = best_value; + return 0; + } else { + errno = ENOENT; + return -1; + } +} + +/********************** + * Best initiators + */ + +static void +hwloc__update_best_initiator(struct hwloc_internal_location_s *best_initiator, hwloc_uint64_t *best_value, int *found, + struct hwloc_internal_location_s *new_initiator, hwloc_uint64_t new_value, + int keep_highest) +{ + if (*found) { + if (keep_highest) { + if (new_value <= *best_value) + return; + } else { + if (new_value >= *best_value) + return; + } + } + + *best_initiator = *new_initiator; + *best_value = new_value; + *found = 1; +} + +int +hwloc_memattr_get_best_initiator(hwloc_topology_t topology, + hwloc_memattr_id_t id, + hwloc_obj_t target_node, + unsigned long flags, + struct hwloc_location *bestp, hwloc_uint64_t *valuep) +{ + struct hwloc_internal_memattr_s *imattr; + struct hwloc_internal_memattr_target_s *imtg; + struct hwloc_internal_location_s best_initiator; + hwloc_uint64_t best_value; + int found; + unsigned i; + + if (flags) { + errno = EINVAL; + return -1; + } + + if (id >= topology->nr_memattrs) { + errno = EINVAL; + return -1; + } + imattr = &topology->memattrs[id]; + + if (!(imattr->flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR)) { + errno = EINVAL; + return -1; + } + + if (!(imattr->iflags & HWLOC_IMATTR_FLAG_CACHE_VALID)) + /* not strictly need */ + hwloc__imattr_refresh(topology, imattr); + + imtg = hwloc__memattr_get_target(imattr, target_node->type, target_node->gp_index, target_node->os_index, 0); + if (!imtg) { + errno = EINVAL; + return -1; + } + + found = 0; + for(i=0; inr_initiators; i++) { + struct hwloc_internal_memattr_initiator_s *imi = &imtg->initiators[i]; + hwloc__update_best_initiator(&best_initiator, &best_value, &found, + &imi->initiator, imi->value, + imattr->flags & HWLOC_MEMATTR_FLAG_HIGHER_FIRST); + } + + if (found) { + if (valuep) + *valuep = best_value; + return from_internal_location(&best_initiator, bestp); + } else { + errno = ENOENT; + return -1; + } +} + +/**************************** + * Listing local nodes + */ + +static __hwloc_inline int +match_local_obj_cpuset(hwloc_obj_t node, hwloc_cpuset_t cpuset, unsigned long flags) +{ + if (flags & HWLOC_LOCAL_NUMANODE_FLAG_ALL) + return 1; + if ((flags & HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY) + && hwloc_bitmap_isincluded(cpuset, node->cpuset)) + return 1; + if ((flags & HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY) + && hwloc_bitmap_isincluded(node->cpuset, cpuset)) + return 1; + return hwloc_bitmap_isequal(node->cpuset, cpuset); +} + +int +hwloc_get_local_numanode_objs(hwloc_topology_t topology, + struct hwloc_location *location, + unsigned *nrp, + hwloc_obj_t *nodes, + unsigned long flags) +{ + hwloc_cpuset_t cpuset; + hwloc_obj_t node; + unsigned i; + + if (flags & ~(HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY + |HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY + | HWLOC_LOCAL_NUMANODE_FLAG_ALL)) { + errno = EINVAL; + return -1; + } + + if (!nrp || (*nrp && !nodes)) { + errno = EINVAL; + return -1; + } + + if (!location) { + if (!(flags & HWLOC_LOCAL_NUMANODE_FLAG_ALL)) { + errno = EINVAL; + return -1; + } + cpuset = NULL; /* unused */ + + } else { + if (location->type == HWLOC_LOCATION_TYPE_CPUSET) { + cpuset = location->location.cpuset; + } else if (location->type == HWLOC_LOCATION_TYPE_OBJECT) { + hwloc_obj_t obj = location->location.object; + while (!obj->cpuset) + obj = obj->parent; + cpuset = obj->cpuset; + } else { + errno = EINVAL; + return -1; + } + } + + i = 0; + for(node = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0); + node; + node = node->next_cousin) { + if (!match_local_obj_cpuset(node, cpuset, flags)) + continue; + if (i < *nrp) + nodes[i] = node; + i++; + } + + *nrp = i; + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/misc.c b/3rd-party/hwloc-2.7.1/hwloc/misc.c new file mode 100644 index 0000000000..6f0b4a5a9f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/misc.c @@ -0,0 +1,153 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2009-2018 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "private/private.h" +#include "private/misc.h" + +#include +#ifdef HAVE_SYS_UTSNAME_H +#include +#endif +#include +#include +#include +#include +#include + +#ifdef HAVE_PROGRAM_INVOCATION_NAME +#include +extern char *program_invocation_name; +#endif +#ifdef HAVE___PROGNAME +extern char *__progname; +#endif + +#ifndef HWLOC_HAVE_CORRECT_SNPRINTF +int hwloc_snprintf(char *str, size_t size, const char *format, ...) +{ + int ret; + va_list ap; + static char bin; + size_t fakesize; + char *fakestr; + + /* Some systems crash on str == NULL */ + if (!size) { + str = &bin; + size = 1; + } + + va_start(ap, format); + ret = vsnprintf(str, size, format, ap); + va_end(ap); + + if (ret >= 0 && (size_t) ret != size-1) + return ret; + + /* vsnprintf returned size-1 or -1. That could be a system which reports the + * written data and not the actually required room. Try increasing buffer + * size to get the latter. */ + + fakesize = size; + fakestr = NULL; + do { + fakesize *= 2; + free(fakestr); + fakestr = malloc(fakesize); + if (NULL == fakestr) + return -1; + va_start(ap, format); + errno = 0; + ret = vsnprintf(fakestr, fakesize, format, ap); + va_end(ap); + } while ((size_t) ret == fakesize-1 || (ret < 0 && (!errno || errno == ERANGE))); + + if (ret >= 0 && size) { + if (size > (size_t) ret+1) + size = ret+1; + memcpy(str, fakestr, size-1); + str[size-1] = 0; + } + free(fakestr); + + return ret; +} +#endif + +void hwloc_add_uname_info(struct hwloc_topology *topology __hwloc_attribute_unused, + void *cached_uname __hwloc_attribute_unused) +{ +#ifdef HAVE_UNAME + struct utsname _utsname, *utsname; + + if (hwloc_obj_get_info_by_name(topology->levels[0][0], "OSName")) + /* don't annotate twice */ + return; + + if (cached_uname) + utsname = (struct utsname *) cached_uname; + else { + utsname = &_utsname; + if (uname(utsname) < 0) + return; + } + + if (*utsname->sysname) + hwloc_obj_add_info(topology->levels[0][0], "OSName", utsname->sysname); + if (*utsname->release) + hwloc_obj_add_info(topology->levels[0][0], "OSRelease", utsname->release); + if (*utsname->version) + hwloc_obj_add_info(topology->levels[0][0], "OSVersion", utsname->version); + if (*utsname->nodename) + hwloc_obj_add_info(topology->levels[0][0], "HostName", utsname->nodename); + if (*utsname->machine) + hwloc_obj_add_info(topology->levels[0][0], "Architecture", utsname->machine); +#endif /* HAVE_UNAME */ +} + +char * +hwloc_progname(struct hwloc_topology *topology __hwloc_attribute_unused) +{ +#if (defined HAVE_DECL_GETMODULEFILENAME) && HAVE_DECL_GETMODULEFILENAME + char name[256], *local_basename; + unsigned res = GetModuleFileName(NULL, name, sizeof(name)); + if (res == sizeof(name) || !res) + return NULL; + local_basename = strrchr(name, '\\'); + if (!local_basename) + local_basename = name; + else + local_basename++; + return strdup(local_basename); +#else /* !HAVE_GETMODULEFILENAME */ + const char *name, *local_basename; +#if HAVE_DECL_GETPROGNAME + name = getprogname(); /* FreeBSD, NetBSD, some Solaris */ +#elif HAVE_DECL_GETEXECNAME + name = getexecname(); /* Solaris */ +#elif defined HAVE_PROGRAM_INVOCATION_NAME + name = program_invocation_name; /* Glibc. BGQ CNK. */ + /* could use program_invocation_short_name directly, but we have the code to remove the path below anyway */ +#elif defined HAVE___PROGNAME + name = __progname; /* fallback for most unix, used for OpenBSD */ +#else + /* TODO: _NSGetExecutablePath(path, &size) on Darwin */ + /* TODO: AIX, HPUX */ + name = NULL; +#endif + if (!name) + return NULL; + local_basename = strrchr(name, '/'); + if (!local_basename) + local_basename = name; + else + local_basename++; + return strdup(local_basename); +#endif /* !HAVE_GETMODULEFILENAME */ +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/pci-common.c b/3rd-party/hwloc-2.7.1/hwloc/pci-common.c new file mode 100644 index 0000000000..977475ebda --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/pci-common.c @@ -0,0 +1,1052 @@ +/* + * Copyright © 2009-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/plugins.h" +#include "private/private.h" +#include "private/debug.h" +#include "private/misc.h" + +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +#if defined(HWLOC_WIN_SYS) && !defined(__CYGWIN__) +#include +#define open _open +#define read _read +#define close _close +#endif + + +/************************************** + * Init/Exit and Forced PCI localities + */ + +static void +hwloc_pci_forced_locality_parse_one(struct hwloc_topology *topology, + const char *string /* must contain a ' ' */, + unsigned *allocated) +{ + unsigned nr = topology->pci_forced_locality_nr; + unsigned domain, bus_first, bus_last, dummy; + hwloc_bitmap_t set; + char *tmp; + + if (sscanf(string, "%x:%x-%x %x", &domain, &bus_first, &bus_last, &dummy) == 4) { + /* fine */ + } else if (sscanf(string, "%x:%x %x", &domain, &bus_first, &dummy) == 3) { + bus_last = bus_first; + } else if (sscanf(string, "%x %x", &domain, &dummy) == 2) { + bus_first = 0; + bus_last = 255; + } else + return; + + tmp = strchr(string, ' '); + if (!tmp) + return; + tmp++; + + set = hwloc_bitmap_alloc(); + hwloc_bitmap_sscanf(set, tmp); + + if (!*allocated) { + topology->pci_forced_locality = malloc(sizeof(*topology->pci_forced_locality)); + if (!topology->pci_forced_locality) + goto out_with_set; /* failed to allocate, ignore this forced locality */ + *allocated = 1; + } else if (nr >= *allocated) { + struct hwloc_pci_forced_locality_s *tmplocs; + tmplocs = realloc(topology->pci_forced_locality, + 2 * *allocated * sizeof(*topology->pci_forced_locality)); + if (!tmplocs) + goto out_with_set; /* failed to allocate, ignore this forced locality */ + topology->pci_forced_locality = tmplocs; + *allocated *= 2; + } + + topology->pci_forced_locality[nr].domain = domain; + topology->pci_forced_locality[nr].bus_first = bus_first; + topology->pci_forced_locality[nr].bus_last = bus_last; + topology->pci_forced_locality[nr].cpuset = set; + topology->pci_forced_locality_nr++; + return; + + out_with_set: + hwloc_bitmap_free(set); + return; +} + +static void +hwloc_pci_forced_locality_parse(struct hwloc_topology *topology, const char *_env) +{ + char *env = strdup(_env); + unsigned allocated = 0; + char *tmp = env; + + while (1) { + size_t len = strcspn(tmp, ";\r\n"); + char *next = NULL; + + if (tmp[len] != '\0') { + tmp[len] = '\0'; + if (tmp[len+1] != '\0') + next = &tmp[len]+1; + } + + hwloc_pci_forced_locality_parse_one(topology, tmp, &allocated); + + if (next) + tmp = next; + else + break; + } + + free(env); +} + +void +hwloc_pci_discovery_init(struct hwloc_topology *topology) +{ + topology->pci_has_forced_locality = 0; + topology->pci_forced_locality_nr = 0; + topology->pci_forced_locality = NULL; + + topology->first_pci_locality = topology->last_pci_locality = NULL; +} + +void +hwloc_pci_discovery_prepare(struct hwloc_topology *topology) +{ + char *env; + + env = getenv("HWLOC_PCI_LOCALITY"); + if (env) { + int fd; + + topology->pci_has_forced_locality = 1; + + fd = open(env, O_RDONLY); + if (fd >= 0) { + struct stat st; + char *buffer; + int err = fstat(fd, &st); + if (!err) { + if (st.st_size <= 64*1024) { /* random limit large enough to store multiple cpusets for thousands of PUs */ + buffer = malloc(st.st_size+1); + if (buffer && read(fd, buffer, st.st_size) == st.st_size) { + buffer[st.st_size] = '\0'; + hwloc_pci_forced_locality_parse(topology, buffer); + } + free(buffer); + } else { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/pci: Ignoring HWLOC_PCI_LOCALITY file `%s' too large (%lu bytes)\n", + env, (unsigned long) st.st_size); + } + } + close(fd); + } else + hwloc_pci_forced_locality_parse(topology, env); + } +} + +void +hwloc_pci_discovery_exit(struct hwloc_topology *topology) +{ + struct hwloc_pci_locality_s *cur; + unsigned i; + + for(i=0; ipci_forced_locality_nr; i++) + hwloc_bitmap_free(topology->pci_forced_locality[i].cpuset); + free(topology->pci_forced_locality); + + cur = topology->first_pci_locality; + while (cur) { + struct hwloc_pci_locality_s *next = cur->next; + hwloc_bitmap_free(cur->cpuset); + free(cur); + cur = next; + } + + hwloc_pci_discovery_init(topology); +} + + +/****************************** + * Inserting in Tree by Bus ID + */ + +#ifdef HWLOC_DEBUG +static void +hwloc_pci_traverse_print_cb(void * cbdata __hwloc_attribute_unused, + struct hwloc_obj *pcidev) +{ + char busid[14]; + hwloc_obj_t parent; + + /* indent */ + parent = pcidev->parent; + while (parent) { + hwloc_debug("%s", " "); + parent = parent->parent; + } + + snprintf(busid, sizeof(busid), "%04x:%02x:%02x.%01x", + pcidev->attr->pcidev.domain, pcidev->attr->pcidev.bus, pcidev->attr->pcidev.dev, pcidev->attr->pcidev.func); + + if (pcidev->type == HWLOC_OBJ_BRIDGE) { + if (pcidev->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_HOST) + hwloc_debug("HostBridge"); + else + hwloc_debug("%s Bridge [%04x:%04x]", busid, + pcidev->attr->pcidev.vendor_id, pcidev->attr->pcidev.device_id); + if (pcidev->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI) + hwloc_debug(" to %04x:[%02x:%02x]\n", + pcidev->attr->bridge.downstream.pci.domain, pcidev->attr->bridge.downstream.pci.secondary_bus, pcidev->attr->bridge.downstream.pci.subordinate_bus); + else + assert(0); + } else + hwloc_debug("%s Device [%04x:%04x (%04x:%04x) rev=%02x class=%04x]\n", busid, + pcidev->attr->pcidev.vendor_id, pcidev->attr->pcidev.device_id, + pcidev->attr->pcidev.subvendor_id, pcidev->attr->pcidev.subdevice_id, + pcidev->attr->pcidev.revision, pcidev->attr->pcidev.class_id); +} + +static void +hwloc_pci_traverse(void * cbdata, struct hwloc_obj *tree, + void (*cb)(void * cbdata, struct hwloc_obj *)) +{ + hwloc_obj_t child; + cb(cbdata, tree); + for_each_io_child(child, tree) { + if (child->type == HWLOC_OBJ_BRIDGE) + hwloc_pci_traverse(cbdata, child, cb); + } +} +#endif /* HWLOC_DEBUG */ + +enum hwloc_pci_busid_comparison_e { + HWLOC_PCI_BUSID_LOWER, + HWLOC_PCI_BUSID_HIGHER, + HWLOC_PCI_BUSID_INCLUDED, + HWLOC_PCI_BUSID_SUPERSET, + HWLOC_PCI_BUSID_EQUAL +}; + +static enum hwloc_pci_busid_comparison_e +hwloc_pci_compare_busids(struct hwloc_obj *a, struct hwloc_obj *b) +{ +#ifdef HWLOC_DEBUG + if (a->type == HWLOC_OBJ_BRIDGE) + assert(a->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI); + if (b->type == HWLOC_OBJ_BRIDGE) + assert(b->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI); +#endif + + if (a->attr->pcidev.domain < b->attr->pcidev.domain) + return HWLOC_PCI_BUSID_LOWER; + if (a->attr->pcidev.domain > b->attr->pcidev.domain) + return HWLOC_PCI_BUSID_HIGHER; + + if (a->type == HWLOC_OBJ_BRIDGE && a->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI + && b->attr->pcidev.bus >= a->attr->bridge.downstream.pci.secondary_bus + && b->attr->pcidev.bus <= a->attr->bridge.downstream.pci.subordinate_bus) + return HWLOC_PCI_BUSID_SUPERSET; + if (b->type == HWLOC_OBJ_BRIDGE && b->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI + && a->attr->pcidev.bus >= b->attr->bridge.downstream.pci.secondary_bus + && a->attr->pcidev.bus <= b->attr->bridge.downstream.pci.subordinate_bus) + return HWLOC_PCI_BUSID_INCLUDED; + + if (a->attr->pcidev.bus < b->attr->pcidev.bus) + return HWLOC_PCI_BUSID_LOWER; + if (a->attr->pcidev.bus > b->attr->pcidev.bus) + return HWLOC_PCI_BUSID_HIGHER; + + if (a->attr->pcidev.dev < b->attr->pcidev.dev) + return HWLOC_PCI_BUSID_LOWER; + if (a->attr->pcidev.dev > b->attr->pcidev.dev) + return HWLOC_PCI_BUSID_HIGHER; + + if (a->attr->pcidev.func < b->attr->pcidev.func) + return HWLOC_PCI_BUSID_LOWER; + if (a->attr->pcidev.func > b->attr->pcidev.func) + return HWLOC_PCI_BUSID_HIGHER; + + /* Should never reach here. */ + return HWLOC_PCI_BUSID_EQUAL; +} + +static void +hwloc_pci_add_object(struct hwloc_obj *parent, struct hwloc_obj **parent_io_first_child_p, struct hwloc_obj *new) +{ + struct hwloc_obj **curp, **childp; + + curp = parent_io_first_child_p; + while (*curp) { + enum hwloc_pci_busid_comparison_e comp = hwloc_pci_compare_busids(new, *curp); + switch (comp) { + case HWLOC_PCI_BUSID_HIGHER: + /* go further */ + curp = &(*curp)->next_sibling; + continue; + case HWLOC_PCI_BUSID_INCLUDED: + /* insert new below current bridge */ + hwloc_pci_add_object(*curp, &(*curp)->io_first_child, new); + return; + case HWLOC_PCI_BUSID_LOWER: + case HWLOC_PCI_BUSID_SUPERSET: { + /* insert new before current */ + new->next_sibling = *curp; + *curp = new; + new->parent = parent; + if (new->type == HWLOC_OBJ_BRIDGE && new->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI) { + /* look at remaining siblings and move some below new */ + childp = &new->io_first_child; + curp = &new->next_sibling; + while (*curp) { + hwloc_obj_t cur = *curp; + if (hwloc_pci_compare_busids(new, cur) == HWLOC_PCI_BUSID_LOWER) { + /* this sibling remains under root, after new. */ + if (cur->attr->pcidev.domain > new->attr->pcidev.domain + || cur->attr->pcidev.bus > new->attr->bridge.downstream.pci.subordinate_bus) + /* this sibling is even above new's subordinate bus, no other sibling could go below new */ + return; + curp = &cur->next_sibling; + } else { + /* this sibling goes under new */ + *childp = cur; + *curp = cur->next_sibling; + (*childp)->parent = new; + (*childp)->next_sibling = NULL; + childp = &(*childp)->next_sibling; + } + } + } + return; + } + case HWLOC_PCI_BUSID_EQUAL: { + static int reported = 0; + if (!reported && hwloc_hide_errors() < 2) { + fprintf(stderr, "*********************************************************\n"); + fprintf(stderr, "* hwloc %s received invalid PCI information.\n", HWLOC_VERSION); + fprintf(stderr, "*\n"); + fprintf(stderr, "* Trying to insert PCI object %04x:%02x:%02x.%01x at %04x:%02x:%02x.%01x\n", + new->attr->pcidev.domain, new->attr->pcidev.bus, new->attr->pcidev.dev, new->attr->pcidev.func, + (*curp)->attr->pcidev.domain, (*curp)->attr->pcidev.bus, (*curp)->attr->pcidev.dev, (*curp)->attr->pcidev.func); + fprintf(stderr, "*\n"); + fprintf(stderr, "* hwloc will now ignore this object and continue.\n"); + fprintf(stderr, "*********************************************************\n"); + reported = 1; + } + hwloc_free_unlinked_object(new); + return; + } + } + } + /* add to the end of the list if higher than everybody */ + new->parent = parent; + new->next_sibling = NULL; + *curp = new; +} + +void +hwloc_pcidisc_tree_insert_by_busid(struct hwloc_obj **treep, + struct hwloc_obj *obj) +{ + hwloc_pci_add_object(NULL /* no parent on top of tree */, treep, obj); +} + + +/********************** + * Attaching PCI Trees + */ + +static struct hwloc_obj * +hwloc_pcidisc_add_hostbridges(struct hwloc_topology *topology, + struct hwloc_obj *old_tree) +{ + struct hwloc_obj * new = NULL, **newp = &new; + + /* + * tree points to all objects connected to any upstream bus in the machine. + * We now create one real hostbridge object per upstream bus. + * It's not actually a PCI device so we have to create it. + */ + while (old_tree) { + /* start a new host bridge */ + struct hwloc_obj *hostbridge; + struct hwloc_obj **dstnextp; + struct hwloc_obj **srcnextp; + struct hwloc_obj *child; + unsigned current_domain; + unsigned char current_bus; + unsigned char current_subordinate; + + hostbridge = hwloc_alloc_setup_object(topology, HWLOC_OBJ_BRIDGE, HWLOC_UNKNOWN_INDEX); + if (!hostbridge) { + /* just queue remaining things without hostbridges and return */ + *newp = old_tree; + return new; + } + dstnextp = &hostbridge->io_first_child; + + srcnextp = &old_tree; + child = *srcnextp; + current_domain = child->attr->pcidev.domain; + current_bus = child->attr->pcidev.bus; + current_subordinate = current_bus; + + hwloc_debug("Adding new PCI hostbridge %04x:%02x\n", current_domain, current_bus); + + next_child: + /* remove next child from tree */ + *srcnextp = child->next_sibling; + /* append it to hostbridge */ + *dstnextp = child; + child->parent = hostbridge; + child->next_sibling = NULL; + dstnextp = &child->next_sibling; + + /* compute hostbridge secondary/subordinate buses */ + if (child->type == HWLOC_OBJ_BRIDGE && child->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI + && child->attr->bridge.downstream.pci.subordinate_bus > current_subordinate) + current_subordinate = child->attr->bridge.downstream.pci.subordinate_bus; + + /* use next child if it has the same domains/bus */ + child = *srcnextp; + if (child + && child->attr->pcidev.domain == current_domain + && child->attr->pcidev.bus == current_bus) + goto next_child; + + /* finish setting up this hostbridge */ + hostbridge->attr->bridge.upstream_type = HWLOC_OBJ_BRIDGE_HOST; + hostbridge->attr->bridge.downstream_type = HWLOC_OBJ_BRIDGE_PCI; + hostbridge->attr->bridge.downstream.pci.domain = current_domain; + hostbridge->attr->bridge.downstream.pci.secondary_bus = current_bus; + hostbridge->attr->bridge.downstream.pci.subordinate_bus = current_subordinate; + hwloc_debug(" new PCI hostbridge covers %04x:[%02x-%02x]\n", + current_domain, current_bus, current_subordinate); + + *newp = hostbridge; + newp = &hostbridge->next_sibling; + } + + return new; +} + +static struct hwloc_obj * +hwloc_pci_fixup_busid_parent(struct hwloc_topology *topology __hwloc_attribute_unused, + struct hwloc_pcidev_attr_s *busid __hwloc_attribute_unused, + struct hwloc_obj *parent __hwloc_attribute_unused) +{ + /* no quirk for now */ + return parent; +} + +static struct hwloc_obj * +hwloc__pci_find_busid_parent(struct hwloc_topology *topology, struct hwloc_pcidev_attr_s *busid) +{ + hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); + hwloc_obj_t parent; + int forced = 0; + int noquirks = 0; + unsigned i; + int err; + + hwloc_debug("Looking for parent of PCI busid %04x:%02x:%02x.%01x\n", + busid->domain, busid->bus, busid->dev, busid->func); + + /* try to match a forced locality */ + if (topology->pci_has_forced_locality) { + for(i=0; ipci_forced_locality_nr; i++) { + if (busid->domain == topology->pci_forced_locality[i].domain + && busid->bus >= topology->pci_forced_locality[i].bus_first + && busid->bus <= topology->pci_forced_locality[i].bus_last) { + hwloc_bitmap_copy(cpuset, topology->pci_forced_locality[i].cpuset); + forced = 1; + break; + } + } + /* if pci locality was forced, even empty, don't let quirks change what the OS reports */ + noquirks = 1; + } + + /* deprecated force locality variables */ + if (!forced) { + const char *env; + char envname[256]; + /* override the cpuset with the environment if given */ + snprintf(envname, sizeof(envname), "HWLOC_PCI_%04x_%02x_LOCALCPUS", + busid->domain, busid->bus); + env = getenv(envname); + if (env) { + static int reported = 0; + if (!topology->pci_has_forced_locality && !reported) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/pci: Environment variable %s is deprecated, please use HWLOC_PCI_LOCALITY instead.\n", env); + reported = 1; + } + if (*env) { + /* force the cpuset */ + hwloc_debug("Overriding PCI locality using %s in the environment\n", envname); + hwloc_bitmap_sscanf(cpuset, env); + forced = 1; + } + /* if env exists, even empty, don't let quirks change what the OS reports */ + noquirks = 1; + } + } + + if (!forced) { + /* get the cpuset by asking the backend that provides the relevant hook, if any. */ + struct hwloc_backend *backend = topology->get_pci_busid_cpuset_backend; + if (backend) + err = backend->get_pci_busid_cpuset(backend, busid, cpuset); + else + err = -1; + if (err < 0) + /* if we got nothing, assume this PCI bus is attached to the top of hierarchy */ + hwloc_bitmap_copy(cpuset, hwloc_topology_get_topology_cpuset(topology)); + } + + hwloc_debug_bitmap(" will attach PCI bus to cpuset %s\n", cpuset); + + parent = hwloc_find_insert_io_parent_by_complete_cpuset(topology, cpuset); + if (parent) { + if (!noquirks) + /* We found a valid parent. Check that the OS didn't report invalid locality */ + parent = hwloc_pci_fixup_busid_parent(topology, busid, parent); + } else { + /* Fallback to root */ + parent = hwloc_get_root_obj(topology); + } + + hwloc_bitmap_free(cpuset); + return parent; +} + +int +hwloc_pcidisc_tree_attach(struct hwloc_topology *topology, struct hwloc_obj *tree) +{ + enum hwloc_type_filter_e bfilter; + + if (!tree) + /* found nothing, exit */ + return 0; + +#ifdef HWLOC_DEBUG + hwloc_debug("%s", "\nPCI hierarchy:\n"); + hwloc_pci_traverse(NULL, tree, hwloc_pci_traverse_print_cb); + hwloc_debug("%s", "\n"); +#endif + + bfilter = topology->type_filter[HWLOC_OBJ_BRIDGE]; + if (bfilter != HWLOC_TYPE_FILTER_KEEP_NONE) { + tree = hwloc_pcidisc_add_hostbridges(topology, tree); + } + + while (tree) { + struct hwloc_obj *obj, *pciobj; + struct hwloc_obj *parent; + struct hwloc_pci_locality_s *loc; + unsigned domain, bus_min, bus_max; + + obj = tree; + + /* hostbridges don't have a PCI busid for looking up locality, use their first child */ + if (obj->type == HWLOC_OBJ_BRIDGE && obj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_HOST) + pciobj = obj->io_first_child; + else + pciobj = obj; + /* now we have a pci device or a pci bridge */ + assert(pciobj->type == HWLOC_OBJ_PCI_DEVICE + || (pciobj->type == HWLOC_OBJ_BRIDGE && pciobj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI)); + + if (obj->type == HWLOC_OBJ_BRIDGE && obj->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI) { + domain = obj->attr->bridge.downstream.pci.domain; + bus_min = obj->attr->bridge.downstream.pci.secondary_bus; + bus_max = obj->attr->bridge.downstream.pci.subordinate_bus; + } else { + domain = pciobj->attr->pcidev.domain; + bus_min = pciobj->attr->pcidev.bus; + bus_max = pciobj->attr->pcidev.bus; + } + + /* find where to attach that PCI bus */ + parent = hwloc__pci_find_busid_parent(topology, &pciobj->attr->pcidev); + + /* reuse the previous locality if possible */ + if (topology->last_pci_locality + && parent == topology->last_pci_locality->parent + && domain == topology->last_pci_locality->domain + && (bus_min == topology->last_pci_locality->bus_max + || bus_min == topology->last_pci_locality->bus_max+1)) { + hwloc_debug(" Reusing PCI locality up to bus %04x:%02x\n", + domain, bus_max); + topology->last_pci_locality->bus_max = bus_max; + goto done; + } + + loc = malloc(sizeof(*loc)); + if (!loc) { + /* fallback to attaching to root */ + parent = hwloc_get_root_obj(topology); + goto done; + } + + loc->domain = domain; + loc->bus_min = bus_min; + loc->bus_max = bus_max; + loc->parent = parent; + loc->cpuset = hwloc_bitmap_dup(parent->cpuset); + if (!loc->cpuset) { + /* fallback to attaching to root */ + free(loc); + parent = hwloc_get_root_obj(topology); + goto done; + } + + hwloc_debug("Adding PCI locality %s P#%u for bus %04x:[%02x:%02x]\n", + hwloc_obj_type_string(parent->type), parent->os_index, loc->domain, loc->bus_min, loc->bus_max); + if (topology->last_pci_locality) { + loc->prev = topology->last_pci_locality; + loc->next = NULL; + topology->last_pci_locality->next = loc; + topology->last_pci_locality = loc; + } else { + loc->prev = NULL; + loc->next = NULL; + topology->first_pci_locality = loc; + topology->last_pci_locality = loc; + } + + done: + /* dequeue this object */ + tree = obj->next_sibling; + obj->next_sibling = NULL; + hwloc_insert_object_by_parent(topology, parent, obj); + } + + return 0; +} + + +/********************************* + * Finding PCI objects or parents + */ + +struct hwloc_obj * +hwloc_pci_find_parent_by_busid(struct hwloc_topology *topology, + unsigned domain, unsigned bus, unsigned dev, unsigned func) +{ + struct hwloc_pcidev_attr_s busid; + hwloc_obj_t parent; + + /* try to find that exact busid */ + parent = hwloc_pci_find_by_busid(topology, domain, bus, dev, func); + if (parent) + return parent; + + /* try to find the locality of that bus instead */ + busid.domain = domain; + busid.bus = bus; + busid.dev = dev; + busid.func = func; + return hwloc__pci_find_busid_parent(topology, &busid); +} + +/* return the smallest object that contains the desired busid */ +static struct hwloc_obj * +hwloc__pci_find_by_busid(hwloc_obj_t parent, + unsigned domain, unsigned bus, unsigned dev, unsigned func) +{ + hwloc_obj_t child; + + for_each_io_child(child, parent) { + if (child->type == HWLOC_OBJ_PCI_DEVICE + || (child->type == HWLOC_OBJ_BRIDGE + && child->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI)) { + if (child->attr->pcidev.domain == domain + && child->attr->pcidev.bus == bus + && child->attr->pcidev.dev == dev + && child->attr->pcidev.func == func) + /* that's the right bus id */ + return child; + if (child->attr->pcidev.domain > domain + || (child->attr->pcidev.domain == domain + && child->attr->pcidev.bus > bus)) + /* bus id too high, won't find anything later, return parent */ + return parent; + if (child->type == HWLOC_OBJ_BRIDGE + && child->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI + && child->attr->bridge.downstream.pci.domain == domain + && child->attr->bridge.downstream.pci.secondary_bus <= bus + && child->attr->bridge.downstream.pci.subordinate_bus >= bus) + /* not the right bus id, but it's included in the bus below that bridge */ + return hwloc__pci_find_by_busid(child, domain, bus, dev, func); + + } else if (child->type == HWLOC_OBJ_BRIDGE + && child->attr->bridge.upstream_type != HWLOC_OBJ_BRIDGE_PCI + && child->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI + /* non-PCI to PCI bridge, just look at the subordinate bus */ + && child->attr->bridge.downstream.pci.domain == domain + && child->attr->bridge.downstream.pci.secondary_bus <= bus + && child->attr->bridge.downstream.pci.subordinate_bus >= bus) { + /* contains our bus, recurse */ + return hwloc__pci_find_by_busid(child, domain, bus, dev, func); + } + } + /* didn't find anything, return parent */ + return parent; +} + +struct hwloc_obj * +hwloc_pci_find_by_busid(struct hwloc_topology *topology, + unsigned domain, unsigned bus, unsigned dev, unsigned func) +{ + struct hwloc_pci_locality_s *loc; + hwloc_obj_t root = hwloc_get_root_obj(topology); + hwloc_obj_t parent = NULL; + + hwloc_debug("pcidisc looking for bus id %04x:%02x:%02x.%01x\n", domain, bus, dev, func); + loc = topology->first_pci_locality; + while (loc) { + if (loc->domain == domain && loc->bus_min <= bus && loc->bus_max >= bus) { + parent = loc->parent; + assert(parent); + hwloc_debug(" found pci locality for %04x:[%02x:%02x]\n", + loc->domain, loc->bus_min, loc->bus_max); + break; + } + loc = loc->next; + } + /* if we failed to insert localities, look at root too */ + if (!parent) + parent = root; + + hwloc_debug(" looking for bus %04x:%02x:%02x.%01x below %s P#%u\n", + domain, bus, dev, func, + hwloc_obj_type_string(parent->type), parent->os_index); + parent = hwloc__pci_find_by_busid(parent, domain, bus, dev, func); + if (parent == root) { + hwloc_debug(" found nothing better than root object, ignoring\n"); + return NULL; + } else { + if (parent->type == HWLOC_OBJ_PCI_DEVICE + || (parent->type == HWLOC_OBJ_BRIDGE && parent->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI)) + hwloc_debug(" found busid %04x:%02x:%02x.%01x\n", + parent->attr->pcidev.domain, parent->attr->pcidev.bus, + parent->attr->pcidev.dev, parent->attr->pcidev.func); + else + hwloc_debug(" found parent %s P#%u\n", + hwloc_obj_type_string(parent->type), parent->os_index); + return parent; + } +} + + +/******************************* + * Parsing the PCI Config Space + */ + +#define HWLOC_PCI_STATUS 0x06 +#define HWLOC_PCI_STATUS_CAP_LIST 0x10 +#define HWLOC_PCI_CAPABILITY_LIST 0x34 +#define HWLOC_PCI_CAP_LIST_ID 0 +#define HWLOC_PCI_CAP_LIST_NEXT 1 + +unsigned +hwloc_pcidisc_find_cap(const unsigned char *config, unsigned cap) +{ + unsigned char seen[256] = { 0 }; + unsigned char ptr; /* unsigned char to make sure we stay within the 256-byte config space */ + + if (!(config[HWLOC_PCI_STATUS] & HWLOC_PCI_STATUS_CAP_LIST)) + return 0; + + for (ptr = config[HWLOC_PCI_CAPABILITY_LIST] & ~3; + ptr; /* exit if next is 0 */ + ptr = config[ptr + HWLOC_PCI_CAP_LIST_NEXT] & ~3) { + unsigned char id; + + /* Looped around! */ + if (seen[ptr]) + break; + seen[ptr] = 1; + + id = config[ptr + HWLOC_PCI_CAP_LIST_ID]; + if (id == cap) + return ptr; + if (id == 0xff) /* exit if id is 0 or 0xff */ + break; + } + return 0; +} + +#define HWLOC_PCI_EXP_LNKSTA 0x12 +#define HWLOC_PCI_EXP_LNKSTA_SPEED 0x000f +#define HWLOC_PCI_EXP_LNKSTA_WIDTH 0x03f0 + +int +hwloc_pcidisc_find_linkspeed(const unsigned char *config, + unsigned offset, float *linkspeed) +{ + unsigned linksta, speed, width; + float lanespeed; + + memcpy(&linksta, &config[offset + HWLOC_PCI_EXP_LNKSTA], 4); + speed = linksta & HWLOC_PCI_EXP_LNKSTA_SPEED; /* PCIe generation */ + width = (linksta & HWLOC_PCI_EXP_LNKSTA_WIDTH) >> 4; /* how many lanes */ + /* PCIe Gen1 = 2.5GT/s signal-rate per lane with 8/10 encoding = 0.25GB/s data-rate per lane + * PCIe Gen2 = 5 GT/s signal-rate per lane with 8/10 encoding = 0.5 GB/s data-rate per lane + * PCIe Gen3 = 8 GT/s signal-rate per lane with 128/130 encoding = 1 GB/s data-rate per lane + * PCIe Gen4 = 16 GT/s signal-rate per lane with 128/130 encoding = 2 GB/s data-rate per lane + * PCIe Gen5 = 32 GT/s signal-rate per lane with 128/130 encoding = 4 GB/s data-rate per lane + * PCIe Gen6 = 64 GT/s signal-rate per lane with 128/130 encoding = 8 GB/s data-rate per lane + */ + + /* lanespeed in Gbit/s */ + if (speed <= 2) + lanespeed = 2.5f * speed * 0.8f; + else + lanespeed = 8.0f * (1<<(speed-3)) * 128/130; /* assume Gen7 will be 128 GT/s and so on */ + + /* linkspeed in GB/s */ + *linkspeed = lanespeed * width / 8; + return 0; +} + +#define HWLOC_PCI_HEADER_TYPE 0x0e +#define HWLOC_PCI_HEADER_TYPE_BRIDGE 1 +#define HWLOC_PCI_CLASS_BRIDGE_PCI 0x0604 + +hwloc_obj_type_t +hwloc_pcidisc_check_bridge_type(unsigned device_class, const unsigned char *config) +{ + unsigned char headertype; + + if (device_class != HWLOC_PCI_CLASS_BRIDGE_PCI) + return HWLOC_OBJ_PCI_DEVICE; + + headertype = config[HWLOC_PCI_HEADER_TYPE] & 0x7f; + return (headertype == HWLOC_PCI_HEADER_TYPE_BRIDGE) + ? HWLOC_OBJ_BRIDGE : HWLOC_OBJ_PCI_DEVICE; +} + +#define HWLOC_PCI_PRIMARY_BUS 0x18 +#define HWLOC_PCI_SECONDARY_BUS 0x19 +#define HWLOC_PCI_SUBORDINATE_BUS 0x1a + +int +hwloc_pcidisc_find_bridge_buses(unsigned domain, unsigned bus, unsigned dev, unsigned func, + unsigned *secondary_busp, unsigned *subordinate_busp, + const unsigned char *config) +{ + unsigned secondary_bus, subordinate_bus; + + if (config[HWLOC_PCI_PRIMARY_BUS] != bus) { + /* Sometimes the config space contains 00 instead of the actual primary bus number. + * Always trust the bus ID because it was built by the system which has more information + * to workaround such problems (e.g. ACPI information about PCI parent/children). + */ + hwloc_debug(" %04x:%02x:%02x.%01x bridge with (ignored) invalid PCI_PRIMARY_BUS %02x\n", + domain, bus, dev, func, config[HWLOC_PCI_PRIMARY_BUS]); + } + + secondary_bus = config[HWLOC_PCI_SECONDARY_BUS]; + subordinate_bus = config[HWLOC_PCI_SUBORDINATE_BUS]; + + if (secondary_bus <= bus + || subordinate_bus <= bus + || secondary_bus > subordinate_bus) { + /* This should catch most cases of invalid bridge information + * (e.g. 00 for secondary and subordinate). + * Ideally we would also check that [secondary-subordinate] is included + * in the parent bridge [secondary+1:subordinate]. But that's hard to do + * because objects may be discovered out of order (especially in the fsroot case). + */ + hwloc_debug(" %04x:%02x:%02x.%01x bridge has invalid secondary-subordinate buses [%02x-%02x]\n", + domain, bus, dev, func, + secondary_bus, subordinate_bus); + return -1; + } + + *secondary_busp = secondary_bus; + *subordinate_busp = subordinate_bus; + return 0; +} + + +/**************** + * Class Strings + */ + +const char * +hwloc_pci_class_string(unsigned short class_id) +{ + /* See https://pci-ids.ucw.cz/read/PD/ */ + switch ((class_id & 0xff00) >> 8) { + case 0x00: + switch (class_id) { + case 0x0001: return "VGA"; + } + break; + case 0x01: + switch (class_id) { + case 0x0100: return "SCSI"; + case 0x0101: return "IDE"; + case 0x0102: return "Floppy"; + case 0x0103: return "IPI"; + case 0x0104: return "RAID"; + case 0x0105: return "ATA"; + case 0x0106: return "SATA"; + case 0x0107: return "SAS"; + case 0x0108: return "NVMExp"; + } + return "Storage"; + case 0x02: + switch (class_id) { + case 0x0200: return "Ethernet"; + case 0x0201: return "TokenRing"; + case 0x0202: return "FDDI"; + case 0x0203: return "ATM"; + case 0x0204: return "ISDN"; + case 0x0205: return "WorldFip"; + case 0x0206: return "PICMG"; + case 0x0207: return "InfiniBand"; + case 0x0208: return "Fabric"; + } + return "Network"; + case 0x03: + switch (class_id) { + case 0x0300: return "VGA"; + case 0x0301: return "XGA"; + case 0x0302: return "3D"; + } + return "Display"; + case 0x04: + switch (class_id) { + case 0x0400: return "MultimediaVideo"; + case 0x0401: return "MultimediaAudio"; + case 0x0402: return "Telephony"; + case 0x0403: return "AudioDevice"; + } + return "Multimedia"; + case 0x05: + switch (class_id) { + case 0x0500: return "RAM"; + case 0x0501: return "Flash"; + } + return "Memory"; + case 0x06: + switch (class_id) { + case 0x0600: return "HostBridge"; + case 0x0601: return "ISABridge"; + case 0x0602: return "EISABridge"; + case 0x0603: return "MicroChannelBridge"; + case 0x0604: return "PCIBridge"; + case 0x0605: return "PCMCIABridge"; + case 0x0606: return "NubusBridge"; + case 0x0607: return "CardBusBridge"; + case 0x0608: return "RACEwayBridge"; + case 0x0609: return "SemiTransparentPCIBridge"; + case 0x060a: return "InfiniBandPCIHostBridge"; + } + return "Bridge"; + case 0x07: + switch (class_id) { + case 0x0700: return "Serial"; + case 0x0701: return "Parallel"; + case 0x0702: return "MultiportSerial"; + case 0x0703: return "Model"; + case 0x0704: return "GPIB"; + case 0x0705: return "SmartCard"; + } + return "Communication"; + case 0x08: + switch (class_id) { + case 0x0800: return "PIC"; + case 0x0801: return "DMA"; + case 0x0802: return "Timer"; + case 0x0803: return "RTC"; + case 0x0804: return "PCIHotPlug"; + case 0x0805: return "SDHost"; + case 0x0806: return "IOMMU"; + } + return "SystemPeripheral"; + case 0x09: + switch (class_id) { + case 0x0900: return "Keyboard"; + case 0x0901: return "DigitizerPen"; + case 0x0902: return "Mouse"; + case 0x0903: return "Scanern"; + case 0x0904: return "Gameport"; + } + return "Input"; + case 0x0a: + return "DockingStation"; + case 0x0b: + switch (class_id) { + case 0x0b00: return "386"; + case 0x0b01: return "486"; + case 0x0b02: return "Pentium"; +/* 0x0b03 and 0x0b04 might be Pentium and P6 ? */ + case 0x0b10: return "Alpha"; + case 0x0b20: return "PowerPC"; + case 0x0b30: return "MIPS"; + case 0x0b40: return "Co-Processor"; + } + return "Processor"; + case 0x0c: + switch (class_id) { + case 0x0c00: return "FireWire"; + case 0x0c01: return "ACCESS"; + case 0x0c02: return "SSA"; + case 0x0c03: return "USB"; + case 0x0c04: return "FibreChannel"; + case 0x0c05: return "SMBus"; + case 0x0c06: return "InfiniBand"; + case 0x0c07: return "IPMI-SMIC"; + case 0x0c08: return "SERCOS"; + case 0x0c09: return "CANBUS"; + } + return "SerialBus"; + case 0x0d: + switch (class_id) { + case 0x0d00: return "IRDA"; + case 0x0d01: return "ConsumerIR"; + case 0x0d10: return "RF"; + case 0x0d11: return "Bluetooth"; + case 0x0d12: return "Broadband"; + case 0x0d20: return "802.1a"; + case 0x0d21: return "802.1b"; + } + return "Wireless"; + case 0x0e: + switch (class_id) { + case 0x0e00: return "I2O"; + } + return "Intelligent"; + case 0x0f: + return "Satellite"; + case 0x10: + return "Encryption"; + case 0x11: + return "SignalProcessing"; + case 0x12: + return "ProcessingAccelerator"; + case 0x13: + return "Instrumentation"; + case 0x40: + return "Co-Processor"; + } + return "Other"; +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/shmem.c b/3rd-party/hwloc-2.7.1/hwloc/shmem.c new file mode 100644 index 0000000000..c73c6d922f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/shmem.c @@ -0,0 +1,300 @@ +/* + * Copyright © 2017-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/shmem.h" +#include "private/private.h" + +#ifndef HWLOC_WIN_SYS + +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +#define HWLOC_SHMEM_HEADER_VERSION 1 + +struct hwloc_shmem_header { + uint32_t header_version; /* sanity check */ + uint32_t header_length; /* where the actual topology starts in the file/mapping */ + uint64_t mmap_address; /* virtual address to pass to mmap */ + uint64_t mmap_length; /* length to pass to mmap (includes the header) */ +}; + +#define HWLOC_SHMEM_MALLOC_ALIGN 8UL + +static void * +tma_shmem_malloc(struct hwloc_tma * tma, + size_t length) +{ + void *current = tma->data; + tma->data = (char*)tma->data + ((length + HWLOC_SHMEM_MALLOC_ALIGN - 1) & ~(HWLOC_SHMEM_MALLOC_ALIGN - 1)); + return current; + +} + +static void * +tma_get_length_malloc(struct hwloc_tma * tma, + size_t length) +{ + size_t *tma_length = tma->data; + *tma_length += (length + HWLOC_SHMEM_MALLOC_ALIGN - 1) & ~(HWLOC_SHMEM_MALLOC_ALIGN - 1); + return malloc(length); + +} + +int +hwloc_shmem_topology_get_length(hwloc_topology_t topology, + size_t *lengthp, + unsigned long flags) +{ + hwloc_topology_t new; + struct hwloc_tma tma; + size_t length = 0; + unsigned long pagesize = hwloc_getpagesize(); /* round-up to full page for mmap() */ + int err; + + if (flags) { + errno = EINVAL; + return -1; + } + + tma.malloc = tma_get_length_malloc; + tma.dontfree = 0; + tma.data = &length; + + err = hwloc__topology_dup(&new, topology, &tma); + if (err < 0) + return err; + hwloc_topology_destroy(new); + + *lengthp = (sizeof(struct hwloc_shmem_header) + length + pagesize - 1) & ~(pagesize - 1); + return 0; +} + +int +hwloc_shmem_topology_write(hwloc_topology_t topology, + int fd, hwloc_uint64_t fileoffset, + void *mmap_address, size_t length, + unsigned long flags) +{ + hwloc_topology_t new; + struct hwloc_tma tma; + struct hwloc_shmem_header header; + void *mmap_res; + int err; + + if (flags) { + errno = EINVAL; + return -1; + } + + /* refresh old topology distances so that we don't uselessly duplicate invalid distances + * without being able to free() them. + */ + hwloc_internal_distances_refresh(topology); + hwloc_internal_memattrs_refresh(topology); + + header.header_version = HWLOC_SHMEM_HEADER_VERSION; + header.header_length = sizeof(header); + header.mmap_address = (uintptr_t) mmap_address; + header.mmap_length = length; + + err = lseek(fd, fileoffset, SEEK_SET); + if (err < 0) + return -1; + + err = write(fd, &header, sizeof(header)); + if (err != sizeof(header)) + return -1; + + err = ftruncate(fd, fileoffset + length); + if (err < 0) + return -1; + + mmap_res = mmap(mmap_address, length, PROT_READ|PROT_WRITE, MAP_SHARED, fd, fileoffset); + if (mmap_res == MAP_FAILED) + return -1; + if (mmap_res != mmap_address) { + munmap(mmap_res, length); + errno = EBUSY; + return -1; + } + + tma.malloc = tma_shmem_malloc; + tma.dontfree = 1; + tma.data = (char *)mmap_res + sizeof(header); + err = hwloc__topology_dup(&new, topology, &tma); + if (err < 0) + return err; + assert((char*)new == (char*)mmap_address + sizeof(header)); + + assert((char *)mmap_res <= (char *)mmap_address + length); + + /* now refresh the new distances/memattrs so that adopters can use them without refreshing the R/O shmem mapping */ + hwloc_internal_distances_refresh(new); + hwloc_internal_memattrs_refresh(topology); + + /* topology is saved, release resources now */ + munmap(mmap_address, length); + hwloc_components_fini(); + + return 0; +} + +int +hwloc_shmem_topology_adopt(hwloc_topology_t *topologyp, + int fd, hwloc_uint64_t fileoffset, + void *mmap_address, size_t length, + unsigned long flags) +{ + hwloc_topology_t new, old; + struct hwloc_shmem_header header; + void *mmap_res; + int err; + + if (flags) { + errno = EINVAL; + return -1; + } + + err = lseek(fd, fileoffset, SEEK_SET); + if (err < 0) + return -1; + + err = read(fd, &header, sizeof(header)); + if (err != sizeof(header)) + return -1; + + if (header.header_version != HWLOC_SHMEM_HEADER_VERSION + || header.header_length != sizeof(header) + || header.mmap_address != (uintptr_t) mmap_address + || header.mmap_length != length) { + errno = EINVAL; + return -1; + } + + mmap_res = mmap(mmap_address, length, PROT_READ, MAP_SHARED, fd, fileoffset); + if (mmap_res == MAP_FAILED) + return -1; + if (mmap_res != mmap_address) { + errno = EBUSY; + goto out_with_mmap; + } + + old = (hwloc_topology_t)((char*)mmap_address + sizeof(header)); + if (hwloc_topology_abi_check(old) < 0) { + errno = EINVAL; + goto out_with_mmap; + } + + /* enforced by dup() inside shmem_topology_write() */ + assert(old->is_loaded); + assert(old->backends == NULL); + assert(old->get_pci_busid_cpuset_backend == NULL); + + hwloc_components_init(); + + /* duplicate the topology object so that we ca change use local binding_hooks + * (those are likely not mapped at the same location in both processes). + */ + new = malloc(sizeof(struct hwloc_topology)); + if (!new) + goto out_with_components; + memcpy(new, old, sizeof(*old)); + new->tma = NULL; + new->adopted_shmem_addr = mmap_address; + new->adopted_shmem_length = length; + new->topology_abi = HWLOC_TOPOLOGY_ABI; + /* setting binding hooks will touch support arrays, so duplicate them too. + * could avoid that by requesting a R/W mmap + */ + new->support.discovery = malloc(sizeof(*new->support.discovery)); + new->support.cpubind = malloc(sizeof(*new->support.cpubind)); + new->support.membind = malloc(sizeof(*new->support.membind)); + new->support.misc = malloc(sizeof(*new->support.misc)); + if (!new->support.discovery || !new->support.cpubind || !new->support.membind || !new->support.misc) + goto out_with_support; + memcpy(new->support.discovery, old->support.discovery, sizeof(*new->support.discovery)); + memcpy(new->support.cpubind, old->support.cpubind, sizeof(*new->support.cpubind)); + memcpy(new->support.membind, old->support.membind, sizeof(*new->support.membind)); + memcpy(new->support.misc, old->support.misc, sizeof(*new->support.misc)); + hwloc_set_binding_hooks(new); + /* clear userdata callbacks pointing to the writer process' functions */ + new->userdata_export_cb = NULL; + new->userdata_import_cb = NULL; + +#ifndef HWLOC_DEBUG + if (getenv("HWLOC_DEBUG_CHECK")) +#endif + hwloc_topology_check(new); + + *topologyp = new; + return 0; + + out_with_support: + free(new->support.discovery); + free(new->support.cpubind); + free(new->support.membind); + free(new->support.misc); + free(new); + out_with_components: + hwloc_components_fini(); + out_with_mmap: + munmap(mmap_res, length); + return -1; +} + +void +hwloc__topology_disadopt(hwloc_topology_t topology) +{ + hwloc_components_fini(); + munmap(topology->adopted_shmem_addr, topology->adopted_shmem_length); + free(topology->support.discovery); + free(topology->support.cpubind); + free(topology->support.membind); + free(topology->support.misc); + free(topology); +} + +#else /* HWLOC_WIN_SYS */ + +int +hwloc_shmem_topology_get_length(hwloc_topology_t topology __hwloc_attribute_unused, + size_t *lengthp __hwloc_attribute_unused, + unsigned long flags __hwloc_attribute_unused) +{ + errno = ENOSYS; + return -1; +} + +int +hwloc_shmem_topology_write(hwloc_topology_t topology __hwloc_attribute_unused, + int fd __hwloc_attribute_unused, hwloc_uint64_t fileoffset __hwloc_attribute_unused, + void *mmap_address __hwloc_attribute_unused, size_t length __hwloc_attribute_unused, + unsigned long flags __hwloc_attribute_unused) +{ + errno = ENOSYS; + return -1; +} + +int +hwloc_shmem_topology_adopt(hwloc_topology_t *topologyp __hwloc_attribute_unused, + int fd __hwloc_attribute_unused, hwloc_uint64_t fileoffset __hwloc_attribute_unused, + void *mmap_address __hwloc_attribute_unused, size_t length __hwloc_attribute_unused, + unsigned long flags __hwloc_attribute_unused) +{ + errno = ENOSYS; + return -1; +} + +void +hwloc__topology_disadopt(hwloc_topology_t topology __hwloc_attribute_unused) +{ +} + +#endif /* HWLOC_WIN_SYS */ diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-aix.c b/3rd-party/hwloc-2.7.1/hwloc/topology-aix.c new file mode 100644 index 0000000000..95a38c6a45 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-aix.c @@ -0,0 +1,904 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2011, 2013 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +/* TODO: use SIGRECONFIG & dr_reconfig for state change */ + +#include "private/autogen/config.h" + +#include +#ifdef HAVE_DIRENT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include +#include + +#include "hwloc.h" +#include "private/private.h" +#include "private/misc.h" +#include "private/debug.h" + +#include +#include +#include +#include +#include +#include +#include + +#ifndef __power_pc +#define __power_pc() 0 +#endif +#ifndef __power_4 +#define __power_4() 0 +#endif +#ifndef __power_5 +#define __power_5() 0 +#endif +#ifndef __power_6 +#define __power_6() 0 +#endif +#ifndef __power_7 +#define __power_7() 0 +#endif + +static int +hwloc_aix_set_sth_cpubind(hwloc_topology_t topology, rstype_t what, rsid_t who, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + rsethandle_t rad; + int res; + unsigned cpu; + + if (flags & HWLOC_CPUBIND_NOMEMBIND) { + errno = ENOSYS; + return -1; + } + + /* The resulting binding is always strict */ + + if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) { + if (ra_detachrset(what, who, 0)) + return -1; + return 0; + } + + rad = rs_alloc(RS_EMPTY); + hwloc_bitmap_foreach_begin(cpu, hwloc_set) + rs_op(RS_ADDRESOURCE, rad, NULL, R_PROCS, cpu); + hwloc_bitmap_foreach_end(); + + res = ra_attachrset(what, who, rad, 0); + if (res < 0 && errno == EPERM) { + /* EPERM may mean that one thread has ben bound with bindprocessor(). + * Unbind the entire process (we can't unbind individual threads) + * and try again. + */ + bindprocessor(BINDPROCESS, pid, PROCESSOR_CLASS_ANY); + res = ra_attachrset(what, who, rad, 0); + } + + rs_free(rad); + return res; +} + +static int +hwloc_aix_get_sth_rset_cpubind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused, int *boundp) +{ + rsethandle_t rset; + unsigned cpu, maxcpus; + int res = -1; + int bound = 0; + + rset = rs_alloc(RS_EMPTY); + + if (ra_getrset(what, who, 0, rset) == -1) + goto out; + + hwloc_bitmap_zero(hwloc_set); + maxcpus = rs_getinfo(rset, R_MAXPROCS, 0); + for (cpu = 0; cpu < maxcpus; cpu++) + if (rs_op(RS_TESTRESOURCE, rset, NULL, R_PROCS, cpu) == 1) + hwloc_bitmap_set(hwloc_set, cpu); + else + bound = 1; + hwloc_bitmap_and(hwloc_set, hwloc_set, hwloc_topology_get_complete_cpuset(topology)); + res = 0; + *boundp = bound; + +out: + rs_free(rset); + return res; +} + +static int +hwloc_aix_get_pid_getthrds_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t pid, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ +#if HWLOC_BITS_PER_LONG == 64 + struct thrdentry64 thread_info; + tid64_t next_thread; +#else + struct thrdsinfo thread_info; + tid_t next_thread; +#endif + + next_thread = 0; + /* TODO: get multiple at once */ +#if HWLOC_BITS_PER_LONG == 64 + while (getthrds64 (pid, &thread_info, sizeof (thread_info), + &next_thread, 1) == 1) { +#else + while (getthrds (pid, &thread_info, sizeof (thread_info), + &next_thread, 1) == 1) { +#endif + if (PROCESSOR_CLASS_ANY != thread_info.ti_cpuid) + hwloc_bitmap_set(hwloc_set, thread_info.ti_cpuid); + else + hwloc_bitmap_fill(hwloc_set); + } + /* TODO: what if the thread list changes and we get nothing? */ + + return 0; +} + +static int +hwloc_aix_get_tid_getthrds_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, tid_t tid, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ +#if HWLOC_BITS_PER_LONG == 64 + struct thrdentry64 thread_info; + tid64_t next_thread; +#else + struct thrdsinfo thread_info; + tid_t next_thread; +#endif + pid_t pid = getpid(); + + next_thread = 0; + /* TODO: get multiple at once */ +#if HWLOC_BITS_PER_LONG == 64 + while (getthrds64 (pid, &thread_info, sizeof (thread_info), + &next_thread, 1) == 1) { +#else + while (getthrds (pid, &thread_info, sizeof (thread_info), + &next_thread, 1) == 1) { +#endif + if (thread_info.ti_tid == tid) { + if (PROCESSOR_CLASS_ANY != thread_info.ti_cpuid) + hwloc_bitmap_set(hwloc_set, thread_info.ti_cpuid); + else + hwloc_bitmap_fill(hwloc_set); + break; + } + } + /* TODO: what if the thread goes away in the meantime? */ + + return 0; +} + +static int +hwloc_aix_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) +{ + rsid_t who; + who.at_pid = getpid(); + return hwloc_aix_set_sth_cpubind(topology, R_PROCESS, who, who.at_pid, hwloc_set, flags); +} + +static int +hwloc_aix_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) +{ + int ret, bound; + rsid_t who; + who.at_pid = getpid(); + ret = hwloc_aix_get_sth_rset_cpubind(topology, R_PROCESS, who, hwloc_set, flags, &bound); + if (!ret && !bound) { + hwloc_bitmap_zero(hwloc_set); + ret = hwloc_aix_get_pid_getthrds_cpubind(topology, who.at_pid, hwloc_set, flags); + } + return ret; +} + +#ifdef R_THREAD +static int +hwloc_aix_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) +{ + rsid_t who; + who.at_tid = thread_self(); + return hwloc_aix_set_sth_cpubind(topology, R_THREAD, who, getpid(), hwloc_set, flags); +} + +static int +hwloc_aix_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) +{ + int ret, bound; + rsid_t who; + who.at_tid = thread_self(); + ret = hwloc_aix_get_sth_rset_cpubind(topology, R_THREAD, who, hwloc_set, flags, &bound); + if (!ret && !bound) { + hwloc_bitmap_zero(hwloc_set); + ret = hwloc_aix_get_tid_getthrds_cpubind(topology, who.at_tid, hwloc_set, flags); + } + return ret; +} +#endif /* R_THREAD */ + +static int +hwloc_aix_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) +{ + rsid_t who; + who.at_pid = pid; + return hwloc_aix_set_sth_cpubind(topology, R_PROCESS, who, pid, hwloc_set, flags); +} + +static int +hwloc_aix_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_set, int flags) +{ + int ret, bound; + rsid_t who; + who.at_pid = pid; + ret = hwloc_aix_get_sth_rset_cpubind(topology, R_PROCESS, who, hwloc_set, flags, &bound); + if (!ret && !bound) { + hwloc_bitmap_zero(hwloc_set); + ret = hwloc_aix_get_pid_getthrds_cpubind(topology, who.at_pid, hwloc_set, flags); + } + return ret; +} + +#ifdef R_THREAD +#ifdef HWLOC_HAVE_PTHREAD_GETTHRDS_NP +static int +hwloc_aix_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, int flags) +{ + struct __pthrdsinfo info; + int size; + if ((errno = pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size))) + return -1; + { + rsid_t who; + who.at_tid = info.__pi_tid; + return hwloc_aix_set_sth_cpubind(topology, R_THREAD, who, getpid(), hwloc_set, flags); + } +} + +static int +hwloc_aix_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_bitmap_t hwloc_set, int flags) +{ + struct __pthrdsinfo info; + int size; + if (pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size)) + return -1; + { + int ret, bound; + rsid_t who; + who.at_tid = info.__pi_tid; + ret = hwloc_aix_get_sth_rset_cpubind(topology, R_THREAD, who, hwloc_set, flags, &bound); + if (!ret && !bound) { + hwloc_bitmap_zero(hwloc_set); + ret = hwloc_aix_get_tid_getthrds_cpubind(topology, who.at_tid, hwloc_set, flags); + } + return ret; + } +} +#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ +#endif /* R_THREAD */ + +static int +hwloc_aix_get_thisthread_last_cpu_location(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + cpu_t cpu; + + if (topology->pid) { + errno = ENOSYS; + return -1; + } + + cpu = mycpu(); + if (cpu < 0) + return -1; + + hwloc_bitmap_only(hwloc_set, cpu); + return 0; +} + +#ifdef P_DEFAULT + +static int +hwloc_aix_membind_policy_from_hwloc(uint_t *aix_policy, int policy) +{ + switch (policy) { + case HWLOC_MEMBIND_DEFAULT: + case HWLOC_MEMBIND_BIND: + *aix_policy = P_DEFAULT; + break; + case HWLOC_MEMBIND_FIRSTTOUCH: + *aix_policy = P_FIRST_TOUCH; + break; + case HWLOC_MEMBIND_INTERLEAVE: + *aix_policy = P_BALANCED; + break; + default: + errno = ENOSYS; + return -1; + } + return 0; +} + +static int +hwloc_aix_prepare_membind(hwloc_topology_t topology, rsethandle_t *rad, hwloc_const_nodeset_t nodeset, int flags __hwloc_attribute_unused) +{ + rsethandle_t rset, noderad; + int MCMlevel; + int node; + + MCMlevel = rs_getinfo(NULL, R_MCMSDL, 0); + if ((topology->flags & HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED)) + rset = rs_alloc(RS_ALL); + else + rset = rs_alloc(RS_PARTITION); + *rad = rs_alloc(RS_EMPTY); + noderad = rs_alloc(RS_EMPTY); + + hwloc_bitmap_foreach_begin(node, nodeset) + /* we used MCMlevel rad number for node->os_index during lookup */ + rs_getrad(rset, noderad, MCMlevel, node, 0); + rs_op(RS_UNION, noderad, *rad, 0, 0); + hwloc_bitmap_foreach_end(); + + rs_free(rset); + rs_free(noderad); + + return 0; +} + +static int +hwloc_aix_set_sth_membind(hwloc_topology_t topology, rstype_t what, rsid_t who, pid_t pid, hwloc_const_bitmap_t _nodeset, hwloc_membind_policy_t policy, int flags) +{ + hwloc_const_nodeset_t nodeset; + rsethandle_t rad; + int res; + + if (flags & HWLOC_MEMBIND_NOCPUBIND) { + errno = ENOSYS; + return -1; + } + + if (policy == HWLOC_MEMBIND_DEFAULT) + nodeset = hwloc_topology_get_complete_nodeset(topology); + else + nodeset = _nodeset; + + switch (policy) { + case HWLOC_MEMBIND_DEFAULT: + case HWLOC_MEMBIND_BIND: + break; + default: + errno = ENOSYS; + return -1; + } + + if (hwloc_aix_prepare_membind(topology, &rad, nodeset, flags)) + return -1; + + res = ra_attachrset(what, who, rad, 0); + if (res < 0 && errno == EPERM) { + /* EPERM may mean that one thread has ben bound with bindprocessor(). + * Unbind the entire process (we can't unbind individual threads) + * and try again. + */ + bindprocessor(BINDPROCESS, pid, PROCESSOR_CLASS_ANY); + res = ra_attachrset(what, who, rad, 0); + } + + rs_free(rad); + return res; +} + +static int +hwloc_aix_get_sth_membind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_bitmap_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused) +{ + hwloc_bitmap_t hwloc_set; + rsethandle_t rset; + unsigned cpu, maxcpus; + int res = -1; + int n, i; + + n = hwloc_get_nbobjs_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE); + + rset = rs_alloc(RS_EMPTY); + + if (ra_getrset(what, who, 0, rset) == -1) + goto out; + + hwloc_set = hwloc_bitmap_alloc(); + + maxcpus = rs_getinfo(rset, R_MAXPROCS, 0); + for (cpu = 0; cpu < maxcpus; cpu++) + if (rs_op(RS_TESTRESOURCE, rset, NULL, R_PROCS, cpu) == 1) + hwloc_bitmap_set(hwloc_set, cpu); + hwloc_bitmap_and(hwloc_set, hwloc_set, hwloc_topology_get_complete_cpuset(topology)); + + hwloc_bitmap_zero(nodeset); + for (i = 0; i < n; i++) { + hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE, i); + if (hwloc_bitmap_isincluded(obj->cpuset, hwloc_set)) + hwloc_bitmap_set(nodeset, obj->os_index); + } + + hwloc_bitmap_free(hwloc_set); + + *policy = HWLOC_MEMBIND_BIND; + res = 0; + +out: + rs_free(rset); + return res; +} + +static int +hwloc_aix_set_thisproc_membind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags) +{ + rsid_t who; + who.at_pid = getpid(); + return hwloc_aix_set_sth_membind(topology, R_PROCESS, who, who.at_pid, hwloc_set, policy, flags); +} + +static int +hwloc_aix_get_thisproc_membind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags) +{ + rsid_t who; + who.at_pid = getpid(); + return hwloc_aix_get_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags); +} + +#ifdef R_THREAD +static int +hwloc_aix_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags) +{ + rsid_t who; + who.at_tid = thread_self(); + return hwloc_aix_set_sth_membind(topology, R_THREAD, who, getpid(), hwloc_set, policy, flags); +} + +static int +hwloc_aix_get_thisthread_membind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags) +{ + rsid_t who; + who.at_tid = thread_self(); + return hwloc_aix_get_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags); +} +#endif /* R_THREAD */ + +static int +hwloc_aix_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags) +{ + rsid_t who; + who.at_pid = pid; + return hwloc_aix_set_sth_membind(topology, R_PROCESS, who, pid, hwloc_set, policy, flags); +} + +static int +hwloc_aix_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags) +{ + rsid_t who; + who.at_pid = pid; + return hwloc_aix_get_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags); +} + +#ifdef R_THREAD +#if 0 /* def HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ +static int +hwloc_aix_set_thread_membind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags) +{ + struct __pthrdsinfo info; + int size; + if ((errno = pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size))) + return -1; + { + rsid_t who; + who.at_tid = info.__pi_tid; + return hwloc_aix_set_sth_membind(topology, R_THREAD, who, getpid(), hwloc_set, policy, flags); + } +} + +static int +hwloc_aix_get_thread_membind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags) +{ + struct __pthrdsinfo info; + int size; + if (pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size)) + return -1; + { + rsid_t who; + who.at_tid = info.__pi_tid; + return hwloc_aix_get_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags); + } +} +#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ +#endif /* R_THREAD */ + +#if 0 +/* TODO: seems to be right, but doesn't seem to be working (EINVAL), even after + * aligning the range on 64K... */ +static int +hwloc_aix_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t _nodeset, hwloc_membind_policy_t policy, int flags) +{ + hwloc_const_nodeset_t nodeset; + subrange_t subrange; + rsid_t rsid = { .at_subrange = &subrange }; + uint_t aix_policy; + int ret; + fprintf(stderr,"yop\n"); + + if ((flags & (HWLOC_MEMBIND_MIGRATE|HWLOC_MEMBIND_STRICT)) + == (HWLOC_MEMBIND_MIGRATE|HWLOC_MEMBIND_STRICT)) { + errno = ENOSYS; + return -1; + } + + if (policy == HWLOC_MEMBIND_DEFAULT) + nodeset = hwloc_topology_get_complete_nodeset(topology); + else + nodeset = _nodeset; + + subrange.su_offset = (uintptr_t) addr; + subrange.su_length = len; + subrange.su_rstype = R_RSET; + + if (hwloc_aix_membind_policy_from_hwloc(&aix_policy, policy)) + return -1; + + if (hwloc_aix_prepare_membind(topology, &subrange.su_rsid.at_rset, nodeset, flags)) + return -1; + + subrange.su_policy = aix_policy; + + res = ra_attachrset(R_SUBRANGE, rsid, subrange.su_rsid.at_rset, 0); + if (res < 0 && errno == EPERM) { + /* EPERM may mean that one thread has ben bound with bindprocessor(). + * Unbind the entire process (we can't unbind individual threads) + * and try again. + * FIXME: actually check that this EPERM can happen + */ + bindprocessor(BINDPROCESS, getpid(), PROCESSOR_CLASS_ANY); + res = ra_attachrset(R_SUBRANGE, rsid, subrange.su_rsid.at_rset, 0); + } + + rs_free(subrange.su_rsid.at_rset); + return ret; +} +#endif + +static void * +hwloc_aix_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t _nodeset, hwloc_membind_policy_t policy, int flags) +{ + hwloc_const_nodeset_t nodeset; + void *ret; + rsid_t rsid; + uint_t aix_policy; + + if (policy == HWLOC_MEMBIND_DEFAULT) + nodeset = hwloc_topology_get_complete_nodeset(topology); + else + nodeset = _nodeset; + + if (hwloc_aix_membind_policy_from_hwloc(&aix_policy, policy)) + return hwloc_alloc_or_fail(topology, len, flags); + + if (hwloc_aix_prepare_membind(topology, &rsid.at_rset, nodeset, flags)) + return hwloc_alloc_or_fail(topology, len, flags); + + ret = ra_mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0, R_RSET, rsid, aix_policy); + + rs_free(rsid.at_rset); + return ret == (void*)-1 ? NULL : ret; +} +#endif /* P_DEFAULT */ + +static void +look_rset(int sdl, hwloc_obj_type_t type, struct hwloc_topology *topology, int level) +{ + rsethandle_t rset, rad; + int i,maxcpus,j; + int nbnodes; + struct hwloc_obj *obj; + + if ((topology->flags & HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED)) + rset = rs_alloc(RS_ALL); + else + rset = rs_alloc(RS_PARTITION); + rad = rs_alloc(RS_EMPTY); + nbnodes = rs_numrads(rset, sdl, 0); + if (nbnodes == -1) { + perror("rs_numrads"); + return; + } + + for (i = 0; i < nbnodes; i++) { + hwloc_bitmap_t cpuset; + unsigned os_index = HWLOC_UNKNOWN_INDEX; /* no os_index except for PU and NUMANODE below */ + + if (rs_getrad(rset, rad, sdl, i, 0)) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/aix: rs_getrad(%d) failed: %s\n", i, strerror(errno)); + continue; + } + if (!rs_getinfo(rad, R_NUMPROCS, 0)) + continue; + + maxcpus = rs_getinfo(rad, R_MAXPROCS, 0); + cpuset = hwloc_bitmap_alloc(); + for (j = 0; j < maxcpus; j++) { + if (rs_op(RS_TESTRESOURCE, rad, NULL, R_PROCS, j)) + hwloc_bitmap_set(cpuset, j); + } + + if (type == HWLOC_OBJ_PU) { + os_index = hwloc_bitmap_first(cpuset); + hwloc_debug("Found PU #%u inside node %d for sdl %d\n", os_index, i, sdl); + assert(hwloc_bitmap_weight(cpuset) == 1); + } else if (type == HWLOC_OBJ_NUMANODE) { + /* NUMA node os_index isn't used for binding, just use the rad number to get unique values. + * Note that we'll use that fact in hwloc_aix_prepare_membind(). */ + os_index = i; + hwloc_debug("Using os_index #%u for NUMA node inside node %d for sdl %d\n", os_index, i, sdl); + } + + obj = hwloc_alloc_setup_object(topology, type, os_index); + obj->cpuset = cpuset; + + switch(type) { + case HWLOC_OBJ_NUMANODE: + obj->nodeset = hwloc_bitmap_alloc(); + hwloc_bitmap_set(obj->nodeset, i); + obj->attr->numanode.local_memory = 0; /* TODO: odd, rs_getinfo(rad, R_MEMSIZE, 0) << 10 returns the total memory ... */ + obj->attr->numanode.page_types_len = 2; + obj->attr->numanode.page_types = malloc(2*sizeof(*obj->attr->numanode.page_types)); + memset(obj->attr->numanode.page_types, 0, 2*sizeof(*obj->attr->numanode.page_types)); + obj->attr->numanode.page_types[0].size = hwloc_getpagesize(); +#if HAVE_DECL__SC_LARGE_PAGESIZE + obj->attr->numanode.page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); +#endif + /* TODO: obj->attr->numanode.page_types[1].count = rs_getinfo(rset, R_LGPGFREE, 0) / hugepagesize */ + break; + case HWLOC_OBJ_L2CACHE: + obj->attr->cache.size = _system_configuration.L2_cache_size; + obj->attr->cache.associativity = _system_configuration.L2_cache_asc; + + obj->attr->cache.linesize = 0; /* unknown by default */ + if (__power_pc()) + if (__power_4() || __power_5() || __power_6() || __power_7()) + obj->attr->cache.linesize = 128; + + obj->attr->cache.depth = 2; + obj->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; /* OK for power[4567], unknown for others */ + break; + case HWLOC_OBJ_GROUP: + obj->attr->group.kind = HWLOC_GROUP_KIND_AIX_SDL_UNKNOWN; + obj->attr->group.subkind = level; + break; + case HWLOC_OBJ_CORE: + { + hwloc_obj_t obj2, obj3; + obj2 = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1CACHE, HWLOC_UNKNOWN_INDEX); + obj2->cpuset = hwloc_bitmap_dup(obj->cpuset); + obj2->attr->cache.size = _system_configuration.dcache_size; + obj2->attr->cache.associativity = _system_configuration.dcache_asc; + obj2->attr->cache.linesize = _system_configuration.dcache_line; + obj2->attr->cache.depth = 1; + if (_system_configuration.cache_attrib & (1<<30)) { + /* Unified cache */ + obj2->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + hwloc_debug("Adding an L1u cache for core %d\n", i); + } else { + /* Separate Instruction and Data caches */ + obj2->attr->cache.type = HWLOC_OBJ_CACHE_DATA; + hwloc_debug("Adding an L1d cache for core %d\n", i); + + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1ICACHE)) { + obj3 = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1ICACHE, HWLOC_UNKNOWN_INDEX); + obj3->cpuset = hwloc_bitmap_dup(obj->cpuset); + obj3->attr->cache.size = _system_configuration.icache_size; + obj3->attr->cache.associativity = _system_configuration.icache_asc; + obj3->attr->cache.linesize = _system_configuration.icache_line; + obj3->attr->cache.depth = 1; + obj3->attr->cache.type = HWLOC_OBJ_CACHE_INSTRUCTION; + hwloc_debug("Adding an L1i cache for core %d\n", i); + hwloc__insert_object_by_cpuset(topology, NULL, obj3, "aix:l1icache"); + } + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1CACHE)) + hwloc__insert_object_by_cpuset(topology, NULL, obj2, "aix:l1cache"); + else + hwloc_free_unlinked_object(obj2); /* FIXME: don't built at all, just build the cpuset in case l1/l1i needs it */ + break; + } + default: + break; + } + hwloc_debug_2args_bitmap("%s %d has cpuset %s\n", + hwloc_obj_type_string(type), + i, obj->cpuset); + if (hwloc_filter_check_keep_object_type(topology, obj->type)) + hwloc__insert_object_by_cpuset(topology, NULL, obj, "aix:cache"); + else + hwloc_free_unlinked_object(obj); + } + + rs_free(rset); + rs_free(rad); +} + +static int +hwloc_look_aix(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend uses the underlying OS. + * However we don't enforce topology->is_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + + struct hwloc_topology *topology = backend->topology; + int i; + + assert(dstatus->phase == HWLOC_DISC_PHASE_CPU); + + if (topology->levels[0][0]->cpuset) + /* somebody discovered things */ + return -1; + + hwloc_alloc_root_sets(topology->levels[0][0]); + + /* TODO: R_LGPGDEF/R_LGPGFREE for large pages */ + + hwloc_debug("Note: SMPSDL is at %d\n", rs_getinfo(NULL, R_SMPSDL, 0)); +#ifdef R_REF1SDL + hwloc_debug("Note: REF1SDL is at %d\n", rs_getinfo(NULL, R_REF1SDL, 0)); +#endif + + for (i=0; i<=rs_getinfo(NULL, R_MAXSDL, 0); i++) + { + int known = 0; +#if 0 + if (i == rs_getinfo(NULL, R_SMPSDL, 0)) + /* Not enabled for now because I'm not sure what it corresponds to. On + * decrypthon it contains all the cpus. Is it a "machine" or a "system" + * level ? + */ + { + hwloc_debug("looking AIX \"SMP\" sdl %d\n", i); + look_rset(i, HWLOC_OBJ_MACHINE, topology, i); + known = 1; + } +#endif + if (i == rs_getinfo(NULL, R_MCMSDL, 0)) + { + hwloc_debug("looking AIX node sdl %d\n", i); + look_rset(i, HWLOC_OBJ_NUMANODE, topology, i); + known = 1; + topology->support.discovery->numa = 1; + } +# ifdef R_L2CSDL + if (i == rs_getinfo(NULL, R_L2CSDL, 0)) + { + hwloc_debug("looking AIX L2 sdl %d\n", i); + look_rset(i, HWLOC_OBJ_L2CACHE, topology, i); + known = 1; + } +# endif +# ifdef R_PCORESDL + if (i == rs_getinfo(NULL, R_PCORESDL, 0)) + { + hwloc_debug("looking AIX core sdl %d\n", i); + look_rset(i, HWLOC_OBJ_CORE, topology, i); + known = 1; + } +# endif + if (i == rs_getinfo(NULL, R_MAXSDL, 0)) + { + hwloc_debug("looking AIX max sdl %d\n", i); + look_rset(i, HWLOC_OBJ_PU, topology, i); + known = 1; + topology->support.discovery->pu = 1; + } + + /* Don't know how it should be rendered, make a misc object for it. */ + if (!known) + { + hwloc_debug("looking AIX unknown sdl %d\n", i); + look_rset(i, HWLOC_OBJ_GROUP, topology, i); + } + } + + hwloc_obj_add_info(topology->levels[0][0], "Backend", "AIX"); + hwloc_add_uname_info(topology, NULL); + return 0; +} + +void +hwloc_set_aix_hooks(struct hwloc_binding_hooks *hooks, + struct hwloc_topology_support *support __hwloc_attribute_unused) +{ + hooks->set_proc_cpubind = hwloc_aix_set_proc_cpubind; + hooks->get_proc_cpubind = hwloc_aix_get_proc_cpubind; +#ifdef R_THREAD +#ifdef HWLOC_HAVE_PTHREAD_GETTHRDS_NP + hooks->set_thread_cpubind = hwloc_aix_set_thread_cpubind; + hooks->get_thread_cpubind = hwloc_aix_get_thread_cpubind; +#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ +#endif /* R_THREAD */ + hooks->set_thisproc_cpubind = hwloc_aix_set_thisproc_cpubind; + hooks->get_thisproc_cpubind = hwloc_aix_get_thisproc_cpubind; +#ifdef R_THREAD + hooks->set_thisthread_cpubind = hwloc_aix_set_thisthread_cpubind; + hooks->get_thisthread_cpubind = hwloc_aix_get_thisthread_cpubind; +#endif /* R_THREAD */ + hooks->get_thisthread_last_cpu_location = hwloc_aix_get_thisthread_last_cpu_location; + /* TODO: get_last_cpu_location: mycpu() only works for the current thread? */ +#ifdef P_DEFAULT + hooks->set_proc_membind = hwloc_aix_set_proc_membind; + hooks->get_proc_membind = hwloc_aix_get_proc_membind; +#ifdef R_THREAD +#if 0 /* def HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ + /* Does it really make sense to set the memory binding of another thread? */ + hooks->set_thread_membind = hwloc_aix_set_thread_membind; + hooks->get_thread_membind = hwloc_aix_get_thread_membind; +#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ +#endif /* R_THREAD */ + hooks->set_thisproc_membind = hwloc_aix_set_thisproc_membind; + hooks->get_thisproc_membind = hwloc_aix_get_thisproc_membind; +#ifdef R_THREAD + hooks->set_thisthread_membind = hwloc_aix_set_thisthread_membind; + hooks->get_thisthread_membind = hwloc_aix_get_thisthread_membind; +#endif /* R_THREAD */ + /* hooks->set_area_membind = hwloc_aix_set_area_membind; */ + /* get_area_membind is not available */ + hooks->alloc_membind = hwloc_aix_alloc_membind; + hooks->alloc = hwloc_alloc_mmap; + hooks->free_membind = hwloc_free_mmap; + support->membind->firsttouch_membind = 1; + support->membind->bind_membind = 1; + support->membind->interleave_membind = 1; +#endif /* P_DEFAULT */ +} + +static struct hwloc_backend * +hwloc_aix_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + backend->discover = hwloc_look_aix; + return backend; +} + +static struct hwloc_disc_component hwloc_aix_disc_component = { + "aix", + HWLOC_DISC_PHASE_CPU, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_aix_component_instantiate, + 50, + 1, + NULL +}; + +const struct hwloc_component hwloc_aix_component = { + HWLOC_COMPONENT_ABI, + NULL, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_aix_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-bgq.c b/3rd-party/hwloc-2.7.1/hwloc/topology-bgq.c new file mode 100644 index 0000000000..0a2e9f9fa3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-bgq.c @@ -0,0 +1,320 @@ +/* + * Copyright © 2013-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" +#include "private/debug.h" + +#include +#include +#include +#include +#include + +#ifndef HWLOC_DISABLE_BGQ_PORT_TEST + +#define HWLOC_BGQ_CORES 17 /* spare core ignored for now */ + +static int +hwloc_bgq__get_allowed_resources(struct hwloc_topology *topology) +{ + const char *env; + unsigned i; + + /* start from everything */ + hwloc_bitmap_copy(topology->allowed_cpuset, topology->levels[0][0]->cpuset); + + /* mark the 17th core (OS-reserved) as disallowed */ + hwloc_bitmap_clr_range(topology->allowed_cpuset, (HWLOC_BGQ_CORES-1)*4, HWLOC_BGQ_CORES*4-1); + + if (topology->is_thissystem) { /* don't call CNK unless thissystem */ + env = getenv("BG_THREADMODEL"); + if (!env || atoi(env) != 2) { + /* process cannot use cores/threads outside of its Kernel_ThreadMask() unless BG_THREADMODEL=2 */ + uint64_t bgmask = Kernel_ThreadMask(Kernel_MyTcoord()); + /* the mask is reversed, manually reverse it */ + for(i=0; i<64; i++) + if (((bgmask >> i) & 1) == 0) + hwloc_bitmap_clr(topology->allowed_cpuset, 63-i); + } + } + return 0; +} + +static int +hwloc_look_bgq(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend may be used with topology->is_thissystem set (default) + * or not (CNK-emulation on Linux). + */ + + struct hwloc_topology *topology = backend->topology; + hwloc_bitmap_t set; + hwloc_obj_t obj; + unsigned i; + + assert(dstatus->phase == HWLOC_DISC_PHASE_GLOBAL); + + if (topology->levels[0][0]->cpuset) + /* somebody discovered things */ + return -1; + + hwloc_alloc_root_sets(topology->levels[0][0]); + + if (!(dstatus->flags & HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES)) { + hwloc_bgq__get_allowed_resources(topology); + dstatus->flags |= HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES; + } + + /* a single memory bank */ + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_NUMANODE, 0); + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(set, 0, HWLOC_BGQ_CORES*4-1); + obj->cpuset = set; + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set(set, 0); + obj->nodeset = set; + obj->attr->numanode.local_memory = 16ULL*1024*1024*1024ULL; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "bgq:numa"); + topology->support.discovery->numa = 1; + topology->support.discovery->numa_memory = 1; + + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(set, 0, HWLOC_BGQ_CORES*4-1); + + /* shared L2 */ + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L2CACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L2CACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + obj->attr->cache.depth = 2; + obj->attr->cache.size = 32*1024*1024; + obj->attr->cache.linesize = 128; + obj->attr->cache.associativity = 16; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "bgq:l2cache"); + } + + /* package */ + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_PACKAGE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PACKAGE, 0); + obj->cpuset = set; + hwloc_obj_add_info(obj, "CPUModel", "IBM PowerPC A2"); + hwloc__insert_object_by_cpuset(topology, NULL, obj, "bgq:package"); + } else + hwloc_bitmap_free(set); + + /* Cores */ + for(i=0; icpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_DATA; + obj->attr->cache.depth = 1; + obj->attr->cache.size = 16*1024; + obj->attr->cache.linesize = 64; + obj->attr->cache.associativity = 8; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "bgq:l1dcache"); + } + /* L1i */ + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1ICACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1ICACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_INSTRUCTION; + obj->attr->cache.depth = 1; + obj->attr->cache.size = 16*1024; + obj->attr->cache.linesize = 64; + obj->attr->cache.associativity = 4; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "bgq:l1icache"); + } + /* there's also a L1p "prefetch cache" of 4kB with 128B lines */ + + /* Core */ + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_CORE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_CORE, i); + obj->cpuset = set; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "bgq:core"); + } else + hwloc_bitmap_free(set); + } + + /* PUs */ + topology->support.discovery->pu = 1; + topology->support.discovery->disallowed_pu = 1; + hwloc_setup_pu_level(topology, HWLOC_BGQ_CORES*4); + + /* Add BGQ specific information */ + + hwloc_obj_add_info(topology->levels[0][0], "Backend", "BGQ"); + hwloc_add_uname_info(topology, NULL); + return 0; +} + +static int +hwloc_bgq_get_thread_cpubind(hwloc_topology_t topology, pthread_t thread, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + unsigned pu; + cpu_set_t bg_set; + int err; + + if (topology->pid) { + errno = ENOSYS; + return -1; + } + err = pthread_getaffinity_np(thread, sizeof(bg_set), &bg_set); + if (err) { + errno = err; + return -1; + } + for(pu=0; pu<64; pu++) + if (CPU_ISSET(pu, &bg_set)) { + /* the binding cannot contain multiple PUs */ + hwloc_bitmap_only(hwloc_set, pu); + break; + } + return 0; +} + +static int +hwloc_bgq_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + if (topology->pid) { + errno = ENOSYS; + return -1; + } + hwloc_bitmap_only(hwloc_set, Kernel_ProcessorID()); + return 0; +} + +static int +hwloc_bgq_set_thread_cpubind(hwloc_topology_t topology, pthread_t thread, hwloc_const_bitmap_t hwloc_set, int flags) +{ + unsigned pu; + cpu_set_t bg_set; + int err; + + if (topology->pid) { + errno = ENOSYS; + return -1; + } + /* the binding cannot contain multiple PUs. + * keep the first PU only, and error out if STRICT. + */ + if (hwloc_bitmap_weight(hwloc_set) != 1) { + if ((flags & HWLOC_CPUBIND_STRICT)) { + errno = ENOSYS; + return -1; + } + } + pu = hwloc_bitmap_first(hwloc_set); + CPU_ZERO(&bg_set); + CPU_SET(pu, &bg_set); + err = pthread_setaffinity_np(thread, sizeof(bg_set), &bg_set); + if (err) { + errno = err; + return -1; + } + return 0; +} + +static int +hwloc_bgq_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) +{ + return hwloc_bgq_set_thread_cpubind(topology, pthread_self(), hwloc_set, flags); +} + +static int +hwloc_bgq_get_allowed_resources(struct hwloc_topology *topology) +{ + /* Loading BGQ from XML isn't much useful since everything is hardwired anyway. + * But still implement XML + this callback in case portable applications want to always use XMLs. + */ + + /* In theory, when applying local restrictions to a XML-loaded topology, + * we should check that the current topology contains 1 NUMA nodes and 17*4 PUs. + * + * Just trust the user when he sets THISSYSTEM=1. + */ + return hwloc_bgq__get_allowed_resources(topology); +} + +void +hwloc_set_bgq_hooks(struct hwloc_binding_hooks *hooks, + struct hwloc_topology_support *support __hwloc_attribute_unused) +{ + hooks->set_thisthread_cpubind = hwloc_bgq_set_thisthread_cpubind; + hooks->set_thread_cpubind = hwloc_bgq_set_thread_cpubind; + hooks->get_thisthread_cpubind = hwloc_bgq_get_thisthread_cpubind; + hooks->get_thread_cpubind = hwloc_bgq_get_thread_cpubind; + /* threads cannot be bound to more than one PU, so get_last_cpu_location == get_cpubind */ + hooks->get_thisthread_last_cpu_location = hwloc_bgq_get_thisthread_cpubind; + /* hooks->get_thread_last_cpu_location = hwloc_bgq_get_thread_cpubind; */ + + hooks->get_allowed_resources = hwloc_bgq_get_allowed_resources; +} + +static struct hwloc_backend * +hwloc_bgq_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct utsname utsname; + struct hwloc_backend *backend; + int forced_nonbgq = 0; + int err; + + err = uname(&utsname); + if (err || strcmp(utsname.sysname, "CNK") || strcmp(utsname.machine, "BGQ")) { + const char *env = getenv("HWLOC_FORCE_BGQ"); + if (!env || !atoi(env)) { + fprintf(stderr, "*** Found unexpected uname sysname `%s' machine `%s'.\n", utsname.sysname, utsname.machine); + fprintf(stderr, "*** The BlueGene/Q backend (bgq) is only enabled by default on compute nodes\n" + "*** (where uname returns sysname=CNK and machine=BGQ).\n" + "*** If you know you *really* want to run the bgq backend on this non-compute node,\n" + "*** set HWLOC_FORCE_BGQ=1 in the environment.\n" + "*** If you just want to discover the native topology of this non-compute node,\n" + "*** do not pass any BlueGene/Q-specific options on the configure command-line.\n"); + return NULL; + } else { + forced_nonbgq = 1; + } + } + + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + backend->discover = hwloc_look_bgq; + if (forced_nonbgq) + backend->is_thissystem = 0; + return backend; +} + +static struct hwloc_disc_component hwloc_bgq_disc_component = { + "bgq", + HWLOC_DISC_PHASE_GLOBAL, + ~0, + hwloc_bgq_component_instantiate, + 50, + 1, + NULL +}; + +const struct hwloc_component hwloc_bgq_component = { + HWLOC_COMPONENT_ABI, + NULL, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_bgq_disc_component +}; + +#endif /* !HWLOC_DISABLE_BGQ_PORT_TEST */ diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-cuda.c b/3rd-party/hwloc-2.7.1/hwloc/topology-cuda.c new file mode 100644 index 0000000000..abe7ff805d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-cuda.c @@ -0,0 +1,186 @@ +/* + * Copyright © 2011 Université Bordeaux + * Copyright © 2012-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/plugins.h" +#include "hwloc/cudart.h" + +/* private headers allowed for convenience because this plugin is built within hwloc */ +#include "private/misc.h" +#include "private/debug.h" + +#include + +static unsigned hwloc_cuda_cores_per_MP(int major, int minor) +{ + /* FP32 cores per MP, based on CUDA C Programming Guide, Annex "Compute + * Capabilities" */ + switch (major) { + case 1: + switch (minor) { + case 0: + case 1: + case 2: + case 3: return 8; + } + break; + case 2: + switch (minor) { + case 0: return 32; + case 1: return 48; + } + break; + case 3: + return 192; + case 5: + return 128; + case 6: + switch (minor) { + case 0: return 64; + case 1: + case 2: return 128; + } + break; + case 7: + case 8: + return 64; + } + hwloc_debug("unknown compute capability %d.%d, disabling core display.\n", major, minor); + return 0; +} + +static int +hwloc_cuda_discover(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend uses the underlying OS. + * However we don't enforce topology->is_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + + struct hwloc_topology *topology = backend->topology; + enum hwloc_type_filter_e filter; + cudaError_t cures; + int nb, i; + + assert(dstatus->phase == HWLOC_DISC_PHASE_IO); + + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_OS_DEVICE, &filter); + if (filter == HWLOC_TYPE_FILTER_KEEP_NONE) + return 0; + + cures = cudaGetDeviceCount(&nb); + if (cures) { + if (cures != cudaErrorNoDevice && !hwloc_hide_errors()) { + const char *error = cudaGetErrorString(cures); + fprintf(stderr, "hwloc/cuda: Failed to get number of devices with cudaGetDeviceCount(): %s\n", error); + } + return -1; + } + + for (i = 0; i < nb; i++) { + int domain, bus, dev; + char cuda_name[32]; + char number[32]; + struct cudaDeviceProp prop; + hwloc_obj_t cuda_device, parent; + unsigned cores; + + cuda_device = hwloc_alloc_setup_object(topology, HWLOC_OBJ_OS_DEVICE, HWLOC_UNKNOWN_INDEX); + snprintf(cuda_name, sizeof(cuda_name), "cuda%d", i); + cuda_device->name = strdup(cuda_name); + cuda_device->depth = HWLOC_TYPE_DEPTH_UNKNOWN; + cuda_device->attr->osdev.type = HWLOC_OBJ_OSDEV_COPROC; + + cuda_device->subtype = strdup("CUDA"); + hwloc_obj_add_info(cuda_device, "Backend", "CUDA"); + hwloc_obj_add_info(cuda_device, "GPUVendor", "NVIDIA Corporation"); + + cures = cudaGetDeviceProperties(&prop, i); + if (!cures && prop.name[0] != '\0') + hwloc_obj_add_info(cuda_device, "GPUModel", prop.name); + + snprintf(number, sizeof(number), "%llu", ((unsigned long long) prop.totalGlobalMem) >> 10); + hwloc_obj_add_info(cuda_device, "CUDAGlobalMemorySize", number); + + snprintf(number, sizeof(number), "%llu", ((unsigned long long) prop.l2CacheSize) >> 10); + hwloc_obj_add_info(cuda_device, "CUDAL2CacheSize", number); + + snprintf(number, sizeof(number), "%d", prop.multiProcessorCount); + hwloc_obj_add_info(cuda_device, "CUDAMultiProcessors", number); + + cores = hwloc_cuda_cores_per_MP(prop.major, prop.minor); + if (cores) { + snprintf(number, sizeof(number), "%u", cores); + hwloc_obj_add_info(cuda_device, "CUDACoresPerMP", number); + } + + snprintf(number, sizeof(number), "%llu", ((unsigned long long) prop.sharedMemPerBlock) >> 10); + hwloc_obj_add_info(cuda_device, "CUDASharedMemorySizePerMP", number); + + parent = NULL; + if (hwloc_cudart_get_device_pci_ids(NULL /* topology unused */, i, &domain, &bus, &dev) == 0) { + parent = hwloc_pci_find_parent_by_busid(topology, domain, bus, dev, 0); + } + if (!parent) + parent = hwloc_get_root_obj(topology); + + hwloc_insert_object_by_parent(topology, parent, cuda_device); + } + + return 0; +} + +static struct hwloc_backend * +hwloc_cuda_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + /* the first callback will initialize those */ + backend->discover = hwloc_cuda_discover; + return backend; +} + +static struct hwloc_disc_component hwloc_cuda_disc_component = { + "cuda", + HWLOC_DISC_PHASE_IO, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_cuda_component_instantiate, + 10, /* after pci */ + 1, + NULL +}; + +static int +hwloc_cuda_component_init(unsigned long flags) +{ + if (flags) + return -1; + if (hwloc_plugin_check_namespace("cuda", "hwloc_backend_alloc") < 0) + return -1; + return 0; +} + +#ifdef HWLOC_INSIDE_PLUGIN +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_cuda_component; +#endif + +const struct hwloc_component hwloc_cuda_component = { + HWLOC_COMPONENT_ABI, + hwloc_cuda_component_init, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_cuda_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-darwin.c b/3rd-party/hwloc-2.7.1/hwloc/topology-darwin.c new file mode 100644 index 0000000000..f9c2fb7c43 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-darwin.c @@ -0,0 +1,684 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2013 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +/* Detect topology change: registering for power management changes and check + * if for example hw.activecpu changed */ + +/* Apparently, Darwin people do not _want_ to provide binding functions. */ + +#include "private/autogen/config.h" + +#include +#include +#include +#include + +#include "hwloc.h" +#include "private/private.h" +#include "private/debug.h" + +#if (defined HWLOC_HAVE_DARWIN_FOUNDATION) && (defined HWLOC_HAVE_DARWIN_IOKIT) + +#include +#include + +#define DT_PLANE "IODeviceTree" + +struct hwloc_darwin_cpukinds { + struct hwloc_darwin_cpukind { + hwloc_bitmap_t cpuset; +#define HWLOC_DARWIN_COMPATIBLE_MAX 128 + char *compatible; + } P, E; +}; + +static int hwloc__look_darwin_cpukinds(struct hwloc_darwin_cpukinds *kinds) +{ + io_registry_entry_t cpus_root; + io_iterator_t cpus_iter; + io_registry_entry_t cpus_child; + kern_return_t kret; + + hwloc_debug("\nLooking at cpukinds under " DT_PLANE ":/cpus ...\n"); + + cpus_root = IORegistryEntryFromPath(kIOMasterPortDefault, DT_PLANE ":/cpus"); + if (!cpus_root) { + fprintf(stderr, "hwloc/darwin/cpukinds: failed to find " DT_PLANE ":/cpus\n"); + return -1; + } + + kret = IORegistryEntryGetChildIterator(cpus_root, DT_PLANE, &cpus_iter); + if (kret != KERN_SUCCESS) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: failed to create iterator\n"); + IOObjectRelease(cpus_root); + return -1; + } + + while ((cpus_child = IOIteratorNext(cpus_iter)) != 0) { + CFTypeRef ref; + unsigned logical_cpu_id; + char cluster_type; + char compatible[HWLOC_DARWIN_COMPATIBLE_MAX+2]; /* room for two \0 at the end */ + +#ifdef HWLOC_DEBUG + { + /* get the name */ + io_name_t name; + kret = IORegistryEntryGetNameInPlane(cpus_child, DT_PLANE, name); + if (kret != KERN_SUCCESS) { + hwloc_debug("failed to find cpu name\n"); + } else { + hwloc_debug("looking at cpu `%s'\n", name); + } + } +#endif + + /* get logical-cpu-id */ + ref = IORegistryEntrySearchCFProperty(cpus_child, DT_PLANE, CFSTR("logical-cpu-id"), kCFAllocatorDefault, kNilOptions); + if (!ref) { + /* this may happen on old/x86 systems that aren't hybrid, don't warn */ + hwloc_debug("failed to find logical-cpu-id\n"); + continue; + } + if (CFGetTypeID(ref) != CFNumberGetTypeID()) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: unexpected `logical-cpu-id' CF type %s\n", + CFStringGetCStringPtr(CFCopyTypeIDDescription(CFGetTypeID(ref)), kCFStringEncodingUTF8)); + CFRelease(ref); + continue; + } + { + long long lld_value; + if (!CFNumberGetValue(ref, kCFNumberLongLongType, &lld_value)) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: failed to get logical-cpu-id\n"); + CFRelease(ref); + continue; + } + hwloc_debug("got logical-cpu-id %lld\n", lld_value); + logical_cpu_id = lld_value; + } + CFRelease(ref); + +#ifdef HWLOC_DEBUG + /* get logical-cluster-id */ + ref = IORegistryEntrySearchCFProperty(cpus_child, DT_PLANE, CFSTR("logical-cluster-id"), kCFAllocatorDefault, kNilOptions); + if (!ref) { + hwloc_debug("failed to find logical-cluster-id\n"); + continue; + } + if (CFGetTypeID(ref) != CFNumberGetTypeID()) { + hwloc_debug("unexpected `logical-cluster-id' CF type is %s\n", + CFStringGetCStringPtr(CFCopyTypeIDDescription(CFGetTypeID(ref)), kCFStringEncodingUTF8)); + CFRelease(ref); + continue; + } + { + long long lld_value; + if (!CFNumberGetValue(ref, kCFNumberLongLongType, &lld_value)) { + hwloc_debug("failed to get logical-cluster-id\n"); + CFRelease(ref); + continue; + } + hwloc_debug("got logical-cluster-id %lld\n", lld_value); + } + CFRelease(ref); +#endif + + /* get cluster-type */ + ref = IORegistryEntrySearchCFProperty(cpus_child, DT_PLANE, CFSTR("cluster-type"), kCFAllocatorDefault, kNilOptions); + if (!ref) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: failed to find cluster-type\n"); + continue; + } + if (CFGetTypeID(ref) != CFDataGetTypeID()) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: unexpected `cluster-type' CF type %s\n", + CFStringGetCStringPtr(CFCopyTypeIDDescription(CFGetTypeID(ref)), kCFStringEncodingUTF8)); + CFRelease(ref); + continue; + } + if (CFDataGetLength(ref) < 2) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: only got %ld bytes from cluster-type data\n", + CFDataGetLength(ref)); + CFRelease(ref); + continue; + } + { + UInt8 u8_values[2]; + CFDataGetBytes(ref, CFRangeMake(0, 2), u8_values); + if (u8_values[1] == 0) { + hwloc_debug("got cluster-type %c\n", u8_values[0]); + cluster_type = u8_values[0]; + } else { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: got more than one character in cluster-type data %c%c...\n", + u8_values[0], u8_values[1]); + CFRelease(ref); + continue; + } + } + CFRelease(ref); + + /* get compatible */ + ref = IORegistryEntrySearchCFProperty(cpus_child, DT_PLANE, CFSTR("compatible"), kCFAllocatorDefault, kNilOptions); + if (!ref) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: failed to find compatible\n"); + continue; + } + if (CFGetTypeID(ref) != CFDataGetTypeID()) { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: unexpected `compatible' CF type %s\n", + CFStringGetCStringPtr(CFCopyTypeIDDescription(CFGetTypeID(ref)), kCFStringEncodingUTF8)); + CFRelease(ref); + continue; + } + { + unsigned i, length; + length = CFDataGetLength(ref); + if (length > HWLOC_DARWIN_COMPATIBLE_MAX) + length = HWLOC_DARWIN_COMPATIBLE_MAX; + CFDataGetBytes(ref, CFRangeMake(0, length), (UInt8*) compatible); + compatible[length] = 0; + compatible[length+1] = 0; + for(i=0; iE.cpuset, logical_cpu_id); + if (!kinds->E.compatible) + kinds->E.compatible = strdup(compatible); + else if (strcmp(kinds->E.compatible, compatible)) + fprintf(stderr, "got a different compatible string inside same cluster\n"); + + } else if (cluster_type == 'P') { + hwloc_bitmap_set(kinds->P.cpuset, logical_cpu_id); + if (!kinds->P.compatible) + kinds->P.compatible = strdup(compatible); + else if (strcmp(kinds->P.compatible, compatible)) + fprintf(stderr, "got a different compatible string inside same cluster\n"); + + } else { + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/darwin/cpukinds: unrecognized cluster type %c compatible %s\n", + cluster_type, compatible); + } + } + IOObjectRelease(cpus_iter); + IOObjectRelease(cpus_root); + + hwloc_debug("\n"); + return 0; +} + +static int hwloc_look_darwin_cpukinds(struct hwloc_topology *topology) +{ + struct hwloc_darwin_cpukinds kinds; + + kinds.P.cpuset = hwloc_bitmap_alloc(); + kinds.P.compatible = NULL; + kinds.E.cpuset = hwloc_bitmap_alloc(); + kinds.E.compatible = NULL; + + if (!kinds.P.cpuset || !kinds.E.cpuset) + goto out_with_kinds; + + hwloc__look_darwin_cpukinds(&kinds); + + /* register the cpukind for "P=performance" cores */ + if (!hwloc_bitmap_iszero(kinds.P.cpuset)) { + struct hwloc_info_s infoattr; + unsigned nr_info = 0; + hwloc_debug_1arg_bitmap("building `P' cpukind with compatible `%s' and cpuset %s\n", + kinds.P.compatible, kinds.P.cpuset); + if (kinds.P.compatible) { + infoattr.name = (char *) "DarwinCompatible"; + infoattr.value = kinds.P.compatible; + nr_info = 1; + } + hwloc_internal_cpukinds_register(topology, kinds.P.cpuset, 1 /* P=performance */, &infoattr, nr_info, 0); + /* the cpuset is given to the callee */ + topology->support.discovery->cpukind_efficiency = 1; + } else { + hwloc_bitmap_free(kinds.P.cpuset); + } + free(kinds.P.compatible); + + /* register the cpukind for "E=efficiency" cores */ + if (!hwloc_bitmap_iszero(kinds.E.cpuset)) { + struct hwloc_info_s infoattr; + unsigned nr_info = 0; + hwloc_debug_1arg_bitmap("building `E' cpukind with compatible `%s' and cpuset %s\n", + kinds.E.compatible, kinds.E.cpuset); + if (kinds.E.compatible) { + infoattr.name = (char *) "DarwinCompatible"; + infoattr.value = kinds.E.compatible; + nr_info = 1; + } + hwloc_internal_cpukinds_register(topology, kinds.E.cpuset, 0 /* E=efficiency */, &infoattr, nr_info, 0); + /* the cpuset is given to the callee */ + topology->support.discovery->cpukind_efficiency = 1; + } else { + hwloc_bitmap_free(kinds.E.cpuset); + } + free(kinds.E.compatible); + + hwloc_debug("\n"); + return 0; + + out_with_kinds: + hwloc_bitmap_free(kinds.P.cpuset); + free(kinds.P.compatible); + hwloc_bitmap_free(kinds.E.cpuset); + free(kinds.E.compatible); + return -1; +} + +#else /* HWLOC_HAVE_DARWIN_FOUNDATION && HWLOC_HAVE_DARWIN_IOKIT */ +static int hwloc_look_darwin_cpukinds(struct hwloc_topology *topology __hwloc_attribute_unused) +{ + return 0; +} +#endif /* !HWLOC_HAVE_DARWIN_FOUNDATION || !HWLOC_HAVE_DARWIN_IOKIT */ + +static int +hwloc_look_darwin(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend uses the underlying OS. + * However we don't enforce topology->is_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + + struct hwloc_topology *topology = backend->topology; + int64_t _nprocs; + unsigned nprocs; + int64_t _npackages; + unsigned i, j, cpu; + struct hwloc_obj *obj; + size_t size; + int64_t l1dcachesize, l1icachesize; + int64_t cacheways[2]; + int64_t l2cachesize; + int64_t l3cachesize; + int64_t cachelinesize; + int64_t memsize; + int64_t _tmp; + char cpumodel[64]; + char cpuvendor[64]; + char cpufamilynumber[20], cpumodelnumber[20], cpustepping[20]; + int gotnuma = 0; + int gotnumamemory = 0; + + assert(dstatus->phase == HWLOC_DISC_PHASE_CPU); + + if (topology->levels[0][0]->cpuset) + /* somebody discovered things */ + return -1; + + hwloc_alloc_root_sets(topology->levels[0][0]); + + /* Don't use hwloc_fallback_nbprocessors() because it would return online cpus only, + * while we need all cpus when computing logical_per_package, etc below. + * We don't know which CPUs are offline, but Darwin doesn't support binding anyway. + * + * TODO: try hw.logicalcpu_max + */ + + if (hwloc_get_sysctlbyname("hw.logicalcpu", &_nprocs) || _nprocs <= 0) + /* fallback to deprecated way */ + if (hwloc_get_sysctlbyname("hw.ncpu", &_nprocs) || _nprocs <= 0) + return -1; + + nprocs = _nprocs; + topology->support.discovery->pu = 1; + + hwloc_debug("%u procs\n", nprocs); + + size = sizeof(cpuvendor); + if (sysctlbyname("machdep.cpu.vendor", cpuvendor, &size, NULL, 0)) + cpuvendor[0] = '\0'; + + size = sizeof(cpumodel); + if (sysctlbyname("machdep.cpu.brand_string", cpumodel, &size, NULL, 0)) + cpumodel[0] = '\0'; + + if (hwloc_get_sysctlbyname("machdep.cpu.family", &_tmp)) + cpufamilynumber[0] = '\0'; + else + snprintf(cpufamilynumber, sizeof(cpufamilynumber), "%lld", (long long) _tmp); + if (hwloc_get_sysctlbyname("machdep.cpu.model", &_tmp)) + cpumodelnumber[0] = '\0'; + else + snprintf(cpumodelnumber, sizeof(cpumodelnumber), "%lld", (long long) _tmp); + /* .extfamily and .extmodel are already added to .family and .model */ + if (hwloc_get_sysctlbyname("machdep.cpu.stepping", &_tmp)) + cpustepping[0] = '\0'; + else + snprintf(cpustepping, sizeof(cpustepping), "%lld", (long long) _tmp); + + if (!hwloc_get_sysctlbyname("hw.packages", &_npackages) && _npackages > 0) { + unsigned npackages = _npackages; + int64_t _cores_per_package; + unsigned cores_per_package; + int64_t _logical_per_package; + unsigned logical_per_package; + + hwloc_debug("%u packages\n", npackages); + + if (!hwloc_get_sysctlbyname("machdep.cpu.thread_count", &_logical_per_package) && _logical_per_package > 0) + /* official/modern way */ + logical_per_package = _logical_per_package; + else if (!hwloc_get_sysctlbyname("machdep.cpu.logical_per_package", &_logical_per_package) && _logical_per_package > 0) + /* old way, gives the max supported by this "kind" of processor, + * can be larger than the actual number for this model. + */ + logical_per_package = _logical_per_package; + else + /* Assume the trivia. */ + logical_per_package = nprocs / npackages; + + hwloc_debug("%u threads per package\n", logical_per_package); + + if (nprocs == npackages * logical_per_package + && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_PACKAGE)) + for (i = 0; i < npackages; i++) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PACKAGE, i); + obj->cpuset = hwloc_bitmap_alloc(); + for (cpu = i*logical_per_package; cpu < (i+1)*logical_per_package; cpu++) + hwloc_bitmap_set(obj->cpuset, cpu); + + hwloc_debug_1arg_bitmap("package %u has cpuset %s\n", + i, obj->cpuset); + + if (cpuvendor[0] != '\0') + hwloc_obj_add_info(obj, "CPUVendor", cpuvendor); + if (cpumodel[0] != '\0') + hwloc_obj_add_info(obj, "CPUModel", cpumodel); + if (cpufamilynumber[0] != '\0') + hwloc_obj_add_info(obj, "CPUFamilyNumber", cpufamilynumber); + if (cpumodelnumber[0] != '\0') + hwloc_obj_add_info(obj, "CPUModelNumber", cpumodelnumber); + if (cpustepping[0] != '\0') + hwloc_obj_add_info(obj, "CPUStepping", cpustepping); + + hwloc__insert_object_by_cpuset(topology, NULL, obj, "darwin:package"); + } + else { + if (cpuvendor[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUVendor", cpuvendor); + if (cpumodel[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUModel", cpumodel); + if (cpufamilynumber[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUFamilyNumber", cpufamilynumber); + if (cpumodelnumber[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUModelNumber", cpumodelnumber); + if (cpustepping[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUStepping", cpustepping); + } + + if (!hwloc_get_sysctlbyname("machdep.cpu.core_count", &_cores_per_package) && _cores_per_package > 0) + /* official/modern way */ + cores_per_package = _cores_per_package; + else if (!hwloc_get_sysctlbyname("machdep.cpu.cores_per_package", &_cores_per_package) && _cores_per_package > 0) + /* old way, gives the max supported by this "kind" of processor, + * can be larger than the actual number for this model. + */ + cores_per_package = _cores_per_package; + else + /* no idea */ + cores_per_package = 0; + + if (cores_per_package > 0 + && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_CORE)) { + hwloc_debug("%u cores per package\n", cores_per_package); + + if (!(logical_per_package % cores_per_package)) + for (i = 0; i < npackages * cores_per_package; i++) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_CORE, i); + obj->cpuset = hwloc_bitmap_alloc(); + for (cpu = i*(logical_per_package/cores_per_package); + cpu < (i+1)*(logical_per_package/cores_per_package); + cpu++) + hwloc_bitmap_set(obj->cpuset, cpu); + + hwloc_debug_1arg_bitmap("core %u has cpuset %s\n", + i, obj->cpuset); + hwloc__insert_object_by_cpuset(topology, NULL, obj, "darwin:core"); + } + } + } else { + if (cpuvendor[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUVendor", cpuvendor); + if (cpumodel[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUModel", cpumodel); + if (cpufamilynumber[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUFamilyNumber", cpufamilynumber); + if (cpumodelnumber[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUModelNumber", cpumodelnumber); + if (cpustepping[0] != '\0') + hwloc_obj_add_info(topology->levels[0][0], "CPUStepping", cpustepping); + } + + if (hwloc_get_sysctlbyname("hw.l1dcachesize", &l1dcachesize)) + l1dcachesize = 0; + + if (hwloc_get_sysctlbyname("hw.l1icachesize", &l1icachesize)) + l1icachesize = 0; + + if (hwloc_get_sysctlbyname("hw.l2cachesize", &l2cachesize)) + l2cachesize = 0; + + if (hwloc_get_sysctlbyname("hw.l3cachesize", &l3cachesize)) + l3cachesize = 0; + + if (hwloc_get_sysctlbyname("machdep.cpu.cache.L1_associativity", &cacheways[0])) + cacheways[0] = 0; + else if (cacheways[0] == 0xff) + cacheways[0] = -1; + + if (hwloc_get_sysctlbyname("machdep.cpu.cache.L2_associativity", &cacheways[1])) + cacheways[1] = 0; + else if (cacheways[1] == 0xff) + cacheways[1] = -1; + + if (hwloc_get_sysctlbyname("hw.cachelinesize", &cachelinesize)) + cachelinesize = 0; + + if (hwloc_get_sysctlbyname("hw.memsize", &memsize)) + memsize = 0; + + if (!sysctlbyname("hw.cacheconfig", NULL, &size, NULL, 0)) { + unsigned n = size / sizeof(uint32_t); + uint64_t *cacheconfig; + uint64_t *cachesize; + uint32_t *cacheconfig32; + + cacheconfig = malloc(n * sizeof(*cacheconfig)); + cachesize = malloc(n * sizeof(*cachesize)); + cacheconfig32 = malloc(n * sizeof(*cacheconfig32)); + + if (cacheconfig && cachesize && cacheconfig32 + && (!sysctlbyname("hw.cacheconfig", cacheconfig, &size, NULL, 0))) { + /* Yeech. Darwin seemingly has changed from 32bit to 64bit integers for + * cacheconfig, with apparently no way for detection. Assume the machine + * won't have more than 4 billion cpus */ + if (cacheconfig[0] > 0xFFFFFFFFUL) { + memcpy(cacheconfig32, cacheconfig, size); + for (i = 0 ; i < size / sizeof(uint32_t); i++) + cacheconfig[i] = cacheconfig32[i]; + } + + memset(cachesize, 0, sizeof(uint64_t) * n); + size = sizeof(uint64_t) * n; + if (sysctlbyname("hw.cachesize", cachesize, &size, NULL, 0)) { + if (n > 0) + cachesize[0] = memsize; + if (n > 1) + cachesize[1] = l1dcachesize; + if (n > 2) + cachesize[2] = l2cachesize; + if (n > 3) + cachesize[3] = l3cachesize; + } + + hwloc_debug("%s", "caches"); + for (i = 0; i < n && cacheconfig[i]; i++) + hwloc_debug(" %"PRIu64"(%"PRIu64"kB)", cacheconfig[i], cachesize[i] / 1024); + + /* Now we know how many caches there are */ + n = i; + hwloc_debug("\n%u cache levels\n", n - 1); + + /* For each cache level (0 is memory) */ + for (i = 0; i < n; i++) { + /* cacheconfig tells us how many cpus share it, let's iterate on each cache */ + for (j = 0; j < (nprocs / cacheconfig[i]); j++) { + if (!i) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_NUMANODE, j); + obj->nodeset = hwloc_bitmap_alloc(); + hwloc_bitmap_set(obj->nodeset, j); + gotnuma++; + } else { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1CACHE+i-1, HWLOC_UNKNOWN_INDEX); + } + obj->cpuset = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(obj->cpuset, j*cacheconfig[i], (j+1)*cacheconfig[i]-1); + + if (i == 1 && l1icachesize + && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1ICACHE)) { + /* FIXME assuming that L1i and L1d are shared the same way. Darwin + * does not yet provide a way to know. */ + hwloc_obj_t l1i = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1ICACHE, HWLOC_UNKNOWN_INDEX); + l1i->cpuset = hwloc_bitmap_dup(obj->cpuset); + hwloc_debug_1arg_bitmap("L1icache %u has cpuset %s\n", + j, l1i->cpuset); + l1i->attr->cache.depth = i; + l1i->attr->cache.size = l1icachesize; + l1i->attr->cache.linesize = cachelinesize; + l1i->attr->cache.associativity = 0; + l1i->attr->cache.type = HWLOC_OBJ_CACHE_INSTRUCTION; + + hwloc__insert_object_by_cpuset(topology, NULL, l1i, "darwin:l1icache"); + } + if (i) { + hwloc_debug_2args_bitmap("L%ucache %u has cpuset %s\n", + i, j, obj->cpuset); + obj->attr->cache.depth = i; + obj->attr->cache.size = cachesize[i]; + obj->attr->cache.linesize = cachelinesize; + if (i <= sizeof(cacheways) / sizeof(cacheways[0])) + obj->attr->cache.associativity = cacheways[i-1]; + else + obj->attr->cache.associativity = 0; + if (i == 1 && l1icachesize) + obj->attr->cache.type = HWLOC_OBJ_CACHE_DATA; + else + obj->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + } else { + hwloc_debug_1arg_bitmap("node %u has cpuset %s\n", + j, obj->cpuset); + if (cachesize[i]) { + obj->attr->numanode.local_memory = cachesize[i]; + gotnumamemory++; + } + obj->attr->numanode.page_types_len = 2; + obj->attr->numanode.page_types = malloc(2*sizeof(*obj->attr->numanode.page_types)); + memset(obj->attr->numanode.page_types, 0, 2*sizeof(*obj->attr->numanode.page_types)); + obj->attr->numanode.page_types[0].size = hwloc_getpagesize(); +#if HAVE_DECL__SC_LARGE_PAGESIZE + obj->attr->numanode.page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); +#endif + } + if (hwloc_filter_check_keep_object_type(topology, obj->type)) + hwloc__insert_object_by_cpuset(topology, NULL, obj, + obj->type == HWLOC_OBJ_NUMANODE ? "darwin:numanode" : "darwin:cache"); + else + hwloc_free_unlinked_object(obj); /* FIXME: don't built at all, just build the cpuset in case l1i needs it */ + } + } + } + free(cacheconfig); + free(cachesize); + free(cacheconfig32); + } + + if (gotnuma) + topology->support.discovery->numa = 1; + if (gotnumamemory) + topology->support.discovery->numa = 1; + + /* add PU objects */ + hwloc_setup_pu_level(topology, nprocs); + + hwloc_look_darwin_cpukinds(topology); + + hwloc_obj_add_info(topology->levels[0][0], "Backend", "Darwin"); + hwloc_add_uname_info(topology, NULL); + return 0; +} + +void +hwloc_set_darwin_hooks(struct hwloc_binding_hooks *hooks __hwloc_attribute_unused, + struct hwloc_topology_support *support __hwloc_attribute_unused) +{ +} + +static struct hwloc_backend * +hwloc_darwin_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + backend->discover = hwloc_look_darwin; + return backend; +} + +static struct hwloc_disc_component hwloc_darwin_disc_component = { + "darwin", + HWLOC_DISC_PHASE_CPU, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_darwin_component_instantiate, + 50, + 1, + NULL +}; + +const struct hwloc_component hwloc_darwin_component = { + HWLOC_COMPONENT_ABI, + NULL, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_darwin_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-fake.c b/3rd-party/hwloc-2.7.1/hwloc/topology-fake.c new file mode 100644 index 0000000000..ba50cbfcfe --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-fake.c @@ -0,0 +1,100 @@ +/* + * Copyright © 2012-2019 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" + +#include + +static int +hwloc_look_fake(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + hwloc_topology_t topology = backend->topology; + + assert(dstatus->phase == HWLOC_DISC_PHASE_TWEAK); + + if (getenv("HWLOC_DEBUG_FAKE_COMPONENT_TWEAK")) { + hwloc_obj_t obj; + int err; + /* restrict to single (last) PU */ + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PU)-1); + assert(obj); + err = hwloc_topology_restrict(topology, obj->cpuset, 0); + assert(!err); + /* restrict to single (first) NUMA node */ + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0); + assert(obj); + err = hwloc_topology_restrict(topology, obj->nodeset, HWLOC_RESTRICT_FLAG_BYNODESET); + assert(!err); + } + + return 0; +} + +static struct hwloc_backend * +hwloc_fake_component_instantiate(struct hwloc_topology *topology __hwloc_attribute_unused, + struct hwloc_disc_component *component __hwloc_attribute_unused, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + + backend = hwloc_backend_alloc(topology, component); + if (!backend) + goto out; + backend->discover = hwloc_look_fake; + + if (getenv("HWLOC_DEBUG_FAKE_COMPONENT")) + printf("fake component instantiated\n"); + + return backend; + + out: + return NULL; +} + +static struct hwloc_disc_component hwloc_fake_disc_component = { + "fake", + HWLOC_DISC_PHASE_TWEAK, + 0, /* nothing to exclude */ + hwloc_fake_component_instantiate, + 100, /* make sure it's loaded before anything conflicting excludes it */ + 1, + NULL +}; + +static int +hwloc_fake_component_init(unsigned long flags) +{ + if (flags) + return -1; + if (hwloc_plugin_check_namespace("fake", "hwloc_backend_alloc") < 0) + return -1; + if (getenv("HWLOC_DEBUG_FAKE_COMPONENT")) + printf("fake component initialized\n"); + return 0; +} + +static void +hwloc_fake_component_finalize(unsigned long flags) +{ + if (flags) + return; + if (getenv("HWLOC_DEBUG_FAKE_COMPONENT")) + printf("fake component finalized\n"); +} + +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_fake_component; /* never linked statically in the core */ + +const struct hwloc_component hwloc_fake_component = { + HWLOC_COMPONENT_ABI, + hwloc_fake_component_init, hwloc_fake_component_finalize, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_fake_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-freebsd.c b/3rd-party/hwloc-2.7.1/hwloc/topology-freebsd.c new file mode 100644 index 0000000000..44e004125d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-freebsd.c @@ -0,0 +1,621 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009-2010, 2012, 2020 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_SYS_THR_H +#include +#endif +#ifdef HAVE_PTHREAD_NP_H +#include +#endif +#ifdef HAVE_SYS_CPUSET_H +#include +#endif +#ifdef HAVE_SYS_DOMAINSET_H +#include +#endif +#ifdef HAVE_SYS_SYSCTL_H +#include +#endif + +#include "hwloc.h" +#include "private/private.h" +#include "private/debug.h" + +#if defined(HAVE_SYS_CPUSET_H) && defined(HAVE_CPUSET_SETAFFINITY) +static void +hwloc_freebsd_bsd2hwloc(hwloc_bitmap_t hwloc_cpuset, const cpuset_t *cset) +{ + unsigned cpu; + hwloc_bitmap_zero(hwloc_cpuset); + for (cpu = 0; cpu < CPU_SETSIZE; cpu++) + if (CPU_ISSET(cpu, cset)) + hwloc_bitmap_set(hwloc_cpuset, cpu); +} + +static void +hwloc_freebsd_hwloc2bsd(hwloc_const_bitmap_t hwloc_cpuset, cpuset_t *cset) +{ + unsigned cpu; + CPU_ZERO(cset); + for (cpu = 0; cpu < CPU_SETSIZE; cpu++) + if (hwloc_bitmap_isset(hwloc_cpuset, cpu)) + CPU_SET(cpu, cset); +} + +static int +hwloc_freebsd_set_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) +{ + cpuset_t cset; + + hwloc_freebsd_hwloc2bsd(hwloc_cpuset, &cset); + + if (cpuset_setaffinity(level, which, id, sizeof(cset), &cset)) + return -1; + return 0; +} + +static int +hwloc_freebsd_get_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) +{ + cpuset_t cset; + + if (cpuset_getaffinity(level, which, id, sizeof(cset), &cset)) + return -1; + + hwloc_freebsd_bsd2hwloc(hwloc_cpuset, &cset); + return 0; +} + +static int +hwloc_freebsd_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_cpuset, flags); +} + +static int +hwloc_freebsd_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_cpuset, flags); +} + +static int +hwloc_freebsd_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_cpuset, flags); +} + +static int +hwloc_freebsd_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_cpuset, flags); +} + +static int +hwloc_freebsd_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_cpuset, flags); +} + +static int +hwloc_freebsd_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_cpuset, flags); +} + +#ifdef HAVE_SYS_DOMAINSET_H + +static void +hwloc_freebsd_bsd2hwloc_membind(hwloc_nodeset_t hwloc_nodeset, const domainset_t *mask) +{ + unsigned node; + hwloc_bitmap_zero(hwloc_nodeset); + for (node = 0; node < DOMAINSET_SETSIZE; node++) + if (CPU_ISSET(node, mask)) + hwloc_bitmap_set(hwloc_nodeset, node); +} + +static void +hwloc_freebsd_hwloc2bsd_membind(hwloc_const_nodeset_t hwloc_nodeset, domainset_t *mask) +{ + unsigned node; + DOMAINSET_ZERO(mask); + for (node = 0; node < DOMAINSET_SETSIZE; node++) + if (hwloc_bitmap_isset(hwloc_nodeset, node)) + CPU_SET(node, mask); +} + +static int +hwloc_freebsd_set_sth_domain(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_const_nodeset_t hwloc_nodeset, hwloc_membind_policy_t policy) +{ + domainset_t mask; + int freebsdpolicy; + + hwloc_freebsd_hwloc2bsd_membind(hwloc_nodeset, &mask); + + switch (policy) { + case HWLOC_MEMBIND_DEFAULT: + case HWLOC_MEMBIND_FIRSTTOUCH: + freebsdpolicy = DOMAINSET_POLICY_FIRSTTOUCH; + break; + case HWLOC_MEMBIND_BIND: + freebsdpolicy = DOMAINSET_POLICY_PREFER; + break; + case HWLOC_MEMBIND_INTERLEAVE: + freebsdpolicy = DOMAINSET_POLICY_INTERLEAVE; + break; + default: + errno = ENOSYS; + return -1; + } + + if (cpuset_setdomain(level, which, id, sizeof(mask), &mask, freebsdpolicy)) + return -1; + + return 0; +} + +static int +hwloc_freebsd_get_sth_domain(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_nodeset_t hwloc_nodeset, hwloc_membind_policy_t *policy) +{ + domainset_t mask; + int freebsdpolicy; + + if (cpuset_getdomain(level, which, id, sizeof(mask), &mask, &freebsdpolicy)) + return -1; + + hwloc_freebsd_bsd2hwloc_membind(hwloc_nodeset, &mask); + switch (freebsdpolicy) { + case DOMAINSET_POLICY_FIRSTTOUCH: + *policy = HWLOC_MEMBIND_FIRSTTOUCH; + break; + case DOMAINSET_POLICY_PREFER: + *policy = HWLOC_MEMBIND_BIND; + break; + case DOMAINSET_POLICY_ROUNDROBIN: /*same as INTERLEAVE with page-granularity*/ + case DOMAINSET_POLICY_INTERLEAVE: + *policy = HWLOC_MEMBIND_INTERLEAVE; + break; + default: + errno = ENOSYS; + return -1; + } + return 0; +} + +static int +hwloc_freebsd_set_thisproc_membind(hwloc_topology_t topology, hwloc_const_nodeset_t hwloc_nodeset, hwloc_membind_policy_t policy, int flags __hwloc_attribute_unused) +{ + return hwloc_freebsd_set_sth_domain(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_nodeset, policy); +} + +static int +hwloc_freebsd_get_thisproc_membind(hwloc_topology_t topology, hwloc_nodeset_t hwloc_nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused) +{ + return hwloc_freebsd_get_sth_domain(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_nodeset, policy); +} + +static int +hwloc_freebsd_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_nodeset_t hwloc_nodeset, hwloc_membind_policy_t policy, int flags __hwloc_attribute_unused) +{ + return hwloc_freebsd_set_sth_domain(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_nodeset, policy); +} + +static int +hwloc_freebsd_get_thisthread_membind(hwloc_topology_t topology, hwloc_nodeset_t hwloc_nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused) +{ + return hwloc_freebsd_get_sth_domain(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_nodeset, policy); +} + +static int +hwloc_freebsd_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t hwloc_nodeset, hwloc_membind_policy_t policy, int flags __hwloc_attribute_unused) +{ + return hwloc_freebsd_set_sth_domain(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_nodeset, policy); +} + +static int +hwloc_freebsd_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t hwloc_nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused) +{ + return hwloc_freebsd_get_sth_domain(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_nodeset, policy); +} +#endif + +#ifdef hwloc_thread_t + +#if HAVE_DECL_PTHREAD_SETAFFINITY_NP +#pragma weak pthread_setaffinity_np +static int +hwloc_freebsd_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) +{ + int err; + cpuset_t cset; + + if (!pthread_setaffinity_np) { + errno = ENOSYS; + return -1; + } + + hwloc_freebsd_hwloc2bsd(hwloc_cpuset, &cset); + + err = pthread_setaffinity_np(tid, sizeof(cset), &cset); + + if (err) { + errno = err; + return -1; + } + + return 0; +} +#endif + +#if HAVE_DECL_PTHREAD_GETAFFINITY_NP +#pragma weak pthread_getaffinity_np +static int +hwloc_freebsd_get_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) +{ + int err; + cpuset_t cset; + + if (!pthread_getaffinity_np) { + errno = ENOSYS; + return -1; + } + + err = pthread_getaffinity_np(tid, sizeof(cset), &cset); + + if (err) { + errno = err; + return -1; + } + + hwloc_freebsd_bsd2hwloc(hwloc_cpuset, &cset); + return 0; +} +#endif +#endif +#endif + +static int +hwloc_freebsd_get_last_cpu_location(int *name, hwloc_cpuset_t set, long thr_id){ + size_t len, old_len, i, cnt; + int err; + struct kinfo_proc *p, *newp; + len = 0; + err = sysctl(name, 4, NULL, &len, NULL, 0); + if (err < 0 || len == 0) + return -1; + p = NULL; + do { + len *= 2; + newp = realloc(p, len); + if (newp == NULL) { + free(p); + return -1; + } + p = newp; + old_len = len; + err = sysctl(name, 4, p, &len, NULL, 0); + } while (err < 0 && errno == ENOMEM && old_len == len); + if (err < 0) { + free(p); + return -1; + } + cnt = len / sizeof(*p); + hwloc_bitmap_zero(set); + for (i = 0; i < cnt; i++) { + if(thr_id != 0 && thr_id != p[i].ki_tid) + continue; + if(p[i].ki_oncpu == -1) + hwloc_bitmap_set(set, p[i].ki_lastcpu); + else + hwloc_bitmap_set(set, p[i].ki_oncpu); + } + return 0; +} + +static int +hwloc_freebsd_get_thisproc_last_cpu_location(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t set, int flags __hwloc_attribute_unused) { + int name[4]; + name[0] = CTL_KERN; + name[1] = KERN_PROC; + name[2] = KERN_PROC_PID | KERN_PROC_INC_THREAD; + name[3] = getpid(); + return hwloc_freebsd_get_last_cpu_location(name, set, 0); +} + +static int +hwloc_freebsd_get_proc_last_cpu_location(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid, hwloc_cpuset_t set, int flags __hwloc_attribute_unused) { + int name[4]; + name[0] = CTL_KERN; + name[1] = KERN_PROC; + name[2] = KERN_PROC_PID | KERN_PROC_INC_THREAD; + name[3] = pid; + return hwloc_freebsd_get_last_cpu_location(name, set, 0); +} + +#ifdef HAVE_SYS_THR_H +static int +hwloc_freebsd_get_thisthread_last_cpu_location(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t set, int flags __hwloc_attribute_unused) { + long thr_id; + int name[4]; + int err; + err = thr_self(&thr_id); + if (err < 0 && errno == EFAULT) + return -1; + name[0] = CTL_KERN; + name[1] = KERN_PROC; + name[2] = KERN_PROC_PID | KERN_PROC_INC_THREAD; + name[3] = getpid(); + return hwloc_freebsd_get_last_cpu_location(name, set, thr_id); +} +#endif + +static int +set_locality_info(hwloc_topology_t topology, int ndomains, hwloc_obj_t *nodes){ + char *locality, *ptr; + size_t len_locality; + int missing = 0; + char nb[12]; + uint64_t *distances = malloc(sizeof(uint64_t) * ndomains * ndomains); + if(distances == NULL){ + free(nodes); + return -1; + } + + if(sysctlbyname("vm.phys_locality", NULL, &len_locality, NULL, 0) == -1){ + free(distances); + free(nodes); + return -1; + } + locality = malloc(len_locality); + if (!locality) { + free(distances); + free(nodes); + return -1; + } + if (sysctlbyname("vm.phys_locality", locality, &len_locality, NULL, 0) == -1) { + free(distances); + free(nodes); + free(locality); + return -1; + } + for(int i = 0 ; i < ndomains ; i++){ + sprintf(nb, "%d:", i); + ptr = strstr(locality, nb); + ptr = ptr + 2; + for(int j = 0 ; j < ndomains ; j++){ + int tmp = atoi(ptr); + if(tmp == -1) + missing = 1; + else + distances[ndomains*i + j] = tmp; + ptr++; + ptr = strchr(ptr, ' '); + } + } + + if(missing == 1){ + free(nodes); + free(distances); + } else + hwloc_internal_distances_add(topology, "NUMALatency", ndomains, nodes, distances, HWLOC_DISTANCES_KIND_FROM_OS|HWLOC_DISTANCES_KIND_MEANS_LATENCY, HWLOC_DISTANCES_ADD_FLAG_GROUP); + return 0; +} + +static hwloc_uint64_t* +get_memory_domain_info(int ndomains){ + char *segs; + char *ptr; + size_t len_segs; + long start = 0; + long end = 0; + long domain = 0; + hwloc_uint64_t *domains_memory = malloc(ndomains * sizeof(hwloc_uint64_t)); + if(domains_memory == NULL) + return NULL; + memset(domains_memory, 0, ndomains * sizeof(hwloc_uint64_t)); + + if(sysctlbyname("vm.phys_segs", NULL, &len_segs, NULL, 0) == -1){ + free(domains_memory); + return NULL; + } + segs = malloc(len_segs); + if(!segs){ + free(domains_memory); + return NULL; + } + if (sysctlbyname("vm.phys_segs", segs, &len_segs, NULL, 0) == -1) { + free(segs); + free(domains_memory); + return NULL; + } + + ptr = strstr(segs, "start"); + while(ptr){ + start = strtoul(ptr+11, NULL, 16); + ptr = strstr(ptr, "end"); + end = strtoul(ptr+11, NULL, 16); + ptr = strstr(ptr, "domain"); + domain = strtoul(ptr+11, NULL, 10); + ptr = strstr(ptr, "start"); + domains_memory[domain] += ( end - start ); + } + + free(segs); + + return domains_memory; +} + +#ifdef CPU_WHICH_DOMAIN +static int +hwloc_look_freebsd_domains(struct hwloc_topology *topology){ + unsigned ndomains, i; + size_t len_ndomains; + int err = 0; + hwloc_obj_t *nodes; + + len_ndomains = sizeof(ndomains); + if(sysctlbyname("vm.ndomains", &ndomains, &len_ndomains, NULL, 0) == -1) + return -1; + + hwloc_uint64_t *domains_memory = get_memory_domain_info(ndomains); + nodes = malloc(sizeof(hwloc_obj_t) * ndomains); + if(nodes == NULL || domains_memory == NULL){ + free(domains_memory); + free(nodes); + return -1; + } + + for ( i = 0 ; i < ndomains ; i++ ){ + hwloc_obj_t obj; + cpuset_t cset; + CPU_ZERO(&cset); + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_NUMANODE, ( unsigned ) i); + if(obj != NULL) { + obj->nodeset = hwloc_bitmap_alloc(); + hwloc_bitmap_set(obj->nodeset, i); + + obj->cpuset = hwloc_bitmap_alloc(); + err = cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_DOMAIN, i, sizeof(cset), &cset); + hwloc_freebsd_bsd2hwloc(obj->cpuset, &cset); + + obj->attr->numanode.local_memory = domains_memory[i]; + + if (nodes) + nodes[i] = obj; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "freebsd:numanode"); + } else { + free(nodes); + nodes = NULL; + } + } + if(nodes != NULL) + set_locality_info(topology, ndomains, nodes); + + /* nodes is either freed or given to the core in set_locality_info() */ + free(domains_memory); + + topology->support.discovery->numa = 1; + topology->support.discovery->numa_memory = 1; + + return err; +} +#endif + +static int +hwloc_look_freebsd(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend uses the underlying OS. + * However we don't enforce topology->is_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + struct hwloc_topology *topology = backend->topology; + + if (dstatus->phase == HWLOC_DISC_PHASE_CPU) { + if (!topology->levels[0][0]->cpuset) { + /* Nobody (even the x86 backend) created objects yet, setup basic objects */ + int nbprocs = hwloc_fallback_nbprocessors(0); + if (nbprocs >= 1) + topology->support.discovery->pu = 1; + else + nbprocs = 1; + hwloc_alloc_root_sets(topology->levels[0][0]); + hwloc_setup_pu_level(topology, nbprocs); + } + } else if (dstatus->phase == HWLOC_DISC_PHASE_MEMORY) { + int64_t memsize; +#ifdef CPU_WHICH_DOMAIN + hwloc_look_freebsd_domains(topology); +#endif + memsize = hwloc_fallback_memsize(); + if (memsize > 0) + topology->machine_memory.local_memory = memsize; + hwloc_obj_add_info(topology->levels[0][0], "Backend", "FreeBSD"); + hwloc_add_uname_info(topology, NULL); + } + return 0; +} + +void +hwloc_set_freebsd_hooks(struct hwloc_binding_hooks *hooks __hwloc_attribute_unused, + struct hwloc_topology_support *support __hwloc_attribute_unused) +{ +#if defined(HAVE_SYS_CPUSET_H) && defined(HAVE_CPUSET_SETAFFINITY) + hooks->set_thisproc_cpubind = hwloc_freebsd_set_thisproc_cpubind; + hooks->get_thisproc_cpubind = hwloc_freebsd_get_thisproc_cpubind; + hooks->set_thisthread_cpubind = hwloc_freebsd_set_thisthread_cpubind; + hooks->get_thisthread_cpubind = hwloc_freebsd_get_thisthread_cpubind; + hooks->set_proc_cpubind = hwloc_freebsd_set_proc_cpubind; + hooks->get_proc_cpubind = hwloc_freebsd_get_proc_cpubind; +#ifdef hwloc_thread_t +#ifdef HAVE_SYS_DOMAINSET_H + hooks->set_thisproc_membind = hwloc_freebsd_set_thisproc_membind; + hooks->get_thisproc_membind = hwloc_freebsd_get_thisproc_membind; + hooks->set_thisthread_membind = hwloc_freebsd_set_thisthread_membind; + hooks->get_thisthread_membind = hwloc_freebsd_get_thisthread_membind; + hooks->set_proc_membind = hwloc_freebsd_set_proc_membind; + hooks->get_proc_membind = hwloc_freebsd_get_proc_membind; +#endif +#if HAVE_DECL_PTHREAD_SETAFFINITY_NP + hooks->set_thread_cpubind = hwloc_freebsd_set_thread_cpubind; +#endif +#if HAVE_DECL_PTHREAD_GETAFFINITY_NP + hooks->get_thread_cpubind = hwloc_freebsd_get_thread_cpubind; +#endif +#endif +#endif + hooks->get_thisproc_last_cpu_location = hwloc_freebsd_get_thisproc_last_cpu_location; + hooks->get_proc_last_cpu_location = hwloc_freebsd_get_proc_last_cpu_location; +#ifdef HAVE_SYS_THR_H + hooks->get_thisthread_last_cpu_location = hwloc_freebsd_get_thisthread_last_cpu_location; +#endif +} + +static struct hwloc_backend * +hwloc_freebsd_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + backend->discover = hwloc_look_freebsd; + return backend; +} + +static struct hwloc_disc_component hwloc_freebsd_disc_component = { + "freebsd", + HWLOC_DISC_PHASE_CPU|HWLOC_DISC_PHASE_MEMORY, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_freebsd_component_instantiate, + 50, + 1, + NULL +}; + +const struct hwloc_component hwloc_freebsd_component = { + HWLOC_COMPONENT_ABI, + NULL, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_freebsd_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-gl.c b/3rd-party/hwloc-2.7.1/hwloc/topology-gl.c new file mode 100644 index 0000000000..4879388bb4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-gl.c @@ -0,0 +1,194 @@ +/* + * Copyright © 2012-2013 Blue Brain Project, BBP/EPFL. All rights reserved. + * Copyright © 2012-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/plugins.h" + +/* private headers allowed for convenience because this plugin is built within hwloc */ +#include "private/misc.h" +#include "private/debug.h" + +#include +#include +#include +#include +#include + +#define HWLOC_GL_SERVER_MAX 10 +#define HWLOC_GL_SCREEN_MAX 10 + +static int +hwloc_gl_discover(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend uses the underlying OS. + * However we don't enforce topology->is_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + + struct hwloc_topology *topology = backend->topology; + enum hwloc_type_filter_e filter; + unsigned i; + int err; + + assert(dstatus->phase == HWLOC_DISC_PHASE_IO); + + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_OS_DEVICE, &filter); + if (filter == HWLOC_TYPE_FILTER_KEEP_NONE) + return 0; + + for (i = 0; i < HWLOC_GL_SERVER_MAX; ++i) { + Display* display; + char displayName[12]; + int opcode, event, error; + unsigned j; + + /* open X server */ + snprintf(displayName, sizeof(displayName), ":%u", i); + display = XOpenDisplay(displayName); + if (!display) + continue; + + /* Check for NV-CONTROL extension (it's per server) */ + if(!XQueryExtension(display, "NV-CONTROL", &opcode, &event, &error)) { + XCloseDisplay(display); + continue; + } + + for (j = 0; j < (unsigned) ScreenCount(display) && j < HWLOC_GL_SCREEN_MAX; j++) { + hwloc_obj_t osdev, parent; + const int screen = (int)j; + unsigned int *ptr_binary_data; + int data_length; + int gpu_number; + int nv_ctrl_pci_bus; + int nv_ctrl_pci_device; + int nv_ctrl_pci_domain; + int nv_ctrl_pci_func; + char *productname; + char name[64]; + + /* the server supports NV-CONTROL but it may contain non-NVIDIA screen that don't support it */ + if (!XNVCTRLIsNvScreen(display, screen)) + continue; + + /* Gets the GPU number attached to the default screen. */ + /* For further details, see the */ + err = XNVCTRLQueryTargetBinaryData (display, NV_CTRL_TARGET_TYPE_X_SCREEN, screen, 0, + NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN, + (unsigned char **) &ptr_binary_data, &data_length); + if (!err) + continue; + + gpu_number = (int)ptr_binary_data[1]; + free(ptr_binary_data); + +#ifdef NV_CTRL_PCI_DOMAIN + /* Gets the ID's of the GPU defined by gpu_number + * For further details, see the */ + err = XNVCTRLQueryTargetAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0, + NV_CTRL_PCI_DOMAIN, &nv_ctrl_pci_domain); + if (!err) + continue; +#else + nv_ctrl_pci_domain = 0; +#endif + + err = XNVCTRLQueryTargetAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0, + NV_CTRL_PCI_BUS, &nv_ctrl_pci_bus); + if (!err) + continue; + + err = XNVCTRLQueryTargetAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0, + NV_CTRL_PCI_DEVICE, &nv_ctrl_pci_device); + if (!err) + continue; + + err = XNVCTRLQueryTargetAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0, + NV_CTRL_PCI_FUNCTION, &nv_ctrl_pci_func); + if (!err) + continue; + + productname = NULL; + err = XNVCTRLQueryTargetStringAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0, + NV_CTRL_STRING_PRODUCT_NAME, &productname); + + snprintf(name, sizeof(name), ":%u.%u", i, j); + + osdev = hwloc_alloc_setup_object(topology, HWLOC_OBJ_OS_DEVICE, HWLOC_UNKNOWN_INDEX); + osdev->name = strdup(name); + osdev->subtype = strdup("Display"); + osdev->attr->osdev.type = HWLOC_OBJ_OSDEV_GPU; + hwloc_obj_add_info(osdev, "Backend", "GL"); + hwloc_obj_add_info(osdev, "GPUVendor", "NVIDIA Corporation"); + if (productname) + hwloc_obj_add_info(osdev, "GPUModel", productname); + + parent = hwloc_pci_find_parent_by_busid(topology, (unsigned)nv_ctrl_pci_domain, (unsigned)nv_ctrl_pci_bus, (unsigned)nv_ctrl_pci_device, (unsigned)nv_ctrl_pci_func); + if (!parent) + parent = hwloc_get_root_obj(topology); + + hwloc_insert_object_by_parent(topology, parent, osdev); + + hwloc_debug("GL device %s (product %s) on PCI %04x:%02x:%02x.%01x\n", + name, productname, + (unsigned) nv_ctrl_pci_domain, (unsigned) nv_ctrl_pci_bus, (unsigned) nv_ctrl_pci_device, (unsigned) nv_ctrl_pci_func); + } + XCloseDisplay(display); + } + + return 0; +} + +static struct hwloc_backend * +hwloc_gl_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + backend->discover = hwloc_gl_discover; + return backend; +} + +static struct hwloc_disc_component hwloc_gl_disc_component = { + "gl", + HWLOC_DISC_PHASE_IO, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_gl_component_instantiate, + 10, /* after pci */ + 1, + NULL +}; + +static int +hwloc_gl_component_init(unsigned long flags) +{ + if (flags) + return -1; + if (hwloc_plugin_check_namespace("gl", "hwloc_backend_alloc") < 0) + return -1; + return 0; +} + +#ifdef HWLOC_INSIDE_PLUGIN +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_gl_component; +#endif + +const struct hwloc_component hwloc_gl_component = { + HWLOC_COMPONENT_ABI, + hwloc_gl_component_init, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_gl_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-hardwired.c b/3rd-party/hwloc-2.7.1/hwloc/topology-hardwired.c new file mode 100644 index 0000000000..87956735f5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-hardwired.c @@ -0,0 +1,225 @@ +/* + * Copyright © 2015-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" + +int hwloc_look_hardwired_fujitsu_k(struct hwloc_topology *topology) +{ + /* If a broken core gets disabled, its bit disappears and other core bits are NOT shifted towards 0. + * Node is not given to user job, not need to handle that case properly. + */ + unsigned i; + hwloc_obj_t obj; + hwloc_bitmap_t set; + + for(i=0; i<8; i++) { + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set(set, i); + + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1ICACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1ICACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_INSTRUCTION; + obj->attr->cache.depth = 1; + obj->attr->cache.size = 32*1024; + obj->attr->cache.linesize = 128; + obj->attr->cache.associativity = 2; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:k:l1icache"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1CACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1CACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_DATA; + obj->attr->cache.depth = 1; + obj->attr->cache.size = 32*1024; + obj->attr->cache.linesize = 128; + obj->attr->cache.associativity = 2; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:k:l1dcache"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_CORE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_CORE, i); + obj->cpuset = set; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:k:core"); + } else + hwloc_bitmap_free(set); + } + + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(set, 0, 7); + + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L2CACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L2CACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + obj->attr->cache.depth = 2; + obj->attr->cache.size = 6*1024*1024; + obj->attr->cache.linesize = 128; + obj->attr->cache.associativity = 12; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:k:l2cache"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_PACKAGE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PACKAGE, 0); + obj->cpuset = set; + hwloc_obj_add_info(obj, "CPUVendor", "Fujitsu"); + hwloc_obj_add_info(obj, "CPUModel", "SPARC64 VIIIfx"); + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:k:package"); + } else + hwloc_bitmap_free(set); + + topology->support.discovery->pu = 1; + hwloc_setup_pu_level(topology, 8); + + return 0; +} + +int hwloc_look_hardwired_fujitsu_fx10(struct hwloc_topology *topology) +{ + /* If a broken core gets disabled, its bit disappears and other core bits are NOT shifted towards 0. + * Node is not given to user job, not need to handle that case properly. + */ + unsigned i; + hwloc_obj_t obj; + hwloc_bitmap_t set; + + for(i=0; i<16; i++) { + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set(set, i); + + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1ICACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1ICACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_INSTRUCTION; + obj->attr->cache.depth = 1; + obj->attr->cache.size = 32*1024; + obj->attr->cache.linesize = 128; + obj->attr->cache.associativity = 2; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx10:l1icache"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1CACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1CACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_DATA; + obj->attr->cache.depth = 1; + obj->attr->cache.size = 32*1024; + obj->attr->cache.linesize = 128; + obj->attr->cache.associativity = 2; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx10:l1dcache"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_CORE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_CORE, i); + obj->cpuset = set; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx10:core"); + } else + hwloc_bitmap_free(set); + } + + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(set, 0, 15); + + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L2CACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L2CACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + obj->attr->cache.depth = 2; + obj->attr->cache.size = 12*1024*1024; + obj->attr->cache.linesize = 128; + obj->attr->cache.associativity = 24; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx10:l2cache"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_PACKAGE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PACKAGE, 0); + obj->cpuset = set; + hwloc_obj_add_info(obj, "CPUVendor", "Fujitsu"); + hwloc_obj_add_info(obj, "CPUModel", "SPARC64 IXfx"); + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx10:package"); + } else + hwloc_bitmap_free(set); + + topology->support.discovery->pu = 1; + hwloc_setup_pu_level(topology, 16); + + return 0; +} + +int hwloc_look_hardwired_fujitsu_fx100(struct hwloc_topology *topology) +{ + /* If a broken core gets disabled, its bit disappears and other core bits are NOT shifted towards 0. + * Node is not given to user job, not need to handle that case properly. + */ + unsigned i; + hwloc_obj_t obj; + hwloc_bitmap_t set; + + for(i=0; i<34; i++) { + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set(set, i); + + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1ICACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1ICACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_INSTRUCTION; + obj->attr->cache.depth = 1; + obj->attr->cache.size = 64*1024; + obj->attr->cache.linesize = 256; + obj->attr->cache.associativity = 4; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx100:l1icache"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L1CACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L1CACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_dup(set); + obj->attr->cache.type = HWLOC_OBJ_CACHE_DATA; + obj->attr->cache.depth = 1; + obj->attr->cache.size = 64*1024; + obj->attr->cache.linesize = 256; + obj->attr->cache.associativity = 4; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx100:l1dcache"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_CORE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_CORE, i); + obj->cpuset = set; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired::fx100:core"); + } else + hwloc_bitmap_free(set); + } + + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L2CACHE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L2CACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(obj->cpuset, 0, 15); + hwloc_bitmap_set(obj->cpuset, 32); + obj->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + obj->attr->cache.depth = 2; + obj->attr->cache.size = 12*1024*1024; + obj->attr->cache.linesize = 256; + obj->attr->cache.associativity = 24; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx100:l2cache#0"); + + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L2CACHE, HWLOC_UNKNOWN_INDEX); + obj->cpuset = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(obj->cpuset, 16, 31); + hwloc_bitmap_set(obj->cpuset, 33); + obj->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + obj->attr->cache.depth = 2; + obj->attr->cache.size = 12*1024*1024; + obj->attr->cache.linesize = 256; + obj->attr->cache.associativity = 24; + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx100:l2cache#1"); + } + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_PACKAGE)) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PACKAGE, 0); + obj->cpuset = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(obj->cpuset, 0, 33); + hwloc_obj_add_info(obj, "CPUVendor", "Fujitsu"); + hwloc_obj_add_info(obj, "CPUModel", "SPARC64 XIfx"); + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hardwired:fx100:package"); + } + + topology->support.discovery->pu = 1; + hwloc_setup_pu_level(topology, 34); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-hpux.c b/3rd-party/hwloc-2.7.1/hwloc/topology-hpux.c new file mode 100644 index 0000000000..f5364715c1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-hpux.c @@ -0,0 +1,333 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009-2010, 2013 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +/* TODO: psets? (Only for root) + * since 11i 1.6: + _SC_PSET_SUPPORT + pset_create/destroy/assign/setattr + pset_ctl/getattr + pset_bind() + pthread_pset_bind_np() + */ + +#include "private/autogen/config.h" + +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +#include "hwloc.h" +#include "private/private.h" +#include "private/debug.h" + +#include +#include +#include + +static ldom_t +hwloc_hpux_find_ldom(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set) +{ + int has_numa = sysconf(_SC_CCNUMA_SUPPORT) == 1; + hwloc_obj_t obj; + + if (!has_numa) + return -1; + + obj = hwloc_get_first_largest_obj_inside_cpuset(topology, hwloc_set); + if (!hwloc_bitmap_isequal(obj->cpuset, hwloc_set)) + /* Does not correspond to exactly one node */ + return -1; + /* obj is the highest possibly matching object, but some (single) child (with same cpuset) could match too */ + while (obj->type != HWLOC_OBJ_NUMANODE) { + /* try the first child, in case it has the same cpuset */ + if (!obj->first_child + || !obj->first_child->cpuset + || !hwloc_bitmap_isequal(obj->cpuset, obj->first_child->cpuset)) + return -1; + obj = obj->first_child; + } + + return obj->os_index; +} + +static spu_t +hwloc_hpux_find_spu(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t hwloc_set) +{ + spu_t cpu; + + cpu = hwloc_bitmap_first(hwloc_set); + if (cpu != -1 && hwloc_bitmap_weight(hwloc_set) == 1) + return cpu; + return -1; +} + +/* Note: get_cpubind not available on HP-UX */ +static int +hwloc_hpux_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) +{ + ldom_t ldom; + spu_t cpu; + + /* Drop previous binding */ + mpctl(MPC_SETLDOM, MPC_LDOMFLOAT, pid); + mpctl(MPC_SETPROCESS, MPC_SPUFLOAT, pid); + + if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) + return 0; + + ldom = hwloc_hpux_find_ldom(topology, hwloc_set); + if (ldom != -1) + return mpctl(MPC_SETLDOM, ldom, pid); + + cpu = hwloc_hpux_find_spu(topology, hwloc_set); + if (cpu != -1) + return mpctl((flags & HWLOC_CPUBIND_STRICT) ? MPC_SETPROCESS_FORCE : MPC_SETPROCESS, cpu, pid); + + errno = EXDEV; + return -1; +} + +static int +hwloc_hpux_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) +{ + return hwloc_hpux_set_proc_cpubind(topology, MPC_SELFPID, hwloc_set, flags); +} + +#ifdef hwloc_thread_t +static int +hwloc_hpux_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, int flags) +{ + ldom_t ldom, ldom2; + spu_t cpu, cpu2; + + /* Drop previous binding */ + pthread_ldom_bind_np(&ldom2, PTHREAD_LDOMFLOAT_NP, pthread); + pthread_processor_bind_np(PTHREAD_BIND_ADVISORY_NP, &cpu2, PTHREAD_SPUFLOAT_NP, pthread); + + if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) + return 0; + + ldom = hwloc_hpux_find_ldom(topology, hwloc_set); + if (ldom != -1) + return pthread_ldom_bind_np(&ldom2, ldom, pthread); + + cpu = hwloc_hpux_find_spu(topology, hwloc_set); + if (cpu != -1) + return pthread_processor_bind_np((flags & HWLOC_CPUBIND_STRICT) ? PTHREAD_BIND_FORCED_NP : PTHREAD_BIND_ADVISORY_NP, &cpu2, cpu, pthread); + + errno = EXDEV; + return -1; +} + +static int +hwloc_hpux_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) +{ + return hwloc_hpux_set_thread_cpubind(topology, PTHREAD_SELFTID_NP, hwloc_set, flags); +} +#endif + +/* According to HP docs, HP-UX up to 11iv2 don't support migration */ + +#ifdef MAP_MEM_FIRST_TOUCH +static void* +hwloc_hpux_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t _nodeset, hwloc_membind_policy_t policy, int flags) +{ + hwloc_const_nodeset_t nodeset; + int mmap_flags; + void *p; + + /* Can not give a set of nodes. */ + nodeset = hwloc_topology_get_complete_nodeset(topology); + if (policy != HWLOC_MEMBIND_DEFAULT + && !hwloc_bitmap_isequal(nodeset, _nodeset)) { + errno = EXDEV; + return hwloc_alloc_or_fail(topology, len, flags); + } + + switch (policy) { + case HWLOC_MEMBIND_DEFAULT: + case HWLOC_MEMBIND_BIND: + mmap_flags = 0; + break; + case HWLOC_MEMBIND_FIRSTTOUCH: + mmap_flags = MAP_MEM_FIRST_TOUCH; + break; + case HWLOC_MEMBIND_INTERLEAVE: + mmap_flags = MAP_MEM_INTERLEAVED; + break; + default: + errno = ENOSYS; + return NULL; + } + + p = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | mmap_flags, -1, 0); + return p == MAP_FAILED ? NULL : p; +} +#endif /* MAP_MEM_FIRST_TOUCH */ + +static int +hwloc_look_hpux(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend uses the underlying OS. + * However we don't enforce topology->is_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + + struct hwloc_topology *topology = backend->topology; + int has_numa = sysconf(_SC_CCNUMA_SUPPORT) == 1; + spu_t currentcpu; + ldom_t currentnode; + hwloc_obj_t *nodes, obj; + int i, nbnodes = 0; + + assert(dstatus->phase == HWLOC_DISC_PHASE_CPU); + + if (topology->levels[0][0]->cpuset) + /* somebody discovered things */ + return -1; + + hwloc_alloc_root_sets(topology->levels[0][0]); + + if (has_numa) { + nbnodes = mpctl((topology->flags & HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED) ? + MPC_GETNUMLDOMS_SYS : MPC_GETNUMLDOMS, 0, 0); + } + hwloc_debug("%d nodes\n", nbnodes); + + nodes = malloc(nbnodes * sizeof(*nodes)); + if (!nodes) + has_numa = 0; + + if (has_numa) { + i = 0; + currentnode = mpctl((topology->flags & HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED) ? + MPC_GETFIRSTLDOM_SYS : MPC_GETFIRSTLDOM, 0, 0); + while (currentnode != -1 && i < nbnodes) { + hwloc_debug("node %d is %d\n", i, currentnode); + nodes[i] = obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_NUMANODE, (unsigned) currentnode); + obj->cpuset = hwloc_bitmap_alloc(); + obj->nodeset = hwloc_bitmap_alloc(); + hwloc_bitmap_set(obj->nodeset, currentnode); + /* TODO: obj->attr->node.memory_kB */ + /* TODO: obj->attr->node.huge_page_free */ + + currentnode = mpctl((topology->flags & HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED) ? + MPC_GETNEXTLDOM_SYS : MPC_GETNEXTLDOM, currentnode, 0); + i++; + } + } + + i = 0; + currentcpu = mpctl((topology->flags & HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED) ? + MPC_GETFIRSTSPU_SYS : MPC_GETFIRSTSPU, 0,0); + while (currentcpu != -1) { + obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PU, (unsigned) currentcpu); + obj->cpuset = hwloc_bitmap_alloc(); + hwloc_bitmap_set(obj->cpuset, currentcpu); + + hwloc_debug("cpu %d\n", currentcpu); + + if (has_numa) { + /* Add this cpu to its node */ + currentnode = mpctl(MPC_SPUTOLDOM, currentcpu, 0); + /* Hopefully it's just the same as previous cpu */ + if (i >= nbnodes || (ldom_t) nodes[i]->os_index != currentnode) + for (i = 0; i < nbnodes; i++) + if ((ldom_t) nodes[i]->os_index == currentnode) + break; + if (i < nbnodes) { + hwloc_bitmap_set(nodes[i]->cpuset, currentcpu); + hwloc_debug("is in node %d\n", i); + } else { + hwloc_debug("%s", "is in no node?!\n"); + } + } + + /* Add cpu */ + hwloc__insert_object_by_cpuset(topology, NULL, obj, "hpux:pu"); + + currentcpu = mpctl((topology->flags & HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED) ? + MPC_GETNEXTSPU_SYS : MPC_GETNEXTSPU, currentcpu, 0); + } + + if (has_numa) { + /* Add nodes */ + for (i = 0 ; i < nbnodes ; i++) + hwloc__insert_object_by_cpuset(topology, NULL, nodes[i], "hpux:numanode"); + } + + topology->support.discovery->pu = 1; + if (has_numa) + topology->support.discovery->numa = 1; + /* don't set disallowed_{pu,numa} since we don't set the allowed sets */ + + hwloc_obj_add_info(topology->levels[0][0], "Backend", "HP-UX"); + hwloc_add_uname_info(topology, NULL); + + free(nodes); + return 0; +} + +void +hwloc_set_hpux_hooks(struct hwloc_binding_hooks *hooks, + struct hwloc_topology_support *support __hwloc_attribute_unused) +{ + hooks->set_proc_cpubind = hwloc_hpux_set_proc_cpubind; + hooks->set_thisproc_cpubind = hwloc_hpux_set_thisproc_cpubind; +#ifdef hwloc_thread_t + hooks->set_thread_cpubind = hwloc_hpux_set_thread_cpubind; + hooks->set_thisthread_cpubind = hwloc_hpux_set_thisthread_cpubind; +#endif +#ifdef MAP_MEM_FIRST_TOUCH + hooks->alloc_membind = hwloc_hpux_alloc_membind; + hooks->alloc = hwloc_alloc_mmap; + hooks->free_membind = hwloc_free_mmap; + support->membind->firsttouch_membind = 1; + support->membind->bind_membind = 1; + support->membind->interleave_membind = 1; +#endif /* MAP_MEM_FIRST_TOUCH */ +} + +static struct hwloc_backend * +hwloc_hpux_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + backend->discover = hwloc_look_hpux; + return backend; +} + +static struct hwloc_disc_component hwloc_hpux_disc_component = { + "hpux", + HWLOC_DISC_PHASE_CPU, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_hpux_component_instantiate, + 50, + 1, + NULL +}; + +const struct hwloc_component hwloc_hpux_component = { + HWLOC_COMPONENT_ABI, + NULL, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_hpux_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-levelzero.c b/3rd-party/hwloc-2.7.1/hwloc/topology-levelzero.c new file mode 100644 index 0000000000..9f87b850cd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-levelzero.c @@ -0,0 +1,541 @@ +/* + * Copyright © 2020-2022 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/plugins.h" + +/* private headers allowed for convenience because this plugin is built within hwloc */ +#include "private/misc.h" +#include "private/debug.h" + +#include +#include + +static void +hwloc__levelzero_properties_get(ze_device_handle_t h, hwloc_obj_t osdev, + int sysman_maybe_missing) +{ + ze_result_t res; + ze_device_properties_t prop; + zes_device_properties_t prop2; + int is_subdevice = 0; + + memset(&prop, 0, sizeof(prop)); + res = zeDeviceGetProperties(h, &prop); + if (res == ZE_RESULT_SUCCESS) { + /* name is the model name followed by the deviceID + * flags 1<<0 means integrated (vs discrete). + */ + char tmp[64]; + const char *type; + switch (prop.type) { + case ZE_DEVICE_TYPE_GPU: type = "GPU"; break; + case ZE_DEVICE_TYPE_CPU: type = "CPU"; break; + case ZE_DEVICE_TYPE_FPGA: type = "FPGA"; break; + case ZE_DEVICE_TYPE_MCA: type = "MCA"; break; + case ZE_DEVICE_TYPE_VPU: type = "VPU"; break; + default: + if (!hwloc_hide_errors()) + fprintf(stderr, "hwloc/levelzero: unexpected device type %u\n", (unsigned) prop.type); + type = "Unknown"; + } + hwloc_obj_add_info(osdev, "LevelZeroDeviceType", type); + snprintf(tmp, sizeof(tmp), "%u", prop.numSlices); + hwloc_obj_add_info(osdev, "LevelZeroNumSlices", tmp); + snprintf(tmp, sizeof(tmp), "%u", prop.numSubslicesPerSlice); + hwloc_obj_add_info(osdev, "LevelZeroNumSubslicesPerSlice", tmp); + snprintf(tmp, sizeof(tmp), "%u", prop.numEUsPerSubslice); + hwloc_obj_add_info(osdev, "LevelZeroNumEUsPerSubslice", tmp); + snprintf(tmp, sizeof(tmp), "%u", prop.numThreadsPerEU); + hwloc_obj_add_info(osdev, "LevelZeroNumThreadsPerEU", tmp); + + if (prop.flags & ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE) + is_subdevice = 1; + } + + if (is_subdevice) + /* sysman API on subdevice returns the same as root device, and we don't need those duplicate attributes */ + return; + + /* try to get additional info from sysman if enabled */ + memset(&prop2, 0, sizeof(prop2)); + res = zesDeviceGetProperties(h, &prop2); + if (res == ZE_RESULT_SUCCESS) { + /* old implementations may return "Unknown", recent may return "unknown" */ + if (strcasecmp((const char *) prop2.vendorName, "Unknown")) + hwloc_obj_add_info(osdev, "LevelZeroVendor", (const char *) prop2.vendorName); + if (strcasecmp((const char *) prop2.modelName, "Unknown")) + hwloc_obj_add_info(osdev, "LevelZeroModel", (const char *) prop2.modelName); + if (strcasecmp((const char *) prop2.brandName, "Unknown")) + hwloc_obj_add_info(osdev, "LevelZeroBrand", (const char *) prop2.brandName); + if (strcasecmp((const char *) prop2.serialNumber, "Unknown")) + hwloc_obj_add_info(osdev, "LevelZeroSerialNumber", (const char *) prop2.serialNumber); + if (strcasecmp((const char *) prop2.boardNumber, "Unknown")) + hwloc_obj_add_info(osdev, "LevelZeroBoardNumber", (const char *) prop2.boardNumber); + } else { + static int warned = 0; + if (!warned) { + if (sysman_maybe_missing == 1 && !hwloc_hide_errors()) + fprintf(stderr, "hwloc/levelzero: zesDeviceGetProperties() failed (ZES_ENABLE_SYSMAN=1 set too late?).\n"); + else if (sysman_maybe_missing == 2 && !hwloc_hide_errors()) + fprintf(stderr, "hwloc/levelzero: zesDeviceGetProperties() failed (ZES_ENABLE_SYSMAN=0).\n"); + warned = 1; + } + /* continue in degraded mode, we'll miss locality and some attributes */ + } +} + +static void +hwloc__levelzero_cqprops_get(ze_device_handle_t h, + hwloc_obj_t osdev) +{ + ze_command_queue_group_properties_t *cqprops; + unsigned nr_cqprops = 0; + ze_result_t res; + + res = zeDeviceGetCommandQueueGroupProperties(h, &nr_cqprops, NULL); + if (res != ZE_RESULT_SUCCESS || !nr_cqprops) + return; + + cqprops = malloc(nr_cqprops * sizeof(*cqprops)); + if (cqprops) { + res = zeDeviceGetCommandQueueGroupProperties(h, &nr_cqprops, cqprops); + if (res == ZE_RESULT_SUCCESS) { + unsigned k; + char tmp[32]; + snprintf(tmp, sizeof(tmp), "%u", nr_cqprops); + hwloc_obj_add_info(osdev, "LevelZeroCQGroups", tmp); + for(k=0; kname); + if (!nr_mems) + return 0; + + mh = malloc(nr_mems * sizeof(*mh)); + if (mh) { + res = zesDeviceEnumMemoryModules(h, &nr_mems, mh); + if (res == ZE_RESULT_SUCCESS) { + unsigned m; + for(m=0; m= nr_osdevs || !nr_osdevs || !sub_osdevs) { + if (!hwloc_hide_errors()) + fprintf(stderr, "LevelZero: memory module #%u on unexpected subdeviceId #%u\n", m, mprop.subdeviceId); + osdev = NULL; /* we'll ignore it but we'll still agregate its subdevice memories into totalHBM/DDRkB */ + } else { + osdev = sub_osdevs[mprop.subdeviceId]; + } + } else { + osdev = root_osdev; + } + switch (mprop.type) { + case ZES_MEM_TYPE_HBM: + type = "HBM"; + totalHBMkB += mprop.physicalSize >> 10; + break; + case ZES_MEM_TYPE_DDR: + case ZES_MEM_TYPE_DDR3: + case ZES_MEM_TYPE_DDR4: + case ZES_MEM_TYPE_DDR5: + case ZES_MEM_TYPE_LPDDR: + case ZES_MEM_TYPE_LPDDR3: + case ZES_MEM_TYPE_LPDDR4: + case ZES_MEM_TYPE_LPDDR5: + type = "DDR"; + totalDDRkB += mprop.physicalSize >> 10; + break; + default: + type = "Memory"; + } + + hwloc_debug("L0/Sysman: found %llu bytes type %s for osdev %s (onsub %d subid %u)\n", + (unsigned long long) mprop.physicalSize, type, osdev ? osdev->name : "NULL", + mprop.onSubdevice, mprop.subdeviceId); + if (!osdev || !type || !mprop.physicalSize) + continue; + + if (osdev != root_osdev) { + /* set the subdevice memory immediately */ + snprintf(name, sizeof(name), "LevelZero%sSize", type); + snprintf(value, sizeof(value), "%llu", (unsigned long long) mprop.physicalSize >> 10); + hwloc_obj_add_info(osdev, name, value); + } + } + } + } + free(mh); + } + + /* set the root device memory at the end, once subdevice memories were agregated */ + if (totalHBMkB) { + char value[64]; + snprintf(value, sizeof(value), "%llu", totalHBMkB); + hwloc_obj_add_info(root_osdev, "LevelZeroHBMSize", value); + } + if (totalDDRkB) { + char value[64]; + snprintf(value, sizeof(value), "%llu", totalDDRkB); + hwloc_obj_add_info(root_osdev, "LevelZeroDDRSize", value); + } + + return 0; +} + +static void +hwloc__levelzero_memory_get_from_coreapi(ze_device_handle_t h, + hwloc_obj_t osdev) +{ + ze_device_memory_properties_t *mh; + uint32_t nr_mems; + ze_result_t res; + + nr_mems = 0; + res = zeDeviceGetMemoryProperties(h, &nr_mems, NULL); + if (res != ZE_RESULT_SUCCESS || !nr_mems) + return; + hwloc_debug("L0/CoreAPI: found %u memories in osdev %s\n", + nr_mems, osdev->name); + + mh = malloc(nr_mems * sizeof(*mh)); + if (mh) { + res = zeDeviceGetMemoryProperties(h, &nr_mems, mh); + if (res == ZE_RESULT_SUCCESS) { + unsigned m; + for(m=0; mname); + if (!mh[m].totalSize) + continue; + if (!_name[0]) + _name = "Memory"; + snprintf(name, sizeof(name), "LevelZero%sSize", _name); /* HBM or DDR, or Memory if unknown */ + snprintf(value, sizeof(value), "%llu", (unsigned long long) mh[m].totalSize >> 10); + hwloc_obj_add_info(osdev, name, value); + } + } + free(mh); + } +} + + +static void +hwloc__levelzero_memory_get(zes_device_handle_t h, hwloc_obj_t root_osdev, + unsigned nr_subdevices, zes_device_handle_t *subh, hwloc_obj_t *sub_osdevs) +{ + static int memory_from_coreapi = -1; /* 1 means coreapi, 0 means sysman, -1 means sysman if available or coreapi otherwise */ + static int first = 1; + + if (first) { + char *env; + env = getenv("HWLOC_L0_COREAPI_MEMORY"); + if (env) + memory_from_coreapi = atoi(env); + + if (memory_from_coreapi == -1) { + int ret = hwloc__levelzero_memory_get_from_sysman(h, root_osdev, nr_subdevices, sub_osdevs); + if (!ret) { + /* sysman worked, we're done, disable coreapi for next time */ + hwloc_debug("levelzero: sysman/memory succeeded, disabling coreapi memory queries\n"); + memory_from_coreapi = 0; + return; + } + /* sysman failed, enable coreapi */ + hwloc_debug("levelzero: sysman/memory failed, enabling coreapi memory queries\n"); + memory_from_coreapi = 1; + } + + first = 0; + } + + if (memory_from_coreapi == 1) { + unsigned k; + hwloc__levelzero_memory_get_from_coreapi(h, root_osdev); + for(k=0; kis_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + + struct hwloc_topology *topology = backend->topology; + enum hwloc_type_filter_e filter; + ze_result_t res; + ze_driver_handle_t *drh; + uint32_t nbdrivers, i, k, zeidx; + int sysman_maybe_missing = 0; /* 1 if ZES_ENABLE_SYSMAN=1 was NOT set early, 2 if ZES_ENABLE_SYSMAN=0 */ + char *env; + + assert(dstatus->phase == HWLOC_DISC_PHASE_IO); + + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_OS_DEVICE, &filter); + if (filter == HWLOC_TYPE_FILTER_KEEP_NONE) + return 0; + + /* Tell L0 to create sysman devices. + * If somebody already initialized L0 without Sysman, + * zesDeviceGetProperties() will fail and warn in hwloc__levelzero_properties_get(). + * The lib constructor and Windows DllMain tried to set ZES_ENABLE_SYSMAN=1 early (see topology.c), + * we try again in case they didn't. + */ + env = getenv("ZES_ENABLE_SYSMAN"); + if (!env) { + /* setenv() is safer than putenv() but not available on Windows */ +#ifdef HWLOC_WIN_SYS + putenv("ZES_ENABLE_SYSMAN=1"); +#else + setenv("ZES_ENABLE_SYSMAN", "1", 1); +#endif + /* we'll warn in hwloc__levelzero_properties_get() if we fail to get zes devices */ + sysman_maybe_missing = 1; + } else if (!atoi(env)) { + sysman_maybe_missing = 2; + } + + res = zeInit(0); + if (res != ZE_RESULT_SUCCESS) { + if (!hwloc_hide_errors()) { + fprintf(stderr, "Failed to initialize LevelZero in ze_init(): 0x%x\n", (unsigned)res); + } + return 0; + } + + nbdrivers = 0; + res = zeDriverGet(&nbdrivers, NULL); + if (res != ZE_RESULT_SUCCESS || !nbdrivers) + return 0; + hwloc_debug("hwloc/L0: found %u drivers\n", (unsigned) nbdrivers); + drh = malloc(nbdrivers * sizeof(*drh)); + if (!drh) + return 0; + res = zeDriverGet(&nbdrivers, drh); + if (res != ZE_RESULT_SUCCESS) { + free(drh); + return 0; + } + + zeidx = 0; + for(i=0; iname = strdup(buffer); + osdev->depth = HWLOC_TYPE_DEPTH_UNKNOWN; + osdev->attr->osdev.type = HWLOC_OBJ_OSDEV_COPROC; + osdev->subtype = strdup("LevelZero"); + hwloc_obj_add_info(osdev, "Backend", "LevelZero"); + + snprintf(buffer, sizeof(buffer), "%u", i); + hwloc_obj_add_info(osdev, "LevelZeroDriverIndex", buffer); + snprintf(buffer, sizeof(buffer), "%u", j); + hwloc_obj_add_info(osdev, "LevelZeroDriverDeviceIndex", buffer); + + hwloc__levelzero_properties_get(dvh[j], osdev, sysman_maybe_missing); + + hwloc__levelzero_cqprops_get(dvh[j], osdev); + + nr_subdevices = 0; + res = zeDeviceGetSubDevices(dvh[j], &nr_subdevices, NULL); + /* returns ZE_RESULT_ERROR_INVALID_ARGUMENT if there are no subdevices */ + if (res == ZE_RESULT_SUCCESS && nr_subdevices > 0) { + char tmp[64]; + snprintf(tmp, sizeof(tmp), "%u", nr_subdevices); + hwloc_obj_add_info(osdev, "LevelZeroSubdevices", tmp); + subh = malloc(nr_subdevices * sizeof(*subh)); + subosdevs = malloc(nr_subdevices * sizeof(*subosdevs)); + if (subosdevs && subh) { + zeDeviceGetSubDevices(dvh[j], &nr_subdevices, subh); + for(k=0; kname = strdup(buffer); + subosdevs[k]->depth = HWLOC_TYPE_DEPTH_UNKNOWN; + subosdevs[k]->attr->osdev.type = HWLOC_OBJ_OSDEV_COPROC; + subosdevs[k]->subtype = strdup("LevelZero"); + hwloc_obj_add_info(subosdevs[k], "Backend", "LevelZero"); + snprintf(tmp, sizeof(tmp), "%u", k); + hwloc_obj_add_info(subosdevs[k], "LevelZeroSubdeviceID", tmp); + + hwloc__levelzero_properties_get(subh[j], subosdevs[k], sysman_maybe_missing); + + hwloc__levelzero_cqprops_get(subh[k], subosdevs[k]); + } + } else { + free(subosdevs); + free(subh); + subosdevs = NULL; + nr_subdevices = 0; + } + } + + /* get all memory info at once */ + hwloc__levelzero_memory_get(dvh[j], osdev, nr_subdevices, subh, subosdevs); + + parent = NULL; + res = zesDevicePciGetProperties(sdvh, &pci); + if (res == ZE_RESULT_SUCCESS) { + parent = hwloc_pci_find_parent_by_busid(topology, + pci.address.domain, + pci.address.bus, + pci.address.device, + pci.address.function); + if (parent && parent->type == HWLOC_OBJ_PCI_DEVICE) { + if (pci.maxSpeed.maxBandwidth > 0) + parent->attr->pcidev.linkspeed = ((float)pci.maxSpeed.maxBandwidth)/1000/1000/1000; + } + } + if (!parent) + parent = hwloc_get_root_obj(topology); + + hwloc_insert_object_by_parent(topology, parent, osdev); + if (nr_subdevices) { + for(k=0; kdiscover = hwloc_levelzero_discover; + return backend; +} + +static struct hwloc_disc_component hwloc_levelzero_disc_component = { + "levelzero", + HWLOC_DISC_PHASE_IO, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_levelzero_component_instantiate, + 10, /* after pci */ + 1, + NULL +}; + +static int +hwloc_levelzero_component_init(unsigned long flags) +{ + if (flags) + return -1; + if (hwloc_plugin_check_namespace("levelzero", "hwloc_backend_alloc") < 0) + return -1; + return 0; +} + +#ifdef HWLOC_INSIDE_PLUGIN +HWLOC_DECLSPEC extern const struct hwloc_component hwloc_levelzero_component; +#endif + +const struct hwloc_component hwloc_levelzero_component = { + HWLOC_COMPONENT_ABI, + hwloc_levelzero_component_init, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_levelzero_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-linux.c b/3rd-party/hwloc-2.7.1/hwloc/topology-linux.c new file mode 100644 index 0000000000..2171f635af --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-linux.c @@ -0,0 +1,7116 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2013, 2015, 2020 Université Bordeaux + * Copyright © 2009-2018 Cisco Systems, Inc. All rights reserved. + * Copyright © 2015 Intel, Inc. All rights reserved. + * Copyright © 2010 IBM + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/linux.h" +#include "private/misc.h" +#include "private/private.h" +#include "private/misc.h" +#include "private/debug.h" + +#include +#include +#include +#include +#include +#ifdef HAVE_DIRENT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HWLOC_HAVE_LIBUDEV +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +struct hwloc_linux_backend_data_s { + char *root_path; /* NULL if unused */ + int root_fd; /* The file descriptor for the file system root, used when browsing, e.g., Linux' sysfs and procfs. */ + int is_real_fsroot; /* Boolean saying whether root_fd points to the real filesystem root of the system */ +#ifdef HWLOC_HAVE_LIBUDEV + struct udev *udev; /* Global udev context */ +#endif + const char *dumped_hwdata_dirname; + enum { + HWLOC_LINUX_ARCH_X86, /* x86 32 or 64bits, including k1om (KNC) */ + HWLOC_LINUX_ARCH_IA64, + HWLOC_LINUX_ARCH_ARM, + HWLOC_LINUX_ARCH_POWER, + HWLOC_LINUX_ARCH_S390, + HWLOC_LINUX_ARCH_UNKNOWN + } arch; + int is_knl; + int is_amd_with_CU; + int use_numa_distances; + int use_numa_distances_for_cpuless; + int use_numa_initiators; + struct utsname utsname; /* fields contain \0 when unknown */ + int fallback_nbprocessors; /* only used in hwloc_linux_fallback_pu_level(), maybe be <= 0 (error) earlier */ + unsigned pagesize; +}; + + + +/*************************** + * Misc Abstraction layers * + ***************************/ + +#if !(defined HWLOC_HAVE_SCHED_SETAFFINITY) && (defined HWLOC_HAVE_SYSCALL) +/* libc doesn't have support for sched_setaffinity, make system call + * ourselves: */ +# ifndef __NR_sched_setaffinity +# ifdef __i386__ +# define __NR_sched_setaffinity 241 +# elif defined(__x86_64__) +# define __NR_sched_setaffinity 203 +# elif defined(__ia64__) +# define __NR_sched_setaffinity 1231 +# elif defined(__hppa__) +# define __NR_sched_setaffinity 211 +# elif defined(__alpha__) +# define __NR_sched_setaffinity 395 +# elif defined(__s390__) +# define __NR_sched_setaffinity 239 +# elif defined(__sparc__) +# define __NR_sched_setaffinity 261 +# elif defined(__m68k__) +# define __NR_sched_setaffinity 311 +# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) +# define __NR_sched_setaffinity 222 +# elif defined(__aarch64__) +# define __NR_sched_setaffinity 122 +# elif defined(__arm__) +# define __NR_sched_setaffinity 241 +# elif defined(__cris__) +# define __NR_sched_setaffinity 241 +/*# elif defined(__mips__) + # define __NR_sched_setaffinity TODO (32/64/nabi) */ +# else +# warning "don't know the syscall number for sched_setaffinity on this architecture, will not support binding" +# define sched_setaffinity(pid, lg, mask) (errno = ENOSYS, -1) +# endif +# endif +# ifndef sched_setaffinity +# define sched_setaffinity(pid, lg, mask) syscall(__NR_sched_setaffinity, pid, lg, mask) +# endif +# ifndef __NR_sched_getaffinity +# ifdef __i386__ +# define __NR_sched_getaffinity 242 +# elif defined(__x86_64__) +# define __NR_sched_getaffinity 204 +# elif defined(__ia64__) +# define __NR_sched_getaffinity 1232 +# elif defined(__hppa__) +# define __NR_sched_getaffinity 212 +# elif defined(__alpha__) +# define __NR_sched_getaffinity 396 +# elif defined(__s390__) +# define __NR_sched_getaffinity 240 +# elif defined(__sparc__) +# define __NR_sched_getaffinity 260 +# elif defined(__m68k__) +# define __NR_sched_getaffinity 312 +# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) +# define __NR_sched_getaffinity 223 +# elif defined(__aarch64__) +# define __NR_sched_getaffinity 123 +# elif defined(__arm__) +# define __NR_sched_getaffinity 242 +# elif defined(__cris__) +# define __NR_sched_getaffinity 242 +/*# elif defined(__mips__) + # define __NR_sched_getaffinity TODO (32/64/nabi) */ +# else +# warning "don't know the syscall number for sched_getaffinity on this architecture, will not support getting binding" +# define sched_getaffinity(pid, lg, mask) (errno = ENOSYS, -1) +# endif +# endif +# ifndef sched_getaffinity +# define sched_getaffinity(pid, lg, mask) (syscall(__NR_sched_getaffinity, pid, lg, mask) < 0 ? -1 : 0) +# endif +#endif + +/* numa syscalls are only in libnuma, but libnuma devel headers aren't widely installed. + * just redefine these syscalls to avoid requiring libnuma devel headers just because of these missing syscalls. + * __NR_foo should be defined in headers in all modern platforms. + * Just redefine the basic ones on important platform when not to hard to detect/define. + */ + +#ifndef MPOL_DEFAULT +# define MPOL_DEFAULT 0 +#endif +#ifndef MPOL_PREFERRED +# define MPOL_PREFERRED 1 +#endif +#ifndef MPOL_BIND +# define MPOL_BIND 2 +#endif +#ifndef MPOL_INTERLEAVE +# define MPOL_INTERLEAVE 3 +#endif +#ifndef MPOL_LOCAL +# define MPOL_LOCAL 4 +#endif +#ifndef MPOL_PREFERRED_MANY +# define MPOL_PREFERRED_MANY 5 +#endif +#ifndef MPOL_F_ADDR +# define MPOL_F_ADDR (1<<1) +#endif +#ifndef MPOL_MF_STRICT +# define MPOL_MF_STRICT (1<<0) +#endif +#ifndef MPOL_MF_MOVE +# define MPOL_MF_MOVE (1<<1) +#endif + +#ifndef __NR_mbind +# ifdef __i386__ +# define __NR_mbind 274 +# elif defined(__x86_64__) +# define __NR_mbind 237 +# elif defined(__ia64__) +# define __NR_mbind 1259 +# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) +# define __NR_mbind 259 +# elif defined(__sparc__) +# define __NR_mbind 353 +# elif defined(__aarch64__) +# define __NR_mbind 235 +# elif defined(__arm__) +# define __NR_mbind 319 +# endif +#endif +static __hwloc_inline long hwloc_mbind(void *addr __hwloc_attribute_unused, + unsigned long len __hwloc_attribute_unused, + int mode __hwloc_attribute_unused, + const unsigned long *nodemask __hwloc_attribute_unused, + unsigned long maxnode __hwloc_attribute_unused, + unsigned flags __hwloc_attribute_unused) +{ +#if (defined __NR_mbind) && (defined HWLOC_HAVE_SYSCALL) + return syscall(__NR_mbind, (long) addr, len, mode, (long)nodemask, maxnode, flags); +#else +#warning Couldn't find __NR_mbind syscall number, memory binding won't be supported + errno = ENOSYS; + return -1; +#endif +} + +#ifndef __NR_set_mempolicy +# ifdef __i386__ +# define __NR_set_mempolicy 276 +# elif defined(__x86_64__) +# define __NR_set_mempolicy 239 +# elif defined(__ia64__) +# define __NR_set_mempolicy 1261 +# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) +# define __NR_set_mempolicy 261 +# elif defined(__sparc__) +# define __NR_set_mempolicy 305 +# elif defined(__aarch64__) +# define __NR_set_mempolicy 237 +# elif defined(__arm__) +# define __NR_set_mempolicy 321 +# endif +#endif +static __hwloc_inline long hwloc_set_mempolicy(int mode __hwloc_attribute_unused, + const unsigned long *nodemask __hwloc_attribute_unused, + unsigned long maxnode __hwloc_attribute_unused) +{ +#if (defined __NR_set_mempolicy) && (defined HWLOC_HAVE_SYSCALL) + return syscall(__NR_set_mempolicy, mode, nodemask, maxnode); +#else +#warning Couldn't find __NR_set_mempolicy syscall number, memory binding won't be supported + errno = ENOSYS; + return -1; +#endif +} + +#ifndef __NR_get_mempolicy +# ifdef __i386__ +# define __NR_get_mempolicy 275 +# elif defined(__x86_64__) +# define __NR_get_mempolicy 238 +# elif defined(__ia64__) +# define __NR_get_mempolicy 1260 +# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) +# define __NR_get_mempolicy 260 +# elif defined(__sparc__) +# define __NR_get_mempolicy 304 +# elif defined(__aarch64__) +# define __NR_get_mempolicy 236 +# elif defined(__arm__) +# define __NR_get_mempolicy 320 +# endif +#endif +static __hwloc_inline long hwloc_get_mempolicy(int *mode __hwloc_attribute_unused, + unsigned long *nodemask __hwloc_attribute_unused, + unsigned long maxnode __hwloc_attribute_unused, + void *addr __hwloc_attribute_unused, + int flags __hwloc_attribute_unused) +{ +#if (defined __NR_get_mempolicy) && (defined HWLOC_HAVE_SYSCALL) + return syscall(__NR_get_mempolicy, mode, nodemask, maxnode, addr, flags); +#else +#warning Couldn't find __NR_get_mempolicy syscall number, memory binding won't be supported + errno = ENOSYS; + return -1; +#endif +} + +#ifndef __NR_migrate_pages +# ifdef __i386__ +# define __NR_migrate_pages 204 +# elif defined(__x86_64__) +# define __NR_migrate_pages 256 +# elif defined(__ia64__) +# define __NR_migrate_pages 1280 +# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) +# define __NR_migrate_pages 258 +# elif defined(__sparc__) +# define __NR_migrate_pages 302 +# elif defined(__aarch64__) +# define __NR_migrate_pages 238 +# elif defined(__arm__) +# define __NR_migrate_pages 400 +# endif +#endif +static __hwloc_inline long hwloc_migrate_pages(int pid __hwloc_attribute_unused, + unsigned long maxnode __hwloc_attribute_unused, + const unsigned long *oldnodes __hwloc_attribute_unused, + const unsigned long *newnodes __hwloc_attribute_unused) +{ +#if (defined __NR_migrate_pages) && (defined HWLOC_HAVE_SYSCALL) + return syscall(__NR_migrate_pages, pid, maxnode, oldnodes, newnodes); +#else +#warning Couldn't find __NR_migrate_pages syscall number, memory migration won't be supported + errno = ENOSYS; + return -1; +#endif +} + +#ifndef __NR_move_pages +# ifdef __i386__ +# define __NR_move_pages 317 +# elif defined(__x86_64__) +# define __NR_move_pages 279 +# elif defined(__ia64__) +# define __NR_move_pages 1276 +# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) +# define __NR_move_pages 301 +# elif defined(__sparc__) +# define __NR_move_pages 307 +# elif defined(__aarch64__) +# define __NR_move_pages 239 +# elif defined(__arm__) +# define __NR_move_pages 344 +# endif +#endif +static __hwloc_inline long hwloc_move_pages(int pid __hwloc_attribute_unused, + unsigned long count __hwloc_attribute_unused, + void **pages __hwloc_attribute_unused, + const int *nodes __hwloc_attribute_unused, + int *status __hwloc_attribute_unused, + int flags __hwloc_attribute_unused) +{ +#if (defined __NR_move_pages) && (defined HWLOC_HAVE_SYSCALL) + return syscall(__NR_move_pages, pid, count, pages, nodes, status, flags); +#else +#warning Couldn't find __NR_move_pages syscall number, getting memory location won't be supported + errno = ENOSYS; + return -1; +#endif +} + + +/* Added for ntohl() */ +#include + +#ifdef HAVE_OPENAT +/* Use our own filesystem functions if we have openat */ + +static const char * +hwloc_checkat(const char *path, int fsroot_fd) +{ + const char *relative_path = path; + + if (fsroot_fd >= 0) + /* Skip leading slashes. */ + for (; *relative_path == '/'; relative_path++); + + return relative_path; +} + +static int +hwloc_openat(const char *path, int fsroot_fd) +{ + const char *relative_path; + + relative_path = hwloc_checkat(path, fsroot_fd); + if (!relative_path) + return -1; + + return openat (fsroot_fd, relative_path, O_RDONLY); +} + +static FILE * +hwloc_fopenat(const char *path, const char *mode, int fsroot_fd) +{ + int fd; + + if (strcmp(mode, "r")) { + errno = ENOTSUP; + return NULL; + } + + fd = hwloc_openat (path, fsroot_fd); + if (fd == -1) + return NULL; + + return fdopen(fd, mode); +} + +static int +hwloc_accessat(const char *path, int mode, int fsroot_fd) +{ + const char *relative_path; + + relative_path = hwloc_checkat(path, fsroot_fd); + if (!relative_path) + return -1; + + return faccessat(fsroot_fd, relative_path, mode, 0); +} + +static int +hwloc_fstatat(const char *path, struct stat *st, int flags, int fsroot_fd) +{ + const char *relative_path; + + relative_path = hwloc_checkat(path, fsroot_fd); + if (!relative_path) + return -1; + + return fstatat(fsroot_fd, relative_path, st, flags); +} + +static DIR* +hwloc_opendirat(const char *path, int fsroot_fd) +{ + int dir_fd; + const char *relative_path; + + relative_path = hwloc_checkat(path, fsroot_fd); + if (!relative_path) + return NULL; + + dir_fd = openat(fsroot_fd, relative_path, O_RDONLY | O_DIRECTORY); + if (dir_fd < 0) + return NULL; + + return fdopendir(dir_fd); +} + +static int +hwloc_readlinkat(const char *path, char *buf, size_t buflen, int fsroot_fd) +{ + const char *relative_path; + + relative_path = hwloc_checkat(path, fsroot_fd); + if (!relative_path) + return -1; + + return readlinkat(fsroot_fd, relative_path, buf, buflen); +} + +#endif /* HAVE_OPENAT */ + +/* Static inline version of fopen so that we can use openat if we have + it, but still preserve compiler parameter checking */ +static __hwloc_inline int +hwloc_open(const char *p, int d __hwloc_attribute_unused) +{ +#ifdef HAVE_OPENAT + return hwloc_openat(p, d); +#else + return open(p, O_RDONLY); +#endif +} + +static __hwloc_inline FILE * +hwloc_fopen(const char *p, const char *m, int d __hwloc_attribute_unused) +{ +#ifdef HAVE_OPENAT + return hwloc_fopenat(p, m, d); +#else + return fopen(p, m); +#endif +} + +/* Static inline version of access so that we can use openat if we have + it, but still preserve compiler parameter checking */ +static __hwloc_inline int +hwloc_access(const char *p, int m, int d __hwloc_attribute_unused) +{ +#ifdef HAVE_OPENAT + return hwloc_accessat(p, m, d); +#else + return access(p, m); +#endif +} + +static __hwloc_inline int +hwloc_stat(const char *p, struct stat *st, int d __hwloc_attribute_unused) +{ +#ifdef HAVE_OPENAT + return hwloc_fstatat(p, st, 0, d); +#else + return stat(p, st); +#endif +} + +/* Static inline version of opendir so that we can use openat if we have + it, but still preserve compiler parameter checking */ +static __hwloc_inline DIR * +hwloc_opendir(const char *p, int d __hwloc_attribute_unused) +{ +#ifdef HAVE_OPENAT + return hwloc_opendirat(p, d); +#else + return opendir(p); +#endif +} + +static __hwloc_inline int +hwloc_readlink(const char *p, char *l, size_t ll, int d __hwloc_attribute_unused) +{ +#ifdef HAVE_OPENAT + return hwloc_readlinkat(p, l, ll, d); +#else + return readlink(p, l, ll); +#endif +} + + +/***************************************** + ******* Helpers for reading files ******* + *****************************************/ + +/* Read up to length-1 bytes in path and add an ending \0. + * Return read bytes (without counting the ending \0), 0 for empty file, or -1 on error. + */ +static __hwloc_inline ssize_t +hwloc_read_path_by_length(const char *path, char *string, size_t length, int fsroot_fd) +{ + int fd; + ssize_t ret; + + fd = hwloc_open(path, fsroot_fd); + if (fd < 0) + return -1; + + ret = read(fd, string, length-1); /* read -1 to put the ending \0 */ + close(fd); + + if (ret <= 0) + return -1; + + string[ret] = 0; + return ret; +} + +static __hwloc_inline int +hwloc_read_path_as_int(const char *path, int *value, int fsroot_fd) +{ + char string[11]; + if (hwloc_read_path_by_length(path, string, sizeof(string), fsroot_fd) <= 0) + return -1; + *value = atoi(string); + return 0; +} + +static __hwloc_inline int +hwloc_read_path_as_uint(const char *path, unsigned *value, int fsroot_fd) +{ + char string[11]; + if (hwloc_read_path_by_length(path, string, sizeof(string), fsroot_fd) <= 0) + return -1; + *value = (unsigned) strtoul(string, NULL, 10); + return 0; +} + +static __hwloc_inline int +hwloc_read_path_as_uint64(const char *path, uint64_t *value, int fsroot_fd) +{ + char string[22]; + if (hwloc_read_path_by_length(path, string, sizeof(string), fsroot_fd) <= 0) + return -1; + *value = (uint64_t) strtoull(string, NULL, 10); + return 0; +} + +/* Read everything from fd and save it into a newly allocated buffer + * returned in bufferp. Use sizep as a default buffer size, and return + * the actually needed size in sizep. + */ +static __hwloc_inline int +hwloc__read_fd(int fd, char **bufferp, size_t *sizep) +{ + char *buffer; + size_t toread, filesize, totalread; + ssize_t ret; + + toread = filesize = *sizep; + + /* Alloc and read +1 so that we get EOF on 2^n without reading once more */ + buffer = malloc(filesize+1); + if (!buffer) + return -1; + + ret = read(fd, buffer, toread+1); + if (ret < 0) { + free(buffer); + return -1; + } + + totalread = (size_t) ret; + + if (totalread < toread + 1) + /* Normal case, a single read got EOF */ + goto done; + + /* Unexpected case, must extend the buffer and read again. + * Only occurs on first invocation and if the kernel ever uses multiple page for a single mask. + */ + do { + char *tmp; + + toread = filesize; + filesize *= 2; + + tmp = realloc(buffer, filesize+1); + if (!tmp) { + free(buffer); + return -1; + } + buffer = tmp; + + ret = read(fd, buffer+toread+1, toread); + if (ret < 0) { + free(buffer); + return -1; + } + + totalread += ret; + } while ((size_t) ret == toread); + + done: + buffer[totalread] = '\0'; + *bufferp = buffer; + *sizep = filesize; + return 0; +} + +/* kernel cpumaps are composed of an array of 32bits cpumasks */ +#define KERNEL_CPU_MASK_BITS 32 +#define KERNEL_CPU_MAP_LEN (KERNEL_CPU_MASK_BITS/4+2) + +static __hwloc_inline int +hwloc__read_path_as_cpumask(const char *path, hwloc_bitmap_t set, int fsroot_fd) +{ + static size_t _filesize = 0; /* will be dynamically initialized to hwloc_get_pagesize(), and increased later if needed */ + size_t filesize; + unsigned long *maps; + unsigned long map; + int nr_maps = 0; + static int _nr_maps_allocated = 8; /* Only compute the power-of-two above the kernel cpumask size once. + * Actually, it may increase multiple times if first read cpumaps start with zeroes. + */ + int nr_maps_allocated = _nr_maps_allocated; + char *buffer, *tmpbuf; + int fd, err; + int i; + + fd = hwloc_open(path, fsroot_fd); + if (fd < 0) + goto out; + + /* Kernel sysfs files are usually at most one page. 4kB may contain 455 32-bit + * masks (followed by comma), enough for 14k PUs. So allocate a page by default for now. + * + * If we ever need a larger buffer, we'll realloc() the buffer during the first + * invocation of this function so that others directly allocate the right size + * (all cpumask files have the exact same size). + */ + filesize = _filesize; + if (!filesize) + filesize = hwloc_getpagesize(); + err = hwloc__read_fd(fd, &buffer, &filesize); + close(fd); + if (err < 0) + goto out; + /* Only update the static value with the final one, + * to avoid sharing intermediate values that we modify, + * in case there's ever multiple concurrent calls. + */ + _filesize = filesize; + + maps = malloc(nr_maps_allocated * sizeof(*maps)); + if (!maps) + goto out_with_buffer; + + /* reset to zero first */ + hwloc_bitmap_zero(set); + + /* parse the whole mask */ + tmpbuf = buffer; + while (sscanf(tmpbuf, "%lx", &map) == 1) { + /* read one kernel cpu mask and the ending comma */ + if (nr_maps == nr_maps_allocated) { + unsigned long *tmp = realloc(maps, 2*nr_maps_allocated * sizeof(*maps)); + if (!tmp) + goto out_with_maps; + maps = tmp; + nr_maps_allocated *= 2; + } + + tmpbuf = strchr(tmpbuf, ','); + if (!tmpbuf) { + maps[nr_maps++] = map; + break; + } else + tmpbuf++; + + if (!map && !nr_maps) + /* ignore the first map if it's empty */ + continue; + + maps[nr_maps++] = map; + } + + free(buffer); + + /* convert into a set */ +#if KERNEL_CPU_MASK_BITS == HWLOC_BITS_PER_LONG + for(i=0; i _nr_maps_allocated) + _nr_maps_allocated = nr_maps_allocated; + return 0; + + out_with_maps: + free(maps); + out_with_buffer: + free(buffer); + out: + return -1; +} + +static __hwloc_inline hwloc_bitmap_t +hwloc__alloc_read_path_as_cpumask(const char *maskpath, int fsroot_fd) +{ + hwloc_bitmap_t set; + int err; + set = hwloc_bitmap_alloc(); + if (!set) + return NULL; + err = hwloc__read_path_as_cpumask(maskpath, set, fsroot_fd); + if (err < 0) { + hwloc_bitmap_free(set); + return NULL; + } else + return set; +} + +int +hwloc_linux_read_path_as_cpumask(const char *maskpath, hwloc_bitmap_t set) +{ + return hwloc__read_path_as_cpumask(maskpath, set, -1); +} + +/* on failure, the content of set is undefined */ +static __hwloc_inline int +hwloc__read_path_as_cpulist(const char *path, hwloc_bitmap_t set, int fsroot_fd) +{ + /* Kernel sysfs files are usually at most one page. + * But cpulists can be of very different sizes depending on the fragmentation, + * so don't bother remember the actual read size between invocations. + * We don't have many invocations anyway. + */ + size_t filesize = hwloc_getpagesize(); + char *buffer, *current, *comma, *tmp; + int prevlast, nextfirst, nextlast; /* beginning/end of enabled-segments */ + int fd, err; + + fd = hwloc_open(path, fsroot_fd); + if (fd < 0) + return -1; + err = hwloc__read_fd(fd, &buffer, &filesize); + close(fd); + if (err < 0) + return -1; + + hwloc_bitmap_fill(set); + + current = buffer; + prevlast = -1; + + while (1) { + /* save a pointer to the next comma and erase it to simplify things */ + comma = strchr(current, ','); + if (comma) + *comma = '\0'; + + /* find current enabled-segment bounds */ + nextfirst = strtoul(current, &tmp, 0); + if (*tmp == '-') + nextlast = strtoul(tmp+1, NULL, 0); + else + nextlast = nextfirst; + if (prevlast+1 <= nextfirst-1) + hwloc_bitmap_clr_range(set, prevlast+1, nextfirst-1); + + /* switch to next enabled-segment */ + prevlast = nextlast; + if (!comma) + break; + current = comma+1; + } + + hwloc_bitmap_clr_range(set, prevlast+1, -1); + free(buffer); + return 0; +} + +/* on failure, the content of set is undefined */ +static __hwloc_inline hwloc_bitmap_t +hwloc__alloc_read_path_as_cpulist(const char *maskpath, int fsroot_fd) +{ + hwloc_bitmap_t set; + int err; + set = hwloc_bitmap_alloc_full(); + if (!set) + return NULL; + err = hwloc__read_path_as_cpulist(maskpath, set, fsroot_fd); + if (err < 0) { + hwloc_bitmap_free(set); + return NULL; + } else + return set; +} + + +/***************************** + ******* CpuBind Hooks ******* + *****************************/ + +int +hwloc_linux_set_tid_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid __hwloc_attribute_unused, hwloc_const_bitmap_t hwloc_set __hwloc_attribute_unused) +{ + /* The resulting binding is always strict */ + +#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) + cpu_set_t *plinux_set; + unsigned cpu; + int last; + size_t setsize; + int err; + + last = hwloc_bitmap_last(hwloc_set); + if (last == -1) { + errno = EINVAL; + return -1; + } + + setsize = CPU_ALLOC_SIZE(last+1); + plinux_set = CPU_ALLOC(last+1); + + CPU_ZERO_S(setsize, plinux_set); + hwloc_bitmap_foreach_begin(cpu, hwloc_set) + CPU_SET_S(cpu, setsize, plinux_set); + hwloc_bitmap_foreach_end(); + + err = sched_setaffinity(tid, setsize, plinux_set); + + CPU_FREE(plinux_set); + return err; +#elif defined(HWLOC_HAVE_CPU_SET) + cpu_set_t linux_set; + unsigned cpu; + + CPU_ZERO(&linux_set); + hwloc_bitmap_foreach_begin(cpu, hwloc_set) + CPU_SET(cpu, &linux_set); + hwloc_bitmap_foreach_end(); + +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + return sched_setaffinity(tid, &linux_set); +#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + return sched_setaffinity(tid, sizeof(linux_set), &linux_set); +#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ +#elif defined(HWLOC_HAVE_SYSCALL) + unsigned long mask = hwloc_bitmap_to_ulong(hwloc_set); + +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + return sched_setaffinity(tid, (void*) &mask); +#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + return sched_setaffinity(tid, sizeof(mask), (void*) &mask); +#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ +#else /* !SYSCALL */ + errno = ENOSYS; + return -1; +#endif /* !SYSCALL */ +} + +#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) +/* + * On some kernels, sched_getaffinity requires the output size to be larger + * than the kernel cpu_set size (defined by CONFIG_NR_CPUS). + * Try sched_affinity on ourself until we find a nr_cpus value that makes + * the kernel happy. + */ +static int +hwloc_linux_find_kernel_nr_cpus(hwloc_topology_t topology) +{ + static int _nr_cpus = -1; + int nr_cpus = _nr_cpus; + hwloc_bitmap_t possible_bitmap; + + if (nr_cpus != -1) + /* already computed */ + return nr_cpus; + + if (topology->levels[0][0]->complete_cpuset) + /* start with a nr_cpus that may contain the whole topology */ + nr_cpus = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset) + 1; + if (nr_cpus <= 0) + /* start from scratch, the topology isn't ready yet (complete_cpuset is missing (-1) or empty (0))*/ + nr_cpus = 1; + + /* reading /sys/devices/system/cpu/kernel_max would be easier (single value to parse instead of a list), + * but its value may be way too large (5119 on CentOS7). + * /sys/devices/system/cpu/possible is better because it matches the current hardware. + */ + + possible_bitmap = hwloc__alloc_read_path_as_cpulist("/sys/devices/system/cpu/possible", -1); /* binding only supported in real fsroot, no need for data->root_fd */ + if (possible_bitmap) { + int max_possible = hwloc_bitmap_last(possible_bitmap); + hwloc_debug_bitmap("possible CPUs are %s\n", possible_bitmap); + if (nr_cpus < max_possible + 1) + nr_cpus = max_possible + 1; + hwloc_bitmap_free(possible_bitmap); + } + + while (1) { + cpu_set_t *set = CPU_ALLOC(nr_cpus); + size_t setsize = CPU_ALLOC_SIZE(nr_cpus); + int err = sched_getaffinity(0, setsize, set); /* always works, unless setsize is too small */ + CPU_FREE(set); + nr_cpus = setsize * 8; /* that's the value that was actually tested */ + if (!err) + /* Found it. Only update the static value with the final one, + * to avoid sharing intermediate values that we modify, + * in case there's ever multiple concurrent calls. + */ + return _nr_cpus = nr_cpus; + nr_cpus *= 2; + } +} +#endif + +int +hwloc_linux_get_tid_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid __hwloc_attribute_unused, hwloc_bitmap_t hwloc_set __hwloc_attribute_unused) +{ + int err __hwloc_attribute_unused; + +#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) + cpu_set_t *plinux_set; + unsigned cpu; + int last; + size_t setsize; + int kernel_nr_cpus; + + /* find the kernel nr_cpus so as to use a large enough cpu_set size */ + kernel_nr_cpus = hwloc_linux_find_kernel_nr_cpus(topology); + setsize = CPU_ALLOC_SIZE(kernel_nr_cpus); + plinux_set = CPU_ALLOC(kernel_nr_cpus); + + err = sched_getaffinity(tid, setsize, plinux_set); + + if (err < 0) { + CPU_FREE(plinux_set); + return -1; + } + + last = -1; + if (topology->levels[0][0]->complete_cpuset) + last = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset); + if (last == -1) + /* round the maximal support number, the topology isn't ready yet (complete_cpuset is missing or empty)*/ + last = kernel_nr_cpus-1; + + hwloc_bitmap_zero(hwloc_set); + for(cpu=0; cpu<=(unsigned) last; cpu++) + if (CPU_ISSET_S(cpu, setsize, plinux_set)) + hwloc_bitmap_set(hwloc_set, cpu); + + CPU_FREE(plinux_set); +#elif defined(HWLOC_HAVE_CPU_SET) + cpu_set_t linux_set; + unsigned cpu; + +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + err = sched_getaffinity(tid, &linux_set); +#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + err = sched_getaffinity(tid, sizeof(linux_set), &linux_set); +#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + if (err < 0) + return -1; + + hwloc_bitmap_zero(hwloc_set); + for(cpu=0; cpud_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + tids[nr_tids++] = atoi(dirent->d_name); + } + + *nr_tidsp = nr_tids; + *tidsp = tids; + return 0; +} + +/* Per-tid callbacks */ +typedef int (*hwloc_linux_foreach_proc_tid_cb_t)(hwloc_topology_t topology, pid_t tid, void *data, int idx); + +static int +hwloc_linux_foreach_proc_tid(hwloc_topology_t topology, + pid_t pid, hwloc_linux_foreach_proc_tid_cb_t cb, + void *data) +{ + char taskdir_path[128]; + DIR *taskdir; + pid_t *tids, *newtids; + unsigned i, nr, newnr, failed = 0, failed_errno = 0; + unsigned retrynr = 0; + int err; + + if (pid) + snprintf(taskdir_path, sizeof(taskdir_path), "/proc/%u/task", (unsigned) pid); + else + snprintf(taskdir_path, sizeof(taskdir_path), "/proc/self/task"); + + taskdir = opendir(taskdir_path); + if (!taskdir) { + if (errno == ENOENT) + errno = EINVAL; + err = -1; + goto out; + } + + /* read the current list of threads */ + err = hwloc_linux_get_proc_tids(taskdir, &nr, &tids); + if (err < 0) + goto out_with_dir; + + retry: + /* apply the callback to all threads */ + failed=0; + for(i=0; i 10) { + /* we tried 10 times, it didn't work, the application is probably creating/destroying many threads, stop trying */ + errno = EAGAIN; + err = -1; + goto out_with_tids; + } + goto retry; + } else { + free(newtids); + } + + /* if all threads failed, return the last errno. */ + if (failed) { + err = -1; + errno = failed_errno; + goto out_with_tids; + } + + err = 0; + out_with_tids: + free(tids); + out_with_dir: + closedir(taskdir); + out: + return err; +} + +/* Per-tid proc_set_cpubind callback and caller. + * Callback data is a hwloc_bitmap_t. */ +static int +hwloc_linux_foreach_proc_tid_set_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx __hwloc_attribute_unused) +{ + return hwloc_linux_set_tid_cpubind(topology, tid, (hwloc_bitmap_t) data); +} + +static int +hwloc_linux_set_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + return hwloc_linux_foreach_proc_tid(topology, pid, + hwloc_linux_foreach_proc_tid_set_cpubind_cb, + (void*) hwloc_set); +} + +/* Per-tid proc_get_cpubind callback data, callback function and caller */ +struct hwloc_linux_foreach_proc_tid_get_cpubind_cb_data_s { + hwloc_bitmap_t cpuset; + hwloc_bitmap_t tidset; + int flags; +}; + +static int +hwloc_linux_foreach_proc_tid_get_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *_data, int idx) +{ + struct hwloc_linux_foreach_proc_tid_get_cpubind_cb_data_s *data = _data; + hwloc_bitmap_t cpuset = data->cpuset; + hwloc_bitmap_t tidset = data->tidset; + int flags = data->flags; + + if (hwloc_linux_get_tid_cpubind(topology, tid, tidset)) + return -1; + + /* reset the cpuset on first iteration */ + if (!idx) + hwloc_bitmap_zero(cpuset); + + if (flags & HWLOC_CPUBIND_STRICT) { + /* if STRICT, we want all threads to have the same binding */ + if (!idx) { + /* this is the first thread, copy its binding */ + hwloc_bitmap_copy(cpuset, tidset); + } else if (!hwloc_bitmap_isequal(cpuset, tidset)) { + /* this is not the first thread, and it's binding is different */ + errno = EXDEV; + return -1; + } + } else { + /* if not STRICT, just OR all thread bindings */ + hwloc_bitmap_or(cpuset, cpuset, tidset); + } + return 0; +} + +static int +hwloc_linux_get_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags) +{ + struct hwloc_linux_foreach_proc_tid_get_cpubind_cb_data_s data; + hwloc_bitmap_t tidset = hwloc_bitmap_alloc(); + int ret; + + data.cpuset = hwloc_set; + data.tidset = tidset; + data.flags = flags; + ret = hwloc_linux_foreach_proc_tid(topology, pid, + hwloc_linux_foreach_proc_tid_get_cpubind_cb, + (void*) &data); + hwloc_bitmap_free(tidset); + return ret; +} + +static int +hwloc_linux_set_proc_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) +{ + if (pid == 0) + pid = topology->pid; + if (flags & HWLOC_CPUBIND_THREAD) + return hwloc_linux_set_tid_cpubind(topology, pid, hwloc_set); + else + return hwloc_linux_set_pid_cpubind(topology, pid, hwloc_set, flags); +} + +static int +hwloc_linux_get_proc_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags) +{ + if (pid == 0) + pid = topology->pid; + if (flags & HWLOC_CPUBIND_THREAD) + return hwloc_linux_get_tid_cpubind(topology, pid, hwloc_set); + else + return hwloc_linux_get_pid_cpubind(topology, pid, hwloc_set, flags); +} + +static int +hwloc_linux_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) +{ + return hwloc_linux_set_pid_cpubind(topology, topology->pid, hwloc_set, flags); +} + +static int +hwloc_linux_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) +{ + return hwloc_linux_get_pid_cpubind(topology, topology->pid, hwloc_set, flags); +} + +static int +hwloc_linux_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + if (topology->pid) { + errno = ENOSYS; + return -1; + } + return hwloc_linux_set_tid_cpubind(topology, 0, hwloc_set); +} + +static int +hwloc_linux_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + if (topology->pid) { + errno = ENOSYS; + return -1; + } + return hwloc_linux_get_tid_cpubind(topology, 0, hwloc_set); +} + +#if HAVE_DECL_PTHREAD_SETAFFINITY_NP +#pragma weak pthread_setaffinity_np +#pragma weak pthread_self + +static int +hwloc_linux_set_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + int err; + + if (topology->pid) { + errno = ENOSYS; + return -1; + } + + if (!pthread_self) { + /* ?! Application uses set_thread_cpubind, but doesn't link against libpthread ?! */ + errno = ENOSYS; + return -1; + } + if (tid == pthread_self()) + return hwloc_linux_set_tid_cpubind(topology, 0, hwloc_set); + + if (!pthread_setaffinity_np) { + errno = ENOSYS; + return -1; + } + +#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) + /* Use a separate block so that we can define specific variable + types here */ + { + cpu_set_t *plinux_set; + unsigned cpu; + int last; + size_t setsize; + + last = hwloc_bitmap_last(hwloc_set); + if (last == -1) { + errno = EINVAL; + return -1; + } + + setsize = CPU_ALLOC_SIZE(last+1); + plinux_set = CPU_ALLOC(last+1); + + CPU_ZERO_S(setsize, plinux_set); + hwloc_bitmap_foreach_begin(cpu, hwloc_set) + CPU_SET_S(cpu, setsize, plinux_set); + hwloc_bitmap_foreach_end(); + + err = pthread_setaffinity_np(tid, setsize, plinux_set); + + CPU_FREE(plinux_set); + } +#elif defined(HWLOC_HAVE_CPU_SET) + /* Use a separate block so that we can define specific variable + types here */ + { + cpu_set_t linux_set; + unsigned cpu; + + CPU_ZERO(&linux_set); + hwloc_bitmap_foreach_begin(cpu, hwloc_set) + CPU_SET(cpu, &linux_set); + hwloc_bitmap_foreach_end(); + +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + err = pthread_setaffinity_np(tid, &linux_set); +#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + err = pthread_setaffinity_np(tid, sizeof(linux_set), &linux_set); +#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + } +#else /* CPU_SET */ + /* Use a separate block so that we can define specific variable + types here */ + { + unsigned long mask = hwloc_bitmap_to_ulong(hwloc_set); + +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + err = pthread_setaffinity_np(tid, (void*) &mask); +#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + err = pthread_setaffinity_np(tid, sizeof(mask), (void*) &mask); +#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + } +#endif /* CPU_SET */ + + if (err) { + errno = err; + return -1; + } + return 0; +} +#endif /* HAVE_DECL_PTHREAD_SETAFFINITY_NP */ + +#if HAVE_DECL_PTHREAD_GETAFFINITY_NP +#pragma weak pthread_getaffinity_np +#pragma weak pthread_self + +static int +hwloc_linux_get_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + int err; + + if (topology->pid) { + errno = ENOSYS; + return -1; + } + + if (!pthread_self) { + /* ?! Application uses set_thread_cpubind, but doesn't link against libpthread ?! */ + errno = ENOSYS; + return -1; + } + if (tid == pthread_self()) + return hwloc_linux_get_tid_cpubind(topology, 0, hwloc_set); + + if (!pthread_getaffinity_np) { + errno = ENOSYS; + return -1; + } + +#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) + /* Use a separate block so that we can define specific variable + types here */ + { + cpu_set_t *plinux_set; + unsigned cpu; + int last; + size_t setsize; + + last = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset); + assert (last != -1); + + setsize = CPU_ALLOC_SIZE(last+1); + plinux_set = CPU_ALLOC(last+1); + + err = pthread_getaffinity_np(tid, setsize, plinux_set); + if (err) { + CPU_FREE(plinux_set); + errno = err; + return -1; + } + + hwloc_bitmap_zero(hwloc_set); + for(cpu=0; cpu<=(unsigned) last; cpu++) + if (CPU_ISSET_S(cpu, setsize, plinux_set)) + hwloc_bitmap_set(hwloc_set, cpu); + + CPU_FREE(plinux_set); + } +#elif defined(HWLOC_HAVE_CPU_SET) + /* Use a separate block so that we can define specific variable + types here */ + { + cpu_set_t linux_set; + unsigned cpu; + +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + err = pthread_getaffinity_np(tid, &linux_set); +#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + err = pthread_getaffinity_np(tid, sizeof(linux_set), &linux_set); +#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ + if (err) { + errno = err; + return -1; + } + + hwloc_bitmap_zero(hwloc_set); + for(cpu=0; cpucpuset; + hwloc_bitmap_t tidset = data->tidset; + + if (hwloc_linux_get_tid_last_cpu_location(topology, tid, tidset)) + return -1; + + /* reset the cpuset on first iteration */ + if (!idx) + hwloc_bitmap_zero(cpuset); + + hwloc_bitmap_or(cpuset, cpuset, tidset); + return 0; +} + +static int +hwloc_linux_get_pid_last_cpu_location(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + struct hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb_data_s data; + hwloc_bitmap_t tidset = hwloc_bitmap_alloc(); + int ret; + + data.cpuset = hwloc_set; + data.tidset = tidset; + ret = hwloc_linux_foreach_proc_tid(topology, pid, + hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb, + &data); + hwloc_bitmap_free(tidset); + return ret; +} + +static int +hwloc_linux_get_proc_last_cpu_location(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags) +{ + if (pid == 0) + pid = topology->pid; + if (flags & HWLOC_CPUBIND_THREAD) + return hwloc_linux_get_tid_last_cpu_location(topology, pid, hwloc_set); + else + return hwloc_linux_get_pid_last_cpu_location(topology, pid, hwloc_set, flags); +} + +static int +hwloc_linux_get_thisproc_last_cpu_location(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) +{ + return hwloc_linux_get_pid_last_cpu_location(topology, topology->pid, hwloc_set, flags); +} + +static int +hwloc_linux_get_thisthread_last_cpu_location(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) +{ + if (topology->pid) { + errno = ENOSYS; + return -1; + } + +#if HAVE_DECL_SCHED_GETCPU + { + int pu = sched_getcpu(); + if (pu >= 0) { + hwloc_bitmap_only(hwloc_set, pu); + return 0; + } + } +#endif + + return hwloc_linux_get_tid_last_cpu_location(topology, 0, hwloc_set); +} + + + +/*************************** + ****** Membind hooks ****** + ***************************/ + +static int +hwloc_linux_membind_policy_from_hwloc(int *linuxpolicy, hwloc_membind_policy_t policy, int flags) +{ + switch (policy) { + case HWLOC_MEMBIND_DEFAULT: + *linuxpolicy = MPOL_DEFAULT; + break; + case HWLOC_MEMBIND_FIRSTTOUCH: + *linuxpolicy = MPOL_LOCAL; + break; + case HWLOC_MEMBIND_BIND: + if (flags & HWLOC_MEMBIND_STRICT) + *linuxpolicy = MPOL_BIND; + else + *linuxpolicy = MPOL_PREFERRED_MANY; /* will be converted to MPOL_PREFERRED by the caller if not supported */ + break; + case HWLOC_MEMBIND_INTERLEAVE: + *linuxpolicy = MPOL_INTERLEAVE; + break; + /* TODO: next-touch when (if?) patch applied upstream */ + default: + errno = ENOSYS; + return -1; + } + return 0; +} + +static int +hwloc_linux_membind_mask_from_nodeset(hwloc_topology_t topology __hwloc_attribute_unused, + hwloc_const_nodeset_t nodeset, + unsigned *max_os_index_p, unsigned long **linuxmaskp) +{ + unsigned max_os_index = 0; /* highest os_index + 1 */ + unsigned long *linuxmask; + unsigned i; + hwloc_nodeset_t linux_nodeset = NULL; + + if (hwloc_bitmap_isfull(nodeset)) { + linux_nodeset = hwloc_bitmap_alloc(); + hwloc_bitmap_only(linux_nodeset, 0); + nodeset = linux_nodeset; + } + + max_os_index = hwloc_bitmap_last(nodeset); + if (max_os_index == (unsigned) -1) + max_os_index = 0; + /* add 1 to convert the last os_index into a max_os_index, + * and round up to the nearest multiple of BITS_PER_LONG */ + max_os_index = (max_os_index + 1 + HWLOC_BITS_PER_LONG - 1) & ~(HWLOC_BITS_PER_LONG - 1); + + linuxmask = calloc(max_os_index/HWLOC_BITS_PER_LONG, sizeof(unsigned long)); + if (!linuxmask) { + hwloc_bitmap_free(linux_nodeset); + errno = ENOMEM; + return -1; + } + + for(i=0; iroot_fd */ + if (possible_bitmap) { + int max_possible = hwloc_bitmap_last(possible_bitmap); + hwloc_debug_bitmap("possible NUMA nodes are %s\n", possible_bitmap); + if (max_numnodes < max_possible + 1) + max_numnodes = max_possible + 1; + hwloc_bitmap_free(possible_bitmap); + } + + while (1) { + unsigned long *mask; + int err; + mask = malloc(max_numnodes / HWLOC_BITS_PER_LONG * sizeof(*mask)); + if (!mask) + /* we can't return anything sane, assume the default size will work */ + return _max_numnodes = max_numnodes; + + err = hwloc_get_mempolicy(&linuxpolicy, mask, max_numnodes, 0, 0); + free(mask); + if (!err || errno != EINVAL) + /* Found it. Only update the static value with the final one, + * to avoid sharing intermediate values that we modify, + * in case there's ever multiple concurrent calls. + */ + return _max_numnodes = max_numnodes; + max_numnodes *= 2; + } +} + +static int +hwloc_linux_membind_policy_to_hwloc(int linuxpolicy, hwloc_membind_policy_t *policy) +{ + switch (linuxpolicy) { + case MPOL_DEFAULT: + case MPOL_LOCAL: /* converted from MPOL_PREFERRED + empty nodeset by the caller */ + *policy = HWLOC_MEMBIND_FIRSTTOUCH; + return 0; + case MPOL_PREFERRED: + case MPOL_PREFERRED_MANY: + case MPOL_BIND: + *policy = HWLOC_MEMBIND_BIND; + return 0; + case MPOL_INTERLEAVE: + *policy = HWLOC_MEMBIND_INTERLEAVE; + return 0; + default: + errno = EINVAL; + return -1; + } +} + +static int hwloc_linux_mask_is_empty(unsigned max_os_index, unsigned long *linuxmask) +{ + unsigned i; + for(i=0; i= 0) + hwloc_bitmap_set(nodeset, status[i]); + ret = 0; /* not really useful since move_pages never returns > 0 */ + + out_with_pages: + free(pages); + free(status); + return ret; +} + +static void hwloc_linux__get_allowed_resources(hwloc_topology_t topology, const char *root_path, int root_fd, char **cpuset_namep); + +static int hwloc_linux_get_allowed_resources_hook(hwloc_topology_t topology) +{ + const char *fsroot_path; + char *cpuset_name = NULL; + int root_fd = -1; + + fsroot_path = getenv("HWLOC_FSROOT"); + if (!fsroot_path) + fsroot_path = "/"; + + if (strcmp(fsroot_path, "/")) { +#ifdef HAVE_OPENAT + root_fd = open(fsroot_path, O_RDONLY | O_DIRECTORY); + if (root_fd < 0) + goto out; +#else + errno = ENOSYS; + goto out; +#endif + } + + /* we could also error-out if the current topology doesn't actually match the system, + * at least for PUs and NUMA nodes. But it would increase the overhead of loading XMLs. + * + * Just trust the user when he sets THISSYSTEM=1. It enables hacky + * tests such as restricting random XML or synthetic to the current + * machine (uses the default cgroup). + */ + + hwloc_linux__get_allowed_resources(topology, fsroot_path, root_fd, &cpuset_name); + if (cpuset_name) { + hwloc__add_info_nodup(&topology->levels[0][0]->infos, &topology->levels[0][0]->infos_count, + "LinuxCgroup", cpuset_name, 1 /* replace */); + free(cpuset_name); + } + if (root_fd != -1) + close(root_fd); + + out: + return -1; +} + +void +hwloc_set_linuxfs_hooks(struct hwloc_binding_hooks *hooks, + struct hwloc_topology_support *support) +{ + hooks->set_thisthread_cpubind = hwloc_linux_set_thisthread_cpubind; + hooks->get_thisthread_cpubind = hwloc_linux_get_thisthread_cpubind; + hooks->set_thisproc_cpubind = hwloc_linux_set_thisproc_cpubind; + hooks->get_thisproc_cpubind = hwloc_linux_get_thisproc_cpubind; + hooks->set_proc_cpubind = hwloc_linux_set_proc_cpubind; + hooks->get_proc_cpubind = hwloc_linux_get_proc_cpubind; +#if HAVE_DECL_PTHREAD_SETAFFINITY_NP + hooks->set_thread_cpubind = hwloc_linux_set_thread_cpubind; +#endif /* HAVE_DECL_PTHREAD_SETAFFINITY_NP */ +#if HAVE_DECL_PTHREAD_GETAFFINITY_NP + hooks->get_thread_cpubind = hwloc_linux_get_thread_cpubind; +#endif /* HAVE_DECL_PTHREAD_GETAFFINITY_NP */ + hooks->get_thisthread_last_cpu_location = hwloc_linux_get_thisthread_last_cpu_location; + hooks->get_thisproc_last_cpu_location = hwloc_linux_get_thisproc_last_cpu_location; + hooks->get_proc_last_cpu_location = hwloc_linux_get_proc_last_cpu_location; +#ifndef ANDROID /* get_mempolicy crashes on some Android */ + hooks->set_thisthread_membind = hwloc_linux_set_thisthread_membind; + hooks->get_thisthread_membind = hwloc_linux_get_thisthread_membind; + hooks->get_area_membind = hwloc_linux_get_area_membind; + hooks->set_area_membind = hwloc_linux_set_area_membind; + hooks->get_area_memlocation = hwloc_linux_get_area_memlocation; + hooks->alloc_membind = hwloc_linux_alloc_membind; + hooks->alloc = hwloc_alloc_mmap; + hooks->free_membind = hwloc_free_mmap; + support->membind->firsttouch_membind = 1; + support->membind->bind_membind = 1; + support->membind->interleave_membind = 1; + support->membind->migrate_membind = 1; +#endif + hooks->get_allowed_resources = hwloc_linux_get_allowed_resources_hook; + + /* The get_allowed_resources() hook also works in the !thissystem case + * (it just reads fsroot files) but hooks are only setup if thissystem. + * Not an issue because this hook isn't used unless THISSYSTEM_ALLOWED_RESOURCES + * which also requires THISSYSTEM which means this functions is called. + */ +} + + +/******************************************* + *** Misc Helpers for Topology Discovery *** + *******************************************/ + +/* cpuinfo array */ +struct hwloc_linux_cpuinfo_proc { + /* set during hwloc_linux_parse_cpuinfo */ + unsigned long Pproc; + + /* custom info, set during hwloc_linux_parse_cpuinfo */ + struct hwloc_info_s *infos; + unsigned infos_count; +}; + +enum hwloc_linux_cgroup_type_e { + HWLOC_LINUX_CGROUP2, + HWLOC_LINUX_CGROUP1, + HWLOC_LINUX_CPUSET +}; + +static void +hwloc_find_linux_cgroup_mntpnt(enum hwloc_linux_cgroup_type_e *cgtype, char **mntpnt, const char *root_path, int fsroot_fd) +{ + char *mount_path; + struct mntent mntent; + char *buf; + FILE *fd; + int err; + size_t bufsize; + + *mntpnt = NULL; + + if (root_path) { + /* setmntent() doesn't support openat(), so use the root_path directly */ + err = asprintf(&mount_path, "%s/proc/mounts", root_path); + if (err < 0) + return; + fd = setmntent(mount_path, "r"); + free(mount_path); + } else { + fd = setmntent("/proc/mounts", "r"); + } + if (!fd) + return; + + /* getmntent_r() doesn't actually report an error when the buffer + * is too small. It just silently truncates things. So we can't + * dynamically resize things. + * + * Linux limits mount type, string, and options to one page each. + * getmntent() limits the line size to 4kB. + * so use 4*pagesize to be far above both. + */ + bufsize = hwloc_getpagesize()*4; + buf = malloc(bufsize); + if (!buf) { + endmntent(fd); + return; + } + + while (getmntent_r(fd, &mntent, buf, bufsize)) { + + if (!strcmp(mntent.mnt_type, "cgroup2")) { + char ctrls[1024]; /* there are about ten controllers with 10-char names */ + char ctrlpath[256]; + hwloc_debug("Found cgroup2 mount point on %s\n", mntent.mnt_dir); + /* read controllers */ + snprintf(ctrlpath, sizeof(ctrlpath), "%s/cgroup.controllers", mntent.mnt_dir); + err = hwloc_read_path_by_length(ctrlpath, ctrls, sizeof(ctrls), fsroot_fd); + if (err > 0) { + /* look for cpuset separated by spaces */ + char *ctrl, *_ctrls = ctrls; + char *tmp; + int cpuset_ctrl = 0; + tmp = strchr(ctrls, '\n'); + if (tmp) + *tmp = '\0'; + hwloc_debug("Looking for `cpuset' controller in list `%s'\n", ctrls); + while ((ctrl = strsep(&_ctrls, " ")) != NULL) { + if (!strcmp(ctrl, "cpuset")) { + cpuset_ctrl = 1; + break; + } + } + if (cpuset_ctrl) { + hwloc_debug("Found cgroup2/cpuset mount point on %s\n", mntent.mnt_dir); + *cgtype = HWLOC_LINUX_CGROUP2; + *mntpnt = strdup(mntent.mnt_dir); + break; + } + } else { + hwloc_debug("Failed to read cgroup2 controllers from `%s'\n", ctrlpath); + } + + } else if (!strcmp(mntent.mnt_type, "cpuset")) { + hwloc_debug("Found cpuset mount point on %s\n", mntent.mnt_dir); + *cgtype = HWLOC_LINUX_CPUSET; + *mntpnt = strdup(mntent.mnt_dir); + break; + + } else if (!strcmp(mntent.mnt_type, "cgroup")) { + /* found a cgroup mntpnt */ + char *opt, *opts = mntent.mnt_opts; + int cpuset_opt = 0; + int noprefix_opt = 0; + /* look at options */ + while ((opt = strsep(&opts, ",")) != NULL) { + if (!strcmp(opt, "cpuset")) + cpuset_opt = 1; + else if (!strcmp(opt, "noprefix")) + noprefix_opt = 1; + } + if (!cpuset_opt) + continue; + if (noprefix_opt) { + hwloc_debug("Found cgroup1 emulating a cpuset mount point on %s\n", mntent.mnt_dir); + *cgtype = HWLOC_LINUX_CPUSET; + *mntpnt = strdup(mntent.mnt_dir); + break; + } else { + hwloc_debug("Found cgroup1/cpuset mount point on %s\n", mntent.mnt_dir); + *cgtype = HWLOC_LINUX_CGROUP1; + *mntpnt = strdup(mntent.mnt_dir); + break; + } + } + } + + endmntent(fd); + free(buf); +} + +/* + * Linux cpusets may be managed directly or through cgroup. + * If cgroup is used, tasks get a /proc/pid/cgroup which may contain a + * single line %d:cpuset:. If cpuset are used they get /proc/pid/cpuset + * containing . + */ +static char * +hwloc_read_linux_cgroup_name(int fsroot_fd, hwloc_pid_t pid) +{ +#define CPUSET_NAME_LEN 128 + char cpuset_name[CPUSET_NAME_LEN]; + FILE *file; + int err; + char *tmp; + + /* try to read from /proc/XXXX/cpuset */ + if (!pid) + err = hwloc_read_path_by_length("/proc/self/cpuset", cpuset_name, sizeof(cpuset_name), fsroot_fd); + else { + char path[] = "/proc/XXXXXXXXXXX/cpuset"; + snprintf(path, sizeof(path), "/proc/%d/cpuset", pid); + err = hwloc_read_path_by_length(path, cpuset_name, sizeof(cpuset_name), fsroot_fd); + } + if (err > 0) { + /* found a cpuset, return the name */ + tmp = strchr(cpuset_name, '\n'); + if (tmp) + *tmp = '\0'; + hwloc_debug("Found cgroup name `%s'\n", cpuset_name); + return strdup(cpuset_name); + } + + /* try to read from /proc/XXXX/cgroup */ + if (!pid) + file = hwloc_fopen("/proc/self/cgroup", "r", fsroot_fd); + else { + char path[] = "/proc/XXXXXXXXXXX/cgroup"; + snprintf(path, sizeof(path), "/proc/%d/cgroup", pid); + file = hwloc_fopen(path, "r", fsroot_fd); + } + if (file) { + /* find a cpuset line */ +#define CGROUP_LINE_LEN 256 + char line[CGROUP_LINE_LEN]; + while (fgets(line, sizeof(line), file)) { + char *end, *path, *colon; + colon = strchr(line, ':'); + if (!colon) + continue; + if (!strncmp(colon, ":cpuset:", 8)) /* cgroup v1 cpuset-specific hierarchy */ + path = colon + 8; + else if (!strncmp(colon, "::", 2)) /* cgroup v2 unified hierarchy */ + path = colon + 2; + else + continue; + + /* found a cgroup with cpusets, return the name */ + fclose(file); + end = strchr(path, '\n'); + if (end) + *end = '\0'; + hwloc_debug("Found cgroup-cpuset %s\n", path); + return strdup(path); + } + fclose(file); + } + + /* found nothing */ + hwloc_debug("%s", "No cgroup or cpuset found\n"); + return NULL; +} + +static void +hwloc_admin_disable_set_from_cgroup(int root_fd, + enum hwloc_linux_cgroup_type_e cgtype, + const char *mntpnt, + const char *cpuset_name, + const char *attr_name, + hwloc_bitmap_t admin_enabled_set) +{ +#define CPUSET_FILENAME_LEN 256 + char cpuset_filename[CPUSET_FILENAME_LEN]; + int err; + + switch (cgtype) { + case HWLOC_LINUX_CGROUP2: + /* try to read the cpuset from cgroup2. use the last "effective" mask to get a AND of parent masks */ + snprintf(cpuset_filename, CPUSET_FILENAME_LEN, "%s%s/cpuset.%s.effective", mntpnt, cpuset_name, attr_name); + hwloc_debug("Trying to read cgroup2 file <%s>\n", cpuset_filename); + break; + case HWLOC_LINUX_CGROUP1: + /* try to read the cpuset from cgroup1. no need to use "effective_cpus/mems" since we'll remove offline CPUs in the core */ + snprintf(cpuset_filename, CPUSET_FILENAME_LEN, "%s%s/cpuset.%s", mntpnt, cpuset_name, attr_name); + hwloc_debug("Trying to read cgroup1 file <%s>\n", cpuset_filename); + break; + case HWLOC_LINUX_CPUSET: + /* try to read the cpuset directly */ + snprintf(cpuset_filename, CPUSET_FILENAME_LEN, "%s%s/%s", mntpnt, cpuset_name, attr_name); + hwloc_debug("Trying to read cpuset file <%s>\n", cpuset_filename); + break; + } + + err = hwloc__read_path_as_cpulist(cpuset_filename, admin_enabled_set, root_fd); + if (err < 0) { + hwloc_debug("failed to read cpuset '%s' attribute '%s'\n", cpuset_name, attr_name); + hwloc_bitmap_fill(admin_enabled_set); + return; + } + hwloc_debug_bitmap("cpuset includes %s\n", admin_enabled_set); +} + +static void +hwloc_parse_meminfo_info(struct hwloc_linux_backend_data_s *data, + const char *path, + uint64_t *local_memory) +{ + char *tmp; + char buffer[4096]; + unsigned long long number; + + if (hwloc_read_path_by_length(path, buffer, sizeof(buffer), data->root_fd) <= 0) + return; + + tmp = strstr(buffer, "MemTotal: "); /* MemTotal: %llu kB */ + if (tmp) { + number = strtoull(tmp+10, NULL, 10); + *local_memory = number << 10; + } +} + +#define SYSFS_NUMA_NODE_PATH_LEN 128 + +static void +hwloc_parse_hugepages_info(struct hwloc_linux_backend_data_s *data, + const char *dirpath, + struct hwloc_numanode_attr_s *memory, + unsigned allocated_page_types, + uint64_t *remaining_local_memory) +{ + DIR *dir; + struct dirent *dirent; + unsigned long index_ = 1; /* slot 0 is for normal pages */ + char line[64]; + char path[SYSFS_NUMA_NODE_PATH_LEN]; + + dir = hwloc_opendir(dirpath, data->root_fd); + if (dir) { + while ((dirent = readdir(dir)) != NULL) { + int err; + if (strncmp(dirent->d_name, "hugepages-", 10)) + continue; + if (index_ >= allocated_page_types) { + /* we must increase the page_types array */ + struct hwloc_memory_page_type_s *tmp = realloc(memory->page_types, allocated_page_types * 2 * sizeof(*tmp)); + if (!tmp) + break; + memory->page_types = tmp; + allocated_page_types *= 2; + } + memory->page_types[index_].size = strtoul(dirent->d_name+10, NULL, 0) * 1024ULL; + err = snprintf(path, sizeof(path), "%s/%s/nr_hugepages", dirpath, dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, line, sizeof(line), data->root_fd) > 0) { + /* these are the actual total amount of huge pages */ + memory->page_types[index_].count = strtoull(line, NULL, 0); + *remaining_local_memory -= memory->page_types[index_].count * memory->page_types[index_].size; + index_++; + } + } + closedir(dir); + memory->page_types_len = index_; + } +} + +static void +hwloc_get_machine_meminfo(struct hwloc_linux_backend_data_s *data, + struct hwloc_numanode_attr_s *memory) +{ + struct stat st; + int has_sysfs_hugepages = 0; + int types = 1; /* only normal pages by default */ + uint64_t remaining_local_memory; + int err; + + err = hwloc_stat("/sys/kernel/mm/hugepages", &st, data->root_fd); + if (!err) { + types = 1 /* normal non-huge size */ + st.st_nlink - 2 /* ignore . and .. */; + if (types < 3) + /* some buggy filesystems (e.g. btrfs when reading from fsroot) + * return wrong st_nlink for directories (always 1 for btrfs). + * use 3 as a sane default (default page + 2 huge sizes). + * hwloc_parse_hugepages_info() will extend it if needed. + */ + types = 3; + has_sysfs_hugepages = 1; + } + + memory->page_types = calloc(types, sizeof(*memory->page_types)); + if (!memory->page_types) { + memory->page_types_len = 0; + return; + } + memory->page_types_len = 1; /* we'll increase it when successfully getting hugepage info */ + + /* get the total memory */ + hwloc_parse_meminfo_info(data, "/proc/meminfo", + &memory->local_memory); + remaining_local_memory = memory->local_memory; + + if (has_sysfs_hugepages) { + /* read from node%d/hugepages/hugepages-%skB/nr_hugepages */ + hwloc_parse_hugepages_info(data, "/sys/kernel/mm/hugepages", memory, types, &remaining_local_memory); + /* memory->page_types_len may have changed */ + } + + /* use remaining memory as normal pages */ + memory->page_types[0].size = data->pagesize; + memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size; +} + +static void +hwloc_get_sysfs_node_meminfo(struct hwloc_linux_backend_data_s *data, + const char *syspath, int node, + struct hwloc_numanode_attr_s *memory) +{ + char path[SYSFS_NUMA_NODE_PATH_LEN]; + char meminfopath[SYSFS_NUMA_NODE_PATH_LEN]; + struct stat st; + int has_sysfs_hugepages = 0; + int types = 1; /* only normal pages by default */ + uint64_t remaining_local_memory; + int err; + + sprintf(path, "%s/node%d/hugepages", syspath, node); + err = hwloc_stat(path, &st, data->root_fd); + if (!err) { + types = 1 /* normal non-huge size */ + st.st_nlink - 2 /* ignore . and .. */; + if (types < 3) + /* some buggy filesystems (e.g. btrfs when reading from fsroot) + * return wrong st_nlink for directories (always 1 for btrfs). + * use 3 as a sane default (default page + 2 huge sizes). + * hwloc_parse_hugepages_info() will extend it if needed. + */ + types = 3; + has_sysfs_hugepages = 1; + } + + memory->page_types = calloc(types, sizeof(*memory->page_types)); + if (!memory->page_types) { + memory->page_types_len = 0; + return; + } + memory->page_types_len = 1; /* we'll increase it when successfully getting hugepage info */ + + /* get the total memory */ + sprintf(meminfopath, "%s/node%d/meminfo", syspath, node); + hwloc_parse_meminfo_info(data, meminfopath, + &memory->local_memory); + remaining_local_memory = memory->local_memory; + + if (has_sysfs_hugepages) { + /* read from node%d/hugepages/hugepages-%skB/nr_hugepages */ + hwloc_parse_hugepages_info(data, path, memory, types, &remaining_local_memory); + /* memory->page_types_len may have changed */ + } + + /* use remaining memory as normal pages */ + memory->page_types[0].size = data->pagesize; + memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size; +} + +static int +hwloc_parse_nodes_distances(const char *path, unsigned nbnodes, unsigned *indexes, uint64_t *distances, int fsroot_fd) +{ + size_t len = (10+1)*nbnodes; + uint64_t *curdist = distances; + char *string; + unsigned i; + + string = malloc(len); /* space-separated %d */ + if (!string) + goto out; + + for(i=0; iroot_fd) <= 0) + return; + + if (dmi_line[0] != '\0') { + char *tmp = strchr(dmi_line, '\n'); + if (tmp) + *tmp = '\0'; + hwloc_debug("found %s '%s'\n", hwloc_name, dmi_line); + hwloc_obj_add_info(obj, hwloc_name, dmi_line); + } +} + +static void +hwloc__get_dmi_id_info(struct hwloc_linux_backend_data_s *data, hwloc_obj_t obj) +{ + char path[128]; + unsigned pathlen; + DIR *dir; + + strcpy(path, "/sys/devices/virtual/dmi/id"); + dir = hwloc_opendir(path, data->root_fd); + if (dir) { + pathlen = 27; + } else { + strcpy(path, "/sys/class/dmi/id"); + dir = hwloc_opendir(path, data->root_fd); + if (dir) + pathlen = 17; + else + return; + } + closedir(dir); + + path[pathlen++] = '/'; + + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "product_name", "DMIProductName"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "product_version", "DMIProductVersion"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "product_serial", "DMIProductSerial"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "product_uuid", "DMIProductUUID"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "board_vendor", "DMIBoardVendor"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "board_name", "DMIBoardName"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "board_version", "DMIBoardVersion"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "board_serial", "DMIBoardSerial"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "board_asset_tag", "DMIBoardAssetTag"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "chassis_vendor", "DMIChassisVendor"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "chassis_type", "DMIChassisType"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "chassis_version", "DMIChassisVersion"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "chassis_serial", "DMIChassisSerial"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "chassis_asset_tag", "DMIChassisAssetTag"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "bios_vendor", "DMIBIOSVendor"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "bios_version", "DMIBIOSVersion"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "bios_date", "DMIBIOSDate"); + hwloc__get_dmi_id_one_info(data, obj, path, pathlen, "sys_vendor", "DMISysVendor"); +} + + +/*************************************** + * KNL NUMA quirks + */ + +struct knl_hwdata { + char memory_mode[32]; + char cluster_mode[32]; + long long int mcdram_cache_size; /* mcdram_cache_* is valid only if size > 0 */ + int mcdram_cache_associativity; + int mcdram_cache_inclusiveness; + int mcdram_cache_line_size; +}; + +struct knl_distances_summary { + unsigned nb_values; /* number of different values found in the matrix */ + struct knl_distances_value { + unsigned occurences; + uint64_t value; + } values[4]; /* sorted by occurences */ +}; + +static int hwloc_knl_distances_value_compar(const void *_v1, const void *_v2) +{ + const struct knl_distances_value *v1 = _v1, *v2 = _v2; + return v1->occurences - v2->occurences; +} + +static int +hwloc_linux_knl_parse_numa_distances(unsigned nbnodes, + uint64_t *distances, + struct knl_distances_summary *summary) +{ + unsigned i, j, k; + + summary->nb_values = 1; + summary->values[0].value = 10; + summary->values[0].occurences = nbnodes; + + if (nbnodes == 1) + /* nothing else needed */ + return 0; + + if (nbnodes != 2 && nbnodes != 4 && nbnodes != 8) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Ignoring KNL NUMA quirk, nbnodes (%u) isn't 2, 4 or 8.\n", nbnodes); + return -1; + } + + if (!distances) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Ignoring KNL NUMA quirk, distance matrix missing.\n"); + return -1; + } + + for(i=0; i 10 */ + if (distance <= 10) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Ignoring KNL NUMA quirk, distance matrix contains values <= 10.\n"); + return -1; + } + /* did we already see this value? */ + for(k=0; knb_values; k++) + if (distance == summary->values[k].value) { + summary->values[k].occurences++; + break; + } + if (k == summary->nb_values) { + /* add a new value */ + if (k == 4) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Ignoring KNL NUMA quirk, distance matrix contains more than 4 different values.\n"); + return -1; + } + summary->values[k].value = distance; + summary->values[k].occurences = 1; + summary->nb_values++; + } + } + } + + qsort(summary->values, summary->nb_values, sizeof(struct knl_distances_value), hwloc_knl_distances_value_compar); + + if (nbnodes == 2) { + if (summary->nb_values != 2) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Ignoring KNL NUMA quirk, distance matrix for 2 nodes cannot contain %u different values instead of 2.\n", + summary->nb_values); + return -1; + } + + } else if (nbnodes == 4) { + if (summary->nb_values != 2 && summary->nb_values != 4) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Ignoring KNL NUMA quirk, distance matrix for 8 nodes cannot contain %u different values instead of 2 or 4.\n", + summary->nb_values); + return -1; + } + + } else if (nbnodes == 8) { + if (summary->nb_values != 4) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Ignoring KNL NUMA quirk, distance matrix for 8 nodes cannot contain %u different values instead of 4.\n", + summary->nb_values); + return -1; + } + + } else { + abort(); /* checked above */ + } + + hwloc_debug("Summary of KNL distance matrix:\n"); + for(k=0; knb_values; k++) + hwloc_debug(" Found %u times distance %llu\n", summary->values[k].occurences, (unsigned long long) summary->values[k].value); + return 0; +} + +static int +hwloc_linux_knl_identify_4nodes(uint64_t *distances, + struct knl_distances_summary *distsum, + unsigned *ddr, unsigned *mcdram) /* ddr and mcdram arrays must be 2-long */ +{ + uint64_t value; + unsigned i; + + hwloc_debug("Trying to identify 4 KNL NUMA nodes in SNC-2 cluster mode...\n"); + + /* The SNC2-Flat/Hybrid matrix should be something like + * 10 21 31 41 + * 21 10 41 31 + * 31 41 10 41 + * 41 31 41 10 + * which means there are (above 4*10 on the diagonal): + * 1 unique value for DDR to other DDR, + * 2 identical values for DDR to local MCDRAM + * 3 identical values for everything else. + */ + if (distsum->nb_values != 4 + || distsum->values[0].occurences != 1 /* DDR to DDR */ + || distsum->values[1].occurences != 2 /* DDR to local MCDRAM */ + || distsum->values[2].occurences != 3 /* others */ + || distsum->values[3].occurences != 4 /* local */ ) + return -1; + + /* DDR:0 is always first */ + ddr[0] = 0; + + /* DDR:1 is at distance distsum->values[0].value from ddr[0] */ + value = distsum->values[0].value; + ddr[1] = 0; + hwloc_debug(" DDR#0 is NUMAnode#0\n"); + for(i=0; i<4; i++) + if (distances[i] == value) { + ddr[1] = i; + hwloc_debug(" DDR#1 is NUMAnode#%u\n", i); + break; + } + if (!ddr[1]) + return -1; + + /* MCDRAMs are at distance distsum->values[1].value from their local DDR */ + value = distsum->values[1].value; + mcdram[0] = mcdram[1] = 0; + for(i=1; i<4; i++) { + if (distances[i] == value) { + hwloc_debug(" MCDRAM#0 is NUMAnode#%u\n", i); + mcdram[0] = i; + } else if (distances[ddr[1]*4+i] == value) { + hwloc_debug(" MCDRAM#1 is NUMAnode#%u\n", i); + mcdram[1] = i; + } + } + if (!mcdram[0] || !mcdram[1]) + return -1; + + return 0; +} + +static int +hwloc_linux_knl_identify_8nodes(uint64_t *distances, + struct knl_distances_summary *distsum, + unsigned *ddr, unsigned *mcdram) /* ddr and mcdram arrays must be 4-long */ +{ + uint64_t value; + unsigned i, nb; + + hwloc_debug("Trying to identify 8 KNL NUMA nodes in SNC-4 cluster mode...\n"); + + /* The SNC4-Flat/Hybrid matrix should be something like + * 10 21 21 21 31 41 41 41 + * 21 10 21 21 41 31 41 41 + * 21 21 10 21 41 41 31 41 + * 21 21 21 10 41 41 41 31 + * 31 41 41 41 10 41 41 41 + * 41 31 41 41 41 10 41 41 + * 41 41 31 41 41 41 31 41 + * 41 41 41 31 41 41 41 41 + * which means there are (above 8*10 on the diagonal): + * 4 identical values for DDR to local MCDRAM + * 6 identical values for DDR to other DDR, + * 18 identical values for everything else. + */ + if (distsum->nb_values != 4 + || distsum->values[0].occurences != 4 /* DDR to local MCDRAM */ + || distsum->values[1].occurences != 6 /* DDR to DDR */ + || distsum->values[2].occurences != 8 /* local */ + || distsum->values[3].occurences != 18 /* others */ ) + return -1; + + /* DDR:0 is always first */ + ddr[0] = 0; + hwloc_debug(" DDR#0 is NUMAnode#0\n"); + + /* DDR:[1-3] are at distance distsum->values[1].value from ddr[0] */ + value = distsum->values[1].value; + ddr[1] = ddr[2] = ddr[3] = 0; + nb = 1; + for(i=0; i<8; i++) + if (distances[i] == value) { + hwloc_debug(" DDR#%u is NUMAnode#%u\n", nb, i); + ddr[nb++] = i; + if (nb == 4) + break; + } + if (nb != 4 || !ddr[1] || !ddr[2] || !ddr[3]) + return -1; + + /* MCDRAMs are at distance distsum->values[0].value from their local DDR */ + value = distsum->values[0].value; + mcdram[0] = mcdram[1] = mcdram[2] = mcdram[3] = 0; + for(i=1; i<8; i++) { + if (distances[i] == value) { + hwloc_debug(" MCDRAM#0 is NUMAnode#%u\n", i); + mcdram[0] = i; + } else if (distances[ddr[1]*8+i] == value) { + hwloc_debug(" MCDRAM#1 is NUMAnode#%u\n", i); + mcdram[1] = i; + } else if (distances[ddr[2]*8+i] == value) { + hwloc_debug(" MCDRAM#2 is NUMAnode#%u\n", i); + mcdram[2] = i; + } else if (distances[ddr[3]*8+i] == value) { + hwloc_debug(" MCDRAM#3 is NUMAnode#%u\n", i); + mcdram[3] = i; + } + } + if (!mcdram[0] || !mcdram[1] || !mcdram[2] || !mcdram[3]) + return -1; + + return 0; +} + +/* Try to handle knl hwdata properties + * Returns 0 on success and -1 otherwise */ +static int +hwloc_linux_knl_read_hwdata_properties(struct hwloc_linux_backend_data_s *data, + struct knl_hwdata *hwdata) +{ + char *knl_cache_file; + int version = 0; + char buffer[512] = {0}; + char *data_beg = NULL; + + if (asprintf(&knl_cache_file, "%s/knl_memoryside_cache", data->dumped_hwdata_dirname) < 0) + return -1; + + hwloc_debug("Reading knl cache data from: %s\n", knl_cache_file); + if (hwloc_read_path_by_length(knl_cache_file, buffer, sizeof(buffer), data->root_fd) <= 0) { + hwloc_debug("Unable to open KNL data file `%s' (%s)\n", knl_cache_file, strerror(errno)); + free(knl_cache_file); + return -1; + } + free(knl_cache_file); + + data_beg = &buffer[0]; + + /* file must start with version information */ + if (sscanf(data_beg, "version: %d", &version) != 1) { + fprintf(stderr, "Invalid knl_memoryside_cache header, expected \"version: \".\n"); + return -1; + } + + while (1) { + char *line_end = strstr(data_beg, "\n"); + if (!line_end) + break; + if (version >= 1) { + if (!strncmp("cache_size:", data_beg, strlen("cache_size"))) { + sscanf(data_beg, "cache_size: %lld", &hwdata->mcdram_cache_size); + hwloc_debug("read cache_size=%lld\n", hwdata->mcdram_cache_size); + } else if (!strncmp("line_size:", data_beg, strlen("line_size:"))) { + sscanf(data_beg, "line_size: %d", &hwdata->mcdram_cache_line_size); + hwloc_debug("read line_size=%d\n", hwdata->mcdram_cache_line_size); + } else if (!strncmp("inclusiveness:", data_beg, strlen("inclusiveness:"))) { + sscanf(data_beg, "inclusiveness: %d", &hwdata->mcdram_cache_inclusiveness); + hwloc_debug("read inclusiveness=%d\n", hwdata->mcdram_cache_inclusiveness); + } else if (!strncmp("associativity:", data_beg, strlen("associativity:"))) { + sscanf(data_beg, "associativity: %d\n", &hwdata->mcdram_cache_associativity); + hwloc_debug("read associativity=%d\n", hwdata->mcdram_cache_associativity); + } + } + if (version >= 2) { + if (!strncmp("cluster_mode: ", data_beg, strlen("cluster_mode: "))) { + size_t length; + data_beg += strlen("cluster_mode: "); + length = line_end-data_beg; + if (length > sizeof(hwdata->cluster_mode)-1) + length = sizeof(hwdata->cluster_mode)-1; + memcpy(hwdata->cluster_mode, data_beg, length); + hwdata->cluster_mode[length] = '\0'; + hwloc_debug("read cluster_mode=%s\n", hwdata->cluster_mode); + } else if (!strncmp("memory_mode: ", data_beg, strlen("memory_mode: "))) { + size_t length; + data_beg += strlen("memory_mode: "); + length = line_end-data_beg; + if (length > sizeof(hwdata->memory_mode)-1) + length = sizeof(hwdata->memory_mode)-1; + memcpy(hwdata->memory_mode, data_beg, length); + hwdata->memory_mode[length] = '\0'; + hwloc_debug("read memory_mode=%s\n", hwdata->memory_mode); + } + } + + data_beg = line_end + 1; + } + + if (hwdata->mcdram_cache_size == -1 + || hwdata->mcdram_cache_line_size == -1 + || hwdata->mcdram_cache_associativity == -1 + || hwdata->mcdram_cache_inclusiveness == -1) { + hwloc_debug("Incorrect file format cache_size=%lld line_size=%d associativity=%d inclusiveness=%d\n", + hwdata->mcdram_cache_size, + hwdata->mcdram_cache_line_size, + hwdata->mcdram_cache_associativity, + hwdata->mcdram_cache_inclusiveness); + hwdata->mcdram_cache_size = -1; /* mark cache as invalid */ + } + + return 0; +} + +static void +hwloc_linux_knl_guess_hwdata_properties(struct knl_hwdata *hwdata, + hwloc_obj_t *nodes, unsigned nbnodes, + struct knl_distances_summary *distsum) +{ + /* Try to guess KNL configuration (Cluster mode, Memory mode, and MCDRAM cache info) + * from the NUMA configuration (number of nodes, CPUless or not, distances). + * Keep in mind that some CPUs might be offline (hence DDR could be CPUless too. + * Keep in mind that part of the memory might be offline (hence MCDRAM could contain less than 16GB total). + */ + + hwloc_debug("Trying to guess missing KNL configuration information...\n"); + + /* These MCDRAM cache attributes are always valid. + * We'll only use them if mcdram_cache_size > 0 + */ + hwdata->mcdram_cache_associativity = 1; + hwdata->mcdram_cache_inclusiveness = 1; + hwdata->mcdram_cache_line_size = 64; + /* All commercial KNL/KNM have 16GB of MCDRAM, we'll divide that in the number of SNC */ + + if (hwdata->mcdram_cache_size > 0 + && hwdata->cluster_mode[0] + && hwdata->memory_mode[0]) + /* Nothing to guess */ + return; + + /* Quadrant/All2All/Hemisphere are basically identical from the application point-of-view, + * and Quadrant is recommended (except if underpopulating DIMMs). + * Hence we'll assume Quadrant when unknown. + */ + + /* Flat/Hybrid25/Hybrid50 cannot be distinguished unless we know the Cache size + * (if running a old hwloc-dump-hwdata that reports Cache size without modes) + * or we're sure MCDRAM NUMAnode size was not decreased by offlining some memory. + * Hence we'll assume Flat when unknown. + */ + + if (nbnodes == 1) { + /* Quadrant-Cache */ + if (!hwdata->cluster_mode[0]) + strcpy(hwdata->cluster_mode, "Quadrant"); + if (!hwdata->memory_mode[0]) + strcpy(hwdata->memory_mode, "Cache"); + if (hwdata->mcdram_cache_size <= 0) + hwdata->mcdram_cache_size = 16UL*1024*1024*1024; + + } else if (nbnodes == 2) { + /* most likely Quadrant-Flat/Hybrid, + * or SNC2/Cache (unlikely) + */ + + if (!strcmp(hwdata->memory_mode, "Cache") + || !strcmp(hwdata->cluster_mode, "SNC2") + || !hwloc_bitmap_iszero(nodes[1]->cpuset)) { /* MCDRAM cannot be nodes[0], and its cpuset is always empty */ + /* SNC2-Cache */ + if (!hwdata->cluster_mode[0]) + strcpy(hwdata->cluster_mode, "SNC2"); + if (!hwdata->memory_mode[0]) + strcpy(hwdata->memory_mode, "Cache"); + if (hwdata->mcdram_cache_size <= 0) + hwdata->mcdram_cache_size = 8UL*1024*1024*1024; + + } else { + /* Assume Quadrant-Flat/Hybrid. + * Could also be SNC2-Cache with offline CPUs in nodes[1] (unlikely). + */ + if (!hwdata->cluster_mode[0]) + strcpy(hwdata->cluster_mode, "Quadrant"); + if (!hwdata->memory_mode[0]) { + if (hwdata->mcdram_cache_size == 4UL*1024*1024*1024) + strcpy(hwdata->memory_mode, "Hybrid25"); + else if (hwdata->mcdram_cache_size == 8UL*1024*1024*1024) + strcpy(hwdata->memory_mode, "Hybrid50"); + else + strcpy(hwdata->memory_mode, "Flat"); + } else { + if (hwdata->mcdram_cache_size <= 0) { + if (!strcmp(hwdata->memory_mode, "Hybrid25")) + hwdata->mcdram_cache_size = 4UL*1024*1024*1024; + else if (!strcmp(hwdata->memory_mode, "Hybrid50")) + hwdata->mcdram_cache_size = 8UL*1024*1024*1024; + } + } + } + + } else if (nbnodes == 4) { + /* most likely SNC4-Cache + * or SNC2-Flat/Hybrid (unlikely) + * + * SNC2-Flat/Hybrid has 4 different values in distsum, + * while SNC4-Cache only has 2. + */ + + if (!strcmp(hwdata->cluster_mode, "SNC2") || distsum->nb_values == 4) { + /* SNC2-Flat/Hybrid */ + if (!hwdata->cluster_mode[0]) + strcpy(hwdata->cluster_mode, "SNC2"); + if (!hwdata->memory_mode[0]) { + if (hwdata->mcdram_cache_size == 2UL*1024*1024*1024) + strcpy(hwdata->memory_mode, "Hybrid25"); + else if (hwdata->mcdram_cache_size == 4UL*1024*1024*1024) + strcpy(hwdata->memory_mode, "Hybrid50"); + else + strcpy(hwdata->memory_mode, "Flat"); + } else { + if (hwdata->mcdram_cache_size <= 0) { + if (!strcmp(hwdata->memory_mode, "Hybrid25")) + hwdata->mcdram_cache_size = 2UL*1024*1024*1024; + else if (!strcmp(hwdata->memory_mode, "Hybrid50")) + hwdata->mcdram_cache_size = 4UL*1024*1024*1024; + } + } + + } else { + /* Assume SNC4-Cache. + * SNC2 is unlikely. + */ + if (!hwdata->cluster_mode[0]) + strcpy(hwdata->cluster_mode, "SNC4"); + if (!hwdata->memory_mode[0]) + strcpy(hwdata->memory_mode, "Cache"); + if (hwdata->mcdram_cache_size <= 0) + hwdata->mcdram_cache_size = 4UL*1024*1024*1024; + } + + } else if (nbnodes == 8) { + /* SNC4-Flat/Hybrid */ + + if (!hwdata->cluster_mode[0]) + strcpy(hwdata->cluster_mode, "SNC4"); + if (!hwdata->memory_mode[0]) { + if (hwdata->mcdram_cache_size == 1UL*1024*1024*1024) + strcpy(hwdata->memory_mode, "Hybrid25"); + else if (hwdata->mcdram_cache_size == 2UL*1024*1024*1024) + strcpy(hwdata->memory_mode, "Hybrid50"); + else + strcpy(hwdata->memory_mode, "Flat"); + } else { + if (hwdata->mcdram_cache_size <= 0) { + if (!strcmp(hwdata->memory_mode, "Hybrid25")) + hwdata->mcdram_cache_size = 1UL*1024*1024*1024; + else if (!strcmp(hwdata->memory_mode, "Hybrid50")) + hwdata->mcdram_cache_size = 2UL*1024*1024*1024; + } + } + } + + hwloc_debug(" Found cluster=%s memory=%s cache=%lld\n", + hwdata->cluster_mode, hwdata->memory_mode, + hwdata->mcdram_cache_size); +} + +static void +hwloc_linux_knl_add_cluster(struct hwloc_topology *topology, + hwloc_obj_t ddr, hwloc_obj_t mcdram, + struct knl_hwdata *knl_hwdata, + int mscache_as_l3, + int snclevel, + unsigned *failednodes) +{ + hwloc_obj_t cluster = NULL; + + if (mcdram) { + mcdram->subtype = strdup("MCDRAM"); + /* Change MCDRAM cpuset to DDR cpuset for clarity. + * Not actually useful if we insert with hwloc__attach_memory_object() below. + * The cpuset will be updated by the core later anyway. + */ + hwloc_bitmap_copy(mcdram->cpuset, ddr->cpuset); + + /* Add a Group for Cluster containing this MCDRAM + DDR */ + cluster = hwloc_alloc_setup_object(topology, HWLOC_OBJ_GROUP, HWLOC_UNKNOWN_INDEX); + hwloc_obj_add_other_obj_sets(cluster, ddr); + hwloc_obj_add_other_obj_sets(cluster, mcdram); + cluster->subtype = strdup("Cluster"); + cluster->attr->group.kind = HWLOC_GROUP_KIND_INTEL_KNL_SUBNUMA_CLUSTER; + cluster = hwloc__insert_object_by_cpuset(topology, NULL, cluster, "linux:knl:snc:group"); + } + + if (cluster) { + /* Now insert NUMA nodes below this cluster */ + hwloc_obj_t res; + res = hwloc__attach_memory_object(topology, cluster, ddr, "linux:knl:snc:ddr"); + if (res != ddr) { + (*failednodes)++; + ddr = NULL; + } + res = hwloc__attach_memory_object(topology, cluster, mcdram, "linux:knl:snc:mcdram"); + if (res != mcdram) { + (*failednodes)++; + mcdram = NULL; + } + + } else { + /* we don't know where to attach, let the core find or insert if needed */ + hwloc_obj_t res; + res = hwloc__insert_object_by_cpuset(topology, NULL, ddr, "linux:knl:ddr"); + if (res != ddr) { + (*failednodes)++; + ddr = NULL; + } + if (mcdram) { + res = hwloc__insert_object_by_cpuset(topology, NULL, mcdram, "linux:knl:mcdram"); + if (res != mcdram) { + (*failednodes)++; + mcdram = NULL; + } + } + } + + if (ddr && mcdram) { + /* add memattrs to distinguish DDR and MCDRAM */ + struct hwloc_internal_location_s loc; + hwloc_uint64_t ddrbw; + hwloc_uint64_t mcdrambw; + ddrbw = 90000/snclevel; + mcdrambw = 360000/snclevel; + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = ddr->cpuset; + hwloc_internal_memattr_set_value(topology, HWLOC_MEMATTR_ID_BANDWIDTH, HWLOC_OBJ_NUMANODE, (hwloc_uint64_t)-1, ddr->os_index, &loc, ddrbw); + hwloc_internal_memattr_set_value(topology, HWLOC_MEMATTR_ID_BANDWIDTH, HWLOC_OBJ_NUMANODE, (hwloc_uint64_t)-1, mcdram->os_index, &loc, mcdrambw); + } + + if (ddr && knl_hwdata->mcdram_cache_size > 0) { + /* Now insert the mscache if any */ + hwloc_obj_t cache = hwloc_alloc_setup_object(topology, HWLOC_OBJ_L3CACHE, HWLOC_UNKNOWN_INDEX); + if (!cache) + /* failure is harmless */ + return; + cache->attr->cache.depth = 3; + cache->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + cache->attr->cache.size = knl_hwdata->mcdram_cache_size; + cache->attr->cache.linesize = knl_hwdata->mcdram_cache_line_size; + cache->attr->cache.associativity = knl_hwdata->mcdram_cache_associativity; + hwloc_obj_add_info(cache, "Inclusive", knl_hwdata->mcdram_cache_inclusiveness ? "1" : "0"); + cache->cpuset = hwloc_bitmap_dup(ddr->cpuset); + cache->nodeset = hwloc_bitmap_dup(ddr->nodeset); /* only applies to DDR */ + if (mscache_as_l3) { + /* make it a L3 */ + cache->subtype = strdup("MemorySideCache"); + hwloc__insert_object_by_cpuset(topology, NULL, cache, "linux:knl:memcache:l3cache"); + } else { + /* make it a real mscache */ + cache->type = HWLOC_OBJ_MEMCACHE; + cache->depth = 1; + if (cluster) + hwloc__attach_memory_object(topology, cluster, cache, "linux:knl:snc:memcache"); + else + hwloc__insert_object_by_cpuset(topology, NULL, cache, "linux:knl:memcache"); + } + } +} + +static void +hwloc_linux_knl_numa_quirk(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data, + hwloc_obj_t *nodes, unsigned nbnodes, + uint64_t * distances, + unsigned *failednodes) +{ + struct knl_hwdata hwdata; + struct knl_distances_summary dist; + unsigned i; + char * fallback_env = getenv("HWLOC_KNL_HDH_FALLBACK"); + int fallback = fallback_env ? atoi(fallback_env) : -1; /* by default, only fallback if needed */ + char * mscache_as_l3_env = getenv("HWLOC_KNL_MSCACHE_L3"); + int mscache_as_l3 = mscache_as_l3_env ? atoi(mscache_as_l3_env) : 1; /* L3 by default, for backward compat */ + + if (*failednodes) + goto error; + + if (hwloc_linux_knl_parse_numa_distances(nbnodes, distances, &dist) < 0) + goto error; + + hwdata.memory_mode[0] = '\0'; + hwdata.cluster_mode[0] = '\0'; + hwdata.mcdram_cache_size = -1; + hwdata.mcdram_cache_associativity = -1; + hwdata.mcdram_cache_inclusiveness = -1; + hwdata.mcdram_cache_line_size = -1; + if (fallback == 1) + hwloc_debug("KNL dumped hwdata ignored, forcing fallback to heuristics\n"); + else + hwloc_linux_knl_read_hwdata_properties(data, &hwdata); + if (fallback != 0) + hwloc_linux_knl_guess_hwdata_properties(&hwdata, nodes, nbnodes, &dist); + + if (strcmp(hwdata.cluster_mode, "All2All") + && strcmp(hwdata.cluster_mode, "Hemisphere") + && strcmp(hwdata.cluster_mode, "Quadrant") + && strcmp(hwdata.cluster_mode, "SNC2") + && strcmp(hwdata.cluster_mode, "SNC4")) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Failed to find a usable KNL cluster mode (%s)\n", hwdata.cluster_mode); + goto error; + } + if (strcmp(hwdata.memory_mode, "Cache") + && strcmp(hwdata.memory_mode, "Flat") + && strcmp(hwdata.memory_mode, "Hybrid25") + && strcmp(hwdata.memory_mode, "Hybrid50")) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Failed to find a usable KNL memory mode (%s)\n", hwdata.memory_mode); + goto error; + } + + if (mscache_as_l3) { + if (!hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L3CACHE)) + hwdata.mcdram_cache_size = 0; + } else { + if (!hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_MEMCACHE)) + hwdata.mcdram_cache_size = 0; + } + + hwloc_obj_add_info(topology->levels[0][0], "ClusterMode", hwdata.cluster_mode); + hwloc_obj_add_info(topology->levels[0][0], "MemoryMode", hwdata.memory_mode); + + if (!strcmp(hwdata.cluster_mode, "All2All") + || !strcmp(hwdata.cluster_mode, "Hemisphere") + || !strcmp(hwdata.cluster_mode, "Quadrant")) { + if (!strcmp(hwdata.memory_mode, "Cache")) { + /* Quadrant-Cache */ + if (nbnodes != 1) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 1 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 1, failednodes); + + } else { + /* Quadrant-Flat/Hybrid */ + if (nbnodes != 2) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (!strcmp(hwdata.memory_mode, "Flat")) + hwdata.mcdram_cache_size = 0; + hwloc_linux_knl_add_cluster(topology, nodes[0], nodes[1], &hwdata, mscache_as_l3, 1, failednodes); + } + + } else if (!strcmp(hwdata.cluster_mode, "SNC2")) { + if (!strcmp(hwdata.memory_mode, "Cache")) { + /* SNC2-Cache */ + if (nbnodes != 2) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 2, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[1], NULL, &hwdata, mscache_as_l3, 2, failednodes); + + } else { + /* SNC2-Flat/Hybrid */ + unsigned ddr[2], mcdram[2]; + if (nbnodes != 4) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (hwloc_linux_knl_identify_4nodes(distances, &dist, ddr, mcdram) < 0) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "Uhwloc/linux: nexpected distance layout for mode %s-%s\n", hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (!strcmp(hwdata.memory_mode, "Flat")) + hwdata.mcdram_cache_size = 0; + hwloc_linux_knl_add_cluster(topology, nodes[ddr[0]], nodes[mcdram[0]], &hwdata, mscache_as_l3, 2, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[ddr[1]], nodes[mcdram[1]], &hwdata, mscache_as_l3, 2, failednodes); + } + + } else if (!strcmp(hwdata.cluster_mode, "SNC4")) { + if (!strcmp(hwdata.memory_mode, "Cache")) { + /* SNC4-Cache */ + if (nbnodes != 4) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 4 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[1], NULL, &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[2], NULL, &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[3], NULL, &hwdata, mscache_as_l3, 4, failednodes); + + } else { + /* SNC4-Flat/Hybrid */ + unsigned ddr[4], mcdram[4]; + if (nbnodes != 8) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (hwloc_linux_knl_identify_8nodes(distances, &dist, ddr, mcdram) < 0) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Unexpected distance layout for mode %s-%s\n", hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (!strcmp(hwdata.memory_mode, "Flat")) + hwdata.mcdram_cache_size = 0; + hwloc_linux_knl_add_cluster(topology, nodes[ddr[0]], nodes[mcdram[0]], &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[ddr[1]], nodes[mcdram[1]], &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[ddr[2]], nodes[mcdram[2]], &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[ddr[3]], nodes[mcdram[3]], &hwdata, mscache_as_l3, 4, failednodes); + } + } + + return; + + error: + /* just insert nodes basically */ + for (i = 0; i < nbnodes; i++) { + hwloc_obj_t node = nodes[i]; + if (node) { + hwloc_obj_t res_obj = hwloc__insert_object_by_cpuset(topology, NULL, node, "linux:knl:basic:numa"); + if (res_obj != node) + /* This NUMA node got merged somehow, could be a buggy BIOS reporting wrong NUMA node cpuset. + * This object disappeared, we'll ignore distances */ + (*failednodes)++; + } + } +} + + +/************************************** + ****** Sysfs Topology Discovery ****** + **************************************/ + +/* try to find locality of CPU-less NUMA nodes by looking at their distances */ +static int +fixup_cpuless_node_locality_from_distances(unsigned i, + unsigned nbnodes, hwloc_obj_t *nodes, uint64_t *distances) +{ + unsigned min = UINT_MAX; + unsigned nb = 0, j; + + for(j=0; jcpuset, nodes[i]->cpuset, nodes[j]->cpuset); + return 0; +} + +/* try to find locality of CPU-less NUMA nodes by looking at HMAT initiators. + * + * In theory, we may have HMAT info only for some nodes. + * In practice, if this never occurs, we may want to assume HMAT for either all or no nodes. + */ +static int +read_node_initiators(struct hwloc_linux_backend_data_s *data, + hwloc_obj_t node, unsigned nbnodes, hwloc_obj_t *nodes, + const char *path) +{ + char accesspath[SYSFS_NUMA_NODE_PATH_LEN]; + DIR *dir; + struct dirent *dirent; + + /* starting with Linux 5.10, Generic Initiators may be preferred to CPU initiators. + * access0 contains the fastest of GI and CPU. access1 contains the fastest of CPU. + * Try access1 to avoid GI if any, or fallback to access0 otherwise. + */ + sprintf(accesspath, "%s/node%u/access1/initiators", path, node->os_index); + dir = hwloc_opendir(accesspath, data->root_fd); + if (!dir) { + sprintf(accesspath, "%s/node%u/access0/initiators", path, node->os_index); + dir = hwloc_opendir(accesspath, data->root_fd); + if (!dir) + return -1; + } + + while ((dirent = readdir(dir)) != NULL) { + unsigned initiator_os_index; + if (sscanf(dirent->d_name, "node%u", &initiator_os_index) == 1 + && initiator_os_index != node->os_index) { + /* we found an initiator that's not ourself, + * find the corresponding node and add its cpuset + */ + unsigned j; + for(j=0; jos_index == initiator_os_index) { + hwloc_bitmap_or(node->cpuset, node->cpuset, nodes[j]->cpuset); + break; + } + } + } + closedir(dir); + return 0; +} + +static int +read_node_local_memattrs(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data, + hwloc_obj_t node, + const char *path) +{ + char accessdirpath[SYSFS_NUMA_NODE_PATH_LEN]; + char accesspath[SYSFS_NUMA_NODE_PATH_LEN+15]; + unsigned rbw = 0, rlat = 0; + struct hwloc_internal_location_s loc; + + /* starting with Linux 5.10, Generic Initiators may be preferred to CPU initiators. + * access0 contains the fastest of GI and CPU. access1 contains the fastest of CPU. + * Try access1 to avoid GI if any, or fallback to access0 otherwise. + */ + sprintf(accessdirpath, "%s/node%u/access1/initiators", path, node->os_index); + if (hwloc_access(accessdirpath, X_OK, data->root_fd) < 0) + sprintf(accessdirpath, "%s/node%u/access0/initiators", path, node->os_index); + + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = node->cpuset; + + /* bandwidth in MiB/s and latency in ns, just like in our memattrs API */ + + /* only read bandwidth/latency for now */ + sprintf(accesspath, "%s/read_bandwidth", accessdirpath); + if (hwloc_read_path_as_uint(accesspath, &rbw, data->root_fd) == 0 && rbw > 0) { + hwloc_internal_memattr_set_value(topology, HWLOC_MEMATTR_ID_BANDWIDTH, HWLOC_OBJ_NUMANODE, (hwloc_uint64_t)-1, node->os_index, &loc, rbw); + } + + sprintf(accesspath, "%s/read_latency", accessdirpath); + if (hwloc_read_path_as_uint(accesspath, &rlat, data->root_fd) == 0 && rlat > 0) { + hwloc_internal_memattr_set_value(topology, HWLOC_MEMATTR_ID_LATENCY, HWLOC_OBJ_NUMANODE, (hwloc_uint64_t)-1, node->os_index, &loc, rlat); + } + +#if 0 + sprintf(accesspath, "%s/write_bandwidth", accessdirpath); + if (hwloc_read_path_as_uint(accesspath, &wbw, data->root_fd) == 0 && wbw > 0) { + } + sprintf(accesspath, "%s/write_latency", accessdirpath); + if (hwloc_read_path_as_uint(accesspath, &wlat, data->root_fd) == 0 && wlat > 0) { + } +#endif + + return 0; +} + +/* return -1 if the kernel doesn't support mscache, + * or update tree (containing only the node on input) with caches (if any) + */ +static int +read_node_mscaches(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data, + const char *path, + hwloc_obj_t *treep) +{ + hwloc_obj_t tree = *treep, node = tree; + unsigned osnode = node->os_index; + char mscpath[SYSFS_NUMA_NODE_PATH_LEN]; + DIR *mscdir; + struct dirent *dirent; + + sprintf(mscpath, "%s/node%u/memory_side_cache", path, osnode); + mscdir = hwloc_opendir(mscpath, data->root_fd); + if (!mscdir) + return -1; + + while ((dirent = readdir(mscdir)) != NULL) { + unsigned depth; + uint64_t size; + unsigned line_size; + unsigned associativity; + hwloc_obj_t cache; + + if (strncmp(dirent->d_name, "index", 5)) + continue; + + depth = atoi(dirent->d_name+5); + + sprintf(mscpath, "%s/node%u/memory_side_cache/index%u/size", path, osnode, depth); + if (hwloc_read_path_as_uint64(mscpath, &size, data->root_fd) < 0) + continue; + + sprintf(mscpath, "%s/node%u/memory_side_cache/index%u/line_size", path, osnode, depth); + if (hwloc_read_path_as_uint(mscpath, &line_size, data->root_fd) < 0) + continue; + + sprintf(mscpath, "%s/node%u/memory_side_cache/index%u/indexing", path, osnode, depth); + if (hwloc_read_path_as_uint(mscpath, &associativity, data->root_fd) < 0) + continue; + /* 0 for direct-mapped, 1 for indexed (don't know how many ways), 2 for custom/other */ + + cache = hwloc_alloc_setup_object(topology, HWLOC_OBJ_MEMCACHE, HWLOC_UNKNOWN_INDEX); + if (cache) { + cache->nodeset = hwloc_bitmap_dup(node->nodeset); + cache->cpuset = hwloc_bitmap_dup(node->cpuset); + cache->attr->cache.size = size; + cache->attr->cache.depth = depth; + cache->attr->cache.linesize = line_size; + cache->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED; + cache->attr->cache.associativity = !associativity ? 1 /* direct-mapped */ : 0 /* unknown */; + hwloc_debug_1arg_bitmap("mscache %s has nodeset %s\n", + dirent->d_name, cache->nodeset); + + cache->memory_first_child = tree; + tree = cache; + } + } + closedir(mscdir); + *treep = tree; + return 0; +} + +static unsigned * +list_sysfsnode(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data, + const char *path, + unsigned *nbnodesp) +{ + DIR *dir; + unsigned osnode, nbnodes = 0; + unsigned *indexes, index_; + hwloc_bitmap_t nodeset; + struct dirent *dirent; + + /* try to get the list of NUMA nodes at once. + * otherwise we'll list the entire directory. + * + * offline nodes don't exist at all under /sys (they are in "possible", we may ignore them). + * + * don't use /online, /sys/bus/node/devices only contains node%d + */ + nodeset = hwloc__alloc_read_path_as_cpulist("/sys/devices/system/node/online", data->root_fd); + if (nodeset) { + int _nbnodes = hwloc_bitmap_weight(nodeset); + assert(_nbnodes >= 1); + nbnodes = (unsigned)_nbnodes; + hwloc_debug_bitmap("possible NUMA nodes %s\n", nodeset); + goto found; + } + + /* Get the list of nodes first */ + dir = hwloc_opendir(path, data->root_fd); + if (!dir) + return NULL; + + nodeset = hwloc_bitmap_alloc(); + if (!nodeset) { + closedir(dir); + return NULL; + } + + while ((dirent = readdir(dir)) != NULL) { + if (strncmp(dirent->d_name, "node", 4)) + continue; + osnode = strtoul(dirent->d_name+4, NULL, 0); + hwloc_bitmap_set(nodeset, osnode); + nbnodes++; + } + closedir(dir); + + assert(nbnodes >= 1); /* linux cannot have a "node/" subdirectory without at least one "node%d" */ + + /* we don't know if sysfs returns nodes in order, we can't merge above and below loops */ + + found: + /* if there are already some nodes, we'll annotate them. make sure the indexes match */ + if (!hwloc_bitmap_iszero(topology->levels[0][0]->nodeset) + && !hwloc_bitmap_isequal(nodeset, topology->levels[0][0]->nodeset)) { + char *sn, *tn; + hwloc_bitmap_asprintf(&sn, nodeset); + hwloc_bitmap_asprintf(&tn, topology->levels[0][0]->nodeset); + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: ignoring nodes because nodeset %s doesn't match existing nodeset %s.\n", tn, sn); + free(sn); + free(tn); + hwloc_bitmap_free(nodeset); + return NULL; + } + + indexes = calloc(nbnodes, sizeof(*indexes)); + if (!indexes) { + hwloc_bitmap_free(nodeset); + return NULL; + } + + /* Unsparsify node indexes. + * We'll need them later because Linux groups sparse distances + * and keeps them in order in the sysfs distance files. + * It'll simplify things in the meantime. + */ + index_ = 0; + hwloc_bitmap_foreach_begin (osnode, nodeset) { + indexes[index_] = osnode; + index_++; + } hwloc_bitmap_foreach_end(); + + hwloc_bitmap_free(nodeset); + +#ifdef HWLOC_DEBUG + hwloc_debug("%s", "NUMA indexes: "); + for (index_ = 0; index_ < nbnodes; index_++) + hwloc_debug(" %u", indexes[index_]); + hwloc_debug("%s", "\n"); +#endif + + *nbnodesp = nbnodes; + return indexes; +} + +static int +annotate_sysfsnode(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data, + const char *path, unsigned *found) +{ + unsigned nbnodes; + hwloc_obj_t * nodes; /* the array of NUMA node objects, to be used for inserting distances */ + hwloc_obj_t node; + unsigned * indexes; + uint64_t * distances; + unsigned i; + + /* NUMA nodes cannot be filtered out */ + indexes = list_sysfsnode(topology, data, path, &nbnodes); + if (!indexes) + return 0; + + nodes = calloc(nbnodes, sizeof(hwloc_obj_t)); + distances = malloc(nbnodes*nbnodes*sizeof(*distances)); + if (NULL == nodes || NULL == distances) { + free(nodes); + free(indexes); + free(distances); + return 0; + } + + for(node=hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, NULL); + node != NULL; + node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, node)) { + assert(node); /* list_sysfsnode() ensured that sysfs nodes and existing nodes match */ + + /* hwloc_parse_nodes_distances() requires nodes in physical index order, + * and inserting distances requires nodes[] and indexes[] in same order. + */ + for(i=0; ios_index) { + nodes[i] = node; + break; + } + + hwloc_get_sysfs_node_meminfo(data, path, node->os_index, &node->attr->numanode); + } + + topology->support.discovery->numa = 1; + topology->support.discovery->numa_memory = 1; + topology->support.discovery->disallowed_numa = 1; + + if (nbnodes >= 2 + && data->use_numa_distances + && !hwloc_parse_nodes_distances(path, nbnodes, indexes, distances, data->root_fd)) { + hwloc_internal_distances_add(topology, "NUMALatency", nbnodes, nodes, distances, + HWLOC_DISTANCES_KIND_FROM_OS|HWLOC_DISTANCES_KIND_MEANS_LATENCY, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + } else { + free(nodes); + free(distances); + } + + free(indexes); + *found = nbnodes; + return 0; +} + +static int +look_sysfsnode(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data, + const char *path, unsigned *found) +{ + unsigned osnode; + unsigned nbnodes; + hwloc_obj_t * nodes; /* the array of NUMA node objects, to be used for inserting distances */ + unsigned nr_trees; + hwloc_obj_t * trees; /* the array of memory hierarchies to insert */ + unsigned *indexes; + uint64_t * distances; + hwloc_bitmap_t nodes_cpuset; + unsigned failednodes = 0; + unsigned i; + DIR *dir; + int allow_overlapping_node_cpusets = (getenv("HWLOC_DEBUG_ALLOW_OVERLAPPING_NODE_CPUSETS") != NULL); + int need_memcaches = hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_MEMCACHE); + + hwloc_debug("\n\n * Topology extraction from %s *\n\n", path); + + /* NUMA nodes cannot be filtered out */ + indexes = list_sysfsnode(topology, data, path, &nbnodes); + if (!indexes) + return 0; + + nodes = calloc(nbnodes, sizeof(hwloc_obj_t)); + trees = calloc(nbnodes, sizeof(hwloc_obj_t)); + distances = malloc(nbnodes*nbnodes*sizeof(*distances)); + nodes_cpuset = hwloc_bitmap_alloc(); + if (NULL == nodes || NULL == trees || NULL == distances || NULL == nodes_cpuset) { + free(nodes); + free(trees); + free(indexes); + free(distances); + hwloc_bitmap_free(nodes_cpuset); + nbnodes = 0; + goto out; + } + + topology->support.discovery->numa = 1; + topology->support.discovery->numa_memory = 1; + topology->support.discovery->disallowed_numa = 1; + + /* Create NUMA objects */ + for (i = 0; i < nbnodes; i++) { + hwloc_obj_t node; + char nodepath[SYSFS_NUMA_NODE_PATH_LEN]; + hwloc_bitmap_t cpuset; + + osnode = indexes[i]; + sprintf(nodepath, "%s/node%u/cpumap", path, osnode); + cpuset = hwloc__alloc_read_path_as_cpumask(nodepath, data->root_fd); + if (!cpuset) { + /* This NUMA object won't be inserted, we'll ignore distances */ + failednodes++; + continue; + } + if (hwloc_bitmap_intersects(nodes_cpuset, cpuset)) { + /* Buggy BIOS with overlapping NUMA node cpusets, impossible on Linux so far, we should ignore them. + * But it may be useful for debugging the core. + */ + if (!allow_overlapping_node_cpusets) { + hwloc_debug_1arg_bitmap("node P#%u cpuset %s intersects with previous nodes, ignoring that node.\n", osnode, cpuset); + hwloc_bitmap_free(cpuset); + failednodes++; + continue; + } + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: node P#%u cpuset intersects with previous nodes, forcing its acceptance\n", osnode); + } + hwloc_bitmap_or(nodes_cpuset, nodes_cpuset, cpuset); + + node = hwloc_alloc_setup_object(topology, HWLOC_OBJ_NUMANODE, osnode); + node->cpuset = cpuset; + node->nodeset = hwloc_bitmap_alloc(); + hwloc_bitmap_set(node->nodeset, osnode); + hwloc_get_sysfs_node_meminfo(data, path, osnode, &node->attr->numanode); + + nodes[i] = node; + hwloc_debug_1arg_bitmap("os node %u has cpuset %s\n", + osnode, node->cpuset); + } + + /* try to find NUMA nodes that correspond to NVIDIA GPU memory */ + dir = hwloc_opendir("/proc/driver/nvidia/gpus", data->root_fd); + if (dir) { + struct dirent *dirent; + char *env = getenv("HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES"); + int keep = env && atoi(env); + while ((dirent = readdir(dir)) != NULL) { + char nvgpunumapath[300], line[256]; + int err; + snprintf(nvgpunumapath, sizeof(nvgpunumapath), "/proc/driver/nvidia/gpus/%s/numa_status", dirent->d_name); + err = hwloc_read_path_by_length(nvgpunumapath, line, sizeof(line), data->root_fd); + if (err > 0) { + const char *nvgpu_node_line = strstr(line, "Node:"); + if (nvgpu_node_line) { + unsigned nvgpu_node; + const char *value = nvgpu_node_line+5; + while (*value == ' ' || *value == '\t') + value++; + nvgpu_node = atoi(value); + hwloc_debug("os node %u is NVIDIA GPU %s integrated memory\n", nvgpu_node, dirent->d_name); + for(i=0; ios_index == nvgpu_node) { + if (keep) { + /* keep this NUMA node but fixed its locality and add an info about the GPU */ + char nvgpulocalcpuspath[300]; + node->subtype = strdup("GPUMemory"); + hwloc_obj_add_info(node, "PCIBusID", dirent->d_name); + snprintf(nvgpulocalcpuspath, sizeof(nvgpulocalcpuspath), "/sys/bus/pci/devices/%s/local_cpus", dirent->d_name); + err = hwloc__read_path_as_cpumask(nvgpulocalcpuspath, node->cpuset, data->root_fd); + if (err) + /* the core will attach to the root */ + hwloc_bitmap_zero(node->cpuset); + } else { + /* drop this NUMA node */ + hwloc_free_unlinked_object(node); + nodes[i] = NULL; + } + break; + } + } + } + } + } + closedir(dir); + } + + /* try to find DAX devices of KMEM NUMA nodes */ + dir = hwloc_opendir("/sys/bus/dax/devices/", data->root_fd); + if (dir) { + struct dirent *dirent; + while ((dirent = readdir(dir)) != NULL) { + char daxpath[300]; + int tmp; + osnode = (unsigned) -1; + snprintf(daxpath, sizeof(daxpath), "/sys/bus/dax/devices/%s/target_node", dirent->d_name); + if (!hwloc_read_path_as_int(daxpath, &tmp, data->root_fd)) { /* contains %d when added in 5.1 */ + osnode = (unsigned) tmp; + for(i=0; ios_index == osnode) + hwloc_obj_add_info(node, "DAXDevice", dirent->d_name); + } + } + } + closedir(dir); + } + + topology->support.discovery->numa = 1; + topology->support.discovery->numa_memory = 1; + topology->support.discovery->disallowed_numa = 1; + + hwloc_bitmap_free(nodes_cpuset); + + if (nbnodes <= 1) { + /* failed to read/create some nodes, don't bother reading/fixing + * a distance matrix that would likely be wrong anyway. + */ + data->use_numa_distances = 0; + } + + if (!data->use_numa_distances) { + free(distances); + distances = NULL; + } + + if (distances && hwloc_parse_nodes_distances(path, nbnodes, indexes, distances, data->root_fd) < 0) { + free(distances); + distances = NULL; + } + + free(indexes); + + if (data->is_knl) { + /* apply KNL quirks */ + char *env = getenv("HWLOC_KNL_NUMA_QUIRK"); + int noquirk = (env && !atoi(env)); + if (!noquirk) { + hwloc_linux_knl_numa_quirk(topology, data, nodes, nbnodes, distances, &failednodes); + free(distances); + free(nodes); + free(trees); + goto out; + } + } + + /* Fill the array of trees */ + nr_trees = 0; + /* First list nodes that have a non-empty cpumap. + * They are likely the default nodes where we want to allocate from (DDR), + * make sure they are listed first in their parent memory subtree. + */ + for (i = 0; i < nbnodes; i++) { + hwloc_obj_t node = nodes[i]; + if (node && !hwloc_bitmap_iszero(node->cpuset)) { + hwloc_obj_t tree; + /* update from HMAT initiators if any */ + if (data->use_numa_initiators) + read_node_initiators(data, node, nbnodes, nodes, path); + + tree = node; + if (need_memcaches) + read_node_mscaches(topology, data, path, &tree); + trees[nr_trees++] = tree; + } + } + /* Now look for empty-cpumap nodes. + * Those may be the non-default nodes for allocation. + * Hence we don't want them to be listed first, + * especially if we end up fixing their actual cpumap. + */ + for (i = 0; i < nbnodes; i++) { + hwloc_obj_t node = nodes[i]; + if (!node) + continue; + if (hwloc_bitmap_iszero(node->cpuset)) { + hwloc_obj_t tree; + /* update from HMAT initiators if any */ + if (data->use_numa_initiators) + if (!read_node_initiators(data, node, nbnodes, nodes, path)) + if (!hwloc_bitmap_iszero(node->cpuset)) + goto fixed; + + /* if HMAT didn't help, try to find locality of CPU-less NUMA nodes by looking at their distances */ + if (distances && data->use_numa_distances_for_cpuless) + fixup_cpuless_node_locality_from_distances(i, nbnodes, nodes, distances); + + fixed: + tree = node; + if (need_memcaches) + read_node_mscaches(topology, data, path, &tree); + trees[nr_trees++] = tree; + } + /* By the way, get their memattrs now that cpuset is fixed */ + read_node_local_memattrs(topology, data, node, path); + } + + /* insert memory trees for real */ + for (i = 0; i < nr_trees; i++) { + hwloc_obj_t tree = trees[i]; + while (tree) { + hwloc_obj_t cur_obj; + hwloc_obj_t res_obj; + hwloc_obj_type_t cur_type; + cur_obj = tree; + cur_type = cur_obj->type; + tree = cur_obj->memory_first_child; + assert(!cur_obj->next_sibling); + res_obj = hwloc__insert_object_by_cpuset(topology, NULL, cur_obj, "linux:sysfs:numa"); + if (res_obj != cur_obj && cur_type == HWLOC_OBJ_NUMANODE) { + /* This NUMA node got merged somehow, could be a buggy BIOS reporting wrong NUMA node cpuset. + * Update it in the array for the distance matrix. */ + unsigned j; + for(j=0; jnr_sets = 0; + cpukinds->nr_sets_allocated = 4; /* enough for vast majority of cases */ + cpukinds->sets = malloc(cpukinds->nr_sets_allocated * sizeof(*cpukinds->sets)); +} + +static void +hwloc_linux_cpukinds_add(struct hwloc_linux_cpukinds *cpukinds, + unsigned pu, unsigned long value) +{ + unsigned i; + + /* try to add to existing value */ + for(i=0; inr_sets; i++) { + if (cpukinds->sets[i].value == value) { + hwloc_bitmap_set(cpukinds->sets[i].cpuset, pu); + return; + } + } + + /* do we need to enlarge the array before adding a new value? */ + if (cpukinds->nr_sets == cpukinds->nr_sets_allocated) { + struct hwloc_linux_cpukind *new = realloc(cpukinds->sets, 2 * cpukinds->nr_sets_allocated * sizeof(*cpukinds->sets)); + if (!new) + /* failed, ignore this PU */ + return; + cpukinds->sets = new; + cpukinds->nr_sets_allocated *= 2; + } + + /* add a new value for real */ + cpukinds->sets[cpukinds->nr_sets].cpuset = hwloc_bitmap_alloc(); + if (!cpukinds->sets[cpukinds->nr_sets].cpuset) + /* failed, ignore this PU */ + return; + + cpukinds->sets[cpukinds->nr_sets].value = value; + hwloc_bitmap_set(cpukinds->sets[cpukinds->nr_sets].cpuset, pu); + cpukinds->nr_sets++; +} + +static int +hwloc_linux_cpukinds_compar(const void *_a, const void *_b) +{ + const struct hwloc_linux_cpukind *a = _a, *b = _b; + return a->value - b->value; +} + +static void +hwloc_linux_cpukinds_register(struct hwloc_linux_cpukinds *cpukinds, + struct hwloc_topology *topology, + const char *name, + int forced_efficiency) +{ + unsigned i; + + /* sort by value, lower frequency and lower capacity likely means lower performance */ + qsort(cpukinds->sets, cpukinds->nr_sets, sizeof(*cpukinds->sets), hwloc_linux_cpukinds_compar); + + for(i=0; inr_sets; i++) { + struct hwloc_info_s infoattr; + char value[32]; + infoattr.name = (char *) name; + infoattr.value = value; + snprintf(value, sizeof(value), "%lu", cpukinds->sets[i].value); + /* value (at least cpu_capacity) may be > INT_MAX, too large for a forced_efficiency, hence use i instead */ + hwloc_internal_cpukinds_register(topology, cpukinds->sets[i].cpuset, + forced_efficiency ? (int) i : HWLOC_CPUKIND_EFFICIENCY_UNKNOWN, + &infoattr, 1, 0); + /* the cpuset is given to the callee */ + cpukinds->sets[i].cpuset = NULL; + } + + if (cpukinds->nr_sets) + topology->support.discovery->cpukind_efficiency = 1; +} + +static void +hwloc_linux_cpukinds_destroy(struct hwloc_linux_cpukinds *cpukinds) +{ + unsigned i; + for(i=0; inr_sets; i++) + hwloc_bitmap_free(cpukinds->sets[i].cpuset); + cpukinds->nr_sets = 0; + cpukinds->nr_sets_allocated = 0; + free (cpukinds->sets); +} + +static int +look_sysfscpukinds(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data, + const char *path) +{ + struct hwloc_linux_cpukinds cpufreqs_max, cpufreqs_base, cpu_capacity; + int max_without_basefreq = 0; /* any cpu where we have maxfreq without basefreq? */ + char str[293]; + char *env; + int maxfreq_forced = 0; + int i; + + env = getenv("HWLOC_CPUKINDS_MAXFREQ"); + if (env && !strcmp(env, "1")) + maxfreq_forced = 1; + + /* look at the PU base+max frequency */ + hwloc_linux_cpukinds_init(&cpufreqs_max); + hwloc_linux_cpukinds_init(&cpufreqs_base); + hwloc_bitmap_foreach_begin(i, topology->levels[0][0]->cpuset) { + unsigned maxfreq = 0, basefreq = 0; + /* cpuinfo_max_freq is the hardware max. scaling_max_freq is the software policy current max */ + sprintf(str, "%s/cpu%d/cpufreq/cpuinfo_max_freq", path, i); + if (hwloc_read_path_as_uint(str, &maxfreq, data->root_fd) >= 0) + if (maxfreq) + hwloc_linux_cpukinds_add(&cpufreqs_max, i, maxfreq/1000); + /* base_frequency is intel_pstate specific */ + sprintf(str, "%s/cpu%d/cpufreq/base_frequency", path, i); + if (hwloc_read_path_as_uint(str, &basefreq, data->root_fd) >= 0) + if (basefreq) + hwloc_linux_cpukinds_add(&cpufreqs_base, i, basefreq/1000); + if (maxfreq && !basefreq) + max_without_basefreq = 1; + } hwloc_bitmap_foreach_end(); + + if (max_without_basefreq || maxfreq_forced) + /* only expose maxfreq info if we miss some basefreq info */ + hwloc_linux_cpukinds_register(&cpufreqs_max, topology, "FrequencyMaxMHz", 0); + hwloc_linux_cpukinds_register(&cpufreqs_base, topology, "FrequencyBaseMHz", 0); + hwloc_linux_cpukinds_destroy(&cpufreqs_max); + hwloc_linux_cpukinds_destroy(&cpufreqs_base); + + /* look at the PU capacity */ + hwloc_linux_cpukinds_init(&cpu_capacity); + hwloc_bitmap_foreach_begin(i, topology->levels[0][0]->cpuset) { + unsigned capacity; + sprintf(str, "%s/cpu%d/cpu_capacity", path, i); + if (hwloc_read_path_as_uint(str, &capacity, data->root_fd) >= 0) + hwloc_linux_cpukinds_add(&cpu_capacity, i, capacity); + } hwloc_bitmap_foreach_end(); + hwloc_linux_cpukinds_register(&cpu_capacity, topology, "LinuxCapacity", 1); + hwloc_linux_cpukinds_destroy(&cpu_capacity); + + return 0; +} + + +/********************************************** + * sysfs CPU discovery + */ + +static int +look_sysfscpu(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data, + const char *path, int old_filenames, + struct hwloc_linux_cpuinfo_proc * cpuinfo_Lprocs, unsigned cpuinfo_numprocs) +{ + hwloc_bitmap_t cpuset; /* Set of cpus for which we have topology information */ + hwloc_bitmap_t online_set; /* Set of online CPUs if easily available, or NULL */ +#define CPU_TOPOLOGY_STR_LEN 512 + char str[CPU_TOPOLOGY_STR_LEN]; + DIR *dir; + int i,j; + int threadwithcoreid = data->is_amd_with_CU ? -1 : 0; /* -1 means we don't know yet if threads have their own coreids within thread_siblings */ + int dont_merge_cluster_groups; + const char *env; + + hwloc_debug("\n\n * Topology extraction from %s *\n\n", path); + + /* try to get the list of online CPUs at once. + * otherwise we'll use individual per-CPU "online" files. + * + * don't use /online, /sys/bus/cpu/devices only contains cpu%d + */ + online_set = hwloc__alloc_read_path_as_cpulist("/sys/devices/system/cpu/online", data->root_fd); + if (online_set) + hwloc_debug_bitmap("online CPUs %s\n", online_set); + + /* fill the cpuset of interesting cpus */ + dir = hwloc_opendir(path, data->root_fd); + if (!dir) { + hwloc_debug("failed to open sysfscpu path %s (%d)\n", path, errno); + hwloc_bitmap_free(online_set); + return -1; + } else { + struct dirent *dirent; + cpuset = hwloc_bitmap_alloc(); + + while ((dirent = readdir(dir)) != NULL) { + unsigned long cpu; + char online[2]; + + if (strncmp(dirent->d_name, "cpu", 3)) + continue; + cpu = strtoul(dirent->d_name+3, NULL, 0); + + /* Maybe we don't have topology information but at least it exists */ + hwloc_bitmap_set(topology->levels[0][0]->complete_cpuset, cpu); + + /* check whether this processor is online */ + if (online_set) { + if (!hwloc_bitmap_isset(online_set, cpu)) { + hwloc_debug("os proc %lu is offline\n", cpu); + continue; + } + } else { + /* /sys/devices/system/cpu/online unavailable, check the cpu online file */ + sprintf(str, "%s/cpu%lu/online", path, cpu); + if (hwloc_read_path_by_length(str, online, sizeof(online), data->root_fd) > 0) { + if (!atoi(online)) { + hwloc_debug("os proc %lu is offline\n", cpu); + continue; + } + } + } + + /* check whether the kernel exports topology information for this cpu */ + sprintf(str, "%s/cpu%lu/topology", path, cpu); + if (hwloc_access(str, X_OK, data->root_fd) < 0 && errno == ENOENT) { + hwloc_debug("os proc %lu has no accessible %s/cpu%lu/topology\n", + cpu, path, cpu); + continue; + } + + hwloc_bitmap_set(cpuset, cpu); + } + closedir(dir); + } + + topology->support.discovery->pu = 1; + topology->support.discovery->disallowed_pu = 1; + hwloc_debug_1arg_bitmap("found %d cpu topologies, cpuset %s\n", + hwloc_bitmap_weight(cpuset), cpuset); + + env = getenv("HWLOC_DONT_MERGE_CLUSTER_GROUPS"); + dont_merge_cluster_groups = env && atoi(env); + + hwloc_bitmap_foreach_begin(i, cpuset) { + int tmpint; + int notfirstofcore = 0; /* set if we have core info and if we're not the first PU of our core */ + int notfirstofcluster = 0; /* set if we have cluster info and if we're not the first PU of our cluster */ + int notfirstofdie = 0; /* set if we have die info and if we're not the first PU of our die */ + hwloc_bitmap_t dieset = NULL; + hwloc_bitmap_t clusterset = NULL; + + if (hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_CORE)) { + /* look at the core */ + hwloc_bitmap_t coreset; + if (old_filenames) + sprintf(str, "%s/cpu%d/topology/thread_siblings", path, i); + else + sprintf(str, "%s/cpu%d/topology/core_cpus", path, i); + coreset = hwloc__alloc_read_path_as_cpumask(str, data->root_fd); + if (coreset) { + unsigned mycoreid = (unsigned) -1; + int gotcoreid = 0; /* to avoid reading the coreid twice */ + hwloc_bitmap_and(coreset, coreset, cpuset); + if (hwloc_bitmap_weight(coreset) > 1 && threadwithcoreid == -1) { + /* check if this is hyper-threading or different coreids */ + unsigned siblingid, siblingcoreid; + + mycoreid = (unsigned) -1; + sprintf(str, "%s/cpu%d/topology/core_id", path, i); /* contains %d at least up to 4.19 */ + if (hwloc_read_path_as_int(str, &tmpint, data->root_fd) == 0) + mycoreid = (unsigned) tmpint; + gotcoreid = 1; + + siblingid = hwloc_bitmap_first(coreset); + if (siblingid == (unsigned) i) + siblingid = hwloc_bitmap_next(coreset, i); + siblingcoreid = (unsigned) -1; + sprintf(str, "%s/cpu%u/topology/core_id", path, siblingid); /* contains %d at least up to 4.19 */ + if (hwloc_read_path_as_int(str, &tmpint, data->root_fd) == 0) + siblingcoreid = (unsigned) tmpint; + threadwithcoreid = (siblingcoreid != mycoreid); + } + if (hwloc_bitmap_first(coreset) != i) + notfirstofcore = notfirstofcluster = notfirstofdie = 1; + if (!notfirstofcore || threadwithcoreid) { + /* regular core */ + struct hwloc_obj *core; + + if (!gotcoreid) { + mycoreid = (unsigned) -1; + sprintf(str, "%s/cpu%d/topology/core_id", path, i); /* contains %d at least up to 4.19 */ + if (hwloc_read_path_as_int(str, &tmpint, data->root_fd) == 0) + mycoreid = (unsigned) tmpint; + } + + core = hwloc_alloc_setup_object(topology, HWLOC_OBJ_CORE, mycoreid); + if (threadwithcoreid) + /* amd multicore compute-unit, create one core per thread */ + hwloc_bitmap_only(coreset, i); + core->cpuset = coreset; + hwloc_debug_1arg_bitmap("os core %u has cpuset %s\n", + mycoreid, core->cpuset); + hwloc__insert_object_by_cpuset(topology, NULL, core, "linux:sysfs:core"); + coreset = NULL; /* don't free it */ + } else + + hwloc_bitmap_free(coreset); + } + } + + if (!notfirstofcore /* don't look at the cluster unless we are the first of the core */ + && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_GROUP)) { + /* look at the cluster */ + sprintf(str, "%s/cpu%d/topology/cluster_cpus", path, i); + clusterset = hwloc__alloc_read_path_as_cpumask(str, data->root_fd); + if (clusterset) { + hwloc_bitmap_and(clusterset, clusterset, cpuset); + if (hwloc_bitmap_weight(clusterset) == 1) { + /* cluster with single PU, ignore the cluster */ + hwloc_bitmap_free(clusterset); + clusterset = NULL; + } else if (hwloc_bitmap_first(clusterset) != i) { + /* not first cpu in this cluster, ignore the cluster */ + hwloc_bitmap_free(clusterset); + clusterset = NULL; + notfirstofcluster = notfirstofdie = 1; + } + /* we don't have coreset anymore for ignoring clusters if equal to cores, + * the group will be merged by the core. + */ + /* look at dies and packages before deciding whether we keep that cluster or not */ + } + } + + if (!notfirstofcluster /* don't look at the die unless we are the first of the core */ + && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_DIE)) { + /* look at the die */ + sprintf(str, "%s/cpu%d/topology/die_cpus", path, i); + dieset = hwloc__alloc_read_path_as_cpumask(str, data->root_fd); + if (dieset) { + hwloc_bitmap_and(dieset, dieset, cpuset); + if (hwloc_bitmap_weight(dieset) == 1) { + /* die with single PU (non-x86 arch using default die sysfs values), ignore the die */ + hwloc_bitmap_free(dieset); + dieset = NULL; + } else if (hwloc_bitmap_first(dieset) != i) { + /* not first cpu in this die, ignore the die */ + hwloc_bitmap_free(dieset); + dieset = NULL; + notfirstofdie = 1; + } + if (clusterset && dieset && hwloc_bitmap_isequal(dieset, clusterset)) { + /* cluster is identical to die, ignore it */ + hwloc_bitmap_free(clusterset); + clusterset = NULL; + } + /* look at packages before deciding whether we keep that die or not */ + } + } + + if (!notfirstofdie /* don't look at the package unless we are the first of the die */ + && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_PACKAGE)) { + /* look at the package */ + hwloc_bitmap_t packageset; + if (old_filenames) + sprintf(str, "%s/cpu%d/topology/core_siblings", path, i); + else + sprintf(str, "%s/cpu%d/topology/package_cpus", path, i); + packageset = hwloc__alloc_read_path_as_cpumask(str, data->root_fd); + if (packageset) { + hwloc_bitmap_and(packageset, packageset, cpuset); + if (dieset && hwloc_bitmap_isequal(packageset, dieset)) { + /* die is identical to package, ignore it */ + hwloc_bitmap_free(dieset); + dieset = NULL; + } + if (clusterset && hwloc_bitmap_isequal(packageset, clusterset)) { + /* cluster is identical to package, ignore it */ + hwloc_bitmap_free(clusterset); + clusterset = NULL; + } + if (hwloc_bitmap_first(packageset) == i) { + /* first cpu in this package, add the package */ + struct hwloc_obj *package; + unsigned mypackageid; + mypackageid = (unsigned) -1; + sprintf(str, "%s/cpu%d/topology/physical_package_id", path, i); /* contains %d at least up to 4.19 */ + if (hwloc_read_path_as_int(str, &tmpint, data->root_fd) == 0) + mypackageid = (unsigned) tmpint; + + package = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PACKAGE, mypackageid); + package->cpuset = packageset; + hwloc_debug_1arg_bitmap("os package %u has cpuset %s\n", + mypackageid, packageset); + /* add cpuinfo */ + if (cpuinfo_Lprocs) { + for(j=0; j<(int) cpuinfo_numprocs; j++) + if ((int) cpuinfo_Lprocs[j].Pproc == i) { + hwloc__move_infos(&package->infos, &package->infos_count, + &cpuinfo_Lprocs[j].infos, &cpuinfo_Lprocs[j].infos_count); + } + } + hwloc__insert_object_by_cpuset(topology, NULL, package, "linux:sysfs:package"); + packageset = NULL; /* don't free it */ + } + hwloc_bitmap_free(packageset); + } + } + + if (clusterset) { + struct hwloc_obj *cluster; + unsigned myclusterid; + myclusterid = (unsigned) -1; + sprintf(str, "%s/cpu%d/topology/cluster_id", path, i); /* contains %d when added in 5.16 */ + if (hwloc_read_path_as_int(str, &tmpint, data->root_fd) == 0) + myclusterid = (unsigned) tmpint; + + cluster = hwloc_alloc_setup_object(topology, HWLOC_OBJ_GROUP, myclusterid); + cluster->cpuset = clusterset; + cluster->subtype = strdup("Cluster"); + cluster->attr->group.kind = HWLOC_GROUP_KIND_LINUX_CLUSTER; + cluster->attr->group.dont_merge = dont_merge_cluster_groups; + hwloc_debug_1arg_bitmap("os cluster %u has cpuset %s\n", + myclusterid, clusterset); + hwloc__insert_object_by_cpuset(topology, NULL, cluster, "linux:sysfs:cluster"); + } + + if (dieset) { + struct hwloc_obj *die; + unsigned mydieid; + mydieid = (unsigned) -1; + sprintf(str, "%s/cpu%d/topology/die_id", path, i); /* contains %d when added in 5.2 */ + if (hwloc_read_path_as_int(str, &tmpint, data->root_fd) == 0) + mydieid = (unsigned) tmpint; + + die = hwloc_alloc_setup_object(topology, HWLOC_OBJ_DIE, mydieid); + die->cpuset = dieset; + hwloc_debug_1arg_bitmap("os die %u has cpuset %s\n", + mydieid, dieset); + hwloc__insert_object_by_cpuset(topology, NULL, die, "linux:sysfs:die"); + } + + if (data->arch == HWLOC_LINUX_ARCH_S390 + && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_GROUP)) { + /* look at the books */ + hwloc_bitmap_t bookset, drawerset; + sprintf(str, "%s/cpu%d/topology/book_siblings", path, i); + bookset = hwloc__alloc_read_path_as_cpumask(str, data->root_fd); + if (bookset) { + hwloc_bitmap_and(bookset, bookset, cpuset); + if (hwloc_bitmap_first(bookset) == i) { + struct hwloc_obj *book; + unsigned mybookid; + mybookid = (unsigned) -1; + sprintf(str, "%s/cpu%d/topology/book_id", path, i); /* contains %d at least up to 4.19 */ + if (hwloc_read_path_as_int(str, &tmpint, data->root_fd) == 0) { + mybookid = (unsigned) tmpint; + + book = hwloc_alloc_setup_object(topology, HWLOC_OBJ_GROUP, mybookid); + book->cpuset = bookset; + hwloc_debug_1arg_bitmap("os book %u has cpuset %s\n", + mybookid, bookset); + book->subtype = strdup("Book"); + book->attr->group.kind = HWLOC_GROUP_KIND_S390_BOOK; + book->attr->group.subkind = 0; + hwloc__insert_object_by_cpuset(topology, NULL, book, "linux:sysfs:group:book"); + bookset = NULL; /* don't free it */ + } + } + hwloc_bitmap_free(bookset); + + sprintf(str, "%s/cpu%d/topology/drawer_siblings", path, i); + drawerset = hwloc__alloc_read_path_as_cpumask(str, data->root_fd); + if (drawerset) { + hwloc_bitmap_and(drawerset, drawerset, cpuset); + if (hwloc_bitmap_first(drawerset) == i) { + struct hwloc_obj *drawer; + unsigned mydrawerid; + mydrawerid = (unsigned) -1; + sprintf(str, "%s/cpu%d/topology/drawer_id", path, i); /* contains %d at least up to 4.19 */ + if (hwloc_read_path_as_int(str, &tmpint, data->root_fd) == 0) { + mydrawerid = (unsigned) tmpint; + + drawer = hwloc_alloc_setup_object(topology, HWLOC_OBJ_GROUP, mydrawerid); + drawer->cpuset = drawerset; + hwloc_debug_1arg_bitmap("os drawer %u has cpuset %s\n", + mydrawerid, drawerset); + drawer->subtype = strdup("Drawer"); + drawer->attr->group.kind = HWLOC_GROUP_KIND_S390_BOOK; + drawer->attr->group.subkind = 1; + hwloc__insert_object_by_cpuset(topology, NULL, drawer, "linux:sysfs:group:drawer"); + drawerset = NULL; /* don't free it */ + } + } + hwloc_bitmap_free(drawerset); + } + } + } + + /* PU cannot be filtered-out */ + { + /* look at the thread */ + hwloc_bitmap_t threadset; + struct hwloc_obj *thread = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PU, (unsigned) i); + threadset = hwloc_bitmap_alloc(); + hwloc_bitmap_only(threadset, i); + thread->cpuset = threadset; + hwloc_debug_1arg_bitmap("thread %d has cpuset %s\n", + i, threadset); + hwloc__insert_object_by_cpuset(topology, NULL, thread, "linux:sysfs:pu"); + } + + /* look at the caches */ + for(j=0; j<10; j++) { + char str2[20]; /* enough for a level number (one digit) or a type (Data/Instruction/Unified) */ + hwloc_bitmap_t cacheset; + + sprintf(str, "%s/cpu%d/cache/index%d/shared_cpu_map", path, i, j); + cacheset = hwloc__alloc_read_path_as_cpumask(str, data->root_fd); + if (cacheset) { + if (hwloc_bitmap_iszero(cacheset)) { + /* ia64 returning empty L3 and L2i? use the core set instead */ + hwloc_bitmap_t tmpset; + if (old_filenames) + sprintf(str, "%s/cpu%d/topology/thread_siblings", path, i); + else + sprintf(str, "%s/cpu%d/topology/core_cpus", path, i); + tmpset = hwloc__alloc_read_path_as_cpumask(str, data->root_fd); + /* only use it if we actually got something */ + if (tmpset) { + hwloc_bitmap_free(cacheset); + cacheset = tmpset; + } + } + hwloc_bitmap_and(cacheset, cacheset, cpuset); + + if (hwloc_bitmap_first(cacheset) == i) { + unsigned kB; + unsigned linesize; + unsigned sets, lines_per_tag; + unsigned depth; /* 1 for L1, .... */ + hwloc_obj_cache_type_t ctype = HWLOC_OBJ_CACHE_UNIFIED; /* default */ + hwloc_obj_type_t otype; + unsigned id = HWLOC_UNKNOWN_INDEX; + struct hwloc_obj *cache; + + /* get the cache level depth */ + sprintf(str, "%s/cpu%d/cache/index%d/level", path, i, j); /* contains %u at least up to 4.19 */ + if (hwloc_read_path_as_uint(str, &depth, data->root_fd) < 0) { + hwloc_bitmap_free(cacheset); + continue; + } + + /* cache type */ + sprintf(str, "%s/cpu%d/cache/index%d/type", path, i, j); + if (hwloc_read_path_by_length(str, str2, sizeof(str2), data->root_fd) > 0) { + if (!strncmp(str2, "Data", 4)) + ctype = HWLOC_OBJ_CACHE_DATA; + else if (!strncmp(str2, "Unified", 7)) + ctype = HWLOC_OBJ_CACHE_UNIFIED; + else if (!strncmp(str2, "Instruction", 11)) + ctype = HWLOC_OBJ_CACHE_INSTRUCTION; + } + + /* cache id */ + sprintf(str, "%s/cpu%d/cache/index%d/id", path, i, j); + hwloc_read_path_as_uint(str, &id, data->root_fd); + + otype = hwloc_cache_type_by_depth_type(depth, ctype); + if (otype == HWLOC_OBJ_TYPE_NONE + || !hwloc_filter_check_keep_object_type(topology, otype)) { + hwloc_bitmap_free(cacheset); + continue; + } + + /* FIXME: if Bulldozer/Piledriver, add compute unit Groups when L2/L1i filtered-out */ + /* FIXME: if KNL, add tile Groups when L2/L1i filtered-out */ + + /* get the cache size */ + kB = 0; + sprintf(str, "%s/cpu%d/cache/index%d/size", path, i, j); /* contains %uK at least up to 4.19 */ + hwloc_read_path_as_uint(str, &kB, data->root_fd); + /* KNL reports L3 with size=0 and full cpuset in cpuid. + * Let hwloc_linux_try_add_knl_mcdram_cache() detect it better. + */ + if (!kB && otype == HWLOC_OBJ_L3CACHE && data->is_knl) { + hwloc_bitmap_free(cacheset); + continue; + } + + /* get the line size */ + linesize = 0; + sprintf(str, "%s/cpu%d/cache/index%d/coherency_line_size", path, i, j); /* contains %u at least up to 4.19 */ + hwloc_read_path_as_uint(str, &linesize, data->root_fd); + + /* get the number of sets and lines per tag. + * don't take the associativity directly in "ways_of_associativity" because + * some archs (ia64, ppc) put 0 there when fully-associative, while others (x86) put something like -1 there. + */ + sets = 0; + sprintf(str, "%s/cpu%d/cache/index%d/number_of_sets", path, i, j); /* contains %u at least up to 4.19 */ + hwloc_read_path_as_uint(str, &sets, data->root_fd); + + lines_per_tag = 1; + sprintf(str, "%s/cpu%d/cache/index%d/physical_line_partition", path, i, j); /* contains %u at least up to 4.19 */ + hwloc_read_path_as_uint(str, &lines_per_tag, data->root_fd); + + /* first cpu in this cache, add the cache */ + cache = hwloc_alloc_setup_object(topology, otype, id); + cache->attr->cache.size = ((uint64_t)kB) << 10; + cache->attr->cache.depth = depth; + cache->attr->cache.linesize = linesize; + cache->attr->cache.type = ctype; + if (!linesize || !lines_per_tag || !sets) + cache->attr->cache.associativity = 0; /* unknown */ + else if (sets == 1) + cache->attr->cache.associativity = 0; /* likely wrong, make it unknown */ + else + cache->attr->cache.associativity = (kB << 10) / linesize / lines_per_tag / sets; + cache->cpuset = cacheset; + hwloc_debug_1arg_bitmap("cache depth %u has cpuset %s\n", + depth, cacheset); + hwloc__insert_object_by_cpuset(topology, NULL, cache, "linux:sysfs:cache"); + cacheset = NULL; /* don't free it */ + } + } + hwloc_bitmap_free(cacheset); + } + + } hwloc_bitmap_foreach_end(); + + hwloc_bitmap_free(cpuset); + hwloc_bitmap_free(online_set); + + return 0; +} + + + +/**************************************** + ****** cpuinfo Topology Discovery ****** + ****************************************/ + +static int +hwloc_linux_parse_cpuinfo_x86(const char *prefix, const char *value, + struct hwloc_info_s **infos, unsigned *infos_count, + int is_global __hwloc_attribute_unused) +{ + if (!strcmp("vendor_id", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUVendor", value); + } else if (!strcmp("model name", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUModel", value); + } else if (!strcmp("model", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUModelNumber", value); + } else if (!strcmp("cpu family", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUFamilyNumber", value); + } else if (!strcmp("stepping", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUStepping", value); + } + return 0; +} + +static int +hwloc_linux_parse_cpuinfo_ia64(const char *prefix, const char *value, + struct hwloc_info_s **infos, unsigned *infos_count, + int is_global __hwloc_attribute_unused) +{ + if (!strcmp("vendor", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUVendor", value); + } else if (!strcmp("model name", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUModel", value); + } else if (!strcmp("model", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUModelNumber", value); + } else if (!strcmp("family", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUFamilyNumber", value); + } + return 0; +} + +static int +hwloc_linux_parse_cpuinfo_arm(const char *prefix, const char *value, + struct hwloc_info_s **infos, unsigned *infos_count, + int is_global __hwloc_attribute_unused) +{ + if (!strcmp("Processor", prefix) /* old kernels with one Processor header */ + || !strcmp("model name", prefix) /* new kernels with one model name per core */) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUModel", value); + } else if (!strcmp("CPU implementer", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUImplementer", value); + } else if (!strcmp("CPU architecture", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUArchitecture", value); + } else if (!strcmp("CPU variant", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUVariant", value); + } else if (!strcmp("CPU part", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUPart", value); + } else if (!strcmp("CPU revision", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPURevision", value); + } else if (!strcmp("Hardware", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "HardwareName", value); + } else if (!strcmp("Revision", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "HardwareRevision", value); + } else if (!strcmp("Serial", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "HardwareSerial", value); + } + return 0; +} + +static int +hwloc_linux_parse_cpuinfo_ppc(const char *prefix, const char *value, + struct hwloc_info_s **infos, unsigned *infos_count, + int is_global) +{ + /* common fields */ + if (!strcmp("cpu", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "CPUModel", value); + } else if (!strcmp("platform", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "PlatformName", value); + } else if (!strcmp("model", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "PlatformModel", value); + } + /* platform-specific fields */ + else if (!strcasecmp("vendor", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "PlatformVendor", value); + } else if (!strcmp("Board ID", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "PlatformBoardID", value); + } else if (!strcmp("Board", prefix) + || !strcasecmp("Machine", prefix)) { + /* machine and board are similar (and often more precise) than model above */ + if (value[0]) + hwloc__add_info_nodup(infos, infos_count, "PlatformModel", value, 1); + } else if (!strcasecmp("Revision", prefix) + || !strcmp("Hardware rev", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, is_global ? "PlatformRevision" : "CPURevision", value); + } else if (!strcmp("SVR", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "SystemVersionRegister", value); + } else if (!strcmp("PVR", prefix)) { + if (value[0]) + hwloc__add_info(infos, infos_count, "ProcessorVersionRegister", value); + } + /* don't match 'board*' because there's also "board l2" on some platforms */ + return 0; +} + +/* + * avr32: "chip type\t:" => OK + * blackfin: "model name\t:" => OK + * h8300: "CPU:" => OK + * m68k: "CPU:" => OK + * mips: "cpu model\t\t:" => OK + * openrisc: "CPU:" => OK + * sparc: "cpu\t\t:" => OK + * tile: "model name\t:" => OK + * unicore32: "Processor\t:" => OK + * alpha: "cpu\t\t\t: Alpha" + "cpu model\t\t:" => "cpu" overwritten by "cpu model", no processor indexes + * cris: "cpu\t\t:" + "cpu model\t:" => only "cpu" + * frv: "CPU-Core:" + "CPU:" => only "CPU" + * mn10300: "cpu core :" + "model name :" => only "model name" + * parisc: "cpu family\t:" + "cpu\t\t:" => only "cpu" + * + * not supported because of conflicts with other arch minor lines: + * m32r: "cpu family\t:" => KO (adding "cpu family" would break "blackfin") + * microblaze: "CPU-Family:" => KO + * sh: "cpu family\t:" + "cpu type\t:" => KO + * xtensa: "model\t\t:" => KO + */ +static int +hwloc_linux_parse_cpuinfo_generic(const char *prefix, const char *value, + struct hwloc_info_s **infos, unsigned *infos_count, + int is_global __hwloc_attribute_unused) +{ + if (!strcmp("model name", prefix) + || !strcmp("Processor", prefix) + || !strcmp("chip type", prefix) + || !strcmp("cpu model", prefix) + || !strcasecmp("cpu", prefix)) { + /* keep the last one, assume it's more precise than the first one. + * we should have the Architecture keypair for basic information anyway. + */ + if (value[0]) + hwloc__add_info_nodup(infos, infos_count, "CPUModel", value, 1); + } + return 0; +} + +/* Lprocs_p set to NULL unless returns > 0 */ +static int +hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data, + const char *path, + struct hwloc_linux_cpuinfo_proc ** Lprocs_p, + struct hwloc_info_s **global_infos, unsigned *global_infos_count) +{ + /* FIXME: only parse once per package and once for globals? */ + FILE *fd; + char str[128]; /* vendor/model can be very long */ + char *endptr; + unsigned allocated_Lprocs = 0; + struct hwloc_linux_cpuinfo_proc * Lprocs = NULL; + unsigned numprocs = 0; + int curproc = -1; + int (*parse_cpuinfo_func)(const char *, const char *, struct hwloc_info_s **, unsigned *, int) = NULL; + + if (!(fd=hwloc_fopen(path,"r", data->root_fd))) + { + hwloc_debug("could not open %s\n", path); + return -1; + } + +# define PROCESSOR "processor" + hwloc_debug("\n\n * Topology extraction from %s *\n\n", path); + while (fgets(str, sizeof(str), fd)!=NULL) { + unsigned long Pproc; + char *end, *dot, *prefix, *value; + int noend = 0; + + /* remove the ending \n */ + end = strchr(str, '\n'); + if (end) + *end = 0; + else + noend = 1; + /* if empty line, skip and reset curproc */ + if (!*str) { + curproc = -1; + continue; + } + /* skip lines with no dot */ + dot = strchr(str, ':'); + if (!dot) + continue; + /* skip lines not starting with a letter */ + if ((*str > 'z' || *str < 'a') + && (*str > 'Z' || *str < 'A')) + continue; + + /* mark the end of the prefix */ + prefix = str; + end = dot; + while (end[-1] == ' ' || end[-1] == '\t') end--; /* need a strrspn() */ + *end = 0; + /* find beginning of value, its end is already marked */ + value = dot+1 + strspn(dot+1, " \t"); + + /* defines for parsing numbers */ +# define getprocnb_begin(field, var) \ + if (!strcmp(field,prefix)) { \ + var = strtoul(value,&endptr,0); \ + if (endptr==value) { \ + hwloc_debug("no number in "field" field of %s\n", path); \ + goto err; \ + } else if (var==ULONG_MAX) { \ + hwloc_debug("too big "field" number in %s\n", path); \ + goto err; \ + } \ + hwloc_debug(field " %lu\n", var) +# define getprocnb_end() \ + } + /* actually parse numbers */ + getprocnb_begin(PROCESSOR, Pproc); + curproc = numprocs++; + if (numprocs > allocated_Lprocs) { + struct hwloc_linux_cpuinfo_proc * tmp; + if (!allocated_Lprocs) + allocated_Lprocs = 8; + else + allocated_Lprocs *= 2; + tmp = realloc(Lprocs, allocated_Lprocs * sizeof(*Lprocs)); + if (!tmp) + goto err; + Lprocs = tmp; + } + Lprocs[curproc].Pproc = Pproc; + Lprocs[curproc].infos = NULL; + Lprocs[curproc].infos_count = 0; + getprocnb_end() else { + + /* architecture specific or default routine for parsing cpumodel */ + switch (data->arch) { + case HWLOC_LINUX_ARCH_X86: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_x86; + break; + case HWLOC_LINUX_ARCH_ARM: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_arm; + break; + case HWLOC_LINUX_ARCH_POWER: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ppc; + break; + case HWLOC_LINUX_ARCH_IA64: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ia64; + break; + default: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_generic; + } + + /* we can't assume that we already got a processor index line: + * alpha/frv/h8300/m68k/microblaze/sparc have no processor lines at all, only a global entry. + * tile has a global section with model name before the list of processor lines. + */ + parse_cpuinfo_func(prefix, value, + curproc >= 0 ? &Lprocs[curproc].infos : global_infos, + curproc >= 0 ? &Lprocs[curproc].infos_count : global_infos_count, + curproc < 0); + } + + if (noend) { + /* ignore end of line */ + if (fscanf(fd,"%*[^\n]") == EOF) + break; + getc(fd); + } + } + fclose(fd); + + *Lprocs_p = Lprocs; + return numprocs; + + err: + fclose(fd); + free(Lprocs); + *Lprocs_p = NULL; + return -1; +} + +static void +hwloc_linux_free_cpuinfo(struct hwloc_linux_cpuinfo_proc * Lprocs, unsigned numprocs, + struct hwloc_info_s *global_infos, unsigned global_infos_count) +{ + if (Lprocs) { + unsigned i; + for(i=0; iutsname, 0, sizeof(data->utsname)); + data->fallback_nbprocessors = -1; /* unknown yet */ + data->pagesize = 4096; + + /* read thissystem info */ + if (topology->is_thissystem) { + uname(&data->utsname); + data->fallback_nbprocessors = hwloc_fallback_nbprocessors(0); /* errors managed in hwloc_linux_fallback_pu_level() */ + data->pagesize = hwloc_getpagesize(); + } + + if (!data->is_real_fsroot) { + /* overwrite with optional /proc/hwloc-nofile-info */ + file = hwloc_fopen("/proc/hwloc-nofile-info", "r", data->root_fd); + if (file) { + while (fgets(line, sizeof(line), file)) { + char *tmp = strchr(line, '\n'); + if (!strncmp("OSName: ", line, 8)) { + if (tmp) + *tmp = '\0'; + strncpy(data->utsname.sysname, line+8, sizeof(data->utsname.sysname)); + data->utsname.sysname[sizeof(data->utsname.sysname)-1] = '\0'; + } else if (!strncmp("OSRelease: ", line, 11)) { + if (tmp) + *tmp = '\0'; + strncpy(data->utsname.release, line+11, sizeof(data->utsname.release)); + data->utsname.release[sizeof(data->utsname.release)-1] = '\0'; + } else if (!strncmp("OSVersion: ", line, 11)) { + if (tmp) + *tmp = '\0'; + strncpy(data->utsname.version, line+11, sizeof(data->utsname.version)); + data->utsname.version[sizeof(data->utsname.version)-1] = '\0'; + } else if (!strncmp("HostName: ", line, 10)) { + if (tmp) + *tmp = '\0'; + strncpy(data->utsname.nodename, line+10, sizeof(data->utsname.nodename)); + data->utsname.nodename[sizeof(data->utsname.nodename)-1] = '\0'; + } else if (!strncmp("Architecture: ", line, 14)) { + if (tmp) + *tmp = '\0'; + strncpy(data->utsname.machine, line+14, sizeof(data->utsname.machine)); + data->utsname.machine[sizeof(data->utsname.machine)-1] = '\0'; + } else if (!strncmp("FallbackNbProcessors: ", line, 22)) { + if (tmp) + *tmp = '\0'; + data->fallback_nbprocessors = atoi(line+22); + } else if (!strncmp("PageSize: ", line, 10)) { + if (tmp) + *tmp = '\0'; + data->pagesize = strtoull(line+10, NULL, 10); + } else { + hwloc_debug("ignored /proc/hwloc-nofile-info line %s\n", line); + /* ignored */ + } + } + fclose(file); + } + } + + env = getenv("HWLOC_DUMP_NOFILE_INFO"); + if (env && *env) { + file = fopen(env, "w"); + if (file) { + if (*data->utsname.sysname) + fprintf(file, "OSName: %s\n", data->utsname.sysname); + if (*data->utsname.release) + fprintf(file, "OSRelease: %s\n", data->utsname.release); + if (*data->utsname.version) + fprintf(file, "OSVersion: %s\n", data->utsname.version); + if (*data->utsname.nodename) + fprintf(file, "HostName: %s\n", data->utsname.nodename); + if (*data->utsname.machine) + fprintf(file, "Architecture: %s\n", data->utsname.machine); + fprintf(file, "FallbackNbProcessors: %d\n", data->fallback_nbprocessors); + fprintf(file, "PageSize: %llu\n", (unsigned long long) data->pagesize); + fclose(file); + } + } + + /* detect arch for quirks, using configure #defines if possible, or uname */ +#if (defined HWLOC_X86_32_ARCH) || (defined HWLOC_X86_64_ARCH) /* does not cover KNC */ + if (topology->is_thissystem) + data->arch = HWLOC_LINUX_ARCH_X86; +#endif + if (data->arch == HWLOC_LINUX_ARCH_UNKNOWN && *data->utsname.machine) { + if (!strcmp(data->utsname.machine, "x86_64") + || (data->utsname.machine[0] == 'i' && !strcmp(data->utsname.machine+2, "86")) + || !strcmp(data->utsname.machine, "k1om")) + data->arch = HWLOC_LINUX_ARCH_X86; + else if (!strncmp(data->utsname.machine, "arm", 3)) + data->arch = HWLOC_LINUX_ARCH_ARM; + else if (!strncmp(data->utsname.machine, "ppc", 3) + || !strncmp(data->utsname.machine, "power", 5)) + data->arch = HWLOC_LINUX_ARCH_POWER; + else if (!strncmp(data->utsname.machine, "s390", 4)) + data->arch = HWLOC_LINUX_ARCH_S390; + else if (!strcmp(data->utsname.machine, "ia64")) + data->arch = HWLOC_LINUX_ARCH_IA64; + } +} + +/* returns 0 on success, -1 on non-match or error during hardwired load */ +static int +hwloc_linux_try_hardwired_cpuinfo(struct hwloc_backend *backend) +{ + struct hwloc_topology *topology = backend->topology; + struct hwloc_linux_backend_data_s *data = backend->private_data; + + if (getenv("HWLOC_NO_HARDWIRED_TOPOLOGY")) + return -1; + + if (!strcmp(data->utsname.machine, "s64fx")) { + char line[128]; + /* Fujistu K-computer, FX10, and FX100 use specific processors + * whose Linux topology support is broken until 4.1 (acc455cffa75070d55e74fc7802b49edbc080e92and) + * and existing machines will likely never be fixed by kernel upgrade. + */ + + /* /proc/cpuinfo starts with one of these lines: + * "cpu : Fujitsu SPARC64 VIIIfx" + * "cpu : Fujitsu SPARC64 XIfx" + * "cpu : Fujitsu SPARC64 IXfx" + */ + if (hwloc_read_path_by_length("/proc/cpuinfo", line, sizeof(line), data->root_fd) <= 0) + return -1; + + if (strncmp(line, "cpu\t", 4)) + return -1; + + if (strstr(line, "Fujitsu SPARC64 VIIIfx")) + return hwloc_look_hardwired_fujitsu_k(topology); + else if (strstr(line, "Fujitsu SPARC64 IXfx")) + return hwloc_look_hardwired_fujitsu_fx10(topology); + else if (strstr(line, "FUJITSU SPARC64 XIfx")) + return hwloc_look_hardwired_fujitsu_fx100(topology); + } + return -1; +} + +static void hwloc_linux__get_allowed_resources(hwloc_topology_t topology, const char *root_path, int root_fd, char **cpuset_namep) +{ + enum hwloc_linux_cgroup_type_e cgtype; + char *mntpnt, *cpuset_name = NULL; + + hwloc_find_linux_cgroup_mntpnt(&cgtype, &mntpnt, root_path, root_fd); + if (mntpnt) { + cpuset_name = hwloc_read_linux_cgroup_name(root_fd, topology->pid); + if (cpuset_name) { + hwloc_admin_disable_set_from_cgroup(root_fd, cgtype, mntpnt, cpuset_name, "cpus", topology->allowed_cpuset); + hwloc_admin_disable_set_from_cgroup(root_fd, cgtype, mntpnt, cpuset_name, "mems", topology->allowed_nodeset); + } + free(mntpnt); + } + *cpuset_namep = cpuset_name; +} + +static void +hwloc_linux_fallback_pu_level(struct hwloc_backend *backend) +{ + struct hwloc_topology *topology = backend->topology; + struct hwloc_linux_backend_data_s *data = backend->private_data; + + if (data->fallback_nbprocessors >= 1) + topology->support.discovery->pu = 1; + else + data->fallback_nbprocessors = 1; + hwloc_setup_pu_level(topology, data->fallback_nbprocessors); +} + +static const char *find_sysfs_cpu_path(int root_fd, int *old_filenames) +{ + unsigned first; + int err; + + if (!hwloc_access("/sys/bus/cpu/devices", R_OK|X_OK, root_fd)) { + if (!hwloc_access("/sys/bus/cpu/devices/cpu0/topology/package_cpus", R_OK, root_fd) + || !hwloc_access("/sys/bus/cpu/devices/cpu0/topology/core_cpus", R_OK, root_fd)) { + return "/sys/bus/cpu/devices"; + } + + if (!hwloc_access("/sys/bus/cpu/devices/cpu0/topology/core_siblings", R_OK, root_fd) + || !hwloc_access("/sys/bus/cpu/devices/cpu0/topology/thread_siblings", R_OK, root_fd)) { + *old_filenames = 1; + return "/sys/bus/cpu/devices"; + } + } + + if (!hwloc_access("/sys/devices/system/cpu", R_OK|X_OK, root_fd)) { + if (!hwloc_access("/sys/devices/system/cpu/cpu0/topology/package_cpus", R_OK, root_fd) + || !hwloc_access("/sys/devices/system/cpu/cpu0/topology/core_cpus", R_OK, root_fd)) { + return "/sys/devices/system/cpu"; + } + + if (!hwloc_access("/sys/devices/system/cpu/cpu0/topology/core_siblings", R_OK, root_fd) + || !hwloc_access("/sys/devices/system/cpu/cpu0/topology/thread_siblings", R_OK, root_fd)) { + *old_filenames = 1; + return "/sys/devices/system/cpu"; + } + } + + /* cpu0 might be offline, fallback to looking at the first online cpu. + * online contains comma-separated ranges, just read the first number. + */ + hwloc_debug("Failed to find sysfs cpu files using cpu0, looking at online CPUs...\n"); + err = hwloc_read_path_as_uint("/sys/devices/system/cpu/online", &first, root_fd); + if (err) { + hwloc_debug("Failed to find read /sys/devices/system/cpu/online.\n"); + } else { + char path[PATH_MAX]; + hwloc_debug("Found CPU#%u as first online CPU\n", first); + + if (!hwloc_access("/sys/bus/cpu/devices", R_OK|X_OK, root_fd)) { + snprintf(path, sizeof(path), "/sys/bus/cpu/devices/cpu%u/topology/package_cpus", first); + if (!hwloc_access(path, R_OK, root_fd)) + return "/sys/bus/cpu/devices"; + snprintf(path, sizeof(path), "/sys/bus/cpu/devices/cpu%u/topology/core_cpus", first); + if (!hwloc_access(path, R_OK, root_fd)) + return "/sys/bus/cpu/devices"; + + snprintf(path, sizeof(path), "/sys/bus/cpu/devices/cpu%u/topology/core_siblings", first); + if (!hwloc_access(path, R_OK, root_fd)) { + *old_filenames = 1; + return "/sys/bus/cpu/devices"; + } + snprintf(path, sizeof(path), "/sys/bus/cpu/devices/cpu%u/topology/thread_siblings", first); + if (!hwloc_access(path, R_OK, root_fd)) { + *old_filenames = 1; + return "/sys/bus/cpu/devices"; + } + } + + if (!hwloc_access("/sys/devices/system/cpu", R_OK|X_OK, root_fd)) { + snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%u/topology/package_cpus", first); + if (!hwloc_access(path, R_OK, root_fd)) + return "/sys/devices/system/cpu"; + snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%u/topology/core_cpus", first); + if (!hwloc_access(path, R_OK, root_fd)) + return "/sys/devices/system/cpu"; + + snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%u/topology/core_siblings", first); + if (!hwloc_access(path, R_OK, root_fd)) { + *old_filenames = 1; + return "/sys/devices/system/cpu"; + } + snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%u/topology/thread_siblings", first); + if (!hwloc_access(path, R_OK, root_fd)) { + *old_filenames = 1; + return "/sys/devices/system/cpu"; + } + } + } + + return NULL; +} + +static const char *find_sysfs_node_path(int root_fd) +{ + unsigned first; + int err; + + if (!hwloc_access("/sys/bus/node/devices", R_OK|X_OK, root_fd) + && !hwloc_access("/sys/bus/node/devices/node0/cpumap", R_OK, root_fd)) + return "/sys/bus/node/devices"; + + if (!hwloc_access("/sys/devices/system/node", R_OK|X_OK, root_fd) + && !hwloc_access("/sys/devices/system/node/node0/cpumap", R_OK, root_fd)) + return "/sys/devices/system/node"; + + /* node0 might be offline, fallback to looking at the first online node. + * online contains comma-separated ranges, just read the first number. + */ + hwloc_debug("Failed to find sysfs node files using node0, looking at online nodes...\n"); + err = hwloc_read_path_as_uint("/sys/devices/system/node/online", &first, root_fd); + if (err) { + hwloc_debug("Failed to find read /sys/devices/system/node/online.\n"); + } else { + char path[PATH_MAX]; + hwloc_debug("Found node#%u as first online node\n", first); + + snprintf(path, sizeof(path), "/sys/bus/node/devices/node%u/cpumap", first); + if (!hwloc_access("/sys/bus/node/devices", R_OK|X_OK, root_fd) + && !hwloc_access(path, R_OK, root_fd)) + return "/sys/bus/node/devices"; + + snprintf(path, sizeof(path), "/sys/devices/system/node/node%u/cpumap", first); + if (!hwloc_access("/sys/devices/system/node", R_OK|X_OK, root_fd) + && !hwloc_access(path, R_OK, root_fd)) + return "/sys/devices/system/node"; + } + + return NULL; +} + +static int +hwloc_linuxfs_look_cpu(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend may be used with topology->is_thissystem set (default) + * or not (modified fsroot path). + */ + + struct hwloc_topology *topology = backend->topology; + struct hwloc_linux_backend_data_s *data = backend->private_data; + unsigned nbnodes; + char *cpuset_name = NULL; + struct hwloc_linux_cpuinfo_proc * Lprocs = NULL; + struct hwloc_info_s *global_infos = NULL; + unsigned global_infos_count = 0; + int numprocs; + int already_pus; + int already_numanodes; + const char *sysfs_cpu_path; + const char *sysfs_node_path; + int old_siblings_filenames = 0; + int err; + + /* look for sysfs cpu path containing at least one of core_siblings and thread_siblings */ + sysfs_cpu_path = find_sysfs_cpu_path(data->root_fd, &old_siblings_filenames); + hwloc_debug("Found sysfs cpu files under %s with %s topology filenames\n", + sysfs_cpu_path, old_siblings_filenames ? "old" : "new"); + + /* look for sysfs node path */ + sysfs_node_path = find_sysfs_node_path(data->root_fd); + hwloc_debug("Found sysfs node files under %s\n", + sysfs_node_path); + + already_pus = (topology->levels[0][0]->complete_cpuset != NULL + && !hwloc_bitmap_iszero(topology->levels[0][0]->complete_cpuset)); + /* if there are PUs, still look at memory information + * since x86 misses NUMA node information (unless we forced AMD topoext NUMA nodes) + * memory size. + */ + already_numanodes = (topology->levels[0][0]->complete_nodeset != NULL + && !hwloc_bitmap_iszero(topology->levels[0][0]->complete_nodeset)); + /* if there are already NUMA nodes, we'll just annotate them with memory information, + * which requires the NUMA level to be connected. + */ + if (already_numanodes) + hwloc_topology_reconnect(topology, 0); + + hwloc_alloc_root_sets(topology->levels[0][0]); + + /********************************* + * Platform information for later + */ + hwloc_gather_system_info(topology, data); + + /********************** + * /proc/cpuinfo + */ + numprocs = hwloc_linux_parse_cpuinfo(data, "/proc/cpuinfo", &Lprocs, &global_infos, &global_infos_count); + if (numprocs < 0) + numprocs = 0; + + /************************** + * detect model for quirks + */ + if (data->arch == HWLOC_LINUX_ARCH_X86 && numprocs > 0) { + unsigned i; + const char *cpuvendor = NULL, *cpufamilynumber = NULL, *cpumodelnumber = NULL; + for(i=0; iis_knl = 1; + if (cpuvendor && !strcmp(cpuvendor, "AuthenticAMD") + && cpufamilynumber + && (!strcmp(cpufamilynumber, "21") + || !strcmp(cpufamilynumber, "22"))) + data->is_amd_with_CU = 1; + } + + /********************** + * Gather the list of admin-disabled cpus and mems + */ + if (!(dstatus->flags & HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES)) { + hwloc_linux__get_allowed_resources(topology, data->root_path, data->root_fd, &cpuset_name); + dstatus->flags |= HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES; + } + + /********************** + * CPU information + */ + + /* Don't rediscover CPU resources if already done */ + if (already_pus) + goto cpudone; + + /* Gather the list of cpus now */ + err = hwloc_linux_try_hardwired_cpuinfo(backend); + if (!err) + goto cpudone; + + /* setup root info */ + hwloc__move_infos(&hwloc_get_root_obj(topology)->infos, &hwloc_get_root_obj(topology)->infos_count, + &global_infos, &global_infos_count); + + if (!sysfs_cpu_path) { + /* /sys/.../topology unavailable (before 2.6.16) + * or not containing anything interesting */ + hwloc_linux_fallback_pu_level(backend); + + } else { + /* sysfs */ + if (look_sysfscpu(topology, data, sysfs_cpu_path, old_siblings_filenames, Lprocs, numprocs) < 0) + /* sysfs but we failed to read cpu topology, fallback */ + hwloc_linux_fallback_pu_level(backend); + } + + cpudone: + look_sysfscpukinds(topology, data, sysfs_cpu_path); + + /********************* + * Memory information + */ + + /* Get the machine memory attributes */ + hwloc_get_machine_meminfo(data, &topology->machine_memory); + + /* Gather NUMA information. */ + if (sysfs_node_path) { + if (hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NUMANODE) > 0) + annotate_sysfsnode(topology, data, sysfs_node_path, &nbnodes); + else + look_sysfsnode(topology, data, sysfs_node_path, &nbnodes); + } else + nbnodes = 0; + + /********************** + * Misc + */ + + /* Gather DMI info */ + hwloc__get_dmi_id_info(data, topology->levels[0][0]); + + hwloc_obj_add_info(topology->levels[0][0], "Backend", "Linux"); + if (cpuset_name) { + hwloc_obj_add_info(topology->levels[0][0], "LinuxCgroup", cpuset_name); + free(cpuset_name); + } + + /* data->utsname was filled with real uname or \0, we can safely pass it */ + hwloc_add_uname_info(topology, &data->utsname); + + hwloc_linux_free_cpuinfo(Lprocs, numprocs, global_infos, global_infos_count); + return 0; +} + + + +/**************************************** + ***** Linux PCI backend callbacks ****** + ****************************************/ + +/* + * backend callback for retrieving the location of a pci device + */ +static int +hwloc_linux_backend_get_pci_busid_cpuset(struct hwloc_backend *backend, + struct hwloc_pcidev_attr_s *busid, hwloc_bitmap_t cpuset) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + char path[256]; + int err; + + snprintf(path, sizeof(path), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/local_cpus", + busid->domain, busid->bus, + busid->dev, busid->func); + err = hwloc__read_path_as_cpumask(path, cpuset, data->root_fd); + if (!err && !hwloc_bitmap_iszero(cpuset)) + return 0; + return -1; +} + + + +#ifdef HWLOC_HAVE_LINUXIO + +/*********************************** + ******* Linux I/O discovery ******* + ***********************************/ + +#define HWLOC_LINUXFS_OSDEV_FLAG_FIND_VIRTUAL (1U<<0) +#define HWLOC_LINUXFS_OSDEV_FLAG_FIND_USB (1U<<1) +#define HWLOC_LINUXFS_OSDEV_FLAG_BLOCK_WITH_SECTORS (1U<<2) +#define HWLOC_LINUXFS_OSDEV_FLAG_UNDER_BUS (1U<<31) + +static hwloc_obj_t +hwloc_linuxfs_find_osdev_parent(struct hwloc_backend *backend, int root_fd, + const char *osdevpath, unsigned osdev_flags) +{ + struct hwloc_topology *topology = backend->topology; + char path[256]; + int foundpci; + unsigned pcidomain = 0, pcibus = 0, pcidev = 0, pcifunc = 0; + unsigned _pcidomain, _pcibus, _pcidev, _pcifunc; + hwloc_bitmap_t cpuset; + const char *tmp; + hwloc_obj_t parent; + const char *devicesubdir; + int node, err; + + if (osdev_flags & HWLOC_LINUXFS_OSDEV_FLAG_UNDER_BUS) + devicesubdir = ".."; + else + devicesubdir = "device"; + + err = hwloc_readlink(osdevpath, path, sizeof(path), root_fd); + if (err < 0) { + /* /sys/class// is a directory instead of a symlink on old kernels (at least around 2.6.18 and 2.6.25). + * The link to parse can be found in /sys/class///device instead, at least for "/pci..." + */ + char olddevpath[256]; + snprintf(olddevpath, sizeof(olddevpath), "%s/device", osdevpath); + err = hwloc_readlink(olddevpath, path, sizeof(path), root_fd); + if (err < 0) + return NULL; + } + path[err] = '\0'; + + if (!(osdev_flags & HWLOC_LINUXFS_OSDEV_FLAG_FIND_VIRTUAL)) { + if (strstr(path, "/virtual/")) + return NULL; + } + + if (!(osdev_flags & HWLOC_LINUXFS_OSDEV_FLAG_FIND_USB)) { + if (strstr(path, "/usb")) + return NULL; + } + + tmp = strstr(path, "/pci"); + if (!tmp) + goto nopci; + tmp = strchr(tmp+4, '/'); + if (!tmp) + goto nopci; + tmp++; + + /* iterate through busid to find the last one (previous ones are bridges) */ + foundpci = 0; + nextpci: + /* tmp points to a PCI [domain:]bus:device.function */ + if (sscanf(tmp, "%x:%x:%x.%x", &_pcidomain, &_pcibus, &_pcidev, &_pcifunc) == 4) { + foundpci = 1; + pcidomain = _pcidomain; + pcibus = _pcibus; + pcidev = _pcidev; + pcifunc = _pcifunc; + tmp = strchr(tmp+4, ':')+9; /* tmp points to at least 4 digits for domain, then a ':' */ + goto nextpci; + } + if (sscanf(tmp, "%x:%x.%x", &_pcibus, &_pcidev, &_pcifunc) == 3) { + foundpci = 1; + pcidomain = 0; + pcibus = _pcibus; + pcidev = _pcidev; + pcifunc = _pcifunc; + tmp += 8; + goto nextpci; + } + + if (foundpci) { + /* attach to a PCI parent or to a normal (non-I/O) parent found by PCI affinity */ + parent = hwloc_pci_find_parent_by_busid(topology, pcidomain, pcibus, pcidev, pcifunc); + if (parent) + return parent; + } + + nopci: + /* attach directly near the right NUMA node */ + snprintf(path, sizeof(path), "%s/%s/numa_node", osdevpath, devicesubdir); + err = hwloc_read_path_as_int(path, &node, root_fd); + if (!err && node >= 0) { + parent = hwloc_get_numanode_obj_by_os_index(topology, (unsigned) node); + if (parent) { + /* don't attach I/O under numa node, attach to the same normal parent */ + while (hwloc__obj_type_is_memory(parent->type)) + parent = parent->parent; + return parent; + } + } + + /* attach directly to the right cpuset */ + snprintf(path, sizeof(path), "%s/%s/local_cpus", osdevpath, devicesubdir); + cpuset = hwloc__alloc_read_path_as_cpumask(path, root_fd); + if (cpuset) { + parent = hwloc_find_insert_io_parent_by_complete_cpuset(topology, cpuset); + hwloc_bitmap_free(cpuset); + if (parent) + return parent; + } + + /* FIXME: {numa_node,local_cpus} may be missing when the device link points to a subdirectory. + * For instance, device of scsi blocks may point to foo/ata1/host0/target0:0:0/0:0:0:0/ instead of foo/ + * In such case, we should look for device/../../../../{numa_node,local_cpus} instead of device/{numa_node,local_cpus} + * Not needed yet since scsi blocks use the PCI locality above. + */ + + /* fallback to the root object */ + return hwloc_get_root_obj(topology); +} + +static hwloc_obj_t +hwloc_linux_add_os_device(struct hwloc_backend *backend, struct hwloc_obj *pcidev, hwloc_obj_osdev_type_t type, const char *name) +{ + struct hwloc_topology *topology = backend->topology; + struct hwloc_obj *obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_OS_DEVICE, HWLOC_UNKNOWN_INDEX); + obj->name = strdup(name); + obj->attr->osdev.type = type; + + hwloc_insert_object_by_parent(topology, pcidev, obj); + /* insert_object_by_parent() doesn't merge during insert, so obj is still valid */ + + return obj; +} + +static void +hwloc_linuxfs_block_class_fillinfos(struct hwloc_backend *backend __hwloc_attribute_unused, int root_fd, + struct hwloc_obj *obj, const char *osdevpath, unsigned osdev_flags) +{ +#ifdef HWLOC_HAVE_LIBUDEV + struct hwloc_linux_backend_data_s *data = backend->private_data; +#endif + FILE *file; + char path[296]; /* osdevpath <= 256 */ + char line[128]; + char vendor[64] = ""; + char model[64] = ""; + char serial[64] = ""; + char revision[64] = ""; + char blocktype[64] = ""; + unsigned sectorsize = 0; + unsigned major_id, minor_id; + const char *devicesubdir; + char *tmp; + + if (osdev_flags & HWLOC_LINUXFS_OSDEV_FLAG_UNDER_BUS) + devicesubdir = ".."; + else + devicesubdir = "device"; + + snprintf(path, sizeof(path), "%s/size", osdevpath); + if (hwloc_read_path_by_length(path, line, sizeof(line), root_fd) > 0) { + unsigned long long value = strtoull(line, NULL, 10); + /* linux always reports size in 512-byte units for blocks, and bytes for dax, we want kB */ + snprintf(line, sizeof(line), "%llu", + (osdev_flags & HWLOC_LINUXFS_OSDEV_FLAG_BLOCK_WITH_SECTORS) ? value / 2 : value >> 10); + hwloc_obj_add_info(obj, "Size", line); + } + + snprintf(path, sizeof(path), "%s/queue/hw_sector_size", osdevpath); + if (hwloc_read_path_by_length(path, line, sizeof(line), root_fd) > 0) { + sectorsize = strtoul(line, NULL, 10); + } + + snprintf(path, sizeof(path), "%s/%s/devtype", osdevpath, devicesubdir); + if (hwloc_read_path_by_length(path, line, sizeof(line), root_fd) > 0) { + /* non-volatile devices use the following subtypes: + * nd_namespace_pmem for pmem/raw (/dev/pmemX) + * nd_btt for pmem/sector (/dev/pmemXs) + * nd_pfn for pmem/fsdax (/dev/pmemX) + * nd_dax for pmem/devdax (/dev/daxX) but it's not a block device anyway + * nd_namespace_blk for blk/raw and blk/sector (/dev/ndblkX) ? + * + * Note that device/sector_size in btt devices includes integrity metadata + * (512/4096 block + 0/N) while queue/hw_sector_size above is the user sectorsize + * without metadata. + */ + if (!strncmp(line, "nd_", 3)) + strcpy(blocktype, "NVDIMM"); /* Save the blocktype now since udev reports "" so far */ + } + if (sectorsize) { + snprintf(line, sizeof(line), "%u", sectorsize); + hwloc_obj_add_info(obj, "SectorSize", line); + } + + snprintf(path, sizeof(path), "%s/dev", osdevpath); + if (hwloc_read_path_by_length(path, line, sizeof(line), root_fd) <= 0) + goto done; + if (sscanf(line, "%u:%u", &major_id, &minor_id) != 2) + goto done; + tmp = strchr(line, '\n'); + if (tmp) + *tmp = '\0'; + hwloc_obj_add_info(obj, "LinuxDeviceID", line); + +#ifdef HWLOC_HAVE_LIBUDEV + if (data->udev) { + struct udev_device *dev; + const char *prop; + dev = udev_device_new_from_subsystem_sysname(data->udev, "block", obj->name); + if (!dev) + goto done; + prop = udev_device_get_property_value(dev, "ID_VENDOR"); + if (prop) { + strncpy(vendor, prop, sizeof(vendor)); + vendor[sizeof(vendor)-1] = '\0'; + } + prop = udev_device_get_property_value(dev, "ID_MODEL"); + if (prop) { + strncpy(model, prop, sizeof(model)); + model[sizeof(model)-1] = '\0'; + } + prop = udev_device_get_property_value(dev, "ID_REVISION"); + if (prop) { + strncpy(revision, prop, sizeof(revision)); + revision[sizeof(revision)-1] = '\0'; + } + prop = udev_device_get_property_value(dev, "ID_SERIAL_SHORT"); + if (prop) { + strncpy(serial, prop, sizeof(serial)); + serial[sizeof(serial)-1] = '\0'; + } + prop = udev_device_get_property_value(dev, "ID_TYPE"); + if (prop) { + strncpy(blocktype, prop, sizeof(blocktype)); + blocktype[sizeof(blocktype)-1] = '\0'; + } + + udev_device_unref(dev); + } else + /* fallback to reading files, works with any fsroot */ +#endif + { + snprintf(path, sizeof(path), "/run/udev/data/b%u:%u", major_id, minor_id); + file = hwloc_fopen(path, "r", root_fd); + if (!file) + goto done; + + while (NULL != fgets(line, sizeof(line), file)) { + tmp = strchr(line, '\n'); + if (tmp) + *tmp = '\0'; + if (!strncmp(line, "E:ID_VENDOR=", strlen("E:ID_VENDOR="))) { + strncpy(vendor, line+strlen("E:ID_VENDOR="), sizeof(vendor)); + vendor[sizeof(vendor)-1] = '\0'; + } else if (!strncmp(line, "E:ID_MODEL=", strlen("E:ID_MODEL="))) { + strncpy(model, line+strlen("E:ID_MODEL="), sizeof(model)); + model[sizeof(model)-1] = '\0'; + } else if (!strncmp(line, "E:ID_REVISION=", strlen("E:ID_REVISION="))) { + strncpy(revision, line+strlen("E:ID_REVISION="), sizeof(revision)); + revision[sizeof(revision)-1] = '\0'; + } else if (!strncmp(line, "E:ID_SERIAL_SHORT=", strlen("E:ID_SERIAL_SHORT="))) { + strncpy(serial, line+strlen("E:ID_SERIAL_SHORT="), sizeof(serial)); + serial[sizeof(serial)-1] = '\0'; + } else if (!strncmp(line, "E:ID_TYPE=", strlen("E:ID_TYPE="))) { + strncpy(blocktype, line+strlen("E:ID_TYPE="), sizeof(blocktype)); + blocktype[sizeof(blocktype)-1] = '\0'; + } + } + fclose(file); + } + + done: + /* clear fake "ATA" vendor name */ + if (!strcasecmp(vendor, "ATA")) + *vendor = '\0'; + /* overwrite vendor name from model when possible */ + if (!*vendor) { + if (!strncasecmp(model, "wd", 2)) + strcpy(vendor, "Western Digital"); + else if (!strncasecmp(model, "st", 2)) + strcpy(vendor, "Seagate"); + else if (!strncasecmp(model, "samsung", 7)) + strcpy(vendor, "Samsung"); + else if (!strncasecmp(model, "sandisk", 7)) + strcpy(vendor, "SanDisk"); + else if (!strncasecmp(model, "toshiba", 7)) + strcpy(vendor, "Toshiba"); + } + + if (*vendor) + hwloc_obj_add_info(obj, "Vendor", vendor); + if (*model) + hwloc_obj_add_info(obj, "Model", model); + if (*revision) + hwloc_obj_add_info(obj, "Revision", revision); + if (*serial) + hwloc_obj_add_info(obj, "SerialNumber", serial); + + if (!strcmp(blocktype, "disk") || !strncmp(obj->name, "nvme", 4)) + obj->subtype = strdup("Disk"); + else if (!strcmp(blocktype, "NVDIMM")) /* FIXME: set by us above, to workaround udev returning "" so far */ + obj->subtype = strdup("NVDIMM"); + else if (!strcmp(blocktype, "tape")) + obj->subtype = strdup("Tape"); + else if (!strcmp(blocktype, "cd") || !strcmp(blocktype, "floppy") || !strcmp(blocktype, "optical")) + obj->subtype = strdup("Removable Media Device"); + else { + /* generic, usb mass storage/rbc, usb mass storage/scsi */ + } +} + +static int +hwloc_linuxfs_lookup_block_class(struct hwloc_backend *backend, unsigned osdev_flags) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + dir = hwloc_opendir("/sys/class/block", root_fd); + if (!dir) + return 0; + + osdev_flags |= HWLOC_LINUXFS_OSDEV_FLAG_BLOCK_WITH_SECTORS; /* uses 512B sectors */ + + while ((dirent = readdir(dir)) != NULL) { + char path[256]; + struct stat stbuf; + hwloc_obj_t obj, parent; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + + /* ignore partitions */ + err = snprintf(path, sizeof(path), "/sys/class/block/%s/partition", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_stat(path, &stbuf, root_fd) >= 0) + continue; + + err = snprintf(path, sizeof(path), "/sys/class/block/%s", dirent->d_name); + if ((size_t) err >= sizeof(path)) + continue; + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags); + if (!parent) + continue; + + /* USB device are created here but removed later when USB PCI devices get filtered out + * (unless WHOLE_IO is enabled). + */ + + obj = hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_BLOCK, dirent->d_name); + + hwloc_linuxfs_block_class_fillinfos(backend, root_fd, obj, path, osdev_flags); + } + + closedir(dir); + + return 0; +} + +static int +hwloc_linuxfs_lookup_dax_class(struct hwloc_backend *backend, unsigned osdev_flags) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + /* depending on the kernel config, dax devices may appear either in /sys/bus/dax or /sys/class/dax */ + + dir = hwloc_opendir("/sys/bus/dax/devices", root_fd); + if (dir) { + int found = 0; + while ((dirent = readdir(dir)) != NULL) { + char path[300]; + char driver[256]; + hwloc_obj_t obj, parent; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + found++; + + /* ignore kmem-device, those appear as additional NUMA nodes */ + err = snprintf(path, sizeof(path), "/sys/bus/dax/devices/%s/driver", dirent->d_name); + if ((size_t) err >= sizeof(path)) + continue; + err = hwloc_readlink(path, driver, sizeof(driver), root_fd); + if (err >= 0) { + driver[err] = '\0'; + if (!strcmp(driver+err-5, "/kmem")) + continue; + } + + snprintf(path, sizeof(path), "/sys/bus/dax/devices/%s", dirent->d_name); + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags | HWLOC_LINUXFS_OSDEV_FLAG_UNDER_BUS); + if (!parent) + continue; + + obj = hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_BLOCK, dirent->d_name); + + hwloc_linuxfs_block_class_fillinfos(backend, root_fd, obj, path, osdev_flags | HWLOC_LINUXFS_OSDEV_FLAG_UNDER_BUS); + } + closedir(dir); + + /* don't look in /sys/class/dax if we found something in /sys/bus/dax */ + if (found) + return 0; + } + + dir = hwloc_opendir("/sys/class/dax", root_fd); + if (dir) { + while ((dirent = readdir(dir)) != NULL) { + char path[256]; + hwloc_obj_t obj, parent; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + + /* kmem not supported in class mode, driver may only be changed under bus */ + + err = snprintf(path, sizeof(path), "/sys/class/dax/%s", dirent->d_name); + if ((size_t) err >= sizeof(path)) + continue; + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags); + if (!parent) + continue; + + obj = hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_BLOCK, dirent->d_name); + + hwloc_linuxfs_block_class_fillinfos(backend, root_fd, obj, path, osdev_flags); + } + closedir(dir); + } + + return 0; +} + +static void +hwloc_linuxfs_net_class_fillinfos(int root_fd, + struct hwloc_obj *obj, const char *osdevpath) +{ + struct stat st; + char path[296]; /* osdevpath <= 256 */ + char address[128]; + int err; + snprintf(path, sizeof(path), "%s/address", osdevpath); + if (hwloc_read_path_by_length(path, address, sizeof(address), root_fd) > 0) { + char *eol = strchr(address, '\n'); + if (eol) + *eol = 0; + hwloc_obj_add_info(obj, "Address", address); + } + snprintf(path, sizeof(path), "%s/device/infiniband", osdevpath); + if (!hwloc_stat(path, &st, root_fd)) { + char hexid[16]; + snprintf(path, sizeof(path), "%s/dev_port", osdevpath); + err = hwloc_read_path_by_length(path, hexid, sizeof(hexid), root_fd); + if (err < 0) { + /* fallback t dev_id for old kernels/drivers */ + snprintf(path, sizeof(path), "%s/dev_id", osdevpath); + err = hwloc_read_path_by_length(path, hexid, sizeof(hexid), root_fd); + } + if (err > 0) { + char *eoid; + unsigned long port; + port = strtoul(hexid, &eoid, 0); + if (eoid != hexid) { + char portstr[21]; + snprintf(portstr, sizeof(portstr), "%lu", port+1); + hwloc_obj_add_info(obj, "Port", portstr); + } + } + } +} + +static int +hwloc_linuxfs_lookup_net_class(struct hwloc_backend *backend, unsigned osdev_flags) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + dir = hwloc_opendir("/sys/class/net", root_fd); + if (!dir) + return 0; + + while ((dirent = readdir(dir)) != NULL) { + char path[256]; + hwloc_obj_t obj, parent; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + + err = snprintf(path, sizeof(path), "/sys/class/net/%s", dirent->d_name); + if ((size_t) err >= sizeof(path)) + continue; + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags); + if (!parent) + continue; + + obj = hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_NETWORK, dirent->d_name); + + hwloc_linuxfs_net_class_fillinfos(root_fd, obj, path); + } + + closedir(dir); + + return 0; +} + +static void +hwloc_linuxfs_infiniband_class_fillinfos(int root_fd, + struct hwloc_obj *obj, const char *osdevpath) +{ + char path[296]; /* osdevpath <= 256 */ + char guidvalue[20]; + unsigned i,j; + + snprintf(path, sizeof(path), "%s/node_guid", osdevpath); + if (hwloc_read_path_by_length(path, guidvalue, sizeof(guidvalue), root_fd) > 0) { + size_t len; + len = strspn(guidvalue, "0123456789abcdefx:"); + guidvalue[len] = '\0'; + hwloc_obj_add_info(obj, "NodeGUID", guidvalue); + } + + snprintf(path, sizeof(path), "%s/sys_image_guid", osdevpath); + if (hwloc_read_path_by_length(path, guidvalue, sizeof(guidvalue), root_fd) > 0) { + size_t len; + len = strspn(guidvalue, "0123456789abcdefx:"); + guidvalue[len] = '\0'; + hwloc_obj_add_info(obj, "SysImageGUID", guidvalue); + } + + for(i=1; ; i++) { + char statevalue[2]; + char lidvalue[11]; + char gidvalue[40]; + + snprintf(path, sizeof(path), "%s/ports/%u/state", osdevpath, i); + if (hwloc_read_path_by_length(path, statevalue, sizeof(statevalue), root_fd) > 0) { + char statename[32]; + statevalue[1] = '\0'; /* only keep the first byte/digit */ + snprintf(statename, sizeof(statename), "Port%uState", i); + hwloc_obj_add_info(obj, statename, statevalue); + } else { + /* no such port */ + break; + } + + snprintf(path, sizeof(path), "%s/ports/%u/lid", osdevpath, i); + if (hwloc_read_path_by_length(path, lidvalue, sizeof(lidvalue), root_fd) > 0) { + char lidname[32]; + size_t len; + len = strspn(lidvalue, "0123456789abcdefx"); + lidvalue[len] = '\0'; + snprintf(lidname, sizeof(lidname), "Port%uLID", i); + hwloc_obj_add_info(obj, lidname, lidvalue); + } + + snprintf(path, sizeof(path), "%s/ports/%u/lid_mask_count", osdevpath, i); + if (hwloc_read_path_by_length(path, lidvalue, sizeof(lidvalue), root_fd) > 0) { + char lidname[32]; + size_t len; + len = strspn(lidvalue, "0123456789"); + lidvalue[len] = '\0'; + snprintf(lidname, sizeof(lidname), "Port%uLMC", i); + hwloc_obj_add_info(obj, lidname, lidvalue); + } + + for(j=0; ; j++) { + snprintf(path, sizeof(path), "%s/ports/%u/gids/%u", osdevpath, i, j); + if (hwloc_read_path_by_length(path, gidvalue, sizeof(gidvalue), root_fd) > 0) { + char gidname[32]; + size_t len; + len = strspn(gidvalue, "0123456789abcdefx:"); + gidvalue[len] = '\0'; + if (strncmp(gidvalue+20, "0000:0000:0000:0000", 19)) { + /* only keep initialized GIDs */ + snprintf(gidname, sizeof(gidname), "Port%uGID%u", i, j); + hwloc_obj_add_info(obj, gidname, gidvalue); + } + } else { + /* no such port */ + break; + } + } + } +} + +static int +hwloc_linuxfs_lookup_infiniband_class(struct hwloc_backend *backend, unsigned osdev_flags) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + dir = hwloc_opendir("/sys/class/infiniband", root_fd); + if (!dir) + return 0; + + while ((dirent = readdir(dir)) != NULL) { + char path[256]; + hwloc_obj_t obj, parent; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + + /* blocklist scif* fake devices */ + if (!strncmp(dirent->d_name, "scif", 4)) + continue; + + err = snprintf(path, sizeof(path), "/sys/class/infiniband/%s", dirent->d_name); + if ((size_t) err > sizeof(path)) + continue; + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags); + if (!parent) + continue; + + obj = hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_OPENFABRICS, dirent->d_name); + + hwloc_linuxfs_infiniband_class_fillinfos(root_fd, obj, path); + } + + closedir(dir); + + return 0; +} + +static void +hwloc_linuxfs_bxi_class_fillinfos(int root_fd, + struct hwloc_obj *obj, const char *osdevpath) +{ + char path[296]; /* osdevpath <= 256 */ + char tmp[64]; + obj->subtype = strdup("BXI"); + + snprintf(path, sizeof(path), "%s/uuid", osdevpath); + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + char *end = strchr(tmp, '\n'); + if (end) + *end = '\0'; + hwloc_obj_add_info(obj, "BXIUUID", tmp); + } +} + +static int +hwloc_linuxfs_lookup_bxi_class(struct hwloc_backend *backend, unsigned osdev_flags) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + dir = hwloc_opendir("/sys/class/bxi", root_fd); + if (!dir) + return 0; + + while ((dirent = readdir(dir)) != NULL) { + char path[256]; + hwloc_obj_t obj, parent; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + + err = snprintf(path, sizeof(path), "/sys/class/bxi/%s", dirent->d_name); + if ((size_t) err > sizeof(path)) + continue; + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags); + if (!parent) + continue; + + obj = hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_OPENFABRICS, dirent->d_name); + + hwloc_linuxfs_bxi_class_fillinfos(root_fd, obj, path); + } + + closedir(dir); + + return 0; +} + +static void +hwloc_linuxfs_ve_class_fillinfos(int root_fd, + struct hwloc_obj *obj, const char *osdevpath) +{ + char path[296]; /* osdevpath <= 256 */ + char tmp[64]; + unsigned val; + obj->subtype = strdup("VectorEngine"); + + snprintf(path, sizeof(path), "%s/model", osdevpath); /* in GB */ + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + char *end = strchr(tmp, '\n'); + if (end) + *end = '\0'; + hwloc_obj_add_info(obj, "VectorEngineModel", tmp); + } + + snprintf(path, sizeof(path), "%s/serial", osdevpath); /* in GB */ + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + char *end = strchr(tmp, '\n'); + if (end) + *end = '\0'; + hwloc_obj_add_info(obj, "VectorEngineSerialNumber", tmp); + } + + snprintf(path, sizeof(path), "%s/partitioning_mode", osdevpath); /* in GB */ + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + if (atoi(tmp) > 0) + hwloc_obj_add_info(obj, "VectorEngineNUMAPartitioned", "1"); + } + + snprintf(path, sizeof(path), "%s/num_of_core", osdevpath); + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + size_t len; + len = strspn(tmp, "0123456789"); + tmp[len] = '\0'; + hwloc_obj_add_info(obj, "VectorEngineCores", tmp); + } + + snprintf(path, sizeof(path), "%s/memory_size", osdevpath); /* in GB */ + if (!hwloc_read_path_as_uint(path, &val, root_fd)) { + snprintf(tmp, sizeof(tmp), "%llu", ((unsigned long long) val) * 1024*1024); /* convert from GB to kB */ + hwloc_obj_add_info(obj, "VectorEngineMemorySize", tmp); + } + snprintf(path, sizeof(path), "%s/cache_llc", osdevpath); /* in kB */ + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + size_t len; + len = strspn(tmp, "0123456789"); + tmp[len] = '\0'; + hwloc_obj_add_info(obj, "VectorEngineLLCSize", tmp); + } + snprintf(path, sizeof(path), "%s/cache_l2", osdevpath); /* in kB */ + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + size_t len; + len = strspn(tmp, "0123456789"); + tmp[len] = '\0'; + hwloc_obj_add_info(obj, "VectorEngineL2Size", tmp); + } + snprintf(path, sizeof(path), "%s/cache_l1d", osdevpath); /* in kB */ + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + size_t len; + len = strspn(tmp, "0123456789"); + tmp[len] = '\0'; + hwloc_obj_add_info(obj, "VectorEngineL1dSize", tmp); + } + snprintf(path, sizeof(path), "%s/cache_l1i", osdevpath); /* in kB */ + if (hwloc_read_path_by_length(path, tmp, sizeof(tmp), root_fd) > 0) { + size_t len; + len = strspn(tmp, "0123456789"); + tmp[len] = '\0'; + hwloc_obj_add_info(obj, "VectorEngineL1iSize", tmp); + } +} + +static int +hwloc_linuxfs_lookup_ve_class(struct hwloc_backend *backend, unsigned osdev_flags) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + dir = hwloc_opendir("/sys/class/ve", root_fd); + if (!dir) + return 0; + + while ((dirent = readdir(dir)) != NULL) { + char path[256]; + hwloc_obj_t obj, parent; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + + err = snprintf(path, sizeof(path), "/sys/class/ve/%s", dirent->d_name); + if ((size_t) err > sizeof(path)) + continue; + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags); + if (!parent) + continue; + + obj = hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_COPROC, dirent->d_name); + + hwloc_linuxfs_ve_class_fillinfos(root_fd, obj, path); + } + + closedir(dir); + + return 0; +} + +static int +hwloc_linuxfs_lookup_drm_class(struct hwloc_backend *backend, unsigned osdev_flags) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + dir = hwloc_opendir("/sys/class/drm", root_fd); + if (!dir) + return 0; + + while ((dirent = readdir(dir)) != NULL) { + char path[256]; + hwloc_obj_t parent; + struct stat stbuf; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + + /* only keep main devices, not subdevices for outputs */ + err = snprintf(path, sizeof(path), "/sys/class/drm/%s/dev", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_stat(path, &stbuf, root_fd) < 0) + continue; + + /* Most drivers expose a card%d device. + * Some (free?) drivers also expose render%d. + * Old kernels also have a controlD%d. On recent kernels, it's a symlink to card%d (deprecated?). + * There can also exist some output-specific files such as card0-DP-1. + * + * All these aren't very useful compared to CUDA/OpenCL/... + * Hence the DRM class is only enabled when KEEP_ALL. + * + * FIXME: We might want to filter everything out but card%d. + * Maybe look at the driver (read the end of /sys/class/drm//device/driver symlink), + * to decide whether card%d could be useful (likely not for NVIDIA). + */ + + err = snprintf(path, sizeof(path), "/sys/class/drm/%s", dirent->d_name); + if ((size_t) err >= sizeof(path)) + continue; + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags); + if (!parent) + continue; + + hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_GPU, dirent->d_name); + } + + closedir(dir); + + return 0; +} + +static int +hwloc_linuxfs_lookup_dma_class(struct hwloc_backend *backend, unsigned osdev_flags) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + dir = hwloc_opendir("/sys/class/dma", root_fd); + if (!dir) + return 0; + + while ((dirent = readdir(dir)) != NULL) { + char path[256]; + hwloc_obj_t parent; + int err; + + if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) + continue; + + err = snprintf(path, sizeof(path), "/sys/class/dma/%s", dirent->d_name); + if ((size_t) err >= sizeof(path)) + continue; + parent = hwloc_linuxfs_find_osdev_parent(backend, root_fd, path, osdev_flags); + if (!parent) + continue; + + hwloc_linux_add_os_device(backend, parent, HWLOC_OBJ_OSDEV_DMA, dirent->d_name); + } + + closedir(dir); + + return 0; +} + +struct hwloc_firmware_dmi_mem_device_header { + unsigned char type; + unsigned char length; + unsigned char handle[2]; + unsigned char phy_mem_handle[2]; + unsigned char mem_err_handle[2]; + unsigned char tot_width[2]; + unsigned char dat_width[2]; + unsigned char size[2]; + unsigned char ff; + unsigned char dev_set; + unsigned char dev_loc_str_num; + unsigned char bank_loc_str_num; + unsigned char mem_type; + unsigned char type_detail[2]; + unsigned char speed[2]; + unsigned char manuf_str_num; + unsigned char serial_str_num; + unsigned char asset_tag_str_num; + unsigned char part_num_str_num; + /* don't include the following fields since we don't need them, + * some old implementations may miss them. + */ +}; + +static int check_dmi_entry(const char *buffer) +{ + /* reject empty strings */ + if (!*buffer) + return 0; + /* reject strings of spaces (at least Dell use this for empty memory slots) */ + if (strspn(buffer, " ") == strlen(buffer)) + return 0; + return 1; +} + +static int +hwloc__get_firmware_dmi_memory_info_one(struct hwloc_topology *topology, + unsigned idx, const char *path, FILE *fd, + struct hwloc_firmware_dmi_mem_device_header *header) +{ + unsigned slen; + char buffer[256]; /* enough for memory device strings, or at least for each of them */ + unsigned foff; /* offset in raw file */ + unsigned boff; /* offset in buffer read from raw file */ + unsigned i; + struct hwloc_info_s *infos = NULL; + unsigned infos_count = 0; + hwloc_obj_t misc; + int foundinfo = 0; + + /* start after the header */ + foff = header->length; + i = 1; + while (1) { + /* read one buffer */ + if (fseek(fd, foff, SEEK_SET) < 0) + break; + if (!fgets(buffer, sizeof(buffer), fd)) + break; + /* read string at the beginning of the buffer */ + boff = 0; + while (1) { + /* stop on empty string */ + if (!buffer[boff]) + goto done; + /* stop if this string goes to the end of the buffer */ + slen = strlen(buffer+boff); + if (boff + slen+1 == sizeof(buffer)) + break; + /* string didn't get truncated, should be OK */ + if (i == header->manuf_str_num) { + if (check_dmi_entry(buffer+boff)) { + hwloc__add_info(&infos, &infos_count, "Vendor", buffer+boff); + foundinfo = 1; + } + } else if (i == header->serial_str_num) { + if (check_dmi_entry(buffer+boff)) { + hwloc__add_info(&infos, &infos_count, "SerialNumber", buffer+boff); + foundinfo = 1; + } + } else if (i == header->asset_tag_str_num) { + if (check_dmi_entry(buffer+boff)) { + hwloc__add_info(&infos, &infos_count, "AssetTag", buffer+boff); + foundinfo = 1; + } + } else if (i == header->part_num_str_num) { + if (check_dmi_entry(buffer+boff)) { + hwloc__add_info(&infos, &infos_count, "PartNumber", buffer+boff); + foundinfo = 1; + } + } else if (i == header->dev_loc_str_num) { + if (check_dmi_entry(buffer+boff)) { + hwloc__add_info(&infos, &infos_count, "DeviceLocation", buffer+boff); + /* only a location, not an actual info about the device */ + } + } else if (i == header->bank_loc_str_num) { + if (check_dmi_entry(buffer+boff)) { + hwloc__add_info(&infos, &infos_count, "BankLocation", buffer+boff); + /* only a location, not an actual info about the device */ + } + } else { + goto done; + } + /* next string in buffer */ + boff += slen+1; + i++; + } + /* couldn't read a single full string from that buffer, we're screwed */ + if (!boff) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: hwloc could read a DMI firmware entry #%u in %s\n", + i, path); + break; + } + /* reread buffer after previous string */ + foff += boff; + } + +done: + if (!foundinfo) { + /* found no actual info about the device. if there's only location info, the slot may be empty */ + goto out_with_infos; + } + + misc = hwloc_alloc_setup_object(topology, HWLOC_OBJ_MISC, idx); + if (!misc) + goto out_with_infos; + + misc->subtype = strdup("MemoryModule"); + + hwloc__move_infos(&misc->infos, &misc->infos_count, &infos, &infos_count); + /* FIXME: find a way to identify the corresponding NUMA node and attach these objects there. + * but it means we need to parse DeviceLocation=DIMM_B4 but these vary significantly + * with the vendor, and it's hard to be 100% sure 'B' is second socket. + * Examples at http://sourceforge.net/p/edac-utils/code/HEAD/tree/trunk/src/etc/labels.db + * or https://github.com/grondo/edac-utils/blob/master/src/etc/labels.db + */ + hwloc_insert_object_by_parent(topology, hwloc_get_root_obj(topology), misc); + return 1; + + out_with_infos: + hwloc__free_infos(infos, infos_count); + return 0; +} + +static int +hwloc__get_firmware_dmi_memory_info(struct hwloc_topology *topology, + struct hwloc_linux_backend_data_s *data) +{ + char path[128]; + unsigned i; + + for(i=0; ; i++) { + FILE *fd; + struct hwloc_firmware_dmi_mem_device_header header; + int err; + + snprintf(path, sizeof(path), "/sys/firmware/dmi/entries/17-%u/raw", i); + fd = hwloc_fopen(path, "r", data->root_fd); + if (!fd) + break; + + err = fread(&header, sizeof(header), 1, fd); + if (err != 1) { + fclose(fd); + break; + } + if (header.length < sizeof(header)) { + /* invalid, or too old entry/spec that doesn't contain what we need */ + fclose(fd); + break; + } + + hwloc__get_firmware_dmi_memory_info_one(topology, i, path, fd, &header); + + fclose(fd); + } + + return 0; +} + +#ifdef HWLOC_HAVE_LINUXPCI + +#define HWLOC_PCI_REVISION_ID 0x08 +#define HWLOC_PCI_CAP_ID_EXP 0x10 +#define HWLOC_PCI_CLASS_NOT_DEFINED 0x0000 + +static int +hwloc_linuxfs_pci_look_pcidevices(struct hwloc_backend *backend) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; + struct hwloc_topology *topology = backend->topology; + hwloc_obj_t tree = NULL; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + /* We could lookup /sys/devices/pci.../.../busid1/.../busid2 recursively + * to build the hierarchy of bridges/devices directly. + * But that would require readdirs in all bridge sysfs subdirectories. + * Do a single readdir in the linear list in /sys/bus/pci/devices/... + * and build the hierarchy manually instead. + */ + dir = hwloc_opendir("/sys/bus/pci/devices/", root_fd); + if (!dir) + return 0; + + while ((dirent = readdir(dir)) != NULL) { +#define CONFIG_SPACE_CACHESIZE 256 + unsigned char config_space_cache[CONFIG_SPACE_CACHESIZE+1]; /* one more byte for the ending \0 in hwloc_read_path_by_length() */ + unsigned domain, bus, dev, func; + unsigned secondary_bus, subordinate_bus; + unsigned short class_id; + hwloc_obj_type_t type; + hwloc_obj_t obj; + struct hwloc_pcidev_attr_s *attr; + unsigned offset; + char path[64]; + char value[16]; + int err; + + if (sscanf(dirent->d_name, "%x:%02x:%02x.%01x", &domain, &bus, &dev, &func) != 4) + continue; + +#ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN + if (domain > 0xffff) { + static int warned = 0; + if (!warned && hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Ignoring PCI device with non-16bit domain.\nPass --enable-32bits-pci-domain to configure to support such devices\n(warning: it would break the library ABI, don't enable unless really needed).\n"); + warned = 1; + continue; + } +#endif + + /* initialize the config space in case we fail to read it (missing permissions, etc). */ + memset(config_space_cache, 0xff, CONFIG_SPACE_CACHESIZE); + err = snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/config", dirent->d_name); + if ((size_t) err < sizeof(path)) { + hwloc_read_path_by_length(path, (char *) config_space_cache, sizeof(config_space_cache), root_fd); + /* we have CONFIG_SPACE_CACHESIZE bytes + the ending \0 */ + } + + class_id = HWLOC_PCI_CLASS_NOT_DEFINED; + err = snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/class", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, value, sizeof(value), root_fd) > 0) + class_id = strtoul(value, NULL, 16) >> 8; + + type = hwloc_pcidisc_check_bridge_type(class_id, config_space_cache); + /* only HWLOC_OBJ_BRIDGE for bridges to-PCI */ + if (type == HWLOC_OBJ_BRIDGE) { + /* since 4.13, there's secondary_bus_number and subordinate_bus_number in sysfs, + * but reading them from the config-space is easy anyway. + */ + if (hwloc_pcidisc_find_bridge_buses(domain, bus, dev, func, + &secondary_bus, &subordinate_bus, + config_space_cache) < 0) + continue; + } + + /* filtered? */ + if (type == HWLOC_OBJ_PCI_DEVICE) { + enum hwloc_type_filter_e filter; + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_PCI_DEVICE, &filter); + if (filter == HWLOC_TYPE_FILTER_KEEP_NONE) + continue; + if (filter == HWLOC_TYPE_FILTER_KEEP_IMPORTANT + && !hwloc_filter_check_pcidev_subtype_important(class_id)) + continue; + } else if (type == HWLOC_OBJ_BRIDGE) { + enum hwloc_type_filter_e filter; + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_BRIDGE, &filter); + if (filter == HWLOC_TYPE_FILTER_KEEP_NONE) + continue; + /* HWLOC_TYPE_FILTER_KEEP_IMPORTANT filtered later in the core */ + } + + obj = hwloc_alloc_setup_object(topology, type, HWLOC_UNKNOWN_INDEX); + if (!obj) + break; + attr = &obj->attr->pcidev; + + attr->domain = domain; + attr->bus = bus; + attr->dev = dev; + attr->func = func; + + /* bridge specific attributes */ + if (type == HWLOC_OBJ_BRIDGE) { + /* assumes this is a Bridge to-PCI */ + struct hwloc_bridge_attr_s *battr = &obj->attr->bridge; + battr->upstream_type = HWLOC_OBJ_BRIDGE_PCI; + battr->downstream_type = HWLOC_OBJ_BRIDGE_PCI; + battr->downstream.pci.domain = domain; + battr->downstream.pci.secondary_bus = secondary_bus; + battr->downstream.pci.subordinate_bus = subordinate_bus; + } + + /* default (unknown) values */ + attr->vendor_id = 0; + attr->device_id = 0; + attr->class_id = class_id; + attr->revision = 0; + attr->subvendor_id = 0; + attr->subdevice_id = 0; + attr->linkspeed = 0; + + err = snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/vendor", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, value, sizeof(value), root_fd) > 0) + attr->vendor_id = strtoul(value, NULL, 16); + + err = snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/device", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, value, sizeof(value), root_fd) > 0) + attr->device_id = strtoul(value, NULL, 16); + + err = snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/subsystem_vendor", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, value, sizeof(value), root_fd) > 0) + attr->subvendor_id = strtoul(value, NULL, 16); + + err = snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/subsystem_device", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, value, sizeof(value), root_fd) > 0) + attr->subdevice_id = strtoul(value, NULL, 16); + + /* get the revision */ + attr->revision = config_space_cache[HWLOC_PCI_REVISION_ID]; + + /* try to get the link speed */ + offset = hwloc_pcidisc_find_cap(config_space_cache, HWLOC_PCI_CAP_ID_EXP); + if (offset > 0 && offset + 20 /* size of PCI express block up to link status */ <= CONFIG_SPACE_CACHESIZE) { + hwloc_pcidisc_find_linkspeed(config_space_cache, offset, &attr->linkspeed); + } else { + /* if not available from config-space (extended part is root-only), look in sysfs files added in 4.13 */ + float speed = 0.f; + unsigned width = 0; + err = snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/current_link_speed", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, value, sizeof(value), root_fd) > 0) + speed = hwloc_linux_pci_link_speed_from_string(value); + err = snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/current_link_width", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, value, sizeof(value), root_fd) > 0) + width = atoi(value); + attr->linkspeed = speed*width/8; + } + + hwloc_pcidisc_tree_insert_by_busid(&tree, obj); + } + + closedir(dir); + + hwloc_pcidisc_tree_attach(backend->topology, tree); + return 0; +} + +static int +hwloc_linuxfs_pci_look_pcislots(struct hwloc_backend *backend) +{ + struct hwloc_topology *topology = backend->topology; + struct hwloc_linux_backend_data_s *data = backend->private_data; + int root_fd = data->root_fd; + DIR *dir; + struct dirent *dirent; + + dir = hwloc_opendir("/sys/bus/pci/slots/", root_fd); + if (dir) { + while ((dirent = readdir(dir)) != NULL) { + char path[64]; + char buf[64]; + unsigned domain, bus, dev; + int err; + + if (dirent->d_name[0] == '.') + continue; + err = snprintf(path, sizeof(path), "/sys/bus/pci/slots/%s/address", dirent->d_name); + if ((size_t) err < sizeof(path) + && hwloc_read_path_by_length(path, buf, sizeof(buf), root_fd) > 0 + && sscanf(buf, "%x:%x:%x", &domain, &bus, &dev) == 3) { + /* may also be %x:%x without a device number but that's only for hotplug when nothing is plugged, ignore those */ + hwloc_obj_t obj = hwloc_pci_find_by_busid(topology, domain, bus, dev, 0); + /* obj may be higher in the hierarchy that requested (if that exact bus didn't exist), + * we'll check below whether the bus ID is correct. + */ + while (obj) { + /* Apply the slot to that device and its siblings with same domain/bus/dev ID. + * Make sure that siblings are still PCI and on the same bus + * (optional bridge filtering can put different things together). + */ + if (obj->type != HWLOC_OBJ_PCI_DEVICE && + (obj->type != HWLOC_OBJ_BRIDGE || obj->attr->bridge.upstream_type != HWLOC_OBJ_BRIDGE_PCI)) + break; + if (obj->attr->pcidev.domain != domain + || obj->attr->pcidev.bus != bus + || obj->attr->pcidev.dev != dev) + break; + + hwloc_obj_add_info(obj, "PCISlot", dirent->d_name); + obj = obj->next_sibling; + } + } + } + closedir(dir); + } + + return 0; +} +#endif /* HWLOC_HAVE_LINUXPCI */ +#endif /* HWLOC_HAVE_LINUXIO */ + +static int +hwloc_look_linuxfs(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend may be used with topology->is_thissystem set (default) + * or not (modified fsroot path). + */ + + struct hwloc_topology *topology = backend->topology; +#ifdef HWLOC_HAVE_LINUXIO + enum hwloc_type_filter_e pfilter, bfilter, ofilter, mfilter; +#endif /* HWLOC_HAVE_LINUXIO */ + + if (dstatus->phase == HWLOC_DISC_PHASE_CPU) { + hwloc_linuxfs_look_cpu(backend, dstatus); + return 0; + } + +#ifdef HWLOC_HAVE_LINUXIO + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_PCI_DEVICE, &pfilter); + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_BRIDGE, &bfilter); + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_OS_DEVICE, &ofilter); + hwloc_topology_get_type_filter(topology, HWLOC_OBJ_MISC, &mfilter); + + if (dstatus->phase == HWLOC_DISC_PHASE_PCI + && (bfilter != HWLOC_TYPE_FILTER_KEEP_NONE + || pfilter != HWLOC_TYPE_FILTER_KEEP_NONE)) { +#ifdef HWLOC_HAVE_LINUXPCI + hwloc_linuxfs_pci_look_pcidevices(backend); + /* no need to run another PCI phase */ + dstatus->excluded_phases |= HWLOC_DISC_PHASE_PCI; +#endif /* HWLOC_HAVE_LINUXPCI */ + } + + if (dstatus->phase == HWLOC_DISC_PHASE_ANNOTATE + && (bfilter != HWLOC_TYPE_FILTER_KEEP_NONE + || pfilter != HWLOC_TYPE_FILTER_KEEP_NONE)) { +#ifdef HWLOC_HAVE_LINUXPCI + hwloc_linuxfs_pci_look_pcislots(backend); +#endif /* HWLOC_HAVE_LINUXPCI */ + } + + if (dstatus->phase == HWLOC_DISC_PHASE_IO + && ofilter != HWLOC_TYPE_FILTER_KEEP_NONE) { + unsigned osdev_flags = 0; + if (getenv("HWLOC_VIRTUAL_LINUX_OSDEV")) + osdev_flags |= HWLOC_LINUXFS_OSDEV_FLAG_FIND_VIRTUAL; + if (ofilter == HWLOC_TYPE_FILTER_KEEP_ALL) + osdev_flags |= HWLOC_LINUXFS_OSDEV_FLAG_FIND_USB; + + hwloc_linuxfs_lookup_block_class(backend, osdev_flags); + hwloc_linuxfs_lookup_dax_class(backend, osdev_flags); + hwloc_linuxfs_lookup_net_class(backend, osdev_flags); + hwloc_linuxfs_lookup_infiniband_class(backend, osdev_flags); + hwloc_linuxfs_lookup_ve_class(backend, osdev_flags); + hwloc_linuxfs_lookup_bxi_class(backend, osdev_flags); + if (ofilter != HWLOC_TYPE_FILTER_KEEP_IMPORTANT) { + hwloc_linuxfs_lookup_drm_class(backend, osdev_flags); + hwloc_linuxfs_lookup_dma_class(backend, osdev_flags); + } + } + + if (dstatus->phase == HWLOC_DISC_PHASE_MISC + && mfilter != HWLOC_TYPE_FILTER_KEEP_NONE) { + hwloc__get_firmware_dmi_memory_info(topology, backend->private_data); + } +#endif /* HWLOC_HAVE_LINUXIO */ + + return 0; +} + +/******************************* + ******* Linux component ******* + *******************************/ + +static void +hwloc_linux_backend_disable(struct hwloc_backend *backend) +{ + struct hwloc_linux_backend_data_s *data = backend->private_data; +#ifdef HAVE_OPENAT + if (data->root_fd >= 0) { + free(data->root_path); + close(data->root_fd); + } +#endif +#ifdef HWLOC_HAVE_LIBUDEV + if (data->udev) + udev_unref(data->udev); +#endif + free(data); +} + +static struct hwloc_backend * +hwloc_linux_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + struct hwloc_linux_backend_data_s *data; + const char * fsroot_path; + int root = -1; + char *env; + + backend = hwloc_backend_alloc(topology, component); + if (!backend) + goto out; + + data = malloc(sizeof(*data)); + if (!data) { + errno = ENOMEM; + goto out_with_backend; + } + + backend->private_data = data; + backend->discover = hwloc_look_linuxfs; + backend->get_pci_busid_cpuset = hwloc_linux_backend_get_pci_busid_cpuset; + backend->disable = hwloc_linux_backend_disable; + + /* default values */ + data->arch = HWLOC_LINUX_ARCH_UNKNOWN; + data->is_knl = 0; + data->is_amd_with_CU = 0; + data->is_real_fsroot = 1; + data->root_path = NULL; + fsroot_path = getenv("HWLOC_FSROOT"); + if (!fsroot_path) + fsroot_path = "/"; + + if (strcmp(fsroot_path, "/")) { +#ifdef HAVE_OPENAT + int flags; + + root = open(fsroot_path, O_RDONLY | O_DIRECTORY); + if (root < 0) + goto out_with_data; + + backend->is_thissystem = 0; + data->is_real_fsroot = 0; + data->root_path = strdup(fsroot_path); + + /* Since this fd stays open after hwloc returns, mark it as + close-on-exec so that children don't inherit it. Stevens says + that we should GETFD before we SETFD, so we do. */ + flags = fcntl(root, F_GETFD, 0); + if (-1 == flags || + -1 == fcntl(root, F_SETFD, FD_CLOEXEC | flags)) { + close(root); + root = -1; + goto out_with_data; + } +#else + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Cannot change fsroot without openat() support.\n"); + errno = ENOSYS; + goto out_with_data; +#endif + } + data->root_fd = root; + +#ifdef HWLOC_HAVE_LIBUDEV + data->udev = NULL; + if (data->is_real_fsroot) { + data->udev = udev_new(); + } +#endif + + data->dumped_hwdata_dirname = getenv("HWLOC_DUMPED_HWDATA_DIR"); + if (!data->dumped_hwdata_dirname) + data->dumped_hwdata_dirname = RUNSTATEDIR "/hwloc/"; + + data->use_numa_distances = 1; + data->use_numa_distances_for_cpuless = 1; + data->use_numa_initiators = 1; + env = getenv("HWLOC_USE_NUMA_DISTANCES"); + if (env) { + unsigned val = atoi(env); + data->use_numa_distances = !!(val & 3); /* 2 implies 1 */ + data->use_numa_distances_for_cpuless = !!(val & 2); + data->use_numa_initiators = !!(val & 4); + } + + return backend; + + out_with_data: +#ifdef HAVE_OPENAT + free(data->root_path); +#endif + free(data); + out_with_backend: + free(backend); + out: + return NULL; +} + +static struct hwloc_disc_component hwloc_linux_disc_component = { + "linux", + HWLOC_DISC_PHASE_CPU | HWLOC_DISC_PHASE_PCI | HWLOC_DISC_PHASE_IO | HWLOC_DISC_PHASE_MISC | HWLOC_DISC_PHASE_ANNOTATE, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_linux_component_instantiate, + 50, + 1, + NULL +}; + +const struct hwloc_component hwloc_linux_component = { + HWLOC_COMPONENT_ABI, + NULL, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_linux_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-netbsd.c b/3rd-party/hwloc-2.7.1/hwloc/topology-netbsd.c new file mode 100644 index 0000000000..0233bb5e12 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-netbsd.c @@ -0,0 +1,218 @@ +/* + * Copyright © 2012 Aleksej Saushev, The NetBSD Foundation + * Copyright © 2009-2019 Inria. All rights reserved. + * Copyright © 2009-2010, 2020 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#define _NETBSD_SOURCE /* request "_np" functions */ + +#include "private/autogen/config.h" + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_SYS_SYSCTL_H +#include +#endif + +#include "hwloc.h" +#include "private/private.h" +#include "private/debug.h" + +static void +hwloc_netbsd_bsd2hwloc(hwloc_bitmap_t hwloc_cpuset, const cpuset_t *cpuset) +{ + unsigned cpu, cpulimit; + int found = 0; + hwloc_bitmap_zero(hwloc_cpuset); + cpulimit = cpuset_size(cpuset) * CHAR_BIT; + for (cpu = 0; cpu < cpulimit; cpu++) + if (cpuset_isset(cpu, cpuset)) { + hwloc_bitmap_set(hwloc_cpuset, cpu); + found++; + } + /* when never bound, it returns an empty set, fill it instead */ + if (!found) + hwloc_bitmap_fill(hwloc_cpuset); +} + +static void +hwloc_netbsd_hwloc2bsd(hwloc_const_bitmap_t hwloc_cpuset, cpuset_t *cpuset) +{ + unsigned cpu, cpulimit; + cpuset_zero(cpuset); + cpulimit = cpuset_size(cpuset) * CHAR_BIT; + for (cpu = 0; cpu < cpulimit; cpu++) + if (hwloc_bitmap_isset(hwloc_cpuset, cpu)) + cpuset_set(cpu, cpuset); +} + +static int +hwloc_netbsd_set_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) +{ + int status; + cpuset_t *cpuset = cpuset_create(); + hwloc_netbsd_hwloc2bsd(hwloc_cpuset, cpuset); + status = sched_setaffinity_np(pid, cpuset_size(cpuset), cpuset); + cpuset_destroy(cpuset); + return status; +} + +static int +hwloc_netbsd_get_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) +{ + int status; + cpuset_t *cpuset = cpuset_create(); + status = sched_getaffinity_np(pid, cpuset_size(cpuset), cpuset); + hwloc_netbsd_bsd2hwloc(hwloc_cpuset, cpuset); + cpuset_destroy(cpuset); + return status; +} + + +static int +hwloc_netbsd_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_netbsd_set_proc_cpubind(topology, 0, hwloc_cpuset, flags); +} + +static int +hwloc_netbsd_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_netbsd_get_proc_cpubind(topology, 0, hwloc_cpuset, flags); +} + + +static int +hwloc_netbsd_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) +{ + int status; + cpuset_t *cpuset = cpuset_create(); + hwloc_netbsd_hwloc2bsd(hwloc_cpuset, cpuset); + status = pthread_setaffinity_np(tid, cpuset_size(cpuset), cpuset); + cpuset_destroy(cpuset); + + if (status) { + errno = status; + return -1; + } + return 0; +} + +static int +hwloc_netbsd_get_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) +{ + int status; + cpuset_t *cpuset = cpuset_create(); + status = pthread_getaffinity_np(tid, cpuset_size(cpuset), cpuset); + hwloc_netbsd_bsd2hwloc(hwloc_cpuset, cpuset); + cpuset_destroy(cpuset); + + if (status) { + errno = status; + return -1; + } + return 0; +} + + +static int +hwloc_netbsd_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_netbsd_set_thread_cpubind(topology, pthread_self(), hwloc_cpuset, flags); +} + +static int +hwloc_netbsd_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags) +{ + return hwloc_netbsd_get_thread_cpubind(topology, pthread_self(), hwloc_cpuset, flags); +} + +static int +hwloc_look_netbsd(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend uses the underlying OS. + * However we don't enforce topology->is_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + + struct hwloc_topology *topology = backend->topology; + int64_t memsize; + + assert(dstatus->phase == HWLOC_DISC_PHASE_CPU); + + if (!topology->levels[0][0]->cpuset) { + /* Nobody (even the x86 backend) created objects yet, setup basic objects */ + int nbprocs = hwloc_fallback_nbprocessors(0); + if (nbprocs >= 1) + topology->support.discovery->pu = 1; + else + nbprocs = 1; + hwloc_alloc_root_sets(topology->levels[0][0]); + hwloc_setup_pu_level(topology, nbprocs); + } + + memsize = hwloc_fallback_memsize(); + if (memsize > 0) + topology->machine_memory.local_memory = memsize;; + + /* Add NetBSD specific information */ + hwloc_obj_add_info(topology->levels[0][0], "Backend", "NetBSD"); + hwloc_add_uname_info(topology, NULL); + return 0; +} + +void +hwloc_set_netbsd_hooks(struct hwloc_binding_hooks *hooks, + struct hwloc_topology_support *support __hwloc_attribute_unused) +{ + hooks->set_proc_cpubind = hwloc_netbsd_set_proc_cpubind; + hooks->get_proc_cpubind = hwloc_netbsd_get_proc_cpubind; + hooks->set_thisproc_cpubind = hwloc_netbsd_set_thisproc_cpubind; + hooks->get_thisproc_cpubind = hwloc_netbsd_get_thisproc_cpubind; + + hooks->set_thread_cpubind = hwloc_netbsd_set_thread_cpubind; + hooks->get_thread_cpubind = hwloc_netbsd_get_thread_cpubind; + hooks->set_thisthread_cpubind = hwloc_netbsd_set_thisthread_cpubind; + hooks->get_thisthread_cpubind = hwloc_netbsd_get_thisthread_cpubind; +} + +static struct hwloc_backend * +hwloc_netbsd_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + backend->discover = hwloc_look_netbsd; + return backend; +} + +static struct hwloc_disc_component hwloc_netbsd_disc_component = { + "netbsd", + HWLOC_DISC_PHASE_CPU, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_netbsd_component_instantiate, + 50, + 1, + NULL +}; + +const struct hwloc_component hwloc_netbsd_component = { + HWLOC_COMPONENT_ABI, + NULL, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_netbsd_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-noos.c b/3rd-party/hwloc-2.7.1/hwloc/topology-noos.c new file mode 100644 index 0000000000..2658750aab --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-noos.c @@ -0,0 +1,80 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2019 Inria. All rights reserved. + * Copyright © 2009-2012, 2020 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/private.h" + +static int +hwloc_look_noos(struct hwloc_backend *backend, struct hwloc_disc_status *dstatus) +{ + /* + * This backend uses the underlying OS. + * However we don't enforce topology->is_thissystem so that + * we may still force use this backend when debugging with !thissystem. + */ + + struct hwloc_topology *topology = backend->topology; + int64_t memsize; + + assert(dstatus->phase == HWLOC_DISC_PHASE_CPU); + + if (!topology->levels[0][0]->cpuset) { + int nbprocs; + /* Nobody (even the x86 backend) created objects yet, setup basic objects */ + + nbprocs = hwloc_fallback_nbprocessors(0); + if (nbprocs >= 1) + topology->support.discovery->pu = 1; + else + nbprocs = 1; + hwloc_alloc_root_sets(topology->levels[0][0]); + hwloc_setup_pu_level(topology, nbprocs); + } + + memsize = hwloc_fallback_memsize(); + if (memsize > 0) + topology->machine_memory.local_memory = memsize;; + + hwloc_add_uname_info(topology, NULL); + return 0; +} + +static struct hwloc_backend * +hwloc_noos_component_instantiate(struct hwloc_topology *topology, + struct hwloc_disc_component *component, + unsigned excluded_phases __hwloc_attribute_unused, + const void *_data1 __hwloc_attribute_unused, + const void *_data2 __hwloc_attribute_unused, + const void *_data3 __hwloc_attribute_unused) +{ + struct hwloc_backend *backend; + backend = hwloc_backend_alloc(topology, component); + if (!backend) + return NULL; + backend->discover = hwloc_look_noos; + return backend; +} + +static struct hwloc_disc_component hwloc_noos_disc_component = { + "no_os", + HWLOC_DISC_PHASE_CPU, + HWLOC_DISC_PHASE_GLOBAL, + hwloc_noos_component_instantiate, + 40, /* lower than native OS component, higher than globals */ + 1, + NULL +}; + +const struct hwloc_component hwloc_noos_component = { + HWLOC_COMPONENT_ABI, + NULL, NULL, + HWLOC_COMPONENT_TYPE_DISC, + 0, + &hwloc_noos_disc_component +}; diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-nvml.c b/3rd-party/hwloc-2.7.1/hwloc/topology-nvml.c new file mode 100644 index 0000000000..b2583e4007 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-nvml.c @@ -0,0 +1,440 @@ +/* + * Copyright © 2012-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/plugins.h" + +/* private headers allowed for convenience because this plugin is built within hwloc */ +#include "private/misc.h" +#include "private/debug.h" + +#include + + +#ifdef NVML_NVLINK_MAX_LINKS + +static unsigned +hwloc__nvml_get_peer_gpu_by_pci(nvmlPciInfo_t peer, unsigned nb, nvmlPciInfo_t *gpus) +{ + unsigned i; + for(i=0; i */ + void (*close_child)(struct hwloc__xml_import_state_s * state); + int (*get_content)(struct hwloc__xml_import_state_s * state, const char **beginp, size_t expected_length); /* return 0 on empty content (and sets beginp to empty string), 1 on actual content, -1 on error or unexpected content length */ + void (*close_content)(struct hwloc__xml_import_state_s * state); + char * msgprefix; + void *data; /* libxml2 doc, or nolibxml buffer */ + unsigned version_major, version_minor; + unsigned nbnumanodes; + hwloc_obj_t first_numanode, last_numanode; /* temporary cousin-list for handling v1distances */ + struct hwloc__xml_imported_v1distances_s *first_v1dist, *last_v1dist; +}; + +/************** + * XML export * + **************/ + +typedef struct hwloc__xml_export_state_s { + struct hwloc__xml_export_state_s *parent; + + void (*new_child)(struct hwloc__xml_export_state_s *parentstate, struct hwloc__xml_export_state_s *state, const char *name); + void (*new_prop)(struct hwloc__xml_export_state_s *state, const char *name, const char *value); + void (*add_content)(struct hwloc__xml_export_state_s *state, const char *buffer, size_t length); + void (*end_object)(struct hwloc__xml_export_state_s *state, const char *name); + + struct hwloc__xml_export_data_s { + hwloc_obj_t v1_memory_group; /* if we need to insert intermediate group above memory children when exporting to v1 */ + } *global; + + /* opaque data used to store backend-specific data. + * statically allocated to allow stack-allocation by the common code without knowing actual backend needs. + */ + char data[40]; +} * hwloc__xml_export_state_t; + +HWLOC_DECLSPEC void hwloc__xml_export_topology(hwloc__xml_export_state_t parentstate, hwloc_topology_t topology, unsigned long flags); + +HWLOC_DECLSPEC void hwloc__xml_export_diff(hwloc__xml_export_state_t parentstate, hwloc_topology_diff_t diff); + +/****************** + * XML components * + ******************/ + +struct hwloc_xml_callbacks { + int (*backend_init)(struct hwloc_xml_backend_data_s *bdata, const char *xmlpath, const char *xmlbuffer, int xmlbuflen); + int (*export_file)(struct hwloc_topology *topology, struct hwloc__xml_export_data_s *edata, const char *filename, unsigned long flags); + int (*export_buffer)(struct hwloc_topology *topology, struct hwloc__xml_export_data_s *edata, char **xmlbuffer, int *buflen, unsigned long flags); + void (*free_buffer)(void *xmlbuffer); + int (*import_diff)(struct hwloc__xml_import_state_s *state, const char *xmlpath, const char *xmlbuffer, int xmlbuflen, hwloc_topology_diff_t *diff, char **refnamep); + int (*export_diff_file)(union hwloc_topology_diff_u *diff, const char *refname, const char *filename); + int (*export_diff_buffer)(union hwloc_topology_diff_u *diff, const char *refname, char **xmlbuffer, int *buflen); +}; + +struct hwloc_xml_component { + struct hwloc_xml_callbacks *nolibxml_callbacks; + struct hwloc_xml_callbacks *libxml_callbacks; +}; + +HWLOC_DECLSPEC void hwloc_xml_callbacks_register(struct hwloc_xml_component *component); +HWLOC_DECLSPEC void hwloc_xml_callbacks_reset(void); + +#endif /* PRIVATE_XML_H */ diff --git a/3rd-party/hwloc-2.7.1/netloc.pc.in b/3rd-party/hwloc-2.7.1/netloc.pc.in new file mode 100644 index 0000000000..ce9c43ef70 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: netloc +Description: Network locality detection and management library +Version: @HWLOC_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lnetloc -lhwloc +Libs.private: @LIBS@ diff --git a/3rd-party/hwloc-2.7.1/netloc/Makefile.am b/3rd-party/hwloc-2.7.1/netloc/Makefile.am new file mode 100644 index 0000000000..ac94d7aaab --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/Makefile.am @@ -0,0 +1,87 @@ +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# Copyright © 2014 University of Wisconsin-La Crosse. +# All rights reserved. +# +# Copyright © 2016-2018 Inria. All rights reserved. +# See COPYING in top-level directory. +# +# $HEADER$ +# + +AM_CPPFLAGS = \ + $(NETLOC_CPPFLAGS) \ + $(HWLOC_CPPFLAGS) + +# If we're in standalone mode, build the installable library. +# Otherwise, build the embedded library. + +if HWLOC_BUILD_STANDALONE +lib_LTLIBRARIES = libnetloc.la +else +noinst_LTLIBRARIES = libnetloc_embedded.la +endif + +sources = \ + support.c \ + topology.c \ + edge.c \ + node.c \ + physical_link.c \ + path.c \ + architecture.c \ + hwloc.c \ + mpicomm.c + + +# Installable library + +libnetloc_la_SOURCES = $(sources) +libnetloc_la_LDFLAGS = $(ldflags) -version-info $(libnetloc_so_version) +libnetloc_la_LIBADD = \ + $(top_builddir)/hwloc/libhwloc.la + +# Embedded library (note the lack of a .so version number -- that +# intentionally only appears in the installable library). Also note +# the lack of _LDFLAGS -- all libs are added by the upper layer (via +# HWLOC_EMBEDDED_LIBS). + +libnetloc_embedded_la_SOURCES = $(sources) +libnetloc_embedded_la_LDFLAGS = $(ldflags) +libnetloc_embedded_la_LIBADD = \ + $(HWLOC_top_builddir)/hwloc/libhwloc_embedded.la + +scotchsources = \ + scotch.c + +if BUILD_NETLOCSCOTCH +# If we're in standalone mode, build the installable library. +# Otherwise, build the embedded library. + +if HWLOC_BUILD_STANDALONE +lib_LTLIBRARIES += libnetlocscotch.la +else +noinst_LTLIBRARIES += libnetlocscotch_embedded.la +endif + +# Installable library + +libnetlocscotch_la_SOURCES = $(scotchsources) +libnetlocscotch_la_LDFLAGS = -version-info $(libnetloc_so_version) +libnetlocscotch_la_LIBADD = \ + $(top_builddir)/hwloc/libhwloc.la \ + libnetloc.la + +# Embedded library (note the lack of a .so version number -- that +# intentionally only appears in the installable library). Also note +# the lack of _LDFLAGS -- all libs are added by the upper layer (via +# HWLOC_EMBEDDED_LIBS). + +libnetlocscotch_embedded_la_SOURCES = $(scotchsources) +libnetlocscotch_embedded_la_LDFLAGS = +libnetlocscotch_embedded_la_LIBADD = \ + $(HWLOC_top_builddir)/hwloc/libhwloc_embedded.la \ + $(HWLOC_top_builddir)/hwloc/libnetloc_embedded.la + +else !BUILD_NETLOCSCOTCH +EXTRA_DIST = $(scotchsources) +endif !BUILD_NETLOCSCOTCH diff --git a/3rd-party/hwloc-2.7.1/netloc/architecture.c b/3rd-party/hwloc-2.7.1/netloc/architecture.c new file mode 100644 index 0000000000..4b1e0e16dc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/architecture.c @@ -0,0 +1,853 @@ +/* + * Copyright © 2016-2017 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include +#include + +typedef struct netloc_analysis_data_t { + int level; + void *userdata; +} netloc_analysis_data; + + +static int partition_topology_to_tleaf(netloc_topology_t *topology, + int partition, int num_cores, netloc_arch_t *arch); +static netloc_arch_tree_t *tree_merge(netloc_arch_tree_t *main, + netloc_arch_tree_t *sub); +static int netloc_arch_tree_destruct(netloc_arch_tree_t *tree); +static int netloc_arch_node_destruct(netloc_arch_node_t *arch_node); +static netloc_arch_node_t *netloc_arch_node_construct(void); + +#define checked_fscanf(f, w, str, failed) \ + if (fscanf(f, " %1023s", w) != 1) { \ + fprintf(stderr, "Cannot read %s\n", str); \ + perror("fscanf"); \ + goto ERROR; \ + } + + +/* Complete the topology to have a complete balanced tree */ +void netloc_arch_tree_complete(netloc_arch_tree_t *tree, UT_array **down_degrees_by_level, + int num_hosts, int **parch_idx) +{ + int num_levels = tree->num_levels; + NETLOC_int *max_degrees = tree->degrees; + + /* Complete the tree by inserting nodes */ + for (int l = 0; l < num_levels-1; l++) { // from the root to the leaves + int num_degrees = utarray_len(down_degrees_by_level[l]); + int *degrees = (int *)down_degrees_by_level[l]->d; + NETLOC_int max_degree = max_degrees[l]; + + unsigned int down_level_idx = 0; + UT_array *down_level_degrees = down_degrees_by_level[l+1]; + NETLOC_int down_level_max_degree = max_degrees[l+1]; + for (int d = 0; d < num_degrees; d++) { + int degree = degrees[d]; + if (degree > 0) { + down_level_idx += degree; + if (degree < max_degree) { + int missing_degree = (degree-max_degree)*down_level_max_degree; + utarray_insert(down_level_degrees, &missing_degree, down_level_idx); + down_level_idx++; + } + } else { + int missing_degree = degree*down_level_max_degree; + utarray_insert(down_level_degrees, &missing_degree, down_level_idx); + down_level_idx++; + } + } + } + + /* Indices for the list of hosts, in the complete architecture */ + int num_degrees = utarray_len(down_degrees_by_level[num_levels-1]); + int *degrees = (int *)down_degrees_by_level[num_levels-1]->d; + NETLOC_int max_degree = max_degrees[num_levels-1]; + int ghost_idx = 0; + int idx = 0; + int *arch_idx = (int *)malloc(sizeof(int[num_hosts])); + for (int d = 0; d < num_degrees; d++) { + int degree = degrees[d]; + int diff; + + if (degree > 0) { + diff = max_degree-degree; + } else { + diff = -degree; + } + + for (int i = 0; i < degree; i++) { + arch_idx[idx++] = ghost_idx++; + } + ghost_idx += diff; + } + *parch_idx = arch_idx; +} + +NETLOC_int netloc_arch_tree_num_leaves(netloc_arch_tree_t *tree) +{ + NETLOC_int num_leaves = 1; + for (int l = 0; l < tree->num_levels; l++) { + num_leaves *= tree->degrees[l]; + } + return num_leaves; +} + +static int get_current_resources(int *pnum_nodes, char ***pnodes, int **pslot_idx, + int **pslot_list, int **prank_list) +{ + char *filename = getenv("NETLOC_CURRENTSLOTS"); + char word[1024]; + char *end_word; + int *slot_list = NULL; + int *rank_list = NULL; + int *slot_idx = NULL; + char **nodes = NULL; + + if (!filename) { + fprintf(stderr, "You need to set NETLOC_CURRENTSLOTS\n"); + return NETLOC_ERROR; + } + + FILE *file = fopen(filename, "r"); + if (!file) { + perror("fopen"); + return NETLOC_ERROR; + } + + checked_fscanf(file, word, "num_nodes", failed); + + int num_nodes; + num_nodes = strtol(word, &end_word, 10); + if (*word == '\0' || *end_word != '\0' || num_nodes <= 0) { + fprintf(stderr, "Oups: incorrect number of nodes (%d) in \"%s\"\n", + num_nodes, word); + goto ERROR; + } + + nodes = (char **)malloc(sizeof(char *[num_nodes])); + for (int n = 0; n < num_nodes; n++) { + checked_fscanf(file, word, "node", failed); + nodes[n] = strdup(word); + } + + slot_idx = (int *)malloc(sizeof(int[num_nodes+1])); + slot_idx[0] = 0; + for (int n = 0; n < num_nodes; n++) { + checked_fscanf(file, word, "slot index", failed); + + int slot_index = strtol(word, &end_word, 10); + if (*word == '\0' || *end_word != '\0' || num_nodes <= 0) { + fprintf(stderr, "Oups: incorrect slot index (%d) in \"%s\"\n", + slot_index, word); + goto ERROR; + } + slot_idx[n+1] = slot_idx[n]+slot_index; + } + + slot_list = (int *)malloc(sizeof(int[slot_idx[num_nodes]])); + rank_list = (int *)malloc(sizeof(int[slot_idx[num_nodes]])); + for (int s = 0; s < slot_idx[num_nodes]; s++) { + checked_fscanf(file, word, "slot number", failed); + slot_list[s] = strtol(word, &end_word, 10); + if (*word == '\0' || *end_word != '\0' || num_nodes <= 0) { + fprintf(stderr, "Oups: incorrect slot number (%d) in \"%s\"\n", + slot_list[s], word); + goto ERROR; + } + + checked_fscanf(file, word, "rank number", failed); + rank_list[s] = strtol(word, &end_word, 10); + if (*word == '\0' || *end_word != '\0' || num_nodes <= 0) { + fprintf(stderr, "Oups: incorrect rank number (%d) in \"%s\"\n", + rank_list[s], word); + goto ERROR; + } + } + + *pnum_nodes = num_nodes; + *pnodes = nodes; + *pslot_idx = slot_idx; + *pslot_list = slot_list; + *prank_list = rank_list; + + fclose(file); + + return NETLOC_SUCCESS; + +ERROR: + fclose(file); + free(nodes); + free(slot_idx); + free(slot_list); + free(rank_list); + return NETLOC_ERROR; +} + +int netloc_arch_set_current_resources(netloc_arch_t *arch) +{ + int ret; + int num_nodes; + char **nodenames; + int *slot_idx; + int *slot_list; + int *rank_list; + + ret = get_current_resources(&num_nodes, &nodenames, &slot_idx, &slot_list, + &rank_list); + + if (ret != NETLOC_SUCCESS || num_nodes <= 0) + assert(0); // XXX + + NETLOC_int *current_nodes = NULL; + + if (!arch->has_slots) { + current_nodes = (NETLOC_int *) malloc(sizeof(NETLOC_int[num_nodes])); + } + + netloc_arch_node_t **arch_node_list = (netloc_arch_node_t **) + malloc(sizeof(netloc_arch_node_t *[num_nodes])); + netloc_node_t **node_list = (netloc_node_t **) + malloc(sizeof(netloc_node_t *[num_nodes])); + for (int n = 0; n < num_nodes; n++) { + netloc_arch_node_t *arch_node; + HASH_FIND_STR(arch->nodes_by_name, nodenames[n], arch_node); + if (!arch_node) { + ret = NETLOC_ERROR; + goto ERROR; + } + arch_node_list[n] = arch_node; + node_list[n] = arch_node->node; + } + + ret = netloc_topology_read_hwloc(arch->topology, num_nodes, node_list); + if( NETLOC_SUCCESS != ret ) { + goto ERROR; + } + + int constant_num_slots = 0; + for (int n = 0; n < num_nodes; n++) { + netloc_arch_node_t *node = arch_node_list[n]; + + ret = netloc_arch_node_get_hwloc_info(node); + if (ret != NETLOC_SUCCESS) + goto ERROR; + + + if (!arch->has_slots) { + current_nodes[n] = node->idx_in_topo; + } + + int num_slots = slot_idx[n+1]-slot_idx[n]; + node->num_current_slots = num_slots; + + /* Nodes with different number of slots are not handled yet, because we + * build the scotch architecture without taking account of the + * available cores inside nodes, and Scotch is not able to weight the + * nodes */ + if (!arch->has_slots) { + if (constant_num_slots) { + if (constant_num_slots != num_slots) { + fprintf(stderr, "Oups: the same number of cores by node is needed!\n"); + assert(constant_num_slots == num_slots); + } + } else { + constant_num_slots = num_slots; + } + } + + node->current_slots = (NETLOC_int *) + malloc(sizeof(NETLOC_int[num_slots])); + NETLOC_int num_leaves = netloc_arch_tree_num_leaves(node->slot_tree); + node->slot_ranks = (int *) + malloc(sizeof(int[num_leaves])); + + for (int s = slot_idx[n]; s < slot_idx[n+1]; s++) { + int slot = slot_list[s]; + node->current_slots[s-slot_idx[n]] = node->slot_idx[slot]; + node->slot_ranks[node->slot_idx[slot]] = rank_list[s]; + } + } + + if (!arch->has_slots) { + arch->num_current_hosts = num_nodes; + arch->current_hosts = current_nodes; + arch->arch.global_tree = arch->arch.node_tree; + + /* Build nodes_by_idx */ + NETLOC_int tree_size = netloc_arch_tree_num_leaves(arch->arch.node_tree); + netloc_arch_node_slot_t *nodes_by_idx = (netloc_arch_node_slot_t *) + malloc(sizeof(netloc_arch_node_slot_t[tree_size])); + for (int n = 0; n < num_nodes; n++) { + netloc_arch_node_t *node = arch_node_list[n]; + nodes_by_idx[node->idx_in_topo].node = node; + nodes_by_idx[node->idx_in_topo].slot = -1; + } + arch->node_slot_by_idx = nodes_by_idx; + + + } else { + int num_hosts = slot_idx[num_nodes]; + NETLOC_int *current_hosts = (NETLOC_int *) + malloc(sizeof(NETLOC_int[num_hosts])); + /* Add the slot trees to the node tree */ + + /* Check that each slot tree has the same size */ + int slot_tree_size = 0; + for (int n = 0; n < num_nodes; n++) { + netloc_arch_node_t *node = arch_node_list[n]; + int current_size = netloc_arch_tree_num_leaves(node->slot_tree); + if (!slot_tree_size) { + slot_tree_size = current_size; + } else { + if (slot_tree_size != current_size) { + assert(0); + } + } + } + + int current_host_idx = 0; + int node_tree_size = netloc_arch_tree_num_leaves(arch->arch.node_tree); + int global_tree_size = node_tree_size*slot_tree_size; + netloc_arch_node_slot_t *nodes_by_idx = (netloc_arch_node_slot_t *) + malloc(sizeof(netloc_arch_node_slot_t[global_tree_size])); + for (int n = 0; n < num_nodes; n++) { + netloc_arch_node_t *node = arch_node_list[n]; + for (int s = slot_idx[n]; s < slot_idx[n+1]; s++) { + int slot_rank = s-slot_idx[n]; + int topo_idx = node->idx_in_topo*slot_tree_size + + node->slot_idx[slot_rank]; + nodes_by_idx[topo_idx].node = node; + nodes_by_idx[topo_idx].slot = slot_rank; + current_hosts[current_host_idx++] = topo_idx; + } + } + arch->num_current_hosts = current_host_idx; + arch->current_hosts = current_hosts; + arch->node_slot_by_idx = nodes_by_idx; + + netloc_arch_tree_t *new_tree = + tree_merge(arch->arch.node_tree, arch_node_list[0]->slot_tree); + netloc_arch_tree_destruct(arch->arch.node_tree); + arch->arch.global_tree = new_tree; + } + +ERROR: + for (int n = 0; n < num_nodes; n++) { + free(nodenames[n]); + } + free(nodenames); + free(slot_idx); + free(slot_list); + free(rank_list); + free(arch_node_list); + free(node_list); + + if (ret == NETLOC_SUCCESS) + return ret; + + free(current_nodes); + return ret; +} + +int netloc_arch_set_global_resources(netloc_arch_t *arch) +{ + int ret; + NETLOC_int *current_nodes = NULL; + int *slot_idx = NULL; + + int num_nodes = HASH_COUNT(arch->nodes_by_name); + if (!arch->has_slots) { + current_nodes = (NETLOC_int *) malloc(sizeof(NETLOC_int[num_nodes])); + } + + ret = netloc_topology_read_hwloc(arch->topology, 0, NULL); + if( NETLOC_SUCCESS != ret ) { + goto ERROR; + } + + int constant_num_slots = 0; + slot_idx = (int *)malloc(sizeof(int[num_nodes+1])); + slot_idx[0] = 0; + int current_idx = 0; + netloc_arch_node_t *node, *node_tmp; + HASH_ITER(hh, arch->nodes_by_name, node, node_tmp) { + ret = netloc_arch_node_get_hwloc_info(node); + if (ret != NETLOC_SUCCESS) + goto ERROR; + + if (!arch->has_slots) { + current_nodes[current_idx] = node->idx_in_topo; + } + current_idx++; + + int num_slots = node->num_slots; + node->num_current_slots = num_slots; + + slot_idx[current_idx] = slot_idx[current_idx-1]+num_slots; + + /* Nodes with different number of slots are not handled yet, because we + * build the scotch architecture without taking account of the + * available cores inside nodes, and Scotch is not able to weight the + * nodes */ + if (!arch->has_slots) { + if (constant_num_slots) { + if (constant_num_slots != num_slots) { + fprintf(stderr, "Oups: the same number of cores by node is needed!\n"); + assert(constant_num_slots == num_slots); + } + } else { + constant_num_slots = num_slots; + } + } + } + + if (!arch->has_slots) { + arch->num_current_hosts = num_nodes; + arch->current_hosts = current_nodes; + arch->arch.global_tree = arch->arch.node_tree; + + /* Build nodes_by_idx */ + int tree_size = netloc_arch_tree_num_leaves(arch->arch.node_tree); + netloc_arch_node_slot_t *nodes_by_idx = (netloc_arch_node_slot_t *) + malloc(sizeof(netloc_arch_node_slot_t[tree_size])); + netloc_arch_node_t *node, *node_tmp; + HASH_ITER(hh, arch->nodes_by_name, node, node_tmp) { + nodes_by_idx[node->idx_in_topo].node = node; + nodes_by_idx[node->idx_in_topo].slot = -1; + } + arch->node_slot_by_idx = nodes_by_idx; + + + } else { + int num_hosts = slot_idx[num_nodes]; + NETLOC_int *current_hosts = (NETLOC_int *) + malloc(sizeof(NETLOC_int[num_hosts])); + netloc_arch_node_t *node, *node_tmp; + /* Add the slot trees to the node tree */ + + /* Check that each slot tree has the same size */ + int slot_tree_size = 0; + HASH_ITER(hh, arch->nodes_by_name, node, node_tmp) { + int current_size = netloc_arch_tree_num_leaves(node->slot_tree); + if (!slot_tree_size) { + slot_tree_size = current_size; + } else { + if (slot_tree_size != current_size) { + assert(0); + } + } + } + + int current_host_idx = 0; + int node_tree_size = netloc_arch_tree_num_leaves(arch->arch.node_tree); + int global_tree_size = node_tree_size*slot_tree_size; + netloc_arch_node_slot_t *nodes_by_idx = (netloc_arch_node_slot_t *) + malloc(sizeof(netloc_arch_node_slot_t[global_tree_size])); + int n = 0; + HASH_ITER(hh, arch->nodes_by_name, node, node_tmp) { + for (int s = slot_idx[n]; s < slot_idx[n+1]; s++) { + int slot_rank = s-slot_idx[n]; + int topo_idx = node->idx_in_topo*slot_tree_size + + node->slot_idx[slot_rank]; + nodes_by_idx[topo_idx].node = node; + nodes_by_idx[topo_idx].slot = slot_rank; + current_hosts[current_host_idx++] = topo_idx; + } + n++; + } + arch->num_current_hosts = current_host_idx; + arch->current_hosts = current_hosts; + arch->node_slot_by_idx = nodes_by_idx; + + netloc_arch_tree_t *new_tree = + tree_merge(arch->arch.node_tree, arch->nodes_by_name->slot_tree); + netloc_arch_tree_destruct(arch->arch.node_tree); + arch->arch.global_tree = new_tree; + } + +ERROR: + free(slot_idx); + + if (ret == NETLOC_SUCCESS) + return ret; + + free(current_nodes); + return ret; +} + +netloc_arch_tree_t *tree_merge(netloc_arch_tree_t *main, netloc_arch_tree_t *sub) +{ + netloc_arch_tree_t *new_tree = (netloc_arch_tree_t *) + malloc(sizeof(netloc_arch_tree_t)); + + int num_levels = main->num_levels+sub->num_levels; + new_tree->num_levels = num_levels; + new_tree->degrees = (NETLOC_int *)malloc(sizeof(NETLOC_int[num_levels])); + new_tree->cost = (NETLOC_int *)malloc(sizeof(NETLOC_int[num_levels])); + + memcpy(new_tree->degrees, main->degrees, + main->num_levels*sizeof(*new_tree->degrees)); + memcpy(new_tree->degrees+main->num_levels, sub->degrees, + sub->num_levels*sizeof(*new_tree->degrees)); + + int out_coeff = 10; + for (int l = 0; l < main->num_levels; l++) { + new_tree->cost[l] = main->cost[l]*sub->cost[0]*out_coeff; + } + memcpy(new_tree->cost+main->num_levels, sub->cost, + sub->num_levels*sizeof(*new_tree->cost)); + + return new_tree; +} + +static int netloc_arch_tree_destruct(netloc_arch_tree_t *tree) +{ + free(tree->cost); + free(tree->degrees); + free(tree); + + return NETLOC_SUCCESS; +} + + +int partition_topology_to_tleaf(netloc_topology_t *topology, + int partition, int num_cores, netloc_arch_t *arch) +{ + int ret = 0; + UT_array *nodes; + utarray_new(nodes, &ut_ptr_icd); + + netloc_arch_tree_t *tree = (netloc_arch_tree_t *) + malloc(sizeof(netloc_arch_tree_t)); + arch->arch.node_tree = tree; + arch->type = NETLOC_ARCH_TREE; + + /* we build nodes from host list in the given partition + * and we init all the analysis data */ + netloc_node_t *node, *node_tmp; + netloc_topology_iter_nodes(topology, node, node_tmp) { + if (!netloc_node_is_in_partition(node, partition)) + continue; + void *userdata = node->userdata; + node->userdata = (void *)malloc(sizeof(netloc_analysis_data)); + netloc_analysis_data *analysis_data = (netloc_analysis_data *)node->userdata; + analysis_data->level = -1; + analysis_data->userdata = userdata; + + netloc_edge_t *edge, *edge_tmp; + netloc_node_iter_edges(node, edge, edge_tmp) { + void *userdata = edge->userdata; + edge->userdata = (void *)malloc(sizeof(netloc_analysis_data)); + netloc_analysis_data *analysis_data = (netloc_analysis_data *)edge->userdata; + analysis_data->level = -1; + analysis_data->userdata = userdata; + } + + if (netloc_node_is_host(node)) { + utarray_push_back(nodes, &node); + } + } + + /* We set the levels in the analysis data */ + /* Upward edges will have the level of the source node and downward edges + * will have -1 as level */ + int num_levels = 0; + netloc_node_t *current_node = /* pointer to one host node */ + *(void **)utarray_eltptr(nodes, 0); + while (utarray_len(nodes)) { + UT_array *new_nodes; + utarray_new(new_nodes, &ut_ptr_icd); + + for (unsigned int n = 0; n < utarray_len(nodes); n++) { + netloc_node_t *node = *(void **)utarray_eltptr(nodes, n); + netloc_analysis_data *node_data = (netloc_analysis_data *)node->userdata; + /* There is a problem, this is not a tree */ + if (node_data->level != -1 && node_data->level != num_levels) { + utarray_free(new_nodes); + ret = -1; + goto end; + } + else { + node_data->level = num_levels; + netloc_edge_t *edge, *edge_tmp; + netloc_node_iter_edges(node, edge, edge_tmp) { + if (!netloc_edge_is_in_partition(edge, partition)) + continue; + netloc_analysis_data *edge_data = (netloc_analysis_data *)edge->userdata; + + netloc_node_t *dest = edge->dest; + netloc_analysis_data *dest_data = (netloc_analysis_data *)dest->userdata; + /* If we are going back */ + if (dest_data->level != -1 && dest_data->level < num_levels) { + continue; + } + else { + if (dest_data->level != num_levels) { + edge_data->level = num_levels; + utarray_push_back(new_nodes, &dest); + } + } + } + } + } + num_levels++; + utarray_free(nodes); + nodes = new_nodes; + } + + /* We go though the tree to order the leaves and find the tree + * structure */ + UT_array *ordered_name_array = NULL; + UT_array **down_degrees_by_level = NULL; + NETLOC_int *max_down_degrees_by_level; + + utarray_new(ordered_name_array, &ut_ptr_icd); + + down_degrees_by_level = (UT_array **)malloc(num_levels*sizeof(UT_array *)); + for (int l = 0; l < num_levels; l++) { + utarray_new(down_degrees_by_level[l], &ut_int_icd); + } + max_down_degrees_by_level = (NETLOC_int *) + calloc(num_levels-1, sizeof(NETLOC_int)); + + UT_array *down_edges = NULL; + utarray_new(down_edges, &ut_ptr_icd); + netloc_edge_t *up_edge = current_node->edges; + utarray_push_back(ordered_name_array, ¤t_node); + while (1) { + if (utarray_len(down_edges)) { + netloc_edge_t *down_edge = *(void **)utarray_back(down_edges); + utarray_pop_back(down_edges); + netloc_node_t *dest_node = down_edge->dest; + if (netloc_node_is_host(dest_node)) { + utarray_push_back(ordered_name_array, &dest_node); + } + else { + netloc_edge_t *edge, *edge_tmp; + int num_edges = 0; + netloc_node_iter_edges(dest_node, edge, edge_tmp) { + if (!netloc_edge_is_in_partition(edge, partition)) + continue; + netloc_analysis_data *edge_data = (netloc_analysis_data *)edge->userdata; + int edge_level = edge_data->level; + if (edge_level == -1) { + utarray_push_back(down_edges, &edge); + num_edges++; + } + } + int level = ((netloc_analysis_data *)dest_node->userdata)->level; + utarray_push_back(down_degrees_by_level[num_levels-1-level], &num_edges); + max_down_degrees_by_level[num_levels-1-level] = + max_down_degrees_by_level[num_levels-1-level] > num_edges ? + max_down_degrees_by_level[num_levels-1-level]: num_edges; + } + } + else { + netloc_edge_t *new_up_edge = NULL; + if (!up_edge) + break; + + netloc_node_t *up_node = up_edge->dest; + netloc_edge_t *edge, *edge_tmp; + int num_edges = 0; + netloc_node_iter_edges(up_node, edge, edge_tmp) { + if (!netloc_edge_is_in_partition(edge, partition)) + continue; + netloc_analysis_data *edge_data = (netloc_analysis_data *)edge->userdata; + int edge_level = edge_data->level; + + netloc_node_t *dest_node = edge->dest; + + /* If the is the node where we are from */ + if (dest_node == up_edge->node) { + num_edges++; + continue; + } + + /* Downward edge */ + if (edge_level == -1) { + utarray_push_back(down_edges, &edge); + num_edges++; + } + /* Upward edge */ + else { + new_up_edge = edge; + } + + } + int level = ((netloc_analysis_data *)up_node->userdata)->level; + utarray_push_back(down_degrees_by_level[num_levels-1-level], &num_edges); + max_down_degrees_by_level[num_levels-1-level] = + max_down_degrees_by_level[num_levels-1-level] > num_edges ? + max_down_degrees_by_level[num_levels-1-level]: num_edges; + up_edge = new_up_edge; + } + } + + tree->num_levels = num_levels-1; + tree->degrees = max_down_degrees_by_level; + + int network_coeff = 2; + tree->cost = (NETLOC_int *)malloc(sizeof(NETLOC_int[tree->num_levels])); + tree->cost[tree->num_levels-1] = 1; + for (int i = tree->num_levels-2; i >= 0 ; i--) { + tree->cost[i] = tree->cost[i+1]*network_coeff; + } + + /* Now we have the degree of each node, so we can complete the topology to + * have a complete balanced tree as requested by the tleaf structure */ + int *arch_idx; + int num_nodes = utarray_len(ordered_name_array); + netloc_arch_tree_complete(tree, down_degrees_by_level, num_nodes, &arch_idx); + + netloc_node_t **ordered_nodes = (netloc_node_t **)ordered_name_array->d; + netloc_arch_node_t *named_nodes = NULL; + for (int i = 0; i < num_nodes; i++) { + netloc_arch_node_t *node = netloc_arch_node_construct(); + node->node = ordered_nodes[i]; + node->name = ordered_nodes[i]->hostname; + node->idx_in_topo = arch_idx[i]; + HASH_ADD_KEYPTR(hh, named_nodes, node->name, strlen(node->name), node); + } + free(arch_idx); + + arch->nodes_by_name = named_nodes; + +end: + if (nodes) + utarray_free(nodes); + + if (ordered_name_array) + utarray_free(ordered_name_array); + + if (down_degrees_by_level) { + for (int l = 0; l < num_levels; l++) { + utarray_free(down_degrees_by_level[l]); + } + free(down_degrees_by_level); + } + + if (down_edges) + utarray_free(down_edges); + + /* We copy back all userdata */ + netloc_topology_iter_nodes(topology, node, node_tmp) { + if (!netloc_node_is_in_partition(node, partition)) + continue; + netloc_analysis_data *analysis_data = (netloc_analysis_data *)node->userdata; + if (analysis_data->level == -1 && ret != -1) { + ret = -1; + printf("The node %s was not browsed\n", node->description); + } + free(analysis_data); + + netloc_edge_t *edge, *edge_tmp; + netloc_node_iter_edges(node, edge, edge_tmp) { + netloc_analysis_data *analysis_data = (netloc_analysis_data *)edge->userdata; + node->userdata = analysis_data->userdata; + free(analysis_data); + } + } + + return ret; +} + +int netloc_arch_build(netloc_arch_t *arch, int add_slots) +{ + char *partition_name = getenv("NETLOC_PARTITION"); + char *topopath = getenv("NETLOC_TOPOFILE"); + + if (!topopath) { + fprintf(stderr, "Error: you need to set NETLOC_TOPOFILE in your environment.\n"); + return NETLOC_ERROR; + } + topopath = strdup(topopath); + + netloc_topology_t *topology = netloc_topology_construct(topopath); + if (topology == NULL) { + fprintf(stderr, "Error: netloc_topology_construct failed\n"); + free(topopath); + return NETLOC_ERROR; + } + + arch->topology = topology; + arch->has_slots = add_slots; + + if (!partition_name) { + fprintf(stderr, "Error: you need to set NETLOC_PARTITION in your environment.\n"); + fprintf(stderr, "\tIt can be: "); + unsigned int num_partitions = utarray_len(topology->partitions); + for (unsigned int p = 0; p < num_partitions; p++) { + char *partition = *(char **)utarray_eltptr(topology->partitions, p); + fprintf(stderr, "%s%s", partition, p != num_partitions-1 ? ", ": "\n"); + } + return NETLOC_ERROR; + } + + int partition = + netloc_topology_find_partition_idx(topology, partition_name); + + partition_topology_to_tleaf(topology, partition, 1, arch); + + return NETLOC_SUCCESS; +} + +netloc_arch_t * netloc_arch_construct(void) +{ + netloc_arch_t *arch = (netloc_arch_t *)calloc(1, sizeof(netloc_arch_t)); + + return arch; +} + +int netloc_arch_destruct(netloc_arch_t *arch) +{ + netloc_topology_destruct(arch->topology); + + netloc_arch_node_t *node, *node_tmp; + HASH_ITER(hh, arch->nodes_by_name, node, node_tmp) { + HASH_DEL(arch->nodes_by_name, node); + netloc_arch_node_destruct(node); + } + + free(arch->arch.node_tree->degrees); + free(arch->arch.node_tree->cost); + free(arch->arch.node_tree); + free(arch->current_hosts); + free(arch->node_slot_by_idx); + + free(arch); + + return NETLOC_SUCCESS; +} + +static netloc_arch_node_t *netloc_arch_node_construct(void) +{ + netloc_arch_node_t *arch_node = (netloc_arch_node_t *) + calloc(1, sizeof(netloc_arch_node_t)); + arch_node->num_slots = -1; + + return arch_node; +} + +static int netloc_arch_node_destruct(netloc_arch_node_t *arch_node) +{ + free(arch_node->slot_idx); + free(arch_node->slot_os_idx); + if (arch_node->slot_tree) + netloc_arch_tree_destruct(arch_node->slot_tree); + free(arch_node->current_slots); + free(arch_node->slot_ranks); + free(arch_node); + + return NETLOC_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/netloc/edge.c b/3rd-party/hwloc-2.7.1/netloc/edge.c new file mode 100644 index 0000000000..56e07a5073 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/edge.c @@ -0,0 +1,87 @@ +/* + * Copyright © 2013-2014 University of Wisconsin-La Crosse. + * All rights reserved. + * Copyright © 2013 Cisco Systems, Inc. All rights reserved. + * Copyright © 2015-2016 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include + +#include +#include + +static int cur_uid = 0; + +netloc_edge_t * netloc_edge_construct(void) +{ + + netloc_edge_t *edge = NULL; + + edge = (netloc_edge_t*)malloc(sizeof(netloc_edge_t)); + if( NULL == edge ) { + return NULL; + } + + edge->id = cur_uid; + cur_uid++; + + edge->dest = NULL; + edge->node = NULL; + + utarray_new(edge->physical_links, &ut_ptr_icd); + + edge->total_gbits = 0; + + utarray_new(edge->partitions, &ut_int_icd); + + utarray_new(edge->subnode_edges, &ut_ptr_icd); + + edge->userdata = NULL; + + return edge; +} + +char * netloc_edge_pretty_print(netloc_edge_t* edge) +{ + // TODO + return "TODO"; +} + +int netloc_edge_destruct(netloc_edge_t * edge) +{ + utarray_free(edge->physical_links); + utarray_free(edge->partitions); + + for (unsigned int e = 0; e < netloc_edge_get_num_subedges(edge); e++) { + netloc_edge_t *subedge; + subedge = netloc_edge_get_subedge(edge, e); + netloc_edge_destruct(subedge); + } + utarray_free(edge->subnode_edges); + free(edge); + return NETLOC_SUCCESS; +} + +void netloc_edge_reset_uid(void) +{ + cur_uid = 0; +} + +int netloc_edge_is_in_partition(netloc_edge_t *edge, int partition) +{ + for (unsigned int i = 0; i < netloc_get_num_partitions(edge); i++) { + if (netloc_get_partition(edge, i) == partition) + return 1; + } + return NETLOC_SUCCESS; +} + + diff --git a/3rd-party/hwloc-2.7.1/netloc/hwloc.c b/3rd-party/hwloc-2.7.1/netloc/hwloc.c new file mode 100644 index 0000000000..3c5b4537ee --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/hwloc.c @@ -0,0 +1,288 @@ +/* + * Copyright © 2016-2018 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ + +#include +#include +#include + +#include +#include +#include + +static UT_icd topos_icd = {sizeof(hwloc_topology_t), NULL, NULL, NULL}; + +int netloc_topology_read_hwloc(netloc_topology_t *topology, int num_nodes, + netloc_node_t **node_list) +{ + int ret = 0; + int all = 0; + + char *hwloc_path; + + if (!topology->hwlocpath) { + printf("No hwloc directory recorded in the topology\n"); + return NETLOC_ERROR; + } + + if (topology->hwlocpath[0] != '/') { + char *path_tmp = strdup(topology->topopath); + asprintf(&hwloc_path, "%s/%s", dirname(path_tmp), topology->hwlocpath); + free(path_tmp); + } else { + hwloc_path = strdup(topology->hwlocpath); + } + + DIR* dir = opendir(hwloc_path); + /* Directory does not exist */ + if (!dir) { + printf("Directory (%s) to hwloc does not exist\n", hwloc_path); + free(hwloc_path); + return NETLOC_ERROR; + } + else { + closedir(dir); + } + + UT_array *hwloc_topo_names = topology->topos; + UT_array *hwloc_topos; + utarray_new(hwloc_topos, &topos_icd); + + int num_diffs = 0; + + if (!num_nodes) { + netloc_node_t *node, *node_tmp; + num_nodes = HASH_COUNT(topology->nodes); + node_list = (netloc_node_t **)malloc(sizeof(netloc_node_t *[num_nodes])); + int n = 0; + netloc_topology_iter_nodes(topology, node, node_tmp) { + node_list[n++] = node; + } + all = 1; + } + + for (int n = 0; n < num_nodes; n++) { + netloc_node_t *node = node_list[n]; + char *hwloc_file; + char *refname; + + if (netloc_node_is_switch(node)) + continue; + + /* We try to find a diff file */ + asprintf(&hwloc_file, "%s/%s.diff.xml", hwloc_path, node->hostname); + hwloc_topology_diff_t diff; + int err; + if ((err = hwloc_topology_diff_load_xml(hwloc_file, &diff, &refname)) >= 0) { + refname[strlen(refname)-4] = '\0'; + hwloc_topology_diff_destroy(diff); + num_diffs++; + } + else { + free(hwloc_file); + /* We try to find a regular file */ + asprintf(&hwloc_file, "%s/%s.xml", hwloc_path, node->hostname); + FILE *fxml; + if (!(fxml = fopen(hwloc_file, "r"))) { + printf("Missing hwloc file: %s\n", hwloc_file); + } + else + fclose(fxml); + asprintf(&refname, "%s", node->hostname); + } + + /* Add the hwloc topology */ + unsigned int t = 0; + while (t < utarray_len(hwloc_topo_names) && + strcmp(*(char **)utarray_eltptr(hwloc_topo_names, t), refname)) { + t++; + } + /* Topology not found */ + if (t == utarray_len(hwloc_topo_names)) { + utarray_push_back(hwloc_topo_names, &refname); + + /* Read the hwloc topology */ + hwloc_topology_t topology; + hwloc_topology_init(&topology); + hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED); + + char *hwloc_ref_path; + asprintf(&hwloc_ref_path, "%s/%s.xml", hwloc_path, refname); + ret = hwloc_topology_set_xml(topology, hwloc_ref_path); + free(hwloc_ref_path); + if (ret == -1) { + void *null = NULL; + utarray_push_back(hwloc_topos, &null); + fprintf(stdout, "Warning: no topology for %s\n", refname); + hwloc_topology_destroy(topology); + free(refname); free(hwloc_file); + continue; + } + + ret = hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_STRUCTURE); + if (ret == -1) { + fprintf(stderr, "hwloc_topology_set_all_types_filter failed\n"); + free(refname); free(hwloc_file); + goto ERROR; + } + + ret = hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_NONE); + if (ret == -1) { + fprintf(stderr, "hwloc_topology_set_all_types_filter failed\n"); + free(refname); free(hwloc_file); + goto ERROR; + } + + ret = hwloc_topology_load(topology); + if (ret == -1) { + fprintf(stderr, "hwloc_topology_load failed\n"); + free(refname); free(hwloc_file); + goto ERROR; + } + utarray_push_back(hwloc_topos, &topology); + } + free(refname); + free(hwloc_file); + node->hwlocTopo = *(hwloc_topology_t *)utarray_eltptr(hwloc_topos, t); + node->hwlocTopoIdx = t; + } + + if (!num_diffs) { + printf("Warning: no hwloc diff file found!\n"); + } + + topology->topos = hwloc_topo_names; + topology->hwloc_topos = (hwloc_topology_t *)hwloc_topos->d; + + printf("%d hwloc topologies found:\n", utarray_len(topology->topos)); + for (unsigned int p = 0; p < utarray_len(topology->topos); p++) { + printf("\t'%s'\n", *(char **)utarray_eltptr(topology->topos, p)); + } + + ret = NETLOC_SUCCESS; + +ERROR: + if (all) { + free(node_list); + } + free(hwloc_path); + if (ret == NETLOC_SUCCESS) + free(hwloc_topos); + else + utarray_free(hwloc_topos); + return ret; +} + +/* Set the info from hwloc of the node in the correspondig arch */ +int netloc_arch_node_get_hwloc_info(netloc_arch_node_t *arch_node) +{ + hwloc_topology_t topology = arch_node->node->hwlocTopo; + + hwloc_obj_t root = hwloc_get_root_obj(topology); + + int depth = hwloc_topology_get_depth(topology); + hwloc_obj_t first_object = root->first_child; + + UT_array **down_degrees_by_level; + NETLOC_int *max_down_degrees_by_level; + + down_degrees_by_level = (UT_array **)malloc(depth*sizeof(UT_array *)); + for (int l = 0; l < depth; l++) { + utarray_new(down_degrees_by_level[l], &ut_int_icd); + } + max_down_degrees_by_level = (NETLOC_int *) + calloc(depth-1, sizeof(NETLOC_int)); + + int level = depth-1; + hwloc_obj_t current_object = first_object; + while (level >= 1) { + int degree = 1; + /* we go through the siblings */ + while (current_object->next_sibling) { + current_object = current_object->next_sibling; + degree++; + } + /* Add the degree to the list of degrees */ + utarray_push_back(down_degrees_by_level[depth-1-level], °ree); + max_down_degrees_by_level[depth-1-level] = + max_down_degrees_by_level[depth-1-level] > degree ? + max_down_degrees_by_level[depth-1-level] : degree; + + current_object = current_object->next_cousin; + + if (!current_object) { + level--; + if (!first_object->first_child) + break; + first_object = first_object->first_child; + current_object = first_object; + } + } + + /* List of PUs */ + unsigned int max_os_index = 0; + UT_array *ordered_host_array; + int *ordered_hosts; + utarray_new(ordered_host_array, &ut_int_icd); + current_object = first_object; + while (current_object) { + max_os_index = (max_os_index >= current_object->os_index)? + max_os_index: current_object->os_index; + utarray_push_back(ordered_host_array, ¤t_object->os_index); + current_object = current_object->next_cousin; + } + ordered_hosts = (int *)ordered_host_array->d;; + + /* Weight for the edges in the tree */ + NETLOC_int *cost = (NETLOC_int *)malloc((depth-1)*sizeof(NETLOC_int)); + int level_coeff = 3; + cost[depth-2] = 1; + for (int l = depth-3; l >= 0; l--) { + cost[l] = cost[l+1]*level_coeff; + } + + netloc_arch_tree_t *tree = (netloc_arch_tree_t *) + malloc(sizeof(netloc_arch_tree_t)); + tree->num_levels = depth-1; + tree->degrees = max_down_degrees_by_level; + tree->cost = cost; + + int *arch_idx; + int num_cores = utarray_len(ordered_host_array); + netloc_arch_tree_complete(tree, down_degrees_by_level, num_cores, &arch_idx); + + int *slot_idx = (int *)malloc(sizeof(int[max_os_index+1])); + for (int i = 0; i < num_cores; i++) { + slot_idx[ordered_hosts[i]] = arch_idx[i]; + } + + int num_leaves = netloc_arch_tree_num_leaves(tree); + int *slot_os_idx = (int *)malloc(sizeof(int[num_leaves])); + for (int i = 0; i < num_cores; i++) { + slot_os_idx[arch_idx[i]] = ordered_hosts[i]; + } + free(arch_idx); + + arch_node->slot_tree = tree; + arch_node->slot_idx = slot_idx; + arch_node->slot_os_idx = slot_os_idx; + arch_node->num_slots = max_os_index+1; + + for (int l = 0; l < depth; l++) { + utarray_free(down_degrees_by_level[l]); + } + free(down_degrees_by_level); + + utarray_free(ordered_host_array); + + return NETLOC_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/netloc/mpicomm.c b/3rd-party/hwloc-2.7.1/netloc/mpicomm.c new file mode 100644 index 0000000000..dff8d7548f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/mpicomm.c @@ -0,0 +1,101 @@ +/* + * Copyright © 2016-2017 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include +#include + +#include +#include + +int netloc_build_comm_mat(char *filename, int *pn, double ***pmat) +{ + FILE *input = fopen(filename, "r"); + + if (!input ) { + perror("fopen"); + return NETLOC_ERROR; + } + char *line = NULL; + size_t linesize = 0; + + char *ptr= NULL; + int i,j; + + j = -1; + i = 0; + + /* Get the number of elements in a line to find the size of the matrix */ + netloc_line_get(&line, &linesize, input); + int n = 0; + char *remain_line = line; + while ((ptr = netloc_line_get_next_token(&remain_line, ' '))) { + if (!strlen(ptr)) + break; + n++; + } + rewind(input); + + if (!n) { + goto error; + } + + double *mat_values = (double *)malloc(sizeof(double[n*n])); + double **mat = (double **)malloc(sizeof(double *[n])); + for (int i = 0; i < n; i++) { + mat[i] = &mat_values[i*n]; + } + + while (netloc_line_get(&line, &linesize, input) != -1) { + char *remain_line = line; + j = 0; + while ((ptr = netloc_line_get_next_token(&remain_line, ' '))){ + if (!strlen(ptr)) + break; + mat[i][j] = atof(ptr); + if (mat[i][j] < 0) { + fprintf(stderr, "Warning: negative value in comm matrix " + "(mat[%d][%d] = %f)\n", i, j, mat[i][j]); + } + j++; + } + if (j != n) { + fprintf(stderr, "Error at %d %d (%d!=%d). " + "Too many columns for %s\n", i, j, j, n, filename); + goto error; + } + i++; + } + + if (i != n) { + fprintf(stderr,"Error at %d %d. Too many rows for %s\n", + i, j, filename); + goto error; + } + + fclose (input); + + *pn = n; + *pmat = mat; + + free(line); + return NETLOC_SUCCESS; + +error: + free(line); + free(mat_values); + free(mat); + *pmat = NULL; + *pn = 0; + fclose (input); + return NETLOC_ERROR; +} diff --git a/3rd-party/hwloc-2.7.1/netloc/node.c b/3rd-party/hwloc-2.7.1/netloc/node.c new file mode 100644 index 0000000000..e1adb3a63d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/node.c @@ -0,0 +1,129 @@ +/* + * Copyright © 2013-2014 University of Wisconsin-La Crosse. + * All rights reserved. + * Copyright © 2013 Cisco Systems, Inc. All rights reserved. + * Copyright © 2015-2017 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include + +#include +#include +#include + +static UT_icd node_physical_links_icd = { + sizeof(netloc_physical_link_t *), NULL, NULL, NULL +}; + +static UT_icd node_physical_nodes_icd = { + sizeof(netloc_node_t *), NULL, NULL, NULL +}; + +static UT_icd node_partitions_icd = { sizeof(int), NULL, NULL, NULL }; + +static int node_or_subnode_destruct(netloc_node_t * node, int is_node); + +netloc_node_t * netloc_node_construct(void) +{ + netloc_node_t *node = NULL; + + node = (netloc_node_t*)malloc(sizeof(netloc_node_t)); + if (NULL == node) { + return NULL; + } + + node->physical_id[0] = '\0'; + node->logical_id = -1; + node->type = NETLOC_NODE_TYPE_INVALID; + utarray_new(node->physical_links, &node_physical_links_icd); + node->description = NULL; + node->userdata = NULL; + node->edges = NULL; + utarray_new(node->subnodes, &node_physical_nodes_icd); + node->paths = NULL; + node->hostname = NULL; + utarray_new(node->partitions, &node_partitions_icd); + node->hwlocTopo = NULL; + node->hwlocTopoIdx = -1; + + return node; +} + +int netloc_node_destruct(netloc_node_t * node) +{ + return node_or_subnode_destruct(node, 1); +} + +static int node_or_subnode_destruct(netloc_node_t * node, int is_node) +{ + utarray_free(node->physical_links); + + /* Description */ + free(node->description); + + /* Edges */ + netloc_edge_t *edge, *edge_tmp; + HASH_ITER(hh, node->edges, edge, edge_tmp) { + HASH_DEL(node->edges, edge); /* delete; edge advances to next */ + netloc_edge_destruct(edge); + } + + /* Subnodes */ + for (unsigned int n = 0; n < utarray_len(node->subnodes); n++) { + netloc_node_t *subnode = *(netloc_node_t **) + utarray_eltptr(node->subnodes, n); + node_or_subnode_destruct(subnode, 0); + } + utarray_free(node->subnodes); + + /* Paths */ + netloc_path_t *path, *path_tmp; + HASH_ITER(hh, node->paths, path, path_tmp) { + HASH_DEL(node->paths, path); /* delete; path advances to next */ + netloc_path_destruct(path); + } + + /* Hostname */ + free(node->hostname); + + /* Partitions */ + utarray_free(node->partitions); + + /* hwlocTopo: nothing to do beacause the pointer is stored also in the topology */ + + free(node); + + return NETLOC_SUCCESS; +} + +char *netloc_node_pretty_print(netloc_node_t* node) +{ + char * str = NULL; + + asprintf(&str, " [%23s]/[%d] -- %s (%d links)", + node->physical_id, + node->logical_id, + node->description, + utarray_len(node->physical_links)); + + return str; +} + +int netloc_node_is_in_partition(netloc_node_t *node, int partition) +{ + for (unsigned int i = 0; i < netloc_get_num_partitions(node); i++) { + if (netloc_get_partition(node, i) == partition) + return 1; + } + return NETLOC_SUCCESS; +} + + diff --git a/3rd-party/hwloc-2.7.1/netloc/path.c b/3rd-party/hwloc-2.7.1/netloc/path.c new file mode 100644 index 0000000000..80d3f17253 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/path.c @@ -0,0 +1,31 @@ +/* + * Copyright © 2016 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include + +#include + +netloc_path_t *netloc_path_construct(void) +{ + netloc_path_t *path = (netloc_path_t *) + malloc(sizeof(netloc_path_t )); + utarray_new(path->links, &ut_ptr_icd); + + return path; +} + +int netloc_path_destruct(netloc_path_t *path) +{ + utarray_free(path->links); + free(path); + return NETLOC_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/netloc/physical_link.c b/3rd-party/hwloc-2.7.1/netloc/physical_link.c new file mode 100644 index 0000000000..7047abfc52 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/physical_link.c @@ -0,0 +1,88 @@ +/* + * Copyright © 2016 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include + +#include +#include + +netloc_physical_link_t * netloc_physical_link_construct(void) +{ + static int cur_uid = 0; + + netloc_physical_link_t *physical_link = NULL; + + physical_link = (netloc_physical_link_t*) + malloc(sizeof(netloc_physical_link_t)); + if( NULL == physical_link ) { + return NULL; + } + + physical_link->id = cur_uid; + cur_uid++; + + physical_link->src = NULL; + physical_link->dest = NULL; + + physical_link->ports[0] = -1; + physical_link->ports[1] = -1; + + physical_link->width = NULL; + physical_link->speed = NULL; + + physical_link->edge = NULL; + physical_link->other_way = NULL; + + utarray_new(physical_link->partitions, &ut_int_icd); + + physical_link->gbits = -1; + + physical_link->description = NULL; + + return physical_link; +} + +int netloc_physical_link_destruct(netloc_physical_link_t *link) +{ + free(link->width); + free(link->description); + free(link->speed); + utarray_free(link->partitions); + free(link); + return NETLOC_SUCCESS; +} + +char * netloc_link_pretty_print(netloc_physical_link_t* link) +{ + char * str = NULL; + const char * tmp_src_str = NULL; + const char * tmp_dest_str = NULL; + + tmp_src_str = netloc_node_type_decode(link->src->type); + tmp_dest_str = netloc_node_type_decode(link->dest->type); + + asprintf(&str, "%3d (%s) [%23s] %d [<- %s / %s (%f) ->] (%s) [%23s] %d", + link->id, + tmp_src_str, + link->src->physical_id, + link->ports[0], + link->speed, + link->width, + link->gbits, + tmp_dest_str, + link->dest->physical_id, + link->ports[1]); + + return str; +} + + diff --git a/3rd-party/hwloc-2.7.1/netloc/scotch.c b/3rd-party/hwloc-2.7.1/netloc/scotch.c new file mode 100644 index 0000000000..24926f512b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/scotch.c @@ -0,0 +1,469 @@ +/* + * Copyright © 2016-2017 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +static int arch_tree_to_scotch_arch(netloc_arch_tree_t *tree, SCOTCH_Arch *scotch); +static int comm_matrix_to_scotch_graph(double **matrix, int n, SCOTCH_Graph *graph); +static int netlocscotch_get_mapping_from_graph(SCOTCH_Graph *graph, + netlocscotch_core_t **pcores); + +static int compareint(void const *a, void const *b) +{ + const int *int_a = (const int *)a; + const int *int_b = (const int *)b; + return *int_a-*int_b; +} + +static int build_subarch(SCOTCH_Arch *scotch, NETLOC_int num_nodes, NETLOC_int *node_list, + SCOTCH_Arch *subarch) +{ + int ret; + + /* Hack to avoid problem with unsorted node list in the subarch and scotch + * FIXME TODO */ + qsort(node_list, num_nodes, sizeof(*node_list), compareint); + + ret = SCOTCH_archSub(subarch, scotch, num_nodes, node_list); + if (ret != 0) { + fprintf(stderr, "Error: SCOTCH_archSub failed\n"); + } + + return ret; +} + +/* Convert a netloc tree to a scotch tleaf architecture */ +int arch_tree_to_scotch_arch(netloc_arch_tree_t *tree, SCOTCH_Arch *scotch) +{ + int ret; + + ret = SCOTCH_archTleaf(scotch, tree->num_levels, tree->degrees, tree->cost); + if (ret != 0) { + fprintf(stderr, "Error: SCOTCH_archTleaf failed\n"); + return NETLOC_ERROR; + } + + return NETLOC_SUCCESS; +} + +static int build_subgraph(SCOTCH_Graph *graph, int *vertices, int num_vertices, + SCOTCH_Graph *nodegraph) +{ + int ret; + + SCOTCH_Num base; /* Base value */ + SCOTCH_Num vert; /* Number of vertices */ + SCOTCH_Num *verttab; /* Vertex array [vertnbr+1] */ + SCOTCH_Num *vendtab; /* Vertex array [vertnbr] */ + SCOTCH_Num *velotab; /* Vertex load array */ + SCOTCH_Num *vlbltab; /* Vertex label array */ + SCOTCH_Num edge; /* Number of edges (arcs) */ + SCOTCH_Num *edgetab; /* Edge array [edgenbr] */ + SCOTCH_Num *edlotab; /* Edge load array */ + + SCOTCH_graphData(graph, &base, &vert, &verttab, &vendtab, &velotab, + &vlbltab, &edge, &edgetab, &edlotab); + + int *vertex_is_present = (int *)malloc(vert*sizeof(int)); + for (int v = 0; v < vert; v++) { + vertex_is_present[v] = -1; + } + for (int v = 0; v < num_vertices; v++) { + vertex_is_present[vertices[v]] = v; + } + + // TODO handle other cases + if (vendtab) { + for (int i = 0; i < vert; i++) { + assert(vendtab[i] == verttab[i+1]); + } + } + + SCOTCH_Num *new_verttab; /* Vertex array [vertnbr+1] */ + SCOTCH_Num *new_vendtab; /* Vertex array [vertnbr] */ + SCOTCH_Num *new_velotab; /* Vertex load array */ + SCOTCH_Num *new_vlbltab; /* Vertex label array */ + SCOTCH_Num new_edge; /* Number of edges (arcs) */ + SCOTCH_Num *new_edgetab; /* Edge array [edgenbr] */ + SCOTCH_Num *new_edlotab; /* Edge load array */ + + new_verttab = (SCOTCH_Num *)malloc((num_vertices+1)*sizeof(SCOTCH_Num)); + new_vendtab = NULL; + if (velotab) + new_velotab = (SCOTCH_Num *)malloc(num_vertices*sizeof(SCOTCH_Num)); + else + new_velotab = NULL; + if (vlbltab) + new_vlbltab = (SCOTCH_Num *)malloc(num_vertices*sizeof(SCOTCH_Num)); + else + new_vlbltab = NULL; + + new_edgetab = (SCOTCH_Num *)malloc(edge*sizeof(SCOTCH_Num)); + new_edlotab = (SCOTCH_Num *)malloc(edge*sizeof(SCOTCH_Num)); + + int edge_idx = 0; + new_verttab[0] = 0; + for (int v = 0; v < num_vertices; v++) { + if (velotab) + new_velotab[v] = velotab[vertices[v]]; + if (vlbltab) + new_vlbltab[v] = vlbltab[vertices[v]]; + + for (int e = verttab[vertices[v]]; e < verttab[vertices[v]+1]; e++) { + int dest_vertex = edgetab[e]; + int new_dest = vertex_is_present[dest_vertex]; + if (new_dest != -1) { + new_edgetab[edge_idx] = new_dest; + new_edlotab[edge_idx] = edlotab[e]; + edge_idx++; + } + } + new_verttab[v+1] = edge_idx; + } + + new_edge = edge_idx; + + SCOTCH_Num *old_edgetab = new_edgetab; + new_edgetab = (SCOTCH_Num *) + realloc(new_edgetab, new_edge*sizeof(SCOTCH_Num)); + if (!new_edgetab) { + new_edgetab = old_edgetab; + } + + SCOTCH_Num *old_edlotab = new_edlotab; + new_edlotab = (SCOTCH_Num *) + realloc(new_edlotab, new_edge*sizeof(SCOTCH_Num)); + if (!new_edlotab) { + new_edlotab = old_edlotab; + } + + ret = SCOTCH_graphBuild (nodegraph, base, num_vertices, + new_verttab, new_vendtab, new_velotab, new_vlbltab, + new_edge, new_edgetab, new_edlotab); + + free(vertex_is_present); + + return ret; +} + +static int build_current_arch(SCOTCH_Arch *scotch_arch, + SCOTCH_Arch *scotch_subarch, netloc_arch_t *arch) +{ + int ret; + /* First we need to get the topology of the whole machine */ + ret = netloc_arch_build(arch, 1); + if( NETLOC_SUCCESS != ret ) { + return ret; + } + + if (scotch_subarch) { + /* Set the current nodes and slots in the arch */ + ret = netloc_arch_set_current_resources(arch); + } else { + ret = netloc_arch_set_global_resources(arch); + } + + if( NETLOC_SUCCESS != ret ) { + return ret; + } + + SCOTCH_archInit(scotch_arch); + ret = arch_tree_to_scotch_arch(arch->arch.global_tree, scotch_arch); + if (NETLOC_SUCCESS != ret) { + return ret; + } + + if (scotch_subarch) { + /* Now we can build the sub architecture */ + SCOTCH_archInit(scotch_subarch); + ret = build_subarch(scotch_arch, arch->num_current_hosts, + arch->current_hosts, scotch_subarch); + } + + return ret; +} + +int netlocscotch_build_global_arch(SCOTCH_Arch *arch) +{ + int ret; + netloc_arch_t *netloc_arch = netloc_arch_construct(); + ret = build_current_arch(arch, NULL, netloc_arch); + + netloc_arch_destruct(netloc_arch); + return ret; +} + +int netlocscotch_build_current_arch(SCOTCH_Arch *arch, SCOTCH_Arch *subarch) +{ + int ret; + netloc_arch_t *netloc_arch = netloc_arch_construct(); + ret = build_current_arch(arch, subarch, netloc_arch); + + if (ret == NETLOC_SUCCESS) + netloc_arch_destruct(netloc_arch); + + return ret; +} + +int netlocscotch_get_mapping_from_graph(SCOTCH_Graph *graph, + netlocscotch_core_t **pcores) +{ + int ret; + + SCOTCH_Arch scotch_arch; + SCOTCH_Arch scotch_subarch; + netlocscotch_core_t *cores = NULL; + netloc_arch_t *arch = netloc_arch_construct(); + ret = build_current_arch(&scotch_arch, &scotch_subarch, arch); + if (NETLOC_SUCCESS != ret) { + netloc_arch_destruct(arch); + return ret; + } + + NETLOC_int graph_size; + SCOTCH_graphSize(graph, &graph_size, NULL); + + int num_hosts = arch->num_current_hosts; + + SCOTCH_Strat strategy; + SCOTCH_stratInit(&strategy); + /* We force Scotch to use all the processes + * barat is 0.01 as in SCOTCH_STRATDEFAULT */ + SCOTCH_stratGraphMapBuild(&strategy, SCOTCH_STRATQUALITY, graph_size, 0.01); + + /* The ranks are the indices of the nodes in the complete graph */ + NETLOC_int *ranks = (NETLOC_int *)malloc(graph_size*sizeof(NETLOC_int)); + ret = SCOTCH_graphMap(graph, &scotch_subarch, &strategy, ranks); + + SCOTCH_stratExit(&strategy); + + SCOTCH_archExit(&scotch_subarch); + SCOTCH_archExit(&scotch_arch); + + if (ret != 0) { + fprintf(stderr, "Error: SCOTCH_graphMap failed\n"); + goto ERROR; + } + + cores = (netlocscotch_core_t *) + malloc(graph_size*sizeof(netlocscotch_core_t)); + if (!arch->has_slots) { + /* We have the mapping but only for the nodes, not inside the nodes */ + + UT_array *process_by_node[num_hosts]; + for (int n = 0; n < num_hosts; n++) { + utarray_new(process_by_node[n], &ut_int_icd); + } + + /* Find the processes mapped to the nodes */ + for (int p = 0; p < graph_size; p++) { + int rank = ranks[p]; + if (rank >= num_hosts || rank < 0) { + ret = NETLOC_ERROR; + goto ERROR; + } + utarray_push_back(process_by_node[rank], &p); + } + + /* Use the intranode topology */ + for (int n = 0; n < num_hosts; n++) { + int *process_list = (int *)process_by_node[n]->d; + int num_processes = utarray_len(process_by_node[n]); + netloc_arch_node_t *node = + arch->node_slot_by_idx[arch->current_hosts[n]].node; + NETLOC_int node_ranks[num_processes]; + + /* We need to extract the subgraph with only the vertices mapped to the + * current node */ + SCOTCH_Graph nodegraph; /* graph with only elements for node n */ + build_subgraph(graph, process_list, num_processes, &nodegraph); + + /* Build the scotch arch of the all node */ + SCOTCH_Arch scotch_nodearch; + ret = arch_tree_to_scotch_arch(node->slot_tree, &scotch_nodearch); + if (NETLOC_SUCCESS != ret) { + goto ERROR; + } + + /* Restrict the scotch arch to the available cores */ + SCOTCH_Arch scotch_nodesubarch; + ret = build_subarch(&scotch_nodearch, node->num_current_slots, + node->current_slots, &scotch_nodesubarch); + if (NETLOC_SUCCESS != ret) { + goto ERROR; + } + + /* Find the mapping to the cores */ + ret = SCOTCH_graphMap(&nodegraph, &scotch_nodesubarch, &strategy, node_ranks); + if (ret != 0) { + fprintf(stderr, "Error: SCOTCH_graphMap failed\n"); + goto ERROR; + } + + /* Report the node ranks in the global rank array */ + for (int p = 0; p < num_processes; p++) { + int process = process_list[p]; + int arch_idx = node->current_slots[node_ranks[p]]; + cores[process].core = node->slot_os_idx[arch_idx]; + cores[process].nodename = strdup(node->node->hostname); + cores[process].rank = node->slot_ranks[node_ranks[p]]; + } + } + for (int n = 0; n < num_hosts; n++) { + utarray_free(process_by_node[n]); + } + } else { + for (int p = 0; p < graph_size; p++) { + int host_idx = arch->current_hosts[ranks[p]]; + netloc_arch_node_t *node = arch->node_slot_by_idx[host_idx].node; + int slot_rank = arch->node_slot_by_idx[host_idx].slot; + cores[p].nodename = strdup(node->node->hostname); + cores[p].core = node->slot_os_idx[node->slot_idx[slot_rank]]; + cores[p].rank = node->slot_ranks[node->slot_idx[slot_rank]]; + } + } + + *pcores = cores; + +ERROR: + free(ranks); + netloc_arch_destruct(arch); + if (ret == NETLOC_SUCCESS) + return ret; + free(cores); + return ret; +} + +int netlocscotch_get_mapping_from_comm_matrix(double **comm, int num_vertices, + netlocscotch_core_t **pcores) +{ + int ret; + + SCOTCH_Graph graph; + ret = comm_matrix_to_scotch_graph(comm, num_vertices, &graph); + if (NETLOC_SUCCESS != ret) { + return ret; + } + + ret = netlocscotch_get_mapping_from_graph(&graph, pcores); + + /* Free arrays */ + { + SCOTCH_Num base; /* Base value */ + SCOTCH_Num vert; /* Number of vertices */ + SCOTCH_Num *verttab; /* Vertex array [vertnbr+1] */ + SCOTCH_Num *vendtab; /* Vertex array [vertnbr] */ + SCOTCH_Num *velotab; /* Vertex load array */ + SCOTCH_Num *vlbltab; /* Vertex label array */ + SCOTCH_Num edge; /* Number of edges (arcs) */ + SCOTCH_Num *edgetab; /* Edge array [edgenbr] */ + SCOTCH_Num *edlotab; /* Edge load array */ + + SCOTCH_graphData(&graph, &base, &vert, &verttab, &vendtab, &velotab, + &vlbltab, &edge, &edgetab, &edlotab); + free(edlotab); + free(edgetab); + free(verttab); + SCOTCH_graphExit(&graph); + } + + return ret; +} + +int netlocscotch_get_mapping_from_comm_file(char *filename, int *pnum_processes, + netlocscotch_core_t **pcores) +{ + int ret; + int n; + double **mat; + + ret = netloc_build_comm_mat(filename, &n, &mat); + + if (ret != NETLOC_SUCCESS) { + return ret; + } + + *pnum_processes = n; + + ret = netlocscotch_get_mapping_from_comm_matrix(mat, n, pcores); + + free(mat[0]); + free(mat); + + return ret; +} + +static int comm_matrix_to_scotch_graph(double **matrix, int n, SCOTCH_Graph *graph) +{ + int ret; + + SCOTCH_Num base; /* Base value */ + SCOTCH_Num vert; /* Number of vertices */ + SCOTCH_Num *verttab; /* Vertex array [vertnbr+1] */ + SCOTCH_Num *vendtab; /* Vertex array [vertnbr] */ + SCOTCH_Num *velotab; /* Vertex load array */ + SCOTCH_Num *vlbltab; /* Vertex label array */ + SCOTCH_Num edge; /* Number of edges (arcs) */ + SCOTCH_Num *edgetab; /* Edge array [edgenbr] */ + SCOTCH_Num *edlotab; /* Edge load array */ + + base = 0; + vert = n; + + verttab = (SCOTCH_Num *)malloc((vert+1)*sizeof(SCOTCH_Num)); + for (int v = 0; v < vert+1; v++) { + verttab[v] = v*(n-1); + } + + vendtab = NULL; + velotab = NULL; + vlbltab = NULL; + + edge = n*(n-1); + + /* Compute the lowest load to reduce of the values of the load to avoid overflow */ + double min_load = -1; + for (int v1 = 0; v1 < vert; v1++) { + for (int v2 = 0; v2 < vert; v2++) { + double load = matrix[v1][v2]; + if (load >= 0.01 && (load < min_load || min_load < 0)) /* TODO set an epsilon */ + min_load = load; + } + } + + edgetab = (SCOTCH_Num *)malloc(n*(n-1)*sizeof(SCOTCH_Num)); + edlotab = (SCOTCH_Num *)malloc(n*(n-1)*sizeof(SCOTCH_Num)); + for (int v1 = 0; v1 < vert; v1++) { + for (int v2 = 0; v2 < vert; v2++) { + if (v2 == v1) + continue; + int idx = v1*(n-1)+((v2 < v1) ? v2: v2-1); + edgetab[idx] = v2; + edlotab[idx] = (int)(matrix[v1][v2]/min_load); + } + } + + ret = SCOTCH_graphBuild(graph, base, vert, + verttab, vendtab, velotab, vlbltab, edge, edgetab, edlotab); + + return ret; +} + diff --git a/3rd-party/hwloc-2.7.1/netloc/support.c b/3rd-party/hwloc-2.7.1/netloc/support.c new file mode 100644 index 0000000000..e17c937ad4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/support.c @@ -0,0 +1,61 @@ +/* + * Copyright © 2013-2014 University of Wisconsin-La Crosse. + * All rights reserved. + * Copyright © 2016-2018 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#include +#include + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +char *netloc_line_get_next_token(char **string, char c) +{ + char *field; + char *string_end; + + if (!*string) + return NULL; + + string_end = strchr(*string, c); + + if (string_end) { + string_end[0] = '\0'; + field = *string; + *string = string_end+1; + } else { + field = *string; + *string = NULL; + } + + return field; +} + +ssize_t netloc_line_get(char **lineptr, size_t *n, FILE *stream) +{ + ssize_t read = getline(lineptr, n, stream); + if (read == -1) + return -1; + + /* Remove last \n character */ + char *line = *lineptr; + size_t lastpos = strlen(line)-1; + if (line[lastpos] == '\n') { + line[lastpos] = '\0'; + read--; + } + return read; +} + diff --git a/3rd-party/hwloc-2.7.1/netloc/topology.c b/3rd-party/hwloc-2.7.1/netloc/topology.c new file mode 100644 index 0000000000..0efd04b93c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netloc/topology.c @@ -0,0 +1,598 @@ +/* + * Copyright © 2013-2014 University of Wisconsin-La Crosse. + * All rights reserved. + * Copyright © 2016-2017 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include +#include +#include +#include + +#include + +static char *line_get_next_field(char **string); +static void read_partition_list(char *list, UT_array *array); +static int edges_sort_by_dest(netloc_edge_t *a, netloc_edge_t *b); +static int find_reverse_edges(netloc_topology_t *topology); +static int find_similar_nodes(netloc_topology_t *topology); +static int netloc_node_get_virtual_id(char *id); +static int edge_merge_into(netloc_edge_t *dest, netloc_edge_t *src, int keep); + +netloc_topology_t *netloc_topology_construct(char *path) +{ + int ret; + char *line = NULL; + size_t linesize = 0; + + netloc_topology_t *topology = NULL; + + FILE *input = fopen(path, "r"); + + if (!input ) { + fprintf(stderr, "Cannot open topology file %s\n", path); + perror("fopen"); + exit(-1); + } + + int version; + if (fscanf(input , "%d\n,", &version) != 1) { + fprintf(stderr, "Cannot read the version number in %s\n", path); + perror("fscanf"); + fclose(input); + return NULL; + } else if (version != NETLOCFILE_VERSION) { + fprintf(stderr, "Incorrect version number, " + "please generate your input file again\n"); + fclose(input); + return NULL; + } + + char *subnet; + if (netloc_line_get(&line, &linesize, input) == -1) { + fprintf(stderr, "Cannot read the subnet in %s\n", path); + perror("fscanf"); + free(line); + fclose(input); + return NULL; + } else { + subnet = strdup(line); + } + + char *hwlocpath; + if (netloc_line_get(&line, &linesize, input) == -1) { + fprintf(stderr, "Cannot read hwloc path in %s\n", path); + perror("fscanf"); + free(subnet); + fclose(input); + return NULL; + } else if (!strlen(line)) { + hwlocpath = NULL; + } else { + hwlocpath = strdup(line); + } + + if (hwlocpath) { + DIR *hwlocdir; + char *realhwlocpath; + if (hwlocpath[0] != '/') { + char *path_tmp = strdup(path); + asprintf(&realhwlocpath, "%s/%s", dirname(path_tmp), hwlocpath); + free(path_tmp); + } else { + realhwlocpath = strdup(hwlocpath); + } + if (!(hwlocdir = opendir(realhwlocpath))) { + fprintf(stderr, "Couldn't open hwloc directory: \"%s\"\n", realhwlocpath); + perror("opendir"); + free(subnet); + free(realhwlocpath); + fclose(input); + return NULL; + } else { + closedir(hwlocdir); + free(realhwlocpath); + } + } + + int num_nodes; + if (fscanf(input , "%d\n", &num_nodes) != 1) { + fprintf(stderr, "Cannot read the number of nodes in %s\n", path); + perror("fscanf"); + free(subnet); + fclose(input); + return NULL; + } + + if (num_nodes <= 0) { + fprintf(stderr, "Oups: incorrect number of nodes (%d) in %s\n", + num_nodes, path); + free(subnet); + fclose(input); + return NULL; + } + + /* + * Allocate Memory + */ + topology = (netloc_topology_t *)malloc(sizeof(netloc_topology_t) * 1); + if( NULL == topology ) { + free(subnet); + fclose(input); + return NULL; + } + + /* + * Initialize the structure + */ + topology->topopath = path; + topology->hwlocpath = hwlocpath; + topology->subnet_id = subnet; + topology->nodes = NULL; + topology->physical_links = NULL; + topology->type = NETLOC_TOPOLOGY_TYPE_INVALID ; + topology->nodesByHostname = NULL; + topology->hwloc_topos = NULL; + utarray_new(topology->partitions, &ut_str_icd); + utarray_new(topology->topos, &ut_str_icd); + + /* Read nodes from file */ + for (int n = 0; n < num_nodes; n++) { + netloc_node_t *node = netloc_node_construct(); + netloc_line_get(&line, &linesize, input); + char *remain_line = line; + + strncpy(node->physical_id, line_get_next_field(&remain_line), 20); + /* Should be shorter than 20 */ + node->physical_id[19] = '\0'; /* If a problem occurs */ + node->logical_id = atoi(line_get_next_field(&remain_line)); + node->type = atoi(line_get_next_field(&remain_line)); + read_partition_list(line_get_next_field(&remain_line), node->partitions); + node->description = strdup(line_get_next_field(&remain_line)); + node->hostname = strdup(line_get_next_field(&remain_line)); + + HASH_ADD_STR(topology->nodes, physical_id, node); + if (strlen(node->hostname) > 0) { + HASH_ADD_KEYPTR(hh2, topology->nodesByHostname, node->hostname, + strlen(node->hostname), node); + } + } + + /* Read edges from file */ + for (int n = 0; n < num_nodes; n++) { + char *field; + netloc_node_t *node; + + netloc_line_get(&line, &linesize, input); + char *remain_line = line; + + field = line_get_next_field(&remain_line); + if (strlen(field) > 19) + field[19] = '\0'; + HASH_FIND_STR(topology->nodes, field, node); + + if (!node) { + fprintf(stderr, "Node not found: %s\n", field); + utarray_free(topology->partitions); + utarray_free(topology->topos); + return NULL; + } + + while ((field = line_get_next_field(&remain_line))) { + /* There is an edge */ + netloc_edge_t *edge = netloc_edge_construct(); + + HASH_FIND_STR(topology->nodes, field, edge->dest); + edge->total_gbits = strtof(line_get_next_field(&remain_line), NULL); + read_partition_list(line_get_next_field(&remain_line), edge->partitions); + + edge->node = node; + HASH_ADD_PTR(node->edges, dest, edge); + + /* Read links */ + int num_links = atoi(line_get_next_field(&remain_line)); + assert(num_links >= 0); + utarray_reserve(edge->physical_links, (unsigned int)num_links); + utarray_reserve(node->physical_links, (unsigned int)num_links); + for (int i = 0; i < num_links; i++) { + netloc_physical_link_t *link; + link = netloc_physical_link_construct(); + + link->id = atoi(line_get_next_field(&remain_line)); + + link->src = node; + link->dest = edge->dest; + + link->ports[0] = atoi(line_get_next_field(&remain_line)); + link->ports[1] = atoi(line_get_next_field(&remain_line)); + + link->width = strdup(line_get_next_field(&remain_line)); + link->speed = strdup(line_get_next_field(&remain_line)); + link->gbits = strtof(line_get_next_field(&remain_line), NULL); + link->description = strdup(line_get_next_field(&remain_line)); + link->other_way_id = atoi(line_get_next_field(&remain_line)); + + read_partition_list(line_get_next_field(&remain_line), + link->partitions); + + HASH_ADD_INT(topology->physical_links, id, link); + + utarray_push_back(node->physical_links, &link); + utarray_push_back(edge->physical_links, &link); + } + + } + HASH_SRT(hh, node->edges, edges_sort_by_dest); + } + + /* Read partitions from file */ + { + netloc_line_get(&line, &linesize, input); + char *remain_line = line; + char *field; + + while ((field = line_get_next_field(&remain_line))) { + utarray_push_back(topology->partitions, &field); + } + } + + /* Read paths */ + while (netloc_line_get(&line, &linesize, input) != -1) { + netloc_node_t *node; + netloc_path_t *path; + char *field; + + char *remain_line = line; + char *src_id = line_get_next_field(&remain_line); + char *dest_id = line_get_next_field(&remain_line); + + HASH_FIND_STR(topology->nodes, src_id, node); + + path = netloc_path_construct(); + strncpy(path->dest_id, dest_id, 20); /* Should be shorter than 20 */ + path->dest_id[19] = '\0'; /* If a problem occurs */ + + while ((field = line_get_next_field(&remain_line))) { + int link_id = atoi(field); + netloc_physical_link_t *link; + + HASH_FIND_INT(topology->physical_links, &link_id, link); + utarray_push_back(path->links, &link); + } + + HASH_ADD_STR(node->paths, dest_id, path); + } + + fclose(input); + free(line); + + if (find_reverse_edges(topology) != NETLOC_SUCCESS) { + netloc_topology_destruct(topology); + return NULL; + } + + ret = find_similar_nodes(topology); + if (ret != NETLOC_SUCCESS) { + netloc_topology_destruct(topology); + return NULL; + } + + return topology; +} + +int netloc_topology_destruct(netloc_topology_t *topology) +{ + /* + * Sanity Check + */ + if( NULL == topology ) { + fprintf(stderr, "Error: Detaching from a NULL pointer\n"); + return NETLOC_ERROR; + } + + free(topology->topopath); + free(topology->hwlocpath); + free(topology->subnet_id); + + /* Nodes */ + netloc_node_t *node, *node_tmp; + HASH_ITER(hh, topology->nodes, node, node_tmp) { + HASH_DELETE(hh, topology->nodes, node); + } + + netloc_topology_iter_nodes(topology, node, node_tmp) { + HASH_DELETE(hh, topology->nodes, node); + netloc_node_destruct(node); + } + + /** Partition List */ + utarray_free(topology->partitions); + + /** Physical links */ + netloc_physical_link_t *link, *link_tmp; + HASH_ITER(hh, topology->physical_links, link, link_tmp) { + HASH_DEL(topology->physical_links, link); + netloc_physical_link_destruct(link); + } + + /** Hwloc topology List */ + for (unsigned int t = 0; t < utarray_len(topology->topos); t++) { + if (topology->hwloc_topos[t]) + hwloc_topology_destroy(topology->hwloc_topos[t]); + } + free(topology->hwloc_topos); + + /** Hwloc topology name List */ + utarray_free(topology->topos); + + free(topology); + + return NETLOC_SUCCESS; +} + +int netloc_topology_find_partition_idx(netloc_topology_t *topology, char *partition_name) +{ + if (!partition_name) + return -1; + + /* Find the selected partition in the topology */ + unsigned int p = 0; + int found = 0; + while (p < utarray_len(topology->partitions)) { + char *current_name = *(char **)utarray_eltptr(topology->partitions, p); + + if (!strcmp(current_name, partition_name)) { + found = 1; + break; + } + p++; + } + + if (!found) + return -2; + + assert(p <= INT_MAX); + + return (int)p; +} + +static char *line_get_next_field(char **string) +{ + return netloc_line_get_next_token(string, ','); +} + +static void read_partition_list(char *list, UT_array *array) +{ + char *partition; + if (!strlen(list)) + return; + while ((partition = netloc_line_get_next_token(&list, ':'))) { + int partition_num = atoi(partition); + utarray_push_back(array, &partition_num); + } +} + +static int edges_sort_by_dest(netloc_edge_t *a, netloc_edge_t *b) +{ + return strcmp(a->dest->physical_id, b->dest->physical_id); +} + +static int find_reverse_edges(netloc_topology_t *topology) +{ + netloc_node_t *node, *node_tmp; + HASH_ITER(hh, topology->nodes, node, node_tmp) { + netloc_edge_t *edge, *edge_tmp; + netloc_node_iter_edges(node, edge, edge_tmp) { + netloc_node_t *dest = edge->dest; + if (dest > node) { + netloc_edge_t *reverse_edge; + HASH_FIND_PTR(dest->edges, &node, reverse_edge); + if (reverse_edge == NULL) { + return NETLOC_ERROR; + } + edge->other_way = reverse_edge; + reverse_edge->other_way = edge; + } + } + } + return NETLOC_SUCCESS; +} + +static int find_similar_nodes(netloc_topology_t * topology) +{ + int ret; + + /* Build edge lists by node */ + int num_nodes = HASH_COUNT(topology->nodes); + netloc_node_t **nodes = (netloc_node_t **)malloc(num_nodes*sizeof(netloc_node_t *)); + netloc_node_t ***edgedest_by_node = (netloc_node_t ***)malloc(num_nodes*sizeof(netloc_node_t **)); + int *num_edges_by_node = (int *)malloc(num_nodes*sizeof(int)); + netloc_node_t *node, *node_tmp; + int idx = -1; + netloc_topology_iter_nodes(topology, node, node_tmp) { + idx++; + if (netloc_node_is_host(node)) { + nodes[idx] = NULL; + edgedest_by_node[idx] = NULL; + continue; + } + int num_edges = HASH_COUNT(node->edges); + nodes[idx] = node; + num_edges_by_node[idx] = num_edges; + edgedest_by_node[idx] = (netloc_node_t **)malloc(num_edges*sizeof(netloc_node_t *)); + + netloc_edge_t *edge, *edge_tmp; + int edge_idx = 0; + netloc_node_iter_edges(node, edge, edge_tmp) { + edgedest_by_node[idx][edge_idx] = edge->dest; + edge_idx++; + } + } + + /* We compare the edge lists to find similar nodes */ + UT_array *similar_nodes; + utarray_new(similar_nodes, &ut_ptr_icd); + for (int idx1 = 0; idx1 < num_nodes; idx1++) { + netloc_node_t *node1 = nodes[idx1]; + netloc_node_t *virtual_node = NULL; + netloc_edge_t *first_virtual_edge = NULL; + if (!node1) + continue; + for (int idx2 = idx1+1; idx2 < num_nodes; idx2++) { + netloc_node_t *node2 = nodes[idx2]; + if (!node2) + continue; + if (num_edges_by_node[idx2] != num_edges_by_node[idx1]) + continue; + if (idx2 == idx1) + continue; + + int equal = 1; + for (int i = 0; i < num_edges_by_node[idx1]; i++) { + if (edgedest_by_node[idx2][i] != edgedest_by_node[idx1][i]) { + equal = 0; + break; + } + } + + /* If we have similar nodes */ + if (equal) { + /* We create a new virtual node to contain all of them */ + if (!virtual_node) { + virtual_node = netloc_node_construct(); + netloc_node_get_virtual_id(virtual_node->physical_id); + + virtual_node->type = node1->type; + utarray_concat(virtual_node->physical_links, node1->physical_links); + virtual_node->description = strdup(virtual_node->physical_id); + + utarray_push_back(virtual_node->subnodes, &node1); + utarray_concat(virtual_node->partitions, node1->partitions); + + // TODO paths + + /* Set edges */ + netloc_edge_t *edge1, *edge_tmp1; + netloc_node_iter_edges(node1, edge1, edge_tmp1) { + netloc_edge_t *virtual_edge = netloc_edge_construct(); + if (!first_virtual_edge) + first_virtual_edge = virtual_edge; + virtual_edge->node = virtual_node; + virtual_edge->dest = edge1->dest; + ret = edge_merge_into(virtual_edge, edge1, 0); + if (ret != NETLOC_SUCCESS) { + netloc_edge_destruct(virtual_edge); + goto ERROR; + } + HASH_ADD_PTR(virtual_node->edges, dest, virtual_edge); + + /* Change the reverse edge of the neighbours (reverse nodes) */ + netloc_node_t *reverse_node = edge1->dest; + netloc_edge_t *reverse_edge = edge1->other_way; + + netloc_edge_t *reverse_virtual_edge = + netloc_edge_construct(); + reverse_virtual_edge->dest = virtual_node; + reverse_virtual_edge->node = reverse_node; + reverse_virtual_edge->other_way = virtual_edge; + virtual_edge->other_way = reverse_virtual_edge; + HASH_ADD_PTR(reverse_node->edges, dest, reverse_virtual_edge); + ret = edge_merge_into(reverse_virtual_edge, reverse_edge, 1); + if (ret != NETLOC_SUCCESS) { + goto ERROR; + } + HASH_DEL(reverse_node->edges, reverse_edge); + } + + /* We remove the node from the list of nodes */ + HASH_DEL(topology->nodes, node1); + HASH_ADD_STR(topology->nodes, physical_id, virtual_node); + printf("First node found: %s (%s)\n", node1->description, node1->physical_id); + } + + utarray_concat(virtual_node->physical_links, node2->physical_links); + utarray_push_back(virtual_node->subnodes, &node2); + utarray_concat(virtual_node->partitions, node2->partitions); + + /* Set edges */ + netloc_edge_t *edge2, *edge_tmp2; + netloc_edge_t *virtual_edge = first_virtual_edge; + netloc_node_iter_edges(node2, edge2, edge_tmp2) { + /* Merge the edges from the physical node into the virtual node */ + ret = edge_merge_into(virtual_edge, edge2, 0); + if (ret != NETLOC_SUCCESS) { + goto ERROR; + } + + /* Change the reverse edge of the neighbours (reverse nodes) */ + netloc_node_t *reverse_node = edge2->dest; + netloc_edge_t *reverse_edge = edge2->other_way; + + netloc_edge_t *reverse_virtual_edge; + HASH_FIND_PTR(reverse_node->edges, &virtual_node, + reverse_virtual_edge); + ret = edge_merge_into(reverse_virtual_edge, reverse_edge, 1); + if (ret != NETLOC_SUCCESS) { + goto ERROR; + } + HASH_DEL(reverse_node->edges, reverse_edge); + + /* Get the next edge */ + virtual_edge = virtual_edge->hh.next; + } + + /* We remove the node from the list of nodes */ + HASH_DEL(topology->nodes, node2); + printf("\t node found: %s (%s)\n", node2->description, node2->physical_id); + + nodes[idx2] = NULL; + } + } + utarray_clear(similar_nodes); + } + + ret = NETLOC_SUCCESS; +ERROR: + free(nodes); + + for (int idx = 0; idx < num_nodes; idx++) { + if (edgedest_by_node[idx]) + free(edgedest_by_node[idx]); + } + free(edgedest_by_node); + free(num_edges_by_node); + free(similar_nodes); + return ret; +} + +static int netloc_node_get_virtual_id(char *id) +{ + static int virtual_id = 0; + sprintf(id, "virtual%d", virtual_id++); + return 0; +} + +static int edge_merge_into(netloc_edge_t *dest, netloc_edge_t *src, int keep) +{ + if (!dest || !src) { + return NETLOC_ERROR; + } + + utarray_concat(dest->physical_links, src->physical_links); + dest->total_gbits += src->total_gbits; + utarray_concat(dest->partitions, src->partitions); + /* it will keep the duplicated edges */ + if (keep) + utarray_push_back(dest->subnode_edges, &src); + + return NETLOC_SUCCESS; +} + diff --git a/3rd-party/hwloc-2.7.1/netlocscotch.pc.in b/3rd-party/hwloc-2.7.1/netlocscotch.pc.in new file mode 100644 index 0000000000..f8f4a425ce --- /dev/null +++ b/3rd-party/hwloc-2.7.1/netlocscotch.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: netlocscotch +Description: Network locality to scotch architecture +Version: @HWLOC_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lnetlocscotch -lnetloc -lhwloc +Libs.private: @LIBS@ diff --git a/3rd-party/hwloc-2.7.1/tests/Makefile.am b/3rd-party/hwloc-2.7.1/tests/Makefile.am new file mode 100644 index 0000000000..96fa698610 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/Makefile.am @@ -0,0 +1,9 @@ +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# Copyright © 2016 Inria. All rights reserved. +# +# See COPYING in top-level directory. + +SUBDIRS = hwloc +if BUILD_NETLOC +SUBDIRS += netloc +endif diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/CMakeLists.txt b/3rd-party/hwloc-2.7.1/tests/hwloc/CMakeLists.txt new file mode 100644 index 0000000000..5af675485b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/CMakeLists.txt @@ -0,0 +1,68 @@ +foreach(t api_version backends bind + bitmap bitmap_compare_inclusion bitmap_first_last_weight bitmap_singlify bitmap_string + distances get_area_memlocation get_cache_covering_cpuset get_closest_objs get_largest_objs_inside_cpuset + get_last_cpu_location get_next_obj_covering_cpuset get_obj_below_array_by_type get_obj_covering_cpuset + get_obj_inside_cpuset get_obj_with_same_locality get_shared_cache_covering_obj + groups insert_misc iodevs is_thissystem list_components obj_infos object_userdata pci_backend synthetic + topology_abi topology_allow topology_diff topology_dup topology_restrict type_depth type_sscanf +) + add_executable(hwloc_${t} hwloc_${t}.c) + target_link_libraries(hwloc_${t} PRIVATE hwloc) + + add_test(NAME ${t} COMMAND hwloc_${t} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + set_tests_properties(${t} PROPERTIES TIMEOUT 10) +endforeach() + +foreach(t cpuset_nodeset memattrs cpukinds gl windows_processor_groups) + add_executable(${t} ${t}.c) + target_link_libraries(${t} PRIVATE hwloc) + + add_test(NAME ${t} COMMAND ${t} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + set_tests_properties(${t} PROPERTIES TIMEOUT 10) +endforeach() + +add_executable(xmlbuffer xmlbuffer.c) +target_link_libraries(xmlbuffer PRIVATE hwloc) +add_test(NAME xmlbuffer00 COMMAND xmlbuffer 0 0 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) +add_test(NAME xmlbuffer01 COMMAND xmlbuffer 0 1 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) +add_test(NAME xmlbuffer10 COMMAND xmlbuffer 1 0 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) +add_test(NAME xmlbuffer11 COMMAND xmlbuffer 1 1 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) +set_tests_properties(xmlbuffer00 xmlbuffer01 xmlbuffer10 xmlbuffer11 PROPERTIES TIMEOUT 10) + +target_compile_definitions(hwloc_type_sscanf PRIVATE XMLTESTDIR=\"${CMAKE_CURRENT_SOURCE_DIR}/xml/\") + +set_tests_properties(get_obj_with_same_locality PROPERTIES ENVIRONMENT HWLOC_TOP_SRCDIR=${TOPDIR}) + +add_test(NAME lstopo-no-graphics:verbose COMMAND lstopo-no-graphics -v) +add_test(NAME lstopo-no-graphics:groups COMMAND lstopo-no-graphics --windows-processor-groups) +set_tests_properties(lstopo-no-graphics:verbose lstopo-no-graphics:groups PROPERTIES +DISABLED ${HWLOC_SKIP_LSTOPO} +LABELS exe +TIMEOUT 10 +) + +add_test(NAME hwloc-info:support COMMAND hwloc-info --support) +set_tests_properties(hwloc-info:support PROPERTIES +DISABLED ${HWLOC_SKIP_TOOLS} +LABELS exe +TIMEOUT 10 +) + + +# --- optional tests + +if(HWLOC_HAVE_OPENCL) + add_executable(test_opencl opencl.c) + target_link_libraries(test_opencl PRIVATE hwloc OpenCL::OpenCL) + + add_test(NAME OpenCL COMMAND test_opencl) + set_tests_properties(OpenCL PROPERTIES TIMEOUT 10) +endif() + +if(HAVE_CUDA) + add_executable(test_cuda cuda.c) + target_link_libraries(test_cuda PRIVATE hwloc CUDA::cudart CUDA::cuda_driver) + + add_test(NAME CUDA COMMAND test_cuda) + set_tests_properties(CUDA PROPERTIES TIMEOUT 10) +endif() diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/Makefile.am new file mode 100644 index 0000000000..d30f8671a5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/Makefile.am @@ -0,0 +1,171 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2012 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) -DXMLTESTDIR=\"$(abs_top_srcdir)/tests/hwloc/xml/\" +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +SUBDIRS = . ports xml +DIST_SUBDIRS = ports xml linux x86 x86+linux rename + +if HWLOC_HAVE_LINUX +SUBDIRS += linux +endif HWLOC_HAVE_LINUX + +if HWLOC_HAVE_X86_CPUID +SUBDIRS += x86 +endif HWLOC_HAVE_X86_CPUID + +if HWLOC_HAVE_LINUX +if HWLOC_HAVE_X86_CPUID +SUBDIRS += x86+linux +endif HWLOC_HAVE_X86_CPUID +endif HWLOC_HAVE_LINUX + +LDADD = + +LOG_COMPILER = $(builddir)/wrapper.sh + +check_PROGRAMS = \ + hwloc_api_version \ + hwloc_list_components \ + hwloc_bitmap \ + hwloc_bitmap_string \ + hwloc_bitmap_compare_inclusion \ + hwloc_get_closest_objs \ + hwloc_get_obj_covering_cpuset \ + hwloc_get_cache_covering_cpuset \ + hwloc_get_largest_objs_inside_cpuset \ + hwloc_get_next_obj_covering_cpuset \ + hwloc_get_obj_inside_cpuset \ + hwloc_get_shared_cache_covering_obj \ + hwloc_get_obj_below_array_by_type \ + hwloc_get_obj_with_same_locality \ + hwloc_bitmap_first_last_weight \ + hwloc_bitmap_singlify \ + hwloc_type_depth \ + hwloc_type_sscanf \ + hwloc_bind \ + hwloc_get_last_cpu_location \ + hwloc_get_area_memlocation \ + hwloc_object_userdata \ + hwloc_synthetic \ + hwloc_backends \ + hwloc_pci_backend \ + hwloc_is_thissystem \ + hwloc_distances \ + hwloc_groups \ + hwloc_insert_misc \ + hwloc_topology_allow \ + hwloc_topology_restrict \ + hwloc_topology_dup \ + hwloc_topology_diff \ + hwloc_topology_abi \ + hwloc_obj_infos \ + hwloc_iodevs \ + cpuset_nodeset \ + memattrs \ + cpukinds \ + xmlbuffer \ + gl + +if HWLOC_HAVE_WINDOWS +check_PROGRAMS += windows_processor_groups +endif HWLOC_HAVE_WINDOWS + +if !HWLOC_HAVE_WINDOWS +if !HWLOC_HAVE_DARWIN +check_PROGRAMS += shmem +endif !HWLOC_HAVE_DARWIN +endif !HWLOC_HAVE_WINDOWS + +if HWLOC_HAVE_LINUX_LIBNUMA +check_PROGRAMS += linux-libnuma +endif HWLOC_HAVE_LINUX_LIBNUMA + +if HWLOC_HAVE_SCHED_SETAFFINITY +check_PROGRAMS += glibc-sched +endif HWLOC_HAVE_SCHED_SETAFFINITY + +if HWLOC_HAVE_LIBIBVERBS +check_PROGRAMS += openfabrics-verbs +endif HWLOC_HAVE_LIBIBVERBS + +if HWLOC_HAVE_OPENCL +check_PROGRAMS += opencl +endif HWLOC_HAVE_OPENCL + +if HWLOC_HAVE_CUDA +check_PROGRAMS += cuda +endif HWLOC_HAVE_CUDA + +if HWLOC_HAVE_CUDART +check_PROGRAMS += cudart +endif HWLOC_HAVE_CUDART + +if HWLOC_HAVE_NVML +check_PROGRAMS += nvml +endif HWLOC_HAVE_NVML + +if HWLOC_HAVE_RSMI +check_PROGRAMS += rsmi +endif HWLOC_HAVE_RSMI + +if HWLOC_HAVE_LEVELZERO +check_PROGRAMS += levelzero +endif HWLOC_HAVE_LEVELZERO + +TESTS = $(check_PROGRAMS) + +# The library has a different name depending on whether we are +# building in standalone or embedded mode. +if HWLOC_BUILD_STANDALONE +hwloc_lib = libhwloc.la +else +hwloc_lib = libhwloc_embedded.la +endif + +LDADD += $(HWLOC_top_builddir)/hwloc/$(hwloc_lib) + +linux_libnuma_CFLAGS = $(AM_CFLAGS) $(HWLOC_NUMA_CPPFLAGS) $(HWLOC_NUMA_CFLAGS) +linux_libnuma_LDADD = $(LDADD) $(HWLOC_NUMA_LIBS) $(HWLOC_NUMA_LDFLAGS) + +openfabrics_verbs_CFLAGS = $(AM_CFLAGS) $(HWLOC_IBVERBS_CPPFLAGS) $(HWLOC_IBVERBS_CFLAGS) +openfabrics_verbs_LDADD = $(LDADD) $(HWLOC_IBVERBS_LIBS) $(HWLOC_IBVERBS_LDFLAGS) + +opencl_CFLAGS = $(AM_CFLAGS) $(HWLOC_OPENCL_CPPFLAGS) $(HWLOC_OPENCL_CFLAGS) +opencl_LDADD = $(LDADD) $(HWLOC_OPENCL_LIBS) $(HWLOC_OPENCL_LDFLAGS) + +cuda_CFLAGS = $(AM_CFLAGS) $(HWLOC_CUDA_CPPFLAGS) $(HWLOC_CUDA_CFLAGS) +cuda_LDADD = $(LDADD) $(HWLOC_CUDA_LIBS) $(HWLOC_CUDA_LDFLAGS) + +cudart_CFLAGS = $(AM_CFLAGS) $(HWLOC_CUDART_CPPFLAGS) $(HWLOC_CUDART_CFLAGS) +cudart_LDADD = $(LDADD) $(HWLOC_CUDART_LIBS) $(HWLOC_CUDART_LDFLAGS) + +nvml_CFLAGS = $(AM_CFLAGS) $(HWLOC_NVML_CPPFLAGS) $(HWLOC_NVML_CFLAGS) +nvml_LDADD = $(LDADD) $(HWLOC_NVML_LIBS) $(HWLOC_NVML_LDFLAGS) + +rsmi_CFLAGS = $(AM_CFLAGS) $(HWLOC_RSMI_CPPFLAGS) $(HWLOC_RSMI_CFLAGS) +rsmi_LDADD = $(LDADD) $(HWLOC_RSMI_LIBS) $(HWLOC_RSMI_LDFLAGS) + +levelzero_CFLAGS = $(AM_CFLAGS) $(HWLOC_LEVELZERO_CPPFLAGS) $(HWLOC_LEVELZERO_CFLAGS) +levelzero_LDADD = $(LDADD) $(HWLOC_LEVELZERO_LIBS) $(HWLOC_LEVELZERO_LDFLAGS) + +hwloc_bind_LDADD = $(LDADD) +if HWLOC_HAVE_PTHREAD +hwloc_bind_LDADD += -lpthread +endif + +# ship the embedded test code but don't actually let automake ever +# look at it because we have another configure stuff in there +EXTRA_DIST = embedded/autogen.sh \ + embedded/configure.ac \ + embedded/Makefile.am \ + embedded/do_test.c \ + embedded/main.c \ + embedded/run-embedded-tests.sh \ + embedded/README.txt \ + embedded/config/README.txt \ + CMakeLists.txt diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/cpukinds.c b/3rd-party/hwloc-2.7.1/tests/hwloc/cpukinds.c new file mode 100644 index 0000000000..9239fdb7fa --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/cpukinds.c @@ -0,0 +1,375 @@ +/* + * Copyright © 2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "hwloc.h" + +int main(void) +{ + hwloc_topology_t topology; + int efficiency; + hwloc_bitmap_t cpuset; + struct hwloc_info_s info, *infosp; + unsigned nr_infos; + int err; + + err = hwloc_topology_init(&topology); + assert(!err); + err = hwloc_topology_set_synthetic(topology, "pack:4 pu:3"); + assert(!err); + err = hwloc_topology_load(topology); + assert(!err); + + cpuset = hwloc_bitmap_alloc(); + assert(cpuset); + + /* no cpukinds */ + + /* get_nr with invalid flags */ + err = hwloc_cpukinds_get_nr(topology, 1 /* invalid flag */); + assert(err == -1); + assert(errno == EINVAL); + /* get_nr */ + err = hwloc_cpukinds_get_nr(topology, 0); + assert(err == 0); + + /* get_info with invalid flags */ + err = hwloc_cpukinds_get_info(topology, 0, NULL, NULL, NULL, NULL, 1 /* invalid flag */); + assert(err == -1); + assert(errno == EINVAL); + /* get kind, non-existing */ + err = hwloc_cpukinds_get_info(topology, 0, NULL, NULL, NULL, NULL, 0); + assert(err == -1); + assert(errno == ENOENT); + + /* get_by_cpuset with no cpuset */ + err = hwloc_cpukinds_get_by_cpuset(topology, NULL, 0); + assert(err == -1); + assert(errno == EINVAL); + /* get_by_cpuset with empty cpuset */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == -1); + assert(errno == EINVAL); + /* get_by_cpuset with invalid flags */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 0, 11); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 1 /* invalid flag */); + assert(err == -1); + assert(errno == EINVAL); + /* get_by_cpuset, non-existing */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 0, 11); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == -1); + assert(errno == ENOENT); + + /* register with no cpuset */ + err = hwloc_cpukinds_register(topology, NULL, 0, 0, NULL, 0); + assert(err == -1); + assert(errno == EINVAL); + /* register with empty cpuset */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_register(topology, cpuset, 0, 0, NULL, 0); + assert(err == -1); + assert(errno == EINVAL); + /* register with invalid flags */ + hwloc_bitmap_set_range(cpuset, 0, 5); + err = hwloc_cpukinds_register(topology, cpuset, 0, 0, NULL, 1 /* invalid flag */); + assert(err == -1); + assert(errno == EINVAL); + + /* PU 0-5 (first two packages) are big and efficient */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 0, 5); + info.name = (char*) "CoreType"; + info.value = (char*) "BigCore"; + err = hwloc_cpukinds_register(topology, cpuset, 1000, 1, &info, 0); + assert(!err); + /* PU 6-9 (third package) are small and less efficient */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 6, 8); + info.name = (char*) "CoreType"; + info.value = (char*) "SmallCore"; + err = hwloc_cpukinds_register(topology, cpuset, 10, 1, &info, 0); + assert(!err); + + /* check those kinds */ + err = hwloc_cpukinds_get_nr(topology, 0); + assert(err == 2); + /* first one should be second registered one */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 0, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 3); + assert(hwloc_bitmap_first(cpuset) == 6); + assert(hwloc_bitmap_last(cpuset) == 8); + assert(efficiency == 0); + assert(nr_infos == 1); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "SmallCore")); + /* second one should be first registered one */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 1, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 6); + assert(hwloc_bitmap_first(cpuset) == 0); + assert(hwloc_bitmap_last(cpuset) == 5); + assert(efficiency == 1); + assert(nr_infos == 1); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "BigCore")); + /* try without getting any info too */ + err = hwloc_cpukinds_get_info(topology, 1, NULL, NULL, NULL, NULL, 0); + assert(!err); + /* third one is invalid */ + err = hwloc_cpukinds_get_info(topology, 2, NULL, NULL, NULL, NULL, 0); + assert(err == -1); + assert(errno == ENOENT); + + /* get_by_cpuset */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 1, 3); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == 1); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 7, 8); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == 0); + /* get_by_cpuset across kinds */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 5, 6); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == -1); + assert(errno == EXDEV); + /* get_by_cpuset outside of kinds */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 9, 11); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == -1); + assert(errno == ENOENT); + + /* PU 5-9 (part of packages #1 and #3, and all of #2) have some features */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 5, 10); + info.name = (char*) "Features"; + info.value = (char*) "this, that and those"; + err = hwloc_cpukinds_register(topology, cpuset, -1, 1, &info, 0); + assert(!err); + + /* check those kinds */ + err = hwloc_cpukinds_get_nr(topology, 0); + assert(err == 4); + /* WARNING: the order is now implementation dependent, since we cannot order by efficiency here */ + /* first one is 6-8 SmallCore Features */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 0, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 3); + assert(hwloc_bitmap_first(cpuset) == 6); + assert(hwloc_bitmap_last(cpuset) == 8); + assert(efficiency == -1); + assert(nr_infos == 2); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "SmallCore")); + assert(!strcmp(infosp[1].name, "Features")); + assert(!strcmp(infosp[1].value, "this, that and those")); + /* second one is 0-4 BigCore */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 1, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 5); + assert(hwloc_bitmap_first(cpuset) == 0); + assert(hwloc_bitmap_last(cpuset) == 4); + assert(efficiency == -1); + assert(nr_infos == 1); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "BigCore")); + /* third one is 5-5 BigCore Features */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 2, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 1); + assert(hwloc_bitmap_first(cpuset) == 5); + assert(hwloc_bitmap_last(cpuset) == 5); + assert(efficiency == -1); + assert(nr_infos == 2); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "BigCore")); + assert(!strcmp(infosp[1].name, "Features")); + assert(!strcmp(infosp[1].value, "this, that and those")); + /* fourth one is 9-10 Features */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 3, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 2); + assert(hwloc_bitmap_first(cpuset) == 9); + assert(hwloc_bitmap_last(cpuset) == 10); + assert(efficiency == -1); + assert(nr_infos == 1); + assert(!strcmp(infosp[0].name, "Features")); + assert(!strcmp(infosp[0].value, "this, that and those")); + /* fifth one is invalid */ + err = hwloc_cpukinds_get_info(topology, 4, NULL, NULL, NULL, NULL, 0); + assert(err == -1); + assert(errno == ENOENT); + + /* get_by_cpuset */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 1, 3); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == 1); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 7, 8); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == 0); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 5, 5); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == 2); + /* get_by_cpuset across kinds */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 10, 11); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == -1); + assert(errno == EXDEV); + /* get_by_cpuset outside of kinds */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 11, 11); + err = hwloc_cpukinds_get_by_cpuset(topology, cpuset, 0); + assert(err == -1); + assert(errno == ENOENT); + + /* now force efficiency of those kinds */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 0, 4); + err = hwloc_cpukinds_register(topology, cpuset, 1000, 0, NULL, 0); + assert(!err); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 5, 5); + err = hwloc_cpukinds_register(topology, cpuset, 100, 0, NULL, 0); + assert(!err); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 6, 8); + err = hwloc_cpukinds_register(topology, cpuset, 10, 0, NULL, 0); + assert(!err); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 9, 10); + err = hwloc_cpukinds_register(topology, cpuset, 1, 0, NULL, 0); + assert(!err); + + /* check those kinds */ + err = hwloc_cpukinds_get_nr(topology, 0); + assert(err == 4); + /* first one is 9-10 Features */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 0, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 2); + assert(hwloc_bitmap_first(cpuset) == 9); + assert(hwloc_bitmap_last(cpuset) == 10); + assert(efficiency == 0); + assert(nr_infos == 1); + assert(!strcmp(infosp[0].name, "Features")); + assert(!strcmp(infosp[0].value, "this, that and those")); + /* second one is 6-8 SmallCore Features */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 1, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 3); + assert(hwloc_bitmap_first(cpuset) == 6); + assert(hwloc_bitmap_last(cpuset) == 8); + assert(efficiency == 1); + assert(nr_infos == 2); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "SmallCore")); + assert(!strcmp(infosp[1].name, "Features")); + assert(!strcmp(infosp[1].value, "this, that and those")); + /* third one is 5-5 BigCore Features */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 2, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 1); + assert(hwloc_bitmap_first(cpuset) == 5); + assert(hwloc_bitmap_last(cpuset) == 5); + assert(efficiency == 2); + assert(nr_infos == 2); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "BigCore")); + assert(!strcmp(infosp[1].name, "Features")); + assert(!strcmp(infosp[1].value, "this, that and those")); + /* fourth one is 0-4 BigCore */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 3, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 5); + assert(hwloc_bitmap_first(cpuset) == 0); + assert(hwloc_bitmap_last(cpuset) == 4); + assert(efficiency == 3); + assert(nr_infos == 1); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "BigCore")); + /* fifth one is invalid */ + err = hwloc_cpukinds_get_info(topology, 4, NULL, NULL, NULL, NULL, 0); + assert(err == -1); + assert(errno == ENOENT); + + /* restrict to remove PU 5-6 (third kind and part of second), PU 11 (no kind) and PU 0-2 (part of fourth kind) */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 3, 10); + hwloc_bitmap_clr_range(cpuset, 5, 6); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(!err); + + /* check remaining kinds */ + err = hwloc_cpukinds_get_nr(topology, 0); + assert(err == 3); + /* first one is 9-10 Features */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 0, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 2); + assert(hwloc_bitmap_first(cpuset) == 9); + assert(hwloc_bitmap_last(cpuset) == 10); + assert(efficiency == 0); + assert(nr_infos == 1); + assert(!strcmp(infosp[0].name, "Features")); + assert(!strcmp(infosp[0].value, "this, that and those")); + /* second one is 7-8 SmallCore Features */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 1, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 2); + assert(hwloc_bitmap_first(cpuset) == 7); + assert(hwloc_bitmap_last(cpuset) == 8); + assert(efficiency == 1); + assert(nr_infos == 2); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "SmallCore")); + assert(!strcmp(infosp[1].name, "Features")); + assert(!strcmp(infosp[1].value, "this, that and those")); + /* third one is 3-4 BigCore */ + hwloc_bitmap_zero(cpuset); + err = hwloc_cpukinds_get_info(topology, 2, cpuset, &efficiency, &nr_infos, &infosp, 0); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 2); + assert(hwloc_bitmap_first(cpuset) == 3); + assert(hwloc_bitmap_last(cpuset) == 4); + assert(efficiency == 2); + assert(nr_infos == 1); + assert(!strcmp(infosp[0].name, "CoreType")); + assert(!strcmp(infosp[0].value, "BigCore")); + /* fourth one is invalid */ + err = hwloc_cpukinds_get_info(topology, 3, NULL, NULL, NULL, NULL, 0); + assert(err == -1); + assert(errno == ENOENT); + + hwloc_bitmap_free(cpuset); + hwloc_topology_destroy(topology); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/cpuset_nodeset.c b/3rd-party/hwloc-2.7.1/tests/hwloc/cpuset_nodeset.c new file mode 100644 index 0000000000..1058202024 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/cpuset_nodeset.c @@ -0,0 +1,133 @@ +/* + * Copyright © 2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include + +/* check cpuset_from/to_nodeset */ + +int main(void) +{ + hwloc_topology_t topology; + hwloc_bitmap_t cpuset, nodeset; + int err; + + err = hwloc_topology_init(&topology); + assert(!err); + err = hwloc_topology_set_synthetic(topology, "pack:2 [numa] l3:2 [numa] pu:2"); + assert(!err); + err = hwloc_topology_load(topology); + assert(!err); + + cpuset = hwloc_bitmap_alloc(); + assert(cpuset); + nodeset = hwloc_bitmap_alloc(); + assert(nodeset); + + /* check empty sets */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_zero(nodeset); + err = hwloc_cpuset_to_nodeset(topology, cpuset, nodeset); + assert(!err); + assert(hwloc_bitmap_iszero(cpuset)); + assert(hwloc_bitmap_iszero(nodeset)); + err = hwloc_cpuset_from_nodeset(topology, cpuset, nodeset); + assert(!err); + assert(hwloc_bitmap_iszero(cpuset)); + assert(hwloc_bitmap_iszero(nodeset)); + + /* check full topology sets */ + hwloc_bitmap_zero(nodeset); + err = hwloc_cpuset_to_nodeset(topology, hwloc_topology_get_topology_cpuset(topology), nodeset); + assert(!err); + assert(hwloc_bitmap_isequal(nodeset, hwloc_topology_get_topology_nodeset(topology))); + + hwloc_bitmap_zero(cpuset); + err = hwloc_cpuset_from_nodeset(topology, cpuset, hwloc_topology_get_topology_nodeset(topology)); + assert(!err); + assert(hwloc_bitmap_isequal(cpuset, hwloc_topology_get_topology_cpuset(topology))); + + /* one PU per L3 in single package */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 1, 2); + hwloc_bitmap_zero(nodeset); + err = hwloc_cpuset_to_nodeset(topology, cpuset, nodeset); + assert(!err); + assert(hwloc_bitmap_weight(nodeset) == 3); + assert(hwloc_bitmap_isset(nodeset, 0)); + assert(hwloc_bitmap_isset(nodeset, 1)); + assert(hwloc_bitmap_isset(nodeset, 2)); + + /* 1 large node + 1 of its small node */ + hwloc_bitmap_zero(nodeset); + hwloc_bitmap_set(nodeset, 3); + hwloc_bitmap_set(nodeset, 5); + hwloc_bitmap_zero(cpuset); + err = hwloc_cpuset_from_nodeset(topology, cpuset, nodeset); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 4); + assert(hwloc_bitmap_isset(cpuset, 4)); + assert(hwloc_bitmap_isset(cpuset, 5)); + assert(hwloc_bitmap_isset(cpuset, 6)); + assert(hwloc_bitmap_isset(cpuset, 7)); + + /* remove PUs from last (small) node */ + err = hwloc_bitmap_copy(cpuset, hwloc_topology_get_topology_cpuset(topology)); + assert(!err); + err = hwloc_bitmap_clr_range(cpuset, 6, 7); + assert(!err); + hwloc_topology_restrict(topology, cpuset, 0); + assert(!err); + /* remove first node and first large node, PU 0-1 are not covered by a node anymore */ + err = hwloc_bitmap_copy(nodeset, hwloc_topology_get_topology_nodeset(topology)); + assert(!err); + err = hwloc_bitmap_clr(nodeset, 0); /* first small node */ + err = hwloc_bitmap_clr(nodeset, 2); /* first large node */ + assert(!err); + hwloc_topology_restrict(topology, nodeset, HWLOC_RESTRICT_FLAG_BYNODESET); + assert(!err); + + /* check empty sets */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_zero(nodeset); + err = hwloc_cpuset_to_nodeset(topology, cpuset, nodeset); + assert(!err); + assert(hwloc_bitmap_iszero(cpuset)); + assert(hwloc_bitmap_iszero(nodeset)); + err = hwloc_cpuset_from_nodeset(topology, cpuset, nodeset); + assert(!err); + assert(hwloc_bitmap_iszero(cpuset)); + assert(hwloc_bitmap_iszero(nodeset)); + + /* check full topology sets */ + hwloc_bitmap_zero(nodeset); + err = hwloc_cpuset_to_nodeset(topology, hwloc_topology_get_topology_cpuset(topology), nodeset); + assert(!err); + assert(hwloc_bitmap_weight(nodeset) == 3); + /* node P#0 doesn't exist anymore */ + assert(hwloc_bitmap_isset(nodeset, 1)); + /* node P#2 doesn't exist anymore */ + assert(hwloc_bitmap_isset(nodeset, 3)); + /* node P#4 has no PUs */ + assert(hwloc_bitmap_isset(nodeset, 5)); + + hwloc_bitmap_zero(cpuset); + err = hwloc_cpuset_from_nodeset(topology, cpuset, hwloc_topology_get_topology_nodeset(topology)); + assert(!err); + assert(hwloc_bitmap_weight(cpuset) == 4); + /* PU P#0-1 not covered anymore */ + assert(hwloc_bitmap_isset(cpuset, 2)); + assert(hwloc_bitmap_isset(cpuset, 3)); + assert(hwloc_bitmap_isset(cpuset, 4)); + assert(hwloc_bitmap_isset(cpuset, 5)); + /* PU P#6-7 don't exist anymore */ + + hwloc_bitmap_free(cpuset); + hwloc_bitmap_free(nodeset); + + hwloc_topology_destroy(topology); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/cuda.c b/3rd-party/hwloc-2.7.1/tests/hwloc/cuda.c new file mode 100644 index 0000000000..21561e82d3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/cuda.c @@ -0,0 +1,97 @@ +/* + * Copyright © 2010-2018 Inria. All rights reserved. + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "hwloc.h" +#include "hwloc/cuda.h" + +/* check the CUDA Driver API helpers */ + +int main(void) +{ + hwloc_topology_t topology; + CUresult cres; + CUdevice device; + int count, i; + int err; + + cres = cuInit(0); + if (cres != CUDA_SUCCESS) { + printf("cuInit failed %d\n", cres); + return 0; + } + + cres = cuDeviceGetCount(&count); + if (cres != CUDA_SUCCESS) { + printf("cuDeviceGetCount failed %d\n", cres); + return 0; + } + printf("cuDeviceGetCount found %d devices\n", count); + + hwloc_topology_init(&topology); + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_load(topology); + + for(i=0; iname); + err = strncmp(osdev->name, "cuda", 4); + assert(!err); + assert(atoi(osdev->name+4) == (int) i); + + value = hwloc_obj_get_info_by_name(osdev, "Backend"); + err = strcmp(value, "CUDA"); + assert(!err); + + assert(osdev->attr->osdev.type == HWLOC_OBJ_OSDEV_COPROC); + + value = osdev->subtype; + assert(value); + err = strcmp(value, "CUDA"); + assert(!err); + + value = hwloc_obj_get_info_by_name(osdev, "GPUModel"); + printf("found OSDev model %s\n", value); + + set = hwloc_bitmap_alloc(); + err = hwloc_cuda_get_device_cpuset(topology, device, set); + if (err < 0) { + printf("failed to get cpuset for device %d\n", i); + } else { + char *cpuset_string = NULL; + hwloc_bitmap_asprintf(&cpuset_string, set); + printf("got cpuset %s for device %d\n", cpuset_string, i); + if (hwloc_bitmap_isequal(hwloc_topology_get_complete_cpuset(topology), hwloc_topology_get_topology_cpuset(topology))) + /* only compare if the topology is complete, otherwise things can be significantly different */ + assert(hwloc_bitmap_isincluded(ancestor->cpuset, set)); + free(cpuset_string); + } + hwloc_bitmap_free(set); + } + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/cudart.c b/3rd-party/hwloc-2.7.1/tests/hwloc/cudart.c new file mode 100644 index 0000000000..568e21ded5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/cudart.c @@ -0,0 +1,82 @@ +/* + * Copyright © 2010-2018 Inria. All rights reserved. + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "hwloc.h" +#include "hwloc/cudart.h" + +/* check the CUDA Runtime API helpers */ + +int main(void) +{ + hwloc_topology_t topology; + cudaError_t cerr; + int count, i; + int err; + + cerr = cudaGetDeviceCount(&count); + if (cerr) { + printf("cudaGetDeviceCount failed %d\n", cerr); + return 0; + } + printf("cudaGetDeviceCount found %d devices\n", count); + + hwloc_topology_init(&topology); + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_load(topology); + + for(i=0; iname); + err = strncmp(osdev->name, "cuda", 4); + assert(!err); + assert(atoi(osdev->name+4) == (int) i); + + value = hwloc_obj_get_info_by_name(osdev, "Backend"); + err = strcmp(value, "CUDA"); + assert(!err); + + assert(osdev->attr->osdev.type == HWLOC_OBJ_OSDEV_COPROC); + + value = osdev->subtype; + assert(value); + err = strcmp(value, "CUDA"); + assert(!err); + + value = hwloc_obj_get_info_by_name(osdev, "GPUModel"); + printf("found OSDev model %s\n", value); + + set = hwloc_bitmap_alloc(); + err = hwloc_cudart_get_device_cpuset(topology, i, set); + if (err < 0) { + printf("failed to get cpuset for device %d\n", i); + } else { + char *cpuset_string = NULL; + hwloc_bitmap_asprintf(&cpuset_string, set); + printf("got cpuset %s for device %d\n", cpuset_string, i); + if (hwloc_bitmap_isequal(hwloc_topology_get_complete_cpuset(topology), hwloc_topology_get_topology_cpuset(topology))) + /* only compare if the topology is complete, otherwise things can be significantly different */ + assert(hwloc_bitmap_isequal(set, ancestor->cpuset)); + free(cpuset_string); + } + hwloc_bitmap_free(set); + } + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/Makefile.am new file mode 100644 index 0000000000..9f658f0c06 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/Makefile.am @@ -0,0 +1,21 @@ +# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +ACLOCAL_AMFLAGS = -I./config -I./hwloc-tree/config + +SUBDIRS = hwloc-tree + +AM_CPPFLAGS = $(HWLOC_EMBEDDED_CPPFLAGS) + +TESTS = main + +noinst_PROGRAMS = main +noinst_LTLIBRARIES = libdo_test.la + +libdo_test_la_SOURCES = do_test.c + +main_SOURCES = main.c +main_LDADD = libdo_test.la $(HWLOC_EMBEDDED_LDADD) $(HWLOC_EMBEDDED_LIBS) +main_DEPENDENCIES = libdo_test.la + +EXTRA_DIST = run-embedded-tests.sh diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/README.txt b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/README.txt new file mode 100644 index 0000000000..321a3d65c1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/README.txt @@ -0,0 +1,36 @@ +This test is meant to be run manually; it is not part of "make check". + +Someday I may figure out how to make this part of "make check", but +today is not that day. :-) + +You can run these tests in one of two ways: + +1. PREFERRED METHOD: From this directory, invoke + "./run-embedded-tests.sh ". This will run a + battery of tests against that tarball to verify that embedding is + working properly from that tarball. + +2. MANUAL METHOD: Expand a distribution hwloc tarball in this + directory and rename the top-level directory from hwloc-/ + to hwloc-tree/. Then run ./autogen.sh, ./configure, and make. And + whatever other tests you'd like to run. + +Things to test (most of which are done in the run-embedded-tests.sh +script): + + - autogen.sh runs properly and to completion + - configure runs properly and to completion (normal, absolute VPATH, + and relative VPATH) + - make runs properly and to completion + - you can run the resulting "./main" executable and it properly shows + the hwloc depth of the current machine + - make test works + +If you look at configure.ac, you see that it uses the HWLOC m4 macros +to build the hwloc located at hwloc-tree/, and renames all the symbols +from "hwloc_" to "mytest_". The main.c source calls several +hwloc functions via the "mytest_" symbols. + +Bottom line: if the "main" executable runs and prints the current +depth (or you can run "make check" successfully), the embedding should +be working properly. diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/autogen.sh b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/autogen.sh new file mode 100644 index 0000000000..d69ef09e68 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/autogen.sh @@ -0,0 +1,2 @@ +: +autoreconf -ivf diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/config/README.txt b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/config/README.txt new file mode 100644 index 0000000000..ab1e8cd55f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/config/README.txt @@ -0,0 +1 @@ +This file exists solely so that the config/ directory exists in git checkouts. diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/configure.ac b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/configure.ac new file mode 100644 index 0000000000..2de890d6a3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/configure.ac @@ -0,0 +1,41 @@ +# Copyright © 2009-2020 Cisco Systems, Inc. All rights reserved. +# Copyright © 2013 Inria. All rights reserved. +# See COPYING in top-level directory. + +AC_INIT([hwloc-embedded-test], [1.0], [https://www.open-mpi.org/projects/hwloc/], [hwloc-embedded-test]) +AC_PREREQ([2.63]) +AC_CONFIG_AUX_DIR([./config]) +AC_CONFIG_MACRO_DIR([./config]) +AC_CANONICAL_TARGET +AM_INIT_AUTOMAKE([1.10 dist-bzip2 foreign subdir-objects tar-ustar -Wall -Werror]) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +AC_LANG([C]) + +AC_PROG_CC +AM_PROG_CC_C_O + +cat < + +/* The body of the test is in a separate .c file and a separate + library, just to ensure that hwloc didn't force compilation with + visibility flags enabled. */ + +int do_test(void) +{ + mytest_hwloc_topology_t topology; + unsigned depth; + hwloc_bitmap_t cpu_set; + + /* Just call a bunch of functions to see if we can link and run */ + + printf("*** Test 1: bitmap alloc\n"); + cpu_set = mytest_hwloc_bitmap_alloc(); + if (NULL == cpu_set) return 1; + printf("*** Test 2: topology init\n"); + if (0 != mytest_hwloc_topology_init(&topology)) return 1; + printf("*** Test 3: topology load\n"); + if (0 != mytest_hwloc_topology_load(topology)) return 1; + printf("*** Test 4: topology get depth\n"); + depth = mytest_hwloc_topology_get_depth(topology); + if (depth > 10000) return 1; + printf(" Max depth: %u\n", depth); + printf("*** Test 5: topology destroy\n"); + mytest_hwloc_topology_destroy(topology); + printf("*** Test 6: bitmap free\n"); + mytest_hwloc_bitmap_free(cpu_set); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/main.c b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/main.c new file mode 100644 index 0000000000..96563326f9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/main.c @@ -0,0 +1,22 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009 inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2009 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include + +extern int do_test(void); + + +int main(int argc, char *argv[]) +{ + /* Make the test be in a separate library that will fail to link + properly if hwloc forces compilation with visibility + enabled. */ + return do_test(); +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/run-embedded-tests.sh b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/run-embedded-tests.sh new file mode 100644 index 0000000000..cb45486c9e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/embedded/run-embedded-tests.sh @@ -0,0 +1,137 @@ +#!/bin/bash +# +# Copyright © 2010 Cisco Systems, Inc. All rights reserved. +# Copyright © 2019-2020 Inria. All rights reserved. +# See COPYING in top-level directory. +# +# Simple script to help test embedding: +# +# ./run-embedded-tests.sh +# + +set -o pipefail + +tarball=$1 +if test "$tarball" = ""; then + echo "Usage: $0 " + exit 1 +elif test ! -r $tarball; then + echo cannot read tarball: $tarball + exit 1 +fi + +#--------------------------------------------------------------------- + +i=1 +last_print= +print() { + last_print="=== $i: $*" + echo $last_print + i=`expr $i + 1` +} + +#--------------------------------------------------------------------- + +try() { + cmd=$* + eval $cmd + status=$? + if test "$status" != "0"; then + echo "Command failed (status $status): $cmd" + echo "Last print was: $last_print" + exit 1 + fi +} + +#--------------------------------------------------------------------- + +# $1 = announcement banner +# $2 = path to configure script +do_build() { + print Running $1 configure... + try $2/configure 2>&1 | tee config.out + if test "$?" != 0; then exit $?; fi + + print Running make + try make 2>&1 | tee make.out + if test "$?" != 0; then exit $?; fi + + print Running make check + try make check 2>&1 | tee check.out + if test "$?" != 0; then exit $?; fi + + print Running make clean + try make clean 2>&1 | tee clean.out + if test "$?" != 0; then exit $?; fi + + print Running make distclean + try make distclean 2>&1 | tee distclean.out + if test "$?" != 0; then exit $?; fi +} + +#--------------------------------------------------------------------- + +# Get tarball name +print Got tarball: $tarball + +# Get the version +ver=`basename $tarball | sed -e 's/^hwloc-//' -e 's/\.tar\..*$//'` +print Got version: $ver + +# Extract and build an embedded tarball +print Removing the old standalone directory... +rm -rf standalone +mkdir standalone +cd standalone +print Extracting tarball... +if test "`echo $tarball | grep .tar.bz2`" != ""; then + try tar jxf ../$tarball +else + try tar zxf ../$tarball +fi +cd hwloc-$ver +print Building embedded tarball... +try ./configure --enable-embedded-mode +try make dist +cd ../.. + +# Extract embedded tarball for real use +print Extracting the embedded tarball... +rm -rf hwloc-$tree hwloc-$ver +try tar jxf standalone/hwloc-$ver/hwloc-$ver.tar.bz2 +mv hwloc-$ver hwloc-tree + +# Autogen +print Running autogen... +try ./autogen.sh + +# Do it normally (non-VPATH) +do_build non-VPATH . + +# Do a VPATH in the same tree that we just setup +mkdir build +cd build +do_build VPATH .. + +cd .. +rm -rf build + +# Now whack the tree and do a clean VPATH +print Re-extracting the embedded tarball... +rm -rf hwloc-tree hwloc-$ver +try tar jxf standalone/hwloc-$ver/hwloc-$ver.tar.bz2 +mv hwloc-$ver hwloc-tree + +# Autogen +print Running autogen... +try ./autogen.sh + +# Run it again on a clean VPATH +mkdir build +cd build +do_build VPATH-clean .. + +cd .. +rm -rf build + +print All tests passed! diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/gl.c b/3rd-party/hwloc-2.7.1/tests/hwloc/gl.c new file mode 100644 index 0000000000..8660b8b626 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/gl.c @@ -0,0 +1,109 @@ +/* + * Copyright © 2012 Blue Brain Project, BBP/EPFL. All rights reserved. + * Copyright © 2012-2015 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" +#include "hwloc/gl.h" +#include "hwloc/helper.h" + +#include +#include +#include +#include "stdlib.h" + +int main(void) +{ + hwloc_topology_t topology; + hwloc_obj_t pcidev, osdev, parent; + hwloc_obj_t firstgpu = NULL, lastgpu = NULL; + unsigned port, device; + char* cpuset_string; + unsigned nr_pcidev; + unsigned nr_osdev; + unsigned nr_gpus; + unsigned i; + int err; + + hwloc_topology_init(&topology); /* Topology initialization */ + + /* Flags used for loading the I/O devices, bridges and their relevant info */ + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + + /* Perform topology detection */ + hwloc_topology_load(topology); + + /* Case 1: Get the cpusets of the packages connecting the PCI devices in the topology */ + nr_pcidev = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PCI_DEVICE); + for (i = 0; i < nr_pcidev; ++i) { + pcidev = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PCI_DEVICE, i); + parent = hwloc_get_non_io_ancestor_obj(topology, pcidev); + /* Print the cpuset corresponding to each pci device */ + hwloc_bitmap_asprintf(&cpuset_string, parent->cpuset); + printf(" %s | %s \n", cpuset_string, pcidev->name); + free(cpuset_string); + } + + /* Case 2: Get the number of connected GPUs in the topology and their attached displays */ + nr_gpus = 0; + nr_osdev = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_OS_DEVICE); + for (i = 0; i < nr_osdev; ++i) { + const char *model, *backend; + osdev = hwloc_get_obj_by_type(topology, HWLOC_OBJ_OS_DEVICE, i); + + backend = hwloc_obj_get_info_by_name(osdev, "Backend"); + model = hwloc_obj_get_info_by_name(osdev, "GPUModel"); + + err = hwloc_gl_get_display_by_osdev(topology, osdev, &port, &device); + if (!err) { + err = strcmp(backend, "GL"); + assert(!err); + + assert(osdev->attr->osdev.type == HWLOC_OBJ_OSDEV_GPU); + + if (!firstgpu) + firstgpu = osdev; + lastgpu = osdev; + printf("GPU #%u (%s) is connected to DISPLAY:%u.%u \n", nr_gpus, model, port, device); + nr_gpus++; + } else { + if (backend) { + err = strcmp(backend, "GL"); + assert(err); + } + } + } + + /* Case 3: Get the first GPU connected to a valid display, specified by its port and device */ + if (firstgpu) { + assert(sscanf(firstgpu->name, ":%u.%u", &port, &device) == 2); + osdev = hwloc_gl_get_display_osdev_by_port_device(topology, port, device); + assert(osdev == firstgpu); + pcidev = osdev->parent; + parent = hwloc_get_non_io_ancestor_obj(topology, pcidev); + hwloc_bitmap_asprintf(&cpuset_string, parent->cpuset); + printf("GPU %s (PCI %04x:%02x:%02x.%01x) is connected to DISPLAY:%u.%u close to %s\n", + osdev->name, + pcidev->attr->pcidev.domain, pcidev->attr->pcidev.bus, pcidev->attr->pcidev.dev, pcidev->attr->pcidev.func, + port, device, cpuset_string); + free(cpuset_string); + } + + /* Case 4: Get the last GPU connected to a valid display, specified by its name */ + if (lastgpu) { + assert(sscanf(lastgpu->name, ":%u.%u", &port, &device) == 2); + osdev = hwloc_gl_get_display_osdev_by_name(topology, lastgpu->name); + assert(osdev == lastgpu); + pcidev = osdev->parent; + parent = hwloc_get_non_io_ancestor_obj(topology, pcidev); + hwloc_bitmap_asprintf(&cpuset_string, parent->cpuset); + printf("GPU %s (PCI %04x:%02x:%02x.%01x) is connected to DISPLAY:%u.%u close to %s\n", + osdev->name, + pcidev->attr->pcidev.domain, pcidev->attr->pcidev.bus, pcidev->attr->pcidev.dev, pcidev->attr->pcidev.func, + port, device, cpuset_string); + free(cpuset_string); + } + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/glibc-sched.c b/3rd-party/hwloc-2.7.1/tests/hwloc/glibc-sched.c new file mode 100644 index 0000000000..1e48f97543 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/glibc-sched.c @@ -0,0 +1,89 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009, 2017 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#define _GNU_SOURCE +#include +#include + +#include "private/autogen/config.h" /* for HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ +#include "hwloc.h" +#include "hwloc/glibc-sched.h" + +/* check the linux libnuma helpers */ + +int main(void) +{ + hwloc_topology_t topology; +#ifdef HWLOC_HAVE_CPU_SET + int depth; + hwloc_bitmap_t hwlocset; + cpu_set_t schedset; + hwloc_obj_t obj; + int err; +#endif /* HWLOC_HAVE_CPU_SET */ + + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + +#ifdef HWLOC_HAVE_CPU_SET + + depth = hwloc_topology_get_depth(topology); + + hwlocset = hwloc_bitmap_dup(hwloc_topology_get_complete_cpuset(topology)); + hwloc_cpuset_to_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset)); +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + err = sched_setaffinity(0, &schedset); +#else + err = sched_setaffinity(0, sizeof(schedset), &schedset); +#endif + assert(!err); + hwloc_bitmap_free(hwlocset); + +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + err = sched_getaffinity(0, &schedset); +#else + err = sched_getaffinity(0, sizeof(schedset), &schedset); +#endif + assert(!err); + hwlocset = hwloc_bitmap_alloc(); + hwloc_cpuset_from_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset)); + assert(hwloc_bitmap_isincluded(hwlocset, hwloc_topology_get_complete_cpuset(topology))); + hwloc_bitmap_andnot(hwlocset, hwlocset, hwloc_topology_get_allowed_cpuset(topology)); + assert(hwloc_bitmap_iszero(hwlocset)); + hwloc_bitmap_free(hwlocset); + + obj = hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1) - 1); + assert(obj); + assert(obj->type == HWLOC_OBJ_PU); + + hwlocset = hwloc_bitmap_dup(obj->cpuset); + hwloc_cpuset_to_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset)); +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + err = sched_setaffinity(0, &schedset); +#else + err = sched_setaffinity(0, sizeof(schedset), &schedset); +#endif + assert(!err); + hwloc_bitmap_free(hwlocset); + +#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY + err = sched_getaffinity(0, &schedset); +#else + err = sched_getaffinity(0, sizeof(schedset), &schedset); +#endif + assert(!err); + hwlocset = hwloc_bitmap_alloc(); + hwloc_cpuset_from_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset)); + assert(hwloc_bitmap_isequal(hwlocset, obj->cpuset)); + hwloc_bitmap_free(hwlocset); + +#endif /* HWLOC_HAVE_CPU_SET */ + + hwloc_topology_destroy(topology); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_api_version.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_api_version.c new file mode 100644 index 0000000000..17d72ebb66 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_api_version.c @@ -0,0 +1,16 @@ +/* + * Copyright © 2019 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include + +int main(void) +{ + unsigned static_version = HWLOC_API_VERSION; + unsigned dynamic_version = hwloc_get_api_version(); + assert(static_version == dynamic_version); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_backends.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_backends.c new file mode 100644 index 0000000000..74580bd47d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_backends.c @@ -0,0 +1,258 @@ +/* + * Copyright © 2012-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" /* for HWLOC_WIN_SYS */ +#include "hwloc.h" + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +#ifndef HAVE_MKSTEMP +#include +#include +#include +#include "private/misc.h" /* for S_IRWXU */ +static inline int mkstemp(char *name) +{ + mktemp(name); + return open(name, O_RDWR|O_CREAT, S_IRWXU); +} +#endif + +/* mostly useful with valgrind, to check if backend cleanup properly */ + +static const char *get_backend_name(hwloc_topology_t topo) +{ + hwloc_obj_t root = hwloc_get_root_obj(topo); + return hwloc_obj_get_info_by_name(root, "Backend"); +} + +static void assert_backend_name(hwloc_topology_t topo, const char *wanted) +{ + const char *found = get_backend_name(topo); + int diff; + assert(found); + diff = strcmp(found, wanted); + assert(!diff); +} + +static void assert_foo_bar(hwloc_topology_t topo, int setornot) +{ + hwloc_obj_t root = hwloc_get_root_obj(topo); + const char *found = hwloc_obj_get_info_by_name(root, "Foo"); + if (!setornot) { + assert(!found); + } else { + int diff; + assert(found); + diff = strcmp(found, "Bar"); + assert(!diff); + } +} + +int main(void) +{ + hwloc_topology_t topology1, topology2; + char *xmlbuf; + int xmlbuflen; + char xmlfile[] = "hwloc_backends.tmpxml.XXXXXX"; + char env[64]; + int xmlbufok = 0, xmlfileok = 0, xmlfilefd; + const char *orig_backend_name; + int err; + + putenv((char *) "HWLOC_LIBXML_CLEANUP=1"); + + printf("trying to export topology to XML buffer and file for later...\n"); + hwloc_topology_init(&topology1); + hwloc_topology_load(topology1); + orig_backend_name = get_backend_name(topology1); + hwloc_obj_add_info(hwloc_get_root_obj(topology1), "Foo", "Bar"); + assert(hwloc_topology_is_thissystem(topology1)); + if (hwloc_topology_export_xmlbuffer(topology1, &xmlbuf, &xmlbuflen, 0) < 0) + printf("XML buffer export failed (%s), ignoring\n", strerror(errno)); + else + xmlbufok = 1; + xmlfilefd = mkstemp(xmlfile); + if (xmlfilefd < 0 || hwloc_topology_export_xml(topology1, xmlfile, 0) < 0) + printf("XML file export failed (%s), ignoring\n", strerror(errno)); + else + xmlfileok = 1; + + + /* init+config+destroy without loading */ + printf("init...\n"); + hwloc_topology_init(&topology2); + if (xmlfileok) { + printf("switching to xml...\n"); + assert(!hwloc_topology_set_xml(topology2, xmlfile)); + } + if (xmlbufok) { + printf("switching to xmlbuffer...\n"); + assert(!hwloc_topology_set_xmlbuffer(topology2, xmlbuf, xmlbuflen)); + } + printf("switching to synthetic...\n"); + hwloc_topology_set_synthetic(topology2, "pack:2 node:3 l1:2 pu:4"); + hwloc_topology_destroy(topology2); + + /* init+xml+load+destroy */ + if (xmlfileok) { + printf("switching to xml and loading...\n"); + hwloc_topology_init(&topology2); + assert(!hwloc_topology_set_xml(topology2, xmlfile)); + hwloc_topology_load(topology2); + assert_backend_name(topology2, orig_backend_name); + assert_foo_bar(topology2, 1); + hwloc_topology_check(topology2); + assert(!hwloc_topology_is_thissystem(topology2)); + hwloc_topology_destroy(topology2); + } + + /* init+xmlbuf+load+destroy */ + if (xmlbufok) { + printf("switching to xmlbuffer and loading...\n"); + hwloc_topology_init(&topology2); + assert(!hwloc_topology_set_xmlbuffer(topology2, xmlbuf, xmlbuflen)); + hwloc_topology_load(topology2); + assert_backend_name(topology2, orig_backend_name); + assert_foo_bar(topology2, 1); + hwloc_topology_check(topology2); + assert(!hwloc_topology_is_thissystem(topology2)); + hwloc_topology_destroy(topology2); + } + + /* init+synthetic+load+destroy */ + printf("switching to synthetic and loading...\n"); + hwloc_topology_init(&topology2); + hwloc_topology_set_synthetic(topology2, "pack:2 node:3 l3i:2 pu:4"); + hwloc_topology_load(topology2); + assert_backend_name(topology2, "Synthetic"); + assert_foo_bar(topology2, 0); + assert(hwloc_get_nbobjs_by_type(topology2, HWLOC_OBJ_PU) == 2*3*2*4); + hwloc_topology_check(topology2); + assert(!hwloc_topology_is_thissystem(topology2)); + hwloc_topology_destroy(topology2); + + /* xmlenv+init+load+destroy */ + if (xmlfileok) { + printf("switching to xml by env and loading...\n"); + snprintf(env, sizeof(env), "HWLOC_XMLFILE=%s", xmlfile); + putenv(env); + hwloc_topology_init(&topology2); + hwloc_topology_load(topology2); + assert_backend_name(topology2, orig_backend_name); + assert_foo_bar(topology2, 1); + hwloc_topology_check(topology2); + assert(!hwloc_topology_is_thissystem(topology2)); + hwloc_topology_destroy(topology2); + } + + /* syntheticenv+init+load+destroy, synthetic env overrides xml */ + printf("switching to synthetic by env and loading...\n"); + putenv((char *) "HWLOC_SYNTHETIC=node:3 pu:3"); + hwloc_topology_init(&topology2); + hwloc_topology_load(topology2); + assert_backend_name(topology2, "Synthetic"); + assert_foo_bar(topology2, 0); + assert(hwloc_get_nbobjs_by_type(topology2, HWLOC_OBJ_PU) == 3*3); + hwloc_topology_check(topology2); + assert(!hwloc_topology_is_thissystem(topology2)); + hwloc_topology_destroy(topology2); + + /* componentsenv+init+load+destroy for testing defaults, overrides synthetic/xml/fsroot envs */ + printf("switching to default components by env and loading...\n"); + putenv((char *) "HWLOC_COMPONENTS=,"); /* don't set to empty since it means 'unset' on windows */ + hwloc_topology_init(&topology2); + hwloc_topology_load(topology2); + assert_backend_name(topology2, orig_backend_name); + assert_foo_bar(topology2, 0); + hwloc_topology_check(topology2); + assert(hwloc_topology_is_thissystem(topology2)); + hwloc_topology_destroy(topology2); + + if (xmlbufok) + hwloc_free_xmlbuffer(topology1, xmlbuf); + if (xmlfilefd >= 0) { + unlink(xmlfile); + close(xmlfilefd); + } + hwloc_topology_destroy(topology1); + + /* blacklist everything but noos with hwloc_topology_set_components() */ + printf("disabling everything but noos with hwloc_topology_set_components()\n"); + putenv((char *) "HWLOC_COMPONENTS="); /* means 'unset' on windows, which means HWLOC_XMLFILE and HWLOC_SYNTHETIC + * would be processed if not empty, so clear them too. */ + putenv((char *) "HWLOC_XMLFILE="); + putenv((char *) "HWLOC_SYNTHETIC="); + hwloc_topology_init(&topology1); + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "foobar"); + assert(err == -1); + assert(errno == EINVAL); + err = hwloc_topology_set_components(topology1, ~HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "synthetic"); + assert(err == -1); + assert(errno == EINVAL); + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "synthetic"); + assert(!err); + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "xml"); + assert(!err); + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "x86"); +#ifdef HWLOC_HAVE_X86_CPUID + assert(!err); +#else + assert(err == -1); + assert(errno == EINVAL); +#endif +#ifdef HWLOC_LINUX_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "linux:0xf"); + assert(!err); + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "linux:0xfffffff0"); + assert(!err); +#endif +#ifdef HWLOC_BGQ_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "bgq"); + assert(!err); +#endif +#ifdef HWLOC_DARWIN_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "darwin"); + assert(!err); +#endif +#ifdef HWLOC_SOLARIS_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "solaris"); + assert(!err); +#endif +#ifdef HWLOC_AIX_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "aix"); + assert(!err); +#endif +#ifdef HWLOC_HPUX_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "hpux"); + assert(!err); +#endif +#ifdef HWLOC_WIN_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "windows"); + assert(!err); +#endif +#ifdef HWLOC_FREEBSD_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "freebsd"); + assert(!err); +#endif +#ifdef HWLOC_NETBSD_SYS + err = hwloc_topology_set_components(topology1, HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST, "netbsd"); + assert(!err); +#endif + hwloc_topology_load(topology1); + assert(!get_backend_name(topology1)); /* noos doesn't put any Backend info attr */ + hwloc_topology_check(topology1); + assert(hwloc_topology_is_thissystem(topology1)); + hwloc_topology_destroy(topology1); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bind.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bind.c new file mode 100644 index 0000000000..a3012caa26 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bind.c @@ -0,0 +1,225 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2011 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "private/autogen/config.h" /* for HWLOC_WIN_SYS */ +#include "hwloc.h" + +/* check the binding functions */ +hwloc_topology_t topology; +const struct hwloc_topology_support *support; + +static void result_set(const char *msg, int err, int supported) +{ + const char *errmsg = strerror(errno); + if (err) + printf("%-40s: %sFAILED (%d, %s)\n", msg, supported?"":"X", errno, errmsg); + else + printf("%-40s: OK\n", msg); +} + +static void result_get(const char *msg, hwloc_const_bitmap_t expected, hwloc_const_bitmap_t result, int err, int supported) +{ + const char *errmsg = strerror(errno); + if (err) + printf("%-40s: %sFAILED (%d, %s)\n", msg, supported?"":"X", errno, errmsg); + else if (!expected || hwloc_bitmap_isequal(expected, result)) + printf("%-40s: OK\n", msg); + else { + char *expected_s, *result_s; + hwloc_bitmap_asprintf(&expected_s, expected); + hwloc_bitmap_asprintf(&result_s, result); + printf("%-40s: expected %s, got %s\n", msg, expected_s, result_s); + free(expected_s); + free(result_s); + } +} + +static void test(hwloc_const_bitmap_t cpuset, int flags) +{ + hwloc_bitmap_t new_cpuset = hwloc_bitmap_alloc(); + result_set("Bind this singlethreaded process", hwloc_set_cpubind(topology, cpuset, flags), support->cpubind->set_thisproc_cpubind || support->cpubind->set_thisthread_cpubind); + result_get("Get this singlethreaded process", cpuset, new_cpuset, hwloc_get_cpubind(topology, new_cpuset, flags), support->cpubind->get_thisproc_cpubind || support->cpubind->get_thisthread_cpubind); + result_set("Bind this thread", hwloc_set_cpubind(topology, cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->set_thisthread_cpubind); + result_get("Get this thread", cpuset, new_cpuset, hwloc_get_cpubind(topology, new_cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->get_thisthread_cpubind); + result_set("Bind this whole process", hwloc_set_cpubind(topology, cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->set_thisproc_cpubind); + result_get("Get this whole process", cpuset, new_cpuset, hwloc_get_cpubind(topology, new_cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->get_thisproc_cpubind); + +#ifdef HWLOC_WIN_SYS + result_set("Bind process", hwloc_set_proc_cpubind(topology, GetCurrentProcess(), cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->set_proc_cpubind); + result_get("Get process", cpuset, new_cpuset, hwloc_get_proc_cpubind(topology, GetCurrentProcess(), new_cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->get_proc_cpubind); + result_set("Bind thread", hwloc_set_thread_cpubind(topology, GetCurrentThread(), cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->set_thread_cpubind); + result_get("Get thread", cpuset, new_cpuset, hwloc_get_thread_cpubind(topology, GetCurrentThread(), new_cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->get_thread_cpubind); +#else /* !HWLOC_WIN_SYS */ + result_set("Bind whole process", hwloc_set_proc_cpubind(topology, getpid(), cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->set_proc_cpubind); + result_get("Get whole process", cpuset, new_cpuset, hwloc_get_proc_cpubind(topology, getpid(), new_cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->get_proc_cpubind); + result_set("Bind process", hwloc_set_proc_cpubind(topology, getpid(), cpuset, flags), support->cpubind->set_proc_cpubind); + result_get("Get process", cpuset, new_cpuset, hwloc_get_proc_cpubind(topology, getpid(), new_cpuset, flags), support->cpubind->get_proc_cpubind); +#ifdef hwloc_thread_t + result_set("Bind thread", hwloc_set_thread_cpubind(topology, pthread_self(), cpuset, flags), support->cpubind->set_thread_cpubind); + result_get("Get thread", cpuset, new_cpuset, hwloc_get_thread_cpubind(topology, pthread_self(), new_cpuset, flags), support->cpubind->get_thread_cpubind); +#endif +#endif /* !HWLOC_WIN_SYS */ + printf("\n"); + hwloc_bitmap_free(new_cpuset); +} + +static void testmem(hwloc_const_bitmap_t nodeset, hwloc_membind_policy_t policy, int flags, int expected) +{ + hwloc_bitmap_t new_nodeset = hwloc_bitmap_alloc(); + hwloc_membind_policy_t newpolicy; + void *area; + size_t area_size = 1024; + + result_set("Bind this singlethreaded process memory", hwloc_set_membind(topology, nodeset, policy, flags), (support->membind->set_thisproc_membind || support->membind->set_thisthread_membind) && expected); + result_get("Get this singlethreaded process memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags), (support->membind->get_thisproc_membind || support->membind->get_thisthread_membind) && expected); + + result_set("Bind this thread memory", hwloc_set_membind(topology, nodeset, policy, flags | HWLOC_MEMBIND_THREAD), support->membind->set_thisproc_membind && expected); + result_get("Get this thread memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags | HWLOC_MEMBIND_THREAD), support->membind->get_thisproc_membind && expected); + + result_set("Bind this whole process memory", hwloc_set_membind(topology, nodeset, policy, flags | HWLOC_MEMBIND_PROCESS), support->membind->set_thisproc_membind && expected); + result_get("Get this whole process memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags | HWLOC_MEMBIND_PROCESS), support->membind->get_thisproc_membind && expected); + +#ifdef HWLOC_WIN_SYS + result_set("Bind process memory", hwloc_set_proc_membind(topology, GetCurrentProcess(), nodeset, policy, flags), support->membind->set_proc_membind && expected); + result_get("Get process memory", nodeset, new_nodeset, hwloc_get_proc_membind(topology, GetCurrentProcess(), new_nodeset, &newpolicy, flags), support->membind->get_proc_membind && expected); +#else /* !HWLOC_WIN_SYS */ + result_set("Bind process memory", hwloc_set_proc_membind(topology, getpid(), nodeset, policy, flags), support->membind->set_proc_membind && expected); + result_get("Get process memory", nodeset, new_nodeset, hwloc_get_proc_membind(topology, getpid(), new_nodeset, &newpolicy, flags), support->membind->get_proc_membind && expected); +#endif /* !HWLOC_WIN_SYS */ + + result_set("Bind area", hwloc_set_area_membind(topology, &new_nodeset, sizeof(new_nodeset), nodeset, policy, flags), support->membind->set_area_membind && expected); + result_get("Get area", nodeset, new_nodeset, hwloc_get_area_membind(topology, &new_nodeset, sizeof(new_nodeset), new_nodeset, &newpolicy, flags), support->membind->get_area_membind && expected); + + if (!(flags & HWLOC_MEMBIND_MIGRATE)) { + result_set("Alloc bound area", (area = hwloc_alloc_membind(topology, area_size, nodeset, policy, flags)) == NULL, (support->membind->alloc_membind && expected) || !(flags & HWLOC_MEMBIND_STRICT)); + if (area) { + memset(area, 0, area_size); + result_get("Get bound area", nodeset, new_nodeset, hwloc_get_area_membind(topology, area, area_size, new_nodeset, &newpolicy, flags), support->membind->get_area_membind && expected); + result_get("Free bound area", NULL, NULL, hwloc_free(topology, area, area_size), support->membind->alloc_membind && expected); + } + + result_set("Alloc bound area through policy", (area = hwloc_alloc_membind_policy(topology, area_size, nodeset, policy, flags)) == NULL, (support->membind->set_thisproc_membind && expected) || !(flags & HWLOC_MEMBIND_STRICT)); + if (area) { + memset(area, 0, area_size); + result_get("Get bound area", nodeset, new_nodeset, hwloc_get_area_membind(topology, area, area_size, new_nodeset, &newpolicy, flags), support->membind->get_area_membind && expected); + result_get("Free bound area", NULL, NULL, hwloc_free(topology, area, area_size), support->membind->alloc_membind && expected); + } + } + printf("\n"); + hwloc_bitmap_free(new_nodeset); +} + +static void testmem2(hwloc_const_bitmap_t set, int flags) +{ + printf(" default\n"); + testmem(set, HWLOC_MEMBIND_DEFAULT, flags, 1); + printf(" firsttouch\n"); + testmem(set, HWLOC_MEMBIND_FIRSTTOUCH, flags, support->membind->firsttouch_membind); + printf(" bound\n"); + testmem(set, HWLOC_MEMBIND_BIND, flags, support->membind->bind_membind); + printf(" interleave\n"); + testmem(set, HWLOC_MEMBIND_INTERLEAVE, flags, support->membind->interleave_membind); + printf(" nexttouch\n"); + testmem(set, HWLOC_MEMBIND_NEXTTOUCH, flags, support->membind->nexttouch_membind); +} + +static void testmem3(hwloc_const_bitmap_t set) +{ + testmem2(set, 0); + printf("now strict\n\n"); + testmem2(set, HWLOC_MEMBIND_STRICT); + printf("now migrate\n\n"); + testmem2(set, HWLOC_MEMBIND_MIGRATE); + printf("now strictly migrate\n\n"); + testmem2(set, HWLOC_MEMBIND_STRICT | HWLOC_MEMBIND_MIGRATE); +} + +int main(void) +{ + hwloc_bitmap_t set; + hwloc_obj_t obj; + char *str = NULL; + + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + + support = hwloc_topology_get_support(topology); + + obj = hwloc_get_root_obj(topology); + set = hwloc_bitmap_dup(obj->cpuset); + + while (hwloc_bitmap_isequal(obj->cpuset, set)) { + if (!obj->arity) + break; + obj = obj->children[0]; + } + + hwloc_bitmap_asprintf(&str, set); + printf("system set is %s\n", str); + free(str); + + test(set, 0); + printf("now strict\n"); + test(set, HWLOC_CPUBIND_STRICT); + + hwloc_bitmap_free(set); + set = hwloc_bitmap_dup(obj->cpuset); + hwloc_bitmap_asprintf(&str, set); + printf("obj set is %s\n", str); + free(str); + + test(set, 0); + printf("now strict\n"); + test(set, HWLOC_CPUBIND_STRICT); + + hwloc_bitmap_singlify(set); + hwloc_bitmap_asprintf(&str, set); + printf("singlified to %s\n", str); + free(str); + + test(set, 0); + printf("now strict\n"); + test(set, HWLOC_CPUBIND_STRICT); + hwloc_bitmap_free(set); + + printf("\n\nmemory tests\n\n"); + printf("complete node set\n"); + set = hwloc_bitmap_dup(hwloc_get_root_obj(topology)->cpuset); + hwloc_bitmap_asprintf(&str, set); + printf("i.e. cpuset %s\n", str); + free(str); + testmem3(set); + hwloc_bitmap_free(set); + + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0); + assert(obj); + set = hwloc_bitmap_dup(obj->cpuset); + hwloc_bitmap_asprintf(&str, set); + printf("cpuset set is %s\n", str); + free(str); + + testmem3(set); + + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1); + if (obj) { + hwloc_bitmap_or(set, set, obj->cpuset); + hwloc_bitmap_asprintf(&str, set); + printf("cpuset set is %s\n", str); + free(str); + + testmem3(set); + } + hwloc_bitmap_free(set); + + hwloc_topology_destroy(topology); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap.c new file mode 100644 index 0000000000..7770287620 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap.c @@ -0,0 +1,540 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009, 2012 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include "private/misc.h" /* for HWLOC_BITS_PER_LONG */ + +#include + +/* check misc bitmap stuff */ + +int main(void) +{ + hwloc_bitmap_t set; + unsigned long masks[10]; + + /* check an empty bitmap */ + set = hwloc_bitmap_alloc(); + assert(hwloc_bitmap_weight(set) == 0); + assert(hwloc_bitmap_first(set) == -1); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_to_ulong(set) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL); + assert(hwloc_bitmap_nr_ulongs(set) == 0); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == 0UL); + assert(masks[1] == 0UL); + assert(masks[2] == 0UL); + assert(masks[3] == 0UL); + assert(masks[4] == 0UL); + assert(masks[5] == 0UL); + assert(masks[6] == 0UL); + assert(masks[7] == 0UL); + assert(masks[8] == 0UL); + assert(masks[9] == 0UL); + /* check a bitmap with only the first bit */ + hwloc_bitmap_only(set, 0); + assert(hwloc_bitmap_weight(set) == 1); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == 0); + assert(hwloc_bitmap_to_ulong(set) == 0x1); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0x1); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL); + assert(hwloc_bitmap_nr_ulongs(set) == 1); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == 0x1); + assert(masks[1] == 0UL); + assert(masks[2] == 0UL); + assert(masks[3] == 0UL); + assert(masks[4] == 0UL); + assert(masks[5] == 0UL); + assert(masks[6] == 0UL); + assert(masks[7] == 0UL); + assert(masks[8] == 0UL); + assert(masks[9] == 0UL); + /* check a bitmap with the entire first ulong */ + hwloc_bitmap_from_ulong(set, ~0UL); + assert(hwloc_bitmap_weight(set) == HWLOC_BITS_PER_LONG); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == HWLOC_BITS_PER_LONG-1); + assert(hwloc_bitmap_to_ulong(set) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL); + assert(hwloc_bitmap_nr_ulongs(set) == 1); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == ~0UL); + assert(masks[1] == 0UL); + assert(masks[2] == 0UL); + assert(masks[3] == 0UL); + assert(masks[4] == 0UL); + assert(masks[5] == 0UL); + assert(masks[6] == 0UL); + assert(masks[7] == 0UL); + assert(masks[8] == 0UL); + assert(masks[9] == 0UL); + /* check a non-empty bitmap */ + hwloc_bitmap_from_ith_ulong(set, 4, 0xff); + assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0xff); + assert(hwloc_bitmap_to_ulong(set) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL); + assert(hwloc_bitmap_nr_ulongs(set) == 5); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == 0UL); + assert(masks[1] == 0UL); + assert(masks[2] == 0UL); + assert(masks[3] == 0UL); + assert(masks[4] == 0xff); + assert(masks[5] == 0UL); + assert(masks[6] == 0UL); + assert(masks[7] == 0UL); + assert(masks[8] == 0UL); + assert(masks[9] == 0UL); + /* check a two-long bitmap */ + hwloc_bitmap_from_ith_ulong(set, 4, 0xfe); + hwloc_bitmap_set_ith_ulong(set, 6, 0xef); + assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0xfe); + assert(hwloc_bitmap_to_ith_ulong(set, 6) == 0xef); + assert(hwloc_bitmap_to_ulong(set) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL); + assert(hwloc_bitmap_nr_ulongs(set) == 7); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == 0UL); + assert(masks[1] == 0UL); + assert(masks[2] == 0UL); + assert(masks[3] == 0UL); + assert(masks[4] == 0xfe); + assert(masks[5] == 0UL); + assert(masks[6] == 0xef); + assert(masks[7] == 0UL); + assert(masks[8] == 0UL); + assert(masks[9] == 0UL); + /* check setting multiple ulongs at once */ + masks[0] = 0UL; + masks[1] = 1UL; + masks[2] = 2UL; + masks[3] = 3UL; + masks[4] = 4UL; + masks[5] = 5UL; + masks[6] = 6UL; + masks[7] = 7UL; + masks[8] = 0UL; + assert(!hwloc_bitmap_from_ulongs(set, 9, masks)); + assert(hwloc_bitmap_to_ulong(set) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 1UL); + assert(hwloc_bitmap_to_ith_ulong(set, 2) == 2UL); + assert(hwloc_bitmap_to_ith_ulong(set, 3) == 3UL); + assert(hwloc_bitmap_to_ith_ulong(set, 4) == 4UL); + assert(hwloc_bitmap_to_ith_ulong(set, 5) == 5UL); + assert(hwloc_bitmap_to_ith_ulong(set, 6) == 6UL); + assert(hwloc_bitmap_to_ith_ulong(set, 7) == 7UL); + assert(hwloc_bitmap_to_ith_ulong(set, 8) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL); + assert(hwloc_bitmap_nr_ulongs(set) == 8); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == 0UL); + assert(masks[1] == 1UL); + assert(masks[2] == 2UL); + assert(masks[3] == 3UL); + assert(masks[4] == 4UL); + assert(masks[5] == 5UL); + assert(masks[6] == 6UL); + assert(masks[7] == 7UL); + assert(masks[8] == 0UL); + assert(masks[9] == 0UL); + /* check a zeroed bitmap */ + hwloc_bitmap_zero(set); + assert(hwloc_bitmap_weight(set) == 0); + assert(hwloc_bitmap_first(set) == -1); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_to_ulong(set) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL); + assert(hwloc_bitmap_nr_ulongs(set) == 0); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == 0UL); + assert(masks[1] == 0UL); + assert(masks[2] == 0UL); + assert(masks[3] == 0UL); + assert(masks[4] == 0UL); + assert(masks[5] == 0UL); + assert(masks[6] == 0UL); + assert(masks[7] == 0UL); + assert(masks[8] == 0UL); + assert(masks[9] == 0UL); + hwloc_bitmap_free(set); + + /* check a full bitmap */ + set = hwloc_bitmap_alloc_full(); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_to_ulong(set) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == ~0UL); + assert(hwloc_bitmap_nr_ulongs(set) == -1); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == ~0UL); + assert(masks[1] == ~0UL); + assert(masks[2] == ~0UL); + assert(masks[3] == ~0UL); + assert(masks[4] == ~0UL); + assert(masks[5] == ~0UL); + assert(masks[6] == ~0UL); + assert(masks[7] == ~0UL); + assert(masks[8] == ~0UL); + assert(masks[9] == ~0UL); + /* check a almost full bitmap */ + hwloc_bitmap_set_ith_ulong(set, 4, 0xff); + assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0xff); + assert(hwloc_bitmap_to_ulong(set) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == ~0UL); + assert(hwloc_bitmap_nr_ulongs(set) == -1); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == ~0UL); + assert(masks[1] == ~0UL); + assert(masks[2] == ~0UL); + assert(masks[3] == ~0UL); + assert(masks[4] == 0xff); + assert(masks[5] == ~0UL); + assert(masks[6] == ~0UL); + assert(masks[7] == ~0UL); + assert(masks[8] == ~0UL); + assert(masks[9] == ~0UL); + /* check a almost empty bitmap */ + hwloc_bitmap_from_ith_ulong(set, 4, 0xff); + assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0xff); + assert(hwloc_bitmap_to_ulong(set) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL); + assert(hwloc_bitmap_nr_ulongs(set) == 5); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == 0UL); + assert(masks[1] == 0UL); + assert(masks[2] == 0UL); + assert(masks[3] == 0UL); + assert(masks[4] == 0xff); + assert(masks[5] == 0UL); + assert(masks[6] == 0UL); + assert(masks[7] == 0UL); + assert(masks[8] == 0UL); + assert(masks[9] == 0UL); + /* check a filled bitmap */ + hwloc_bitmap_fill(set); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_to_ith_ulong(set, 4) == ~0UL); + assert(hwloc_bitmap_to_ulong(set) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == ~0UL); + assert(hwloc_bitmap_to_ith_ulong(set, 23) == ~0UL); + assert(hwloc_bitmap_nr_ulongs(set) == -1); + assert(!hwloc_bitmap_to_ulongs(set, 10, masks)); + assert(masks[0] == ~0UL); + assert(masks[1] == ~0UL); + assert(masks[2] == ~0UL); + assert(masks[3] == ~0UL); + assert(masks[4] == ~0UL); + assert(masks[5] == ~0UL); + assert(masks[6] == ~0UL); + assert(masks[7] == ~0UL); + assert(masks[8] == ~0UL); + assert(masks[9] == ~0UL); + hwloc_bitmap_free(set); + + /* check ranges */ + set = hwloc_bitmap_alloc(); + assert(hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 0); + assert(hwloc_bitmap_first(set) == -1); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, -1) == 0); + /* 20-39 */ + hwloc_bitmap_set_range(set, 20, 39); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 20); + assert(hwloc_bitmap_first(set) == 20); + assert(hwloc_bitmap_last(set) == 39); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 19) == 40); + /* 20-39,80- */ + hwloc_bitmap_set_range(set, 80, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 20); + assert(hwloc_bitmap_next(set, 39) == 80); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == 79); + assert(hwloc_bitmap_next_unset(set, 79) == -1); + /* 20-39,80-359 */ + hwloc_bitmap_clr_range(set, 360, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 300); + assert(hwloc_bitmap_first(set) == 20); + assert(hwloc_bitmap_next(set, 39) == 80); + assert(hwloc_bitmap_last(set) == 359); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 100) == 360); + /* 20-39,80-179,280-359 */ + hwloc_bitmap_clr_range(set, 180, 279); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 200); + assert(hwloc_bitmap_first(set) == 20); + assert(hwloc_bitmap_next(set, 39) == 80); + assert(hwloc_bitmap_next(set, 179) == 280); + assert(hwloc_bitmap_last(set) == 359); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 100) == 180); + /* 20- */ + hwloc_bitmap_set_range(set, 35, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 20); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == 19); + assert(hwloc_bitmap_next_unset(set, 100) == -1); + /* 20-419 */ + hwloc_bitmap_clr_range(set, 420, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 400); + assert(hwloc_bitmap_first(set) == 20); + assert(hwloc_bitmap_last(set) == 419); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 100) == 420); + /* 20-419,1000- */ + hwloc_bitmap_set_range(set, 1000, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 20); + assert(hwloc_bitmap_next(set, 419) == 1000); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == 999); + assert(hwloc_bitmap_next_unset(set, 1000) == -1); + /* 20- */ + hwloc_bitmap_set_range(set, 420, 999); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 20); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == 19); + assert(hwloc_bitmap_next_unset(set, 1000) == -1); + /* 0- */ + hwloc_bitmap_set_range(set, 0, 25); + assert(!hwloc_bitmap_iszero(set)); + assert(hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == -1); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 1000) == -1); + /* 0-99,1500- */ + hwloc_bitmap_clr_range(set, 100, 1499); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 1500); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == 1499); + assert(hwloc_bitmap_next_unset(set, 99) == 100); + /* 0-99,1500-1999 */ + hwloc_bitmap_clr_range(set, 2000, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 600); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 1500); + assert(hwloc_bitmap_last(set) == 1999); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 1800) == 2000); + /* 0-99,1500- */ + hwloc_bitmap_set_range(set, 1500, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 1500); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == 1499); + assert(hwloc_bitmap_next_unset(set, 1000) == 1001); + /* 0-99,1500-2199 */ + hwloc_bitmap_clr_range(set, 2200, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 800); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 1500); + assert(hwloc_bitmap_last(set) == 2199); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 1800) == 2200); + /* 0-99,1500-1999 */ + hwloc_bitmap_clr_range(set, 2000, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 600); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 1500); + assert(hwloc_bitmap_last(set) == 1999); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 1800) == 2000); + /* 0-99,1500- */ + hwloc_bitmap_set_range(set, 2000, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 1500); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == 1499); + assert(hwloc_bitmap_next_unset(set, 1800) == -1); + /* 0-99,1500-1999 */ + hwloc_bitmap_clr_range(set, 2000, -1); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 600); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 1500); + assert(hwloc_bitmap_last(set) == 1999); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 1800) == 2000); + /* 0-99,200-1999 */ + hwloc_bitmap_set_range(set, 200, 1499); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 1900); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 200); + assert(hwloc_bitmap_last(set) == 1999); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 200) == 2000); + /* 0-99,1999 */ + hwloc_bitmap_clr_range(set, 200, 1998); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 101); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_next(set, 99) == 1999); + assert(hwloc_bitmap_last(set) == 1999); + assert(hwloc_bitmap_first_unset(set) == 100); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, 1999) == 2000); + /* 1999 */ + hwloc_bitmap_clr_range(set, 0, 100); + assert(!hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 1); + assert(hwloc_bitmap_first(set) == 1999); + assert(hwloc_bitmap_last(set) == 1999); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, -1) == 0); + assert(hwloc_bitmap_next_unset(set, 1999) == 2000); + /* empty */ + hwloc_bitmap_clr(set, 1999); + assert(hwloc_bitmap_iszero(set)); + assert(!hwloc_bitmap_isfull(set)); + assert(hwloc_bitmap_weight(set) == 0); + assert(hwloc_bitmap_first(set) == -1); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, -1) == 0); + assert(hwloc_bitmap_next_unset(set, 1999) == 2000); + hwloc_bitmap_free(set); + + /* check miscellaneous other functions */ + set = hwloc_bitmap_alloc(); + /* from_ulong */ + hwloc_bitmap_from_ulong(set, 0x0ff0); + assert(hwloc_bitmap_first(set) == 4); + assert(hwloc_bitmap_last(set) == 11); + assert(hwloc_bitmap_weight(set) == 8); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0xff0); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0); + /* from_ith_ulong */ + hwloc_bitmap_zero(set); + assert(hwloc_bitmap_weight(set) == 0); + hwloc_bitmap_from_ith_ulong(set, 2, 0xff00); + assert(hwloc_bitmap_weight(set) == 8); + assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0); + assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0); + assert(hwloc_bitmap_to_ith_ulong(set, 2) == 0xff00); + assert(hwloc_bitmap_to_ith_ulong(set, 3) == 0); + /* allbut and not */ + hwloc_bitmap_allbut(set, 153); + assert(hwloc_bitmap_weight(set) == -1); + hwloc_bitmap_not(set, set); + assert(hwloc_bitmap_weight(set) == 1); + assert(hwloc_bitmap_first(set) == 153); + assert(hwloc_bitmap_last(set) == 153); + /* clr_range */ + hwloc_bitmap_fill(set); + hwloc_bitmap_clr_range(set, 178, 3589); + hwloc_bitmap_not(set, set); + assert(hwloc_bitmap_weight(set) == 3589-178+1); + assert(hwloc_bitmap_first(set) == 178); + assert(hwloc_bitmap_last(set) == 3589); + /* singlify */ + hwloc_bitmap_zero(set); + hwloc_bitmap_set_range(set, 0, 127); + assert(hwloc_bitmap_weight(set) == 128); + hwloc_bitmap_not(set, set); + assert(hwloc_bitmap_weight(set) == -1); + hwloc_bitmap_singlify(set); + assert(hwloc_bitmap_weight(set) == 1); + assert(hwloc_bitmap_first(set) == 128); + assert(hwloc_bitmap_last(set) == 128); + + hwloc_bitmap_free(set); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_compare_inclusion.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_compare_inclusion.c new file mode 100644 index 0000000000..c58f5f8051 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_compare_inclusion.c @@ -0,0 +1,98 @@ +/* + * Copyright © 2015-2018 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" +#include "private/misc.h" /* for hwloc_bitmap_compare_inclusion() */ + +#include + +/* check hwloc_bitmap_compare_inclusion() */ + +static int check_compare(hwloc_const_bitmap_t set1, hwloc_const_bitmap_t set2) +{ + int res = hwloc_bitmap_compare_inclusion(set1, set2); + + if (hwloc_bitmap_iszero(set1)) { + if (hwloc_bitmap_iszero(set2)) { + assert(res == HWLOC_BITMAP_EQUAL); + } else { + assert(res == HWLOC_BITMAP_INCLUDED); + } + } else if (hwloc_bitmap_iszero(set2)) { + assert(res == HWLOC_BITMAP_CONTAINS); + + } else if (hwloc_bitmap_isequal(set1, set2)) { + assert(res == HWLOC_BITMAP_EQUAL); + } else if (hwloc_bitmap_isincluded(set1, set2)) { + assert(res == HWLOC_BITMAP_INCLUDED); + } else if (hwloc_bitmap_isincluded(set2, set1)) { + assert(res == HWLOC_BITMAP_CONTAINS); + } else if (hwloc_bitmap_intersects(set1, set2)) { + assert(res == HWLOC_BITMAP_INTERSECTS); + } else { + assert(res == HWLOC_BITMAP_DIFFERENT); + } + + return res; +} + +int main(void) +{ +#define N 10 + hwloc_bitmap_t sets[N]; + unsigned i,j; + unsigned stats[5]; + + memset(stats, 0, sizeof(stats)); + + sets[0] = hwloc_bitmap_alloc(); + + sets[1] = hwloc_bitmap_alloc_full(); + + sets[2] = hwloc_bitmap_alloc_full(); + hwloc_bitmap_clr_range(sets[2], 56, 129); + + sets[3] = hwloc_bitmap_alloc_full(); + hwloc_bitmap_clr_range(sets[3], 0, 33); + hwloc_bitmap_clr_range(sets[3], 50, 135); + + sets[4] = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(sets[4], 0, 24); + + sets[5] = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(sets[5], 0, 178); + + sets[6] = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(sets[6], 0, 191); + hwloc_bitmap_set_range(sets[6], 1031, 2035); + + sets[7] = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(sets[7], 324, 456); + + sets[8] = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(sets[8], 323, 455); + hwloc_bitmap_set_range(sets[8], 136, 177); + + sets[9] = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(sets[9], 3, 6); + + for(i=0; i + +/* check hwloc_bitmap_first(), _last(), _next() and _weight() */ + +int main(void) +{ + hwloc_bitmap_t set; + int i, cpu, expected_cpu = 0; + + /* empty set */ + set = hwloc_bitmap_alloc(); + assert(hwloc_bitmap_first(set) == -1); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_next(set, 0) == -1); + assert(hwloc_bitmap_next(set, -1) == -1); + assert(hwloc_bitmap_weight(set) == 0); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, -1) == 0); + assert(hwloc_bitmap_next_unset(set, 0) == 1); + assert(hwloc_bitmap_next_unset(set, 12345) == 12346); + + /* full set */ + hwloc_bitmap_fill(set); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == -1); + assert(hwloc_bitmap_next(set, -1) == 0); + assert(hwloc_bitmap_next(set, 0) == 1); + assert(hwloc_bitmap_next(set, 1) == 2); + assert(hwloc_bitmap_next(set, 2) == 3); + assert(hwloc_bitmap_next(set, 30) == 31); + assert(hwloc_bitmap_next(set, 31) == 32); + assert(hwloc_bitmap_next(set, 32) == 33); + assert(hwloc_bitmap_next(set, 62) == 63); + assert(hwloc_bitmap_next(set, 63) == 64); + assert(hwloc_bitmap_next(set, 64) == 65); + assert(hwloc_bitmap_next(set, 12345) == 12346); + assert(hwloc_bitmap_weight(set) == -1); + assert(hwloc_bitmap_first_unset(set) == -1); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, -1) == -1); + assert(hwloc_bitmap_next_unset(set, 0) == -1); + assert(hwloc_bitmap_next_unset(set, 12345) == -1); + + /* custom sets */ + hwloc_bitmap_zero(set); + hwloc_bitmap_set_range(set, 36, 59); + assert(hwloc_bitmap_first(set) == 36); + assert(hwloc_bitmap_last(set) == 59); + assert(hwloc_bitmap_next(set, -1) == 36); + assert(hwloc_bitmap_next(set, 0) == 36); + assert(hwloc_bitmap_next(set, 36) == 37); + assert(hwloc_bitmap_next(set, 59) == -1); + assert(hwloc_bitmap_weight(set) == 24); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, -1) == 0); + assert(hwloc_bitmap_next_unset(set, 0) == 1); + assert(hwloc_bitmap_next_unset(set, 35) == 60); + assert(hwloc_bitmap_next_unset(set, 12345) == 12346); + hwloc_bitmap_set_range(set, 136, 259); + assert(hwloc_bitmap_first(set) == 36); + assert(hwloc_bitmap_last(set) == 259); + assert(hwloc_bitmap_next(set, 59) == 136); + assert(hwloc_bitmap_next(set, 259) == -1); + assert(hwloc_bitmap_weight(set) == 148); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, -1) == 0); + assert(hwloc_bitmap_next_unset(set, 0) == 1); + assert(hwloc_bitmap_next_unset(set, 35) == 60); + assert(hwloc_bitmap_next_unset(set, 60) == 61); + assert(hwloc_bitmap_next_unset(set, 135) == 260); + assert(hwloc_bitmap_next_unset(set, 12345) == 12346); + hwloc_bitmap_clr(set, 199); + assert(hwloc_bitmap_first(set) == 36); + assert(hwloc_bitmap_last(set) == 259); + assert(hwloc_bitmap_next(set, 198) == 200); + assert(hwloc_bitmap_next(set, 199) == 200); + assert(hwloc_bitmap_weight(set) == 147); + assert(hwloc_bitmap_first_unset(set) == 0); + assert(hwloc_bitmap_last_unset(set) == -1); + assert(hwloc_bitmap_next_unset(set, -1) == 0); + assert(hwloc_bitmap_next_unset(set, 0) == 1); + assert(hwloc_bitmap_next_unset(set, 35) == 60); + assert(hwloc_bitmap_next_unset(set, 60) == 61); + assert(hwloc_bitmap_next_unset(set, 135) == 199); + assert(hwloc_bitmap_next_unset(set, 199) == 260); + assert(hwloc_bitmap_next_unset(set, 12345) == 12346); + + i = 0; + hwloc_bitmap_foreach_begin(cpu, set) { + if (0 <= i && i < 24) + expected_cpu = i + 36; + else if (24 <= i && i < 87) + expected_cpu = i + 112; + else if (87 <= i && i < 147) + expected_cpu = i + 113; + + assert(expected_cpu == cpu); + + i++; + } hwloc_bitmap_foreach_end(); + + hwloc_bitmap_free(set); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_singlify.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_singlify.c new file mode 100644 index 0000000000..8ad502ac0f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_singlify.c @@ -0,0 +1,52 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2010 inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* check hwloc_bitmap_singlify() */ + +int main(void) +{ + hwloc_bitmap_t orig, expected; + + orig = hwloc_bitmap_alloc(); + expected = hwloc_bitmap_alloc(); + + /* empty set gives empty set */ + hwloc_bitmap_singlify(orig); + assert(hwloc_bitmap_iszero(orig)); + + /* full set gives first bit only */ + hwloc_bitmap_fill(orig); + hwloc_bitmap_singlify(orig); + hwloc_bitmap_zero(expected); + hwloc_bitmap_set(expected, 0); + assert(hwloc_bitmap_isequal(orig, expected)); + assert(!hwloc_bitmap_compare(orig, expected)); + + /* actual non-trivial set */ + hwloc_bitmap_zero(orig); + hwloc_bitmap_set(orig, 45); + hwloc_bitmap_set(orig, 46); + hwloc_bitmap_set(orig, 517); + hwloc_bitmap_singlify(orig); + hwloc_bitmap_zero(expected); + hwloc_bitmap_set(expected, 45); + assert(hwloc_bitmap_isequal(orig, expected)); + assert(!hwloc_bitmap_compare(orig, expected)); + + hwloc_bitmap_free(orig); + hwloc_bitmap_free(expected); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_string.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_string.c new file mode 100644 index 0000000000..fecf12fcea --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_bitmap_string.c @@ -0,0 +1,204 @@ + +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* check hwloc_bitmap_asprintf(), hwloc_bitmap_snprintf() and hwloc_bitmap_sscanf() */ + +static void check_cpuset(hwloc_bitmap_t set, const char *expected1, const char *expected2, const char *expected3) +{ + hwloc_bitmap_t set2 = hwloc_bitmap_alloc(); + char *string = NULL; + + hwloc_bitmap_asprintf(&string, set); + fprintf(stderr, "exported to %s\n", string); + if (expected1 && strcmp(string, expected1)) { + fprintf(stderr, "got %s instead of %s\n", string, expected1); + assert(0); + } + hwloc_bitmap_sscanf(set2, string); + free(string); + assert(hwloc_bitmap_isequal(set, set2)); + + hwloc_bitmap_list_asprintf(&string, set); + fprintf(stderr, "exported to list %s\n", string); + if (expected2 && strcmp(string, expected2)) { + fprintf(stderr, "got %s instead of %s\n", string, expected2); + assert(0); + } + hwloc_bitmap_list_sscanf(set2, string); + free(string); + assert(hwloc_bitmap_isequal(set, set2)); + + hwloc_bitmap_taskset_asprintf(&string, set); + fprintf(stderr, "exported to taskset %s\n", string); + if (expected3 && strcmp(string, expected3)) { + fprintf(stderr, "got %s instead of %s\n", string, expected3); + assert(0); + } + hwloc_bitmap_taskset_sscanf(set2, string); + free(string); + assert(hwloc_bitmap_isequal(set, set2)); + + hwloc_bitmap_free(set2); +} + +int main(void) +{ + hwloc_topology_t topology; + int depth; + char *string = NULL; + int stringlen, len; + hwloc_obj_t obj; + hwloc_bitmap_t set; + + /* check an empty cpuset */ + set = hwloc_bitmap_alloc(); + check_cpuset(set, "0x0", "", "0x0"); + printf("empty cpuset converted back and forth, ok\n"); + + /* make sure the first ulong is allocated even if empty */ + hwloc_bitmap_set_ith_ulong(set, 0, 0UL); + check_cpuset(set, "0x0", "", "0x0"); + printf("uselessly modified empty cpuset converted back and forth, ok\n"); + + /* make sure the 6th ulong is allocated even if empty */ + hwloc_bitmap_set_ith_ulong(set, 5, 0UL); + check_cpuset(set, "0x0", "", "0x0"); + printf("twice uselessly modified empty cpuset converted back and forth, ok\n"); + hwloc_bitmap_free(set); + + /* check a full (and infinite) cpuset */ + set = hwloc_bitmap_alloc_full(); + check_cpuset(set, "0xf...f", "0-", "0xf...f"); + printf("full cpuset converted back and forth, ok\n"); + + /* make sure the first ulong is allocated even if full */ + hwloc_bitmap_set_ith_ulong(set, 0, ~0UL); + check_cpuset(set, "0xf...f", "0-", "0xf...f"); + printf("uselessly modified full cpuset converted back and forth, ok\n"); + + /* make sure the 9th ulong is allocated even if full */ + hwloc_bitmap_set_ith_ulong(set, 8, ~0UL); + check_cpuset(set, "0xf...f", "0-", "0xf...f"); + printf("twice uselessly modified full cpuset converted back and forth, ok\n"); + hwloc_bitmap_free(set); + + /* check an infinite (but non full) cpuset */ + set = hwloc_bitmap_alloc_full(); + hwloc_bitmap_clr(set, 173); + hwloc_bitmap_clr_range(set, 60, 70); + check_cpuset(set, "0xf...f,0xffffdfff,0xffffffff,0xffffffff,0xffffff80,0x0fffffff,0xffffffff", "0-59,71-172,174-", "0xf...fffffdfffffffffffffffffffffffff800fffffffffffffff"); + hwloc_bitmap_free(set); + printf("infinite/nonfull cpuset converted back and forth, ok\n"); + + /* check an finite cpuset */ + set = hwloc_bitmap_alloc(); + hwloc_bitmap_set(set, 2); + hwloc_bitmap_set_range(set, 67, 70); + check_cpuset(set, "0x00000078,,0x00000004", "2,67-70", "0x780000000000000004"); + hwloc_bitmap_free(set); + printf("finite/nonnull cpuset converted back and forth, ok\n"); + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "6 5 4 3 2"); + hwloc_topology_load(topology); + depth = hwloc_topology_get_depth(topology); + + obj = hwloc_get_root_obj(topology); + stringlen = hwloc_bitmap_asprintf(&string, obj->cpuset); + printf("system cpuset is %s\n", string); + check_cpuset(obj->cpuset, NULL, NULL, NULL); + printf("system cpuset converted back and forth, ok\n"); + + printf("truncating system cpuset to NULL buffer\n"); + len = hwloc_bitmap_snprintf(NULL, 0, obj->cpuset); + assert(len == stringlen); + + printf("truncating system cpuset to 0 char (no modification)\n"); + memset(string, 'X', 1); + string[1] = 0; + len = hwloc_bitmap_snprintf(string, 0, obj->cpuset); +printf("%d == %d (%c)\n", len, stringlen, string[0]); + assert(len == stringlen); + assert(string[0] == 'X'); + + printf("truncating system cpuset to 1 char (empty string)\n"); + memset(string, 'X', 2); + string[2] = 0; + len = hwloc_bitmap_snprintf(string, 1, obj->cpuset); + printf("got %s\n", string); + assert(len == stringlen); + assert(string[0] == 0); + assert(string[1] == 'X'); + + printf("truncating system cpuset to 10 chars (single 32bit subset except last char)\n"); + memset(string, 'X', 11); + string[11] = 0; + len = hwloc_bitmap_snprintf(string, 10, obj->cpuset); + printf("got %s\n", string); + assert(len == stringlen); + assert(string[8] == 'f'); + assert(string[9] == 0); + assert(string[10] == 'X'); + + printf("truncating system cpuset to 11 chars (single 32bit subset)\n"); + memset(string, 'X', 12); + string[12] = 0; + len = hwloc_bitmap_snprintf(string, 11, obj->cpuset); + printf("got %s\n", string); + assert(len == stringlen); + assert(string[9] == 'f'); + assert(string[10] == 0); + assert(string[11] == 'X'); + + printf("truncating system cpuset to 23 chars (two 32bit subsets with ending comma)\n"); + memset(string, 'X', 24); + string[24] = 0; + len = hwloc_bitmap_snprintf(string, 23, obj->cpuset); + printf("got %s\n", string); + assert(len == stringlen); + assert(string[20] == 'f'); + assert(string[21] == ','); + assert(string[22] == 0); + assert(string[23] == 'X'); + + printf("truncating system cpuset to 51 chars (truncate to four and a half 32bit subsets)\n"); + memset(string, 'X', 52); + string[52] = 0; + len = hwloc_bitmap_snprintf(string, 51, obj->cpuset); + printf("got %s\n", string); + assert(len == stringlen); + assert(string[49] == 'f'); + assert(string[50] == 0); + assert(string[51] == 'X'); + + obj = hwloc_get_obj_by_depth(topology, depth-1, 0); + hwloc_bitmap_snprintf(string, stringlen+1, obj->cpuset); + printf("first cpu cpuset is %s\n", string); + check_cpuset(obj->cpuset, NULL, NULL, NULL); + printf("first cpu cpuset converted back and forth, ok\n"); + + obj = hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1) - 1); + hwloc_bitmap_snprintf(string, stringlen+1, obj->cpuset); + printf("last cpu cpuset is %s\n", string); + check_cpuset(obj->cpuset, NULL, NULL, NULL); + printf("last cpu cpuset converted back and forth, ok\n"); + + free(string); + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_distances.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_distances.c new file mode 100644 index 0000000000..b31fd00a8a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_distances.c @@ -0,0 +1,417 @@ +/* + * Copyright © 2010-2021 Inria. All rights reserved. + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include +#include + +/* test setting/retrieving distances */ + +static void print_distances(const struct hwloc_distances_s *distances) +{ + unsigned nbobjs = distances->nbobjs; + unsigned i, j; + + printf(" "); + /* column header */ + for(j=0; jobjs[j]->os_index); + printf("\n"); + + /* each line */ + for(i=0; iobjs[i]->os_index); + /* each value */ + for(j=0; jvalues[i*nbobjs+j]); + printf("\n"); + } +} + +static void check_distances(hwloc_topology_t topology, int depth, unsigned expected) +{ + struct hwloc_distances_s *distances[2]; + unsigned nr = 0; + int err = hwloc_distances_get_by_depth(topology, depth, &nr, distances, 0, 0); + assert(!err); + assert(nr == expected); + if (!nr) { + printf("No distance at depth %d\n", depth); + return; + } + nr = 2; + err = hwloc_distances_get_by_depth(topology, depth, &nr, distances, 0, 0); + assert(!err); + printf("distance matrix for depth %d:\n", depth); + print_distances(distances[0]); + assert(!hwloc_distances_get_name(topology, distances[0])); + hwloc_distances_release(topology, distances[0]); + if (nr > 1) { + print_distances(distances[1]); + assert(!hwloc_distances_get_name(topology, distances[1])); + hwloc_distances_release(topology, distances[1]); + } +} + +int main(void) +{ + hwloc_topology_t topology; + struct hwloc_distances_s *distances[2]; + hwloc_obj_t objs[16]; + hwloc_uint64_t values[16*16], value1, value2; + hwloc_distances_add_handle_t handle; + int topodepth; + unsigned i, j, k, nr; + int err; + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:4 core:4 pu:1"); + hwloc_topology_load(topology); + + nr = 0; + err = hwloc_distances_get(topology, &nr, distances, 0, 0); + assert(!err); + assert(!nr); + if (!nr) + printf("No distance\n"); + + printf("\nInserting NUMA distances\n"); + for(i=0; i<4; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, i); + /* matrix 2*2 */ + for(i=0; i<16; i++) + values[i] = 8; + values[0+4*1] = 4; + values[1+4*0] = 4; + values[2+4*3] = 4; + values[3+4*2] = 4; + for(i=0; i<4; i++) + values[i+4*i] = 1; + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 4, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + err = hwloc_topology_refresh(topology); + assert(!err); + + topodepth = hwloc_topology_get_depth(topology); + assert(topodepth == 5); + check_distances(topology, 0, 0); + check_distances(topology, 1, 0); + check_distances(topology, 2, 0); + check_distances(topology, 3, 0); + check_distances(topology, 4, 0); + check_distances(topology, HWLOC_TYPE_DEPTH_NUMANODE, 1); + + /* check numa distances */ + printf("Checking NUMA distances\n"); + nr = 1; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_NUMANODE, &nr, distances, 0, 0); + assert(!err); + assert(nr == 1); + assert(distances[0]); + assert(distances[0]->objs); + assert(distances[0]->values); + assert(distances[0]->kind == (HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER)); + /* check helpers */ + assert(hwloc_distances_obj_index(distances[0], hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)) == 2); + err = hwloc_distances_obj_pair_values(distances[0], + hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1), + hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2), + &value1, &value2); + assert(!err); + assert(value1 == values[1*4+2]); + assert(value2 == values[2*4+1]); + /* check helpers on errors */ + assert(hwloc_distances_obj_index(distances[0], hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0)) == -1); + err = hwloc_distances_obj_pair_values(distances[0], + hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 1), + hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 2), + &value1, &value2); + assert(err == -1); + /* check that some random values are ok */ + assert(distances[0]->values[0] == 1); /* diagonal */ + assert(distances[0]->values[4] == 4); /* same group */ + assert(distances[0]->values[6] == 8); /* different group */ + assert(distances[0]->values[9] == 8); /* different group */ + assert(distances[0]->values[10] == 1); /* diagonal */ + assert(distances[0]->values[14] == 4); /* same group */ + hwloc_distances_release(topology, distances[0]); + + printf("\nInserting PU distances\n"); + /* matrix 4*2*2 */ + for(i=0; i<16; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, i); + for(i=0; i<256; i++) + values[i] = 8; + for(i=0; i<4; i++) { + for(j=0; j<4; j++) + for(k=0; k<4; k++) + values[i*64+i*4+16*j+k] = 4; + values[i*64+i*4+1] = 2; + values[i*64+i*4+16] = 2; + values[i*64+i*4+2*16+3] = 2; + values[i*64+i*4+3*16+2] = 2; + } + for(i=0; i<16; i++) + values[i+16*i] = 1; + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 16, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + topodepth = hwloc_topology_get_depth(topology); + assert(topodepth == 6); + check_distances(topology, 0, 0); + check_distances(topology, 1, 0); + check_distances(topology, 2, 0); + check_distances(topology, 3, 0); + check_distances(topology, 4, 0); + check_distances(topology, 5, 1); + check_distances(topology, HWLOC_TYPE_DEPTH_NUMANODE, 1); + + /* check PU distances */ + printf("Checking PU distances\n"); + nr = 1; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_PU, &nr, distances, 0, 0); + assert(!err); + assert(nr == 1); + assert(distances[0]); + assert(distances[0]->values); + assert(distances[0]->kind == (HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER)); + /* check that some random values are ok */ + assert(distances[0]->values[0] == 1); /* diagonal */ + assert(distances[0]->values[1] == 2); /* same group */ + assert(distances[0]->values[3] == 4); /* same biggroup */ + assert(distances[0]->values[15] == 8); /* different biggroup */ + assert(distances[0]->values[250] == 8); /* different biggroup */ + assert(distances[0]->values[253] == 4); /* same group */ + assert(distances[0]->values[254] == 2); /* same biggroup */ + assert(distances[0]->values[255] == 1); /* diagonal */ + hwloc_distances_release(topology, distances[0]); + + printf("\nInserting 2nd PU distances\n"); + /* matrix 4*1 */ + for(i=0; i<4; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, i); + for(i=0; i<16; i++) + values[i] = 3; + for(i=0; i<4; i++) + values[i+4*i] = 7; + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 4, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + topodepth = hwloc_topology_get_depth(topology); + assert(topodepth == 6); + check_distances(topology, 0, 0); + check_distances(topology, 1, 0); + check_distances(topology, 2, 0); + check_distances(topology, 3, 0); + check_distances(topology, 4, 0); + check_distances(topology, 5, 2); + check_distances(topology, HWLOC_TYPE_DEPTH_NUMANODE, 1); + + /* check PU distances */ + printf("Checking 2nd PU distances\n"); + nr = 2; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_PU, &nr, distances, 0, 0); + assert(!err); + assert(nr == 2); + assert(distances[1]); + assert(distances[1]->values); + assert(distances[1]->kind == (HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH|HWLOC_DISTANCES_KIND_FROM_USER)); + /* check that some random values are ok */ + assert(distances[1]->values[0] == 7); /* diagonal */ + assert(distances[1]->values[1] == 3); /* other */ + assert(distances[1]->values[3] == 3); /* other */ + assert(distances[1]->values[15] == 7); /* diagonal */ + hwloc_distances_release(topology, distances[0]); + hwloc_distances_release(topology, distances[1]); + + /* inserting heterogeneous distance */ + printf("\nInserting heterogeneous distances\n"); + objs[0] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0); + objs[1] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, 1); + objs[2] = hwloc_get_obj_by_depth(topology, 1, 0); + for(i=0; i<3; i++) { + for(j=0; j<3; j++) + values[i*3+j] = 10; + values[i*3+i] = 5; + } + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 3, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + 0); + assert(!err); + + /* check distances by kind */ + nr = 2; + err = hwloc_distances_get(topology, &nr, distances, HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH, 0); + assert(!err); + assert(nr == 2); + hwloc_distances_release(topology, distances[0]); + assert(distances[1]->objs[0]->type == HWLOC_OBJ_NUMANODE); + assert(distances[1]->objs[0]->logical_index == 0); + assert(distances[1]->objs[1]->type == HWLOC_OBJ_CORE); + assert(distances[1]->objs[1]->logical_index == 1); + assert(distances[1]->objs[2]->type == HWLOC_OBJ_GROUP); + assert(distances[1]->objs[2]->logical_index == 0); + assert(distances[1]->kind == (HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH|HWLOC_DISTANCES_KIND_FROM_USER|HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES)); + hwloc_distances_release(topology, distances[1]); + nr = 2; + err = hwloc_distances_get(topology, &nr, distances, HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_OS, 0); + assert(!err); + assert(nr == 0); + nr = 2; + err = hwloc_distances_get(topology, &nr, distances, HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, 0); + assert(!err); + assert(nr == 2); + hwloc_distances_release(topology, distances[0]); + hwloc_distances_release(topology, distances[1]); + + /* check distances by name */ + nr = 0; + err = hwloc_distances_get_by_name(topology, NULL, &nr, distances, 0); + assert(!err); + assert(nr == 4); + nr = 0; + err = hwloc_distances_get_by_name(topology, "nomatch", &nr, distances, 0); + assert(!err); + assert(nr == 0); + + /* removing one PU distance */ + printf("Removing the 2nd PU distances\n"); + nr = 2; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_PU, &nr, distances, 0, 0); + assert(!err); + assert(nr == 2); + hwloc_distances_release(topology, distances[0]); + hwloc_distances_release_remove(topology, distances[1]); + nr = 0; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_PU, &nr, distances, 0, 0); + assert(!err); + assert(nr == 1); + + /* remove distances */ + printf("Removing distances\n"); + /* remove both PU distances */ + err = hwloc_distances_remove_by_type(topology, HWLOC_OBJ_PU); + assert(!err); + nr = 0; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_PU, &nr, distances, 0, 0); + assert(!err); + assert(!nr); + nr = 0; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_NUMANODE, &nr, distances, 0, 0); + assert(!err); + assert(nr == 1); + /* remove all distances */ + err = hwloc_distances_remove(topology); + assert(!err); + nr = 0; + err = hwloc_distances_get(topology, &nr, distances, 0, 0); + assert(!err); + assert(!nr); + nr = 0; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_PU, &nr, distances, 0, 0); + assert(!err); + assert(!nr); + nr = 0; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_NUMANODE, &nr, distances, 0, 0); + assert(!err); + assert(!nr); + + /* add a bandwidth distance that we'll modify */ + printf("\nInserting NUMA bandwidths\n"); + for(i=0; i<4; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, i); + /* matrix 2*2 */ + for(i=0; i<16; i++) + values[i] = 0; + values[0+4*1] = 100; + values[1+4*0] = 100; + values[2+4*3] = 200; + values[3+4*2] = 100; + for(i=0; i<4; i++) + values[i+4*i] = 1000; + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 4, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + nr = 1; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_NUMANODE, &nr, distances, HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH, 0); + assert(!err); + assert(nr == 1); + printf("make it links\n"); + err = hwloc_distances_transform(topology, distances[0], HWLOC_DISTANCES_TRANSFORM_LINKS, NULL, 0); + assert(!err); + assert(distances[0]->nbobjs == 4); + assert(distances[0]->values[0] == 0); + assert(distances[0]->values[1] == 1); + assert(distances[0]->values[2] == 0); + assert(distances[0]->values[3] == 0); + assert(distances[0]->values[4] == 1); + assert(distances[0]->values[5] == 0); + assert(distances[0]->values[6] == 0); + assert(distances[0]->values[7] == 0); + assert(distances[0]->values[8] == 0); + assert(distances[0]->values[9] == 0); + assert(distances[0]->values[10] == 0); + assert(distances[0]->values[11] == 1); + assert(distances[0]->values[12] == 0); + assert(distances[0]->values[13] == 0); + assert(distances[0]->values[14] == 2); + assert(distances[0]->values[15] == 0); + printf("remove 2 objects\n"); + distances[0]->objs[0] = NULL; + distances[0]->objs[1] = NULL; + err = hwloc_distances_transform(topology, distances[0], HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL, NULL, 0); + assert(!err); + assert(distances[0]->nbobjs == 2); + assert(distances[0]->values[0] == 0); + assert(distances[0]->values[1] == 1); + assert(distances[0]->values[2] == 2); + assert(distances[0]->values[3] == 0); + + hwloc_distances_release(topology, distances[0]); + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_area_memlocation.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_area_memlocation.c new file mode 100644 index 0000000000..498dfae3af --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_area_memlocation.c @@ -0,0 +1,141 @@ +/* + * Copyright © 2016-2017 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include + +#define LEN 1048576 + +int main(void) +{ + const struct hwloc_topology_support *support; + char *buffer; + hwloc_topology_t topology; + hwloc_bitmap_t set = hwloc_bitmap_alloc(); + hwloc_bitmap_t total = hwloc_bitmap_alloc(); + hwloc_obj_t node; + char *s; + int err; + + err = hwloc_topology_init(&topology); + assert(!err); + err = hwloc_topology_load(topology); + assert(!err); + + support = hwloc_topology_get_support(topology); + if (!support->membind->get_area_memlocation) + goto out; + + buffer = hwloc_alloc(topology, LEN); + assert(buffer); + printf("buffer %p length %d\n", buffer, LEN); + + err = hwloc_get_area_memlocation(topology, buffer, LEN, set, HWLOC_MEMBIND_BYNODESET); + if (err < 0 && errno == ENOSYS) { + fprintf(stderr, "hwloc_get_area_memlocation() failed with ENOSYS, aborting\n"); + goto out_with_buffer; + } + assert(!err); + hwloc_bitmap_asprintf(&s, set); + printf("address %p length %d allocated in nodeset %s\n", buffer, LEN, s); + free(s); + hwloc_bitmap_copy(total, set); + + node = NULL; + next1: + node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, node); + if (!node) + goto out_with_buffer; + if (!node->attr->numanode.local_memory) + goto next1; + printf("binding to 1st node and touching 1st quarter\n"); + err = hwloc_set_area_membind(topology, buffer, LEN, node->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_BYNODESET); + if (err < 0 && errno == ENOSYS) { + fprintf(stderr, "hwloc_set_area_membind() failed with ENOSYS, aborting\n"); + goto out_with_buffer; + } + assert(!err); + + memset(buffer, 0, LEN/4); + err = hwloc_get_area_memlocation(topology, buffer, 1, set, HWLOC_MEMBIND_BYNODESET); + assert(!err); + hwloc_bitmap_asprintf(&s, set); + printf("address %p length %d allocated in nodeset %s\n", buffer, LEN/4, s); + free(s); + hwloc_bitmap_or(total, total, set); + + next2: + node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, node); + if (!node) + goto out_with_nomorenodes; + if (!node->attr->numanode.local_memory) + goto next2; + printf("binding to 2nd node and touching 2nd quarter\n"); + err = hwloc_set_area_membind(topology, buffer, LEN, node->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_BYNODESET); + assert(!err); + + memset(buffer+LEN/4, 0, LEN/4); + err = hwloc_get_area_memlocation(topology, buffer+LEN/4, LEN/4, set, HWLOC_MEMBIND_BYNODESET); + assert(!err); + hwloc_bitmap_asprintf(&s, set); + printf("address %p length %d allocated in nodeset %s\n", buffer+LEN/4, LEN/4, s); + free(s); + hwloc_bitmap_or(total, total, set); + + next3: + node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, node); + if (!node) + goto out_with_nomorenodes; + if (!node->attr->numanode.local_memory) + goto next3; + printf("binding to 3rd node and touching 3rd quarter\n"); + err = hwloc_set_area_membind(topology, buffer, LEN, node->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_BYNODESET); + assert(!err); + + memset(buffer+LEN/2, 0, LEN/4); + err = hwloc_get_area_memlocation(topology, buffer+LEN/2, LEN/4, set, HWLOC_MEMBIND_BYNODESET); + assert(!err); + hwloc_bitmap_asprintf(&s, set); + printf("address %p length %d allocated in nodeset %s\n", buffer+LEN/2, LEN/4, s); + free(s); + hwloc_bitmap_or(total, total, set); + + next4: + node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, node); + if (!node) + goto out_with_nomorenodes; + if (!node->attr->numanode.local_memory) + goto next4; + printf("binding to 4th node and touching 4th quarter\n"); + err = hwloc_set_area_membind(topology, buffer, LEN, node->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_BYNODESET); + assert(!err); + + memset(buffer+3*LEN/4, 0, LEN/4); + err = hwloc_get_area_memlocation(topology, buffer+3*LEN/4, LEN/4, set, HWLOC_MEMBIND_BYNODESET); + assert(!err); + hwloc_bitmap_asprintf(&s, set); + printf("address %p length %d allocated in nodeset %s\n", buffer+3*LEN/4, LEN/4, s); + free(s); + hwloc_bitmap_or(total, total, set); + + out_with_nomorenodes: + err = hwloc_get_area_memlocation(topology, buffer, LEN, set, HWLOC_MEMBIND_BYNODESET); + assert(!err); + hwloc_bitmap_asprintf(&s, set); + printf("address %p length %d located on %s\n", buffer, LEN, s); + free(s); + assert(hwloc_bitmap_isincluded(total, set)); + + out_with_buffer: + hwloc_free(topology, buffer, LEN); + + out: + hwloc_topology_destroy(topology); + hwloc_bitmap_free(set); + hwloc_bitmap_free(total); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_cache_covering_cpuset.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_cache_covering_cpuset.c new file mode 100644 index 0000000000..2e5008a89c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_cache_covering_cpuset.c @@ -0,0 +1,87 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* check hwloc_get_cache_covering_cpuset() */ + +#define SYNTHETIC_TOPOLOGY_DESCRIPTION "numa:6 pack:5 l2:4 core:3 pu:2" /* 736bits wide topology */ + +int main(void) +{ + hwloc_topology_t topology; + hwloc_obj_t obj, cache; + hwloc_bitmap_t set; + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION); + hwloc_topology_load(topology); + + /* check the cache above a given cpu */ +#define CPUINDEX 180 + set = hwloc_bitmap_alloc(); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, CPUINDEX); + assert(obj); + hwloc_bitmap_or(set, set, obj->cpuset); + cache = hwloc_get_cache_covering_cpuset(topology, set); + assert(cache); + assert(hwloc_obj_type_is_dcache(cache->type)); + assert(cache->logical_index == CPUINDEX/2/3); + assert(hwloc_obj_is_in_subtree(topology, obj, cache)); + hwloc_bitmap_free(set); + + /* check the cache above two nearby cpus */ +#define CPUINDEX1 180 +#define CPUINDEX2 183 + set = hwloc_bitmap_alloc(); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, CPUINDEX1); + assert(obj); + hwloc_bitmap_or(set, set, obj->cpuset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, CPUINDEX2); + assert(obj); + hwloc_bitmap_or(set, set, obj->cpuset); + cache = hwloc_get_cache_covering_cpuset(topology, set); + assert(cache); + assert(hwloc_obj_type_is_dcache(cache->type)); + assert(cache->logical_index == CPUINDEX1/2/3); + assert(cache->logical_index == CPUINDEX2/2/3); + assert(hwloc_obj_is_in_subtree(topology, obj, cache)); + hwloc_bitmap_free(set); + + /* check no cache above two distant cpus */ +#undef CPUINDEX1 +#define CPUINDEX1 300 + set = hwloc_bitmap_alloc(); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, CPUINDEX1); + assert(obj); + hwloc_bitmap_or(set, set, obj->cpuset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, CPUINDEX2); + assert(obj); + hwloc_bitmap_or(set, set, obj->cpuset); + cache = hwloc_get_cache_covering_cpuset(topology, set); + assert(!cache); + hwloc_bitmap_free(set); + + /* check no cache above higher level */ + set = hwloc_bitmap_alloc(); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 0); + assert(obj); + hwloc_bitmap_or(set, set, obj->cpuset); + cache = hwloc_get_cache_covering_cpuset(topology, set); + assert(!cache); + hwloc_bitmap_free(set); + + hwloc_topology_destroy(topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_closest_objs.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_closest_objs.c new file mode 100644 index 0000000000..936010fc4a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_closest_objs.c @@ -0,0 +1,81 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* + * check hwloc_get_closest_objs() + * + * - get the last object of the last level + * - get all closest objects + * - get the common ancestor of last level and its less close object. + * - check that the ancestor is the system level + */ + +int +main (void) +{ + hwloc_topology_t topology; + int depth; + hwloc_obj_t last; + hwloc_obj_t *closest; + unsigned found; + int err; + unsigned numprocs; + hwloc_obj_t ancestor; + + err = hwloc_topology_init (&topology); + if (err) + return EXIT_FAILURE; + + hwloc_topology_set_synthetic (topology, "2 3 4 5"); + + err = hwloc_topology_load (topology); + if (err) + return EXIT_FAILURE; + + depth = hwloc_topology_get_depth(topology); + + /* get the last object of last level */ + numprocs = hwloc_get_nbobjs_by_depth(topology, depth-1); + last = hwloc_get_obj_by_depth(topology, depth-1, numprocs-1); + + /* allocate the array of closest objects */ + closest = malloc(numprocs * sizeof(*closest)); + assert(closest); + + /* get closest levels */ + found = hwloc_get_closest_objs (topology, last, closest, numprocs); + printf("looked for %u closest entries, found %u\n", numprocs, found); + assert(found == numprocs-1); + + /* check first found is closest */ + assert(closest[0] == hwloc_get_obj_by_depth(topology, depth-1, numprocs-5 /* arity is 5 on last level */)); + /* check some other expected positions */ + assert(closest[found-1] == hwloc_get_obj_by_depth(topology, depth-1, 1*3*4*5-1 /* last of first half */)); + assert(closest[found/2-1] == hwloc_get_obj_by_depth(topology, depth-1, 1*3*4*5+2*4*5-1 /* last of second third of second half */)); + assert(closest[found/2/3-1] == hwloc_get_obj_by_depth(topology, depth-1, 1*3*4*5+2*4*5+3*5-1 /* last of third quarter of third third of second half */)); + + /* get ancestor of last and less close object */ + ancestor = hwloc_get_common_ancestor_obj(topology, last, closest[found-1]); + assert(hwloc_obj_is_in_subtree(topology, last, ancestor)); + assert(hwloc_obj_is_in_subtree(topology, closest[found-1], ancestor)); + assert(ancestor == hwloc_get_root_obj(topology)); + printf("ancestor type %d (%s) depth %d number %u is the root object\n", + (int) ancestor->type, hwloc_obj_type_string(ancestor->type), ancestor->depth, ancestor->logical_index); + + free(closest); + hwloc_topology_destroy (topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_largest_objs_inside_cpuset.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_largest_objs_inside_cpuset.c new file mode 100644 index 0000000000..666d6f99c2 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_largest_objs_inside_cpuset.c @@ -0,0 +1,114 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* check hwloc_get_largest_objs_inside_cpuset() + * and hwloc_get_first_largest_obj_inside_cpuset() + */ + +#define SYNTHETIC_TOPOLOGY_DESCRIPTION "numa:6 pack:5 l2:4 core:3 pu:2" /* 736bits wide topology */ + +#define GIVEN_LARGESPLIT_CPUSET_STRING "8000,,,,,,,,,,,,,,,,,,,,,,1" /* first and last(735th) bit set */ +#define GIVEN_TOOLARGE_CPUSET_STRING "10000,,,,,,,,,,,,,,,,,,,,,,0" /* 736th bit is too large for the 720-wide topology */ +#define GIVEN_HARD_CPUSET_STRING "07ff,ffffffff,e0000000" + +#define OBJ_MAX 16 + +int main(void) +{ + hwloc_topology_t topology; + hwloc_obj_t objs[OBJ_MAX]; + hwloc_obj_t obj; + hwloc_bitmap_t set; + unsigned pus; + int ret; + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION); + hwloc_topology_load(topology); + + pus = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PU); + + /* just get the system object */ + obj = hwloc_get_root_obj(topology); + ret = hwloc_get_largest_objs_inside_cpuset(topology, obj->cpuset, objs, 1); + assert(ret == 1); + assert(objs[0] == obj); + objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, obj->cpuset); + assert(objs[0] == obj); + + /* just get the very last object */ + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, pus-1); + ret = hwloc_get_largest_objs_inside_cpuset(topology, obj->cpuset, objs, 1); + assert(ret == 1); + assert(objs[0] == obj); + + /* try an empty one */ + set = hwloc_bitmap_alloc(); + ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1); + assert(ret == 0); + objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set); + assert(objs[0] == NULL); + hwloc_bitmap_free(set); + + /* try an impossible one */ + set = hwloc_bitmap_alloc(); + hwloc_bitmap_sscanf(set, GIVEN_TOOLARGE_CPUSET_STRING); + ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1); + assert(ret == -1); + objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set); + assert(objs[0] == NULL); + hwloc_bitmap_free(set); + + /* try a harder one with 1 obj instead of 2 needed */ + set = hwloc_bitmap_alloc(); + hwloc_bitmap_sscanf(set, GIVEN_LARGESPLIT_CPUSET_STRING); + ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1); + assert(ret == 1); + assert(objs[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0)); + objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set); + assert(objs[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0)); + /* try a harder one with lots of objs instead of 2 needed */ + ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 2); + assert(ret == 2); + assert(objs[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0)); + assert(objs[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, pus-1)); + objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set); + hwloc_bitmap_andnot(set, set, objs[0]->cpuset); + objs[1] = hwloc_get_first_largest_obj_inside_cpuset(topology, set); + hwloc_bitmap_andnot(set, set, objs[1]->cpuset); + objs[2] = hwloc_get_first_largest_obj_inside_cpuset(topology, set); + assert(objs[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0)); + assert(objs[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, pus-1)); + assert(objs[2] == NULL); + assert(hwloc_bitmap_iszero(set)); + hwloc_bitmap_free(set); + + /* try a very hard one */ + set = hwloc_bitmap_alloc(); + hwloc_bitmap_sscanf(set, GIVEN_HARD_CPUSET_STRING); + ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, OBJ_MAX); + assert(objs[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 29)); + assert(objs[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_L2CACHE, 5)); + assert(objs[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_L2CACHE, 6)); + assert(objs[3] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_L2CACHE, 7)); + assert(objs[4] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 2)); + assert(objs[5] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, 36)); + assert(objs[6] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 74)); + hwloc_bitmap_free(set); + + hwloc_topology_destroy(topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_last_cpu_location.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_last_cpu_location.c new file mode 100644 index 0000000000..43c37d8096 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_last_cpu_location.c @@ -0,0 +1,118 @@ +/* + * Copyright © 2011-2020 Inria. All rights reserved. + * Copyright © 2011 Université Bordeaux. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +#include "hwloc.h" + +hwloc_topology_t topology; +const struct hwloc_topology_support *support; + +static int checkprocincluded; + +/* check that a bound process execs on a non-empty cpuset included in the binding */ +static int check(hwloc_const_cpuset_t set, int flags) +{ + hwloc_cpuset_t last; + int ret; + + printf(" binding\n"); + ret = hwloc_set_cpubind(topology, set, flags); + if (ret) + return 0; + + printf(" getting cpu location\n"); + last = hwloc_bitmap_alloc(); + ret = hwloc_get_last_cpu_location(topology, last, flags); + assert(!ret); + assert(!hwloc_bitmap_iszero(last)); + + if (flags == HWLOC_CPUBIND_THREAD || checkprocincluded) { + printf(" checking inclusion\n"); + assert(hwloc_bitmap_isincluded(last, set)); + } + + hwloc_bitmap_free(last); + return 0; +} + +static int checkall(hwloc_const_cpuset_t set) +{ + if (support->cpubind->get_thisthread_last_cpu_location) { + printf(" with HWLOC_CPUBIND_THREAD...\n"); + check(set, HWLOC_CPUBIND_THREAD); + } + if (support->cpubind->get_thisproc_last_cpu_location) { + printf(" with HWLOC_CPUBIND_PROCESS...\n"); + check(set, HWLOC_CPUBIND_PROCESS); + } + if (support->cpubind->get_thisthread_last_cpu_location || support->cpubind->get_thisproc_last_cpu_location) { + printf(" with flags 0...\n"); + check(set, 0); + } + return 0; +} + +static int has_unexpected_threads(void) +{ +#ifdef HWLOC_LINUX_SYS + struct stat stbuf; + int err = stat("/proc/self/task", &stbuf); + if (!err && stbuf.st_nlink > 3) { + printf("program has multiple threads, disabling process-wide binding/cpulocation checks.\n"); + return 1; + } +#endif + /* if the problem ever occurs on !Linux, + * we'll use HWLOC_TEST_DONTCHECK_PROC_CPULOCATION=1 until detecting it here + */ + return 0; +} + +int main(void) +{ + unsigned depth; + hwloc_obj_t obj; + + checkprocincluded = !has_unexpected_threads() + && getenv("HWLOC_TEST_DONTCHECK_PROC_CPULOCATION") == NULL; + + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + + support = hwloc_topology_get_support(topology); + + /* check at top level */ + printf("testing at top level\n"); + obj = hwloc_get_root_obj(topology); + checkall(obj->cpuset); + + depth = hwloc_topology_get_depth(topology); + /* check at intermediate level if it exists */ + if (depth >= 3) { + printf("testing at depth %u\n", (depth-1)/2); + obj = NULL; + while ((obj = hwloc_get_next_obj_by_depth(topology, (depth-1)/2, obj)) != NULL) + checkall(obj->cpuset); + } + + /* check at bottom level */ + printf("testing at bottom level\n"); + obj = NULL; + while ((obj = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_PU, obj)) != NULL) + checkall(obj->cpuset); + + hwloc_topology_destroy(topology); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_next_obj_covering_cpuset.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_next_obj_covering_cpuset.c new file mode 100644 index 0000000000..555e42cd03 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_next_obj_covering_cpuset.c @@ -0,0 +1,86 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2018 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* + * check hwloc_get_next_obj_covering_cpuset*() + */ + +int +main (void) +{ + hwloc_topology_t topology; + hwloc_bitmap_t set; + hwloc_obj_t obj; + int depth; + int err; + + set = hwloc_bitmap_alloc(); + + + + err = hwloc_topology_init (&topology); + if (err) + return EXIT_FAILURE; + hwloc_topology_set_synthetic (topology, "pack:8 core:2 1"); + err = hwloc_topology_load (topology); + if (err) + return EXIT_FAILURE; + + hwloc_bitmap_sscanf(set, "00008f18"); + + obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_PACKAGE, NULL); + assert(obj == hwloc_get_obj_by_depth(topology, 1, 1)); + obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_PACKAGE, obj); + assert(obj == hwloc_get_obj_by_depth(topology, 1, 2)); + obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_PACKAGE, obj); + assert(obj == hwloc_get_obj_by_depth(topology, 1, 4)); + obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_PACKAGE, obj); + assert(obj == hwloc_get_obj_by_depth(topology, 1, 5)); + obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_PACKAGE, obj); + assert(obj == hwloc_get_obj_by_depth(topology, 1, 7)); + obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_PACKAGE, obj); + assert(!obj); + + hwloc_topology_destroy (topology); + + + + err = hwloc_topology_init (&topology); + if (err) + return EXIT_FAILURE; + hwloc_topology_set_synthetic (topology, "node:2 pack:5 core:3 4"); + err = hwloc_topology_load (topology); + if (err) + return EXIT_FAILURE; + + hwloc_bitmap_sscanf(set, "0ff08000"); + + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_PACKAGE); + assert(depth == 2); + obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, NULL); + assert(obj == hwloc_get_obj_by_depth(topology, depth, 1)); + obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, obj); + assert(obj == hwloc_get_obj_by_depth(topology, depth, 2)); + obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, obj); + assert(!obj); + + hwloc_topology_destroy (topology); + + + + hwloc_bitmap_free(set); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_below_array_by_type.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_below_array_by_type.c new file mode 100644 index 0000000000..77e31c7764 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_below_array_by_type.c @@ -0,0 +1,81 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* + * check hwloc_get_obj_below_array_by_type() + */ + +int +main (void) +{ + hwloc_topology_t topology; + hwloc_obj_t obj; + hwloc_obj_type_t typev[4]; + unsigned idxv[4]; + int err; + + err = hwloc_topology_init (&topology); + if (err) + return EXIT_FAILURE; + + hwloc_topology_set_synthetic (topology, "numa:1 pack:3 l2:3 core:3 pu:3"); + + err = hwloc_topology_load (topology); + if (err) + return EXIT_FAILURE; + + + /* find the first thread */ + typev[0] = HWLOC_OBJ_PACKAGE; idxv[0] = 0; + typev[1] = HWLOC_OBJ_L2CACHE; idxv[1] = 0; + typev[2] = HWLOC_OBJ_CORE; idxv[2] = 0; + typev[3] = HWLOC_OBJ_PU; idxv[3] = 0; + obj = hwloc_get_obj_below_array_by_type(topology, 4, typev, idxv); + assert(obj == hwloc_get_obj_by_depth(topology, 4, 0)); + + /* find the last core */ + typev[0] = HWLOC_OBJ_PACKAGE; idxv[0] = 2; + typev[1] = HWLOC_OBJ_L2CACHE; idxv[1] = 2; + typev[2] = HWLOC_OBJ_CORE; idxv[2] = 2; + obj = hwloc_get_obj_below_array_by_type(topology, 3, typev, idxv); + assert(obj == hwloc_get_obj_by_depth(topology, 3, 26)); + + /* misc tests */ + + typev[0] = HWLOC_OBJ_L2CACHE; idxv[0] = 2; + obj = hwloc_get_obj_below_array_by_type(topology, 1, typev, idxv); + assert(obj == hwloc_get_obj_by_depth(topology, 2, 2)); + + typev[0] = HWLOC_OBJ_PACKAGE; idxv[0] = 2; + typev[1] = HWLOC_OBJ_CORE; idxv[1] = 2; + obj = hwloc_get_obj_below_array_by_type(topology, 2, typev, idxv); + assert(obj == hwloc_get_obj_by_depth(topology, 3, 20)); + /* check that hwloc_get_obj_below_by_type works as well */ + obj = hwloc_get_obj_below_by_type(topology, typev[0], idxv[0], typev[1], idxv[1]); + assert(obj == hwloc_get_obj_by_depth(topology, 3, 20)); + + typev[0] = HWLOC_OBJ_L2CACHE; idxv[0] = 1; + typev[1] = HWLOC_OBJ_PU; idxv[1] = 1; + obj = hwloc_get_obj_below_array_by_type(topology, 2, typev, idxv); + assert(obj == hwloc_get_obj_by_depth(topology, 4, 10)); + /* check that hwloc_get_obj_below_by_type works as well */ + obj = hwloc_get_obj_below_by_type(topology, typev[0], idxv[0], typev[1], idxv[1]); + assert(obj == hwloc_get_obj_by_depth(topology, 4, 10)); + + + hwloc_topology_destroy (topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_covering_cpuset.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_covering_cpuset.c new file mode 100644 index 0000000000..27ce81ea65 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_covering_cpuset.c @@ -0,0 +1,68 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* check hwloc_get_obj_covering_cpuset() */ + +#define SYNTHETIC_TOPOLOGY_DESCRIPTION "6 5 4 3 2" /* 736bits wide topology */ + +#define GIVEN_CPUSET_STRING "0x0,0x0fff,0xf0000000" +#define EXPECTED_CPUSET_STRING "0x0000ffff,0xff000000" +#define GIVEN_LARGESPLIT_CPUSET_STRING "0x8000,,,,,,,,,,,,,,,,,,,,,,0x1" /* first and last(735th) bit set */ +#define GIVEN_TOOLARGE_CPUSET_STRING "0x10000,,,,,,,,,,,,,,,,,,,,,,0x0" /* 736th bit is too large for the 720-wide topology */ + +int main(void) +{ + hwloc_topology_t topology; + char *string = NULL; + hwloc_obj_t obj; + hwloc_bitmap_t set; + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION); + hwloc_topology_load(topology); + set = hwloc_bitmap_alloc(); + + hwloc_bitmap_sscanf(set, GIVEN_CPUSET_STRING); + obj = hwloc_get_obj_covering_cpuset(topology, set); + + assert(obj); + fprintf(stderr, "found covering object type %s covering cpuset %s\n", + hwloc_obj_type_string(obj->type), GIVEN_CPUSET_STRING); + assert(hwloc_bitmap_isincluded(set, obj->cpuset)); + + hwloc_bitmap_asprintf(&string, obj->cpuset); + fprintf(stderr, "covering object of %s is %s, expected %s\n", + GIVEN_CPUSET_STRING, string, EXPECTED_CPUSET_STRING); + if (strcmp(EXPECTED_CPUSET_STRING, string)) + assert(0); + free(string); + + hwloc_bitmap_sscanf(set, GIVEN_LARGESPLIT_CPUSET_STRING); + obj = hwloc_get_obj_covering_cpuset(topology, set); + assert(obj == hwloc_get_root_obj(topology)); + fprintf(stderr, "found system as covering object of first+last cpus cpuset %s\n", + GIVEN_LARGESPLIT_CPUSET_STRING); + + hwloc_bitmap_sscanf(set, GIVEN_TOOLARGE_CPUSET_STRING); + obj = hwloc_get_obj_covering_cpuset(topology, set); + assert(!obj); + fprintf(stderr, "found no covering object for too-large cpuset %s\n", + GIVEN_TOOLARGE_CPUSET_STRING); + + hwloc_bitmap_free(set); + hwloc_topology_destroy(topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_inside_cpuset.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_inside_cpuset.c new file mode 100644 index 0000000000..9c6c976341 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_inside_cpuset.c @@ -0,0 +1,98 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2018 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* + * check hwloc_get_obj_inside_cpuset*() + */ + +int +main (void) +{ + hwloc_topology_t topology; + hwloc_obj_t obj, root; + int err, idx; + + err = hwloc_topology_init (&topology); + if (err) + return EXIT_FAILURE; + + hwloc_topology_set_synthetic (topology, "node:2 pack:3 l2:4 core:5 6"); + + err = hwloc_topology_load (topology); + if (err) + return EXIT_FAILURE; + + /* first system object is the top-level object of the topology */ + root = hwloc_get_root_obj (topology); + obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_MACHINE, 0); + assert(obj == hwloc_get_root_obj(topology)); + + /* first next-object object is the top-level object of the topology */ + obj = hwloc_get_next_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_MACHINE, NULL); + assert(obj == hwloc_get_root_obj(topology)); + + /* check last PU */ + obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_PU, 2*3*4*5*6-1); + assert(obj == hwloc_get_obj_by_depth(topology, 5, 2*3*4*5*6-1)); + /* there is no next PU after the last one */ + obj = hwloc_get_next_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_PU, obj); + assert(!obj); + + + /* check there are 20 cores inside first package */ + root = hwloc_get_obj_by_depth(topology, 2, 0); + assert(root); + assert(hwloc_get_nbobjs_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_CORE) == 20); + + /* check there are 12 caches inside last node */ + root = hwloc_get_obj_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE, 1); + assert(root); + assert(hwloc_get_nbobjs_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_L2CACHE) == 12); + + + /* check first PU of second package */ + root = hwloc_get_obj_by_depth(topology, 2, 1); + assert(root); + obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_PU, 0); + assert(obj == hwloc_get_obj_by_depth(topology, 5, 4*5*6)); + idx = hwloc_get_obj_index_inside_cpuset(topology, root->cpuset, obj); + assert(idx == 0); + + /* check third core of third package */ + root = hwloc_get_obj_by_depth(topology, 2, 2); + assert(root); + obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_CORE, 2); + assert(obj == hwloc_get_obj_by_depth(topology, 4, 2*4*5+2)); + idx = hwloc_get_obj_index_inside_cpuset(topology, root->cpuset, obj); + assert(idx == 2); + + /* check first package of second node */ + root = hwloc_get_obj_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE, 1); + assert(root); + obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_PACKAGE, 0); + assert(obj == hwloc_get_obj_by_depth(topology, 2, 3)); + idx = hwloc_get_obj_index_inside_cpuset(topology, root->cpuset, obj); + assert(idx == 0); + + /* there is no node inside packages */ + root = hwloc_get_obj_by_depth(topology, 2, 0); + assert(root); + obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_NUMANODE, 0); + assert(!obj); + + hwloc_topology_destroy (topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_with_same_locality.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_with_same_locality.c new file mode 100644 index 0000000000..d296e06ddf --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_obj_with_same_locality.c @@ -0,0 +1,145 @@ +/* + * Copyright © 2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include +#include + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif + +int main(void) +{ + const char *top_srcdir; + char xmlpath[PATH_MAX]; + hwloc_topology_t topology; + hwloc_obj_t tmp, obj, sda, cuda0, card0; + int err; + + top_srcdir = getenv("HWLOC_TOP_SRCDIR"); + if (!top_srcdir) { + fprintf(stderr, "HWLOC_TOP_SRCDIR missing in the environment.\n"); + exit(EXIT_FAILURE); + } + + snprintf(xmlpath, sizeof(xmlpath), "%s/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.xml", top_srcdir); + err = hwloc_topology_init(&topology); + assert(!err); + err = hwloc_topology_set_xml(topology, xmlpath); + assert(!err); + err = hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + assert(!err); + err = hwloc_topology_load(topology); + assert(!err); + + /* normal checks */ + + /* no NUMA or package == root */ + tmp = hwloc_get_root_obj(topology); + assert(tmp); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_PACKAGE, NULL, NULL, 0); + assert(!obj); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_NUMANODE, NULL, NULL, 0); + assert(!obj); + + /* NUMA == Package == L3 != PU */ + tmp = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 0); + assert(tmp); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_PACKAGE, NULL, NULL, 0); + assert(obj); + assert(obj == tmp); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_L3CACHE, NULL, NULL, 0); + assert(obj); + assert(obj->parent == tmp); + assert(obj->type == HWLOC_OBJ_L3CACHE); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_NUMANODE, NULL, NULL, 0); + assert(obj); + assert(obj->parent == tmp); + assert(obj->type == HWLOC_OBJ_NUMANODE); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_PU, NULL, NULL, 0); + assert(!obj); + + /* Core == L1 == L2 != Package */ + tmp = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, 15); + assert(tmp); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_PACKAGE, NULL, NULL, 0); + assert(!obj); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_L1CACHE, NULL, NULL, 0); + assert(obj); + assert(obj == tmp->parent); + assert(obj->type == HWLOC_OBJ_L1CACHE); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_L2CACHE, NULL, NULL, 0); + assert(obj); + assert(obj == tmp->parent->parent); + assert(obj->type == HWLOC_OBJ_L2CACHE); + + /* I/O checks */ + + /* get pointers to some I/O objects */ + obj = hwloc_get_pcidev_by_busid(topology, 0, 0, 0x1f, 2); + assert(obj); + sda = obj->io_first_child; + assert(sda); + assert(!strcmp(sda->name, "sda")); + + obj = hwloc_get_pcidev_by_busid(topology, 0, 0x84, 0, 0); + assert(obj); + cuda0 = obj->io_first_child; + assert(cuda0); + assert(!strcmp(cuda0->name, "cuda0")); + card0 = cuda0->next_sibling; + assert(card0); + assert(!strcmp(card0->name, "card0")); + + /* invalid flags */ + obj = hwloc_get_obj_with_same_locality(topology, sda, HWLOC_OBJ_PCI_DEVICE, NULL, NULL, 1); + assert(!obj); + /* invalid subtype */ + obj = hwloc_get_obj_with_same_locality(topology, sda, HWLOC_OBJ_PCI_DEVICE, "foo", NULL, 0); + assert(!obj); + /* invalid name */ + obj = hwloc_get_obj_with_same_locality(topology, sda, HWLOC_OBJ_PCI_DEVICE, NULL, "bar", 0); + assert(!obj); + + /* get sda PCI parent */ + obj = hwloc_get_obj_with_same_locality(topology, sda, HWLOC_OBJ_PCI_DEVICE, NULL, NULL, 0); + assert(obj == sda->parent); + /* get sda from itself */ + obj = hwloc_get_obj_with_same_locality(topology, sda, HWLOC_OBJ_OS_DEVICE, NULL, NULL, 0); + assert(obj == sda); + /* get sda from PCI */ + obj = hwloc_get_obj_with_same_locality(topology, sda->parent, HWLOC_OBJ_OS_DEVICE, NULL, NULL, 0); + assert(obj == sda); + /* get PCI from PCI */ + obj = hwloc_get_obj_with_same_locality(topology, sda->parent, HWLOC_OBJ_PCI_DEVICE, NULL, NULL, 0); + assert(obj == sda->parent); + + /* get cuda0 from card0 */ + obj = hwloc_get_obj_with_same_locality(topology, card0, HWLOC_OBJ_OS_DEVICE, "CUDA", NULL, 0); + assert(obj == cuda0); + obj = hwloc_get_obj_with_same_locality(topology, card0, HWLOC_OBJ_OS_DEVICE, NULL, "cuda", 0); + assert(obj == cuda0); + /* get card0 from cuda parent */ + obj = hwloc_get_obj_with_same_locality(topology, cuda0->parent, HWLOC_OBJ_OS_DEVICE, NULL, "card", 0); + assert(obj == card0); + + /* invalid normal to I/O */ + tmp = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 0); + assert(tmp); + obj = hwloc_get_obj_with_same_locality(topology, tmp, HWLOC_OBJ_PCI_DEVICE, NULL, NULL, 0); + assert(!obj); + /* invalid I/O to normal */ + obj = hwloc_get_obj_with_same_locality(topology, cuda0->parent, HWLOC_OBJ_PACKAGE, NULL, NULL, 0); + assert(!obj); + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_shared_cache_covering_obj.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_shared_cache_covering_obj.c new file mode 100644 index 0000000000..912eed8242 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_get_shared_cache_covering_obj.c @@ -0,0 +1,78 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* check hwloc_get_shared_cache_covering_obj() */ + +#define SYNTHETIC_TOPOLOGY_DESCRIPTION_SHARED "numa:1 group:6 pack:5 l2:4 core:3 pu:2" /* 736bits wide topology */ +#define SYNTHETIC_TOPOLOGY_DESCRIPTION_NONSHARED "numa:1 group:6 pack:5 l2:4 core:1 pu:2" /* 736bits wide topology */ + +int main(void) +{ + hwloc_topology_t topology; + hwloc_obj_t obj, cache; + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION_SHARED); + hwloc_topology_load(topology); + + /* check the cache above a given cpu */ +#define CPUINDEX 180 + obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX); + assert(obj); + cache = hwloc_get_shared_cache_covering_obj(topology, obj); + assert(cache); + assert(hwloc_obj_type_is_dcache(cache->type)); + assert(cache->logical_index == CPUINDEX/2/3); + assert(hwloc_obj_is_in_subtree(topology, obj, cache)); + + /* check no shared cache above the L2 cache */ + obj = hwloc_get_obj_by_depth(topology, 3, 0); + assert(obj); + cache = hwloc_get_shared_cache_covering_obj(topology, obj); + assert(!cache); + + /* check no shared cache above the node */ + obj = hwloc_get_obj_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE, 0); + assert(obj); + cache = hwloc_get_shared_cache_covering_obj(topology, obj); + assert(!cache); + + hwloc_topology_destroy(topology); + + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION_NONSHARED); + hwloc_topology_load(topology); + + /* check the cache above a given cpu */ +#define CPUINDEX 180 + obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX); + assert(obj); + cache = hwloc_get_shared_cache_covering_obj(topology, obj); + assert(cache); + assert(hwloc_obj_type_is_dcache(cache->type)); + assert(cache->logical_index == CPUINDEX/2/1); + assert(hwloc_obj_is_in_subtree(topology, obj, cache)); + + /* check no shared-cache above the core */ + obj = hwloc_get_obj_by_depth(topology, 4, CPUINDEX/2); + assert(obj); + cache = hwloc_get_shared_cache_covering_obj(topology, obj); + assert(!cache); + + hwloc_topology_destroy(topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_groups.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_groups.c new file mode 100644 index 0000000000..9a64d4a41c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_groups.c @@ -0,0 +1,521 @@ +/* + * Copyright © 2011-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include +#include + +int main(void) +{ + hwloc_topology_t topology; + hwloc_obj_t obj, group, saved, res, root; + hwloc_obj_t objs[32]; + hwloc_uint64_t values[32*32]; + hwloc_distances_add_handle_t handle; + int depth; + hwloc_obj_type_t type; + unsigned width; + unsigned i, j; + int err; + + /* testing of adding specific groups */ + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "pack:4 [numa] pu:4"); + hwloc_topology_load(topology); + root = hwloc_get_root_obj(topology); + assert(hwloc_topology_get_depth(topology) == 3); + /* insert a group identical to root, will be merged */ + group = hwloc_topology_alloc_group_object(topology); + assert(group); + group->cpuset = hwloc_bitmap_dup(root->cpuset); + res = hwloc_topology_insert_group_object(topology, group); + assert(res); + assert(res == root); + assert(hwloc_topology_get_depth(topology) == 3); + /* insert a group identical to a package, will be merged */ + group = hwloc_topology_alloc_group_object(topology); + assert(group); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 1); + assert(obj); + group->cpuset = hwloc_bitmap_dup(obj->cpuset); + res = hwloc_topology_insert_group_object(topology, group); + assert(res); + assert(res == obj); + assert(hwloc_topology_get_depth(topology) == 3); + /* insert a invalid group of two PUs in different packages, will fail */ + group = hwloc_topology_alloc_group_object(topology); + assert(group); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 1); + assert(obj); + group->cpuset = hwloc_bitmap_dup(obj->cpuset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 12); + assert(obj); + hwloc_bitmap_or(group->cpuset, group->cpuset, obj->cpuset); + res = hwloc_topology_insert_group_object(topology, group); + assert(!res); + assert(hwloc_topology_get_depth(topology) == 3); + /* insert a group of two packages with high kind (so that it gets merged later) */ + group = hwloc_topology_alloc_group_object(topology); + assert(group); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 1); + assert(obj); + group->cpuset = hwloc_bitmap_dup(obj->cpuset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 2); + assert(obj); + hwloc_bitmap_or(group->cpuset, group->cpuset, obj->cpuset); + group->attr->group.kind = (unsigned)-1; + res = hwloc_topology_insert_group_object(topology, group); + assert(res == group); + saved = group; + assert(hwloc_topology_get_depth(topology) == 4); + /* insert same group with lower kind to replace the previous one */ + group = hwloc_topology_alloc_group_object(topology); + assert(group); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 1); + assert(obj); + group->cpuset = hwloc_bitmap_dup(obj->cpuset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 2); + assert(obj); + hwloc_bitmap_or(group->cpuset, group->cpuset, obj->cpuset); + group->attr->group.kind = 0; + res = hwloc_topology_insert_group_object(topology, group); + assert(res == saved); /* the core should move the contents of this new group into a previous one */ + assert(res != group); + assert(hwloc_topology_get_depth(topology) == 4); + /* insert yet another same group with higher kind, it will be dropped in favor of the previous-previous one */ + group = hwloc_topology_alloc_group_object(topology); + assert(group); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 1); + assert(obj); + group->cpuset = hwloc_bitmap_dup(obj->cpuset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 2); + assert(obj); + hwloc_bitmap_or(group->cpuset, group->cpuset, obj->cpuset); + group->attr->group.kind = (unsigned)-1; + res = hwloc_topology_insert_group_object(topology, group); + assert(res == saved); + assert(res != group); + assert(hwloc_topology_get_depth(topology) == 4); + /* insert a conflict group of two packages by nodeset, will fail */ + group = hwloc_topology_alloc_group_object(topology); + assert(group); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 0); + assert(obj); + group->nodeset = hwloc_bitmap_dup(obj->nodeset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 2); + assert(obj); + hwloc_bitmap_or(group->nodeset, group->nodeset, obj->nodeset); + res = hwloc_topology_insert_group_object(topology, group); + assert(!res); + /* insert a group of three packages by nodeset */ + group = hwloc_topology_alloc_group_object(topology); + assert(group); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 0); + assert(obj); + group->nodeset = hwloc_bitmap_dup(obj->nodeset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 1); + assert(obj); + hwloc_bitmap_or(group->nodeset, group->nodeset, obj->nodeset); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 2); + assert(obj); + hwloc_bitmap_or(group->nodeset, group->nodeset, obj->nodeset); + res = hwloc_topology_insert_group_object(topology, group); + assert(res == group); + assert(hwloc_topology_get_depth(topology) == 5); + + hwloc_topology_destroy(topology); + + /* intensive testing of two grouping cases (2+1 and 2+2+1) */ + + /* group 3 numa nodes as 1 group of 2 and 1 on the side */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:3 pu:1"); + hwloc_topology_load(topology); + /* 3 group at depth 1 */ + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_GROUP); + assert(depth == 1); + width = hwloc_get_nbobjs_by_depth(topology, 1); + assert(width == 3); + /* insert distances and groups */ + for(i=0; i<3; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, i); + values[0] = 1; values[1] = 4; values[2] = 4; + values[3] = 4; values[4] = 1; values[5] = 2; + values[6] = 4; values[7] = 2; values[8] = 1; + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 3, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + /* 1 groups at depth 1 and 2 */ + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_GROUP); + assert(depth == -2); + type = hwloc_get_depth_type(topology, 1); + assert(type == HWLOC_OBJ_GROUP); + width = hwloc_get_nbobjs_by_depth(topology, 1); + assert(width == 1); + type = hwloc_get_depth_type(topology, 2); + assert(type == HWLOC_OBJ_GROUP); + width = hwloc_get_nbobjs_by_depth(topology, 2); + assert(width == 3); + /* 3 nodes */ + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE); + assert(depth == HWLOC_TYPE_DEPTH_NUMANODE); + width = hwloc_get_nbobjs_by_depth(topology, depth); + assert(width == 3); + /* find the root obj */ + obj = hwloc_get_root_obj(topology); + assert(obj->arity == 2); + /* check its children */ + /* first child is a group with PU+NUMA children */ + assert(obj->children[0]->type == HWLOC_OBJ_GROUP); + assert(obj->children[0]->depth == 2); + assert(obj->children[0]->arity == 1); + assert(obj->children[0]->first_child->type == HWLOC_OBJ_PU); + assert(obj->children[0]->memory_arity == 1); + assert(obj->children[0]->memory_first_child->type == HWLOC_OBJ_NUMANODE); + /* second child is a group with two group children */ + assert(obj->children[1]->type == HWLOC_OBJ_GROUP); + assert(obj->children[1]->depth == 1); + assert(obj->children[1]->arity == 2); + assert(obj->children[1]->children[0]->type == HWLOC_OBJ_GROUP); + assert(obj->children[1]->children[1]->type == HWLOC_OBJ_GROUP); + assert(obj->children[1]->memory_arity == 0); + hwloc_topology_destroy(topology); + + /* group 5 packages as 2 group of 2 and 1 on the side, all of them below a common node object */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:1 pack:5 pu:1"); + hwloc_topology_load(topology); + for(i=0; i<5; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, i); + values[ 0] = 1; values[ 1] = 2; values[ 2] = 4; values[ 3] = 4; values[ 4] = 4; + values[ 5] = 2; values[ 6] = 1; values[ 7] = 4; values[ 8] = 4; values[ 9] = 4; + values[10] = 4; values[11] = 4; values[12] = 1; values[13] = 4; values[14] = 4; + values[15] = 4; values[16] = 4; values[17] = 4; values[18] = 1; values[19] = 2; + values[20] = 4; values[21] = 4; values[22] = 4; values[23] = 2; values[24] = 1; + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 5, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + /* 1 node */ + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE); + assert(depth == HWLOC_TYPE_DEPTH_NUMANODE); + width = hwloc_get_nbobjs_by_depth(topology, depth); + assert(width == 1); + /* 2 groups at depth 1 */ + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_GROUP); + assert(depth == 1); + width = hwloc_get_nbobjs_by_depth(topology, depth); + assert(width == 2); + /* 5 packages at depth 2 */ + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_PACKAGE); + assert(depth == 2); + width = hwloc_get_nbobjs_by_depth(topology, depth); + assert(width == 5); + /* check root */ + obj = hwloc_get_root_obj(topology); + assert(obj->arity == 3); + assert(obj->memory_arity == 1); + /* check root children */ + assert(obj->children[0]->type == HWLOC_OBJ_GROUP); + assert(obj->children[0]->depth == 1); + assert(obj->children[0]->arity == 2); + assert(obj->children[1]->type == HWLOC_OBJ_PACKAGE); + assert(obj->children[1]->depth == 2); + assert(obj->children[1]->arity == 1); + assert(obj->children[2]->type == HWLOC_OBJ_GROUP); + assert(obj->children[2]->depth == 1); + assert(obj->children[2]->arity == 2); + obj = obj->memory_first_child; + assert(obj->type == HWLOC_OBJ_NUMANODE); + assert(obj->arity == 0); + assert(obj->memory_arity == 0); + hwloc_topology_destroy(topology); + +/* testing of adding/replacing/removing distance matrices + and grouping with/without accuracy + */ + + /* grouping matrix 4*2*2 */ + for(i=0; i<16; i++) { + for(j=0; j<16; j++) + if (i==j) + values[i+16*j] = values[j+16*i] = 30; + else if (i/2==j/2) + values[i+16*j] = values[j+16*i] = 50; + else if (i/4==j/4) + values[i+16*j] = values[j+16*i] = 70; + else + values[i+16*j] = values[j+16*i] = 90; + } + + /* default 2*8*1 */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:2 core:8 pu:1"); + hwloc_topology_load(topology); + depth = hwloc_topology_get_depth(topology); + assert(depth == 4); + width = hwloc_get_nbobjs_by_depth(topology, 0); + assert(width == 1); + width = hwloc_get_nbobjs_by_depth(topology, 1); + assert(width == 2); + width = hwloc_get_nbobjs_by_depth(topology, 2); + assert(width == 16); + width = hwloc_get_nbobjs_by_depth(topology, 3); + assert(width == 16); + width = hwloc_get_nbobjs_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE); + assert(width == 2); + /* group 8cores as 2*2*2 */ + for(i=0; i<16; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 16, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 6); + width = hwloc_get_nbobjs_by_depth(topology, 0); + assert(width == 1); + width = hwloc_get_nbobjs_by_depth(topology, 1); + assert(width == 2); + width = hwloc_get_nbobjs_by_depth(topology, 2); + assert(width == 4); + width = hwloc_get_nbobjs_by_depth(topology, 3); + assert(width == 8); + width = hwloc_get_nbobjs_by_depth(topology, 4); + assert(width == 16); + width = hwloc_get_nbobjs_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE); + assert(width == 2); + hwloc_topology_destroy(topology); + + /* play with accuracy */ + values[0] = 29; /* diagonal, instead of 3 (0.0333% error) */ + values[1] = 51; values[16] = 52; /* smallest group, instead of 5 (0.02% error) */ + putenv((char *) "HWLOC_GROUPING_ACCURACY=0.1"); /* ok */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:2 core:8 pu:1"); + hwloc_topology_load(topology); + for(i=0; i<16; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 16, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP|HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 6); + hwloc_topology_destroy(topology); + + putenv((char *) "HWLOC_GROUPING_ACCURACY=try"); /* ok */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:2 core:8 pu:1"); + hwloc_topology_load(topology); + for(i=0; i<16; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 16, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP|HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 6); + hwloc_topology_destroy(topology); + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:2 core:8 pu:1"); + hwloc_topology_load(topology); + for(i=0; i<16; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 16, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP /* no inaccurate flag, cannot group */); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 4); + hwloc_topology_destroy(topology); + + putenv((char *) "HWLOC_GROUPING_ACCURACY=0.01"); /* too small, cannot group */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:2 core:8 pu:1"); + hwloc_topology_load(topology); + for(i=0; i<16; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 16, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP|HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 4); + hwloc_topology_destroy(topology); + + putenv((char *) "HWLOC_GROUPING_ACCURACY=0"); /* full accuracy, cannot group */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:2 core:8 pu:1"); + hwloc_topology_load(topology); + for(i=0; i<16; i++) + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 16, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP|HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 4); + hwloc_topology_destroy(topology); + + /* default 2*4*4 */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:2 core:4 pu:4"); + hwloc_topology_load(topology); + depth = hwloc_topology_get_depth(topology); + assert(depth == 4); + width = hwloc_get_nbobjs_by_depth(topology, 0); + assert(width == 1); + width = hwloc_get_nbobjs_by_depth(topology, 1); + assert(width == 2); + width = hwloc_get_nbobjs_by_depth(topology, 2); + assert(width == 8); + width = hwloc_get_nbobjs_by_depth(topology, 3); + assert(width == 32); + width = hwloc_get_nbobjs_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE); + assert(width == 2); + /* apply useless core distances */ + for(i=0; i<8; i++) { + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + for(j=0; j<8; j++) + if (i==j) + values[i+8*j] = values[j+8*i] = 1; + else if (i/4==j/4) + values[i+8*j] = values[j+8*i] = 4; + else + values[i+8*j] = values[j+8*i] = 8; + } + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 8, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 4); + /* group 4cores as 2*2 */ + for(i=0; i<8; i++) { + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + for(j=0; j<8; j++) + if (i==j) + values[i+8*j] = values[j+8*i] = 1; + else if (i/2==j/2) + values[i+8*j] = values[j+8*i] = 4; + else + values[i+8*j] = values[j+8*i] = 8; + } + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 8, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 5); + width = hwloc_get_nbobjs_by_depth(topology, 0); + assert(width == 1); + width = hwloc_get_nbobjs_by_depth(topology, 1); + assert(width == 2); + width = hwloc_get_nbobjs_by_depth(topology, 2); + assert(width == 4); + width = hwloc_get_nbobjs_by_depth(topology, 3); + assert(width == 8); + width = hwloc_get_nbobjs_by_depth(topology, 4); + assert(width == 32); + width = hwloc_get_nbobjs_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE); + assert(width == 2); + /* group 4PUs as 2*2 */ + for(i=0; i<32; i++) { + objs[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, i); + for(j=0; j<32; j++) + if (i==j) + values[i+32*j] = values[j+32*i] = 1; + else if (i/2==j/2) + values[i+32*j] = values[j+32*i] = 4; + else + values[i+32*j] = values[j+32*i] = 8; + } + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 32, objs, values, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + depth = hwloc_topology_get_depth(topology); + assert(depth == 6); + width = hwloc_get_nbobjs_by_depth(topology, 0); + assert(width == 1); + width = hwloc_get_nbobjs_by_depth(topology, 1); + assert(width == 2); + width = hwloc_get_nbobjs_by_depth(topology, 2); + assert(width == 4); + width = hwloc_get_nbobjs_by_depth(topology, 3); + assert(width == 8); + width = hwloc_get_nbobjs_by_depth(topology, 4); + assert(width == 16); + width = hwloc_get_nbobjs_by_depth(topology, 5); + assert(width == 32); + width = hwloc_get_nbobjs_by_depth(topology, HWLOC_TYPE_DEPTH_NUMANODE); + assert(width == 2); + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_insert_misc.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_insert_misc.c new file mode 100644 index 0000000000..1a02379c41 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_insert_misc.c @@ -0,0 +1,168 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +int main(void) +{ + hwloc_topology_t topology, topology2, reload; + hwloc_obj_t obj; + hwloc_bitmap_t set; + char *buf1, *buf2; + int buflen1, buflen2, err; + hwloc_topology_diff_t diff; + + /* build and annotate a topology */ + err = hwloc_topology_init(&topology); + assert(!err); + err = hwloc_topology_set_synthetic(topology, "NUMA:2 pack:2 core:2 pu:2"); + assert(!err); + err = hwloc_topology_set_type_filter(topology, HWLOC_OBJ_MISC, HWLOC_TYPE_FILTER_KEEP_ALL); + assert(!err); + err = hwloc_topology_load(topology); + assert(!err); + hwloc_topology_check(topology); + /* Misc below root */ + obj = hwloc_get_root_obj(topology); + obj = hwloc_topology_insert_misc_object(topology, obj, "below root"); + assert(obj); + /* Misc below previous Misc */ + obj = hwloc_topology_insert_misc_object(topology, obj, "below Misc below root"); + assert(obj); + /* Misc below last NUMA node */ + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1); + assert(obj); + obj = hwloc_topology_insert_misc_object(topology, obj, "below last NUMA"); + assert(obj); + /* Misc below last Package */ + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 3); + assert(obj); + obj = hwloc_topology_insert_misc_object(topology, obj, "below last Package"); + assert(obj); + /* Misc below last Core */ + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, 7); + assert(obj); + obj = hwloc_topology_insert_misc_object(topology, obj, "below last Core"); + assert(obj); + /* Misc below first PU */ + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0); + assert(obj); + obj = hwloc_topology_insert_misc_object(topology, obj, "below first PU"); + assert(obj); + hwloc_topology_check(topology); + /* restrict it to only 3 Packages node without dropping Misc objects */ + set = hwloc_bitmap_dup(hwloc_topology_get_topology_cpuset(topology)); + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 3); + assert(obj); + hwloc_bitmap_andnot(set, set, obj->cpuset); + err = hwloc_topology_restrict(topology, set, HWLOC_RESTRICT_FLAG_ADAPT_MISC); + assert(!err); + hwloc_topology_check(topology); + + /* check that export/reimport/export gives same export buffer */ + err = hwloc_topology_export_xmlbuffer(topology, &buf1, &buflen1, 0); + assert(!err); + err = hwloc_topology_init(&reload); + assert(!err); + err = hwloc_topology_set_xmlbuffer(reload, buf1, buflen1); + assert(!err); + err = hwloc_topology_set_type_filter(reload, HWLOC_OBJ_MISC, HWLOC_TYPE_FILTER_KEEP_ALL); + assert(!err); + err = hwloc_topology_set_flags(reload, HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT); + assert(!err); + err = hwloc_topology_load(reload); + assert(!err); + hwloc_topology_check(reload); + err = hwloc_topology_export_xmlbuffer(reload, &buf2, &buflen2, 0); + assert(!err); + assert(buflen1 == buflen2); + err = strcmp(buf1, buf2); + assert(!err); + hwloc_free_xmlbuffer(reload, buf2); + hwloc_topology_destroy(reload); + + /* build another restricted topology manually without Packages */ + err = hwloc_topology_init(&topology2); + assert(!err); + err = hwloc_topology_set_synthetic(topology2, "NUMA:2 pack:2 core:2 pu:2"); /* must keep the same topology string to avoid SyntheticDescription info difference */ + assert(!err); + err = hwloc_topology_set_type_filter(topology2, HWLOC_OBJ_PACKAGE, HWLOC_TYPE_FILTER_KEEP_NONE); + assert(!err); + err = hwloc_topology_set_type_filter(topology2, HWLOC_OBJ_MISC, HWLOC_TYPE_FILTER_KEEP_ALL); + assert(!err); + err = hwloc_topology_load(topology2); + assert(!err); + hwloc_topology_check(topology2); + err = hwloc_topology_restrict(topology2, set, HWLOC_RESTRICT_FLAG_ADAPT_MISC); + assert(!err); + + /* reimport without Packages and Misc, and check they are equal */ + err = hwloc_topology_init(&reload); + assert(!err); + err = hwloc_topology_set_xmlbuffer(reload, buf1, buflen1); + assert(!err); + err = hwloc_topology_set_type_filter(reload, HWLOC_OBJ_PACKAGE, HWLOC_TYPE_FILTER_KEEP_NONE); + assert(!err); + err = hwloc_topology_load(reload); + assert(!err); + err = hwloc_topology_diff_build(reload, topology2, 0, &diff); + assert(!err); + assert(!diff); + hwloc_topology_destroy(reload); + + /* re-add some Misc now */ + /* Misc below root */ + obj = hwloc_get_root_obj(topology2); + obj = hwloc_topology_insert_misc_object(topology2, obj, "below root"); + assert(obj); + /* Misc below previous Misc */ + obj = hwloc_topology_insert_misc_object(topology2, obj, "below Misc below root"); + assert(obj); + /* Misc below last NUMA node */ + obj = hwloc_get_obj_by_type(topology2, HWLOC_OBJ_NUMANODE, 1); + assert(obj); + hwloc_topology_insert_misc_object(topology2, obj, "below last NUMA"); + /* Misc below parent Group of this NUMA node (where Package and Core Misc will end up) */ + assert(obj->parent->type == HWLOC_OBJ_GROUP); + hwloc_topology_insert_misc_object(topology2, obj->parent, "below last Package"); + hwloc_topology_insert_misc_object(topology2, obj->parent, "below last Core"); + assert(obj); + /* Misc below first PU */ + obj = hwloc_get_obj_by_type(topology2, HWLOC_OBJ_PU, 0); + assert(obj); + obj = hwloc_topology_insert_misc_object(topology2, obj, "below first PU"); + assert(obj); + + /* reimport without Packages and check they are equal*/ + err = hwloc_topology_init(&reload); + assert(!err); + err = hwloc_topology_set_xmlbuffer(reload, buf1, buflen1); + assert(!err); + err = hwloc_topology_set_type_filter(reload, HWLOC_OBJ_PACKAGE, HWLOC_TYPE_FILTER_KEEP_NONE); + assert(!err); + err = hwloc_topology_set_type_filter(reload, HWLOC_OBJ_MISC, HWLOC_TYPE_FILTER_KEEP_ALL); + assert(!err); + err = hwloc_topology_load(reload); + assert(!err); + err = hwloc_topology_diff_build(reload, topology2, 0, &diff); + assert(!err); + assert(!diff); + hwloc_topology_destroy(reload); + + hwloc_free_xmlbuffer(topology, buf1); + hwloc_topology_destroy(topology); + hwloc_topology_destroy(topology2); + hwloc_bitmap_free(set); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_iodevs.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_iodevs.c new file mode 100644 index 0000000000..a51082fd0d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_iodevs.c @@ -0,0 +1,72 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2019 Inria. All rights reserved. + * Copyright © Université Bordeaux + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include + +/* check misc i/O device related stuff */ + +int main(void) +{ + hwloc_topology_t topology; + hwloc_obj_t obj; + + hwloc_topology_init(&topology); + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_load(topology); + + printf("Found %d bridges\n", hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_BRIDGE)); + obj = NULL; + while ((obj = hwloc_get_next_bridge(topology, obj)) != NULL) { + assert(obj->type == HWLOC_OBJ_BRIDGE); + /* only host->pci and pci->pci bridge supported so far */ + if (obj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_HOST) { + assert(obj->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI); + printf(" Found host->PCI bridge for domain %04x bus %02x-%02x\n", + obj->attr->bridge.downstream.pci.domain, + obj->attr->bridge.downstream.pci.secondary_bus, + obj->attr->bridge.downstream.pci.subordinate_bus); + } else { + assert(obj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI); + assert(obj->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI); + printf(" Found PCI->PCI bridge [%04x:%04x] for domain %04x bus %02x-%02x\n", + obj->attr->bridge.upstream.pci.vendor_id, + obj->attr->bridge.upstream.pci.device_id, + obj->attr->bridge.downstream.pci.domain, + obj->attr->bridge.downstream.pci.secondary_bus, + obj->attr->bridge.downstream.pci.subordinate_bus); + } + } + + printf("Found %d PCI devices\n", hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PCI_DEVICE)); + obj = NULL; + while ((obj = hwloc_get_next_pcidev(topology, obj)) != NULL) { + assert(obj->type == HWLOC_OBJ_PCI_DEVICE); + printf(" Found PCI device class %04x vendor %04x model %04x\n", + obj->attr->pcidev.class_id, obj->attr->pcidev.vendor_id, obj->attr->pcidev.device_id); + } + + printf("Found %d OS devices\n", hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_OS_DEVICE)); + obj = NULL; + while ((obj = hwloc_get_next_osdev(topology, obj)) != NULL) { + assert(obj->type == HWLOC_OBJ_OS_DEVICE); + printf(" Found OS device %s subtype %d\n", obj->name, (int) obj->attr->osdev.type); + } + + assert(HWLOC_TYPE_DEPTH_BRIDGE == hwloc_get_type_depth(topology, HWLOC_OBJ_BRIDGE)); + assert(HWLOC_TYPE_DEPTH_PCI_DEVICE == hwloc_get_type_depth(topology, HWLOC_OBJ_PCI_DEVICE)); + assert(HWLOC_TYPE_DEPTH_OS_DEVICE == hwloc_get_type_depth(topology, HWLOC_OBJ_OS_DEVICE)); + assert(hwloc_compare_types(HWLOC_OBJ_BRIDGE, HWLOC_OBJ_PCI_DEVICE) < 0); + assert(hwloc_compare_types(HWLOC_OBJ_BRIDGE, HWLOC_OBJ_OS_DEVICE) < 0); + assert(hwloc_compare_types(HWLOC_OBJ_PCI_DEVICE, HWLOC_OBJ_OS_DEVICE) < 0); + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_is_thissystem.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_is_thissystem.c new file mode 100644 index 0000000000..4927198550 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_is_thissystem.c @@ -0,0 +1,74 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2010 inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include +#include + +/* Check the is_thissystem flag behavior */ + +static void result(const char *msg, int err) +{ + const char *errmsg = strerror(errno); + if (err) + printf("%-30s: FAILED (%d, %s)\n", msg, errno, errmsg); + else + printf("%-30s: OK\n", msg); +} + +int main(void) +{ + hwloc_topology_t topology; + hwloc_bitmap_t cpuset; + int err; + + /* check the OS topology */ + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + assert(hwloc_topology_is_thissystem(topology)); + + cpuset = hwloc_bitmap_dup(hwloc_topology_get_complete_cpuset(topology)); + result("Binding with OS backend", hwloc_set_cpubind(topology, cpuset, 0)); + + hwloc_topology_destroy(topology); + + /* We're assume there is a real processor numbered 0 */ + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set(cpuset, 0); + + /* check a synthetic topology */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "1"); + hwloc_topology_load(topology); + assert(!hwloc_topology_is_thissystem(topology)); + + err = hwloc_set_cpubind(topology, cpuset, 0); + result("Binding with synthetic backend", err); + assert(!err); + + hwloc_topology_destroy(topology); + + /* check a synthetic topology but assuming it's the system topology */ + hwloc_topology_init(&topology); + hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM); + hwloc_topology_set_synthetic(topology, "1"); + hwloc_topology_load(topology); + assert(hwloc_topology_is_thissystem(topology)); + + result("Binding with synthetic backend faking is_thissystem", hwloc_set_cpubind(topology, cpuset, 0)); + + hwloc_topology_destroy(topology); + + hwloc_bitmap_free(cpuset); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_list_components.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_list_components.c new file mode 100644 index 0000000000..6cf34db329 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_list_components.c @@ -0,0 +1,20 @@ +/* + * Copyright © 2012-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include + +int main(void) +{ + hwloc_topology_t topology; + + putenv((char *) "HWLOC_COMPONENTS_VERBOSE=1"); + + hwloc_topology_init(&topology); + /* no load, to avoid spurious "enable" messages */ + hwloc_topology_destroy(topology); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_obj_infos.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_obj_infos.c new file mode 100644 index 0000000000..49be15cc36 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_obj_infos.c @@ -0,0 +1,43 @@ +/* + * Copyright © 2011 inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include + +/* check obj infos */ + +#define NAME1 "foobar" +#define VALUE1 "myvalue" +#define NAME2 "foobaz" +#define VALUE2 "myothervalue" + +int main(void) +{ + hwloc_topology_t topology; + hwloc_obj_t obj; + + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + + obj = hwloc_get_root_obj(topology); + + if (hwloc_obj_get_info_by_name(obj, NAME1) + || hwloc_obj_get_info_by_name(obj, NAME2)) + return 0; + + hwloc_obj_add_info(obj, NAME1, VALUE1); + assert(!hwloc_obj_get_info_by_name(obj, NAME2)); + hwloc_obj_add_info(obj, NAME2, VALUE2); + + if (strcmp(hwloc_obj_get_info_by_name(obj, NAME1), VALUE1)) + assert(0); + if (strcmp(hwloc_obj_get_info_by_name(obj, NAME2), VALUE2)) + assert(0); + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_object_userdata.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_object_userdata.c new file mode 100644 index 0000000000..494ed2ce7f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_object_userdata.c @@ -0,0 +1,183 @@ +/* + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include +#include + +/* check that object userdata is properly initialized */ + +#define RANDOMSTRINGLENGTH 128 +#define RANDOMSTRINGSHORTTESTS 5 +#define RANDOMSTRINGLONGTESTS 9 +static char *randomstring; + +static void check(hwloc_topology_t topology) +{ + int depth, i; + unsigned j; + + depth = hwloc_topology_get_depth(topology); + for(i=0; iuserdata == NULL); + } + } +} + +static void export_cb(void *reserved, hwloc_topology_t topo, hwloc_obj_t obj) +{ + char tmp[32]; + int err; + unsigned i; + + sprintf(tmp, "%016llx", (unsigned long long) (uintptr_t) obj->userdata); + err = hwloc_export_obj_userdata(reserved, topo, obj, "MyName", tmp, 16); + assert(err >= 0); + + err = hwloc_export_obj_userdata(reserved, topo, obj, NULL, "", 0); + assert(err >= 0); + + err = hwloc_export_obj_userdata_base64(reserved, topo, obj, NULL, "", 0); + assert(err >= 0); + + for(i=0; i= 0); + } + for(i=0; i= 0); + } +} + +static void import_cb(hwloc_topology_t topo __hwloc_attribute_unused, hwloc_obj_t obj, const char *name, const void *buffer, size_t length) +{ + int err; + char tmp[17]; + uint64_t val; + + if (!name) { + assert(!*(char*)buffer); + + } else if (!strcmp("MyName", name)) { + assert(length == 16); + memcpy(tmp, buffer, 16); + tmp[16] = '\0'; + + val = strtoull(buffer, NULL, 0); + + switch (val) { + case 0x1: + assert(obj->type == HWLOC_OBJ_MACHINE); + obj->userdata = (void *)(uintptr_t) 0x4; + break; + case 0x2: + assert(obj->type == HWLOC_OBJ_L2CACHE); + obj->userdata = (void *)(uintptr_t) 0x5; + break; + case 0x3: + assert(obj->type == HWLOC_OBJ_PU); + obj->userdata = (void *)(uintptr_t) 0x6; + break; + default: + assert(0); + } + + } else if (!strncmp("EncodedShort", name, 12)) { + unsigned i = atoi(name+12); + assert(i <= RANDOMSTRINGSHORTTESTS-1); + assert(i == (unsigned) length); + err = memcmp(buffer, randomstring+i, length); + assert(!err); + + } else if (!strncmp("EncodedLong", name, 11)) { + unsigned i = atoi(name+11); + assert(i <= RANDOMSTRINGLONGTESTS-1); + assert(RANDOMSTRINGLENGTH-i == (unsigned) length); + err = memcmp(buffer, randomstring+(i+1)/2, length); + assert(!err); + + } else + assert(0); +} + +int main(void) +{ + hwloc_topology_t topology, reimport; + hwloc_obj_t obj1, obj2, obj3; + char *xmlbuf; + int xmlbuflen; + + randomstring = malloc(RANDOMSTRINGLENGTH); + /* keep it uninitialized, we want binary data */ + + /* check the real topology */ + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + check(topology); + assert(hwloc_topology_get_userdata(topology) == NULL); + hwloc_topology_destroy(topology); + + /* check a synthetic topology */ + hwloc_topology_init(&topology); + hwloc_topology_set_userdata(topology, (void *)(uintptr_t)0x987654); + hwloc_topology_set_synthetic(topology, "6 5 4 3 2"); + hwloc_topology_load(topology); + check(topology); + + /* now place some userdata and see if importing/exporting works well */ + obj1 = hwloc_get_root_obj(topology); + assert(obj1); + obj1->userdata = (void *)(uintptr_t) 0x1; + obj2 = hwloc_get_obj_by_depth(topology, 3, 13); + assert(obj2); + obj2->userdata = (void *)(uintptr_t) 0x2; + obj3 = hwloc_get_obj_by_depth(topology, 5, 2*3*4*5*6-1); + assert(obj3); + obj3->userdata = (void *)(uintptr_t) 0x3; + + /* export/import without callback, we get nothing */ + hwloc_topology_export_xmlbuffer(topology, &xmlbuf, &xmlbuflen, 0); + + hwloc_topology_init(&reimport); + hwloc_topology_set_xmlbuffer(reimport, xmlbuf, xmlbuflen); + hwloc_topology_load(reimport); + check(reimport); /* there should be no userdata */ + hwloc_topology_destroy(reimport); + + /* export/import with callback, we should get three userdata */ + hwloc_topology_set_userdata_export_callback(topology, export_cb); + hwloc_topology_export_xmlbuffer(topology, &xmlbuf, &xmlbuflen, 0); + + hwloc_topology_init(&reimport); + hwloc_topology_set_userdata_import_callback(reimport, import_cb); + hwloc_topology_set_xmlbuffer(reimport, xmlbuf, xmlbuflen); + hwloc_topology_load(reimport); + obj1 = hwloc_get_root_obj(reimport); + assert(obj1); + assert(obj1->userdata == (void *)(uintptr_t) 0x4); + obj2 = hwloc_get_obj_by_depth(reimport, 3, 13); + assert(obj2); + assert(obj2->userdata == (void *)(uintptr_t) 0x5); + obj3 = hwloc_get_obj_by_depth(reimport, 5, 2*3*4*5*6-1); + assert(obj3); + assert(obj3->userdata == (void *)(uintptr_t) 0x6); + hwloc_topology_destroy(reimport); + + assert(hwloc_topology_get_userdata(topology) == (void *)(uintptr_t)0x987654); + hwloc_topology_destroy(topology); + + free(randomstring); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_pci_backend.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_pci_backend.c new file mode 100644 index 0000000000..ac2f382e44 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_pci_backend.c @@ -0,0 +1,85 @@ +/* + * Copyright © 2011-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include + +/* check whether the PCI backend behaves as expected wrt to thissystem, XML, flags, ... */ + +static int get_nb_pcidev(int iolevel, int thissystem, + const char *xmlbuf, int xmlbuflen) +{ + int nb; + hwloc_topology_t topology; + enum hwloc_type_filter_e filter; + if (iolevel == 0) + filter = HWLOC_TYPE_FILTER_KEEP_NONE; + else if (iolevel == 1) + filter = HWLOC_TYPE_FILTER_KEEP_IMPORTANT; + else + filter = HWLOC_TYPE_FILTER_KEEP_ALL; + + if (thissystem) + putenv((char *) "HWLOC_THISSYSTEM=1"); + else + putenv((char *) "HWLOC_THISSYSTEM=0"); + hwloc_topology_init(&topology); + hwloc_topology_set_io_types_filter(topology, filter); + if (xmlbuf) + hwloc_topology_set_xmlbuffer(topology, xmlbuf, xmlbuflen); + hwloc_topology_load(topology); + + nb = hwloc_get_nbobjs_by_depth(topology, HWLOC_TYPE_DEPTH_PCI_DEVICE); + + hwloc_topology_destroy(topology); + + return nb; +} + +int main(void) +{ + hwloc_topology_t topology; + char *xmlbuf; + int xmlbuflen; + int nb, nbnormal, nbwhole; + + hwloc_topology_init(&topology); + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_load(topology); + if (hwloc_topology_export_xmlbuffer(topology, &xmlbuf, &xmlbuflen, 0) < 0) + printf("XML buffer export failed (%s), ignoring\n", strerror(errno)); + + /* with HWLOC_THISSYSTEM=1 */ + nb = get_nb_pcidev(0, 1, NULL, 0); + assert(!nb); + nbnormal = get_nb_pcidev(1, 1, NULL, 0); + assert(nbnormal >= 0); /* may get more objects */ + nbwhole = get_nb_pcidev(2, 1, NULL, 0); + assert(nbwhole >= nbnormal); /* will get at least as much objects */ + + /* XML with with HWLOC_THISSYSTEM=1, should get as many object as a native load */ + nb = get_nb_pcidev(0, 1, xmlbuf, xmlbuflen); + assert(!nb); + nb = get_nb_pcidev(1, 1, xmlbuf, xmlbuflen); + assert(nb == nbnormal); + nb = get_nb_pcidev(2, 1, xmlbuf, xmlbuflen); + assert(nb == nbwhole); + + /* XML with with HWLOC_THISSYSTEM=0, should get as many object as a native load */ + nb = get_nb_pcidev(0, 0, xmlbuf, xmlbuflen); + assert(!nb); + nb = get_nb_pcidev(1, 0, xmlbuf, xmlbuflen); + assert(nb == nbnormal); + nb = get_nb_pcidev(2, 0, xmlbuf, xmlbuflen); + assert(nb == nbwhole); + + hwloc_free_xmlbuffer(topology, xmlbuf); + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_synthetic.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_synthetic.c new file mode 100644 index 0000000000..4b3614b3a4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_synthetic.c @@ -0,0 +1,181 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2018 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +/* check that object userdata is properly initialized */ + +static void check_level(hwloc_topology_t topology, unsigned depth, unsigned width, unsigned arity) +{ + unsigned j; + assert(hwloc_get_nbobjs_by_depth(topology, depth) == width); + for(j=0; jarity == arity); + } +} + +int main(void) +{ + hwloc_topology_t topology; + unsigned depth; + char buffer[1024]; + int err; + + /* check a synthetic topology */ + hwloc_topology_init(&topology); + err = hwloc_topology_set_synthetic(topology, "pack:2 numa:3 l2:4 core:5 pu:6"); + assert(!err); + hwloc_topology_load(topology); + + assert(hwloc_get_memory_parents_depth(topology) == 2); + + /* internal checks */ + + hwloc_topology_check(topology); + + /* local checks */ + depth = hwloc_topology_get_depth(topology); + assert(depth == 6); + + check_level(topology, 0, 1, 2); + check_level(topology, 1, 2, 3); + check_level(topology, 2, 6, 4); + check_level(topology, 3, 24, 5); + check_level(topology, 4, 120, 6); + check_level(topology, 5, 720, 0); + check_level(topology, HWLOC_TYPE_DEPTH_NUMANODE, 6, 0); + + err = hwloc_topology_export_synthetic(topology, buffer, sizeof(buffer), 0); + assert(err == 83); + err = strcmp("Package:2 Group:3 [NUMANode(memory=1073741824)] L2Cache:4(size=4194304) Core:5 PU:6", buffer); + assert(!err); + + assert(hwloc_get_memory_parents_depth(topology) == 2); + + err = hwloc_topology_export_synthetic(topology, buffer, sizeof(buffer), HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES|HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS|HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1); + assert(err == 47); + err = strcmp("Socket:2 Group:3 NUMANode:1 Cache:4 Core:5 PU:6", buffer); + assert(!err); + + hwloc_topology_destroy(topology); + + + + hwloc_topology_init(&topology); + err = hwloc_topology_set_type_filter(topology, HWLOC_OBJ_L1ICACHE, HWLOC_TYPE_FILTER_KEEP_ALL); + err = hwloc_topology_set_synthetic(topology, "pack:2(indexes=3,5) numa:2(memory=256GB indexes=pack) l3u:1(size=20mb) l2:2 l1i:1(size=16kB) l1dcache:2 core:1 pu:2(indexes=l2)"); + assert(!err); + hwloc_topology_load(topology); + + assert(hwloc_get_memory_parents_depth(topology) == 2); + + err = hwloc_topology_export_synthetic(topology, buffer, sizeof(buffer), 0); + assert(err == 181); + err = strcmp("Package:2 L3Cache:2(size=20971520) [NUMANode(memory=274877906944 indexes=2*2:1*2)] L2Cache:2(size=4194304) L1iCache:1(size=16384) L1dCache:2(size=32768) Core:1 PU:2(indexes=4*8:1*4)", buffer); + assert(!err); + + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PACKAGE, 1)->os_index == 5); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)->os_index == 2); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 12)->os_index == 3); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 13)->os_index == 11); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 14)->os_index == 19); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 15)->os_index == 27); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 16)->os_index == 4); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 17)->os_index == 12); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 18)->os_index == 20); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 19)->os_index == 28); + + hwloc_topology_destroy(topology); + + + + + hwloc_topology_init(&topology); + err = hwloc_topology_set_synthetic(topology, "pack:2 core:2 pu:2(indexes=0,4,2,6,1,5,3,7)"); + assert(!err); + hwloc_topology_load(topology); + + assert(hwloc_get_memory_parents_depth(topology) == 0); + + err = hwloc_topology_export_synthetic(topology, buffer, sizeof(buffer), 0); + assert(err == 72); + err = strcmp("[NUMANode(memory=1073741824)] Package:2 Core:2 PU:2(indexes=4*2:2*2:1*2)", buffer); + assert(!err); + + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0)->os_index == 0); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 1)->os_index == 4); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 2)->os_index == 2); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 3)->os_index == 6); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 4)->os_index == 1); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 5)->os_index == 5); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 6)->os_index == 3); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 7)->os_index == 7); + + hwloc_topology_destroy(topology); + + + + + hwloc_topology_init(&topology); + err = hwloc_topology_set_synthetic(topology, "pack:2 numa:2 core:1 pu:2(indexes=0,4,2,6,1,3,5,7)"); + assert(!err); + hwloc_topology_load(topology); + + assert(hwloc_get_memory_parents_depth(topology) == 2); + + err = hwloc_topology_export_synthetic(topology, buffer, sizeof(buffer), 0); + assert(err == 76); + err = strcmp("Package:2 Core:2 [NUMANode(memory=1073741824)] PU:2(indexes=0,4,2,6,1,3,5,7)", buffer); + assert(!err); + + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0)->os_index == 0); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 1)->os_index == 4); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 2)->os_index == 2); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 3)->os_index == 6); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 4)->os_index == 1); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 5)->os_index == 3); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 6)->os_index == 5); + assert(hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 7)->os_index == 7); + + hwloc_topology_destroy(topology); + + + + + hwloc_topology_init(&topology); + err = hwloc_topology_set_synthetic(topology, "pack:2 [numa(memory=1GB)] [numa(memory=1MB)] core:2 [numa(indexes=8,7,5,6,4,3,1,2)] pu:4"); + assert(!err); + hwloc_topology_load(topology); + + assert(hwloc_get_memory_parents_depth(topology) == HWLOC_TYPE_DEPTH_MULTIPLE); + + err = hwloc_topology_export_synthetic(topology, buffer, sizeof(buffer), 0); + assert(err == 114); + err = strcmp("Package:2 [NUMANode(memory=1073741824)] [NUMANode(memory=1048576)] Core:2 [NUMANode(indexes=8,7,5,6,4,3,1,2)] PU:4", buffer); + assert(!err); + + err = hwloc_topology_export_synthetic(topology, buffer, sizeof(buffer), HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1); + assert(err == -1); + assert(errno == EINVAL); + + err = hwloc_topology_export_synthetic(topology, buffer, sizeof(buffer), HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_IGNORE_MEMORY); + assert(err == 21); + err = strcmp("Package:2 Core:2 PU:4", buffer); + assert(!err); + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_abi.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_abi.c new file mode 100644 index 0000000000..b96c4038ad --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_abi.c @@ -0,0 +1,177 @@ +/* + * Copyright © 2017-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" +#include "private/debug.h" /* HWLOC_BUILD_ASSERT */ +#include "private/private.h" /* for struct topology fields */ + +#include +#include +#include +#include +#include + +int main(void) +{ + hwloc_topology_t topo, dup; + int err; + + printf("loading and checking...\n"); + err = hwloc_topology_init(&topo); + assert(!err); + err = hwloc_topology_load(topo); + assert(!err); + err = hwloc_topology_abi_check(topo); + assert(!err); + + printf("dupping and checking\n"); + err = hwloc_topology_dup(&dup, topo); + assert(!err); + err = hwloc_topology_abi_check(dup); + assert(!err); + hwloc_topology_destroy(dup); + +#if (defined HWLOC_LINUX_SYS) && (defined HWLOC_X86_64_ARCH) + if (!getenv("HWLOC_IGNORE_TOPOLOGY_ABI")) { + size_t size, offset __hwloc_attribute_unused; + printf("checking offsets and sizes in struct hwloc_topology for topology ABI 0x%x...\n", (unsigned) HWLOC_TOPOLOGY_ABI); + + /******************************************************************* + * WARNING: if anything breaks below, the topology ABI has changed. + * HWLOC_TOPOLOGY_ABI must be bumped when updating these checks. + *******************************************************************/ + + HWLOC_BUILD_ASSERT(HWLOC_OBJ_TYPE_MAX == 20); + HWLOC_BUILD_ASSERT(HWLOC_NR_SLEVELS == 6); + + offset = offsetof(struct hwloc_topology, topology_abi); + assert(offset == 0); + + offset = offsetof(struct hwloc_topology, adopted_shmem_addr); + assert(offset == 232); + + offset = offsetof(struct hwloc_topology, binding_hooks); + assert(offset == 456); + size = sizeof(struct hwloc_binding_hooks); + assert(size == 192); + + offset = offsetof(struct hwloc_topology, support); + assert(offset == 648); + + offset = offsetof(struct hwloc_topology, first_dist); + assert(offset == 704); + size = sizeof(struct hwloc_internal_distances_s); + assert(size == 88); + + offset = offsetof(struct hwloc_topology, memattrs); + assert(offset == 728); + size = sizeof(struct hwloc_internal_memattr_s); + assert(size == 32); + size = sizeof(struct hwloc_internal_memattr_target_s); + assert(size == 48); + size = sizeof(struct hwloc_internal_memattr_initiator_s); + assert(size == 40); + size = sizeof(struct hwloc_internal_location_s); + assert(size == 32); + + offset = offsetof(struct hwloc_topology, cpukinds); + assert(offset == 744); + size = sizeof(struct hwloc_internal_cpukind_s); + assert(size == 40); + + offset = offsetof(struct hwloc_topology, grouping_next_subkind); + assert(offset == 784); + + /* fields after this one aren't needed after discovery */ + + /* check bitmap ABI too, but those fields are private to bitmap.c */ + printf("checking bitmaps for topology ABI 0x%x...\n", (unsigned) HWLOC_TOPOLOGY_ABI); + { + hwloc_bitmap_t set = hwloc_bitmap_alloc(); + unsigned *ulongs_count = (unsigned*) (((char*)set) ); + unsigned *ulongs_allocated = (unsigned*) (((char*)set)+4 ); + unsigned long **ulongs = (unsigned long**) (((char*)set)+8 ); + int *infinite = (int*) (((char*)set)+16); + + /* empty set */ + assert(*ulongs_count >= 1); + assert(*ulongs_allocated >= *ulongs_count); + assert((*ulongs)[0] == 0UL); + assert(!*infinite); + + /* 260th bit */ + hwloc_bitmap_set(set, 260); + assert(*ulongs_count >= 5); + assert(*ulongs_allocated >= *ulongs_count); + assert((*ulongs)[0] == 0UL); + assert((*ulongs)[1] == 0UL); + assert((*ulongs)[2] == 0UL); + assert((*ulongs)[3] == 0UL); + assert((*ulongs)[4] == 0x10UL); + assert(!*infinite); + + /* full set */ + hwloc_bitmap_fill(set); + assert((*ulongs)[0] == ~0UL); + assert(*infinite); + + hwloc_bitmap_free(set); + } + + /******************************************************************* + * WARNING: if anything breaks above, the topology ABI has changed. + * HWLOC_TOPOLOGY_ABI must be bumped when updating these checks. + *******************************************************************/ + + printf("checking sizes of public objects...\n"); + + /* if these first lines break, you may be breaking the main library ABI. + * adding fields may be OK. changing/removing likely isn't. + */ + size = sizeof(struct hwloc_obj); + assert(size == 248); + size = sizeof(union hwloc_obj_attr_u); +#ifdef HWLOC_HAVE_32BITS_PCI_DOMAIN + assert(size == 48); +#else + assert(size == 40); +#endif + size = sizeof(struct hwloc_info_s); + assert(size == 16); + + size = sizeof(struct hwloc_topology_support); + assert(size == 32); + size = sizeof(struct hwloc_topology_discovery_support); + assert(size == 6); + size = sizeof(struct hwloc_topology_cpubind_support); + assert(size == 11); + size = sizeof(struct hwloc_topology_membind_support); + assert(size == 15); + size = sizeof(struct hwloc_topology_misc_support); + assert(size == 1); + + size = sizeof(struct hwloc_distances_s); + assert(size == 32); + + size = sizeof(struct hwloc_location); + assert(size == 16); + + size = sizeof(union hwloc_topology_diff_u); + assert(size == 56); + size = sizeof(union hwloc_topology_diff_obj_attr_u); + assert(size == 32); + + } else { + /* if building with non-binary-compatible compiler flags */ + printf("checking topology ABI disabled by environment variable HWLOC_IGNORE_TOPOLOGY_ABI\n"); + } +#else /* !LINUX || !X86_64 */ + printf("checking topology ABI disabled, not running on Linux/x86_64\n"); +#endif /* !LINUX || !X86_64 */ + + hwloc_topology_destroy(topo); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_allow.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_allow.c new file mode 100644 index 0000000000..6cfe2d94bf --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_allow.c @@ -0,0 +1,181 @@ +/* + * Copyright © 2018 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include +#include + +int main(void) +{ + hwloc_topology_t topology; + hwloc_const_bitmap_t set; + hwloc_bitmap_t new = hwloc_bitmap_alloc(); + int err; + + /* allow without HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED should fail */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "pack:5 node:3 core:2 pu:4"); + hwloc_topology_load(topology); + err = hwloc_topology_allow(topology, NULL, NULL, HWLOC_ALLOW_FLAG_ALL); + assert(err == -1 && errno == EINVAL); + hwloc_topology_destroy(topology); + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "pack:5 node:3 core:2 pu:4"); + hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED); + hwloc_topology_load(topology); + + set = hwloc_topology_get_allowed_cpuset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 120); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == 119); + + set = hwloc_topology_get_allowed_nodeset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 15); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == 14); + + /* HWLOC_ALLOW_FLAG_ALL doesn't want any set */ + err = hwloc_topology_allow(topology, new, new, HWLOC_ALLOW_FLAG_ALL); + assert(err == -1 && errno == EINVAL); + /* HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS doesn't want any set */ + err = hwloc_topology_allow(topology, new, new, HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS); + assert(err == -1 && errno == EINVAL); + /* HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS doesn't work without thissystem */ + assert(!hwloc_topology_is_thissystem(topology)); + err = hwloc_topology_allow(topology, NULL, NULL, HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS); + assert(err == -1 && errno == EINVAL); + /* HWLOC_ALLOW_FLAG_CUSTOM doesn't like empty sets */ + hwloc_bitmap_zero(new); + err = hwloc_topology_allow(topology, new, new, HWLOC_ALLOW_FLAG_CUSTOM); + assert(err == -1 && errno == EINVAL); + err = hwloc_topology_allow(topology, NULL, new, HWLOC_ALLOW_FLAG_CUSTOM); + assert(err == -1 && errno == EINVAL); + err = hwloc_topology_allow(topology, new, NULL, HWLOC_ALLOW_FLAG_CUSTOM); + assert(err == -1 && errno == EINVAL); + /* HWLOC_ALLOW_FLAG_CUSTOM doesn't like sets outside of the machine */ + hwloc_bitmap_set_range(new, 500, 600); + err = hwloc_topology_allow(topology, new, new, HWLOC_ALLOW_FLAG_CUSTOM); + assert(err == -1 && errno == EINVAL); + err = hwloc_topology_allow(topology, NULL, new, HWLOC_ALLOW_FLAG_CUSTOM); + assert(err == -1 && errno == EINVAL); + err = hwloc_topology_allow(topology, new, NULL, HWLOC_ALLOW_FLAG_CUSTOM); + assert(err == -1 && errno == EINVAL); + + /* allow a single bit */ + hwloc_bitmap_only(new, 10); + err = hwloc_topology_allow(topology, new, new, HWLOC_ALLOW_FLAG_CUSTOM); + assert(!err); + set = hwloc_topology_get_allowed_cpuset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 1); + assert(hwloc_bitmap_first(set) == 10); + assert(hwloc_bitmap_last(set) == 10); + set = hwloc_topology_get_allowed_nodeset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 1); + assert(hwloc_bitmap_first(set) == 10); + assert(hwloc_bitmap_last(set) == 10); + + /* restrict the topology outside of the allowed set */ + hwloc_bitmap_zero(new); + hwloc_bitmap_set_range(new, 40, 60); + err = hwloc_topology_restrict(topology, new, 0); + assert(err == -1 && errno == EINVAL); + hwloc_bitmap_zero(new); + hwloc_bitmap_set_range(new, 12, 14); + err = hwloc_topology_restrict(topology, new, HWLOC_RESTRICT_FLAG_BYNODESET); + assert(err == -1 && errno == EINVAL); + + /* allow all NUMAs and more PUs */ + hwloc_bitmap_zero(new); + hwloc_bitmap_set_range(new, 0, 20); + err = hwloc_topology_allow(topology, new, new, HWLOC_ALLOW_FLAG_CUSTOM); + assert(!err); + set = hwloc_topology_get_allowed_cpuset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 21); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == 20); + set = hwloc_topology_get_allowed_nodeset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 15); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == 14); + + /* allow less NUMAs */ + hwloc_bitmap_zero(new); + hwloc_bitmap_set_range(new, 6, 10); + err = hwloc_topology_allow(topology, NULL, new, HWLOC_ALLOW_FLAG_CUSTOM); + assert(!err); + set = hwloc_topology_get_allowed_cpuset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 21); + assert(hwloc_bitmap_first(set) == 0); + assert(hwloc_bitmap_last(set) == 20); + set = hwloc_topology_get_allowed_nodeset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 5); + assert(hwloc_bitmap_first(set) == 6); + assert(hwloc_bitmap_last(set) == 10); + + /* restrict to PUs 10-30 and all NUMAs */ + hwloc_bitmap_zero(new); + hwloc_bitmap_set_range(new, 10, 30); + err = hwloc_topology_restrict(topology, new, 0); + assert(!err); + set = hwloc_topology_get_allowed_cpuset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 11); + assert(hwloc_bitmap_first(set) == 10); + assert(hwloc_bitmap_last(set) == 20); + set = hwloc_topology_get_allowed_nodeset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 5); + assert(hwloc_bitmap_first(set) == 6); + assert(hwloc_bitmap_last(set) == 10); + + /* restrict to NUMA 4-7 */ + hwloc_bitmap_zero(new); + hwloc_bitmap_set_range(new, 4, 7); + err = hwloc_topology_restrict(topology, new, HWLOC_RESTRICT_FLAG_BYNODESET); + assert(!err); + set = hwloc_topology_get_allowed_cpuset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 11); + assert(hwloc_bitmap_first(set) == 10); + assert(hwloc_bitmap_last(set) == 20); + set = hwloc_topology_get_allowed_nodeset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 2); + assert(hwloc_bitmap_first(set) == 6); + assert(hwloc_bitmap_last(set) == 7); + + /* allow all */ + hwloc_bitmap_fill(new); + err = hwloc_topology_allow(topology, new, new, HWLOC_ALLOW_FLAG_CUSTOM); + assert(!err); + set = hwloc_topology_get_allowed_cpuset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 21); + assert(hwloc_bitmap_first(set) == 10); + assert(hwloc_bitmap_last(set) == 30); + set = hwloc_topology_get_allowed_nodeset(topology); + assert(set); + assert(hwloc_bitmap_weight(set) == 4); + assert(hwloc_bitmap_first(set) == 4); + assert(hwloc_bitmap_last(set) == 7); + + hwloc_topology_destroy(topology); + hwloc_bitmap_free(new); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_diff.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_diff.c new file mode 100644 index 0000000000..25956771f6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_diff.c @@ -0,0 +1,189 @@ +/* + * Copyright © 2013-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include + +int main(void) +{ + hwloc_topology_t topo1, topo2, topo3; + hwloc_topology_diff_t diff, diff2, tmpdiff; + hwloc_obj_t obj; + char *xmlbuffer; + int xmlbuflen; + char *refname; + int err; + + putenv((char *) "HWLOC_LIBXML_CLEANUP=1"); + + hwloc_topology_init(&topo1); + hwloc_topology_load(topo1); + printf("duplicate topo1 into topo2\n"); + hwloc_topology_dup(&topo2, topo1); + + printf("check that topo2 is identical\n"); + err = hwloc_topology_diff_build(topo1, topo2, 0, &diff); + assert(err == 0); + assert(!diff); + + printf("add a new info to topo2 root\n"); + obj = hwloc_get_root_obj(topo1); + hwloc_obj_add_info(obj, "Foo", "Bar"); + printf("check that topo2 cannot be diff'ed from topo1\n"); + err = hwloc_topology_diff_build(topo1, topo2, 0, &diff); + assert(err == 1); + assert(diff->generic.type == HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX); + assert(diff->generic.next == NULL); + assert(diff->too_complex.obj_depth == 0); + assert(diff->too_complex.obj_index == 0); + hwloc_topology_diff_destroy(diff); + + printf("add a similar info to topo1, and change memory size of first NUMA\n"); + obj = hwloc_get_root_obj(topo2); + hwloc_obj_add_info(obj, "Foo", "Bar2"); + + obj = hwloc_get_obj_by_type(topo2, HWLOC_OBJ_NUMANODE, 0); + obj->attr->numanode.local_memory += 32*4096; + + printf("check that topo2 is now properly diff'ed\n"); + err = hwloc_topology_diff_build(topo1, topo2, 0, &diff); + assert(err == 0); + tmpdiff = diff; + assert(tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR); + assert(tmpdiff->obj_attr.obj_depth == 0); + assert(tmpdiff->obj_attr.obj_index == 0); + assert(tmpdiff->obj_attr.diff.generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO); + err = strcmp(tmpdiff->obj_attr.diff.string.name, "Foo"); + assert(!err); + err = strcmp(tmpdiff->obj_attr.diff.string.oldvalue, "Bar"); + assert(!err); + err = strcmp(tmpdiff->obj_attr.diff.string.newvalue, "Bar2"); + assert(!err); + tmpdiff = tmpdiff->generic.next; + assert(tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR); + assert(tmpdiff->obj_attr.obj_depth == hwloc_get_type_depth(topo1, HWLOC_OBJ_NUMANODE)); + assert(tmpdiff->obj_attr.obj_index == 0); + assert(tmpdiff->obj_attr.diff.generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE); + assert(tmpdiff->obj_attr.diff.uint64.newvalue - tmpdiff->obj_attr.diff.uint64.oldvalue == 32*4096); + assert(tmpdiff->generic.next == NULL); + + printf("apply the diff to new duplicate topo3 of topo1\n"); + hwloc_topology_dup(&topo3, topo1); + err = hwloc_topology_diff_apply(topo3, diff, 0); + assert(!err); + printf("check that topo2 and topo3 are identical\n"); + err = hwloc_topology_diff_build(topo2, topo3, 0, &diff2); + assert(err == 0); + assert(!diff2); + + printf("apply the reverse diff to topo2\n"); + err = hwloc_topology_diff_apply(topo2, diff, HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE); + assert(!err); + printf("check that topo2 and topo1 are identical\n"); + err = hwloc_topology_diff_build(topo1, topo2, 0, &diff2); + assert(err == 0); + assert(!diff2); + + printf("exporting and reloading diff from XML buffer without refname\n"); + err = hwloc_topology_diff_export_xmlbuffer(diff, NULL, &xmlbuffer, &xmlbuflen); + assert(!err); + hwloc_topology_diff_destroy(diff); + err = hwloc_topology_diff_load_xmlbuffer(xmlbuffer, xmlbuflen, &diff2, &refname); + assert(!err); + assert(diff2); + assert(!refname); + assert(!err); + hwloc_free_xmlbuffer(topo1, xmlbuffer); + + printf("exporting and reloading diff from XML buffer with refname\n"); + err = hwloc_topology_diff_export_xmlbuffer(diff2, "foobar", &xmlbuffer, &xmlbuflen); + assert(!err); + hwloc_topology_diff_destroy(diff2); + err = hwloc_topology_diff_load_xmlbuffer(xmlbuffer, xmlbuflen, &diff, &refname); + assert(!err); + assert(diff); + err = strcmp(refname, "foobar"); + assert(!err); + free(refname); + hwloc_free_xmlbuffer(topo1, xmlbuffer); + + tmpdiff = diff; + assert(tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR); + assert(tmpdiff->obj_attr.obj_depth == 0); + assert(tmpdiff->obj_attr.obj_index == 0); + assert(tmpdiff->obj_attr.diff.generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO); + err = strcmp(tmpdiff->obj_attr.diff.string.name, "Foo"); + assert(!err); + err = strcmp(tmpdiff->obj_attr.diff.string.oldvalue, "Bar"); + assert(!err); + err = strcmp(tmpdiff->obj_attr.diff.string.newvalue, "Bar2"); + assert(!err); + tmpdiff = tmpdiff->generic.next; + assert(tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR); + assert(tmpdiff->obj_attr.obj_depth == hwloc_get_type_depth(topo1, HWLOC_OBJ_NUMANODE)); + assert(tmpdiff->obj_attr.obj_index == 0); + assert(tmpdiff->obj_attr.diff.generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE); + assert(tmpdiff->obj_attr.diff.uint64.newvalue - tmpdiff->obj_attr.diff.uint64.oldvalue == 32*4096); + assert(tmpdiff->generic.next == NULL); + + printf("reapplying to topo2\n"); + err = hwloc_topology_diff_apply(topo2, diff, 0); + assert(!err); + printf("check that topo2 and topo3 are again identical\n"); + err = hwloc_topology_diff_build(topo2, topo3, 0, &diff2); + assert(err == 0); + assert(!diff2); + + hwloc_topology_diff_destroy(diff); + + printf("adding new key to the bottom of topo3 on first PU\n"); + obj = hwloc_get_obj_by_type(topo3, HWLOC_OBJ_PU, 0); + assert(obj); + hwloc_obj_add_info(obj, "Bar", "Baz3"); + + printf("check that diff fails at the 2nd or 3rd entry\n"); + err = hwloc_topology_diff_build(topo1, topo3, 0, &diff); + assert(err == 1); + assert(diff); + tmpdiff = diff; + assert(tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR); + tmpdiff = tmpdiff->generic.next; + if (tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX) { + /* normal case, PU appears before NUMA, we get ATTR(root)+TOO_COMPLEX(pu)+ATTR(numa) */ + tmpdiff = tmpdiff->generic.next; + assert(tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR); + assert(tmpdiff->generic.next == NULL); + } else if (tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_OBJ_ATTR) { + /* unusual case, PU appears after NUMA (first NUMA is CPUless), we get ATTR(root)+ATTR(numa)+TOO_COMPLEX(pu) */ + tmpdiff = tmpdiff->generic.next; + assert(tmpdiff->generic.type == HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX); + assert(tmpdiff->generic.next == NULL); + } else { + assert(0); + } + hwloc_topology_diff_destroy(diff); + + printf("adding similar key to topo1\n"); + obj = hwloc_get_obj_by_type(topo1, HWLOC_OBJ_PU, 0); + assert(obj); + hwloc_obj_add_info(obj, "Bar", "Baz1"); + printf("checking that topo3 diff fails to reverse apply to topo2\n"); + err = hwloc_topology_diff_build(topo1, topo3, 0, &diff); + assert(err == 0); + assert(diff); + err = hwloc_topology_diff_apply(topo2, diff, HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE); + assert(err == -2 || err == -3); + hwloc_topology_diff_destroy(diff); + + hwloc_topology_destroy(topo3); + hwloc_topology_destroy(topo2); + hwloc_topology_destroy(topo1); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_dup.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_dup.c new file mode 100644 index 0000000000..80ef9a902d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_dup.c @@ -0,0 +1,94 @@ +/* + * Copyright © 2011-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include +#include + +int main(void) +{ + static hwloc_topology_t oldtopology, topology; + hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); + struct hwloc_distances_s *distances; + hwloc_obj_t nodes[3], cores[6]; + hwloc_uint64_t node_distances[9], core_distances[36]; + hwloc_distances_add_handle_t handle; + unsigned i,j,nr; + int err; + + hwloc_topology_init(&oldtopology); + hwloc_topology_set_synthetic(oldtopology, "node:3 core:2 pu:4"); + hwloc_topology_load(oldtopology); + + for(i=0; i<3; i++) { + nodes[i] = hwloc_get_obj_by_type(oldtopology, HWLOC_OBJ_NUMANODE, i); + for(j=0; j<3; j++) + node_distances[i*3+j] = (i == j ? 10 : 20); + } + handle = hwloc_distances_add_create(oldtopology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(oldtopology, handle, 3, nodes, node_distances, 0); + assert(!err); + err = hwloc_distances_add_commit(oldtopology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + for(i=0; i<6; i++) { + cores[i] = hwloc_get_obj_by_type(oldtopology, HWLOC_OBJ_CORE, i); + for(j=0; j<6; j++) + core_distances[i*6+j] = (i == j ? 4 : 8); + } + handle = hwloc_distances_add_create(oldtopology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(oldtopology, handle, 6, cores, core_distances, 0); + assert(!err); + err = hwloc_distances_add_commit(oldtopology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + printf("duplicating\n"); + err = hwloc_topology_dup(&topology, oldtopology); + assert(!err); + printf("destroying the old topology\n"); + hwloc_topology_destroy(oldtopology); + + /* remove the entire third node */ + printf("removing one node\n"); + hwloc_bitmap_fill(cpuset); + hwloc_bitmap_clr_range(cpuset, 16, 23); + err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_REMOVE_CPULESS); + assert(!err); + printf("checking the result\n"); + assert(hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NUMANODE) == 2); + + nr = 1; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_NUMANODE, &nr, &distances, 0, 0); + assert(!err); + assert(nr == 1); + assert(distances->nbobjs == 2); + assert(distances->kind == (HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER)); + hwloc_distances_release(topology, distances); + + nr = 1; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_CORE, &nr, &distances, 0, 0); + assert(!err); + assert(nr == 1); + assert(distances->nbobjs == 4); + assert(distances->kind == (HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER)); + hwloc_distances_release(topology, distances); + + hwloc_topology_destroy(topology); + + hwloc_bitmap_free(cpuset); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_restrict.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_restrict.c new file mode 100644 index 0000000000..a9e8dfbba1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_topology_restrict.c @@ -0,0 +1,292 @@ +/* + * Copyright © 2011-2021 Inria. All rights reserved. + * Copyright © 2011 Université Bordeaux. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include +#include +#include +#include +#include + +static hwloc_topology_t topology; + +static void print_distances(const struct hwloc_distances_s *distances) +{ + unsigned nbobjs = distances->nbobjs; + unsigned i, j; + + printf(" "); + /* column header */ + for(j=0; jobjs[j]->os_index); + printf("\n"); + + /* each line */ + for(i=0; iobjs[i]->os_index); + /* each value */ + for(j=0; jvalues[i*nbobjs+j]); + printf("\n"); + } +} + +static void check(unsigned nbgroups, unsigned nbnodes, unsigned nbcores, unsigned nbpus) +{ + int depth; + unsigned nb; + unsigned long long total_memory; + + /* sanity checks */ + depth = hwloc_topology_get_depth(topology); + assert(depth == 3 + (nbgroups > 0)); + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE); + assert(depth == HWLOC_TYPE_DEPTH_NUMANODE); + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_GROUP); + assert(depth == ((nbgroups > 0) ? 1 : HWLOC_TYPE_DEPTH_UNKNOWN)); + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_CORE); + assert(depth == 1 + (nbgroups > 0)); + depth = hwloc_get_type_depth(topology, HWLOC_OBJ_PU); + assert(depth == 2 + (nbgroups > 0)); + + /* actual checks */ + nb = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NUMANODE); + assert(nb == nbnodes); + nb = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_GROUP); + assert(nb == nbgroups); + nb = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_CORE); + assert(nb == nbcores); + nb = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PU); + assert(nb == nbpus); + total_memory = hwloc_get_root_obj(topology)->total_memory; + assert(total_memory == nbnodes * 1024*1024*1024); /* synthetic topology puts 1GB per node */ +} + +static void check_distances(unsigned nbnodes, unsigned nbcores) +{ + struct hwloc_distances_s *distance; + unsigned nr; + int err; + + /* node distance */ + nr = 1; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_NUMANODE, &nr, &distance, 0, 0); + assert(!err); + if (nbnodes >= 2) { + assert(nr == 1); + assert(distance); + assert(distance->nbobjs == nbnodes); + print_distances(distance); + hwloc_distances_release(topology, distance); + } else { + assert(nr == 0); + } + + /* core distance */ + nr = 1; + err = hwloc_distances_get_by_type(topology, HWLOC_OBJ_CORE, &nr, &distance, 0, 0); + assert(!err); + if (nbcores >= 2) { + assert(nr == 1); + assert(distance); + assert(distance->nbobjs == nbcores); + print_distances(distance); + hwloc_distances_release(topology, distance); + } else { + assert(nr == 0); + } +} + +int main(void) +{ + hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); + hwloc_obj_t nodes[3], cores[6]; + hwloc_uint64_t node_distances[9], core_distances[36]; + hwloc_distances_add_handle_t handle; + hwloc_obj_t obj; + unsigned i,j; + int err; + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:3 core:2 pu:4"); + hwloc_topology_load(topology); + + for(i=0; i<3; i++) { + nodes[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, i); + for(j=0; j<3; j++) + node_distances[i*3+j] = (i == j ? 10 : 20); + } + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 3, nodes, node_distances, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + for(i=0; i<6; i++) { + cores[i] = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, i); + for(j=0; j<6; j++) + core_distances[i*6+j] = (i == j ? 4 : 8); + } + handle = hwloc_distances_add_create(topology, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(topology, handle, 6, cores, core_distances, 0); + assert(!err); + err = hwloc_distances_add_commit(topology, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + /* entire topology */ + printf("starting from full topology\n"); + check(3, 3, 6, 24); + check_distances(3, 6); + + /* restrict to nothing, impossible */ + printf("restricting to nothing, must fail\n"); + hwloc_bitmap_zero(cpuset); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(err < 0 && errno == EINVAL); + printf("restricting to unexisting PU:24, must fail\n"); + hwloc_bitmap_only(cpuset, 24); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(err < 0 && errno == EINVAL); + err = hwloc_topology_refresh(topology); + assert(!err); + check(3, 3, 6, 24); + check_distances(3, 6); + + /* restrict to everything, will do nothing */ + printf("restricting to everything, does nothing\n"); + hwloc_bitmap_fill(cpuset); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(!err); + check(3, 3, 6, 24); + check_distances(3, 6); + + /* remove a single pu (second PU of second core of second node) */ + printf("removing second PU of second core of second node\n"); + hwloc_bitmap_fill(cpuset); + hwloc_bitmap_clr(cpuset, 13); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(!err); + check(3, 3, 6, 23); + check_distances(3, 6); + + /* remove the entire second core of first node */ + printf("removing entire second core of first node\n"); + hwloc_bitmap_fill(cpuset); + hwloc_bitmap_clr_range(cpuset, 4, 7); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(!err); + check(3, 3, 5, 19); + check_distances(3, 5); + + /* remove the entire third node */ + printf("removing all PUs under third node, but keep that CPU-less node\n"); + hwloc_bitmap_fill(cpuset); + hwloc_bitmap_clr_range(cpuset, 16, 23); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(!err); + check(3, 3, 3, 11); + check_distances(3, 3); + + /* only keep three PUs (first and last of first core, and last of last core of second node) */ + printf("restricting to 3 PUs in 2 cores in 2 nodes, and remove the CPU-less node, and auto-merge groups\n"); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set(cpuset, 0); + hwloc_bitmap_set(cpuset, 3); + hwloc_bitmap_set(cpuset, 15); + err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_REMOVE_CPULESS); + assert(!err); + check(0, 2, 2, 3); + check_distances(2, 2); + + /* restrict to the third node, impossible */ + printf("restricting to only some already removed node, must fail\n"); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 16, 23); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(err == -1 && errno == EINVAL); + check(0, 2, 2, 3); + check_distances(2, 2); + + hwloc_topology_destroy(topology); + + /* check that restricting exactly on a Group object keeps things coherent */ + printf("restricting to a Group covering only the of the PU level\n"); + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "pu:4"); + hwloc_topology_load(topology); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 1, 2); + obj = hwloc_topology_alloc_group_object(topology); + obj->cpuset = hwloc_bitmap_dup(cpuset); + obj->name = strdup("toto"); + hwloc_topology_insert_group_object(topology, obj); + hwloc_topology_restrict(topology, cpuset, 0); + hwloc_topology_check(topology); + hwloc_topology_destroy(topology); + + /* check memory-based restricting */ + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:3 core:2 pu:4"); + hwloc_topology_load(topology); + printf("restricting bynodeset to two numa nodes\n"); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 1, 2); + err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_BYNODESET); + assert(!err); + hwloc_topology_check(topology); + check(3, 2, 6, 24); + printf("further restricting bynodeset to a single numa node\n"); + hwloc_bitmap_only(cpuset, 1); + err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_BYNODESET|HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS); + assert(!err); + hwloc_topology_check(topology); + check(0, 1, 2, 8); + printf("restricting with invalid flags\n"); + err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS); + assert(err == -1); + assert(errno == EINVAL); + err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_BYNODESET|HWLOC_RESTRICT_FLAG_REMOVE_CPULESS); + assert(err == -1); + assert(errno == EINVAL); + + hwloc_topology_destroy(topology); + + /* check that restricting PUs maintains ordering of normal children */ + printf("restricting so that PUs get reordered\n"); + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "node:1 core:2 pu:2(indexes=0,2,1,3)"); + hwloc_topology_load(topology); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 1, 2); + err = hwloc_topology_restrict(topology, cpuset, 0); + assert(!err); + hwloc_topology_destroy(topology); + + /* check that restricting NUMA nodes maintains ordering of normal children in remove-memless case */ + printf("restricting by nodeset so that remaining non-memless PUs get reordered\n"); + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, "pack:2 l3:2 numa:1 pu:1(indexes=0,2,1,3)"); + hwloc_topology_load(topology); + hwloc_bitmap_zero(cpuset); + hwloc_bitmap_set_range(cpuset, 1, 2); + err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_BYNODESET|HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS); + assert(!err); + hwloc_topology_destroy(topology); + + hwloc_bitmap_free(cpuset); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_type_depth.c b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_type_depth.c new file mode 100644 index 0000000000..8f90cdd673 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/hwloc_type_depth.c @@ -0,0 +1,95 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2019 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" +#include "private/misc.h" /* for HWLOC_OBJ_TYPE_NONE */ + +#include +#include + +/* check topo_get_type{,_or_above,_or_below}_depth() + * and hwloc_get_depth_type() + */ + +#define SYNTHETIC_TOPOLOGY_DESCRIPTION "group:2 group:2 core:3 l3:2 l1:2 2" + +int main(void) +{ + hwloc_topology_t topology; + int i; + + hwloc_topology_init(&topology); + hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION); + hwloc_topology_load(topology); + + assert(hwloc_topology_get_depth(topology) == 7); + + assert(hwloc_get_depth_type(topology, 0) == HWLOC_OBJ_MACHINE); + assert(hwloc_get_depth_type(topology, 1) == HWLOC_OBJ_GROUP); + assert(hwloc_get_depth_type(topology, 2) == HWLOC_OBJ_GROUP); + assert(hwloc_get_depth_type(topology, 3) == HWLOC_OBJ_CORE); + assert(hwloc_get_depth_type(topology, 4) == HWLOC_OBJ_L3CACHE); + assert(hwloc_get_depth_type(topology, 5) == HWLOC_OBJ_L1CACHE); + assert(hwloc_get_depth_type(topology, 6) == HWLOC_OBJ_PU); + + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_MACHINE) == 0); + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_CORE) == 3); + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_PU) == 6); + + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_PACKAGE) == HWLOC_TYPE_DEPTH_UNKNOWN); + assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_PACKAGE) == 2); + assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_PACKAGE) == 3); + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_GROUP) == HWLOC_TYPE_DEPTH_MULTIPLE); + assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_GROUP) == HWLOC_TYPE_DEPTH_MULTIPLE); + assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_GROUP) == HWLOC_TYPE_DEPTH_MULTIPLE); + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_L3CACHE) == 4); + + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_NUMANODE) == HWLOC_TYPE_DEPTH_NUMANODE); + assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_NUMANODE) == HWLOC_TYPE_DEPTH_NUMANODE); + assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_NUMANODE) == HWLOC_TYPE_DEPTH_NUMANODE); + + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_BRIDGE) == HWLOC_TYPE_DEPTH_BRIDGE); + assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_BRIDGE) == HWLOC_TYPE_DEPTH_BRIDGE); + assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_BRIDGE) == HWLOC_TYPE_DEPTH_BRIDGE); + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_PCI_DEVICE) == HWLOC_TYPE_DEPTH_PCI_DEVICE); + assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_PCI_DEVICE) == HWLOC_TYPE_DEPTH_PCI_DEVICE); + assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_PCI_DEVICE) == HWLOC_TYPE_DEPTH_PCI_DEVICE); + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_OS_DEVICE) == HWLOC_TYPE_DEPTH_OS_DEVICE); + assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_OS_DEVICE) == HWLOC_TYPE_DEPTH_OS_DEVICE); + assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_OS_DEVICE) == HWLOC_TYPE_DEPTH_OS_DEVICE); + + assert(hwloc_get_type_depth(topology, HWLOC_OBJ_MISC) == HWLOC_TYPE_DEPTH_MISC); + assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_MISC) == HWLOC_TYPE_DEPTH_MISC); + assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_MISC) == HWLOC_TYPE_DEPTH_MISC); + + assert(hwloc_get_depth_type(topology, HWLOC_TYPE_DEPTH_BRIDGE) == HWLOC_OBJ_BRIDGE); + assert(hwloc_get_depth_type(topology, HWLOC_TYPE_DEPTH_PCI_DEVICE) == HWLOC_OBJ_PCI_DEVICE); + assert(hwloc_get_depth_type(topology, HWLOC_TYPE_DEPTH_OS_DEVICE) == HWLOC_OBJ_OS_DEVICE); + assert(hwloc_get_depth_type(topology, HWLOC_TYPE_DEPTH_MISC) == HWLOC_OBJ_MISC); + assert(hwloc_get_depth_type(topology, HWLOC_TYPE_DEPTH_NUMANODE) == HWLOC_OBJ_NUMANODE); + assert(hwloc_get_depth_type(topology, HWLOC_TYPE_DEPTH_MEMCACHE) == HWLOC_OBJ_MEMCACHE); + + assert(hwloc_get_type_depth(topology, 123) == HWLOC_TYPE_DEPTH_UNKNOWN); + assert(hwloc_get_type_depth(topology, -14) == HWLOC_TYPE_DEPTH_UNKNOWN); + + assert(hwloc_get_depth_type(topology, 123) == HWLOC_OBJ_TYPE_NONE); + assert(hwloc_get_depth_type(topology, HWLOC_TYPE_DEPTH_UNKNOWN) == HWLOC_OBJ_TYPE_NONE); /* -1 */ + assert(hwloc_get_depth_type(topology, HWLOC_TYPE_DEPTH_MULTIPLE) == HWLOC_OBJ_TYPE_NONE); /* -2 */ + /* special level depth are from -3 to -8 */ + assert(hwloc_get_depth_type(topology, -9) == HWLOC_OBJ_TYPE_NONE); + assert(hwloc_get_depth_type(topology, -134) == HWLOC_OBJ_TYPE_NONE); + + assert(hwloc_get_memory_parents_depth(topology) == 0); + + hwloc_topology_destroy(topology); + + for(i=HWLOC_OBJ_TYPE_MIN; i +#include + +#include "hwloc.h" +#include "private/misc.h" /* for for_each_*child() */ + +static void _check(hwloc_topology_t topology, hwloc_obj_t obj, const char *buffer, int checkattrs) +{ + hwloc_obj_type_t type; + union hwloc_obj_attr_u attr; + int depth; + int err; + + err = hwloc_type_sscanf(buffer, &type, &attr, sizeof(attr)); + assert(!err); + assert(obj->type == type); + + if (checkattrs) { + if (hwloc_obj_type_is_cache(type)) { + assert(attr.cache.type == obj->attr->cache.type); + assert(attr.cache.depth == obj->attr->cache.depth); + } else if (type == HWLOC_OBJ_GROUP) { + assert(attr.group.depth == obj->attr->group.depth); + } else if (type == HWLOC_OBJ_BRIDGE) { + assert(attr.bridge.upstream_type == obj->attr->bridge.upstream_type); + assert(attr.bridge.downstream_type == obj->attr->bridge.downstream_type); + /* FIXME: if downstream_type can ever be non-PCI, we'll need to improve strings, or relax these checks */ + } else if (type == HWLOC_OBJ_OS_DEVICE) { + assert(attr.osdev.type == obj->attr->osdev.type); + } + } + + err = hwloc_type_sscanf_as_depth(buffer, NULL, topology, &depth); + assert(!err); + assert(depth == (int) obj->depth); +} + +static void check(hwloc_topology_t topology, hwloc_obj_t obj) +{ + hwloc_obj_t child; + char buffer[64]; + const char *constname; + int err; + + constname = hwloc_obj_type_string(obj->type); + + printf(" checking %s L#%u %s%s%s...\n", + constname, obj->logical_index, + obj->subtype ? "(" : "", + obj->subtype ? obj->subtype : "", + obj->subtype ? ") " : ""); + printf(" parsing hwloc_obj_type_string() output = %s\n", constname); + _check(topology, obj, constname, 0); + + err = hwloc_obj_type_snprintf(buffer, sizeof(buffer), obj, 0); + assert(err > 0); + printf(" parsing hwloc_obj_type_snprintf() normal output = %s\n", buffer); + _check(topology, obj, buffer, 1); + + err = hwloc_obj_type_snprintf(buffer, sizeof(buffer), obj, 1); + assert(err > 0); + printf(" parsing hwloc_obj_type_snprintf() verbose output = %s\n", buffer); + _check(topology, obj, buffer, 1); + + for_each_child(child, obj) + check(topology, child); + for_each_memory_child(child, obj) + check(topology, child); + for_each_io_child(child, obj) + check(topology, child); + for_each_misc_child(child, obj) + check(topology, child); +} + +static void check_topo(void) +{ + int err; + hwloc_topology_t topology; + + err = hwloc_topology_init(&topology); + assert(!err); + hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + err = hwloc_topology_load(topology); + assert(!err); + + check(topology, hwloc_get_root_obj(topology)); + + hwloc_topology_destroy(topology); +} + +/* check whether type_sscanf() understand what type_snprintf() wrote */ +int main(void) +{ + hwloc_obj_type_t type; + union hwloc_obj_attr_u attr; + int err; + + printf("testing basic strings ...\n"); + + err = hwloc_type_sscanf("osdev", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_OS_DEVICE); + err = hwloc_type_sscanf("osdev0", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_OS_DEVICE); + err = hwloc_type_sscanf("osdev:", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_OS_DEVICE); + err = hwloc_type_sscanf("osde_", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_OS_DEVICE); + err = hwloc_type_sscanf("osD[", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_OS_DEVICE); + err = hwloc_type_sscanf("os(", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_OS_DEVICE); + err = hwloc_type_sscanf("os-", &type, &attr, sizeof(attr)); + assert(err == -1); + err = hwloc_type_sscanf("o1", &type, &attr, sizeof(attr)); + printf("err %d %s for type %s\n", errno, strerror(errno), hwloc_obj_type_string(type)); + assert(err == -1); + + err = hwloc_type_sscanf("l3IcaChe", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_L3ICACHE); + assert(attr.cache.type == HWLOC_OBJ_CACHE_INSTRUCTION); + err = hwloc_type_sscanf("l2dcA", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_L2CACHE); + assert(attr.cache.type == HWLOC_OBJ_CACHE_DATA); + err = hwloc_type_sscanf("l1U", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_L1CACHE); + assert(attr.cache.type == HWLOC_OBJ_CACHE_UNIFIED); + err = hwloc_type_sscanf("l3cacHe:", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_L3CACHE); + assert(attr.cache.type == HWLOC_OBJ_CACHE_UNIFIED); + err = hwloc_type_sscanf("l1", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_L1CACHE); + assert(attr.cache.type == HWLOC_OBJ_CACHE_UNIFIED); + err = hwloc_type_sscanf("l1cc", &type, &attr, sizeof(attr)); + assert(err == -1); + + err = hwloc_type_sscanf("group2", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_GROUP); + assert(attr.group.depth == 2); + err = hwloc_type_sscanf("GR3:", &type, &attr, sizeof(attr)); + assert(!err); + assert(type == HWLOC_OBJ_GROUP); + assert(attr.group.depth == 3); + err = hwloc_type_sscanf("GRa", &type, &attr, sizeof(attr)); + assert(err == -1); + + printf("testing the local topology ...\n"); + check_topo(); + + printf("testing topology 32em64t-2n8c2t-pci-wholeio.xml ...\n"); + putenv((char *) "HWLOC_XMLFILE=" XMLTESTDIR "/32em64t-2n8c2t-pci-wholeio.xml"); + check_topo(); +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/levelzero.c b/3rd-party/hwloc-2.7.1/tests/hwloc/levelzero.c new file mode 100644 index 0000000000..ac7b350bed --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/levelzero.c @@ -0,0 +1,120 @@ +/* + * Copyright © 2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include + +#include +#include + +#include "hwloc.h" +#include "hwloc/levelzero.h" + +/* check the RSMI helpers */ + +int main(void) +{ + hwloc_topology_t topology; + ze_driver_handle_t *drh; + uint32_t nbdrivers, i, k; + ze_result_t res; + int err = 0; + + putenv((char *) "ZES_ENABLE_SYSMAN=1"); + + res = zeInit(0); + if (res != ZE_RESULT_SUCCESS) { + fprintf(stderr, "Failed to initialize LevelZero in ze_init(): %d\n", (int)res); + return 0; + } + + hwloc_topology_init(&topology); + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_load(topology); + + nbdrivers = 0; + res = zeDriverGet(&nbdrivers, NULL); + if (res != ZE_RESULT_SUCCESS || !nbdrivers) + return 0; + drh = malloc(nbdrivers * sizeof(*drh)); + if (!drh) + return 0; + res = zeDriverGet(&nbdrivers, drh); + if (res != ZE_RESULT_SUCCESS) { + free(drh); + return 0; + } + + printf("found %u L0 drivers\n", nbdrivers); + + k = 0; + for(i=0; iname); + err = strncmp(osdev->name, "ze", 2); + assert(!err); + assert(atoi(osdev->name+2) == (int) k); + + assert(osdev->attr->osdev.type == HWLOC_OBJ_OSDEV_COPROC); + + value = hwloc_obj_get_info_by_name(osdev, "Backend"); + err = strcmp(value, "LevelZero"); + assert(!err); + + value = hwloc_obj_get_info_by_name(osdev, "LevelZeroDriverIndex"); + assert(value); + assert(atoi(value) == (int) i); + value = hwloc_obj_get_info_by_name(osdev, "LevelZeroDriverDeviceIndex"); + assert(value); + assert(atoi(value) == (int) j); + + set = hwloc_bitmap_alloc(); + err = hwloc_levelzero_get_device_cpuset(topology, dvh[j], set); + if (err < 0) { + printf("failed to get cpuset for driver #%u device #%u\n", i, j); + } else { + char *cpuset_string = NULL; + hwloc_bitmap_asprintf(&cpuset_string, set); + printf("got cpuset %s for driver #%u device #%u\n", cpuset_string, j, i); + free(cpuset_string); + if (hwloc_bitmap_isequal(hwloc_topology_get_complete_cpuset(topology), hwloc_topology_get_topology_cpuset(topology))) + /* only compare if the topology is complete, otherwise things can be significantly different */ + assert(hwloc_bitmap_isequal(set, ancestor->cpuset)); + } + hwloc_bitmap_free(set); + } + } + + hwloc_topology_destroy(topology); + + return err; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux-libnuma.c b/3rd-party/hwloc-2.7.1/tests/hwloc/linux-libnuma.c new file mode 100644 index 0000000000..e1e5aa7b90 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux-libnuma.c @@ -0,0 +1,237 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" + +#include + +#define NUMA_VERSION1_COMPATIBILITY +#include "hwloc/linux-libnuma.h" + +/* check the linux libnuma helpers */ + +int main(void) +{ + hwloc_topology_t topology; + hwloc_bitmap_t set, set2, nocpunomemnodeset, nocpubutmemnodeset, nomembutcpunodeset, nomembutcpucpuset; + hwloc_obj_t node; + struct bitmask *bitmask, *bitmask2; + unsigned long mask; + unsigned long maxnode; + int i; + + if (numa_available() < 0) + /* libnuma has inconsistent behavior when the kernel isn't NUMA-aware. + * don't try to check everything precisely. + */ + exit(77); + + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + + /* convert full stuff between cpuset and libnuma */ + set = hwloc_bitmap_alloc(); + nocpunomemnodeset = hwloc_bitmap_alloc(); + nocpubutmemnodeset = hwloc_bitmap_alloc(); + nomembutcpunodeset = hwloc_bitmap_alloc(); + nomembutcpucpuset = hwloc_bitmap_alloc(); + /* gather all nodes if any */ + node = NULL; + while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, node)) != NULL) { + hwloc_bitmap_or(set, set, node->cpuset); + if (hwloc_bitmap_iszero(node->cpuset)) { + if (node->attr->numanode.local_memory) + hwloc_bitmap_set(nocpubutmemnodeset, node->os_index); + else + hwloc_bitmap_set(nocpunomemnodeset, node->os_index); + } else if (!node->attr->numanode.local_memory) { + hwloc_bitmap_set(nomembutcpunodeset, node->os_index); + hwloc_bitmap_or(nomembutcpucpuset, nomembutcpucpuset, node->cpuset); + } + } + + set2 = hwloc_bitmap_alloc(); + hwloc_cpuset_from_linux_libnuma_bitmask(topology, set2, numa_all_nodes_ptr); + /* numa_all_nodes_ptr doesn't contain NODES with CPU but no memory */ + hwloc_bitmap_or(set2, set2, nomembutcpucpuset); + assert(hwloc_bitmap_isequal(set, set2)); + hwloc_bitmap_free(set2); + + bitmask = hwloc_cpuset_to_linux_libnuma_bitmask(topology, set); + /* numa_all_nodes_ptr contains NODES with no CPU but with memory */ + hwloc_bitmap_foreach_begin(i, nocpubutmemnodeset) { numa_bitmask_setbit(bitmask, i); } hwloc_bitmap_foreach_end(); + assert(numa_bitmask_equal(bitmask, numa_all_nodes_ptr)); + numa_bitmask_free(bitmask); + + hwloc_bitmap_free(set); + + /* convert full stuff between nodeset and libnuma */ + set = hwloc_bitmap_dup(hwloc_get_root_obj(topology)->complete_nodeset); + + set2 = hwloc_bitmap_alloc(); + hwloc_nodeset_from_linux_libnuma_bitmask(topology, set2, numa_all_nodes_ptr); + /* numa_all_nodes_ptr doesn't contain NODES with no CPU and no memory */ + hwloc_bitmap_foreach_begin(i, nocpunomemnodeset) { hwloc_bitmap_set(set2, i); } hwloc_bitmap_foreach_end(); + /* numa_all_nodes_ptr doesn't contain NODES with CPU but no memory */ + hwloc_bitmap_or(set2, set2, nomembutcpunodeset); + assert(hwloc_bitmap_isequal(set, set2)); + hwloc_bitmap_free(set2); + + bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, set); + assert(numa_bitmask_equal(bitmask, numa_all_nodes_ptr)); + numa_bitmask_free(bitmask); + + hwloc_bitmap_free(set); + + /* convert empty stuff between cpuset and libnuma */ + bitmask = numa_bitmask_alloc(1); + set = hwloc_bitmap_alloc(); + hwloc_cpuset_from_linux_libnuma_bitmask(topology, set, bitmask); + numa_bitmask_free(bitmask); + assert(hwloc_bitmap_iszero(set)); + hwloc_bitmap_free(set); + + mask=0; + set = hwloc_bitmap_alloc(); + hwloc_cpuset_from_linux_libnuma_ulongs(topology, set, &mask, sizeof(mask)*8); + assert(hwloc_bitmap_iszero(set)); + hwloc_bitmap_free(set); + + set = hwloc_bitmap_alloc(); + bitmask = hwloc_cpuset_to_linux_libnuma_bitmask(topology, set); + bitmask2 = numa_bitmask_alloc(1); + assert(numa_bitmask_equal(bitmask, bitmask2)); + numa_bitmask_free(bitmask); + numa_bitmask_free(bitmask2); + hwloc_bitmap_free(set); + + set = hwloc_bitmap_alloc(); + maxnode = sizeof(mask)*8; + hwloc_cpuset_to_linux_libnuma_ulongs(topology, set, &mask, &maxnode); + assert(!mask); + assert(!maxnode); + hwloc_bitmap_free(set); + + /* convert empty stuff between nodeset and libnuma */ + bitmask = numa_bitmask_alloc(1); + set = hwloc_bitmap_alloc(); + hwloc_nodeset_from_linux_libnuma_bitmask(topology, set, bitmask); + numa_bitmask_free(bitmask); + assert(hwloc_bitmap_iszero(set)); + hwloc_bitmap_free(set); + + mask=0; + set = hwloc_bitmap_alloc(); + hwloc_nodeset_from_linux_libnuma_ulongs(topology, set, &mask, sizeof(mask)*8); + assert(hwloc_bitmap_iszero(set)); + hwloc_bitmap_free(set); + + set = hwloc_bitmap_alloc(); + bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, set); + bitmask2 = numa_bitmask_alloc(1); + assert(numa_bitmask_equal(bitmask, bitmask2)); + numa_bitmask_free(bitmask); + numa_bitmask_free(bitmask2); + hwloc_bitmap_free(set); + + set = hwloc_bitmap_alloc(); + maxnode = sizeof(mask)*8; + hwloc_nodeset_to_linux_libnuma_ulongs(topology, set, &mask, &maxnode); + assert(!mask); + assert(!maxnode); + hwloc_bitmap_free(set); + + /* convert first node (with CPU and memory) between cpuset/nodeset and libnuma */ + node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, NULL); + while (node && (!node->attr->numanode.local_memory || hwloc_bitmap_iszero(node->cpuset))) + /* skip nodes with no cpus or no memory to avoid strange libnuma behaviors */ + node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NUMANODE, node); + if (node) { + /* convert first node between cpuset and libnuma */ + bitmask = hwloc_cpuset_to_linux_libnuma_bitmask(topology, node->cpuset); + assert(numa_bitmask_isbitset(bitmask, node->os_index)); + numa_bitmask_clearbit(bitmask, node->os_index); + bitmask2 = numa_bitmask_alloc(node->os_index + 1); + assert(numa_bitmask_equal(bitmask, bitmask2)); + numa_bitmask_free(bitmask); + numa_bitmask_free(bitmask2); + + maxnode = sizeof(mask)*8; + hwloc_cpuset_to_linux_libnuma_ulongs(topology, node->cpuset, &mask, &maxnode); + if (node->os_index >= sizeof(mask)*8) { + assert(!maxnode); + assert(!mask); + } else { + assert(maxnode == node->os_index + 1); + assert(mask == (1UL << node->os_index)); + } + + set = hwloc_bitmap_alloc(); + bitmask = numa_bitmask_alloc(node->os_index + 1); + numa_bitmask_setbit(bitmask, node->os_index); + hwloc_cpuset_from_linux_libnuma_bitmask(topology, set, bitmask); + numa_bitmask_free(bitmask); + assert(hwloc_bitmap_isequal(set, node->cpuset)); + hwloc_bitmap_free(set); + + set = hwloc_bitmap_alloc(); + if (node->os_index >= sizeof(mask)*8) { + mask = 0; + } else { + mask = 1UL << node->os_index; + } + hwloc_cpuset_from_linux_libnuma_ulongs(topology, set, &mask, node->os_index + 1); + assert(hwloc_bitmap_isequal(set, node->cpuset)); + hwloc_bitmap_free(set); + + /* convert first node between nodeset and libnuma */ + bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, node->nodeset); + assert(numa_bitmask_isbitset(bitmask, node->os_index)); + numa_bitmask_clearbit(bitmask, node->os_index); + bitmask2 = numa_bitmask_alloc(node->os_index + 1); + assert(numa_bitmask_equal(bitmask, bitmask2)); + numa_bitmask_free(bitmask); + numa_bitmask_free(bitmask2); + + maxnode = sizeof(mask)*8; + hwloc_nodeset_to_linux_libnuma_ulongs(topology, node->nodeset, &mask, &maxnode); + if (node->os_index >= sizeof(mask)*8) { + assert(!maxnode); + assert(!mask); + } else { + assert(maxnode == node->os_index + 1); + assert(mask == (1UL << node->os_index)); + } + + set = hwloc_bitmap_alloc(); + bitmask = numa_bitmask_alloc(node->os_index + 1); + numa_bitmask_setbit(bitmask, node->os_index); + hwloc_nodeset_from_linux_libnuma_bitmask(topology, set, bitmask); + numa_bitmask_free(bitmask); + assert(hwloc_bitmap_isequal(set, node->nodeset)); + hwloc_bitmap_free(set); + + set = hwloc_bitmap_alloc(); + if (node->os_index >= sizeof(mask)*8) { + mask = 0; + } else { + mask = 1UL << node->os_index; + } + hwloc_nodeset_from_linux_libnuma_ulongs(topology, set, &mask, node->os_index + 1); + assert(hwloc_bitmap_isequal(set, node->nodeset)); + hwloc_bitmap_free(set); + } + + hwloc_bitmap_free(nomembutcpucpuset); + hwloc_bitmap_free(nomembutcpunodeset); + hwloc_bitmap_free(nocpubutmemnodeset); + hwloc_bitmap_free(nocpunomemnodeset); + + hwloc_topology_destroy(topology); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/128arm-2pa2n8cluster4co.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/128arm-2pa2n8cluster4co.output new file mode 100644 index 0000000000..4956aee752 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/128arm-2pa2n8cluster4co.output @@ -0,0 +1,702 @@ +Machine (P#0 total=527031224KB DMIProductName="XA320 V2 " DMIProductVersion="To be filled by O.E.M." DMIProductSerial=2102312MEA10K9000003 DMIProductUUID=76cfcdd4-c8a7-9486-e911-c1d00a756a75 DMIBoardVendor=Huawei DMIBoardName=BC82HPNBB DMIBoardVersion=V200R002C00 DMIBoardSerial=026MGF10K8000012 DMIBoardAssetTag="To be filled by O.E.M." DMIChassisVendor=Huawei DMIChassisType=17 DMIChassisVersion="To be filled by O.E.M." DMIChassisSerial="To be filled by O.E.M." DMIChassisAssetTag="To be filled by O.E.M." DMIBIOSVendor="Huawei Corp." DMIBIOSVersion=0.86 DMIBIOSDate=07/19/2019 DMISysVendor=Huawei Backend=Linux LinuxCgroup=/ OSName=Linux OSRelease=5.15.0-rc1-00005-g4c1b4a4d90b6-dirty OSVersion="#313 SMP PREEMPT Sun Nov 7 14:18:05 EST 2021" HostName=ubuntu Architecture=aarch64) + Package L#0 (P#36 total=263850880KB) + L3Cache L#0 (total=131732940KB size=32768KB linesize=128 ways=128) + NUMANode L#0 (P#0 local=131732940KB total=131732940KB) + Group0(Cluster) L#0 (P#138) + L2Cache L#0 (size=512KB linesize=64 ways=8) + L1dCache L#0 (size=64KB linesize=64 ways=4) + L1iCache L#0 (size=64KB linesize=64 ways=4) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=512KB linesize=64 ways=8) + L1dCache L#1 (size=64KB linesize=64 ways=4) + L1iCache L#1 (size=64KB linesize=64 ways=4) + Core L#1 (P#1) + PU L#1 (P#1) + L2Cache L#2 (size=512KB linesize=64 ways=8) + L1dCache L#2 (size=64KB linesize=64 ways=4) + L1iCache L#2 (size=64KB linesize=64 ways=4) + Core L#2 (P#2) + PU L#2 (P#2) + L2Cache L#3 (size=512KB linesize=64 ways=8) + L1dCache L#3 (size=64KB linesize=64 ways=4) + L1iCache L#3 (size=64KB linesize=64 ways=4) + Core L#3 (P#3) + PU L#3 (P#3) + Group0(Cluster) L#1 (P#654) + L2Cache L#4 (size=512KB linesize=64 ways=8) + L1dCache L#4 (size=64KB linesize=64 ways=4) + L1iCache L#4 (size=64KB linesize=64 ways=4) + Core L#4 (P#4) + PU L#4 (P#4) + L2Cache L#5 (size=512KB linesize=64 ways=8) + L1dCache L#5 (size=64KB linesize=64 ways=4) + L1iCache L#5 (size=64KB linesize=64 ways=4) + Core L#5 (P#5) + PU L#5 (P#5) + L2Cache L#6 (size=512KB linesize=64 ways=8) + L1dCache L#6 (size=64KB linesize=64 ways=4) + L1iCache L#6 (size=64KB linesize=64 ways=4) + Core L#6 (P#6) + PU L#6 (P#6) + L2Cache L#7 (size=512KB linesize=64 ways=8) + L1dCache L#7 (size=64KB linesize=64 ways=4) + L1iCache L#7 (size=64KB linesize=64 ways=4) + Core L#7 (P#7) + PU L#7 (P#7) + Group0(Cluster) L#2 (P#1170) + L2Cache L#8 (size=512KB linesize=64 ways=8) + L1dCache L#8 (size=64KB linesize=64 ways=4) + L1iCache L#8 (size=64KB linesize=64 ways=4) + Core L#8 (P#8) + PU L#8 (P#8) + L2Cache L#9 (size=512KB linesize=64 ways=8) + L1dCache L#9 (size=64KB linesize=64 ways=4) + L1iCache L#9 (size=64KB linesize=64 ways=4) + Core L#9 (P#9) + PU L#9 (P#9) + L2Cache L#10 (size=512KB linesize=64 ways=8) + L1dCache L#10 (size=64KB linesize=64 ways=4) + L1iCache L#10 (size=64KB linesize=64 ways=4) + Core L#10 (P#10) + PU L#10 (P#10) + L2Cache L#11 (size=512KB linesize=64 ways=8) + L1dCache L#11 (size=64KB linesize=64 ways=4) + L1iCache L#11 (size=64KB linesize=64 ways=4) + Core L#11 (P#11) + PU L#11 (P#11) + Group0(Cluster) L#3 (P#1686) + L2Cache L#12 (size=512KB linesize=64 ways=8) + L1dCache L#12 (size=64KB linesize=64 ways=4) + L1iCache L#12 (size=64KB linesize=64 ways=4) + Core L#12 (P#12) + PU L#12 (P#12) + L2Cache L#13 (size=512KB linesize=64 ways=8) + L1dCache L#13 (size=64KB linesize=64 ways=4) + L1iCache L#13 (size=64KB linesize=64 ways=4) + Core L#13 (P#13) + PU L#13 (P#13) + L2Cache L#14 (size=512KB linesize=64 ways=8) + L1dCache L#14 (size=64KB linesize=64 ways=4) + L1iCache L#14 (size=64KB linesize=64 ways=4) + Core L#14 (P#14) + PU L#14 (P#14) + L2Cache L#15 (size=512KB linesize=64 ways=8) + L1dCache L#15 (size=64KB linesize=64 ways=4) + L1iCache L#15 (size=64KB linesize=64 ways=4) + Core L#15 (P#15) + PU L#15 (P#15) + Group0(Cluster) L#4 (P#2202) + L2Cache L#16 (size=512KB linesize=64 ways=8) + L1dCache L#16 (size=64KB linesize=64 ways=4) + L1iCache L#16 (size=64KB linesize=64 ways=4) + Core L#16 (P#16) + PU L#16 (P#16) + L2Cache L#17 (size=512KB linesize=64 ways=8) + L1dCache L#17 (size=64KB linesize=64 ways=4) + L1iCache L#17 (size=64KB linesize=64 ways=4) + Core L#17 (P#17) + PU L#17 (P#17) + L2Cache L#18 (size=512KB linesize=64 ways=8) + L1dCache L#18 (size=64KB linesize=64 ways=4) + L1iCache L#18 (size=64KB linesize=64 ways=4) + Core L#18 (P#18) + PU L#18 (P#18) + L2Cache L#19 (size=512KB linesize=64 ways=8) + L1dCache L#19 (size=64KB linesize=64 ways=4) + L1iCache L#19 (size=64KB linesize=64 ways=4) + Core L#19 (P#19) + PU L#19 (P#19) + Group0(Cluster) L#5 (P#2718) + L2Cache L#20 (size=512KB linesize=64 ways=8) + L1dCache L#20 (size=64KB linesize=64 ways=4) + L1iCache L#20 (size=64KB linesize=64 ways=4) + Core L#20 (P#20) + PU L#20 (P#20) + L2Cache L#21 (size=512KB linesize=64 ways=8) + L1dCache L#21 (size=64KB linesize=64 ways=4) + L1iCache L#21 (size=64KB linesize=64 ways=4) + Core L#21 (P#21) + PU L#21 (P#21) + L2Cache L#22 (size=512KB linesize=64 ways=8) + L1dCache L#22 (size=64KB linesize=64 ways=4) + L1iCache L#22 (size=64KB linesize=64 ways=4) + Core L#22 (P#22) + PU L#22 (P#22) + L2Cache L#23 (size=512KB linesize=64 ways=8) + L1dCache L#23 (size=64KB linesize=64 ways=4) + L1iCache L#23 (size=64KB linesize=64 ways=4) + Core L#23 (P#23) + PU L#23 (P#23) + Group0(Cluster) L#6 (P#3234) + L2Cache L#24 (size=512KB linesize=64 ways=8) + L1dCache L#24 (size=64KB linesize=64 ways=4) + L1iCache L#24 (size=64KB linesize=64 ways=4) + Core L#24 (P#24) + PU L#24 (P#24) + L2Cache L#25 (size=512KB linesize=64 ways=8) + L1dCache L#25 (size=64KB linesize=64 ways=4) + L1iCache L#25 (size=64KB linesize=64 ways=4) + Core L#25 (P#25) + PU L#25 (P#25) + L2Cache L#26 (size=512KB linesize=64 ways=8) + L1dCache L#26 (size=64KB linesize=64 ways=4) + L1iCache L#26 (size=64KB linesize=64 ways=4) + Core L#26 (P#26) + PU L#26 (P#26) + L2Cache L#27 (size=512KB linesize=64 ways=8) + L1dCache L#27 (size=64KB linesize=64 ways=4) + L1iCache L#27 (size=64KB linesize=64 ways=4) + Core L#27 (P#27) + PU L#27 (P#27) + Group0(Cluster) L#7 (P#3750) + L2Cache L#28 (size=512KB linesize=64 ways=8) + L1dCache L#28 (size=64KB linesize=64 ways=4) + L1iCache L#28 (size=64KB linesize=64 ways=4) + Core L#28 (P#28) + PU L#28 (P#28) + L2Cache L#29 (size=512KB linesize=64 ways=8) + L1dCache L#29 (size=64KB linesize=64 ways=4) + L1iCache L#29 (size=64KB linesize=64 ways=4) + Core L#29 (P#29) + PU L#29 (P#29) + L2Cache L#30 (size=512KB linesize=64 ways=8) + L1dCache L#30 (size=64KB linesize=64 ways=4) + L1iCache L#30 (size=64KB linesize=64 ways=4) + Core L#30 (P#30) + PU L#30 (P#30) + L2Cache L#31 (size=512KB linesize=64 ways=8) + L1dCache L#31 (size=64KB linesize=64 ways=4) + L1iCache L#31 (size=64KB linesize=64 ways=4) + Core L#31 (P#31) + PU L#31 (P#31) + L3Cache L#1 (total=132117940KB size=32768KB linesize=128 ways=128) + NUMANode L#1 (P#1 local=132117940KB total=132117940KB) + Group0(Cluster) L#8 (P#4314) + L2Cache L#32 (size=512KB linesize=64 ways=8) + L1dCache L#32 (size=64KB linesize=64 ways=4) + L1iCache L#32 (size=64KB linesize=64 ways=4) + Core L#32 (P#32) + PU L#32 (P#32) + L2Cache L#33 (size=512KB linesize=64 ways=8) + L1dCache L#33 (size=64KB linesize=64 ways=4) + L1iCache L#33 (size=64KB linesize=64 ways=4) + Core L#33 (P#33) + PU L#33 (P#33) + L2Cache L#34 (size=512KB linesize=64 ways=8) + L1dCache L#34 (size=64KB linesize=64 ways=4) + L1iCache L#34 (size=64KB linesize=64 ways=4) + Core L#34 (P#34) + PU L#34 (P#34) + L2Cache L#35 (size=512KB linesize=64 ways=8) + L1dCache L#35 (size=64KB linesize=64 ways=4) + L1iCache L#35 (size=64KB linesize=64 ways=4) + Core L#35 (P#35) + PU L#35 (P#35) + Group0(Cluster) L#9 (P#4830) + L2Cache L#36 (size=512KB linesize=64 ways=8) + L1dCache L#36 (size=64KB linesize=64 ways=4) + L1iCache L#36 (size=64KB linesize=64 ways=4) + Core L#36 (P#36) + PU L#36 (P#36) + L2Cache L#37 (size=512KB linesize=64 ways=8) + L1dCache L#37 (size=64KB linesize=64 ways=4) + L1iCache L#37 (size=64KB linesize=64 ways=4) + Core L#37 (P#37) + PU L#37 (P#37) + L2Cache L#38 (size=512KB linesize=64 ways=8) + L1dCache L#38 (size=64KB linesize=64 ways=4) + L1iCache L#38 (size=64KB linesize=64 ways=4) + Core L#38 (P#38) + PU L#38 (P#38) + L2Cache L#39 (size=512KB linesize=64 ways=8) + L1dCache L#39 (size=64KB linesize=64 ways=4) + L1iCache L#39 (size=64KB linesize=64 ways=4) + Core L#39 (P#39) + PU L#39 (P#39) + Group0(Cluster) L#10 (P#5346) + L2Cache L#40 (size=512KB linesize=64 ways=8) + L1dCache L#40 (size=64KB linesize=64 ways=4) + L1iCache L#40 (size=64KB linesize=64 ways=4) + Core L#40 (P#40) + PU L#40 (P#40) + L2Cache L#41 (size=512KB linesize=64 ways=8) + L1dCache L#41 (size=64KB linesize=64 ways=4) + L1iCache L#41 (size=64KB linesize=64 ways=4) + Core L#41 (P#41) + PU L#41 (P#41) + L2Cache L#42 (size=512KB linesize=64 ways=8) + L1dCache L#42 (size=64KB linesize=64 ways=4) + L1iCache L#42 (size=64KB linesize=64 ways=4) + Core L#42 (P#42) + PU L#42 (P#42) + L2Cache L#43 (size=512KB linesize=64 ways=8) + L1dCache L#43 (size=64KB linesize=64 ways=4) + L1iCache L#43 (size=64KB linesize=64 ways=4) + Core L#43 (P#43) + PU L#43 (P#43) + Group0(Cluster) L#11 (P#5862) + L2Cache L#44 (size=512KB linesize=64 ways=8) + L1dCache L#44 (size=64KB linesize=64 ways=4) + L1iCache L#44 (size=64KB linesize=64 ways=4) + Core L#44 (P#44) + PU L#44 (P#44) + L2Cache L#45 (size=512KB linesize=64 ways=8) + L1dCache L#45 (size=64KB linesize=64 ways=4) + L1iCache L#45 (size=64KB linesize=64 ways=4) + Core L#45 (P#45) + PU L#45 (P#45) + L2Cache L#46 (size=512KB linesize=64 ways=8) + L1dCache L#46 (size=64KB linesize=64 ways=4) + L1iCache L#46 (size=64KB linesize=64 ways=4) + Core L#46 (P#46) + PU L#46 (P#46) + L2Cache L#47 (size=512KB linesize=64 ways=8) + L1dCache L#47 (size=64KB linesize=64 ways=4) + L1iCache L#47 (size=64KB linesize=64 ways=4) + Core L#47 (P#47) + PU L#47 (P#47) + Group0(Cluster) L#12 (P#6378) + L2Cache L#48 (size=512KB linesize=64 ways=8) + L1dCache L#48 (size=64KB linesize=64 ways=4) + L1iCache L#48 (size=64KB linesize=64 ways=4) + Core L#48 (P#48) + PU L#48 (P#48) + L2Cache L#49 (size=512KB linesize=64 ways=8) + L1dCache L#49 (size=64KB linesize=64 ways=4) + L1iCache L#49 (size=64KB linesize=64 ways=4) + Core L#49 (P#49) + PU L#49 (P#49) + L2Cache L#50 (size=512KB linesize=64 ways=8) + L1dCache L#50 (size=64KB linesize=64 ways=4) + L1iCache L#50 (size=64KB linesize=64 ways=4) + Core L#50 (P#50) + PU L#50 (P#50) + L2Cache L#51 (size=512KB linesize=64 ways=8) + L1dCache L#51 (size=64KB linesize=64 ways=4) + L1iCache L#51 (size=64KB linesize=64 ways=4) + Core L#51 (P#51) + PU L#51 (P#51) + Group0(Cluster) L#13 (P#6894) + L2Cache L#52 (size=512KB linesize=64 ways=8) + L1dCache L#52 (size=64KB linesize=64 ways=4) + L1iCache L#52 (size=64KB linesize=64 ways=4) + Core L#52 (P#52) + PU L#52 (P#52) + L2Cache L#53 (size=512KB linesize=64 ways=8) + L1dCache L#53 (size=64KB linesize=64 ways=4) + L1iCache L#53 (size=64KB linesize=64 ways=4) + Core L#53 (P#53) + PU L#53 (P#53) + L2Cache L#54 (size=512KB linesize=64 ways=8) + L1dCache L#54 (size=64KB linesize=64 ways=4) + L1iCache L#54 (size=64KB linesize=64 ways=4) + Core L#54 (P#54) + PU L#54 (P#54) + L2Cache L#55 (size=512KB linesize=64 ways=8) + L1dCache L#55 (size=64KB linesize=64 ways=4) + L1iCache L#55 (size=64KB linesize=64 ways=4) + Core L#55 (P#55) + PU L#55 (P#55) + Group0(Cluster) L#14 (P#7410) + L2Cache L#56 (size=512KB linesize=64 ways=8) + L1dCache L#56 (size=64KB linesize=64 ways=4) + L1iCache L#56 (size=64KB linesize=64 ways=4) + Core L#56 (P#56) + PU L#56 (P#56) + L2Cache L#57 (size=512KB linesize=64 ways=8) + L1dCache L#57 (size=64KB linesize=64 ways=4) + L1iCache L#57 (size=64KB linesize=64 ways=4) + Core L#57 (P#57) + PU L#57 (P#57) + L2Cache L#58 (size=512KB linesize=64 ways=8) + L1dCache L#58 (size=64KB linesize=64 ways=4) + L1iCache L#58 (size=64KB linesize=64 ways=4) + Core L#58 (P#58) + PU L#58 (P#58) + L2Cache L#59 (size=512KB linesize=64 ways=8) + L1dCache L#59 (size=64KB linesize=64 ways=4) + L1iCache L#59 (size=64KB linesize=64 ways=4) + Core L#59 (P#59) + PU L#59 (P#59) + Group0(Cluster) L#15 (P#7926) + L2Cache L#60 (size=512KB linesize=64 ways=8) + L1dCache L#60 (size=64KB linesize=64 ways=4) + L1iCache L#60 (size=64KB linesize=64 ways=4) + Core L#60 (P#60) + PU L#60 (P#60) + L2Cache L#61 (size=512KB linesize=64 ways=8) + L1dCache L#61 (size=64KB linesize=64 ways=4) + L1iCache L#61 (size=64KB linesize=64 ways=4) + Core L#61 (P#61) + PU L#61 (P#61) + L2Cache L#62 (size=512KB linesize=64 ways=8) + L1dCache L#62 (size=64KB linesize=64 ways=4) + L1iCache L#62 (size=64KB linesize=64 ways=4) + Core L#62 (P#62) + PU L#62 (P#62) + L2Cache L#63 (size=512KB linesize=64 ways=8) + L1dCache L#63 (size=64KB linesize=64 ways=4) + L1iCache L#63 (size=64KB linesize=64 ways=4) + Core L#63 (P#63) + PU L#63 (P#63) + Package L#1 (P#8442 total=263180344KB) + L3Cache L#2 (total=132117936KB size=32768KB linesize=128 ways=128) + NUMANode L#2 (P#2 local=132117936KB total=132117936KB) + Group0(Cluster) L#16 (P#8544) + L2Cache L#64 (size=512KB linesize=64 ways=8) + L1dCache L#64 (size=64KB linesize=64 ways=4) + L1iCache L#64 (size=64KB linesize=64 ways=4) + Core L#64 (P#64) + PU L#64 (P#64) + L2Cache L#65 (size=512KB linesize=64 ways=8) + L1dCache L#65 (size=64KB linesize=64 ways=4) + L1iCache L#65 (size=64KB linesize=64 ways=4) + Core L#65 (P#65) + PU L#65 (P#65) + L2Cache L#66 (size=512KB linesize=64 ways=8) + L1dCache L#66 (size=64KB linesize=64 ways=4) + L1iCache L#66 (size=64KB linesize=64 ways=4) + Core L#66 (P#66) + PU L#66 (P#66) + L2Cache L#67 (size=512KB linesize=64 ways=8) + L1dCache L#67 (size=64KB linesize=64 ways=4) + L1iCache L#67 (size=64KB linesize=64 ways=4) + Core L#67 (P#67) + PU L#67 (P#67) + Group0(Cluster) L#17 (P#9060) + L2Cache L#68 (size=512KB linesize=64 ways=8) + L1dCache L#68 (size=64KB linesize=64 ways=4) + L1iCache L#68 (size=64KB linesize=64 ways=4) + Core L#68 (P#68) + PU L#68 (P#68) + L2Cache L#69 (size=512KB linesize=64 ways=8) + L1dCache L#69 (size=64KB linesize=64 ways=4) + L1iCache L#69 (size=64KB linesize=64 ways=4) + Core L#69 (P#69) + PU L#69 (P#69) + L2Cache L#70 (size=512KB linesize=64 ways=8) + L1dCache L#70 (size=64KB linesize=64 ways=4) + L1iCache L#70 (size=64KB linesize=64 ways=4) + Core L#70 (P#70) + PU L#70 (P#70) + L2Cache L#71 (size=512KB linesize=64 ways=8) + L1dCache L#71 (size=64KB linesize=64 ways=4) + L1iCache L#71 (size=64KB linesize=64 ways=4) + Core L#71 (P#71) + PU L#71 (P#71) + Group0(Cluster) L#18 (P#9576) + L2Cache L#72 (size=512KB linesize=64 ways=8) + L1dCache L#72 (size=64KB linesize=64 ways=4) + L1iCache L#72 (size=64KB linesize=64 ways=4) + Core L#72 (P#72) + PU L#72 (P#72) + L2Cache L#73 (size=512KB linesize=64 ways=8) + L1dCache L#73 (size=64KB linesize=64 ways=4) + L1iCache L#73 (size=64KB linesize=64 ways=4) + Core L#73 (P#73) + PU L#73 (P#73) + L2Cache L#74 (size=512KB linesize=64 ways=8) + L1dCache L#74 (size=64KB linesize=64 ways=4) + L1iCache L#74 (size=64KB linesize=64 ways=4) + Core L#74 (P#74) + PU L#74 (P#74) + L2Cache L#75 (size=512KB linesize=64 ways=8) + L1dCache L#75 (size=64KB linesize=64 ways=4) + L1iCache L#75 (size=64KB linesize=64 ways=4) + Core L#75 (P#75) + PU L#75 (P#75) + Group0(Cluster) L#19 (P#10092) + L2Cache L#76 (size=512KB linesize=64 ways=8) + L1dCache L#76 (size=64KB linesize=64 ways=4) + L1iCache L#76 (size=64KB linesize=64 ways=4) + Core L#76 (P#76) + PU L#76 (P#76) + L2Cache L#77 (size=512KB linesize=64 ways=8) + L1dCache L#77 (size=64KB linesize=64 ways=4) + L1iCache L#77 (size=64KB linesize=64 ways=4) + Core L#77 (P#77) + PU L#77 (P#77) + L2Cache L#78 (size=512KB linesize=64 ways=8) + L1dCache L#78 (size=64KB linesize=64 ways=4) + L1iCache L#78 (size=64KB linesize=64 ways=4) + Core L#78 (P#78) + PU L#78 (P#78) + L2Cache L#79 (size=512KB linesize=64 ways=8) + L1dCache L#79 (size=64KB linesize=64 ways=4) + L1iCache L#79 (size=64KB linesize=64 ways=4) + Core L#79 (P#79) + PU L#79 (P#79) + Group0(Cluster) L#20 (P#10608) + L2Cache L#80 (size=512KB linesize=64 ways=8) + L1dCache L#80 (size=64KB linesize=64 ways=4) + L1iCache L#80 (size=64KB linesize=64 ways=4) + Core L#80 (P#80) + PU L#80 (P#80) + L2Cache L#81 (size=512KB linesize=64 ways=8) + L1dCache L#81 (size=64KB linesize=64 ways=4) + L1iCache L#81 (size=64KB linesize=64 ways=4) + Core L#81 (P#81) + PU L#81 (P#81) + L2Cache L#82 (size=512KB linesize=64 ways=8) + L1dCache L#82 (size=64KB linesize=64 ways=4) + L1iCache L#82 (size=64KB linesize=64 ways=4) + Core L#82 (P#82) + PU L#82 (P#82) + L2Cache L#83 (size=512KB linesize=64 ways=8) + L1dCache L#83 (size=64KB linesize=64 ways=4) + L1iCache L#83 (size=64KB linesize=64 ways=4) + Core L#83 (P#83) + PU L#83 (P#83) + Group0(Cluster) L#21 (P#11124) + L2Cache L#84 (size=512KB linesize=64 ways=8) + L1dCache L#84 (size=64KB linesize=64 ways=4) + L1iCache L#84 (size=64KB linesize=64 ways=4) + Core L#84 (P#84) + PU L#84 (P#84) + L2Cache L#85 (size=512KB linesize=64 ways=8) + L1dCache L#85 (size=64KB linesize=64 ways=4) + L1iCache L#85 (size=64KB linesize=64 ways=4) + Core L#85 (P#85) + PU L#85 (P#85) + L2Cache L#86 (size=512KB linesize=64 ways=8) + L1dCache L#86 (size=64KB linesize=64 ways=4) + L1iCache L#86 (size=64KB linesize=64 ways=4) + Core L#86 (P#86) + PU L#86 (P#86) + L2Cache L#87 (size=512KB linesize=64 ways=8) + L1dCache L#87 (size=64KB linesize=64 ways=4) + L1iCache L#87 (size=64KB linesize=64 ways=4) + Core L#87 (P#87) + PU L#87 (P#87) + Group0(Cluster) L#22 (P#11640) + L2Cache L#88 (size=512KB linesize=64 ways=8) + L1dCache L#88 (size=64KB linesize=64 ways=4) + L1iCache L#88 (size=64KB linesize=64 ways=4) + Core L#88 (P#88) + PU L#88 (P#88) + L2Cache L#89 (size=512KB linesize=64 ways=8) + L1dCache L#89 (size=64KB linesize=64 ways=4) + L1iCache L#89 (size=64KB linesize=64 ways=4) + Core L#89 (P#89) + PU L#89 (P#89) + L2Cache L#90 (size=512KB linesize=64 ways=8) + L1dCache L#90 (size=64KB linesize=64 ways=4) + L1iCache L#90 (size=64KB linesize=64 ways=4) + Core L#90 (P#90) + PU L#90 (P#90) + L2Cache L#91 (size=512KB linesize=64 ways=8) + L1dCache L#91 (size=64KB linesize=64 ways=4) + L1iCache L#91 (size=64KB linesize=64 ways=4) + Core L#91 (P#91) + PU L#91 (P#91) + Group0(Cluster) L#23 (P#12156) + L2Cache L#92 (size=512KB linesize=64 ways=8) + L1dCache L#92 (size=64KB linesize=64 ways=4) + L1iCache L#92 (size=64KB linesize=64 ways=4) + Core L#92 (P#92) + PU L#92 (P#92) + L2Cache L#93 (size=512KB linesize=64 ways=8) + L1dCache L#93 (size=64KB linesize=64 ways=4) + L1iCache L#93 (size=64KB linesize=64 ways=4) + Core L#93 (P#93) + PU L#93 (P#93) + L2Cache L#94 (size=512KB linesize=64 ways=8) + L1dCache L#94 (size=64KB linesize=64 ways=4) + L1iCache L#94 (size=64KB linesize=64 ways=4) + Core L#94 (P#94) + PU L#94 (P#94) + L2Cache L#95 (size=512KB linesize=64 ways=8) + L1dCache L#95 (size=64KB linesize=64 ways=4) + L1iCache L#95 (size=64KB linesize=64 ways=4) + Core L#95 (P#95) + PU L#95 (P#95) + L3Cache L#3 (total=131062408KB size=32768KB linesize=128 ways=128) + NUMANode L#3 (P#3 local=131062408KB total=131062408KB) + Group0(Cluster) L#24 (P#12720) + L2Cache L#96 (size=512KB linesize=64 ways=8) + L1dCache L#96 (size=64KB linesize=64 ways=4) + L1iCache L#96 (size=64KB linesize=64 ways=4) + Core L#96 (P#96) + PU L#96 (P#96) + L2Cache L#97 (size=512KB linesize=64 ways=8) + L1dCache L#97 (size=64KB linesize=64 ways=4) + L1iCache L#97 (size=64KB linesize=64 ways=4) + Core L#97 (P#97) + PU L#97 (P#97) + L2Cache L#98 (size=512KB linesize=64 ways=8) + L1dCache L#98 (size=64KB linesize=64 ways=4) + L1iCache L#98 (size=64KB linesize=64 ways=4) + Core L#98 (P#98) + PU L#98 (P#98) + L2Cache L#99 (size=512KB linesize=64 ways=8) + L1dCache L#99 (size=64KB linesize=64 ways=4) + L1iCache L#99 (size=64KB linesize=64 ways=4) + Core L#99 (P#99) + PU L#99 (P#99) + Group0(Cluster) L#25 (P#13236) + L2Cache L#100 (size=512KB linesize=64 ways=8) + L1dCache L#100 (size=64KB linesize=64 ways=4) + L1iCache L#100 (size=64KB linesize=64 ways=4) + Core L#100 (P#100) + PU L#100 (P#100) + L2Cache L#101 (size=512KB linesize=64 ways=8) + L1dCache L#101 (size=64KB linesize=64 ways=4) + L1iCache L#101 (size=64KB linesize=64 ways=4) + Core L#101 (P#101) + PU L#101 (P#101) + L2Cache L#102 (size=512KB linesize=64 ways=8) + L1dCache L#102 (size=64KB linesize=64 ways=4) + L1iCache L#102 (size=64KB linesize=64 ways=4) + Core L#102 (P#102) + PU L#102 (P#102) + L2Cache L#103 (size=512KB linesize=64 ways=8) + L1dCache L#103 (size=64KB linesize=64 ways=4) + L1iCache L#103 (size=64KB linesize=64 ways=4) + Core L#103 (P#103) + PU L#103 (P#103) + Group0(Cluster) L#26 (P#13752) + L2Cache L#104 (size=512KB linesize=64 ways=8) + L1dCache L#104 (size=64KB linesize=64 ways=4) + L1iCache L#104 (size=64KB linesize=64 ways=4) + Core L#104 (P#104) + PU L#104 (P#104) + L2Cache L#105 (size=512KB linesize=64 ways=8) + L1dCache L#105 (size=64KB linesize=64 ways=4) + L1iCache L#105 (size=64KB linesize=64 ways=4) + Core L#105 (P#105) + PU L#105 (P#105) + L2Cache L#106 (size=512KB linesize=64 ways=8) + L1dCache L#106 (size=64KB linesize=64 ways=4) + L1iCache L#106 (size=64KB linesize=64 ways=4) + Core L#106 (P#106) + PU L#106 (P#106) + L2Cache L#107 (size=512KB linesize=64 ways=8) + L1dCache L#107 (size=64KB linesize=64 ways=4) + L1iCache L#107 (size=64KB linesize=64 ways=4) + Core L#107 (P#107) + PU L#107 (P#107) + Group0(Cluster) L#27 (P#14268) + L2Cache L#108 (size=512KB linesize=64 ways=8) + L1dCache L#108 (size=64KB linesize=64 ways=4) + L1iCache L#108 (size=64KB linesize=64 ways=4) + Core L#108 (P#108) + PU L#108 (P#108) + L2Cache L#109 (size=512KB linesize=64 ways=8) + L1dCache L#109 (size=64KB linesize=64 ways=4) + L1iCache L#109 (size=64KB linesize=64 ways=4) + Core L#109 (P#109) + PU L#109 (P#109) + L2Cache L#110 (size=512KB linesize=64 ways=8) + L1dCache L#110 (size=64KB linesize=64 ways=4) + L1iCache L#110 (size=64KB linesize=64 ways=4) + Core L#110 (P#110) + PU L#110 (P#110) + L2Cache L#111 (size=512KB linesize=64 ways=8) + L1dCache L#111 (size=64KB linesize=64 ways=4) + L1iCache L#111 (size=64KB linesize=64 ways=4) + Core L#111 (P#111) + PU L#111 (P#111) + Group0(Cluster) L#28 (P#14784) + L2Cache L#112 (size=512KB linesize=64 ways=8) + L1dCache L#112 (size=64KB linesize=64 ways=4) + L1iCache L#112 (size=64KB linesize=64 ways=4) + Core L#112 (P#112) + PU L#112 (P#112) + L2Cache L#113 (size=512KB linesize=64 ways=8) + L1dCache L#113 (size=64KB linesize=64 ways=4) + L1iCache L#113 (size=64KB linesize=64 ways=4) + Core L#113 (P#113) + PU L#113 (P#113) + L2Cache L#114 (size=512KB linesize=64 ways=8) + L1dCache L#114 (size=64KB linesize=64 ways=4) + L1iCache L#114 (size=64KB linesize=64 ways=4) + Core L#114 (P#114) + PU L#114 (P#114) + L2Cache L#115 (size=512KB linesize=64 ways=8) + L1dCache L#115 (size=64KB linesize=64 ways=4) + L1iCache L#115 (size=64KB linesize=64 ways=4) + Core L#115 (P#115) + PU L#115 (P#115) + Group0(Cluster) L#29 (P#15300) + L2Cache L#116 (size=512KB linesize=64 ways=8) + L1dCache L#116 (size=64KB linesize=64 ways=4) + L1iCache L#116 (size=64KB linesize=64 ways=4) + Core L#116 (P#116) + PU L#116 (P#116) + L2Cache L#117 (size=512KB linesize=64 ways=8) + L1dCache L#117 (size=64KB linesize=64 ways=4) + L1iCache L#117 (size=64KB linesize=64 ways=4) + Core L#117 (P#117) + PU L#117 (P#117) + L2Cache L#118 (size=512KB linesize=64 ways=8) + L1dCache L#118 (size=64KB linesize=64 ways=4) + L1iCache L#118 (size=64KB linesize=64 ways=4) + Core L#118 (P#118) + PU L#118 (P#118) + L2Cache L#119 (size=512KB linesize=64 ways=8) + L1dCache L#119 (size=64KB linesize=64 ways=4) + L1iCache L#119 (size=64KB linesize=64 ways=4) + Core L#119 (P#119) + PU L#119 (P#119) + Group0(Cluster) L#30 (P#15816) + L2Cache L#120 (size=512KB linesize=64 ways=8) + L1dCache L#120 (size=64KB linesize=64 ways=4) + L1iCache L#120 (size=64KB linesize=64 ways=4) + Core L#120 (P#120) + PU L#120 (P#120) + L2Cache L#121 (size=512KB linesize=64 ways=8) + L1dCache L#121 (size=64KB linesize=64 ways=4) + L1iCache L#121 (size=64KB linesize=64 ways=4) + Core L#121 (P#121) + PU L#121 (P#121) + L2Cache L#122 (size=512KB linesize=64 ways=8) + L1dCache L#122 (size=64KB linesize=64 ways=4) + L1iCache L#122 (size=64KB linesize=64 ways=4) + Core L#122 (P#122) + PU L#122 (P#122) + L2Cache L#123 (size=512KB linesize=64 ways=8) + L1dCache L#123 (size=64KB linesize=64 ways=4) + L1iCache L#123 (size=64KB linesize=64 ways=4) + Core L#123 (P#123) + PU L#123 (P#123) + Group0(Cluster) L#31 (P#16332) + L2Cache L#124 (size=512KB linesize=64 ways=8) + L1dCache L#124 (size=64KB linesize=64 ways=4) + L1iCache L#124 (size=64KB linesize=64 ways=4) + Core L#124 (P#124) + PU L#124 (P#124) + L2Cache L#125 (size=512KB linesize=64 ways=8) + L1dCache L#125 (size=64KB linesize=64 ways=4) + L1iCache L#125 (size=64KB linesize=64 ways=4) + Core L#125 (P#125) + PU L#125 (P#125) + L2Cache L#126 (size=512KB linesize=64 ways=8) + L1dCache L#126 (size=64KB linesize=64 ways=4) + L1iCache L#126 (size=64KB linesize=64 ways=4) + Core L#126 (P#126) + PU L#126 (P#126) + L2Cache L#127 (size=512KB linesize=64 ways=8) + L1dCache L#127 (size=64KB linesize=64 ways=4) + L1iCache L#127 (size=64KB linesize=64 ways=4) + Core L#127 (P#127) + PU L#127 (P#127) +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 4 L3Cache (type #6) + depth 3: 32 Group0 (type #12) + depth 4: 128 L2Cache (type #5) + depth 5: 128 L1dCache (type #4) + depth 6: 128 L1iCache (type #9) + depth 7: 128 Core (type #2) + depth 8: 128 PU (type #3) +Special depth -3: 4 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 4 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 + 0 10 16 32 33 + 1 16 10 25 32 + 2 32 25 10 16 + 3 33 32 16 10 +CPU kind #0 efficiency 0 cpuset 0xffffffff,0xffffffff,0xffffffff,0xffffffff + LinuxCapacity = 1024 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/128arm-2pa2n8cluster4co.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/128arm-2pa2n8cluster4co.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..017961c61145e58b6f80aeeedcffce7c8994e44e GIT binary patch literal 64157 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 t-NojY$&!MWxgn@cZNg$ z$D6@Qb4|P@{bXzub^v{k>Z=5K#Eo^atFdo&?q$%2@_;^yf|HnBh0EOv@9JGs?cjtN zS@&9Yt$d7s`&|Bhu*k`hFC`vXmT(WSaytsiApCsUnHk!8mJzDVOpcYVdPVP;Z_uL^ zC&ob2@u4*n?)S=|;`vpxXSRu-#>BE0U5wln&bj$U(6IG>3p^b(e);+d!1|-+diWGg zFUe0zu4z4I9tASG&99N@E+(DCv)v~w9XBIq_1&q$_SLxElQ+~@r>iP+aYD`-UHQD0 zx0ATJyRSq8ySN^`+{&3ENkxd+!Af7jGE+4(=;BL-ON+b<5w-@@nqn+zq9SaJmjucjktJsz%ncGSsgzD?Y@$NjjSh@nH8_YK1 z9U?XL?QfN0xXh?PU~+BeH1oo%bFJioRa9@Zoyf#Q5mZIuqKQnGkjLrXHPx_b375f&p)%&S*zS1fg06e10E zZkEvHDu*Q+NZ4gCO1X4F`lO-5Do_A82flchbP0=@RaTw3daEx{Fsfb4OsSi~;3idA&M{2g=3$)TONG*n6?9>x&Y8|@ zOU)!k!Ebe2RaV=G_lfOQwp20h_>slW0q2M#l3+ThdiKrkyZ+jHF0YiZ3m`rTAaxiq zAUUS3l>Nw`wG-MJ`TGj4uA3~X>85f{%<5fRhGVj|HIu5{Hv04P-e0H6Q>0MBfaZ6Mc8HO_O_(nyn~ zB2Cbfdm$!(1l7S-XzdOJ;R)d`?NwD(@B|+U1OOn$$?Xi9(p;uHW0BEBz+ODaNRg9`3OK!6SqDGjLCe7~{sZr^t8 zyiX5?qM}E(B>Mf)^gqL92kZ&`8)T})fgfE!M>zo>yFRTa-TP}lTa$mkyM4HrF|%X@ zVqxdg?roZ@CC-_WecVh#VI{EvU~5uHbfh%lD_wW(Y)O|E2{xtUW{ey#-!+EZIqpJ$ z0TirSRB;0fwAh4#Fk6t|;3J&|Yycu%(r~#_5yX#}7%FHXRG69TGq0PQx?1yhH)4S> zs;Z_~RlW@>(5_&XRd}URO;FQKuJtWNq@`L*Vx@vDMU;}ove{)RQmk4_5q|~WKEBE9 z*M59mcU^U2L7%7VScz(-tae+sWc!n@@O53DXsjz;KHt^HS9Gr8D_YGv8N-b3{6Dwb zt-QKdk8_2-8zy-ed04^1w~yJwEc$TC&fD3>dk{>Ckg?Bw$FPqs2<$j@P^5LI?$|zw zMjphiwh%w3T-BmzFG_0k8r7m`wXki zvZp&EdY#oLO=j&{fteYRoOEm~%sv0b8W{eXSL>N}q76d}66E@O71peed(Usr@qL?a zzZ`tqzD$x&mdOPASjHbiI=S1&>~A>pslUj97f6yrPI!&FPMcQUF_P};>ZH)Fh|oG7 z)q*e>9Q!5Z*6@|)34_Di0ni^_zhd$7Aw+PJm;`17*Kb=PK?^WHw9`a9#FXmz6N8vb3`?>H(61iFHH? zaNx2c2wR;AZv(XbF^?s2%Mcl|AY9@$vzBfonB|Ky+a~-i&TQYNyEtnbF{T)@ElXrg ztN}twA|m(_7(qktoF|ozP!Z_VhWcnj`a}i7Z8{yII&x57S}DLN=%E5AKnX>+tOj`M z$!b9wH`~!%b1-AY#&DcJ=@3VZKnNYIn(MC~_WL}ybe+xJ&D=^Lm|D{9rZi}(lB-a) zB$Dh)s;QS}FBAu&BpY8{UuZoeZ8%)_Vb4k)IV;pd5YW+K7g!;3Dyru$|@dL%x?DJ6X;-cJiEvkO_B#FKPLe$ z6-8!IH93{ve7(@Qn^(KDj_ZmZ)tVn>HJPRqlM1vdT7Zy%1RmhzDilQkf=H}8`8n9I}rNnXPuKG=57#%cjRV<)mOjRI&K}2Ox9C

      E7(8+4>ZbU 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

      w!#XGFRC*Y|FTmR_F)Br1yK%TH7I6+pGLY)) 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 GGWr+I;xAJG literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.options new file mode 100644 index 0000000000..e1ec15aab5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.options @@ -0,0 +1 @@ +- -v --filter all:structure --no-icaches diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.output new file mode 100644 index 0000000000..6554cbe6c5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.output @@ -0,0 +1,22 @@ +Machine (P#0 total=16777216KB DMIProductName=H8QM8 DMIProductVersion=1234567890 DMIBoardVendor=Supermicro DMIBoardName=H8QM8 DMIBoardVersion=1234567890 DMIBoardAssetTag="To Be Filled By O.E.M." DMIChassisVendor="To Be Filled By O.E.M." DMIChassisType=3 DMIChassisVersion="To Be Filled By O.E.M." DMIChassisAssetTag="To Be Filled By O.E.M." DMIBIOSVendor="American Megatrends Inc." DMIBIOSVersion="080014 " DMIBIOSDate=12/20/2008 DMISysVendor=Supermicro Backend=Linux LinuxCgroup=/prout) + Package L#0 (P#0 CPUModel="Quad-Core AMD Opteron(tm) Processor 8347 HE") + L3Cache L#0 (size=2048KB linesize=64 ways=32) + PU L#0 (P#0) + PU L#1 (P#1) + PU L#2 (P#2) + PU L#3 (P#3) + Package L#1 (P#2 total=8388608KB CPUModel="Quad-Core AMD Opteron(tm) Processor 8347 HE") + NUMANode L#0 (P#2 local=8388608KB total=8388608KB) + Package L#2 (P#3 total=8388608KB CPUModel="Quad-Core AMD Opteron(tm) Processor 8347 HE") + NUMANode L#1 (P#3 local=8388608KB total=8388608KB) +depth 0: 1 Machine (type #0) + depth 1: 3 Package (type #1) + depth 2: 1 L3Cache (type #6) + depth 3: 4 PU (type #3) +Special depth -3: 2 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 2 NUMANodes (depth -3) by logical indexes: + index 0 1 + 0 10 20 + 1 20 10 +12 processors not represented in topology: 0x0000fff0 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-4n4c-cgroup-distance-merge.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f8849128f95c1180d88e77c432dda939c57b9947 GIT binary patch literal 11467 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.output new file mode 100644 index 0000000000..004cb7aa97 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.output @@ -0,0 +1,78 @@ +Machine (P#0 total=33554432KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux LinuxCgroup=/dummy) + Package L#0 (P#0 CPUModel="Dual Core AMD Opteron(tm) Processor 865") + L2Cache L#0 (size=1024KB linesize=64 ways=16) + L1dCache L#0 (size=64KB linesize=64 ways=2) + L1iCache L#0 (size=64KB linesize=64 ways=2) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=1024KB linesize=64 ways=16) + L1dCache L#1 (size=64KB linesize=64 ways=2) + L1iCache L#1 (size=64KB linesize=64 ways=2) + Core L#1 (P#1) + PU L#1 (P#1) + Package L#1 (P#1 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#0 (P#1 local=8388608KB total=8388608KB) + L2Cache L#2 (size=1024KB linesize=64 ways=16) + L1dCache L#2 (size=64KB linesize=64 ways=2) + L1iCache L#2 (size=64KB linesize=64 ways=2) + Core L#2 (P#0) + PU L#2 (P#2) + L2Cache L#3 (size=1024KB linesize=64 ways=16) + L1dCache L#3 (size=64KB linesize=64 ways=2) + L1iCache L#3 (size=64KB linesize=64 ways=2) + Core L#3 (P#1) + PU L#3 (P#3) + Package L#2 (P#2 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#1 (P#2 local=8388608KB total=8388608KB) + L2Cache L#4 (size=1024KB linesize=64 ways=16) + L1dCache L#4 (size=64KB linesize=64 ways=2) + L1iCache L#4 (size=64KB linesize=64 ways=2) + Core L#4 (P#1) + PU L#4 (P#5) + Package L#3 (P#3 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#2 (P#3 local=8388608KB total=8388608KB) + L2Cache L#5 (size=1024KB linesize=64 ways=16) + L1dCache L#5 (size=64KB linesize=64 ways=2) + L1iCache L#5 (size=64KB linesize=64 ways=2) + Core L#5 (P#0) + PU L#5 (P#6) + Package L#4 (P#4 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#3 (P#4 local=8388608KB total=8388608KB) + Package L#5 (P#6 CPUModel="Dual Core AMD Opteron(tm) Processor 865") + L2Cache L#6 (size=1024KB linesize=64 ways=16) + L1dCache L#6 (size=64KB linesize=64 ways=2) + L1iCache L#6 (size=64KB linesize=64 ways=2) + Core L#6 (P#0) + PU L#6 (P#12) + L2Cache L#7 (size=1024KB linesize=64 ways=16) + L1dCache L#7 (size=64KB linesize=64 ways=2) + L1iCache L#7 (size=64KB linesize=64 ways=2) + Core L#7 (P#1) + PU L#7 (P#13) + Package L#6 (P#7 CPUModel="Dual Core AMD Opteron(tm) Processor 865") + L2Cache L#8 (size=1024KB linesize=64 ways=16) + L1dCache L#8 (size=64KB linesize=64 ways=2) + L1iCache L#8 (size=64KB linesize=64 ways=2) + Core L#8 (P#0) + PU L#8 (P#14) + L2Cache L#9 (size=1024KB linesize=64 ways=16) + L1dCache L#9 (size=64KB linesize=64 ways=2) + L1iCache L#9 (size=64KB linesize=64 ways=2) + Core L#9 (P#1) + PU L#9 (P#15) +depth 0: 1 Machine (type #0) + depth 1: 7 Package (type #1) + depth 2: 10 L2Cache (type #5) + depth 3: 10 L1dCache (type #4) + depth 4: 10 L1iCache (type #9) + depth 5: 10 Core (type #2) + depth 6: 10 PU (type #3) +Special depth -3: 4 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 4 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 + 0 10 20 20 20 + 1 20 10 20 20 + 2 20 20 10 20 + 3 20 20 20 10 +6 processors not represented in topology: 0x00000f90 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8f48c6f6583bd24fb425db940c18698b7fb6c33a GIT binary patch literal 7068 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 gGz$mA literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.options new file mode 100644 index 0000000000..2f7955cb17 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.options @@ -0,0 +1 @@ +-p -v --of xml --no-icaches diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.output new file mode 100644 index 0000000000..d37b651fed --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.output @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 2 3 4 + 10 20 20 20 20 10 20 20 20 20 + 10 20 20 20 20 10 + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.source new file mode 100644 index 0000000000..e21584fcfb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets.xml.source @@ -0,0 +1 @@ +16amd64-8n2c-cpusets.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.options new file mode 100644 index 0000000000..7976c35db6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.options @@ -0,0 +1 @@ +- -v --disallowed diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.output new file mode 100644 index 0000000000..952bc89c76 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.output @@ -0,0 +1,113 @@ +Machine (P#0 total=67106960KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux LinuxCgroup=/dummy) + Package L#0 (P#0 total=8386704KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#0 (P#0 local=8386704KB total=8386704KB) (disallowed) + L2Cache L#0 (size=1024KB linesize=64 ways=16) + L1dCache L#0 (size=64KB linesize=64 ways=2) + L1iCache L#0 (size=64KB linesize=64 ways=2) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=1024KB linesize=64 ways=16) + L1dCache L#1 (size=64KB linesize=64 ways=2) + L1iCache L#1 (size=64KB linesize=64 ways=2) + Core L#1 (P#1) + PU L#1 (P#1) + Package L#1 (P#1 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#1 (P#1 local=8388608KB total=8388608KB) + L2Cache L#2 (size=1024KB linesize=64 ways=16) + L1dCache L#2 (size=64KB linesize=64 ways=2) + L1iCache L#2 (size=64KB linesize=64 ways=2) + Core L#2 (P#0) + PU L#2 (P#2) + L2Cache L#3 (size=1024KB linesize=64 ways=16) + L1dCache L#3 (size=64KB linesize=64 ways=2) + L1iCache L#3 (size=64KB linesize=64 ways=2) + Core L#3 (P#1) + PU L#3 (P#3) + Package L#2 (P#2 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#2 (P#2 local=8388608KB total=8388608KB) + L2Cache L#4 (size=1024KB linesize=64 ways=16) + L1dCache L#4 (size=64KB linesize=64 ways=2) + L1iCache L#4 (size=64KB linesize=64 ways=2) + Core L#4 (P#1) + PU L#4 (P#5) + Package L#3 (P#3 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#3 (P#3 local=8388608KB total=8388608KB) + L2Cache L#5 (size=1024KB linesize=64 ways=16) + L1dCache L#5 (size=64KB linesize=64 ways=2) + L1iCache L#5 (size=64KB linesize=64 ways=2) + Core L#5 (P#0) + PU L#5 (P#6) + L2Cache L#6 (size=1024KB linesize=64 ways=16) + L1dCache L#6 (size=64KB linesize=64 ways=2) + L1iCache L#6 (size=64KB linesize=64 ways=2) + Core L#6 (P#1) + PU L#6 (P#7) (disallowed) + Package L#4 (P#4 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#4 (P#4 local=8388608KB total=8388608KB) + L2Cache L#7 (size=1024KB linesize=64 ways=16) + L1dCache L#7 (size=64KB linesize=64 ways=2) + L1iCache L#7 (size=64KB linesize=64 ways=2) + Core L#7 (P#0) + PU L#7 (P#8) (disallowed) + L2Cache L#8 (size=1024KB linesize=64 ways=16) + L1dCache L#8 (size=64KB linesize=64 ways=2) + L1iCache L#8 (size=64KB linesize=64 ways=2) + Core L#8 (P#1) + PU L#8 (P#9) (disallowed) + Package L#5 (P#5 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#5 (P#5 local=8388608KB total=8388608KB) (disallowed) + L2Cache L#9 (size=1024KB linesize=64 ways=16) + L1dCache L#9 (size=64KB linesize=64 ways=2) + L1iCache L#9 (size=64KB linesize=64 ways=2) + Core L#9 (P#0) + PU L#9 (P#10) (disallowed) + L2Cache L#10 (size=1024KB linesize=64 ways=16) + L1dCache L#10 (size=64KB linesize=64 ways=2) + L1iCache L#10 (size=64KB linesize=64 ways=2) + Core L#10 (P#1) + PU L#10 (P#11) (disallowed) + Package L#6 (P#6 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#6 (P#6 local=8388608KB total=8388608KB) (disallowed) + L2Cache L#11 (size=1024KB linesize=64 ways=16) + L1dCache L#11 (size=64KB linesize=64 ways=2) + L1iCache L#11 (size=64KB linesize=64 ways=2) + Core L#11 (P#0) + PU L#11 (P#12) + L2Cache L#12 (size=1024KB linesize=64 ways=16) + L1dCache L#12 (size=64KB linesize=64 ways=2) + L1iCache L#12 (size=64KB linesize=64 ways=2) + Core L#12 (P#1) + PU L#12 (P#13) + Package L#7 (P#7 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#7 (P#7 local=8388608KB total=8388608KB) (disallowed) + L2Cache L#13 (size=1024KB linesize=64 ways=16) + L1dCache L#13 (size=64KB linesize=64 ways=2) + L1iCache L#13 (size=64KB linesize=64 ways=2) + Core L#13 (P#0) + PU L#13 (P#14) + L2Cache L#14 (size=1024KB linesize=64 ways=16) + L1dCache L#14 (size=64KB linesize=64 ways=2) + L1iCache L#14 (size=64KB linesize=64 ways=2) + Core L#14 (P#1) + PU L#14 (P#15) +depth 0: 1 Machine (type #0) + depth 1: 8 Package (type #1) + depth 2: 15 L2Cache (type #5) + depth 3: 15 L1dCache (type #4) + depth 4: 15 L1iCache (type #9) + depth 5: 15 Core (type #2) + depth 6: 15 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 8 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 + 0 10 20 20 20 20 20 20 20 + 1 20 10 20 20 20 20 20 20 + 2 20 20 10 20 20 20 20 20 + 3 20 20 20 10 20 20 20 20 + 4 20 20 20 20 10 20 20 20 + 5 20 20 20 20 20 10 20 20 + 6 20 20 20 20 20 20 10 20 + 7 20 20 20 20 20 20 20 10 +1 processors not represented in topology: 0x00000010 +5 processors represented but not allowed: 0x00000f80 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.source new file mode 100644 index 0000000000..e21584fcfb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c-cpusets_noadmin.source @@ -0,0 +1 @@ +16amd64-8n2c-cpusets.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c.output new file mode 100644 index 0000000000..edc7d48f11 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c.output @@ -0,0 +1,116 @@ +Machine (P#0 total=67106960KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux) + Package L#0 (P#0 total=8386704KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#0 (P#0 local=8386704KB total=8386704KB) + L2Cache L#0 (size=1024KB linesize=64 ways=16) + L1dCache L#0 (size=64KB linesize=64 ways=2) + L1iCache L#0 (size=64KB linesize=64 ways=2) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=1024KB linesize=64 ways=16) + L1dCache L#1 (size=64KB linesize=64 ways=2) + L1iCache L#1 (size=64KB linesize=64 ways=2) + Core L#1 (P#1) + PU L#1 (P#1) + Package L#1 (P#1 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#1 (P#1 local=8388608KB total=8388608KB) + L2Cache L#2 (size=1024KB linesize=64 ways=16) + L1dCache L#2 (size=64KB linesize=64 ways=2) + L1iCache L#2 (size=64KB linesize=64 ways=2) + Core L#2 (P#0) + PU L#2 (P#2) + L2Cache L#3 (size=1024KB linesize=64 ways=16) + L1dCache L#3 (size=64KB linesize=64 ways=2) + L1iCache L#3 (size=64KB linesize=64 ways=2) + Core L#3 (P#1) + PU L#3 (P#3) + Package L#2 (P#2 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#2 (P#2 local=8388608KB total=8388608KB) + L2Cache L#4 (size=1024KB linesize=64 ways=16) + L1dCache L#4 (size=64KB linesize=64 ways=2) + L1iCache L#4 (size=64KB linesize=64 ways=2) + Core L#4 (P#0) + PU L#4 (P#4) + L2Cache L#5 (size=1024KB linesize=64 ways=16) + L1dCache L#5 (size=64KB linesize=64 ways=2) + L1iCache L#5 (size=64KB linesize=64 ways=2) + Core L#5 (P#1) + PU L#5 (P#5) + Package L#3 (P#3 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#3 (P#3 local=8388608KB total=8388608KB) + L2Cache L#6 (size=1024KB linesize=64 ways=16) + L1dCache L#6 (size=64KB linesize=64 ways=2) + L1iCache L#6 (size=64KB linesize=64 ways=2) + Core L#6 (P#0) + PU L#6 (P#6) + L2Cache L#7 (size=1024KB linesize=64 ways=16) + L1dCache L#7 (size=64KB linesize=64 ways=2) + L1iCache L#7 (size=64KB linesize=64 ways=2) + Core L#7 (P#1) + PU L#7 (P#7) + Package L#4 (P#4 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#4 (P#4 local=8388608KB total=8388608KB) + L2Cache L#8 (size=1024KB linesize=64 ways=16) + L1dCache L#8 (size=64KB linesize=64 ways=2) + L1iCache L#8 (size=64KB linesize=64 ways=2) + Core L#8 (P#0) + PU L#8 (P#8) + L2Cache L#9 (size=1024KB linesize=64 ways=16) + L1dCache L#9 (size=64KB linesize=64 ways=2) + L1iCache L#9 (size=64KB linesize=64 ways=2) + Core L#9 (P#1) + PU L#9 (P#9) + Package L#5 (P#5 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#5 (P#5 local=8388608KB total=8388608KB) + L2Cache L#10 (size=1024KB linesize=64 ways=16) + L1dCache L#10 (size=64KB linesize=64 ways=2) + L1iCache L#10 (size=64KB linesize=64 ways=2) + Core L#10 (P#0) + PU L#10 (P#10) + L2Cache L#11 (size=1024KB linesize=64 ways=16) + L1dCache L#11 (size=64KB linesize=64 ways=2) + L1iCache L#11 (size=64KB linesize=64 ways=2) + Core L#11 (P#1) + PU L#11 (P#11) + Package L#6 (P#6 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#6 (P#6 local=8388608KB total=8388608KB) + L2Cache L#12 (size=1024KB linesize=64 ways=16) + L1dCache L#12 (size=64KB linesize=64 ways=2) + L1iCache L#12 (size=64KB linesize=64 ways=2) + Core L#12 (P#0) + PU L#12 (P#12) + L2Cache L#13 (size=1024KB linesize=64 ways=16) + L1dCache L#13 (size=64KB linesize=64 ways=2) + L1iCache L#13 (size=64KB linesize=64 ways=2) + Core L#13 (P#1) + PU L#13 (P#13) + Package L#7 (P#7 total=8388608KB CPUModel="Dual Core AMD Opteron(tm) Processor 865") + NUMANode L#7 (P#7 local=8388608KB total=8388608KB) + L2Cache L#14 (size=1024KB linesize=64 ways=16) + L1dCache L#14 (size=64KB linesize=64 ways=2) + L1iCache L#14 (size=64KB linesize=64 ways=2) + Core L#14 (P#0) + PU L#14 (P#14) + L2Cache L#15 (size=1024KB linesize=64 ways=16) + L1dCache L#15 (size=64KB linesize=64 ways=2) + L1iCache L#15 (size=64KB linesize=64 ways=2) + Core L#15 (P#1) + PU L#15 (P#15) +depth 0: 1 Machine (type #0) + depth 1: 8 Package (type #1) + depth 2: 16 L2Cache (type #5) + depth 3: 16 L1dCache (type #4) + depth 4: 16 L1iCache (type #9) + depth 5: 16 Core (type #2) + depth 6: 16 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 8 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 + 0 10 20 20 20 20 20 20 20 + 1 20 10 20 20 20 20 20 20 + 2 20 20 10 20 20 20 20 20 + 3 20 20 20 10 20 20 20 20 + 4 20 20 20 20 10 20 20 20 + 5 20 20 20 20 20 10 20 20 + 6 20 20 20 20 20 20 10 20 + 7 20 20 20 20 20 20 20 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16amd64-8n2c.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..4a0d2b75f415c96f5164d09929a6ca998989a3b3 GIT binary patch literal 6818 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≪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 ahyx)q53)=s@nGjAL-`Grruf6d_rCyp&jM%w literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.options new file mode 100644 index 0000000000..2f7955cb17 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.options @@ -0,0 +1 @@ +-p -v --of xml --no-icaches diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.output new file mode 100644 index 0000000000..940c161085 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.output @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.source new file mode 100644 index 0000000000..ccf106c8c7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t-offlines.xml.source @@ -0,0 +1 @@ +16em64t-4s2c2t-offlines.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.output new file mode 100644 index 0000000000..baa25cb427 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.output @@ -0,0 +1,59 @@ +Machine (P#0 total=16772456KB Backend=Linux) + NUMANode L#0 (P#0 local=16772456KB total=16772456KB) + Package L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L3Cache L#0 (size=4096KB linesize=64 ways=16) + L2Cache L#0 (size=1024KB linesize=64 ways=8) + L1dCache L#0 (size=16KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#8) + L2Cache L#1 (size=1024KB linesize=64 ways=8) + L1dCache L#1 (size=16KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#2 (P#4) + PU L#3 (P#12) + Package L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L3Cache L#1 (size=4096KB linesize=64 ways=16) + L2Cache L#2 (size=1024KB linesize=64 ways=8) + L1dCache L#2 (size=16KB linesize=64 ways=8) + Core L#2 (P#0) + PU L#4 (P#1) + PU L#5 (P#9) + L2Cache L#3 (size=1024KB linesize=64 ways=8) + L1dCache L#3 (size=16KB linesize=64 ways=8) + Core L#3 (P#1) + PU L#6 (P#5) + PU L#7 (P#13) + Package L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L3Cache L#2 (size=4096KB linesize=64 ways=16) + L2Cache L#4 (size=1024KB linesize=64 ways=8) + L1dCache L#4 (size=16KB linesize=64 ways=8) + Core L#4 (P#0) + PU L#8 (P#2) + PU L#9 (P#10) + L2Cache L#5 (size=1024KB linesize=64 ways=8) + L1dCache L#5 (size=16KB linesize=64 ways=8) + Core L#5 (P#1) + PU L#10 (P#6) + PU L#11 (P#14) + Package L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L3Cache L#3 (size=4096KB linesize=64 ways=16) + L2Cache L#6 (size=1024KB linesize=64 ways=8) + L1dCache L#6 (size=16KB linesize=64 ways=8) + Core L#6 (P#0) + PU L#12 (P#3) + PU L#13 (P#11) + L2Cache L#7 (size=1024KB linesize=64 ways=8) + L1dCache L#7 (size=16KB linesize=64 ways=8) + Core L#7 (P#1) + PU L#14 (P#7) + PU L#15 (P#15) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 4 L3Cache (type #6) + depth 3: 8 L2Cache (type #5) + depth 4: 8 L1dCache (type #4) + depth 5: 8 Core (type #2) + depth 6: 16 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7845d28cf24afa7f2cca5a11e499e229911887f8 GIT binary patch literal 5303 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.options new file mode 100644 index 0000000000..abbc8223ed --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.options @@ -0,0 +1 @@ +-v --of xml --no-icaches diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.output new file mode 100644 index 0000000000..3a488cc4a1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.output @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.source new file mode 100644 index 0000000000..bc71743761 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t.xml.source @@ -0,0 +1 @@ +16em64t-4s2c2t.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.options new file mode 100644 index 0000000000..47d86182dd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.options @@ -0,0 +1 @@ +- -v --merge --no-icaches diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.output new file mode 100644 index 0000000000..866b8105a0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.output @@ -0,0 +1,36 @@ +Machine (P#0 total=16772456KB Backend=Linux) + NUMANode L#0 (P#0 local=16772456KB total=16772456KB) + Package L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#8) + Core L#1 (P#1) + PU L#2 (P#4) + PU L#3 (P#12) + Package L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + Core L#2 (P#0) + PU L#4 (P#1) + PU L#5 (P#9) + Core L#3 (P#1) + PU L#6 (P#5) + PU L#7 (P#13) + Package L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + Core L#4 (P#0) + PU L#8 (P#2) + PU L#9 (P#10) + Core L#5 (P#1) + PU L#10 (P#6) + PU L#11 (P#14) + Package L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + Core L#6 (P#0) + PU L#12 (P#3) + PU L#13 (P#11) + Core L#7 (P#1) + PU L#14 (P#7) + PU L#15 (P#15) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 8 Core (type #2) + depth 3: 16 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.source new file mode 100644 index 0000000000..bc71743761 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_merge.source @@ -0,0 +1 @@ +16em64t-4s2c2t.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.options new file mode 100644 index 0000000000..8ce7be906f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.options @@ -0,0 +1 @@ +- -v --no-caches diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.output new file mode 100644 index 0000000000..866b8105a0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.output @@ -0,0 +1,36 @@ +Machine (P#0 total=16772456KB Backend=Linux) + NUMANode L#0 (P#0 local=16772456KB total=16772456KB) + Package L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#8) + Core L#1 (P#1) + PU L#2 (P#4) + PU L#3 (P#12) + Package L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + Core L#2 (P#0) + PU L#4 (P#1) + PU L#5 (P#9) + Core L#3 (P#1) + PU L#6 (P#5) + PU L#7 (P#13) + Package L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + Core L#4 (P#0) + PU L#8 (P#2) + PU L#9 (P#10) + Core L#5 (P#1) + PU L#10 (P#6) + PU L#11 (P#14) + Package L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + Core L#6 (P#0) + PU L#12 (P#3) + PU L#13 (P#11) + Core L#7 (P#1) + PU L#14 (P#7) + PU L#15 (P#15) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 8 Core (type #2) + depth 3: 16 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.source new file mode 100644 index 0000000000..bc71743761 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2c2t_ncaches.source @@ -0,0 +1 @@ +16em64t-4s2c2t.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.options new file mode 100644 index 0000000000..129cf90956 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.options @@ -0,0 +1 @@ +- -v --filter all:structure diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.output new file mode 100644 index 0000000000..c5c8fd380a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.output @@ -0,0 +1,32 @@ +Machine (P#0 total=16772456KB Backend=Linux LinuxCgroup=/prout) + NUMANode L#0 (P#0 local=16772456KB total=16772456KB) + Package L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L2Cache L#0 (size=1024KB linesize=64 ways=8) + PU L#0 (P#8) + L2Cache L#1 (size=1024KB linesize=64 ways=8) + PU L#1 (P#4) + Package L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L2Cache L#2 (size=1024KB linesize=64 ways=8) + PU L#2 (P#9) + L2Cache L#3 (size=1024KB linesize=64 ways=8) + PU L#3 (P#5) + PU L#4 (P#13) + Package L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L2Cache L#4 (size=1024KB linesize=64 ways=8) + PU L#5 (P#2) + PU L#6 (P#10) + L2Cache L#5 (size=1024KB linesize=64 ways=8) + PU L#7 (P#6) + Package L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L2Cache L#6 (size=1024KB linesize=64 ways=8) + PU L#8 (P#3) + PU L#9 (P#11) + L2Cache L#7 (size=1024KB linesize=64 ways=8) + PU L#10 (P#7) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 8 L2Cache (type #5) + depth 3: 11 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +5 processors not represented in topology: 0x0000d003 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.source new file mode 100644 index 0000000000..6077f3b48a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder-merge.source @@ -0,0 +1 @@ +16em64t-4s2ca2c-cpusetreorder.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder.output new file mode 100644 index 0000000000..4704e22b0a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder.output @@ -0,0 +1,61 @@ +Machine (P#0 total=16772456KB Backend=Linux LinuxCgroup=/prout) + NUMANode L#0 (P#0 local=16772456KB total=16772456KB) + Package L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L3Cache L#0 (size=4096KB linesize=64 ways=16) + L2Cache L#0 (size=1024KB linesize=64 ways=8) + L1dCache L#0 (size=16KB linesize=64 ways=8) + Core L#0 (P#2) + PU L#0 (P#8) + L2Cache L#1 (size=1024KB linesize=64 ways=8) + L1dCache L#1 (size=16KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#1 (P#4) + Package L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L3Cache L#1 (size=4096KB linesize=64 ways=16) + L2Cache L#2 (size=1024KB linesize=64 ways=8) + L1dCache L#2 (size=16KB linesize=64 ways=8) + Core L#2 (P#2) + PU L#2 (P#9) + L2Cache L#3 (size=1024KB linesize=64 ways=8) + L1dCache L#3 (size=16KB linesize=64 ways=8) + Core L#3 (P#1) + PU L#3 (P#5) + L1dCache L#4 (size=16KB linesize=64 ways=8) + Core L#4 (P#3) + PU L#4 (P#13) + Package L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L3Cache L#2 (size=4096KB linesize=64 ways=16) + L2Cache L#4 (size=1024KB linesize=64 ways=8) + L1dCache L#5 (size=16KB linesize=64 ways=8) + Core L#5 (P#0) + PU L#5 (P#2) + L1dCache L#6 (size=16KB linesize=64 ways=8) + Core L#6 (P#2) + PU L#6 (P#10) + L2Cache L#5 (size=1024KB linesize=64 ways=8) + L1dCache L#7 (size=16KB linesize=64 ways=8) + Core L#7 (P#1) + PU L#7 (P#6) + Package L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") + L3Cache L#3 (size=4096KB linesize=64 ways=16) + L2Cache L#6 (size=1024KB linesize=64 ways=8) + L1dCache L#8 (size=16KB linesize=64 ways=8) + Core L#8 (P#0) + PU L#8 (P#3) + L1dCache L#9 (size=16KB linesize=64 ways=8) + Core L#9 (P#2) + PU L#9 (P#11) + L2Cache L#7 (size=1024KB linesize=64 ways=8) + L1dCache L#10 (size=16KB linesize=64 ways=8) + Core L#10 (P#1) + PU L#10 (P#7) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 4 L3Cache (type #6) + depth 3: 8 L2Cache (type #5) + depth 4: 11 L1dCache (type #4) + depth 5: 11 Core (type #2) + depth 6: 11 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +5 processors not represented in topology: 0x0000d003 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16em64t-4s2ca2c-cpusetreorder.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..4988c35c64493594feffd6863e28a98d345069d0 GIT binary patch literal 5707 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 ZM2@w_L^iQerw2``675k@ELZLf{}(R#j&A?} literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16ia64-8n2s.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16ia64-8n2s.output new file mode 100644 index 0000000000..42e2c05e5b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16ia64-8n2s.output @@ -0,0 +1,153 @@ +Machine (P#0 total=48346688KB Backend=Linux Architecture=ia64) + Group0 L#0 (total=24182720KB) + Group1 L#0 (total=6045632KB) + NUMANode L#0 (P#0 local=6045632KB total=6045632KB) + Package L#0 (P#0 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#0 (size=9216KB linesize=128 ways=18) + L2Cache L#0 (size=256KB linesize=128 ways=8) + L1dCache L#0 (size=16KB linesize=64 ways=4) + L1iCache L#0 (size=16KB linesize=64 ways=4) + Core L#0 (P#0) + PU L#0 (P#0) + Package L#1 (P#0 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#1 (size=9216KB linesize=128 ways=18) + L2Cache L#1 (size=256KB linesize=128 ways=8) + L1dCache L#1 (size=16KB linesize=64 ways=4) + L1iCache L#1 (size=16KB linesize=64 ways=4) + Core L#1 (P#0) + PU L#1 (P#1) + Group1 L#1 (total=6045696KB) + NUMANode L#1 (P#1 local=6045696KB total=6045696KB) + Package L#2 (P#512 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#2 (size=9216KB linesize=128 ways=18) + L2Cache L#2 (size=256KB linesize=128 ways=8) + L1dCache L#2 (size=16KB linesize=64 ways=4) + L1iCache L#2 (size=16KB linesize=64 ways=4) + Core L#2 (P#0) + PU L#2 (P#2) + Package L#3 (P#512 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#3 (size=9216KB linesize=128 ways=18) + L2Cache L#3 (size=256KB linesize=128 ways=8) + L1dCache L#3 (size=16KB linesize=64 ways=4) + L1iCache L#3 (size=16KB linesize=64 ways=4) + Core L#3 (P#0) + PU L#3 (P#3) + Group1 L#2 (total=6045696KB) + NUMANode L#2 (P#2 local=6045696KB total=6045696KB) + Package L#4 (P#1024 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#4 (size=9216KB linesize=128 ways=18) + L2Cache L#4 (size=256KB linesize=128 ways=8) + L1dCache L#4 (size=16KB linesize=64 ways=4) + L1iCache L#4 (size=16KB linesize=64 ways=4) + Core L#4 (P#0) + PU L#4 (P#4) + Package L#5 (P#1024 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#5 (size=9216KB linesize=128 ways=18) + L2Cache L#5 (size=256KB linesize=128 ways=8) + L1dCache L#5 (size=16KB linesize=64 ways=4) + L1iCache L#5 (size=16KB linesize=64 ways=4) + Core L#5 (P#0) + PU L#5 (P#5) + Group1 L#3 (total=6045696KB) + NUMANode L#3 (P#3 local=6045696KB total=6045696KB) + Package L#6 (P#1536 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#6 (size=9216KB linesize=128 ways=18) + L2Cache L#6 (size=256KB linesize=128 ways=8) + L1dCache L#6 (size=16KB linesize=64 ways=4) + L1iCache L#6 (size=16KB linesize=64 ways=4) + Core L#6 (P#0) + PU L#6 (P#6) + Package L#7 (P#1536 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#7 (size=9216KB linesize=128 ways=18) + L2Cache L#7 (size=256KB linesize=128 ways=8) + L1dCache L#7 (size=16KB linesize=64 ways=4) + L1iCache L#7 (size=16KB linesize=64 ways=4) + Core L#7 (P#0) + PU L#7 (P#7) + Group0 L#1 (total=24163968KB) + Group1 L#4 (total=6045696KB) + NUMANode L#4 (P#4 local=6045696KB total=6045696KB) + Package L#8 (P#2048 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#8 (size=9216KB linesize=128 ways=18) + L2Cache L#8 (size=256KB linesize=128 ways=8) + L1dCache L#8 (size=16KB linesize=64 ways=4) + L1iCache L#8 (size=16KB linesize=64 ways=4) + Core L#8 (P#0) + PU L#8 (P#8) + Package L#9 (P#2048 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#9 (size=9216KB linesize=128 ways=18) + L2Cache L#9 (size=256KB linesize=128 ways=8) + L1dCache L#9 (size=16KB linesize=64 ways=4) + L1iCache L#9 (size=16KB linesize=64 ways=4) + Core L#9 (P#0) + PU L#9 (P#9) + Group1 L#5 (total=6045632KB) + NUMANode L#5 (P#5 local=6045632KB total=6045632KB) + Package L#10 (P#2560 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#10 (size=9216KB linesize=128 ways=18) + L2Cache L#10 (size=256KB linesize=128 ways=8) + L1dCache L#10 (size=16KB linesize=64 ways=4) + L1iCache L#10 (size=16KB linesize=64 ways=4) + Core L#10 (P#0) + PU L#10 (P#10) + Package L#11 (P#2560 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#11 (size=9216KB linesize=128 ways=18) + L2Cache L#11 (size=256KB linesize=128 ways=8) + L1dCache L#11 (size=16KB linesize=64 ways=4) + L1iCache L#11 (size=16KB linesize=64 ways=4) + Core L#11 (P#0) + PU L#11 (P#11) + Group1 L#6 (total=6045696KB) + NUMANode L#6 (P#6 local=6045696KB total=6045696KB) + Package L#12 (P#3072 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#12 (size=9216KB linesize=128 ways=18) + L2Cache L#12 (size=256KB linesize=128 ways=8) + L1dCache L#12 (size=16KB linesize=64 ways=4) + L1iCache L#12 (size=16KB linesize=64 ways=4) + Core L#12 (P#0) + PU L#12 (P#12) + Package L#13 (P#3072 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#13 (size=9216KB linesize=128 ways=18) + L2Cache L#13 (size=256KB linesize=128 ways=8) + L1dCache L#13 (size=16KB linesize=64 ways=4) + L1iCache L#13 (size=16KB linesize=64 ways=4) + Core L#13 (P#0) + PU L#13 (P#13) + Group1 L#7 (total=6026944KB) + NUMANode L#7 (P#7 local=6026944KB total=6026944KB) + Package L#14 (P#3584 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#14 (size=9216KB linesize=128 ways=18) + L2Cache L#14 (size=256KB linesize=128 ways=8) + L1dCache L#14 (size=16KB linesize=64 ways=4) + L1iCache L#14 (size=16KB linesize=64 ways=4) + Core L#14 (P#0) + PU L#14 (P#14) + Package L#15 (P#3584 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache") + L3Cache L#15 (size=9216KB linesize=128 ways=18) + L2Cache L#15 (size=256KB linesize=128 ways=8) + L1dCache L#15 (size=16KB linesize=64 ways=4) + L1iCache L#15 (size=16KB linesize=64 ways=4) + Core L#15 (P#0) + PU L#15 (P#15) +depth 0: 1 Machine (type #0) + depth 1: 2 Group0 (type #12) + depth 2: 8 Group1 (type #12) + depth 3: 16 Package (type #1) + depth 4: 16 L3Cache (type #6) + depth 5: 16 L2Cache (type #5) + depth 6: 16 L1dCache (type #4) + depth 7: 16 L1iCache (type #9) + depth 8: 16 Core (type #2) + depth 9: 16 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 8 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 + 0 10 25 25 25 29 29 29 29 + 1 25 10 25 25 29 29 29 29 + 2 25 25 10 25 29 29 29 29 + 3 25 25 25 10 29 29 29 29 + 4 29 29 29 29 10 25 25 25 + 5 29 29 29 29 25 10 25 25 + 6 29 29 29 29 25 25 10 25 + 7 29 29 29 29 25 25 25 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16ia64-8n2s.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/16ia64-8n2s.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..1ac42382a0c67edacd7bab1b0de3093ba0a1f0f2 GIT binary patch literal 6206 zcmcIncTm$!xBi9RLhlfop$Lc+X(3=JB0)NYjv~ExLKO)e1cWF^1Q7%gLJ>iVbcIku z1d%39K)UoIiskaY^S$?*`_0_Bf88_B%u3cK*sEK>L@PA^yCYm*1-@FPi=49;a?3Tr#FQI z#!)+y_oBbgxSS$Q*Y}raDLw-lJFEK;&`{>*z=27=%yCt)wL^YIP6+TXp?iTZyt|1n zeEJ8E*PE{>VtDLpNTr)3G=}Jx=k+Wx1Ou{S%;e^tWoC*xqhLdd{?S+fbcKQ0$&sZj zk7A&VN3-JVa|3*onLu&TKR(Y#TH|ri3l_)nkFZczpp%x5wZ zdEtY++$P(xK|Dg<1ylrpOtokbVp#)etT9PtA23B%u7FAqo}23O`RpSRLSuxhDo<0P zv^sZdnFa;7jeA97?4M^R>gQbbOYr1jj*(N=N-2F1Qm%i$%E%+5H;L_lA^k$O_N}3S z)CT+=te)Tm7AZmd$RiG@0Ypn3P&5B{6qI$~<3Noa+F zRYDFgvKgz7ESu#*Ys${E7q_$~Eg8Y*y}&(!VwBwy8<&u(+-OZd9c&P+Y?vCF%9YSRa0!Z!W6-1^a?5G$^e`Lv zD9s}6vXjv^NLy11LyN(3{4=~4UOE${h)TmtJj18qCCd}%=&|QMs6>&s8$apKW^Pe< zzQzVAXf}x;RUvNIEx5aS*km2M5}0LI-B1kNLUC>k+zRJR-FA?y`YQ7lwFy%rWIN-7 zxAj{tC^-p>Y!bS2oTjUkWcVw&7*Y2U`uSz5>{Tt#RnFmAx|>k8Hoc4CS!RbS6N-KO z!L-l-EXA`@j3P9S3uVuTz}^szs}Rb4m`iiz*}K8n3QIrP{%*d;M%zYnb^`PPUG?CY zg1ie-me?TK6f7?+-;l&6J%b=;kgdpx8=S55m6vW1A3m;KMcK#vYmswkWgO|Nd+BwKC!!VNy3?ePG&{e?Vy4+SJ#A#L z2^-(}x!8xIdKC1bqIJ_I%tB^l1ZxUFY|Pv|;?k?SX&*k@Yvm~+#F{r~k>Ic!I9yP3 z>Tpw7$ncPv-hd8PZ>Y?&HeRBe#v!O4_k^){h7BF;J2%%FRP&l70+Bzr5?B7~to(*s zZQ_LL%6L@f>#ylf22LfcdKb#rSjb9*C9?Ff6uq=G+)1ni{l@2s`t+1p6~5VKxdUd; zp3{rg;<2KQ7UdO=wOLr!ep54(d$-vwQtW8R*(2`c3n%P{h+@FdI?Zy7M>YDVjWHxJ zTDj%-bZVz@uK?yd=qUc@;tXzJ-(4TzC!iuJQ4!-P1PEmb0#;B$S``0=5rg%s+hokb ze<5gpnXpn*cJ#VEPp+E^R_mP0V9{3Vl>4_ly8nUCJF1D%u%ThbvoYAK-n!b-n*%@W z)L>I(S*e&d?)J)QkjRyj=PfH;R96og92_L_h3tP9dYW+Rtzg`}~L2FGj0QUcT!TR)=jXiN@Ga*6cG=)D>+ZCrKkncWBI=6wg+ z3=M(~><5$pmU*{tozZ~c6aa~(*ow;EY6`E@du4}Z4@6$XW$K&4vs^2n0}r70#jcCE z8U((9K5#_tAVoJyANa|Kn$7w5=2kc7saRt0Hu_@*&8r5YLyx4TN}Je>c=-)x-+j>An)zDyoH_;r2jDB8Qv zwa`5e2(Q|=Apzv7q~I64a_1=67^`WLVa z`xlh@J2&v8_bPIky7;fe$KZdY?0h+D;|4$tR$;a^ePKBr0>9fOEt!&Aj*oTD1`q7p zy2JfQ%z+&DSh^$D+K4TLRy$|ju|_oM$NT%XE`mgXx#;fnO<|NX@GEp=C2lJ$bWB5~e)dGz0}7Urm17XC+Cz*#kq-Uh&n_4#CcYHqxHpWemJ{H_7~B!XeeBU*$pV*^0c z1PUifQ`S-}E8ABVS&I0Lvz`=k_)8|4&f=Kk#mhz~oo*+@S8`B)BPoyB3H};dA${)U zCmU@fUZw2IiWpI+&%)NtvCec=`Rkh1C`ZkL)k-0`$Agu=4R*xkOZhUKtht;4y6-lV zQe6{-Wl70CpSIn>&XYdU%iw7_*yo<-($CGcxih8B8I|8{zFv6Ar~C0!+014YNhK_C zV#n`eRgUZYc80E(0jHc<`BoBx`hrExZb0El7n#&nCEq5m4~w28J&a4*5kuc9C1K_} z=%cBa8z;;gUW_lc+<2}v(4FVHxx`>K1yKI(Ho4!R-R}X~1GwTl-{yp?oyphWhvvs4 zqmRC$TK;*?fg0=yW+-Uy%*6V+J`K=rtrpSr^sh=)le zqAY>no6A#mCKEN}HGdY^`NHzo{sp5%RO^<4RIgf?2*r%&^P_>(#{_lhJ(6gj-frV9 zq1*G-EzYf>Gab;7z+Y7YT2I;_!eo(~&aF(3569rG83qZaw`TO_sQRS_gj)hlW|4>*)iN4%$z51o}H`?xmsUG^oKWcD%oDJ7w z>C@0_zVx8=(n-Ysy4d5Xk6dH19f@3K6Q`TssBWt9_lZvCGm zR~+U8IsWH82Ms|rGfPrD-svw0;%K|C2T0ibx17ox^um8KuePsjJWcDhUB0-FoXb6f zV~v{HSG-mnn*Niel$GRmhsdkk=D}#QFxQUv&q`{gP78Kar#8d>rxUEX3fO4sES?A|>$C4JCaRE(hB|k~xb$wKVl2`l##$ z!ud{sh^c|Gai`zlpsi&;v_?p1pHWx`K|49j{f4wv(M4wp8i!R2Kkg|-NfK(lJW(HI zA#Q*&9mnppP`BNa)1EpTi$Go0e0M%x zlAPQ^1$Y0)Jd%{Wjj8_g`}A=ipVwqMayl5)c}Kx^WAD2rq6sv7-p|I}L=$L{^l5~R z41AByPnD!9ohLras=JJKUh{#&aw#bWTd}{4-5Iyg+laY(xyPOtH)thF;1o z!+8n4>qmFLTg}yb&It>TK#zWeSy@R;XyqC667UXHU725H#mhqHDlTxcEJ&`gh03%x ztuZmY8L~*FO^cURjFwAxS}s$19|m_EW@}z^DgLw#`?hR50(jRiwjV}b`N0viF8ei6 z2x;z@Uvg1X=VN6hmtnu;mM&ctOmCv0Lz#58&%!o^$uCU3Hk^BFi>c@q6tY zyP|)p3m=Mz615DDJ#S3@sD%H#$LJgj9p6iR{cZ>s(a+Z9+%hH}jO|3oiPYje9p?=v8QG zYY9v5AzTapy5EM$JU+88S!i}4Pk6GYsz3D3NX-bBZtGVvn)3e5L@c=sq=hlo47WO! zBW1$emN?fAC~M9>%V@Ve#<`@k5B9HoDc_RM6*r<&w6SsApnD;Y=WDm!X-b;3uB@`D z_HD;%^6O|t47XtBYe z3h%=A{>cV;&>YCO$?psR zI;UFW6vV{6l8@txa(+=PFUK`d;^|I^6og}ae{Z6p+6%380;hQuR~5ptC#bx9P%dQybDOyKguWlOt-jkyVG9BHK%@TNc9nK<|8Xrg>qjBvASYQ zTAmNVN)rrj_!~%Z@NwF*yUWb|l1txuIroFR!Pf-x2)_=Q9d!TV~UTSVe{m_wHdNw!-g)4EMN!MGM>(R7DaZyCk&`dr#5tV z^tOd&_IbJb=vFN|1ZLoLXbYn}KJ`wHW`?h+&Gu-Eh%id#n9OiE8Te<+=)AwhyHb)- zoo_q0AD_?J`H0ArrxxxBrS1K`RdATGm|M(S(_q3%sP0*>{B`>eV-b4ymSI30Q6FfF1iP85 zk3>tKDEW24{G*~|GFO9NTpM}}mtQ)B&9!ZqJk!i6(m_?rc@HK&r3dEs^d~^Np!&_) zqQm1i+984nh}6fH<-SQPDw8e=`uP;PST%P~RmrMnG_i6Shv3Cmt;Png8k-B0CJb=D z7;p*;xCd|^TxMwLhb=EUZkB)ZI+bZ5B_yEz ze&mXD=!eU9?0e8ygK)&l*FWSFM>{RNZ2{W1(YQ6M%pl|ntHO}mq|eO!?yTI1ntSl5 zgU^b)o^_!!ybGj9?!qY0GShyK(bV3(`Rdh|`z5~_{s<_#PO$AVY^O79qr7Iq+??xb zf>zPI#F;1n;K98=5j;-fv-oK;%{1^m9L*GNL&YftoKgi9TXukEx-SV^j6}r)Tf{&8 zx7L3f7W+IE_(1cS7fg55IbfGK@;ltLN%o{$c)}m!fxr9<6kD9ms9kw0{`t>4 z>K<@!^6&Uh)ISkNY~=!{w;9Pa60*cskz|3dQ?)ckOf)*)eskW7VZ;?shwG>^qzOz( zU}Ob~rzsLgO!|2clW}|rg)v=u7*<)z_#LXfvyp{z{&yr1Mg9Aw(TclF8x;2gyoGUyL`~)0ook$P#h6spq}v;Z@#QXe;o8Do zT|R7%5*nJ#a}3=-gzqEn>{1GtOdN=y$w5o>P>M5;LXRnM{2$EnG4*XkQ4rjNpE?ht zd{AEDd(X*$I+hm}%^3uHP`b24+R%(+TKgiM`bbDC$Qp z2?#Gyze!*faCTISmvv#+IKA`hSJ&wuQz&gS#PPldyTBq@WEgquF?ANa_bSZ~?N#kR z9S3@BM4Fp#5mPb01GDaje~<6iXpTtkQsJlR>SP|uI!2Jf$e*!%0Bt8ksk^Ww7@HU) zik+?>Ek4w^DwzmbWbdh*UV4^B?fqrGhkqfH6_{brU5 zqelHuA$EzIKYFL8Yi38=NskS2#IEsYw-h7CwAH=NxVT6ML9A0qnCZ<*T;HOa-eclU zIJ*_cGsoEVC4@=%>|JJjn}ndn{nrARqv(}v?QPJnY(dFur8W}RpvD34F6THswr}xS z54JJK2~S&2$ZLba-F;oqv*Owi+Ak`5+Xok>)X94VK}@mH4UD%dHU+Pr0Naek>w-eq zeY&V)=wX(oTIuw8qF}UwCN3Hla5U{%?1?ra=4*1l5(N0H!ua_c=!{v3?|XK0AUImM z%OCNbDxpHh;u=%wE&p#47->B=8jMoi^%iVI0DZII8>Rq(&#=z|w>4|kx&a?*!>$pN zlFlMthLqz(fr~Y7 zj;FnAJptbJdIp$EApu63GNEfVGBAKN8maA5(rKn@8fl;a000000001J z36M#mnlwEj>NIEprhotd05k!#q$%opA+4Q-FLf{3O1&v z6-gthT2`zHi6y4dD4Iw&fGDe)r6`jKbHT7l000tC1d@rR6H~GcEO-+%dWUfQfV}xqj90J+$Qq;?htqOqCHV9~jY-XyeW}&`AJw{>Q zp|VvF`Xh^W0LEG(-y4+5RcsE6>3j9+oN(bhGPtP;C<(AY002tFr)ng{gKI|8w*dwl z#)yy|bbLMMH_i0gQb(ml=>S zUQC{hW#G($_;slW3@>|-)vFU22e^nr4<>vk7e()RRp}dLNk-EUu7Zqd8%u$WH0CV91KKfkb4g z=reHVBSLN&2qhtl&J({Bw)6ni%92|!hDCugDTqgmMgzdSORzC! zMR3AK+KIS(>Ly?z>4o{?@nA7PWDj*_*Q5m@fnvth%Q=kHVZsZCK`ss2rq=^zc>@qy z4)6};QPD)u*<_Vn-_Tqoirm0KH}+!^N5kR@bC;udVqo1)N}5);!u$udA^$ozwGRrSlDz z1ark=StNp`m#R4k>PEJl8nQToIgWvHbq?aQ6PA+ugITb}Mn{Q|{}~hvq}xHb%!zHN zX9}@ILiucxiU)?Fn&7oP$xDIV%ZE7i#m_-PlXejR#fN{kR*nXY!V+-|G;<8_t%Q(F zEjUXHm?#*3J|7sM5J<#=1WivEZS+E-qLKrXq?px`I5n1i2pbCQj+Hwj4o6#kGv8&A z6B`*8Fz<=lAWfWcytk2{Y!RI*#m4Hxa^k}wN$+}BXO_J?gr^MzhjLQbodHQTxl&1# z`{jc&#pUgRNJe6bhbz9T#>AdOI5}d2aSuj^Ep~W|NVf>c2tP}+y;TuJ zmX>KD3nZRLoRx{5swxmhGbp!C$&W3F+=N;Fv#uZQbj>k6lEPawQV6EJ}!FiCDC(Gjgt+ zxpNmeaz@fm-_P&W@Av!X_nv2Fo_XeZ%`@}Nyq=kXS-ansRI`GZT5Y41o&n&XdtJZx z9?XXQ{(aDVZ!Y@x*6(dF06+@>L^E*zaNxdn4sfF*dJHW;7Zx|xx0GR0WUbugJ zL8F!q!m9j27;%T63IF0_F;-LCbcAZ{OyUF>{EyrP2nDkOWz2@T)mZ>cH0rAVYA2e4 zlNp^yl}vYX%=VQGJv~a7hFm(I#&TcP|EE^Q&^X3H?@<=mBprOcz+DP*Ltn3W$OZEP zlqy3XP4!B3GMTD4|KTbB38PNOX>d0R<?oz;ZS)$)9sasSMtubjdQ*%$0B_{tqaN0CD=M`FW$nCeZQw`PdqRh~%jcGHVx|}*m4g9I8uG5+50RD9B zBbXj5sb13B!gEt2&BXUk#Ea)RV@;0tvfiYQJ$+XCSlD&;4=$IA&q)-h4Z<%!lY;2E{lau3Fc5-qxr_!RPE~9GQOD@V?sJIUe9$k70j+ND& zO@CinBf^NsrzXot zO$`j-xVdChBW7Q@2@49>O&EF3)FmkLX+_ZJD&(`#!>Vf`sl3UHYKT2^~iu4281b?MkxYULmg) z0z97ATKNtwWTcuh6eK1JKZv=+!`$_B1ak*;fl0;nBP{SG!lb0&PxA9ep)L%3-sBc+ zr$+_QrnY)zmD^>wh}yg%63fL1r1ReEXs*Mxw#iQyUT!O;nBOwUv0h;c8ArIGI7yK_ z4c?QRcy>PgR`+S5PDcu<;v!0C^t9RNMyZ?7&vXuPet_Bw{^?ruD`v38!6$44IpCXk*k$`_!Uw`*=A@{12+XF*nuHPD!dXEq$qE!4L#!hW*?rxM8Bw<;7 z{2|4`LNQ>Y*Rc-yqt$ZYj(yk){;elvfUxxaR8G3_F7}JZ#w~mB^-87H8-CU^zp8D5 z>7=c@eH-qsFN5_ytr0^O=e2g92)w&pma#yWpNkeCk3}`Tk=g{cIH92TJny^OzHGMX~TinRriHwIsWAUNLg{Cj|7RRGs;|n55C!@TA~s(G z4Q$EiF1Q_O46!%wQlCoF8&ZHT1>D=xs(J2m3ZUGUYKD^U{+59so@Vd+kp~XbN)?P} zsI==CbvhfRkqVpRfw(Hh#Wbf@Q)yhLAMSo*;Vpkf0kI!la0dhccoh*!Jx1^nIb~*g zSC0BM1s5L|;WT@d3GAP9$?TgDDSq0fr3~Wzu|SeffPBj#KCxRi$rJVU-0(eCt^mqv z!whyC*Rm;?QG_GG4bPO7{MHL4_~d)~!N>%&ONv2IJNeYz;hOy{OCI`3BxtuZW_}gYbZS8YARJ@J!^c&F~Eo_3w*{L?BaS89eQvNb|#$_FRmkoP2Es)!4 zZ%)V~g3An`%10d}H;>|yz);;_AFI`P6taWI7vQT9D`f~vFY<{q{T(VMZgP0NM(XG` z0^J*2zXJy>Zw2Bblk!!#DM~4HRSRkAgm54L?;enZVw-X7cYD4xGR~1Y^Y~J>XNjxH zQ`r62K}kzZ1Yj~a3sx*2$~T1*NIWxuE7ZJO=>H7%`1&RH)Y z9{j*hD;dsQkxT}OeWMC|+|6XRST|4O4N(F?T_X>@mAwRZGcj)#<%lAmdY$F{2+pzu z#GdDI|E*8=X=piOQcW0OVA#^(YO^?e=vDr0mn)${=1!ufcD2Z#b3S6i_lD0)xb&d39M2a@8U&A4 z&`Pj0vG|$5us0(W7q1*=L^So!ImoEFu+umnG?=TmsqQlmyR2t-g+v^Vug5AZT_2{- z)|UB2K)j?cx|ziHR6y$Hj0q#*XS=H2LpANxVssg8+ZCxaGlErrWpCKR z@EE7cw`Rg+!_bRkV-T#T0>}7QqmfV(Bfo%;=!A!4JqwVq6iN=Hi6wDAxfo_9PRl}b zm3(qyJ$MX661S{cAI$|lJE~w0WE%aunHGeplw0JB`6X)iKOdCPixl^V*eThU2XT72 zKYBLN!g4)dvAmH83ZYD`aXhN)EDLS?DwGCDnv<9lek7F&V8q|zccIB70kA(mydEzO0+SXhZSbY_}#pZ+S)2IHWPcctEOwO8Gjs6$>B z(`8-F^t+>`>e>{&+1D>7n4A{y!7*!%ZTG|CA}Q%DFDt1C+W8HI+gq(5*vIZIniH^8)&ba|&-?=pv#(`y8Uau55F& z_rwM-lE}xWES-bGS#cn&@kDBMqr{l%MziGj$3`^gQyBPJbS@iSK1A}CQqZ5DBfhyk z&x)1@0w|0IVLD$vh(d*?oH7y^Gz~)eWV*7)I0*CdVjqmKT&Q29BeNxI zM~4mhub$C3#4TE{{f$y(qhZT=$zebScvNl3{ik&4J!VFQ3g5j}Gi-~7N^WKm81Vo@ zZtn*7j9k(*Y2fi#`PvRQjc;^^Tw+~B!A~BgktVbUiq#>2vDTt%*=nUcDCf&{mZR)e z*hAzP`rSn13L$9J&1W}!X2y5iX<3MYMHhiPG#X4hH7H*VtFVuWy0Ef8d6TF2Y3jgJ z=={~vhnOVMpzx-gaG+vYkV32AD8d{Wp|jOYf8yDG?;+yEy9p@qclLM!8h5FT;kUNe%e=s<4_>KzvVdVndSoB#aZxJzw|#RI%@FUM zs`TFF)`rySCTrqgZ4Rr|&0N>T7eb7Z2MtE1J&SSvFy5FHvRG1|f%)Gfgs|uwc)!(^ zITegA^CXxjjzTIy_LqyAbH@`ps|Y6R1CG72aj~1At0taO`oo{m(PtOG?t3%3@bWok z*X5%q_nYki)d$qH(vK$If1j7CAgkF71yP;<(cGS|hEShU`q72XTUs9viHtaU9Xa;D zyhEOaC=V|LG^boT{03fZH1~nyWIJskJVyVf=fa6S#$ zrcTKs<)O%550{k}#`5o5@61_L(o5Kck)gXyevR0J@MEsB5Qn(1?M%<>4cZ1e%g*pl zhE~>_-hdRj3}2gL=bp^PgSD-Jf#935g0$cwmr(IcVc)vo!S|yej5D_!FrjJrOw(55 zIC~f+YGRjV{ciX^8RJ%3`lL~&Cjo+V(78ozrwQ^Np;qMwMr%VLIkaE99;`z)5=Q;T z!_Ph^0S3Ye33$(}tZeII2*e!t+B2;#LT-0?(qO|rVyhNH=32na#9*GC+I37PLqg<} zJ{U5WeH!onb+KY3-=0$dbBZiLAKigB4{pxNvtv~jQw%f}?0JzDo3o0aoHd=|n_CLR zRI$X3R8>HZigSQ@V3dkV)Z>oh8zdPbdKYr4F_`!51z}(Qh{Pk2mmAErY7?GDTw;Hz z>;ty&70xPl!X~2rp9<}Sv%4o}Dy>lO1AMhg@#S8`$7X6yI{GCsXQ5{DG8P~8UP6uudk8KNj*lB!mUNrR3* zsWdE=+pt>a74GKr==^jQaBF_d9smW0VuB%dO4h=ACmmbt8wN*rk5&Zh@H!awX;?ih zG?YC)|B{iwm`I?S6uai3UA!u1IoqqPW2jqC3GI%9VO+lPox(OZEXBU{)#L)ZZqs;i z;Ve<`nnCQoLO9Ehu}Uj*;YCAg4CHcK;6!~6Gg%p=+^gHDf9zZ~VqyXF?{CQm81R3I z%p;-u2k$R_`HH2kZt!pmP?1{q;`J6xc^0R%F%-^6`ptM_j)!gp_}r^QQ?RkI9h>5jtT^mFFdX;mRxE$ zjA$wnh>&MdWNdPJG$&{t${C2#hYuLya6P13Z08)6=13i7^N@l3XQatsND8SV&(HAM zKgu(+?{d1oz6xEB%iaFI$DR}w`wfh0+^bs(Um6DG*>i2>ykoVqP0v^yGuVI*_r^}? zv-t@om~X}ToK8rT4GHo#n{RLMC`R(S4A=e61%5Ip_#8L-_NJv-{e3VPMH9PLxRE#CI%d~M8bPQ{7?v;w>4-^t?EyLfvYxDRv_1eqe z^mnFKBWafu23-J_DlE-yOuv?`4y)3q_E=phtf)tQ>qhe$9Yd5 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ia64-64n2s2c.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ia64-64n2s2c.output new file mode 100644 index 0000000000..875855de19 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ia64-64n2s2c.output @@ -0,0 +1,864 @@ +Machine (P#0 total=516912176KB Backend=Linux) + Group0 L#0 (total=129224048KB) + Group1 L#0 (total=32296336KB) + Group2 L#0 (total=8064400KB) + NUMANode L#0 (P#0 local=8064400KB total=8064400KB) + Package L#0 (P#0) + Core L#0 (P#0) + PU L#0 (P#0) + Core L#1 (P#1) + PU L#1 (P#1) + Package L#1 (P#3) + Core L#2 (P#0) + PU L#2 (P#2) + Core L#3 (P#1) + PU L#3 (P#3) + Group2 L#1 (total=8077312KB) + NUMANode L#1 (P#1 local=8077312KB total=8077312KB) + Package L#2 (P#512) + Core L#4 (P#0) + PU L#4 (P#4) + Core L#5 (P#1) + PU L#5 (P#5) + Package L#3 (P#515) + Core L#6 (P#0) + PU L#6 (P#6) + Core L#7 (P#1) + PU L#7 (P#7) + Group2 L#2 (total=8077312KB) + NUMANode L#2 (P#2 local=8077312KB total=8077312KB) + Package L#4 (P#1024) + Core L#8 (P#0) + PU L#8 (P#8) + Core L#9 (P#1) + PU L#9 (P#9) + Package L#5 (P#1027) + Core L#10 (P#0) + PU L#10 (P#10) + Core L#11 (P#1) + PU L#11 (P#11) + Group2 L#3 (total=8077312KB) + NUMANode L#3 (P#3 local=8077312KB total=8077312KB) + Package L#6 (P#1536) + Core L#12 (P#0) + PU L#12 (P#12) + Core L#13 (P#1) + PU L#13 (P#13) + Package L#7 (P#1539) + Core L#14 (P#0) + PU L#14 (P#14) + Core L#15 (P#1) + PU L#15 (P#15) + Group1 L#1 (total=32309232KB) + Group2 L#4 (total=8077312KB) + NUMANode L#4 (P#4 local=8077312KB total=8077312KB) + Package L#8 (P#2048) + Core L#16 (P#0) + PU L#16 (P#16) + Core L#17 (P#1) + PU L#17 (P#17) + Package L#9 (P#2051) + Core L#18 (P#0) + PU L#18 (P#18) + Core L#19 (P#1) + PU L#19 (P#19) + Group2 L#5 (total=8077312KB) + NUMANode L#5 (P#5 local=8077312KB total=8077312KB) + Package L#10 (P#2560) + Core L#20 (P#0) + PU L#20 (P#20) + Core L#21 (P#1) + PU L#21 (P#21) + Package L#11 (P#2563) + Core L#22 (P#0) + PU L#22 (P#22) + Core L#23 (P#1) + PU L#23 (P#23) + Group2 L#6 (total=8077296KB) + NUMANode L#6 (P#6 local=8077296KB total=8077296KB) + Package L#12 (P#3072) + Core L#24 (P#0) + PU L#24 (P#24) + Core L#25 (P#1) + PU L#25 (P#25) + Package L#13 (P#3075) + Core L#26 (P#0) + PU L#26 (P#26) + Core L#27 (P#1) + PU L#27 (P#27) + Group2 L#7 (total=8077312KB) + NUMANode L#7 (P#7 local=8077312KB total=8077312KB) + Package L#14 (P#3584) + Core L#28 (P#0) + PU L#28 (P#28) + Core L#29 (P#1) + PU L#29 (P#29) + Package L#15 (P#3587) + Core L#30 (P#0) + PU L#30 (P#30) + Core L#31 (P#1) + PU L#31 (P#31) + Group1 L#2 (total=32309248KB) + Group2 L#8 (total=8077312KB) + NUMANode L#8 (P#8 local=8077312KB total=8077312KB) + Package L#16 (P#4096) + Core L#32 (P#0) + PU L#32 (P#32) + Core L#33 (P#1) + PU L#33 (P#33) + Package L#17 (P#4099) + Core L#34 (P#0) + PU L#34 (P#34) + Core L#35 (P#1) + PU L#35 (P#35) + Group2 L#9 (total=8077312KB) + NUMANode L#9 (P#9 local=8077312KB total=8077312KB) + Package L#18 (P#4608) + Core L#36 (P#0) + PU L#36 (P#36) + Core L#37 (P#1) + PU L#37 (P#37) + Package L#19 (P#4611) + Core L#38 (P#0) + PU L#38 (P#38) + Core L#39 (P#1) + PU L#39 (P#39) + Group2 L#10 (total=8077312KB) + NUMANode L#10 (P#10 local=8077312KB total=8077312KB) + Package L#20 (P#5120) + Core L#40 (P#0) + PU L#40 (P#40) + Core L#41 (P#1) + PU L#41 (P#41) + Package L#21 (P#5123) + Core L#42 (P#0) + PU L#42 (P#42) + Core L#43 (P#1) + PU L#43 (P#43) + Group2 L#11 (total=8077312KB) + NUMANode L#11 (P#11 local=8077312KB total=8077312KB) + Package L#22 (P#5632) + Core L#44 (P#0) + PU L#44 (P#44) + Core L#45 (P#1) + PU L#45 (P#45) + Package L#23 (P#5635) + Core L#46 (P#0) + PU L#46 (P#46) + Core L#47 (P#1) + PU L#47 (P#47) + Group1 L#3 (total=32309232KB) + Group2 L#12 (total=8077312KB) + NUMANode L#12 (P#12 local=8077312KB total=8077312KB) + Package L#24 (P#6144) + Core L#48 (P#0) + PU L#48 (P#48) + Core L#49 (P#1) + PU L#49 (P#49) + Package L#25 (P#6147) + Core L#50 (P#0) + PU L#50 (P#50) + Core L#51 (P#1) + PU L#51 (P#51) + Group2 L#13 (total=8077312KB) + NUMANode L#13 (P#13 local=8077312KB total=8077312KB) + Package L#26 (P#6656) + Core L#52 (P#0) + PU L#52 (P#52) + Core L#53 (P#1) + PU L#53 (P#53) + Package L#27 (P#6659) + Core L#54 (P#0) + PU L#54 (P#54) + Core L#55 (P#1) + PU L#55 (P#55) + Group2 L#14 (total=8077296KB) + NUMANode L#14 (P#14 local=8077296KB total=8077296KB) + Package L#28 (P#7168) + Core L#56 (P#0) + PU L#56 (P#56) + Core L#57 (P#1) + PU L#57 (P#57) + Package L#29 (P#7171) + Core L#58 (P#0) + PU L#58 (P#58) + Core L#59 (P#1) + PU L#59 (P#59) + Group2 L#15 (total=8077312KB) + NUMANode L#15 (P#15 local=8077312KB total=8077312KB) + Package L#30 (P#7680) + Core L#60 (P#0) + PU L#60 (P#60) + Core L#61 (P#1) + PU L#61 (P#61) + Package L#31 (P#7683) + Core L#62 (P#0) + PU L#62 (P#62) + Core L#63 (P#1) + PU L#63 (P#63) + Group0 L#1 (total=129236960KB) + Group1 L#4 (total=32309248KB) + Group2 L#16 (total=8077312KB) + NUMANode L#16 (P#16 local=8077312KB total=8077312KB) + Package L#32 (P#8192) + Core L#64 (P#0) + PU L#64 (P#64) + Core L#65 (P#1) + PU L#65 (P#65) + Package L#33 (P#8195) + Core L#66 (P#0) + PU L#66 (P#66) + Core L#67 (P#1) + PU L#67 (P#67) + Group2 L#17 (total=8077312KB) + NUMANode L#17 (P#17 local=8077312KB total=8077312KB) + Package L#34 (P#8704) + Core L#68 (P#0) + PU L#68 (P#68) + Core L#69 (P#1) + PU L#69 (P#69) + Package L#35 (P#8707) + Core L#70 (P#0) + PU L#70 (P#70) + Core L#71 (P#1) + PU L#71 (P#71) + Group2 L#18 (total=8077312KB) + NUMANode L#18 (P#18 local=8077312KB total=8077312KB) + Package L#36 (P#9216) + Core L#72 (P#0) + PU L#72 (P#72) + Core L#73 (P#1) + PU L#73 (P#73) + Package L#37 (P#9219) + Core L#74 (P#0) + PU L#74 (P#74) + Core L#75 (P#1) + PU L#75 (P#75) + Group2 L#19 (total=8077312KB) + NUMANode L#19 (P#19 local=8077312KB total=8077312KB) + Package L#38 (P#9728) + Core L#76 (P#0) + PU L#76 (P#76) + Core L#77 (P#1) + PU L#77 (P#77) + Package L#39 (P#9731) + Core L#78 (P#0) + PU L#78 (P#78) + Core L#79 (P#1) + PU L#79 (P#79) + Group1 L#5 (total=32309232KB) + Group2 L#20 (total=8077312KB) + NUMANode L#20 (P#20 local=8077312KB total=8077312KB) + Package L#40 (P#10240) + Core L#80 (P#0) + PU L#80 (P#80) + Core L#81 (P#1) + PU L#81 (P#81) + Package L#41 (P#10243) + Core L#82 (P#0) + PU L#82 (P#82) + Core L#83 (P#1) + PU L#83 (P#83) + Group2 L#21 (total=8077312KB) + NUMANode L#21 (P#21 local=8077312KB total=8077312KB) + Package L#42 (P#10752) + Core L#84 (P#0) + PU L#84 (P#84) + Core L#85 (P#1) + PU L#85 (P#85) + Package L#43 (P#10755) + Core L#86 (P#0) + PU L#86 (P#86) + Core L#87 (P#1) + PU L#87 (P#87) + Group2 L#22 (total=8077296KB) + NUMANode L#22 (P#22 local=8077296KB total=8077296KB) + Package L#44 (P#11264) + Core L#88 (P#0) + PU L#88 (P#88) + Core L#89 (P#1) + PU L#89 (P#89) + Package L#45 (P#11267) + Core L#90 (P#0) + PU L#90 (P#90) + Core L#91 (P#1) + PU L#91 (P#91) + Group2 L#23 (total=8077312KB) + NUMANode L#23 (P#23 local=8077312KB total=8077312KB) + Package L#46 (P#11776) + Core L#92 (P#0) + PU L#92 (P#92) + Core L#93 (P#1) + PU L#93 (P#93) + Package L#47 (P#11779) + Core L#94 (P#0) + PU L#94 (P#94) + Core L#95 (P#1) + PU L#95 (P#95) + Group1 L#6 (total=32309248KB) + Group2 L#24 (total=8077312KB) + NUMANode L#24 (P#24 local=8077312KB total=8077312KB) + Package L#48 (P#12288) + Core L#96 (P#0) + PU L#96 (P#96) + Core L#97 (P#1) + PU L#97 (P#97) + Package L#49 (P#12291) + Core L#98 (P#0) + PU L#98 (P#98) + Core L#99 (P#1) + PU L#99 (P#99) + Group2 L#25 (total=8077312KB) + NUMANode L#25 (P#25 local=8077312KB total=8077312KB) + Package L#50 (P#12800) + Core L#100 (P#0) + PU L#100 (P#100) + Core L#101 (P#1) + PU L#101 (P#101) + Package L#51 (P#12803) + Core L#102 (P#0) + PU L#102 (P#102) + Core L#103 (P#1) + PU L#103 (P#103) + Group2 L#26 (total=8077312KB) + NUMANode L#26 (P#26 local=8077312KB total=8077312KB) + Package L#52 (P#13312) + Core L#104 (P#0) + PU L#104 (P#104) + Core L#105 (P#1) + PU L#105 (P#105) + Package L#53 (P#13315) + Core L#106 (P#0) + PU L#106 (P#106) + Core L#107 (P#1) + PU L#107 (P#107) + Group2 L#27 (total=8077312KB) + NUMANode L#27 (P#27 local=8077312KB total=8077312KB) + Package L#54 (P#13824) + Core L#108 (P#0) + PU L#108 (P#108) + Core L#109 (P#1) + PU L#109 (P#109) + Package L#55 (P#13827) + Core L#110 (P#0) + PU L#110 (P#110) + Core L#111 (P#1) + PU L#111 (P#111) + Group1 L#7 (total=32309232KB) + Group2 L#28 (total=8077312KB) + NUMANode L#28 (P#28 local=8077312KB total=8077312KB) + Package L#56 (P#14336) + Core L#112 (P#0) + PU L#112 (P#112) + Core L#113 (P#1) + PU L#113 (P#113) + Package L#57 (P#14339) + Core L#114 (P#0) + PU L#114 (P#114) + Core L#115 (P#1) + PU L#115 (P#115) + Group2 L#29 (total=8077296KB) + NUMANode L#29 (P#29 local=8077296KB total=8077296KB) + Package L#58 (P#14848) + Core L#116 (P#0) + PU L#116 (P#116) + Core L#117 (P#1) + PU L#117 (P#117) + Package L#59 (P#14851) + Core L#118 (P#0) + PU L#118 (P#118) + Core L#119 (P#1) + PU L#119 (P#119) + Group2 L#30 (total=8077312KB) + NUMANode L#30 (P#30 local=8077312KB total=8077312KB) + Package L#60 (P#15360) + Core L#120 (P#0) + PU L#120 (P#120) + Core L#121 (P#1) + PU L#121 (P#121) + Package L#61 (P#15363) + Core L#122 (P#0) + PU L#122 (P#122) + Core L#123 (P#1) + PU L#123 (P#123) + Group2 L#31 (total=8077312KB) + NUMANode L#31 (P#31 local=8077312KB total=8077312KB) + Package L#62 (P#15872) + Core L#124 (P#0) + PU L#124 (P#124) + Core L#125 (P#1) + PU L#125 (P#125) + Package L#63 (P#15875) + Core L#126 (P#0) + PU L#126 (P#126) + Core L#127 (P#1) + PU L#127 (P#127) + Group0 L#2 (total=129236960KB) + Group1 L#8 (total=32309248KB) + Group2 L#32 (total=8077312KB) + NUMANode L#32 (P#32 local=8077312KB total=8077312KB) + Package L#64 (P#16384) + Core L#128 (P#0) + PU L#128 (P#128) + Core L#129 (P#1) + PU L#129 (P#129) + Package L#65 (P#16387) + Core L#130 (P#0) + PU L#130 (P#130) + Core L#131 (P#1) + PU L#131 (P#131) + Group2 L#33 (total=8077312KB) + NUMANode L#33 (P#33 local=8077312KB total=8077312KB) + Package L#66 (P#16896) + Core L#132 (P#0) + PU L#132 (P#132) + Core L#133 (P#1) + PU L#133 (P#133) + Package L#67 (P#16899) + Core L#134 (P#0) + PU L#134 (P#134) + Core L#135 (P#1) + PU L#135 (P#135) + Group2 L#34 (total=8077312KB) + NUMANode L#34 (P#34 local=8077312KB total=8077312KB) + Package L#68 (P#17408) + Core L#136 (P#0) + PU L#136 (P#136) + Core L#137 (P#1) + PU L#137 (P#137) + Package L#69 (P#17411) + Core L#138 (P#0) + PU L#138 (P#138) + Core L#139 (P#1) + PU L#139 (P#139) + Group2 L#35 (total=8077312KB) + NUMANode L#35 (P#35 local=8077312KB total=8077312KB) + Package L#70 (P#17920) + Core L#140 (P#0) + PU L#140 (P#140) + Core L#141 (P#1) + PU L#141 (P#141) + Package L#71 (P#17923) + Core L#142 (P#0) + PU L#142 (P#142) + Core L#143 (P#1) + PU L#143 (P#143) + Group1 L#9 (total=32309232KB) + Group2 L#36 (total=8077312KB) + NUMANode L#36 (P#36 local=8077312KB total=8077312KB) + Package L#72 (P#18432) + Core L#144 (P#0) + PU L#144 (P#144) + Core L#145 (P#1) + PU L#145 (P#145) + Package L#73 (P#18435) + Core L#146 (P#0) + PU L#146 (P#146) + Core L#147 (P#1) + PU L#147 (P#147) + Group2 L#37 (total=8077296KB) + NUMANode L#37 (P#37 local=8077296KB total=8077296KB) + Package L#74 (P#18944) + Core L#148 (P#0) + PU L#148 (P#148) + Core L#149 (P#1) + PU L#149 (P#149) + Package L#75 (P#18947) + Core L#150 (P#0) + PU L#150 (P#150) + Core L#151 (P#1) + PU L#151 (P#151) + Group2 L#38 (total=8077312KB) + NUMANode L#38 (P#38 local=8077312KB total=8077312KB) + Package L#76 (P#19456) + Core L#152 (P#0) + PU L#152 (P#152) + Core L#153 (P#1) + PU L#153 (P#153) + Package L#77 (P#19459) + Core L#154 (P#0) + PU L#154 (P#154) + Core L#155 (P#1) + PU L#155 (P#155) + Group2 L#39 (total=8077312KB) + NUMANode L#39 (P#39 local=8077312KB total=8077312KB) + Package L#78 (P#19968) + Core L#156 (P#0) + PU L#156 (P#156) + Core L#157 (P#1) + PU L#157 (P#157) + Package L#79 (P#19971) + Core L#158 (P#0) + PU L#158 (P#158) + Core L#159 (P#1) + PU L#159 (P#159) + Group1 L#10 (total=32309248KB) + Group2 L#40 (total=8077312KB) + NUMANode L#40 (P#40 local=8077312KB total=8077312KB) + Package L#80 (P#20480) + Core L#160 (P#0) + PU L#160 (P#160) + Core L#161 (P#1) + PU L#161 (P#161) + Package L#81 (P#20483) + Core L#162 (P#0) + PU L#162 (P#162) + Core L#163 (P#1) + PU L#163 (P#163) + Group2 L#41 (total=8077312KB) + NUMANode L#41 (P#41 local=8077312KB total=8077312KB) + Package L#82 (P#20992) + Core L#164 (P#0) + PU L#164 (P#164) + Core L#165 (P#1) + PU L#165 (P#165) + Package L#83 (P#20995) + Core L#166 (P#0) + PU L#166 (P#166) + Core L#167 (P#1) + PU L#167 (P#167) + Group2 L#42 (total=8077312KB) + NUMANode L#42 (P#42 local=8077312KB total=8077312KB) + Package L#84 (P#21504) + Core L#168 (P#0) + PU L#168 (P#168) + Core L#169 (P#1) + PU L#169 (P#169) + Package L#85 (P#21507) + Core L#170 (P#0) + PU L#170 (P#170) + Core L#171 (P#1) + PU L#171 (P#171) + Group2 L#43 (total=8077312KB) + NUMANode L#43 (P#43 local=8077312KB total=8077312KB) + Package L#86 (P#22016) + Core L#172 (P#0) + PU L#172 (P#172) + Core L#173 (P#1) + PU L#173 (P#173) + Package L#87 (P#22019) + Core L#174 (P#0) + PU L#174 (P#174) + Core L#175 (P#1) + PU L#175 (P#175) + Group1 L#11 (total=32309232KB) + Group2 L#44 (total=8077312KB) + NUMANode L#44 (P#44 local=8077312KB total=8077312KB) + Package L#88 (P#22528) + Core L#176 (P#0) + PU L#176 (P#176) + Core L#177 (P#1) + PU L#177 (P#177) + Package L#89 (P#22531) + Core L#178 (P#0) + PU L#178 (P#178) + Core L#179 (P#1) + PU L#179 (P#179) + Group2 L#45 (total=8077296KB) + NUMANode L#45 (P#45 local=8077296KB total=8077296KB) + Package L#90 (P#23040) + Core L#180 (P#0) + PU L#180 (P#180) + Core L#181 (P#1) + PU L#181 (P#181) + Package L#91 (P#23043) + Core L#182 (P#0) + PU L#182 (P#182) + Core L#183 (P#1) + PU L#183 (P#183) + Group2 L#46 (total=8077312KB) + NUMANode L#46 (P#46 local=8077312KB total=8077312KB) + Package L#92 (P#23552) + Core L#184 (P#0) + PU L#184 (P#184) + Core L#185 (P#1) + PU L#185 (P#185) + Package L#93 (P#23555) + Core L#186 (P#0) + PU L#186 (P#186) + Core L#187 (P#1) + PU L#187 (P#187) + Group2 L#47 (total=8077312KB) + NUMANode L#47 (P#47 local=8077312KB total=8077312KB) + Package L#94 (P#24064) + Core L#188 (P#0) + PU L#188 (P#188) + Core L#189 (P#1) + PU L#189 (P#189) + Package L#95 (P#24067) + Core L#190 (P#0) + PU L#190 (P#190) + Core L#191 (P#1) + PU L#191 (P#191) + Group0 L#3 (total=129214208KB) + Group1 L#12 (total=32309248KB) + Group2 L#48 (total=8077312KB) + NUMANode L#48 (P#48 local=8077312KB total=8077312KB) + Package L#96 (P#24576) + Core L#192 (P#0) + PU L#192 (P#192) + Core L#193 (P#1) + PU L#193 (P#193) + Package L#97 (P#24579) + Core L#194 (P#0) + PU L#194 (P#194) + Core L#195 (P#1) + PU L#195 (P#195) + Group2 L#49 (total=8077312KB) + NUMANode L#49 (P#49 local=8077312KB total=8077312KB) + Package L#98 (P#25088) + Core L#196 (P#0) + PU L#196 (P#196) + Core L#197 (P#1) + PU L#197 (P#197) + Package L#99 (P#25091) + Core L#198 (P#0) + PU L#198 (P#198) + Core L#199 (P#1) + PU L#199 (P#199) + Group2 L#50 (total=8077312KB) + NUMANode L#50 (P#50 local=8077312KB total=8077312KB) + Package L#100 (P#25600) + Core L#200 (P#0) + PU L#200 (P#200) + Core L#201 (P#1) + PU L#201 (P#201) + Package L#101 (P#25603) + Core L#202 (P#0) + PU L#202 (P#202) + Core L#203 (P#1) + PU L#203 (P#203) + Group2 L#51 (total=8077312KB) + NUMANode L#51 (P#51 local=8077312KB total=8077312KB) + Package L#102 (P#26112) + Core L#204 (P#0) + PU L#204 (P#204) + Core L#205 (P#1) + PU L#205 (P#205) + Package L#103 (P#26115) + Core L#206 (P#0) + PU L#206 (P#206) + Core L#207 (P#1) + PU L#207 (P#207) + Group1 L#13 (total=32309232KB) + Group2 L#52 (total=8077312KB) + NUMANode L#52 (P#52 local=8077312KB total=8077312KB) + Package L#104 (P#26624) + Core L#208 (P#0) + PU L#208 (P#208) + Core L#209 (P#1) + PU L#209 (P#209) + Package L#105 (P#26627) + Core L#210 (P#0) + PU L#210 (P#210) + Core L#211 (P#1) + PU L#211 (P#211) + Group2 L#53 (total=8077296KB) + NUMANode L#53 (P#53 local=8077296KB total=8077296KB) + Package L#106 (P#27136) + Core L#212 (P#0) + PU L#212 (P#212) + Core L#213 (P#1) + PU L#213 (P#213) + Package L#107 (P#27139) + Core L#214 (P#0) + PU L#214 (P#214) + Core L#215 (P#1) + PU L#215 (P#215) + Group2 L#54 (total=8077312KB) + NUMANode L#54 (P#54 local=8077312KB total=8077312KB) + Package L#108 (P#27648) + Core L#216 (P#0) + PU L#216 (P#216) + Core L#217 (P#1) + PU L#217 (P#217) + Package L#109 (P#27651) + Core L#218 (P#0) + PU L#218 (P#218) + Core L#219 (P#1) + PU L#219 (P#219) + Group2 L#55 (total=8077312KB) + NUMANode L#55 (P#55 local=8077312KB total=8077312KB) + Package L#110 (P#28160) + Core L#220 (P#0) + PU L#220 (P#220) + Core L#221 (P#1) + PU L#221 (P#221) + Package L#111 (P#28163) + Core L#222 (P#0) + PU L#222 (P#222) + Core L#223 (P#1) + PU L#223 (P#223) + Group1 L#14 (total=32309248KB) + Group2 L#56 (total=8077312KB) + NUMANode L#56 (P#56 local=8077312KB total=8077312KB) + Package L#112 (P#28672) + Core L#224 (P#0) + PU L#224 (P#224) + Core L#225 (P#1) + PU L#225 (P#225) + Package L#113 (P#28675) + Core L#226 (P#0) + PU L#226 (P#226) + Core L#227 (P#1) + PU L#227 (P#227) + Group2 L#57 (total=8077312KB) + NUMANode L#57 (P#57 local=8077312KB total=8077312KB) + Package L#114 (P#29184) + Core L#228 (P#0) + PU L#228 (P#228) + Core L#229 (P#1) + PU L#229 (P#229) + Package L#115 (P#29187) + Core L#230 (P#0) + PU L#230 (P#230) + Core L#231 (P#1) + PU L#231 (P#231) + Group2 L#58 (total=8077312KB) + NUMANode L#58 (P#58 local=8077312KB total=8077312KB) + Package L#116 (P#29696) + Core L#232 (P#0) + PU L#232 (P#232) + Core L#233 (P#1) + PU L#233 (P#233) + Package L#117 (P#29699) + Core L#234 (P#0) + PU L#234 (P#234) + Core L#235 (P#1) + PU L#235 (P#235) + Group2 L#59 (total=8077312KB) + NUMANode L#59 (P#59 local=8077312KB total=8077312KB) + Package L#118 (P#30208) + Core L#236 (P#0) + PU L#236 (P#236) + Core L#237 (P#1) + PU L#237 (P#237) + Package L#119 (P#30211) + Core L#238 (P#0) + PU L#238 (P#238) + Core L#239 (P#1) + PU L#239 (P#239) + Group1 L#15 (total=32286480KB) + Group2 L#60 (total=8077312KB) + NUMANode L#60 (P#60 local=8077312KB total=8077312KB) + Package L#120 (P#30720) + Core L#240 (P#0) + PU L#240 (P#240) + Core L#241 (P#1) + PU L#241 (P#241) + Package L#121 (P#30723) + Core L#242 (P#0) + PU L#242 (P#242) + Core L#243 (P#1) + PU L#243 (P#243) + Group2 L#61 (total=8077296KB) + NUMANode L#61 (P#61 local=8077296KB total=8077296KB) + Package L#122 (P#31232) + Core L#244 (P#0) + PU L#244 (P#244) + Core L#245 (P#1) + PU L#245 (P#245) + Package L#123 (P#31235) + Core L#246 (P#0) + PU L#246 (P#246) + Core L#247 (P#1) + PU L#247 (P#247) + Group2 L#62 (total=8077312KB) + NUMANode L#62 (P#62 local=8077312KB total=8077312KB) + Package L#124 (P#31744) + Core L#248 (P#0) + PU L#248 (P#248) + Core L#249 (P#1) + PU L#249 (P#249) + Package L#125 (P#31747) + Core L#250 (P#0) + PU L#250 (P#250) + Core L#251 (P#1) + PU L#251 (P#251) + Group2 L#63 (total=8054560KB) + NUMANode L#63 (P#63 local=8054560KB total=8054560KB) + Package L#126 (P#32256) + Core L#252 (P#0) + PU L#252 (P#252) + Core L#253 (P#1) + PU L#253 (P#253) + Package L#127 (P#32259) + Core L#254 (P#0) + PU L#254 (P#254) + Core L#255 (P#1) + PU L#255 (P#255) +depth 0: 1 Machine (type #0) + depth 1: 4 Group0 (type #12) + depth 2: 16 Group1 (type #12) + depth 3: 64 Group2 (type #12) + depth 4: 128 Package (type #1) + depth 5: 256 Core (type #2) + depth 6: 256 PU (type #3) +Special depth -3: 64 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 64 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 + 0 10 22 22 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 1 22 10 22 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 2 22 22 10 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 3 22 22 22 10 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 4 26 26 26 26 10 22 22 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 5 26 26 26 26 22 10 22 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 6 26 26 26 26 22 22 10 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 7 26 26 26 26 22 22 22 10 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 8 26 26 26 26 30 30 30 30 10 22 22 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 9 26 26 26 26 30 30 30 30 22 10 22 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 10 26 26 26 26 30 30 30 30 22 22 10 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 11 26 26 26 26 30 30 30 30 22 22 22 10 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 12 30 30 30 30 26 26 26 26 26 26 26 26 10 22 22 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 13 30 30 30 30 26 26 26 26 26 26 26 26 22 10 22 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 14 30 30 30 30 26 26 26 26 26 26 26 26 22 22 10 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 15 30 30 30 30 26 26 26 26 26 26 26 26 22 22 22 10 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 16 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 10 22 22 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 17 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 10 22 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 18 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 22 10 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 19 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 22 22 10 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 20 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 10 22 22 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 21 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 10 22 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 22 10 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 23 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 22 22 10 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 24 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 10 22 22 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 25 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 10 22 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 22 10 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 27 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 22 22 10 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 28 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 10 22 22 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 29 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 10 22 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 22 10 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 31 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 22 22 10 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 32 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 10 22 22 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 33 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 10 22 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 22 10 22 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 35 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 22 22 10 26 26 26 26 26 26 26 26 30 30 30 30 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 36 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 10 22 22 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 37 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 10 22 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 38 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 22 10 22 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 39 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 22 22 10 30 30 30 30 26 26 26 26 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 40 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 10 22 22 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 41 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 10 22 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 42 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 22 10 22 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 43 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 22 22 10 26 26 26 26 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 + 44 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 10 22 22 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 45 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 10 22 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 46 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 22 10 22 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 47 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 22 22 10 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 + 48 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 10 22 22 22 26 26 26 26 26 26 26 26 30 30 30 30 + 49 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 10 22 22 26 26 26 26 26 26 26 26 30 30 30 30 + 50 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 22 10 22 26 26 26 26 26 26 26 26 30 30 30 30 + 51 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 22 22 22 10 26 26 26 26 26 26 26 26 30 30 30 30 + 52 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 10 22 22 22 30 30 30 30 26 26 26 26 + 53 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 10 22 22 30 30 30 30 26 26 26 26 + 54 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 22 10 22 30 30 30 30 26 26 26 26 + 55 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 26 26 26 26 22 22 22 10 30 30 30 30 26 26 26 26 + 56 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 10 22 22 22 26 26 26 26 + 57 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 10 22 22 26 26 26 26 + 58 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 22 10 22 26 26 26 26 + 59 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 26 26 26 26 30 30 30 30 22 22 22 10 26 26 26 26 + 60 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 10 22 22 22 + 61 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 10 22 22 + 62 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 22 10 22 + 63 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 34 34 34 34 30 30 30 30 30 30 30 30 26 26 26 26 26 26 26 26 22 22 22 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ia64-64n2s2c.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ia64-64n2s2c.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5e30231a7c9a1bc296cb1d74e4c64b5bdb3ac2f0 GIT binary patch literal 17026 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ppc-8n8s4t.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ppc-8n8s4t.output new file mode 100644 index 0000000000..2f47439c17 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ppc-8n8s4t.output @@ -0,0 +1,683 @@ +Machine (P#0 total=516423680KB PlatformName=pSeries PlatformModel="CHRP IBM,9179-MHB" Backend=Linux Architecture=ppc) + Group0 L#0 (total=124780544KB) + Group1 L#0 (total=58458112KB) + NUMANode L#0 (P#0 local=58458112KB total=58458112KB) + Package L#0 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#0 (size=4096KB linesize=128) + L2Cache L#0 (size=256KB linesize=128 ways=8) + L1dCache L#0 (size=32KB linesize=128 ways=8) + L1iCache L#0 (size=32KB linesize=128 ways=4) + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#1) + PU L#2 (P#2) + PU L#3 (P#3) + Package L#1 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#1 (size=4096KB linesize=128) + L2Cache L#1 (size=256KB linesize=128 ways=8) + L1dCache L#1 (size=32KB linesize=128 ways=8) + L1iCache L#1 (size=32KB linesize=128 ways=4) + Core L#1 (P#4) + PU L#4 (P#4) + PU L#5 (P#5) + PU L#6 (P#6) + PU L#7 (P#7) + Package L#2 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#2 (size=4096KB linesize=128) + L2Cache L#2 (size=256KB linesize=128 ways=8) + L1dCache L#2 (size=32KB linesize=128 ways=8) + L1iCache L#2 (size=32KB linesize=128 ways=4) + Core L#2 (P#8) + PU L#8 (P#8) + PU L#9 (P#9) + PU L#10 (P#10) + PU L#11 (P#11) + Package L#3 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#3 (size=4096KB linesize=128) + L2Cache L#3 (size=256KB linesize=128 ways=8) + L1dCache L#3 (size=32KB linesize=128 ways=8) + L1iCache L#3 (size=32KB linesize=128 ways=4) + Core L#3 (P#12) + PU L#12 (P#12) + PU L#13 (P#13) + PU L#14 (P#14) + PU L#15 (P#15) + Package L#4 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#4 (size=4096KB linesize=128) + L2Cache L#4 (size=256KB linesize=128 ways=8) + L1dCache L#4 (size=32KB linesize=128 ways=8) + L1iCache L#4 (size=32KB linesize=128 ways=4) + Core L#4 (P#16) + PU L#16 (P#16) + PU L#17 (P#17) + PU L#18 (P#18) + PU L#19 (P#19) + Package L#5 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#5 (size=4096KB linesize=128) + L2Cache L#5 (size=256KB linesize=128 ways=8) + L1dCache L#5 (size=32KB linesize=128 ways=8) + L1iCache L#5 (size=32KB linesize=128 ways=4) + Core L#5 (P#20) + PU L#20 (P#20) + PU L#21 (P#21) + PU L#22 (P#22) + PU L#23 (P#23) + Package L#6 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#6 (size=4096KB linesize=128) + L2Cache L#6 (size=256KB linesize=128 ways=8) + L1dCache L#6 (size=32KB linesize=128 ways=8) + L1iCache L#6 (size=32KB linesize=128 ways=4) + Core L#6 (P#24) + PU L#24 (P#24) + PU L#25 (P#25) + PU L#26 (P#26) + PU L#27 (P#27) + Package L#7 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#7 (size=4096KB linesize=128) + L2Cache L#7 (size=256KB linesize=128 ways=8) + L1dCache L#7 (size=32KB linesize=128 ways=8) + L1iCache L#7 (size=32KB linesize=128 ways=4) + Core L#7 (P#28) + PU L#28 (P#28) + PU L#29 (P#29) + PU L#30 (P#30) + PU L#31 (P#31) + Group1 L#1 (total=66322432KB) + NUMANode L#1 (P#1 local=66322432KB total=66322432KB) + Package L#8 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#8 (size=4096KB linesize=128) + L2Cache L#8 (size=256KB linesize=128 ways=8) + L1dCache L#8 (size=32KB linesize=128 ways=8) + L1iCache L#8 (size=32KB linesize=128 ways=4) + Core L#8 (P#32) + PU L#32 (P#32) + PU L#33 (P#33) + PU L#34 (P#34) + PU L#35 (P#35) + Package L#9 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#9 (size=4096KB linesize=128) + L2Cache L#9 (size=256KB linesize=128 ways=8) + L1dCache L#9 (size=32KB linesize=128 ways=8) + L1iCache L#9 (size=32KB linesize=128 ways=4) + Core L#9 (P#36) + PU L#36 (P#36) + PU L#37 (P#37) + PU L#38 (P#38) + PU L#39 (P#39) + Package L#10 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#10 (size=4096KB linesize=128) + L2Cache L#10 (size=256KB linesize=128 ways=8) + L1dCache L#10 (size=32KB linesize=128 ways=8) + L1iCache L#10 (size=32KB linesize=128 ways=4) + Core L#10 (P#40) + PU L#40 (P#40) + PU L#41 (P#41) + PU L#42 (P#42) + PU L#43 (P#43) + Package L#11 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#11 (size=4096KB linesize=128) + L2Cache L#11 (size=256KB linesize=128 ways=8) + L1dCache L#11 (size=32KB linesize=128 ways=8) + L1iCache L#11 (size=32KB linesize=128 ways=4) + Core L#11 (P#44) + PU L#44 (P#44) + PU L#45 (P#45) + PU L#46 (P#46) + PU L#47 (P#47) + Package L#12 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#12 (size=4096KB linesize=128) + L2Cache L#12 (size=256KB linesize=128 ways=8) + L1dCache L#12 (size=32KB linesize=128 ways=8) + L1iCache L#12 (size=32KB linesize=128 ways=4) + Core L#12 (P#48) + PU L#48 (P#48) + PU L#49 (P#49) + PU L#50 (P#50) + PU L#51 (P#51) + Package L#13 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#13 (size=4096KB linesize=128) + L2Cache L#13 (size=256KB linesize=128 ways=8) + L1dCache L#13 (size=32KB linesize=128 ways=8) + L1iCache L#13 (size=32KB linesize=128 ways=4) + Core L#13 (P#52) + PU L#52 (P#52) + PU L#53 (P#53) + PU L#54 (P#54) + PU L#55 (P#55) + Package L#14 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#14 (size=4096KB linesize=128) + L2Cache L#14 (size=256KB linesize=128 ways=8) + L1dCache L#14 (size=32KB linesize=128 ways=8) + L1iCache L#14 (size=32KB linesize=128 ways=4) + Core L#14 (P#56) + PU L#56 (P#56) + PU L#57 (P#57) + PU L#58 (P#58) + PU L#59 (P#59) + Package L#15 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#15 (size=4096KB linesize=128) + L2Cache L#15 (size=256KB linesize=128 ways=8) + L1dCache L#15 (size=32KB linesize=128 ways=8) + L1iCache L#15 (size=32KB linesize=128 ways=4) + Core L#15 (P#60) + PU L#60 (P#60) + PU L#61 (P#61) + PU L#62 (P#62) + PU L#63 (P#63) + Group0 L#1 (total=133955584KB) + Group1 L#2 (total=66846720KB) + NUMANode L#2 (P#4 local=66846720KB total=66846720KB) + Package L#16 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#16 (size=4096KB linesize=128) + L2Cache L#16 (size=256KB linesize=128 ways=8) + L1dCache L#16 (size=32KB linesize=128 ways=8) + L1iCache L#16 (size=32KB linesize=128 ways=4) + Core L#16 (P#64) + PU L#64 (P#64) + PU L#65 (P#65) + PU L#66 (P#66) + PU L#67 (P#67) + Package L#17 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#17 (size=4096KB linesize=128) + L2Cache L#17 (size=256KB linesize=128 ways=8) + L1dCache L#17 (size=32KB linesize=128 ways=8) + L1iCache L#17 (size=32KB linesize=128 ways=4) + Core L#17 (P#68) + PU L#68 (P#68) + PU L#69 (P#69) + PU L#70 (P#70) + PU L#71 (P#71) + Package L#18 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#18 (size=4096KB linesize=128) + L2Cache L#18 (size=256KB linesize=128 ways=8) + L1dCache L#18 (size=32KB linesize=128 ways=8) + L1iCache L#18 (size=32KB linesize=128 ways=4) + Core L#18 (P#72) + PU L#72 (P#72) + PU L#73 (P#73) + PU L#74 (P#74) + PU L#75 (P#75) + Package L#19 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#19 (size=4096KB linesize=128) + L2Cache L#19 (size=256KB linesize=128 ways=8) + L1dCache L#19 (size=32KB linesize=128 ways=8) + L1iCache L#19 (size=32KB linesize=128 ways=4) + Core L#19 (P#76) + PU L#76 (P#76) + PU L#77 (P#77) + PU L#78 (P#78) + PU L#79 (P#79) + Package L#20 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#20 (size=4096KB linesize=128) + L2Cache L#20 (size=256KB linesize=128 ways=8) + L1dCache L#20 (size=32KB linesize=128 ways=8) + L1iCache L#20 (size=32KB linesize=128 ways=4) + Core L#20 (P#80) + PU L#80 (P#80) + PU L#81 (P#81) + PU L#82 (P#82) + PU L#83 (P#83) + Package L#21 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#21 (size=4096KB linesize=128) + L2Cache L#21 (size=256KB linesize=128 ways=8) + L1dCache L#21 (size=32KB linesize=128 ways=8) + L1iCache L#21 (size=32KB linesize=128 ways=4) + Core L#21 (P#84) + PU L#84 (P#84) + PU L#85 (P#85) + PU L#86 (P#86) + PU L#87 (P#87) + Package L#22 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#22 (size=4096KB linesize=128) + L2Cache L#22 (size=256KB linesize=128 ways=8) + L1dCache L#22 (size=32KB linesize=128 ways=8) + L1iCache L#22 (size=32KB linesize=128 ways=4) + Core L#22 (P#88) + PU L#88 (P#88) + PU L#89 (P#89) + PU L#90 (P#90) + PU L#91 (P#91) + Package L#23 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#23 (size=4096KB linesize=128) + L2Cache L#23 (size=256KB linesize=128 ways=8) + L1dCache L#23 (size=32KB linesize=128 ways=8) + L1iCache L#23 (size=32KB linesize=128 ways=4) + Core L#23 (P#92) + PU L#92 (P#92) + PU L#93 (P#93) + PU L#94 (P#94) + PU L#95 (P#95) + Group1 L#3 (total=67108864KB) + NUMANode L#3 (P#5 local=67108864KB total=67108864KB) + Package L#24 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#24 (size=4096KB linesize=128) + L2Cache L#24 (size=256KB linesize=128 ways=8) + L1dCache L#24 (size=32KB linesize=128 ways=8) + L1iCache L#24 (size=32KB linesize=128 ways=4) + Core L#24 (P#96) + PU L#96 (P#96) + PU L#97 (P#97) + PU L#98 (P#98) + PU L#99 (P#99) + Package L#25 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#25 (size=4096KB linesize=128) + L2Cache L#25 (size=256KB linesize=128 ways=8) + L1dCache L#25 (size=32KB linesize=128 ways=8) + L1iCache L#25 (size=32KB linesize=128 ways=4) + Core L#25 (P#100) + PU L#100 (P#100) + PU L#101 (P#101) + PU L#102 (P#102) + PU L#103 (P#103) + Package L#26 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#26 (size=4096KB linesize=128) + L2Cache L#26 (size=256KB linesize=128 ways=8) + L1dCache L#26 (size=32KB linesize=128 ways=8) + L1iCache L#26 (size=32KB linesize=128 ways=4) + Core L#26 (P#104) + PU L#104 (P#104) + PU L#105 (P#105) + PU L#106 (P#106) + PU L#107 (P#107) + Package L#27 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#27 (size=4096KB linesize=128) + L2Cache L#27 (size=256KB linesize=128 ways=8) + L1dCache L#27 (size=32KB linesize=128 ways=8) + L1iCache L#27 (size=32KB linesize=128 ways=4) + Core L#27 (P#108) + PU L#108 (P#108) + PU L#109 (P#109) + PU L#110 (P#110) + PU L#111 (P#111) + Package L#28 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#28 (size=4096KB linesize=128) + L2Cache L#28 (size=256KB linesize=128 ways=8) + L1dCache L#28 (size=32KB linesize=128 ways=8) + L1iCache L#28 (size=32KB linesize=128 ways=4) + Core L#28 (P#112) + PU L#112 (P#112) + PU L#113 (P#113) + PU L#114 (P#114) + PU L#115 (P#115) + Package L#29 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#29 (size=4096KB linesize=128) + L2Cache L#29 (size=256KB linesize=128 ways=8) + L1dCache L#29 (size=32KB linesize=128 ways=8) + L1iCache L#29 (size=32KB linesize=128 ways=4) + Core L#29 (P#116) + PU L#116 (P#116) + PU L#117 (P#117) + PU L#118 (P#118) + PU L#119 (P#119) + Package L#30 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#30 (size=4096KB linesize=128) + L2Cache L#30 (size=256KB linesize=128 ways=8) + L1dCache L#30 (size=32KB linesize=128 ways=8) + L1iCache L#30 (size=32KB linesize=128 ways=4) + Core L#30 (P#120) + PU L#120 (P#120) + PU L#121 (P#121) + PU L#122 (P#122) + PU L#123 (P#123) + Package L#31 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#31 (size=4096KB linesize=128) + L2Cache L#31 (size=256KB linesize=128 ways=8) + L1dCache L#31 (size=32KB linesize=128 ways=8) + L1iCache L#31 (size=32KB linesize=128 ways=4) + Core L#31 (P#124) + PU L#124 (P#124) + PU L#125 (P#125) + PU L#126 (P#126) + PU L#127 (P#127) + Group0 L#2 (total=133955584KB) + Group1 L#4 (total=66846720KB) + NUMANode L#4 (P#8 local=66846720KB total=66846720KB) + Package L#32 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#32 (size=4096KB linesize=128) + L2Cache L#32 (size=256KB linesize=128 ways=8) + L1dCache L#32 (size=32KB linesize=128 ways=8) + L1iCache L#32 (size=32KB linesize=128 ways=4) + Core L#32 (P#128) + PU L#128 (P#128) + PU L#129 (P#129) + PU L#130 (P#130) + PU L#131 (P#131) + Package L#33 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#33 (size=4096KB linesize=128) + L2Cache L#33 (size=256KB linesize=128 ways=8) + L1dCache L#33 (size=32KB linesize=128 ways=8) + L1iCache L#33 (size=32KB linesize=128 ways=4) + Core L#33 (P#132) + PU L#132 (P#132) + PU L#133 (P#133) + PU L#134 (P#134) + PU L#135 (P#135) + Package L#34 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#34 (size=4096KB linesize=128) + L2Cache L#34 (size=256KB linesize=128 ways=8) + L1dCache L#34 (size=32KB linesize=128 ways=8) + L1iCache L#34 (size=32KB linesize=128 ways=4) + Core L#34 (P#136) + PU L#136 (P#136) + PU L#137 (P#137) + PU L#138 (P#138) + PU L#139 (P#139) + Package L#35 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#35 (size=4096KB linesize=128) + L2Cache L#35 (size=256KB linesize=128 ways=8) + L1dCache L#35 (size=32KB linesize=128 ways=8) + L1iCache L#35 (size=32KB linesize=128 ways=4) + Core L#35 (P#140) + PU L#140 (P#140) + PU L#141 (P#141) + PU L#142 (P#142) + PU L#143 (P#143) + Package L#36 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#36 (size=4096KB linesize=128) + L2Cache L#36 (size=256KB linesize=128 ways=8) + L1dCache L#36 (size=32KB linesize=128 ways=8) + L1iCache L#36 (size=32KB linesize=128 ways=4) + Core L#36 (P#144) + PU L#144 (P#144) + PU L#145 (P#145) + PU L#146 (P#146) + PU L#147 (P#147) + Package L#37 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#37 (size=4096KB linesize=128) + L2Cache L#37 (size=256KB linesize=128 ways=8) + L1dCache L#37 (size=32KB linesize=128 ways=8) + L1iCache L#37 (size=32KB linesize=128 ways=4) + Core L#37 (P#148) + PU L#148 (P#148) + PU L#149 (P#149) + PU L#150 (P#150) + PU L#151 (P#151) + Package L#38 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#38 (size=4096KB linesize=128) + L2Cache L#38 (size=256KB linesize=128 ways=8) + L1dCache L#38 (size=32KB linesize=128 ways=8) + L1iCache L#38 (size=32KB linesize=128 ways=4) + Core L#38 (P#152) + PU L#152 (P#152) + PU L#153 (P#153) + PU L#154 (P#154) + PU L#155 (P#155) + Package L#39 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#39 (size=4096KB linesize=128) + L2Cache L#39 (size=256KB linesize=128 ways=8) + L1dCache L#39 (size=32KB linesize=128 ways=8) + L1iCache L#39 (size=32KB linesize=128 ways=4) + Core L#39 (P#156) + PU L#156 (P#156) + PU L#157 (P#157) + PU L#158 (P#158) + PU L#159 (P#159) + Group1 L#5 (total=67108864KB) + NUMANode L#5 (P#9 local=67108864KB total=67108864KB) + Package L#40 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#40 (size=4096KB linesize=128) + L2Cache L#40 (size=256KB linesize=128 ways=8) + L1dCache L#40 (size=32KB linesize=128 ways=8) + L1iCache L#40 (size=32KB linesize=128 ways=4) + Core L#40 (P#160) + PU L#160 (P#160) + PU L#161 (P#161) + PU L#162 (P#162) + PU L#163 (P#163) + Package L#41 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#41 (size=4096KB linesize=128) + L2Cache L#41 (size=256KB linesize=128 ways=8) + L1dCache L#41 (size=32KB linesize=128 ways=8) + L1iCache L#41 (size=32KB linesize=128 ways=4) + Core L#41 (P#164) + PU L#164 (P#164) + PU L#165 (P#165) + PU L#166 (P#166) + PU L#167 (P#167) + Package L#42 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#42 (size=4096KB linesize=128) + L2Cache L#42 (size=256KB linesize=128 ways=8) + L1dCache L#42 (size=32KB linesize=128 ways=8) + L1iCache L#42 (size=32KB linesize=128 ways=4) + Core L#42 (P#168) + PU L#168 (P#168) + PU L#169 (P#169) + PU L#170 (P#170) + PU L#171 (P#171) + Package L#43 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#43 (size=4096KB linesize=128) + L2Cache L#43 (size=256KB linesize=128 ways=8) + L1dCache L#43 (size=32KB linesize=128 ways=8) + L1iCache L#43 (size=32KB linesize=128 ways=4) + Core L#43 (P#172) + PU L#172 (P#172) + PU L#173 (P#173) + PU L#174 (P#174) + PU L#175 (P#175) + Package L#44 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#44 (size=4096KB linesize=128) + L2Cache L#44 (size=256KB linesize=128 ways=8) + L1dCache L#44 (size=32KB linesize=128 ways=8) + L1iCache L#44 (size=32KB linesize=128 ways=4) + Core L#44 (P#176) + PU L#176 (P#176) + PU L#177 (P#177) + PU L#178 (P#178) + PU L#179 (P#179) + Package L#45 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#45 (size=4096KB linesize=128) + L2Cache L#45 (size=256KB linesize=128 ways=8) + L1dCache L#45 (size=32KB linesize=128 ways=8) + L1iCache L#45 (size=32KB linesize=128 ways=4) + Core L#45 (P#180) + PU L#180 (P#180) + PU L#181 (P#181) + PU L#182 (P#182) + PU L#183 (P#183) + Package L#46 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#46 (size=4096KB linesize=128) + L2Cache L#46 (size=256KB linesize=128 ways=8) + L1dCache L#46 (size=32KB linesize=128 ways=8) + L1iCache L#46 (size=32KB linesize=128 ways=4) + Core L#46 (P#184) + PU L#184 (P#184) + PU L#185 (P#185) + PU L#186 (P#186) + PU L#187 (P#187) + Package L#47 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#47 (size=4096KB linesize=128) + L2Cache L#47 (size=256KB linesize=128 ways=8) + L1dCache L#47 (size=32KB linesize=128 ways=8) + L1iCache L#47 (size=32KB linesize=128 ways=4) + Core L#47 (P#188) + PU L#188 (P#188) + PU L#189 (P#189) + PU L#190 (P#190) + PU L#191 (P#191) + Group0 L#3 (total=123731968KB) + Group1 L#6 (total=66846720KB) + NUMANode L#6 (P#12 local=66846720KB total=66846720KB) + Package L#48 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#48 (size=4096KB linesize=128) + L2Cache L#48 (size=256KB linesize=128 ways=8) + L1dCache L#48 (size=32KB linesize=128 ways=8) + L1iCache L#48 (size=32KB linesize=128 ways=4) + Core L#48 (P#192) + PU L#192 (P#192) + PU L#193 (P#193) + PU L#194 (P#194) + PU L#195 (P#195) + Package L#49 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#49 (size=4096KB linesize=128) + L2Cache L#49 (size=256KB linesize=128 ways=8) + L1dCache L#49 (size=32KB linesize=128 ways=8) + L1iCache L#49 (size=32KB linesize=128 ways=4) + Core L#49 (P#196) + PU L#196 (P#196) + PU L#197 (P#197) + PU L#198 (P#198) + PU L#199 (P#199) + Package L#50 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#50 (size=4096KB linesize=128) + L2Cache L#50 (size=256KB linesize=128 ways=8) + L1dCache L#50 (size=32KB linesize=128 ways=8) + L1iCache L#50 (size=32KB linesize=128 ways=4) + Core L#50 (P#200) + PU L#200 (P#200) + PU L#201 (P#201) + PU L#202 (P#202) + PU L#203 (P#203) + Package L#51 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#51 (size=4096KB linesize=128) + L2Cache L#51 (size=256KB linesize=128 ways=8) + L1dCache L#51 (size=32KB linesize=128 ways=8) + L1iCache L#51 (size=32KB linesize=128 ways=4) + Core L#51 (P#204) + PU L#204 (P#204) + PU L#205 (P#205) + PU L#206 (P#206) + PU L#207 (P#207) + Package L#52 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#52 (size=4096KB linesize=128) + L2Cache L#52 (size=256KB linesize=128 ways=8) + L1dCache L#52 (size=32KB linesize=128 ways=8) + L1iCache L#52 (size=32KB linesize=128 ways=4) + Core L#52 (P#208) + PU L#208 (P#208) + PU L#209 (P#209) + PU L#210 (P#210) + PU L#211 (P#211) + Package L#53 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#53 (size=4096KB linesize=128) + L2Cache L#53 (size=256KB linesize=128 ways=8) + L1dCache L#53 (size=32KB linesize=128 ways=8) + L1iCache L#53 (size=32KB linesize=128 ways=4) + Core L#53 (P#212) + PU L#212 (P#212) + PU L#213 (P#213) + PU L#214 (P#214) + PU L#215 (P#215) + Package L#54 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#54 (size=4096KB linesize=128) + L2Cache L#54 (size=256KB linesize=128 ways=8) + L1dCache L#54 (size=32KB linesize=128 ways=8) + L1iCache L#54 (size=32KB linesize=128 ways=4) + Core L#54 (P#216) + PU L#216 (P#216) + PU L#217 (P#217) + PU L#218 (P#218) + PU L#219 (P#219) + Package L#55 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#55 (size=4096KB linesize=128) + L2Cache L#55 (size=256KB linesize=128 ways=8) + L1dCache L#55 (size=32KB linesize=128 ways=8) + L1iCache L#55 (size=32KB linesize=128 ways=4) + Core L#55 (P#220) + PU L#220 (P#220) + PU L#221 (P#221) + PU L#222 (P#222) + PU L#223 (P#223) + Group1 L#7 (total=56885248KB) + NUMANode L#7 (P#13 local=56885248KB total=56885248KB) + Package L#56 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#56 (size=4096KB linesize=128) + L2Cache L#56 (size=256KB linesize=128 ways=8) + L1dCache L#56 (size=32KB linesize=128 ways=8) + L1iCache L#56 (size=32KB linesize=128 ways=4) + Core L#56 (P#224) + PU L#224 (P#224) + PU L#225 (P#225) + PU L#226 (P#226) + PU L#227 (P#227) + Package L#57 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#57 (size=4096KB linesize=128) + L2Cache L#57 (size=256KB linesize=128 ways=8) + L1dCache L#57 (size=32KB linesize=128 ways=8) + L1iCache L#57 (size=32KB linesize=128 ways=4) + Core L#57 (P#228) + PU L#228 (P#228) + PU L#229 (P#229) + PU L#230 (P#230) + PU L#231 (P#231) + Package L#58 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#58 (size=4096KB linesize=128) + L2Cache L#58 (size=256KB linesize=128 ways=8) + L1dCache L#58 (size=32KB linesize=128 ways=8) + L1iCache L#58 (size=32KB linesize=128 ways=4) + Core L#58 (P#232) + PU L#232 (P#232) + PU L#233 (P#233) + PU L#234 (P#234) + PU L#235 (P#235) + Package L#59 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#59 (size=4096KB linesize=128) + L2Cache L#59 (size=256KB linesize=128 ways=8) + L1dCache L#59 (size=32KB linesize=128 ways=8) + L1iCache L#59 (size=32KB linesize=128 ways=4) + Core L#59 (P#236) + PU L#236 (P#236) + PU L#237 (P#237) + PU L#238 (P#238) + PU L#239 (P#239) + Package L#60 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#60 (size=4096KB linesize=128) + L2Cache L#60 (size=256KB linesize=128 ways=8) + L1dCache L#60 (size=32KB linesize=128 ways=8) + L1iCache L#60 (size=32KB linesize=128 ways=4) + Core L#60 (P#240) + PU L#240 (P#240) + PU L#241 (P#241) + PU L#242 (P#242) + PU L#243 (P#243) + Package L#61 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#61 (size=4096KB linesize=128) + L2Cache L#61 (size=256KB linesize=128 ways=8) + L1dCache L#61 (size=32KB linesize=128 ways=8) + L1iCache L#61 (size=32KB linesize=128 ways=4) + Core L#61 (P#244) + PU L#244 (P#244) + PU L#245 (P#245) + PU L#246 (P#246) + PU L#247 (P#247) + Package L#62 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#62 (size=4096KB linesize=128) + L2Cache L#62 (size=256KB linesize=128 ways=8) + L1dCache L#62 (size=32KB linesize=128 ways=8) + L1iCache L#62 (size=32KB linesize=128 ways=4) + Core L#62 (P#248) + PU L#248 (P#248) + PU L#249 (P#249) + PU L#250 (P#250) + PU L#251 (P#251) + Package L#63 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)") + L3Cache L#63 (size=4096KB linesize=128) + L2Cache L#63 (size=256KB linesize=128 ways=8) + L1dCache L#63 (size=32KB linesize=128 ways=8) + L1iCache L#63 (size=32KB linesize=128 ways=4) + Core L#63 (P#252) + PU L#252 (P#252) + PU L#253 (P#253) + PU L#254 (P#254) + PU L#255 (P#255) +depth 0: 1 Machine (type #0) + depth 1: 4 Group0 (type #12) + depth 2: 8 Group1 (type #12) + depth 3: 64 Package (type #1) + depth 4: 64 L3Cache (type #6) + depth 5: 64 L2Cache (type #5) + depth 6: 64 L1dCache (type #4) + depth 7: 64 L1iCache (type #9) + depth 8: 64 Core (type #2) + depth 9: 256 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 8 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 + 0 10 20 40 40 40 40 40 40 + 1 20 10 40 40 40 40 40 40 + 2 40 40 10 20 40 40 40 40 + 3 40 40 20 10 40 40 40 40 + 4 40 40 40 40 10 20 40 40 + 5 40 40 40 40 20 10 40 40 + 6 40 40 40 40 40 40 10 20 + 7 40 40 40 40 40 40 20 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ppc-8n8s4t.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/256ppc-8n8s4t.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9ceae148d175a9954a4465096bc110ed474b2cec GIT binary patch literal 83319 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 mh0{b`4WAE>E(W{l5U*y_nws literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2amd64-2n.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2amd64-2n.output new file mode 100644 index 0000000000..bb6fc76d90 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2amd64-2n.output @@ -0,0 +1,28 @@ +Machine (P#0 total=4192952KB Backend=Linux) + Package L#0 (P#0 total=2095800KB) + NUMANode L#0 (P#0 local=2095800KB total=2095800KB) + L2Cache L#0 (size=1024KB linesize=64 ways=16) + L1dCache L#0 (size=64KB linesize=64 ways=2) + L1iCache L#0 (size=64KB linesize=64 ways=2) + Core L#0 (P#0) + PU L#0 (P#0) + Package L#1 (P#1 total=2097152KB) + NUMANode L#1 (P#1 local=2097152KB total=2097152KB) + L2Cache L#1 (size=1024KB linesize=64 ways=16) + L1dCache L#1 (size=64KB linesize=64 ways=2) + L1iCache L#1 (size=64KB linesize=64 ways=2) + Core L#1 (P#0) + PU L#1 (P#1) +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 2 L2Cache (type #5) + depth 3: 2 L1dCache (type #4) + depth 4: 2 L1iCache (type #9) + depth 5: 2 Core (type #2) + depth 6: 2 PU (type #3) +Special depth -3: 2 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 2 NUMANodes (depth -3) by logical indexes: + index 0 1 + 0 10 20 + 1 20 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2amd64-2n.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2amd64-2n.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d6e40dca4397e45f8cef8117dcdf6e558cb4847a GIT binary patch literal 1749 zcmV;`1}gbNT4*^jL0KkKS=^zr9{>+f|E2%%15wm-|M9&$Ux5Gb-|zrX00965D)?Xs z-udW0?TSDF$Qn=p0042JplH)0O&VkdCI|oqfY2Ib1_a1B(9kq#k*19@0}})Q13+jE zG6Mo+5jG_?KpFr5000000000RP-*EPq|?Nw>Y6kF0000000000HmOnNJv1Xnq{PtE zAi^|aVg`YP&}pV7jW8w(k`qD%CQOPaG?o`fYLR7DZwfRNMU z`0Z|0x5W7KRsL4CwOU?<5EuwRhhmisXqy2I1w*_vGyuUTWi_sv*1BS`n!Q%K*16L8 z+6B@`*(8e-k z#Vit7m;)FMC~fK|syfGj0nh;8KnZ{aP+mwoUM}Ep!maD7yhWCE;;B_ipaBR%0SG~w z!R(ZyqSY!)n$$U^Q<H z4Ogt^+qy{=qivfrs`uje`0~q+TrO~=k~E`#_wBayTUxGC$IA=RDAhToX{~j;5a(?4 zYtoylax;ve?f&wMv%dbJf>VCoS@+ug9>FClEs4xUb0VB=S=BLkXWrL zN=;`{ygap5zi);;Yf>LA^u~lnWJvSh!i-X|nR(uPXHRc0PYY{OByQQRn3Ej&H04&) zjb@l(u3{0W(MDP(+;e+YDI|>T?2JX}!lu`@X)NHfYjlz~hLsXcc1Sh8bJCdQZP??j zuHbZt+WY5baco}PZxN?B)g+5!UGBbl_7~3jFV%@@5-C03@o2i7Vl}$BTdNvQf{bfP z*T-2G7D-CAK{gi5x+o}Aypme3T}jFL(n!~Q8s{8s%Vn;v4E?+DX|`)Da&MOw*4IjD ziLTOS%jq(tk~N6d_{Eh<_U|p0b=F%=II3ZI(OS6JzMIa0P8V;Gyvw%@9n{k{&9mxN zzM88)Be3LT6t{xUolXi}j)`=9K&Jnit55u3{t9T_yGPKwT(JI$+1Q`2_Ntsy>hh;@ zeiXKff6I9(EY&T+I4(J)k;Tz9QqQ6NM4m65-QM8(UWFV^4bzPtl#(vE`c_FJ>P|^d zI%vb`c&9hko@JR%4awn|b{4)ve*==Yr%M(LRnJX5-0 zRyv-vq{{mwkIwVR-+@sp+9;O}6^TDEZr52>@Cz0(1I+LVNYUhU%k28YK#PLZZx!_D4 zuM~5UBXuX4Ea9qM9TG_5zueVjYLZ67lkFstXVl%ns%nUT`z_8fC)#tqhX&1+(a}xD z-lwJDp9njkb0=y^8Y8_ui0Crn^P<`uR`qM}I-k|c%sLN+HFF%i$hKD`hnC4CP{e!A zj3?V+qIbTxvg}tsQpqH2o$mH&I}QmXc(w9Gkx(YfC#At8jw$3#Y-lMimrhPwCtB^2 zNV{ngFw{vGXkBKlRDxkrBw==pCy~i0)i8}*lPQ)Hw|Yp0)hv{uyLZ--N7#YUNSmCT rQrg&(ESyrw6R|mVBF-sE(j<-3$}J*BlhK7J- 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..06f7652c4f5d3dcce91acc649c4fee4bb2614237 GIT binary patch literal 3156 zcmV-a46E}(T4*^jL0KkKS!NxWJ^&NC|Hc3HMp4W6|NnpQ-@^az-}C|i00962JNRG^ zA9uD?cVg{BEm6yK)g4ixLul9l0000000}`7G?_F;)csS_(i)$oGCd$P4FDdI>Hul! zG6sOrwDm)1Z~)LW14BRn1586kng9R*G%^4H!c##6(wbtKMyAO$dYLc)m;?rc38n;S zFeaKZXu!=-iB0M?3u-pLPnD$3V~d&D6?qV;>s-CT7}?SlBd zo#7S&#* zc$8w)NQ7rlRRvz!el}S@cW1S&W;%E&;HFHMSxebjJr-vx4nkjo>HXo z)?)TO8M(S$YG-HTe4eb_3w;7GaX$xPx_X^NK;q{TrUelbJdX6($bXROe2uS6cnWm6 zy4bGf)swx|f?=-F*r&;ZH*2A-b(w2&erD$W8cyd2YnphIMi0JTP0xv`qqR0AJ@n?J zcsm^~=BB38%E2d#^1ZFhJOWPlipJe^_9?&EXl^!3V}^szmQ{_at$AFfUu|z&b5o$E zQFyIvTc+l_bSg+mT`9bP0000000000000000T!oeFM8!_%aOp4;)rkIrkTAl;`r3s zk{pyU)g0NFxXd)?DR3>=HOI95y2cW~ohNn7!H&r+Z`iw+rq<1sTN+;VS7EO~5}NnK zhSo5WNhN^}Rf8MJMT!BK?N5Z4Y7X2p$!C_Aut}CVV#FdeW%A$am zB1d4r7zC??!eJ1?B!v=*Bub8E`rOSt=H}ks!JmuWe&KM+&o)nJlp+9$5Clyt%9Iw) z*$7@2po~jslR%Q!VK9OoZ^Xu|^>6Fk0L9P~sPB0w3F(jBM82NChLv{>eA_K+7= zqMDTwguzx!WHdUYofr=iwM!*psWjMuAWUHfy~5?ZV?T(0J zq7GZ~6H})fT;PUwGlyakJsocVc(E^7r)avX(o+{+4myx!H!W>NNR+5)C7V-CH2>2quXY(h#xuFnUTt9- zVU06*fe{sZV(bTS@q6LCakN});df@kWNaG^Cn=<_e2q-S%qp)^*0%tX?9Yv9*!{-a zU+UP+5_;cb#n|uk*qF{os5_!lZ)GcN#b4J`C^A8->t$E z(Tq}R$?rIq%0`Lhy*aP_uSwha-sb00dIXuqb425K_uAFez-%#Mo6e?0;INut^Ok+;=pMq?3Lk(zh^#1CwR z(D)NxpB6d`V-VqN@e4E?!dFto=eI9zKbwj)VFhc+VwTlLhI>v7hsVvlLaCs35S2b zOI5aRH#3`7N>WpQ2cm3Y|CwGpUluFzX{!Xi8q4sx8xE^)h@6v!2%0DoX0jfJtRej6zFqazal8B&S}e z#Y>}k+NWc^VPp&wCk7l`+?fQQH!^K{g!w{BU#@m|3s#ZhLp72RepQXC#!LL_R)^Ty#rYo0lm4xD( z+d7;@n7UpOcz8;lq_nfLGfNh-awn1!X2~7NiV}BsBJU<|W1%L;2B~K~F{bwvc$}75 zr_9J?&S0NzDcr&NHpdTZo9LC|o*!A#;KFyjSOk_!9~6|*?XfQOc8yb0HJ`G{%^5Xk zvD(8blV875$FbVP&FaRz8|0-#LX{JH9qG6v-NAR0xl9>kR8 zo!Hctv)Zn{^_ZfmvU$9!d~{bJ%>H5?wb~LuEWQt;JVFI z5R*!!lWoqX#&Tk6WR510f?}GFHZBZ@o9!}fgrf&l;!^IZz$DrG`{F}`7fN@s^(sV7 zRT3EM*}9%QA&g@XobEY3M~H^qpPa}8a37|9`#xsdUr7js1KZJnu1lAO+zsWvtv zM>fgH+TgNZcY?U9p|z7<`jd?}CRw%8LN%Ej^pg%^H+WmqAMmPL;2Za}xxR?!`L}w-;NRZj4yCv5?x!>&i + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.xml.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.xml.source new file mode 100644 index 0000000000..29d5dbaa37 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2c-nohugepage.xml.source @@ -0,0 +1 @@ +2i386-2c-nohugepage.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64efcbef79cb4bfe898dcc866de174087ceb87f2 GIT binary patch literal 4186 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 kCG|APJFtpK7b + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.xml.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.xml.source new file mode 100644 index 0000000000..2907352522 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2i386-2t-hugepagesizecount.xml.source @@ -0,0 +1 @@ +2i386-2t-hugepagesizecount.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits-disabled.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits-disabled.output new file mode 100644 index 0000000000..4482983eca --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits-disabled.output @@ -0,0 +1,33 @@ +Machine (P#0 total=2052540KB DMIProductName="CloudStack KVM Hypervisor" DMIProductVersion="RHEL 7.0.0 PC (i440FX + PIIX, 1996)" DMIChassisVendor=Bochs DMIChassisType=1 DMIChassisVersion= DMIChassisAssetTag= DMIBIOSVendor=Seabios DMIBIOSVersion=0.5.1 DMIBIOSDate=01/01/2011 DMISysVendor="Apache Software Foundation" Backend=Linux LinuxCgroup=/ OSName=Linux OSRelease=4.9.0-3-amd64 OSVersion="#1 SMP Debian 4.9.30-2+deb9u2 (2017-06-26)" HostName=hwloc-debian9amd64 Architecture=x86_64) + NUMANode L#0 (P#0 local=2052540KB total=2052540KB) + Package L#0 (P#0 CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=94 CPUModel="Intel Core Processor (Skylake, IBRS)" CPUStepping=3) + L2Cache L#0 (size=4096KB linesize=64 ways=16) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + HostBridge L#0 (buses=0000:[00-00]) + PCI L#0 (busid=0000:00:01.1 id=8086:7010 class=0101(IDE) PCISlot=1) + Block(Removable Media Device) L#0 (Size=1048575 SectorSize=512 LinuxDeviceID=11:0 Model=QEMU_DVD-ROM Revision=1.5.3 SerialNumber=QM00003) "sr0" + PCI L#1 (busid=0000:00:02.0 id=1013:00b8 class=0300(VGA) PCISlot=2) + PCI L#2 (busid=0000:00:03.0 id=1af4:1000 class=0200(Ethernet) PCISlot=3) + Network L#1 (Address=06:7a:4c:00:00:22) "ens3" + Package L#1 (P#1 CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=94 CPUModel="Intel Core Processor (Skylake, IBRS)" CPUStepping=3) + L2Cache L#1 (size=4096KB linesize=64 ways=16) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#1 (P#0) + PU L#1 (P#1) + Block L#2 (Size=20971520 SectorSize=512 LinuxDeviceID=254:0) "vda" +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 2 L2Cache (type #5) + depth 3: 2 L1dCache (type #4) + depth 4: 2 L1iCache (type #9) + depth 5: 2 Core (type #2) + depth 6: 2 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Special depth -4: 1 Bridge (type #14) +Special depth -5: 3 PCIDev (type #15) +Special depth -6: 3 OSDev (type #16) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits-disabled.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits-disabled.source new file mode 100644 index 0000000000..66ae2df569 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits-disabled.source @@ -0,0 +1 @@ +2pa-pcidomain32bits.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits.output new file mode 100644 index 0000000000..0652b0d8e7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits.output @@ -0,0 +1,35 @@ +Machine (P#0 total=2052540KB DMIProductName="CloudStack KVM Hypervisor" DMIProductVersion="RHEL 7.0.0 PC (i440FX + PIIX, 1996)" DMIChassisVendor=Bochs DMIChassisType=1 DMIChassisVersion= DMIChassisAssetTag= DMIBIOSVendor=Seabios DMIBIOSVersion=0.5.1 DMIBIOSDate=01/01/2011 DMISysVendor="Apache Software Foundation" Backend=Linux LinuxCgroup=/ OSName=Linux OSRelease=4.9.0-3-amd64 OSVersion="#1 SMP Debian 4.9.30-2+deb9u2 (2017-06-26)" HostName=hwloc-debian9amd64 Architecture=x86_64) + NUMANode L#0 (P#0 local=2052540KB total=2052540KB) + Package L#0 (P#0 CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=94 CPUModel="Intel Core Processor (Skylake, IBRS)" CPUStepping=3) + L2Cache L#0 (size=4096KB linesize=64 ways=16) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + HostBridge L#0 (buses=0000:[00-00]) + PCI L#0 (busid=0000:00:01.1 id=8086:7010 class=0101(IDE) PCISlot=1) + Block(Removable Media Device) L#0 (Size=1048575 SectorSize=512 LinuxDeviceID=11:0 Model=QEMU_DVD-ROM Revision=1.5.3 SerialNumber=QM00003) "sr0" + PCI L#1 (busid=0000:00:02.0 id=1013:00b8 class=0300(VGA) PCISlot=2) + PCI L#2 (busid=0000:00:03.0 id=1af4:1000 class=0200(Ethernet) PCISlot=3) + Network L#1 (Address=06:7a:4c:00:00:22) "ens3" + Package L#1 (P#1 CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=94 CPUModel="Intel Core Processor (Skylake, IBRS)" CPUStepping=3) + L2Cache L#1 (size=4096KB linesize=64 ways=16) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#1 (P#0) + PU L#1 (P#1) + HostBridge L#1 (buses=10000:[00-00]) + PCI L#3 (busid=10000:00:04.0 id=1af4:1001 class=0100(SCSI)) + Block L#2 (Size=20971520 SectorSize=512 LinuxDeviceID=254:0) "vda" +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 2 L2Cache (type #5) + depth 3: 2 L1dCache (type #4) + depth 4: 2 L1iCache (type #9) + depth 5: 2 Core (type #2) + depth 6: 2 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Special depth -4: 2 Bridge (type #14) +Special depth -5: 4 PCIDev (type #15) +Special depth -6: 3 OSDev (type #16) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2pa-pcidomain32bits.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b959f948d7e4595150ec779b3f48feba1aeb8587 GIT binary patch literal 29645 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 F{{f&^A58!N literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2ps3-2t.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2ps3-2t.output new file mode 100644 index 0000000000..500fe667a2 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2ps3-2t.output @@ -0,0 +1,10 @@ +Machine (P#0 PlatformName=PS3 PlatformModel=SonyPS3 Backend=Linux Architecture=ppc) + Core L#0 + NUMANode L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#1) +depth 0: 1 Machine (type #0) + depth 1: 1 Core (type #2) + depth 2: 2 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2ps3-2t.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2ps3-2t.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a37b64804157f2e9fbcd6646fa473e443058ecb9 GIT binary patch literal 815 zcmV+~1JL|JT4*^jL0KkKS?7y05AXu04Puc znd%y3Pyi(<4F-S)O#lD}MutJ400WGfGGZ|>0%XB50BFK61TYB{KvN(ZdYTOeo}d5+ zs2XXLKr}eXlO`h*047WmAO?&h07C#&kfuXZMDmYK6HP-wpcxGYhCpefH8S7R0DvK?FBuoU*g768Xg#>`YWHDqen`KP*dMgf-N>x(4j>Ye*x2xE#=$r)T6I$s! zw^h_#6}?Rq`W4R9*3E6|d`Woc6B&41o;F-Lbo<)t$9OPIVnVH!R%I&pxf+nn#wx10 z(pKB}yF{~|stSmY^`F-G7-BajdCVdL3ko2D3KPIbwPhg;lSSjh(z$PA(|gjK6&@AMW?x0VDOgR(B*3o_N;G4O!1kc`r+ohvu&h_+G{ zb^3DYwFv2oQrNq7WpOp6!;53;%PC9fjW%M)z?N36u@y^BDszKpu>;WNk~oM!oa`z*-hVt8)j*{M^o1a&EhSR^d2Y?=?8>chhUZsSUk* z<%G$S(fX<{;MC6iTN~;r*WTVG(}HN_=E=o3G|c8!ZTCyB;O*;N_;dM0NM_y*`hYmHfc5|Y literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2s390-2c.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2s390-2c.output new file mode 100644 index 0000000000..8b0b05d91d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2s390-2c.output @@ -0,0 +1,10 @@ +Machine (P#0 total=1025408KB Backend=Linux) + Package L#0 (total=1025408KB) + NUMANode L#0 (P#0 local=1025408KB total=1025408KB) + PU L#0 (P#0) + PU L#1 (P#1) +depth 0: 1 Machine (type #0) + depth 1: 1 Package (type #1) + depth 2: 2 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2s390-2c.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/2s390-2c.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..09220a3327fa7a9c308d045b7bc5c08a75ad53c1 GIT binary patch literal 1513 zcmV*G5`Po0io&*4FCWGMLi}m5}E)F8UO$Q00000a|xg{ z28|d-gAt}COicz6pkxCk13@xrOppKo(?9?K00000B9$3KX{7XOO`ry*5sd*D38oX! zG!p@!ksz80rjrP1Hjxier>UR-GypUW0qB>N3>VAoQUam>It;Qxq5g?u3Q+DMNOOTS zQXq(7aTN@D;6womz$_sPI4Y}JJ3%d)qD8xBn9QNokTj8CLc&efPHse`LxI#fB%5XoGL41%PKi^@!?a!4!~Gm}zD10jMFNdp8V&_fu(jeyX>HUQSB%H6(V z{AS}8!sdp1ZwLYtYy!5Cdn;K}$B+n`fM0{XP=QA65D#1{Ru2l7LlG8PrnMpNnAvaF z2AyoCe7bVL;d9;Kja4q)tVOiY&Nypymm^>?gdYz(i%^iDNf5=P78uo#*$IMQc(E;y z7>Q<7Un%jK0!DqLbM|k~^lt$AuDQ1C7bKN{S5lTh6O@~rM4}*&F{A{*3C*_okdrxh z5K0hJLmHioo=^%H4r4<)~EkdHtkf?u7dJY3ml_YVmM z7*5R^x0yn>q)-Ir0)!^_Vvr`PmH@XdP>j|=ctEt+B!Q%Yqc&{4`C!G;jw*R`#MnYe zGb;%o^=)EAct2I=uR5HbK0LX|3bfqQ{WFAR(TG+rMAUT`o^)zeK-yV-o+&iaN6^hcMr0V9} zILDh!HnVvUZt}teTYl}#o-+`R6PidH9IWC*;y7{6QZtLIaVlS1Q@7no2E3_`6Ieq8 z1^h!OC#aO-Wu2?g7}tB5tOp_uTu6ur5F%TrN%WdIUXnI(#UBvQi-crKkzA#GOhC0L zo+%*IohmwQ?3C%2c}QubG>}=FNwQZ}EINY|y;Q@Y7tE8>dg$rqUKLAjCn7Q;53h@@)NM8_FFq%FY2~kV}>(?OuP_gVZqxr3I>=JW{jSq!pP+bC8>gJ7lo>qc2g_;3{)gsfGxfx8v4x$ zDE2Zp;fs_;`FYUG11x$s6Z3kU{w}9iRklC}fWuw6jPUE4NHeK0P8>7~-RaC-KV zNF-vxzV0@nCNvq&N&49x?WX|dOdB?&gKUN30$qi|&z#=7PN8)iXdQ&H=?l*4 zli6LJTv57p>d@dP({v-TQJb{_N{Jx2+l)Dr=_VUHl(E&k{mT|6BDf@iO=Yj8P?@mW zk_c|k;SdY}?nwhC!)1rQSUovLNg&Hu>KGJ~%!RF}HrXT?YXCTRNI(~rS$c0LGZ26g zNu2TkCORG+Wx>o~DqlIlru2lmy$FoCQVw%pZfDA&fl#KwcG;AGQ(2z7IK^QA!>pTN Pi}Wt!ig2MI7@qE$-ME_? literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.output new file mode 100644 index 0000000000..be775065cd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.output @@ -0,0 +1,67 @@ +Machine (P#0 total=100661164KB DMIProductName=H8QG6 DMIProductVersion=1234567890 DMIBoardVendor=Supermicro DMIBoardName=H8QG6 DMIBoardVersion=1234567890 DMIBoardAssetTag=1234567890 DMIChassisVendor=Supermicro DMIChassisType=17 DMIChassisVersion=1234567890 DMIChassisAssetTag=1234567890 DMIBIOSVendor="American Megatrends Inc." DMIBIOSVersion="080016 " DMIBIOSDate=07/26/2011 DMISysVendor=Supermicro Backend=Linux LinuxCgroup=/uid_2008/job_15389/step_0) + Package L#0 (P#0 total=33552300KB CPUModel="AMD Opteron(tm) Processor 6134") + L3Cache L#0 (total=16775084KB size=5118KB linesize=64 ways=48) + NUMANode L#0 (P#0 local=16775084KB total=16775084KB) + L2Cache L#0 (size=512KB linesize=64 ways=16) + L1dCache L#0 (size=64KB linesize=64 ways=2) + L1iCache L#0 (size=64KB linesize=64 ways=2) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=512KB linesize=64 ways=16) + L1dCache L#1 (size=64KB linesize=64 ways=2) + L1iCache L#1 (size=64KB linesize=64 ways=2) + Core L#1 (P#1) + PU L#1 (P#1) + L2Cache L#2 (size=512KB linesize=64 ways=16) + L1dCache L#2 (size=64KB linesize=64 ways=2) + L1iCache L#2 (size=64KB linesize=64 ways=2) + Core L#2 (P#2) + PU L#2 (P#2) + L2Cache L#3 (size=512KB linesize=64 ways=16) + L1dCache L#3 (size=64KB linesize=64 ways=2) + L1iCache L#3 (size=64KB linesize=64 ways=2) + Core L#3 (P#3) + PU L#3 (P#3) + L3Cache L#1 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#1 (P#1 local=16777216KB total=16777216KB) + L2Cache L#4 (size=512KB linesize=64 ways=16) + L1dCache L#4 (size=64KB linesize=64 ways=2) + L1iCache L#4 (size=64KB linesize=64 ways=2) + Core L#4 (P#0) + PU L#4 (P#4) + L2Cache L#5 (size=512KB linesize=64 ways=16) + L1dCache L#5 (size=64KB linesize=64 ways=2) + L1iCache L#5 (size=64KB linesize=64 ways=2) + Core L#5 (P#1) + PU L#5 (P#5) + Package L#1 (P#1 total=33554432KB CPUModel="AMD Opteron(tm) Processor 6134") + L3Cache L#2 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#2 (P#2 local=16777216KB total=16777216KB) + L3Cache L#3 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#3 (P#3 local=16777216KB total=16777216KB) + Package L#2 (P#2 total=33554432KB CPUModel="AMD Opteron(tm) Processor 6134") + L3Cache L#4 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#4 (P#4 local=16777216KB total=16777216KB) + L3Cache L#5 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#5 (P#5 local=16777216KB total=16777216KB) +depth 0: 1 Machine (type #0) + depth 1: 3 Package (type #1) + depth 2: 6 L3Cache (type #6) + depth 3: 6 L2Cache (type #5) + depth 4: 6 L1dCache (type #4) + depth 5: 6 L1iCache (type #9) + depth 6: 6 Core (type #2) + depth 7: 6 PU (type #3) +Special depth -3: 6 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 6 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 + 0 10 16 16 22 16 22 + 1 16 10 22 16 22 16 + 2 16 22 10 16 16 22 + 3 22 16 16 10 22 16 + 4 16 22 16 22 10 16 + 5 22 16 22 16 16 10 +CPU kind #0 efficiency 0 cpuset 0xffffffff + FrequencyMaxMHz = 2300 +26 processors not represented in topology: 0xffffffc0 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d228c3ff6fcad194dbcb25934fd1ff55246eb681 GIT binary patch literal 20391 zcmdSAbzB_HwkSG-yF+jtf&>We5F7?~hv2~_xCVD8xC96~cyNc{!QFxf4-AChk~_(_ z_xtv_XYb#;_np7qs+#VuRaI-%lB!(!wBEbQOaJp|yf+zu^uMva+e*ibgKM;07!pz!W-?tnan9+2>^U`q)0HEA&UB93l zJdZpk$D_y=4<@G;j2T*iHD###FIHY9k%|F-=De2r~BlQiCi2I)0m`F(cn zTQADi+(zzV18Zw1@zlWF<#G@qs3D{^7RzIz{SQ|FQhTlbIMQ>(wV>Ih>l)?WwH&hC zLM1_)!ogE)kDT0*d`b z4*;MpExngL(S(#gm6HY(tz>dz0)UCu01FZTCIAVC6O$8wi4l}P9ilN(l7!1!&MkMT zIy(oj$+yYx<%SnO0suHIxG}k{f%yR7b^ruZsZ+B6XP#T6ybKc)NeKYpK%xdF<--&O zu(p8p0-&le(W2tZ`=qGMlllbu1OnhC{~8L601RkUCGh34czC#G3U-AHj^M?3;}nDL zqDr#WV4Or$RFQo0t*rsp)>8n@L@{wd76Qt1a8guB98$^`Yxp^&*cmDaH@p~fApkIC z-9Pep27hnDgeFG+ge#|V4k)okLA4AgkD__B0plUu4~76S1n{Yu>f{hY!&v-raPUT9 z<%G}oT7N_SG6p;bd&L}TPw5_@l>B#vcG4CI#pJ*wOfL;g3?Ir5WQj>kq<$ZZW=atH zFr{%ou&E(t>jsw_hKSIUA+?l^PpzlP&Xgo4C#P```U?Tz4`7-K6az88ie-XxL9GrG z`X;`Vi3fabL2IubIXv7Zv%TGOz(g!pPWOZ^F~fZ}WaVAmX}~q8^K3R&N$?;kOWJgN zU+oNzLsUT{+<(`hS#yKm@Yn`8aUMNorF0gsOvxxOi#=#MEkV(m0~x zI6&3gS9B<4!gxnGY6R?%S_n$SWZc8;L%^@3Rl%qY@*QuN-tjK)i7Q2S8ZAP3#J2b6 zCFk4y^G0SG%vH@=F$7xfT!fG>>S1QB-V{bw+Lnfpj33o|eD4iMEjubkKn}GE&v8tV z2((R-!L%R6vcNd5x~W>^2%8K*{^U@SWVvMO&lsSL*XW$adpMB3)KZKEWL zb9Hh5%?oHhA9RJbbvvzs?u8)-t{}oQ(H#Y ziE|89p(9m`4bOqBl?}`|cvRHx&UsEYiuL2%(hxN2oeaiJRv39s?pVPEDv?Mw^(0ng z2`?ccLQGsh%&)OhN790 zIv^voIvzWNqn{7vm+6<0E441ab&m3kWpkyhFN-CZ=G;j z;fHSVbD@5A&S8KZtc=#yQeX&W{LsxY2GkMywUqQUC73($D>86`K}jT_R?tT>NaFC} zpwY=cKFnHhJOer&<&qwqm65fP|7BK z^BP|;^rqArZLjFb868Uc=1nP?aaR6<3zYd!3v)ssU{Eq0C>`|PO0aT3OI_iQq{;GJ z6x!xr+DjN!Jz*YB%x-1wE{TMJBM$R-qj`)(_C8|HFm0=US}SheN}9Y?ajc=J<8L*N zwmbeyJ;u@$yqZ0fcU|M-M>8RtPZBM&7OAb^Px8a(pKL$rHz{eRRi$Vp&;M1>R?r@S zjMy&o=&>50)#EGeM$svit3S_vevGe_;vQ8p($+s~v1VrT$+3=mnNLl<^0~HUg+<#~ zqkXzwTGcmvGNo_j>9)&k^{fV?ndvYt$tf18^v_3L{QcVs|CGnlnwhmUwa@@0oq{C- zM#kq;K(VC|5FJ7ks2r#0Q&BAw5KT<3s1`v?iX|C{!I8&pF+q;#oNOMEGbsZ30nwtv z%E3yNb`kG`uLK8fV0u4G3hkftf<=}&43R6tl`DeKTkD0KE5|f07Z(CP2L~dpI8&9`C~KO%#c;@T z36dBV1y>?nCXaNpXV&F-#k8q-%*;jdg^)tpv>4h{TXn`T#J-?DazoX9>Iy#3oITf^ zDzw;~Mc!1mdDz%W`7oCv3we`Z-5^Os5E|`b^7u z3TlL8?F~l;3R(v3jgF^Pcyrqo>T^02E1%Mc(xOMRTiW8(=N*q)P6(x?U%1-ngj4T1 zZ~iDD+$^ZZ8dOGeeTJdhm!sv)U5@7rADo%l|E(A&USK#Hg_f2&n3j<`G8CuKWzaH- z6r}NtOL4961BUA5WJg z{a#NEw0GKCI|U;ykddR4d@{baytY#6K0%iA50Sa}U35~_8}{LYsY5dRej93SQM=r> zT;DaQM^l3X{!jJytZbRn(=3NHRdJj@NzY6`lac9f%~`!ce8!GL4xdxV81H!W{C$-A zG+KkiT!or?lA0H$BhL38ciub#nbz4N}uZ;#SME#;Qo|epsp>`h@aflcP)803Iz1PDO+Wo2!b=K zvQrYQ7I@;wj9}{0c-6T%w|J&ObKv_W@evdjV2_&Ah?XV`e2)jED<8)gmk>5eshifq zcTG+0Lp9w&%rI$_=~BWJ^IFnp8TRpmv1hFjv8g(ZE2)}4toCHtocKm^Sq#5LMbe@K zKhJrK$UUtV+b=CZp34+fSV=BE2_GRY1pfk?E(ShK9!@=)mNtS=K~u|=Da{I7Mog4T zc+VQkG;@c6B{L=N(<(m#ecERPREM0-q2023k^7$X=bSRf^4@=VMbSzV?v z*-n4AeDt}+j(yVv5Q(-PXN@*GZfzy4ZS0t1Z0yX+@r`)ivuE%b2>e!CBrO{0$M;;^v(f~5IvPrZ{QR-%Kii(6hkdTZB#@GlCeVn6Kp=+9hhD~s zAIa9;5M+{ZHyClC8}P0ycL5#Hj2v+Bt&AY#{FLj3zxps*;J${N%I};`EZ{ zFzK*x1t^j0RvXB#21=CaQ@N|1g12Y%scEzuP>BkItQiStC75Vvh@wo&%7!DKQwIf8 zzYhZj1~Va{$kAJy6u@V&GmFXfvNDdK^|C}4CNcL1V=!?^BA|lBBE=9;&{0q|X*mFh z0DMId2%rd%VC9Sq!eC_LEPPLkAjhl-Nld1tmui!yo1$9G*G%?>AEN^JhRE3lYbFfx zMhtyJkNFHu1Z+8d1@L)5iqPR~ArK857IYGrRScGZ_5h7;0Aj@wP#$st?ZE<&bLGVM zz%?Yx_pqafY@@-qe4~6v_2pIEhtk{EeB&3M9DY<|{JXscDrxHSDs`w=!a`iv;-_fA z`R!0FewSY7DG&4s4}IV^P#4=8L5x38$y$wcjga5cW+b5fG4J}G@?-GhBLVNRnYOC; z&sP8dIW++L`@#rla{fLad2|J4zJG;=0LV-JdxlCiX#&;4XvY614-mjGYEpJvX8;lN z^?oS{n4kSy0Kpc;Kv9(gzbfuo_mIw<&0Cgz%w{8xS*{{wlFpO-Y4@~=E^Q;r(aNg0 z_1tb{S65F@K2KNo_-tM6x=KsyB7U`LK?bQ<#&`;+?EP088%A0>E07uiPd@?Y4u0n) zEPtr)5!83BX?56{jA)%M$2G=@n(WBQw`tWE9s;)tsPOa*5SVcN;F0i(ZN5{#`UDbP zSO#JK$Kl@-Yw^u53+s~F#jIr#DL3bne8`J_6c+}O}FYG3Qt=<8{F8prJP^D8*>Z5=qtjtjS zo6@+Z*H;z&Dwp-=M;*o6KJ(so9dbKE!PP4VKB>DyUP(g<_(twLiyD6&+@OzL%^PVp z{m*#kHOI**)}*+>D^lD_MoE~sMzDgU$G;#N=OkrWEhMF49AGWx83>1D@K)6@asP>q zgH^5R;Y?HTsbP}O!U_$r-`C}TAm(|ka@bmkQiLjAL58jsC<$P&dn>*G#JYzCzV{w!IS$)BgwR-%~ocGh)ib_Lhhq=Gm zj=#$)1x5Si1^Ut;lM&uM4OWy3G0q-12+Jblznu1vJ_2m~DXtv_O?=Nw$Om5(<@pDAwU0sy}2*AsGW z2p83^ISn;A`<%DEW3_|R+kE&_NIk*nR@aG}#K7$3JU&hmo z+!z1KugjS0W`%8<72O8!pQUEYcp*AkdZUHsMQwAn=!h?wuoYm1?@egmG_kfj0d z{&i3wZO zd@>R{%e5VJ`16KPh0=8S$HS1fMLa`Gpz9a2zOqj*@uZPgyi7Ko|CkY?!0vQLw5@8?Y(PC=7Oxj0IylbuZR) zML*a^L`OVh$NDN<4*fTQ$#9CS{$i;3wuB%O30oAp7c_T#9sU*w~rv2=!Bs zTB-UmAU*JzPm_F2xzUE5w)`8_`XD)^4E9|hx6aN$F zhqwwQ?&gu~<5GnUk`2E$zh5HF`y9`U;T8P;cEnTVvWqoP9WGnfjKXf1*YvTaxS{l zn!9voOPhH21ArNL0^*CU^l7UGt&Kr?Q1=VTyL%L&3^8q_s#SA zmz;ZwV_&>}?AZel1>3XNg+@mb=Y=wR0ECp+*-K+%W3bJwWu{JM0%x@qM#tFLPceXC z#-7s^03cX(YV}kt+}gRTwLA7D)0=&Fv;)@o%_RW9T$IB1qzgb-arJI}u9z`C*7`n8 zIKxUPh3)iPW_8;!EMFqOuBGgG5W7Ya`Ne91VOPC*FMf&q72Cw_Dmdr|{OQT{LeCUw z$N|PXa!SCXld}nh_!MQ}?VG^?NYx?p)AfMnfWA3dj@90eiqwJ1rCCjH18{rCrsJug z4f#4+U$FB&zpKnzH819uy^b|9k6pW%1Uw4)#P*PR$WL z*s5;G`2z5BR2LyVRG+cMY_S2(SU?j;%%GlEk=TJeNaBG$@SE7|CKQaM@HgVl0gFuo z2l_?FYHP2BLoR_m!oWl!xXtfK`9~P1*x$K+JUHd^A?05p!XIG)hdQfP+U@px8206o z-{SlPh=^fij3|P|HRNOnZhD?LSmcxCBHNgmBt8Va)~dSJcz-h-0QBePteLs-54gM0 z!ky_?X3O5W%M&d>A-q)44E*r{7&5MaG)T@?l{EmUrIEu^1#=FF zYj|Tm08vXBMi2miluwW@1Of=P1p4%+0C12}emi{tKudEU)9(KtU177N2PO?)U1lIm zR3~#T0Dw?)eb5RfX?bTX>}kA~hA&A5Owf`mE_Rp}l)hV;z~ua|-Tt8=rIW7P3C|7x z>ka?MM)(hGGer&FpFK{Ds;VH@6)QaexUU@6002e_^VWNG=Yf1AbcyRuDC{oXS!E#d zM4eXz28nWl@gyB8W)FYf`SWNU{vLjPf5=}!+J6i3 zKdbnksR+?Ifd&A&b`=*c#u(9_Bp1;XYdC8@OtCBTihlbRHYHg;cXxLW zoq~SIdBP%Q-~-T=m!H4r2bGG$%NygpEZF9uyyW)|qP!%_wzQso&Et2W<1gq`k&Q@* zsJ?|#QBh%IQ<0C2M$}wU^VJ<7j*m|-Onf=6nV!ylR=5=-20&~vn}WT_P}J&UB!ZPO zhynr4!gI;Wjz%JabFAH!=^`Dyw-lZJBiDA+Spct_o0|twD(r~mD}U&=NC05h4aH^tJcMg4O%5^G(n2B9*{*(i)Py@PxrM& z8`0|=Ev-M@VI->1tThCFlllz@ZK73v2A;rE@1IvuDAHQ0HLo;5xTlElexA^c?iv^j zIW$!)K>v^D$MUN0hU3~FE9C>+=V9Bze}D(UDO1iote`D5oL93s*?$Uf1 zAjQ9%`BR2!X=zHsu5h)K=6_>mwWPGP%O9v`sA)2g?Jd`rhQh9z{M^l-=}{c>r1K=% zL~(zIHu?BDY#q*hi=@sU9&n{7wnGcf9s4LFU_XGL4;esXH&Wmu2S1b7LyBroBh2`e zZMii1Hd9xe<8v;nB8iQaEK(%xrH9hGZg8L!oT~-^WR(>?!Xa0oo>!0aQN1cu5_8&H z3lb}2OHP~gew5~;bnf7|i>r&dpKCR>s;aW4kwowevo%i=zBprOZKRky4Ui^Z;Pc0% zl}PHEQ?bSNYF@fbA#nN`=c+?f@5k!iwiRvyiMPzDsJl4XQu}1C6U)b) z`nOFvPIrnRR+Js03Y%HXBP<(oo5>%&#n9q6_*&My1!FG`kx8M0!md4+)D6_xK?MbZ zg$(3+wn?N;esBD}1Gh70W^iOUT>VgM`pN^v_B<`{`6=;B7e)8-RNsgJ-+g}kbyo0r z{zUdf`RddKEa6{slTrT)^K_rcQm)!;tXDh558vuyWvpX>!9Xvi#HpZB95bMxN`a@! zZV?Rn@sv+v+UDAv-LMNPxYR#jk;Hayq%FI_bdsJ0bb$A`J$6hk!tTf*oJ@)tTR@*w{@$M_c z>`C`vqX3+wcjB0X(SA~LuVvSp3v>hSdH0pH8s=>jzBn*xnq7TDefacF=lWF|;-kvQ z>k*v7gchna60x4gv4pQPB|TGyy2&&83Sfpa^x~Ow;wRwZ2IDVQx;wf^wO56@8G7`H zh@eLz=_ogK8Gfq$0M7n8i-#+)M6%|GHy8Xj0SVKuWcrr{63jlfjU3xBs+Kb|3FB@i z-9LRif0uAq_UINL`4lYsA?N|wLikn5JH^|FsmoVI0V9_Yx`MI??#l7yRC5$5pWKrL zK>3W4WRqWH+*3%n6`y^XcJjdfDL!KWH)B<<3+`N?iSl`?&KoAa?$ zF0O$)M7(C z2fCKe_G43zN(pUbc3%aJp#Xb$yL!9EmG7?yc2{_nvY(H9vR4TOPs9I|j!u~RWIUr< zp#Jv4nC-*-qsrv1x$KVYX3~S?*iG-`#bi{6hi%r#?Nu@l_^EmX+K?3|6Y2$TVvkw9 zXxna7bJg{${py|9{ksV0y)4AvS>$Q@DxrN_>Ly~Fs(WMi{@1%2DeTYhu+tu7?j3U9 z=wDMmOO`VsMhtS+eOAlrjMN6uXN=yeqs@<%P%I<{XJX+!}_TN>~QS{Tm&Gv>+@#G~Zwwj7oAud;!1EmjiMy$(^Lco<15s3> z{<|RJS$(~xQ3Dd{lmz*qckj9r$3(n+;FsL@KlWsuFnn5B9#SBA!*8U2=;1lj5Z+{E zSVu!`t(jU^G7QzD;K|QK8ezWzTne(F1ALH!Mt0CdX)q5aq@qEY&!dRLn2@m(lx$Ff z3JjV{G@o@p55$1P=OZeSV!aI%mPg%j>~k+x(_oY2@LZn)@`up^By(I`H^g&(Ud8Tm z3>ccM-o~ex+hxUcj#GEzsid~6q;Wu1!qP1$jDQI%UaXR|+rfgVxI!~&mw3UMoopXY;z=@#DRgaIdd{XwI}6}ygI@Vv+!Aw(vznU__+g`;qFppQDZhjlG78|{@8X#) zZs{j{;tia8x~nnNsmyH`9ln5elJ*|gyh~VoZ9qmhJsmHCMKW2n%2%w*?yOTYT#84Z z@aY2%borbzdoG!ruP1c2UG-fU=sj8)g;g4(z*WY%5Vyw=DRZc0e{lTUF+(uBO z4C~CoghtFcm1bS&U{iOx!jIjcynRpeMdj`n2IIfNt^-0QEV_$#M)IhQW8tBco1V64;eEG?)p>7D1zu>){ ztU^k!AX(-oWPn`barH+h_Xy9$k%g}7_JU>A`}VZ8anW#(ebUj0ig&7liI)_2-VH0W zV{}ooj;#Lot7LP=>1OWjqbgXQt8Y}AC02o(6aH3KwMM&3EzDs$mGBx}OZ)pOuXOl# z;@5E9!BM;YmCIT$WXzv6G<5YGc!9X}#p4b1FL-ES4|BUU)`c)A+n2ue>kTdVuSwbg3wYPX>Mi#UAn zdeh;dF_6q@(ZBO$g4H$oG2_GJ=zxC!h0)2SJI1Yo z*jl1ITzj`%hxjx>IVEydnnMorV|0Wj@@EQl%1C2vMU_l!v+)M`5s+&+*JjvZOHPaE2=8i;EL`B7>oHqeY<{Z4ed<{zUn*7iB4IXBlPv%(N4@ zU^l~jH{%5WL0KFon;u1Rvv`U3FlTkSerzhCb{DJp#h5T)>+d20?ecGyh% z+6AQVqbm#CZ5XE+6sN(~gQkr1sOiaiy8f`2$ov}v5#?T~*CzW36&50I79%2>NhRa< zrCdaaw~Q=yj{QL{-@JFG=DRE12E8sI>b=n60`v8>NIUGC<9PSc)wy)X!y8D7 zAcM`VWS5^$rwPnti$VEZGs@ zHIDJ#P3tRfu`$Um5ApHj3~H2k!ZSWexab>oxt8X|JsU9chHyyl?!Ba0oMidJwEhX# z+YT^J?WzWvRk(His7&fIP|lI#R_YZ2>Y_#e~1Y8$-Lw@z^)n^}Z`>T=eQ(C3p`d9qu{I z*Wa(-CzEW%Z+kBgLK(e-I4CCky%*zil1Y&0%?L_FoXdmNX_zQy0R9_Ro!n(y;6Xma z$XsT4ZjgD*vA>gh6J%h;Z5--r<0+UbH<*#K!msRc_9pM@=l70eES^?iwcodK#`n?c z+{Ku0R!6E(TEfUBBC-uLNS-tsxs4|K>wm<0`@q)s)^fjiiMR!7i3jMdleM9Xv)i4*{mK1vDM-ff3ALiEFu-I*N`lX8nDdA9r1$+_Qi|fc7`bz=IOc6&M;Lp3XUD+y5DQK; ziG&k34GyHSR1FLZ3&O(-M?z9F-C;dRUWd`pa$SDCG z(~OjpK9%YR!Q4G)rAl>A+j{N97$71dOQ`~4Geo{R;Iof*j&fjQbZ&Xf9phm3!j2+} z7B`n|yerF`WKrQk(2T1XQZ$|}`|;yt7t~$M%L7sX_N39zmw^P%kpjZo+x0&>E-m$%a1-W@w!z zC7+^SH*~8!{rd28afa&t!`>8)*}KA8>6PwPPd3g{1zXRKfXx!d2Z&#zaG8wWaX{LcNAUE43NnZjlB z=;R}2iayBqX{SDTQh#JnXcQ$0x9on|b&>nRU?XDkS?l<9fVXi-V|QfZW+PZgo3x>3 zrxlSz(5U=ujEnWw|2pSTfBiw!t8>Ds{o>0{imC^24I)JTMAvqvJN_Gi#i2*(mkcX| zANNqf?Z)4%b=Tbw~rMM7tO~5BkrXeRDQE_frpq3~pNOdI{-W{yD@G z2bEOzvF6?Db@u@~-?Q88x{kx!`_v_m`a_})*bujC=ZoJ_3^R_btbAZL&2$=tb{t19 zTyI?rn0wD&oESyei6+_g+9n6Qz|@E7J2*DCs{B6;(NFvXA_V-ilE>!t&|5T4kEZ`k zIsY7@-Z@bR!V8sRlbFVL6r-`_FwT700__2!_eLHq&E42}FUu!91H2VEh0jSfMN>g{ z|6-T_%37N*_m$}U|A8#0uKpVzY=2Tz-ozNAYo;9jN9|k-bU`OyOnKCAvwE?rs}!47 z$Ug}ss--kGivAY^#(dqo?-s5RU-`>`qN(9kFK$l7Wt11@ZZ$AQ177>XR>fyJL=A zb2sudFcO4iQn8D{e=8^b-wFMD0)D{#?PLD`2R`RAK48F> z3Yanl4Sz3EgfMaTS28U8Zps{djo11EW4_GOy)F(&e-w%7UTGiUy90xuKa;_)z@U_$ zDRU`blffhWqV;kP439deziJEaKfUr&fwGWF>Am1@Ld}GuYK(Jv4S9?>p0z*cDIaWl zUGlIwboIKw{qbyc=<>^`aAmUz zxQqW`)ONABvf)ImY%)F}YyrixRA{Wsid}{ZrWVPm55DcyrTUJ> zC|6V+`+hYLvX9ug70DFA4v{HyUn=ao_8j?HOzppwg)L%o{KoKlHiExd=(;=8)xm!p z2SB>f=`p>+;0QTxc{5ia;+|uqmfeuV4NVBiw*8_$8KcN8-;zt8>h4*9gf}ph>8j4E z(8e2*pNcjvmHo^M7qgdnd(=sh#X?hYv-0z|F#&e`40Z{W5rkA8tVkp~cH=Zu8s#u8 z#=}B~oa%Z&)cwMLn+71g_kI5KFzqLQ*B~+fP5a0SNpQ!^LoD_XsmMKoA}t z(+gU>S{ix`njPbUg*zam&;*}QjUD}ff4${mBM(FO*>oTP>-vP*KtT*}nAO;Dtr-QL>X-ro4T>e7P}_sgySYqq+e_nEUcDf#bkxEB0-pjJ03MqVL) zUE|oBz{Z**+u9zqSNX2tOI2_3I6tLnnns{>wQ^d@c04ckmE6O^!eILT=}jpxKk@^$n}UL_GLWSV25rPoPYP!J)gHrXcTar z?A`IZJs!jL>&(oYos9qN`IR*M06m(-WD~h)EW{iMo147r^&6uHUr*10vD>@Y*Q8V} z`yz!MZL3PVSFy&-Q&!2#{gxXv$okH-HxsXkr?w~F#Fh&9ev`~OXCMU~4iq?4I?RzP z87nuzJHCisU-w!~V6E!bzh%i0zFqULNNtFmZ$tF=xAR0Hd)dz;i8F&}(?f*ZPjyoS zqPyZf(KWAVdd`VI)eikj09M@XI}j!mYs9z8-hjmyUn%mS}uuw}|~g{(v|xlHH&?{H#* zbb!QcG=-?=1r}Lliel8N`EmM%wpNudn$e`>tm{)#t>Tj0UQjTH%R7kyt1uq*No!Hy zEKRf2QHoGdmAEvNWobp#ZMP!({0nzJA;2Av2B|!O9xHwl4q}}qWL{Zf zNt9~#a6*o-9mD&(g`3;cc4vx4mdc8B?E11Tf&4d;bF{~^&2^9i()?%IKajX&98nvv z!<&(^l-O<$yRyife1NCf^9UU z!4gTUGA<^A_M?8zr#NfvqreQJPF!eS6LDR+W6){=rOiZJRa#@lK+9{$8|^DFDAvd~ zUt-}C0{>7`o0V7un-gz;68x9rEx4IZ=-0VOhkH`Jvgbi)6~-q`6m>p?;f?x62`2Wr z->w%63YJ>$F}u6liqawXq7=sMGNq+#O*f4DT|e$}&MTD1I$B!xBot*6J9-_uvou1%Hmo#l( z#YFB-o3`T#Q`8?wI5qkRj^gV-C!+ifNDA4ai5P*187U`3?jaobEZsdZMCXU$26F5; z23I{!WSeL9tDWCh?uMPuoE%Ck9LGBhZ7)Z9e&RC7UmPceI2{$FI@ThNc&>TkX5H=k zZDvZ;xx~#2Rzz?LNZ@*6%!hK)E4RmfZMQl|47t0vUUOZ3`F4njBZwa8Xkh9u5SPO%W;UExYMHA zvvC^=z3%`-WNjPkmv6`B^z9FGNp&ri?Mie$-_`kUc@w{uhRpTlTF+)1$PbPSU0|>` z@RhaXyD8UU5B3p=u{?g9GJO_Q_w2Y?UL#D2-&mU;S#f9UAt2^a&#H-lE-wCYWbH6%;5%=bTn)i`gNI?_?JpEPH zwhceda7C!z+1(*U@W#vt92`0s3m(MUgvOeYK|>p9ios;xy@mzyRwyha1u)Ep>iLzN z;&HZRKPXhq$cmQG<~`m+eYe@!T3iR90B-Xt*Q3;pDwkE@#s_R~D%^URAKcMj?Udd3 zi2Bb?y$dF^g*UfQ_41x|qt~WOODbMuYfbG^d-&ExX2Tqk7q|e4`1#D|=HEPb`fm@S z{x?KP*4E$mo!1l(KA?kzIBMK=Br+nLkNH$pn(Sd((+{!+dr^yy98fzF-o;q`5)xzL z{{B|xWc^ET!)?}Bidv@}(#RqCEbYeRw4b*ZqsoMKqa4znT-j`~Q$GZcHXNU7s(r~X zmoHMp?PM^9LCfQn`IIy#c0qBOiUk%U9Ura9ZDs?DhY{b8n!K$F8j0OE$lG@nvHpo; zile@lYTNKLJnld=u4Jgdx1MM4_t%n>fTR)hQbiZD%`Izt~ zj3DkftJ}z#_Riu`LF1$zx=MD;D<~0&qQ6azmOl(cNCfSP_g~%YAz0`Z04WYpY(lQ{ zYTHuTMBC*(c61 zNEdk_IF(R-yr}NJ@xn1dq&Pr)QjD$eR}TPL=#CUy^RuT-=&daOvhGkiMPt18MYk$o z!W)@>Kyt)5^~m%@cR)ZC%xFdVUEyz3ugu6K&&{AM#$BSh_s< zp2Sxy)@b-u53yV@UkE-1)Z96YT^a|9b`JZm>nuus(4gsrPE)DHoZdY%H*U<&>-y2C z?OP*;{k;?#eAp$V-Jrdoz)-0D=(gH+bvVf3$nI36c^?QkE_U~e4kz$#SC7+I?e3Cr zpvaVIjdpQv{gC-ajmkJ&C<>Ge`!g;0|Mm{7Rq)rgt;Kc7|AQBF)qQ`*@RoNyHsEbS z3*(#a?pE)GM<!H=oiazXp&L=S`fWyZX+kS1s<*1&reXr%jtksp zj_2Ktl%tOW^4bg@JenIPJbjP7kHvs(p2rJ^*A6^UPXTQdlT~-@0nNqVeXe=!ztb$- zimUZ9%x;8Syso(;#=ZnT7z42D@8VMK+NnOeT4OH)V`UD!!lL6_JtdBi@jS&E31$k| zby<{Tny+17pQKx3(Y(_mP$%yVS~NVbJ;An^!*U9PX+fJjIk%tC;0v*>9lIswhtpMY z`d{u~D^u?%X1@Dg{fk?1+^+{;6+a^Ei-2(fDCTHg(kVq6C95EyI zo+h6H@8EA<-8R|E7ibE-qw$Tr2IIZ6pn8NGaf#sB9nYikqFOn?P%756|FwFr+Hw~0 zDwGZTm&Q)t@ILK(<}ksK!RvB*E!7)tWTy%2S>&T&8+iSc`@kP}hbHWp=iD8FRi@Fw z^Yp6u;Dw$>44-+4NE1Tx19=P)+aI-q)hoGZVQX(lqxtzy@$HgK zel078*dx1UXfSu+_vJg)V%Xcr0!I^l-b656%mKWrQm>T-SgyLv4z*Sgej6QlfdueN zeZ|O*efG=A!~!4ipaSsmxHGx~PzDjI7N{2gkJ2yz0S;vojg|=B*GV1`{!OS*duQq^ zrbrfaxKfRqFHBm5gz|)F#prGah&j9h@MB~^F-EGlvP=Zgtl+Yj)~JETa6J%YF+fkwjwJ00l3y`UqsBoNdN z&OI5YVon|o*L{kX6LGNQ3V-Y5;Y>-+Py7ec*-Ozg4`lU@539g$$Yn1=(F>C>B{8Kz zTKH%ZwHUBZAF0GUk}VZ=LX?0k7+*=@X(GNv=z_I?7ld?p1g0n!Ap0S#^u zZpSY~>@60xXHcV9KW2n8*;jNxKAR%V=xMCvePY>dh`y6x$T#F8)g7F(&m9Fe9PrL) z@I-Wga^&^z$osjyL7Q+r`Km%v#_;JVa&%uv3vEC&d+0^G-!Xx;SSXt7E5Hh@{Qmx7 zZca=P3vxaiEmES0@g`)Ku;*UPfW-t+jz4Dtach_ER<+867fJlK=W^`RY@&XNqiH?0Q8?|ECZ-8(m~W5 z4aVam@q;ft{(>K@ht>LE>Es8JApG9}<_!Vl3J1>>;b13W2$T+d74Uu!rCKP*+xFq; z&ot8a>j8I!4xf57yn;uxf%{~(za9tmLRfx1G1ymvT!|?&&4uIVbd)gCV zd_hqs5IsY>qTukU z&=`R0K7*rg)`hkNp2s~v_P5f!^N-8zpI~kdz`%wt#8wkRmFOZzH%WLUo4l)m#1_Aan=k+51!V0q%*~ z9f8sW+8n+B>DRy-4?eXpG%^LgJ4e(E1A{)`_&=8m0@8MnN_1(|8v)b|^#P=iA}FMU zgis%7+ud|0<48zH#r1kLW*AL?uqYQFxgvI09i4%RaU8=SOGyZ8Bq6Ez<-QI=$p5zrjK$Qc^u13+G&b_H9{P^gJIgHKdCq4I~YWEh8N9Khbdypq89g5aPx zahmN8LDqplpl%Do;CO?uJWzWA)*+}k76zETt#bXx%uwV(;12(KDttl5y6Hv$eb7GW z{``CC3`nRCzy*nB!216@F9ZufvcR+p5DNgV1_3})Ocfs>4&58??np>SKv)uc0OA*R06T}t<-r^Ywt>4&(|0 z=pgU=K(0Z+Eba{Qx)MSyROt)CmYE@NVh3P*1E@TKq*z!MNnjQR0YLqT2f!WSs4}uN z@tT8paGo`bU>|$X76t(xJ;59UX$0`SpUr9xpp&w|!%%NNT!PO3Flr0H=0nULAoT_r zsW#T2Sp2Vp;*uS3XqaX3I#w!do%)kC`5_GBA`(ZB!q-p z=Wu(1__!PkgLZZw9#>IaVCtppna*S>(717K6uK`}2LAguva0Q*4N9&vyV z*pTo(Ak=vS&PgfA4%5lh8wi1@HrK2Vpe?*3`^b5*0^_yYK&9d8q=`Jd;mRZTK}q4{ z4FU7<`gkMGY<-auLOVj0?Z_;%j|de?s)$NK;sWrDgLj7-!0|e>Q6}aAl!~No3v47+ zB$Y_F!6TwZEQ=z-fzS%DG|rd@P-F`NfO~20dXv`}*4%6hg5;_ufc#+lumBRSQZ5XseJnWcv<6cb21L##@8u;M@xaYHh?sNqd-3ZP#S_x#v^cG2B0_u z+w8CxoxQdJ%>lqX0i)mt;0KuK4+u`+>Ir+j6%Z^2L?&TEf#i^oj1Bxj=nDYc9%x7+ z$ACYW4vqk+B?BElov=QQ0htmZ7lBAfBg_fku&~{|>6b~SCQ1S)AKJgi<_x!Bz!cz_;fFmxaJ^31kPV nBtkabLO~yJFVzH&Wdk7fk|88d|Ha&qP81|0rk^B0(rIDE literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.options new file mode 100644 index 0000000000..abbc8223ed --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.options @@ -0,0 +1 @@ +-v --of xml --no-icaches diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.output new file mode 100644 index 0000000000..733b272f1c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.output @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 4 5 + 10 16 16 22 16 22 16 10 22 16 + 22 16 16 22 10 16 16 22 22 16 + 16 10 22 16 16 22 16 22 10 16 + 22 16 22 16 16 10 + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.source new file mode 100644 index 0000000000..09cbb743fd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32amd64-4s2n4c-cgroup2.xml.source @@ -0,0 +1 @@ +32amd64-4s2n4c-cgroup2.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.options new file mode 100644 index 0000000000..6ad2e0d592 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.options @@ -0,0 +1 @@ +-v --of xml --whole-io diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.output new file mode 100644 index 0000000000..e4879e8c29 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.output @@ -0,0 +1,504 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 21 21 10 + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32em64t-2n8c+1mic.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..cfdc85bfefe806a06964a3f8ef397f1eba392d2e GIT binary patch literal 80526 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32intel64-2p8co2t+8ve.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32intel64-2p8co2t+8ve.output new file mode 100644 index 0000000000..edba604681 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32intel64-2p8co2t+8ve.output @@ -0,0 +1,161 @@ +Machine (P#0 total=97445592KB DMIProductName=SYS-4029GP-TRT2-1-NE010 DMIProductVersion=123456789 DMIBoardVendor=Supermicro DMIBoardName=X11DPG-OT-CPU DMIBoardVersion=1.00 DMIBoardAssetTag="Default string" DMIChassisVendor=Supermicro DMIChassisType=1 DMIChassisVersion=123456789 DMIChassisAssetTag="Default string" DMIBIOSVendor="American Megatrends Inc." DMIBIOSVersion=2.0b DMIBIOSDate=02/13/2018 DMISysVendor=Supermicro Backend=Linux LinuxCgroup=/ OSName=Linux OSRelease=3.10.0-1160.15.2.el7.x86_64 OSVersion="#1 SMP Wed Feb 3 15:06:38 UTC 2021" HostName=ve Architecture=x86_64) + Package L#0 (P#0 total=47925628KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=85 CPUModel="Intel(R) Xeon(R) Silver 4108 CPU @ 1.80GHz" CPUStepping=4) + NUMANode L#0 (P#0 local=47925628KB total=47925628KB) + L3Cache L#0 (P#0 size=11264KB linesize=64 ways=11) + L2Cache L#0 (P#0 size=1024KB linesize=64 ways=16) + L1dCache L#0 (P#0 size=32KB linesize=64 ways=8) + L1iCache L#0 (P#0 size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#16) + L2Cache L#1 (P#1 size=1024KB linesize=64 ways=16) + L1dCache L#1 (P#1 size=32KB linesize=64 ways=8) + L1iCache L#1 (P#1 size=32KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#2 (P#1) + PU L#3 (P#17) + L2Cache L#2 (P#2 size=1024KB linesize=64 ways=16) + L1dCache L#2 (P#2 size=32KB linesize=64 ways=8) + L1iCache L#2 (P#2 size=32KB linesize=64 ways=8) + Core L#2 (P#2) + PU L#4 (P#2) + PU L#5 (P#18) + L2Cache L#3 (P#3 size=1024KB linesize=64 ways=16) + L1dCache L#3 (P#3 size=32KB linesize=64 ways=8) + L1iCache L#3 (P#3 size=32KB linesize=64 ways=8) + Core L#3 (P#3) + PU L#6 (P#3) + PU L#7 (P#19) + L2Cache L#4 (P#4 size=1024KB linesize=64 ways=16) + L1dCache L#4 (P#4 size=32KB linesize=64 ways=8) + L1iCache L#4 (P#4 size=32KB linesize=64 ways=8) + Core L#4 (P#4) + PU L#8 (P#4) + PU L#9 (P#20) + L2Cache L#5 (P#5 size=1024KB linesize=64 ways=16) + L1dCache L#5 (P#5 size=32KB linesize=64 ways=8) + L1iCache L#5 (P#5 size=32KB linesize=64 ways=8) + Core L#5 (P#5) + PU L#10 (P#5) + PU L#11 (P#21) + L2Cache L#6 (P#6 size=1024KB linesize=64 ways=16) + L1dCache L#6 (P#6 size=32KB linesize=64 ways=8) + L1iCache L#6 (P#6 size=32KB linesize=64 ways=8) + Core L#6 (P#6) + PU L#12 (P#6) + PU L#13 (P#22) + L2Cache L#7 (P#7 size=1024KB linesize=64 ways=16) + L1dCache L#7 (P#7 size=32KB linesize=64 ways=8) + L1iCache L#7 (P#7 size=32KB linesize=64 ways=8) + Core L#7 (P#7) + PU L#14 (P#7) + PU L#15 (P#23) + HostBridge L#0 (buses=0000:[17-1e]) + PCIBridge L#1 (busid=0000:17:00.0 id=8086:2030 class=0604(PCIBridge) link=15.75GB/s buses=0000:[18-1e]) + PCIBridge L#2 (busid=0000:18:00.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[19-1e]) + PCIBridge L#3 (busid=0000:19:04.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[1a-1a]) + PCI L#0 (busid=0000:1a:00.0 id=15b3:1013 class=0207(InfiniBand) link=15.75GB/s) + PCIBridge L#4 (busid=0000:19:08.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[1b-1b]) + PCI L#1 (busid=0000:1b:00.0 id=1bcf:001c class=0b40(Co-Processor) link=15.75GB/s) + Co-Processor(VectorEngine) L#0 (VectorEngineModel=1 VectorEngineSerialNumber=32424a32333030343900000000000000 VectorEngineCores=8 VectorEngineMemorySize=50331648 VectorEngineLLCSize=16384 VectorEngineL2Size=256 VectorEngineL1dSize=32 VectorEngineL1iSize=32) "ve0" + PCIBridge L#5 (busid=0000:19:0c.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[1c-1c]) + PCI L#2 (busid=0000:1c:00.0 id=1bcf:001c class=0b40(Co-Processor) link=15.75GB/s) + Co-Processor(VectorEngine) L#1 (VectorEngineModel=1 VectorEngineSerialNumber=32424a35303030313800000000000000 VectorEngineCores=8 VectorEngineMemorySize=50331648 VectorEngineLLCSize=16384 VectorEngineL2Size=256 VectorEngineL1dSize=32 VectorEngineL1iSize=32) "ve1" + PCIBridge L#6 (busid=0000:19:10.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[1d-1d]) + PCI L#3 (busid=0000:1d:00.0 id=1bcf:001c class=0b40(Co-Processor) link=15.75GB/s) + Co-Processor(VectorEngine) L#2 (VectorEngineModel=1 VectorEngineSerialNumber=32424a32333030363800000000000000 VectorEngineCores=8 VectorEngineMemorySize=50331648 VectorEngineLLCSize=16384 VectorEngineL2Size=256 VectorEngineL1dSize=32 VectorEngineL1iSize=32) "ve2" + PCIBridge L#7 (busid=0000:19:14.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[1e-1e]) + PCI L#4 (busid=0000:1e:00.0 id=1bcf:001c class=0b40(Co-Processor) link=15.75GB/s) + Co-Processor(VectorEngine) L#3 (VectorEngineModel=1 VectorEngineSerialNumber=32424a35303030313700000000000000 VectorEngineCores=8 VectorEngineMemorySize=50331648 VectorEngineLLCSize=16384 VectorEngineL2Size=256 VectorEngineL1dSize=32 VectorEngineL1iSize=32) "ve3" + HostBridge L#8 (buses=0000:[3a-41]) + PCIBridge L#9 (busid=0000:3a:00.0 id=8086:2030 class=0604(PCIBridge) link=15.75GB/s buses=0000:[3b-41]) + PCIBridge L#10 (busid=0000:3b:00.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[3c-41]) + PCIBridge L#11 (busid=0000:3c:04.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[3d-3d]) + PCI L#5 (busid=0000:3d:00.0 id=1bcf:001c class=0b40(Co-Processor) link=15.75GB/s) + Co-Processor(VectorEngine) L#4 (VectorEngineModel=1 VectorEngineSerialNumber=32424a32333030353000000000000000 VectorEngineCores=8 VectorEngineMemorySize=50331648 VectorEngineLLCSize=16384 VectorEngineL2Size=256 VectorEngineL1dSize=32 VectorEngineL1iSize=32) "ve4" + PCIBridge L#12 (busid=0000:3c:08.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[3e-3e]) + PCI L#6 (busid=0000:3e:00.0 id=15b3:1013 class=0207(InfiniBand) link=15.75GB/s) + PCIBridge L#13 (busid=0000:3c:0c.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[3f-3f]) + PCI L#7 (busid=0000:3f:00.0 id=1bcf:001c class=0b40(Co-Processor) link=15.75GB/s) + Co-Processor(VectorEngine) L#5 (VectorEngineModel=1 VectorEngineSerialNumber=32424a34383030353200000000000000 VectorEngineCores=8 VectorEngineMemorySize=50331648 VectorEngineLLCSize=16384 VectorEngineL2Size=256 VectorEngineL1dSize=32 VectorEngineL1iSize=32) "ve5" + PCIBridge L#14 (busid=0000:3c:10.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[40-40]) + PCI L#8 (busid=0000:40:00.0 id=1bcf:001c class=0b40(Co-Processor) link=15.75GB/s) + Co-Processor(VectorEngine) L#6 (VectorEngineModel=1 VectorEngineSerialNumber=32424a34383030343500000000000000 VectorEngineCores=8 VectorEngineMemorySize=50331648 VectorEngineLLCSize=16384 VectorEngineL2Size=256 VectorEngineL1dSize=32 VectorEngineL1iSize=32) "ve6" + PCIBridge L#15 (busid=0000:3c:14.0 id=10b5:9797 class=0604(PCIBridge) link=15.75GB/s buses=0000:[41-41]) + PCI L#9 (busid=0000:41:00.0 id=1bcf:001c class=0b40(Co-Processor) link=15.75GB/s) + Co-Processor(VectorEngine) L#7 (VectorEngineModel=1 VectorEngineSerialNumber=32424a34383030343800000000000000 VectorEngineNUMAPartitioned=1 VectorEngineCores=8 VectorEngineMemorySize=50331648 VectorEngineLLCSize=16384 VectorEngineL2Size=256 VectorEngineL1dSize=32 VectorEngineL1iSize=32) "ve7" + HostBridge L#16 (buses=0000:[5d-60]) + PCIBridge L#17 (busid=0000:5d:02.0 id=8086:2032 class=0604(PCIBridge) link=7.88GB/s buses=0000:[5e-60]) + PCIBridge L#18 (busid=0000:5e:00.0 id=8086:37c0 class=0604(PCIBridge) link=7.88GB/s buses=0000:[5f-60]) + PCI L#10 (busid=0000:60:00.0 id=8086:37d2 class=0200(Ethernet) link=0.25GB/s) + Network L#8 (Address=ac:1f:6b:8a:5f:c8) "enp96s0f0" + PCI L#11 (busid=0000:60:00.1 id=8086:37d2 class=0200(Ethernet) link=0.25GB/s) + Network L#9 (Address=ac:1f:6b:8a:5f:c9) "enp96s0f1" + Package L#1 (P#1 total=49519964KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=85 CPUModel="Intel(R) Xeon(R) Silver 4108 CPU @ 1.80GHz" CPUStepping=4) + NUMANode L#1 (P#1 local=49519964KB total=49519964KB) + L3Cache L#1 (P#1 size=11264KB linesize=64 ways=11) + L2Cache L#8 (P#8 size=1024KB linesize=64 ways=16) + L1dCache L#8 (P#8 size=32KB linesize=64 ways=8) + L1iCache L#8 (P#8 size=32KB linesize=64 ways=8) + Core L#8 (P#0) + PU L#16 (P#8) + PU L#17 (P#24) + L2Cache L#9 (P#9 size=1024KB linesize=64 ways=16) + L1dCache L#9 (P#9 size=32KB linesize=64 ways=8) + L1iCache L#9 (P#9 size=32KB linesize=64 ways=8) + Core L#9 (P#1) + PU L#18 (P#9) + PU L#19 (P#25) + L2Cache L#10 (P#10 size=1024KB linesize=64 ways=16) + L1dCache L#10 (P#10 size=32KB linesize=64 ways=8) + L1iCache L#10 (P#10 size=32KB linesize=64 ways=8) + Core L#10 (P#2) + PU L#20 (P#10) + PU L#21 (P#26) + L2Cache L#11 (P#11 size=1024KB linesize=64 ways=16) + L1dCache L#11 (P#11 size=32KB linesize=64 ways=8) + L1iCache L#11 (P#11 size=32KB linesize=64 ways=8) + Core L#11 (P#3) + PU L#22 (P#11) + PU L#23 (P#27) + L2Cache L#12 (P#12 size=1024KB linesize=64 ways=16) + L1dCache L#12 (P#12 size=32KB linesize=64 ways=8) + L1iCache L#12 (P#12 size=32KB linesize=64 ways=8) + Core L#12 (P#4) + PU L#24 (P#12) + PU L#25 (P#28) + L2Cache L#13 (P#13 size=1024KB linesize=64 ways=16) + L1dCache L#13 (P#13 size=32KB linesize=64 ways=8) + L1iCache L#13 (P#13 size=32KB linesize=64 ways=8) + Core L#13 (P#5) + PU L#26 (P#13) + PU L#27 (P#29) + L2Cache L#14 (P#14 size=1024KB linesize=64 ways=16) + L1dCache L#14 (P#14 size=32KB linesize=64 ways=8) + L1iCache L#14 (P#14 size=32KB linesize=64 ways=8) + Core L#14 (P#6) + PU L#28 (P#14) + PU L#29 (P#30) + L2Cache L#15 (P#15 size=1024KB linesize=64 ways=16) + L1dCache L#15 (P#15 size=32KB linesize=64 ways=8) + L1iCache L#15 (P#15 size=32KB linesize=64 ways=8) + Core L#15 (P#7) + PU L#30 (P#15) + PU L#31 (P#31) +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 2 L3Cache (type #6) + depth 3: 16 L2Cache (type #5) + depth 4: 16 L1dCache (type #4) + depth 5: 16 L1iCache (type #9) + depth 6: 16 Core (type #2) + depth 7: 32 PU (type #3) +Special depth -3: 2 NUMANode (type #13) +Special depth -4: 19 Bridge (type #14) +Special depth -5: 12 PCIDev (type #15) +Special depth -6: 10 OSDev (type #16) +Relative latency matrix (name NUMALatency kind 5) between 2 NUMANodes (depth -3) by logical indexes: + index 0 1 + 0 10 21 + 1 21 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32intel64-2p8co2t+8ve.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/32intel64-2p8co2t+8ve.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e834e462e0aa5a6979308ce2c69b018eae099de0 GIT binary patch literal 49875 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.env b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.env new file mode 100644 index 0000000000..8beeb6fb30 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.env @@ -0,0 +1,2 @@ +HWLOC_PCI_LOCALITY="# near 1st package;0000:00-09 0x00000055,0x55555555;# near 2nd package;0000:40-46 0x000000aa,0xaaaaaaaa" +export HWLOC_PCI_LOCALITY diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.options new file mode 100644 index 0000000000..6ad2e0d592 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.options @@ -0,0 +1 @@ +-v --of xml --whole-io diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.output new file mode 100644 index 0000000000..646dd46b6c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.output @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 + 10 20 20 20 20 10 20 20 20 20 + 10 20 20 20 20 10 + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-2g2n4c+pci.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..1768d11a41b09d3fe87b87fbd47a1e6cb421510b GIT binary patch literal 90074 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
      K5eU#j&Y>EzywR@zUQO0N<4@0 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.env b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.env new file mode 100644 index 0000000000..b3570aca03 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.env @@ -0,0 +1,2 @@ +HWLOC_HIDE_ERRORS=1 +export HWLOC_HIDE_ERRORS diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.output new file mode 100644 index 0000000000..cb3a4c1410 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.output @@ -0,0 +1,234 @@ +Machine (P#0 total=536857436KB Backend=Linux LinuxCgroup=/torque/513099.master.cm.cluster) + Package L#0 (P#0 total=134204252KB CPUModel="Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz") + NUMANode L#0 (P#0 local=134204252KB total=134204252KB) + L3Cache L#0 (size=30720KB linesize=64 ways=24) + L2Cache L#0 (size=256KB linesize=64 ways=8) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=4) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=256KB linesize=64 ways=8) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=4) + Core L#1 (P#1) + PU L#1 (P#4) + L2Cache L#2 (size=256KB linesize=64 ways=8) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=4) + Core L#2 (P#2) + PU L#2 (P#8) + L2Cache L#3 (size=256KB linesize=64 ways=8) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=4) + Core L#3 (P#8) + PU L#3 (P#12) + L2Cache L#4 (size=256KB linesize=64 ways=8) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=4) + Core L#4 (P#9) + PU L#4 (P#16) + L2Cache L#5 (size=256KB linesize=64 ways=8) + L1dCache L#5 (size=32KB linesize=64 ways=8) + L1iCache L#5 (size=32KB linesize=64 ways=4) + Core L#5 (P#16) + PU L#5 (P#20) + L2Cache L#6 (size=256KB linesize=64 ways=8) + L1dCache L#6 (size=32KB linesize=64 ways=8) + L1iCache L#6 (size=32KB linesize=64 ways=4) + Core L#6 (P#17) + PU L#6 (P#24) + L2Cache L#7 (size=256KB linesize=64 ways=8) + L1dCache L#7 (size=32KB linesize=64 ways=8) + L1iCache L#7 (size=32KB linesize=64 ways=4) + Core L#7 (P#18) + PU L#7 (P#28) + L2Cache L#8 (size=256KB linesize=64 ways=8) + L1dCache L#8 (size=32KB linesize=64 ways=8) + L1iCache L#8 (size=32KB linesize=64 ways=4) + Core L#8 (P#24) + PU L#8 (P#32) + L2Cache L#9 (size=256KB linesize=64 ways=8) + L1dCache L#9 (size=32KB linesize=64 ways=8) + L1iCache L#9 (size=32KB linesize=64 ways=4) + Core L#9 (P#25) + PU L#9 (P#36) + Package L#1 (P#1 total=134217728KB CPUModel="Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz") + NUMANode L#1 (P#1 local=134217728KB total=134217728KB) + L3Cache L#1 (size=30720KB linesize=64 ways=24) + L2Cache L#10 (size=256KB linesize=64 ways=8) + L1dCache L#10 (size=32KB linesize=64 ways=8) + L1iCache L#10 (size=32KB linesize=64 ways=4) + Core L#10 (P#0) + PU L#10 (P#1) + L2Cache L#11 (size=256KB linesize=64 ways=8) + L1dCache L#11 (size=32KB linesize=64 ways=8) + L1iCache L#11 (size=32KB linesize=64 ways=4) + Core L#11 (P#1) + PU L#11 (P#5) + L2Cache L#12 (size=256KB linesize=64 ways=8) + L1dCache L#12 (size=32KB linesize=64 ways=8) + L1iCache L#12 (size=32KB linesize=64 ways=4) + Core L#12 (P#2) + PU L#12 (P#9) + L2Cache L#13 (size=256KB linesize=64 ways=8) + L1dCache L#13 (size=32KB linesize=64 ways=8) + L1iCache L#13 (size=32KB linesize=64 ways=4) + Core L#13 (P#8) + PU L#13 (P#13) + L2Cache L#14 (size=256KB linesize=64 ways=8) + L1dCache L#14 (size=32KB linesize=64 ways=8) + L1iCache L#14 (size=32KB linesize=64 ways=4) + Core L#14 (P#9) + PU L#14 (P#17) + L2Cache L#15 (size=256KB linesize=64 ways=8) + L1dCache L#15 (size=32KB linesize=64 ways=8) + L1iCache L#15 (size=32KB linesize=64 ways=4) + Core L#15 (P#16) + PU L#15 (P#21) + L2Cache L#16 (size=256KB linesize=64 ways=8) + L1dCache L#16 (size=32KB linesize=64 ways=8) + L1iCache L#16 (size=32KB linesize=64 ways=4) + Core L#16 (P#17) + PU L#16 (P#25) + L2Cache L#17 (size=256KB linesize=64 ways=8) + L1dCache L#17 (size=32KB linesize=64 ways=8) + L1iCache L#17 (size=32KB linesize=64 ways=4) + Core L#17 (P#18) + PU L#17 (P#29) + L2Cache L#18 (size=256KB linesize=64 ways=8) + L1dCache L#18 (size=32KB linesize=64 ways=8) + L1iCache L#18 (size=32KB linesize=64 ways=4) + Core L#18 (P#24) + PU L#18 (P#33) + L2Cache L#19 (size=256KB linesize=64 ways=8) + L1dCache L#19 (size=32KB linesize=64 ways=8) + L1iCache L#19 (size=32KB linesize=64 ways=4) + Core L#19 (P#25) + PU L#19 (P#37) + Package L#2 (P#2 total=134217728KB CPUModel="Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz") + NUMANode L#2 (P#2 local=134217728KB total=134217728KB) + L2Cache L#20 (size=256KB linesize=64 ways=8) + L1dCache L#20 (size=32KB linesize=64 ways=8) + L1iCache L#20 (size=32KB linesize=64 ways=4) + Core L#20 (P#0) + PU L#20 (P#2) + L2Cache L#21 (size=256KB linesize=64 ways=8) + L1dCache L#21 (size=32KB linesize=64 ways=8) + L1iCache L#21 (size=32KB linesize=64 ways=4) + Core L#21 (P#1) + PU L#21 (P#6) + L2Cache L#22 (size=256KB linesize=64 ways=8) + L1dCache L#22 (size=32KB linesize=64 ways=8) + L1iCache L#22 (size=32KB linesize=64 ways=4) + Core L#22 (P#2) + PU L#22 (P#10) + L2Cache L#23 (size=256KB linesize=64 ways=8) + L1dCache L#23 (size=32KB linesize=64 ways=8) + L1iCache L#23 (size=32KB linesize=64 ways=4) + Core L#23 (P#8) + PU L#23 (P#14) + L2Cache L#24 (size=256KB linesize=64 ways=8) + L1dCache L#24 (size=32KB linesize=64 ways=8) + L1iCache L#24 (size=32KB linesize=64 ways=4) + Core L#24 (P#9) + PU L#24 (P#18) + L2Cache L#25 (size=256KB linesize=64 ways=8) + L1dCache L#25 (size=32KB linesize=64 ways=8) + L1iCache L#25 (size=32KB linesize=64 ways=4) + Core L#25 (P#16) + PU L#25 (P#22) + L2Cache L#26 (size=256KB linesize=64 ways=8) + L1dCache L#26 (size=32KB linesize=64 ways=8) + L1iCache L#26 (size=32KB linesize=64 ways=4) + Core L#26 (P#17) + PU L#26 (P#26) + L2Cache L#27 (size=256KB linesize=64 ways=8) + L1dCache L#27 (size=32KB linesize=64 ways=8) + L1iCache L#27 (size=32KB linesize=64 ways=4) + Core L#27 (P#18) + PU L#27 (P#30) + L2Cache L#28 (size=256KB linesize=64 ways=8) + L1dCache L#28 (size=32KB linesize=64 ways=8) + L1iCache L#28 (size=32KB linesize=64 ways=4) + Core L#28 (P#24) + PU L#28 (P#34) + L2Cache L#29 (size=256KB linesize=64 ways=8) + L1dCache L#29 (size=32KB linesize=64 ways=8) + L1iCache L#29 (size=32KB linesize=64 ways=4) + Core L#29 (P#25) + PU L#29 (P#38) + L3Cache L#2 (total=134217728KB size=30720KB linesize=64 ways=24) + NUMANode L#3 (P#3 local=134217728KB total=134217728KB) + L2Cache L#30 (size=256KB linesize=64 ways=8) + L1dCache L#30 (size=32KB linesize=64 ways=8) + L1iCache L#30 (size=32KB linesize=64 ways=4) + Core L#30 (P#0) + PU L#30 (P#3) + L2Cache L#31 (size=256KB linesize=64 ways=8) + L1dCache L#31 (size=32KB linesize=64 ways=8) + L1iCache L#31 (size=32KB linesize=64 ways=4) + Core L#31 (P#1) + PU L#31 (P#7) + L2Cache L#32 (size=256KB linesize=64 ways=8) + L1dCache L#32 (size=32KB linesize=64 ways=8) + L1iCache L#32 (size=32KB linesize=64 ways=4) + Core L#32 (P#2) + PU L#32 (P#11) + L2Cache L#33 (size=256KB linesize=64 ways=8) + L1dCache L#33 (size=32KB linesize=64 ways=8) + L1iCache L#33 (size=32KB linesize=64 ways=4) + Core L#33 (P#8) + PU L#33 (P#15) + L2Cache L#34 (size=256KB linesize=64 ways=8) + L1dCache L#34 (size=32KB linesize=64 ways=8) + L1iCache L#34 (size=32KB linesize=64 ways=4) + Core L#34 (P#9) + PU L#34 (P#19) + L2Cache L#35 (size=256KB linesize=64 ways=8) + L1dCache L#35 (size=32KB linesize=64 ways=8) + L1iCache L#35 (size=32KB linesize=64 ways=4) + Core L#35 (P#16) + PU L#35 (P#23) + L2Cache L#36 (size=256KB linesize=64 ways=8) + L1dCache L#36 (size=32KB linesize=64 ways=8) + L1iCache L#36 (size=32KB linesize=64 ways=4) + Core L#36 (P#17) + PU L#36 (P#27) + L2Cache L#37 (size=256KB linesize=64 ways=8) + L1dCache L#37 (size=32KB linesize=64 ways=8) + L1iCache L#37 (size=32KB linesize=64 ways=4) + Core L#37 (P#18) + PU L#37 (P#31) + L2Cache L#38 (size=256KB linesize=64 ways=8) + L1dCache L#38 (size=32KB linesize=64 ways=8) + L1iCache L#38 (size=32KB linesize=64 ways=4) + Core L#38 (P#24) + PU L#38 (P#35) + L2Cache L#39 (size=256KB linesize=64 ways=8) + L1dCache L#39 (size=32KB linesize=64 ways=8) + L1iCache L#39 (size=32KB linesize=64 ways=4) + Core L#39 (P#25) + PU L#39 (P#39) + HostBridge L#0 (buses=0000:[00-01]) + PCIBridge L#1 (busid=0000:00:03.0 id=8086:340a class=0604(PCIBridge) buses=0000:[01-01]) + PCI L#0 (busid=0000:01:00.0 id=1000:0079 class=0104(RAID)) + Block L#0 (Size=1756495872 SectorSize=512 LinuxDeviceID=8:0) "sda" +depth 0: 1 Machine (type #0) + depth 1: 3 Package (type #1) + depth 2: 3 L3Cache (type #6) + depth 3: 40 L2Cache (type #5) + depth 4: 40 L1dCache (type #4) + depth 5: 40 L1iCache (type #9) + depth 6: 40 Core (type #2) + depth 7: 40 PU (type #3) +Special depth -3: 4 NUMANode (type #13) +Special depth -4: 2 Bridge (type #14) +Special depth -5: 1 PCIDev (type #15) +Special depth -6: 1 OSDev (type #16) +Relative latency matrix (name NUMALatency kind 5) between 4 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 + 0 10 20 20 20 + 1 20 10 20 20 + 2 20 20 10 20 + 3 20 20 20 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/40intel64-4n10c+pci-conflicts.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a302b3230cf8398a8be995332488958461e29747 GIT binary patch literal 59131 zcmd43cU)7=+BTZdK|rc>r9_%ai*!_^hb96MsiHurp%@@^5l|5UA=J=BdPk{32wf9!K;0sNuuwM+^JAndywCQG# z2sbNTt20nQ=B%ZpK$zKE{pxhU-50^T8R0(NsSShjb*PR0K?7Zc=Lbroa8zn>HkRXX`K@*9#Oc(h;2WS2HQa}F z5)|c&4yFWC)+ujOSQ(?WF0Ku(;YgEc^f}yUTR0j|4aW{l(17PaVr{$RS%S$l25JAi z1$|*=ih<`stIEWnw>{F^ZdwNPD#NYC-mSU89+pY|{=L|U?zA3{5$lwtwd`G4ur`l{ zg#{o*o}z~|5K#^u7CO;~&HOVZ@j2pFW><`q03msRJQ$+Es~}LHpvT`bV=B)UPqi}k zDv;ia27(xlPXFRq3T8_s3sYsvipSV0jvoGb?;kG%5n0NAmvYHgR(OE=Kp?jBe?4c2 zexKqQ|93KUMloWNIdr3!`5%6HQWl-V&k{y|L8@}00Be{EwHn)!7#kfxDvV!HdJMGx z7m&btkMrMV_>(MTbuQD;F&A<`hIoEjy}!UT>gD=PK$+GIT*w9jy#p8iNuDA4*YCmo z2KR4Wt=o4df8O}krMh{s7rh>!R(J8qIQ2)D&FjH~lYa6Oi%xRuyXI%r%MUKi%;LGf zuh6gmyz{)%|5W44#_zcHunQNCO~-0wx~s{*0H^RwSB0v2j+>2t6xAdKi;dG#YJ>?4*#%5tA%#OQ5X{wX0TBp;xVp7k z0`4ONA^;N22!y8%wamaykH8>E^3*mIdJ=dMc$pU2;z%aPB3nqv)&`)$r-hIhn5Xa? z&J+G0pJ)83$!kWgD-g^w2^rWAaa4jy64xmdbCS2C%7-MNP^z_fNCE8h&W*em49qUTJjkm~&Cd9L}+w_}|k#7Vsplo}*WFW(u)^H9>rFSH4F14WSt(oAa& zf?y#{7+hRlFE&_S?nlcH05RxLWiGZj`49%WWjfougyjPl6UzxdXKn3)xHo`Yqiy3P z^qd^2zV2YFii{76%bO;_fk?TP5pM%-KFIk^ErIEwRzXn>%{~mLG=>p5vF!Mj7OIBP zrUejY-h}Zy{T@<+!!4rG$PU85G2Am3t1vQzT>~fJKH`3J~^B{G5YCgSk*p zCCb{rbcD)(gHPu)B+V6L4!|D=bctMK=LVTPhA|0-i9xVJq1hy(Wn}x{+5Z=Sp`}v! zB>W5t){-h!eA{RS7Tgc?1PJa)Foo)aF^`0#wZOzDNMR&j2qvkeUvd{uy@~U|U>{Z% z1g$`|`XO7iLnRp4CyWCLz?dI!2>_IY!_@+SO9K8{NTJxj98jEK5)ya{bcQr++_59{ zMPj?zA)8VUwP1Of1tu8aur$HIP{>vWKn$k9`<@`sG(MW)CLTx|rlgk+X@R+>|FbKv zeTqx=b3^6HQYZi%2|#yIIqJd?WXlMQ%ZOI#cj!;A!_J>wZBMjM!KA*x!?6WMT5X^ zFfgg3+W!#*4rsh1rvL~51Of_1LgLAPWFv8O-2_~w0-^vR5N_njph?8PzzGIGAA(th zV1T*+BM{mZb8!`tkH_H}bCKVG)_e$QUdJfG5>!Z%q}g5k{f!1=gk)LhcFwk>d#Y59 z1yQdACY1|hVN!xIA|X40ArZ(~Dwsl{>;Qk?FfdJ5%sFIhZOg)c9vg`u5F-~1==4AV zQAeen1{(0s2=c$wC7NNk31bBXv2w)8?8hIx30*1h8`_StQ6E@ghCw=2NOvHZD?l;& zA*n4S00I*T$H~ukgg2$4eje;n=enYP>urb5MG^7ByA&#Ut~g8Ug|E>4ZMpli_^|B9 zsM-XS7PamMMdufl7^xSjf2#R&?3Lz4#gXSZT`u%jrr%3db>x06ILQ^7cq7XxF?3U| zeEp_pV8`TeShPU!LS=-0Ps4l-VY<3R_i7u1Ly26&DmpFGb2(AC4^T+DO-z+tT zBX&{xay7LRj{cM3=1!vL76=juTEsXSVNab7&KwYqY+jwY_$&*jGXF}>!D4U2w8+!! z=1@m=fM(3HS#JOG#P+-kx<>UfyGzvBY{J->(ZqXokZ#&b`^0@poRfZ?V@>xyh(RjkAg2 z=5mL+TKBBBy8BPa7`R02n}N*s<7GSb4~xf~y8G_xI=bjo!b}(Km!_tQMA|y0`N_#-`%%{l_}EhZ z72b`F((uW59_ROxINFrHTINcRzBtjbMS54PW*Ve0-NKzoFY98`z;?2Tk!!ol@aahT=-LWv!m+6hXW+yoxb~s|M^O7@^#8&(rgRfm&OtW^^7lKc|Y0R%R z{@BlUOaf(oemCKhbUD)-gALPpsG@3G+kJ!a)HH_z1iROpjD>l-38V+l?KJXz7W8ym z?)W2{;GEflB;EKMN z9G-hCefq3NF!^%pIQ~`UBc50I&@;FKZrQJ=gLt>LR$R~?$!8$#AN-!gtefKpDY6y= zTs%$*tadpA>Sxm41n)hn`#73E=y6(qQuB$8Do;0=w;jzd8d@JUlOOTWSV#DO z!Oy3@EOZZMZM2z6FL9OdIi~kueB$ym{`mVHlDIl((`mPP2UV+~4iR;;tt+bG_uAKe zob42F)qDxaU8nSh?Fw;TDb+HLnz~65eLj)azPFm9}0&+p%(%OJC!6GoPRXexpjnm?Oy$?f zkHVG$%-$5q+uhfgT@fywn%<_Lr8*Iw1u9RcUgxe1!slsvH}@pFuGsfS?`Cd39s7W} z;T#+Ga5rJS1T`JhE8%gfh~ZGLR?lCJbhG9>PicP0CRJ1WWL@^b6Cd4k z4>ItPEQ`@Nib9&k)pcfus=ZG^t$u0~13hYv1+CIdYpy&anT@TqwV_ypj2#E{uo;)8 z_6Xh@K5!aNW4Tu1_O)KL;kDbTMFAq3h{UT-+nUwEFGWhfFFBn1;NX);tDyP$$(;?ZXmR#;|p^4gr7e_KkZ%T^qsr$cAnRX7Ir5MUWc7C>hg`XgYQ&d zpB(={q#Qp@Np`jVu#hnH9O3T2n1REN3i!Buy|wh<_GNr# z=_u*YiS`RHGecZmnVFeHFBM7OjlO(b>xPk0Q6-Fnu|e-dD(e;8@3b`U?y z%-#JcHvZezjUV#Lpy(yjkjAh9?}SeuLkEJ!{Z4M!v_4uPuTCzM`*w=0C6_xD4?D^W zI-(RVt-N!)Z|wyAer&_+XX^uh)HyL%RcTo3W|_67?mIg-E1^D~3tp&^YygC+_ga+;E@f?zX68Owy(|4qHKvQww4iUm7gS8 z631#BvL^=b3u>pPD&{XYwvS4jLo8l#gcuJfIyskS%R{xkIxStrE?rl?+$}-K)*sB3gU?{Ir3 z6p6R3(v(-;4!<^ht{IIco*wf~J@dc$?YwnJw4^9= zJk2do_P<`xrO>?rD}qe5xjE?G93!Ihn%Ld`_N+6~LW3T{|K^b^YF>KxO)<)eY3Gm4 zMJ{3xC_z}iW-+$flh6`-FK1cxa{q~?HhD#a6a2-;=Y&Ve*ZV^g8@A%TOn!ou9bsC$6MH$!u8l+g91oQ^ZN(EP2tu1#z} zll?dH*KIBe4oiD1rV3RR2H|2*BIy{?O8YE*{(ZZ1;actO@b<5kSsk{v9QM;|6LA`5P~1US&;CO9KMEqeq7HPZpwoqZ=L%8(#XG|O2hP-q|AZy2g?3u}N7T!e{O3ktcWZ_KFDN0N-CD|(wHEDfpsc$Jum}}%!EzgFuF1lKz_*{? zUl%f%bq%7=YfF~UZ{abhq?ZnHB%K~<8J{Zm=CZDrkao1I3A!KijQ80~o}`-0Vf z`V!YYG{N?)oJJFZ?A_O1(^)FtkNwvON@LgboqG#3TNIfYq$!FwL%nIPAsjP|QhZkt zR!IY)NB#&vN3GE-mJDQ|tp?H|I(3BaIm|;D>A#I`3TJW&Nz3rr0vEG=n~a ziR*G4hQ^MjkUs9NAWI5Hnx=t8yg^hJBVO@5UIrx2Rg%KYd_wy!)8zy%dM-WZyFA}n zM0Jx4xZ}Ne+w!<{`D>Pwy2n+Y!r5-W{ZN%*s&dV3q%z2(GhjP!k{CWLkCF`N@$XUU z$6mY8nw??MB2eW3iPuYwQHbx06J-@0V92O=$SiJm{+*GGXg{++jJGe%$DDhQ<4Bl*3!SI}}%unuR4mZ8e&HjF7=>07>k!(jv(92lwV2&9atx(H} zo2=D^uhtdr(}J56AAnWBO-huJ)nrf~L+`QX?wbnhrfQ}P<1<*Z7FC$FfJ31VYh5qR zP5%v3Nk;JV;AETN7M`XNHzn|MrCeI3o2+8b{9iaQyq{^)MV2Os!Aw&6aExNl6|$|E zpZnkEc!e~Jb~9@^-BfxGoF%&MfU^RmplQQ$(^T@^Oq(IHuV3!;tDd3MZl8}i_fw1G zvkjT%Rd9yl>t~OdJUeDNsqR?lI+g9u&h2$1zZoCl>V}uGN~|!9ml~Uzu)+P}crVyJ zf6ZV?ZI!8+cl02O`I#5NnhrA2GaqSL=Fv?`btDsp4SVgTm(To#R6d$Y_Oi?ii&>HAJ+si}DoYu}?x5o*J6}>p4AJEGCvWC!@OzS_`Q-8i)r^cd^KZOy_&rtDD?1W5l zta_izEg_=o9B;K=PWlCn%Mf~*X>Zv>HXb7``UDz|m?D-pqL&jYAPF%~d9?MU!4@>~ zRWds9oEE&?l%FoAbUH{{z09uz=_Gj09IDWB&5IkQq#dKzW66BSC8l>5;+ksgvl$Zc zGo(ePp<7RepY2pRO~x_jz7o;y7$d-nYs6ZpVUhVzJl=@Lh*k8$yHwHhgI0%m_g=F^ zjWGXGNPz7x$Q~~-oag){owS&~{H1umIH4peDf7`M@p}2f#DN+duDu#p)h<`}aev@( zo}5M0sk{}Udfy7sofi(t0K?$omKG^{+Ate^IIlG?{OJktIJc#_dCn(!5&=R;IJ`=h zQYA;JigSL%`9oY?B1BS=+j8}kOqyIj856|~-{;ey#VHeZCzu@bp zn=-t4GB^I+WBD7#l)1=;ExcwxR;%L=)cgFC$sZEQv`aSWveg66+X4EF3i91(Y*$Tm z5h8{x3M?jHc*pH5l}L9NWcF>*ADfdiC@9yQjddG%Za3Rp*PP>+^qCE$z@>fOEG?Rb z-j9f0=h3UGmx0@46f2YR)t5=AkA?w)b5x8-n0L9E<1%1;e}_3w<4X7Ar?;cG#t++V z!gAXtb~w|#{0dLbSYF8?Wi^f)Iu;Kah9AroEFI1b*Vi*!OL6d8(5`5M z_3ymoHQXwa|n>LDS`NaC%HM|QWp>ra`aUviY^SVZw?#Hi595vD}YI^=B z_t$#$@B@4hoV`0#hbH9_-I|%dt)kG6AA46X6$}rrWAI^zD?#l8**C8aq~+GlQ49Qt zlYVn`a^gjG@zR2nr>fj}P5}k@@Uq5ptT%68G_11UR;{f!d2+HY zw3I}ogbsT@AA79zRUb)gl7J@a-LaFf-<(WBQ@_O%NOwdIQR^7PB=m$9E`Uh-g1_QZ z6|%}S*HfVB*DjcBn6WaXA7FTqs;XtXqDA#yoa+ke&EO{bjf&T5V3!w@P;+y0Jx>oS zX0`+JJI#m(pTaN91@R@79^83;_7FY%M8-FPIj3stIbS9Sbj_JB_D5LNnq@t;xi+ZM zrUyXn0Y46e1V*nA}yvb5_A@i#}6-D^4wuM6u;zbuyD!M zuw|~Ey2aVM9{=MF`m=akC=iQa5P9iT!hl}&Y7}V`VD;O<2qa<%1sgzx;xZ}AsPp@M z>b`zG11RCieq3{%T{Yacx~vhf;&=Y^4mfrF@#T}RG~+_!KN^m3ev(MSFDMw&Tok`R z7swfNK`%<|ghcn_0g38%@wmuamy8TvT@3o3Av97jDa^DV|6JrvB#mbLl;M;Fh4U%D z1UmY$9cPSIlf)V)mGg&=Drev0l*bi@Q;;VyQro}Z?#F+T=zF{v=W1(Nc@?(=p}DI> zqqo<21NE`)x68*(s^D&GS9sDkJ^&x^Xfc%HkRJJ^_e0%pRYR}3uuI2@ks^-^qFM^D zkb{ls>EWFGCt0%+xa}*KHF`UZxQ_Qjm>FxQqSW3b7|4i;(#0F4#`mSTLJ~N|UxD7} zD7wO}Pk_avjc91(cPy^*emso+M&bTaYC?E zt3UC*ruh52HxB}KsQjDUc96z*DYuE`;8Jkc6Fn-%3kInXOOE7zz^fJznSsj&Mf{$e ziTEKzJ>^yZ^o9 zGAg3er{|mAdxz1{0a&Dgjt-0&!pQ+xIUuPqz@3i4w~urpyN%_lo`Wgy}jn zRrZwO>fvlxXve7n?$UwXc^a&IxzC}%G?lxR=C)z?XhuVRyITX=4&$5pj0FBUimtnD;&3=-PimZ9VZ zJ$~zANY&QXcffsHTJIw57h9%36vtpe`Pr!vrPySJXG~pJ24h=&CssM0Sk<*pG}n3y zPBbTa+f67d*O>n0OtR#RSI=;jhFyH{e$!)8b1PIU=PUJ&mXsPT=k~sfR;r~oQ0F*p zSGp7~Z5S9rm&!wLzcE_xMAitMl}{v%C+p{IryqcVtJPNu@VLOuFwGwa5@MqI#&Bs2 zOh&we+3{faXi@4PZhNA+{-jpO$0eyp`ChBgf%Wm74btKg1Y?d`A^y_)d#V5E=Qs#N z7ya*E6a@ZXJk!y}kN@g*Kp?LF?m7NPPXFWff64X#;-mjiVa8}yZBPm*g&9PnodSXY z$I%sV0ye<_f&cSJ`ST1o0Wpta00#sF1Ty~#`tvFf1_T|YK%;$h97Q-v<|yW$2oTUe z9~@-^#5lT7Il5p50RczR{z~{y4o3mNqrWpcdJe?;tEhh^DE22=pbWq-@RUaTIK%%@ z#{WSQ|AK`751an~TE;a09m@dBkKh~!`v154qtG8Mu0j^l0(PS5^_#D!NJj>cv4yO#+xs9~+`dg0*iqh)vdQe7Dpj_Us|XU0so*9^M)YWe1b?M$1!~>wa0#0W+nH6ar4|gq zPWTB2z}FQCj$bK5Ty;D?FJhG zTL2IsxS4Fx8!@A!^q3&PGrG8VkPc6@7?4#du(16rdzc(0aifx&X0xKc7XBoPN?wt~ zzrhaGGsC!YC8<(p6DN8GQhR;NC`kz48g<(QuaOQO21&BQrWo7lwC!xy1e)AR;r8vQ|o z{c%gGHhKeA&^F1?e(j7G87)rBa=og|L-T~1NE3F#e6ThVGPHuWPLhJ0tDg?!`PcO>Jw?J+W#P9CD1!jhA4lz^`}f@-01Qfl?V3PZkzqJFfef zl+wbI5}DFc=@J>ivU?ACAMqv{aDbnGP=SGY>76cF$c(X*=ki*|7t^{sGzmW%aUxoI zlO4U34@<+c6I3Jq+wvt$28t*s(?YVvTd_(U4JKAOIM>~8-Gie&D8sel;5QXS!-J$27rCD-35Uz zY4W-yQqk%WxWU=$R2mV@rRTfP>xSOw#3xCA@)DP_Sg^TIBg@hia`9!uSJ#F|98NE4 zhi{{jR|`G|Uj~^6j8wfa?bCb1Y0c}(al^gbVMj`BTdL<&N^}Kyv-j6!J+}QjH>Q6+ zt3gNgu3hmXcD0Vx%#qfw|93X%J20J95syG_u~R%)*xkRH)2d|dFQ9*j$%sG*PX88yZ9SjpKE{K z@V|l)7x|pwfgQZXHrxmYjcH^1?%> z9^H_QrRuKjzU1KIWQN4;Nv9a-fw=Uwb=OXDubzr2K5(e9ZqPf0uLyd|F}fSu2!S+N z!$C1;asUV)%6?J>Hqv}IoSj=#o@kzQ1ejoB=K*s(!$S!A`w-RnJtV)*R)>84)7X&r z@SN&UKV(XCAjzO1sA8hI;^E^@3n-=Dx!F6Zj9GB~Y(-#xIi$S8&F1sUIXOyUu{W`e z_f_M(niwQx70sfz#PU$@SbBh+J6uJV%O zC`Fqlnm`C#FpFjoY*#TyAPx+^!oXKM52#qIO-2^l=IeUAm&C%UGYY$Flik2L+zsN_ z1|27ocXBBrGt1LSwO>0zK4%#oW9rMsd#P58$yRMnW~|&W=H~_-a~U4U*|40WC;W@p_qRdsVjHYaa18CsQor zAJKrG#VD-u)Vjmr&J0{MFR#n?MRSVZ6+KID$lu{eKD6MzChBo3(HVS#MTbd2^ek8X zuvU9j*=rDZ$pQqT`Sp71r~E7OTrV({9FTC5w!jV|KyW=9+1-NG?yAA+9qO}+iPVUI zQr5n8h#Bqcaea%oh^oZsU1o3$m{Xi3F6NAQh3q|`7r^NBVaBl<$j}yqE2Dxdlc@_Y z{JItA=~+1nh?3mUAmXQ>FNy`ZN%^7X!2uW*3tBrjaHI}fHK#i8vdkYWF-P)U?F zq{fl_(n1y_Zd6pJ7?NQ-kid}1Qb`BDE}Lr2BOas2bB(3M0vwPxe)S&Rt6~nWg~F0I zz$+;nFThot@;23k0gQU(kh=kC%?4QK%EIO>zvUFHB%h-Ob<7bA)zOZtvqxL2Kwv;P zeIH*KHbZT-nAuO+wIw{DeN=!xqFUQl$ZS%D$xt>>yqdDDK}|~6?=MgG9R}t zDMm-&2N9}ip-L}%EY(0YDh3G12y+`1%@;%jXM;f?sBCLC3BTOezkIfbcwr`Jr=2*n zRS6I2*y;cj&^Uk4ofC?dL!SzQ8(z{0hqPxwRT!(0I`0diin!nuT@b@(R>B>xqN@kE z?b!|F_zAWa4iK$G@WvF8{u)96js;us&k1k#c=M*~7-&LnMzcP=XLyruR??TUv5YuL zx{gx%Qa$iC8pNRjRj@>u-9C%4RkgS`(cz5_KYr$+RM^ZtA}U(}gln$?KNAHp1i10K zsPN)m3zNq`4BC|kmW_9#p(k<$vN=>xN~3BhB}3RPe){6LXofso0sNL8=)4dFMEeY? zbcL$*eLWwr6_Q6_ko<0iXpq3`i0TenURAeSOR~?Dw%K-vFKjzfTi?4sGe~qOuWbz65ra1GfLKcRY43NbozVAkn z&`&VYfg*8b7Ky8X4>-(Pb6VNlzHsBlovx*QrT>Kmolp8W)XNdpndz6CUvdH|PR@6S0=G12tB?qHu`89jEXnsg2`|gr zllNN8aYo+U5Yk4zA5;e?G~VV;A6RF-(eVtDt#NQ1UYGJ&Ac^G ze>8hAyN_K)fIAWH<$-M5uc6)^TGdTLHsNiTn}Z)mYzJ1+Hixz|j4_ONYgKD)4@3`S z@#I|$A>76~EZMic7WVfcB5abKJ&A6va1iSFnXuI%fZiw-ZUoJ4=!P#ruRx)oAwoA4 zjXwJQ=;k!3`7|Rq)@$SB{^&4cfx(i2HB#v6MmW`D2RA#JesX+?VWj|poY6GcCsz!p z6gNxCR;$0s!m4)Ym?G(7+&!PY<9q5~9bXdPSK~})R3mKB)HI^X$0z>&wu7Aht545w z%bm3|$;{*n@VB()vBne?!D&@zkyd+G&Ch1SGVu}k(J}YAwb9XuaN_S%rl)^Kcu80Y zcMPsfOxCL>Pe!E+CmRgo!&md`u5xsB(>Sk0UE)XY#ZGPh(2BDx$*?T3r31x3w0Z$U zdLm_#WK8gs@PnV7bGqmt{V5dy{ii-3hB`UT;bIE#0lI*ooQS7ds<=u83$hFZ9Us|2Tf7e(GiYqx}ar0{dr}U+B;WZx9t9^<1DU zx~RE^L?FT}qiRK@L(pi&x_k|9D74AaO~~q7#q1M(d0$|=tJ68^Dv5LAK3VI>chdD9 z#nn$i&YR3E_jFqE3!8~InHd$7t4^xG=nkh>Vp`S)YNtz5%*dhEbr@-kV&Y{K!*4|k zdRm6vq&?JVJz6**&n0iAAapSk7;?71g_=P%f|eZTGQ1UTYT9IEhfWHO-5!ruWy5einNs9UEpQAO$aG@)9~qh>6K--bdFwr@pNC$IUz-jd1d zt5OB0m+n?*)H;$sOrFkS^iPSfP)(?+W35{sQ>_wtY|MW16^nL{S5@0eqVot-N_0v{ zj2|!DUP&pLRQ#5{!Y>H!@T$b1%U-cQ=t~=(8W!Ix%hO}(>*9oPulun*HwAo1fQ)7Z zfg%q=Tef9(J8$o|R}0@FyFFX%?S4J1Uhzp!@3t~oFT$WfthaT};rr;u;Km{p>L>WR z`4a6pUPHbf1j27c2vvN?1PP<27_pdDb{;MxT=z#RwJL?YDAcINr%PQ)q|pXrk!JUk zc>k3M;KPRYjf9mv$wRx(B%nQ112pGn(we1sP($Ro^N)=+-Z!7|#^KwCo?FA&ERjG4 z?$*=9$ z_rYf}Mho(GHV_)(#zjeAZil2UwMOpmqKNIwh@e3Gw``RHb4dX$2>0V>)JiQjU_HC& zJLWxXYm%Z|T*5DjU#gmqpXKvct#yQZoeT`9%Jeg_m}>!c89UhRHYS`NjdYxq)Q@QA zgWt%1hjls)0-4mG9*2`dNUp5?Gxxt0NK<=-0qo5i8nZ?mZ1%M8P)S{_=FuwKz;^3r zAn^X~R{hY*gYZwh+0J!qay`e-WJ8BFg>#eiE|&_e8xo6iA15RBMsP)d!Flh;BdrRR z8449Ik>e&{T-FRwqk5O?i6u^rQ0PSk7`SPDuKr2Zu@ZSl0Pad^g%izKY+l)*dAeLu zB_1GZSOYI&x+9yn4}pOB99S~34}9Y>W{8k*g4;at?P@h8;GPj)J_A6ozYWz|U3vVf zVC{_3R|RzkQsb$DOX?{GO|l7TB?V7TNnJU`uC_4;g^n9-8h(|*^EQ*`>a#eLDsrv5 z^6jkwluisvC{ZZcO>2gehF%(0NiPTlq9kT$RW9Fi?Mjm1N*;l*8`yv@9!XXMV01<` zS8ZD5XLB-yi#GpjJE|7Ie=qFZY+8^ESGrDy#3MVChCLvjgtgp#piWr6tDM%w-^!HN z<`=1*KkykN-SQHnVz7tM&~2xFaDV$)Ff@W@|sKK)LhAoo9xx zHNSrYDCLa#@CCKYna^c(EFT(UEDKAG(hJM;Q>F%30kYY!T=PR$Fl>>znRN8AORUmCwbdqu|;VKBCD!%0I+ATn1oOfR$)>{ z-6FyxUm887yx1>g(!Kc()jUdrQj* z;-%5OURCuDa*|)L)GEwu7l-Sa7*{Xs06HYZQL6c5dC;9Jujd*upz8`CaFz{D@g8n! zpQM?PDmQzu5~~swEA|DIrQ3+AP&D2PoW zC}(7g>@fy4-bDcU9|oy5{5Y73sL4@}els4>5&3O@7QNYfgAdIK@QT?CBX>anW>xIp zkVhSKA*a;RxYUh2`z3h1H~|UE157lqbW9zEinjN{8d%L6O-!N#_&N~?R|8;JEl6L3 z4JjM=8O2>Xg+DkYvt7QxC3orO#ZON1rQi2|T{=|=0f-JyG(cmtxx_#Kp#k{JU&bJi z07${Wb%D@ENOgjfr|N}O&uL*pNd2CTLJuXavH-D?``k2I8 zx-w_@MWVX$HB2u2`7CZNXV=ag=OgS_HGA0vk+(4*a4X<0+L4j_3(J}%^R)-9tqDFo zA*B-!9tv&@k*d7ihVperPLOqk28j35MXEMOIb^eDU2_cGZ^Z0e5UBANF?pWf|Cj@J z%X`FAAnIl%z@#UxD)=mZG8oJv!n(bnWfa^@mH}&R@4b8fHrn>iQ7{fc4 ze|E{VQeUGgZ|XlPxVm{yXMNd?jHjJR>;|Y%?3tOQ?g4z^48FMC&2g0!Tr8`SRI$@W zRw`}^&RZ+kZ$Ifcbl=yBsxcZmqsp>4PTZAU@tDg;h0jiZpn3tuFWK!twhFdNLLY0z zan;~Lm8Z_Ku`hOqeGdSe5z@ffP1{X7xL5%oROP4bi5$XU+<8HfXl56Sn;eOjyxb=o zFoS31&c2W{IV*R<&LlO!^@W4oIX=GAn1y+5i&10C_d1rmy2g6ZJu)o%ma>I6RrUie z!-rMQ7iDlsml8g9oee@w9Y^;j@3ubWnR_I>=hD8WHW5%W!5}%=_+6^Y6>pPq-LJr4 z<`Z?o_>R*HiZk(zH(bbUqmxkTRU2II|9C$BFh-elM>q^;B>w1AwA2*=P+Y33HdsPD zXQd!Yb9e8@0ch(>MI%Eui1GWBYS3u8=hA%36KR@#qNdP>jd)N+5*%f>Tj^;Uak>;r z430xD{8*WsRGC}EVs|=!6*vO>W}|<6p@Vad9xuY62XUQ!R$r}Jn~N#C2;tG(Z-A2j z`QcEbTiMmXGXPCO44*i(zJD|N-N zwiu4Xry5j@i>yWf(@Cz(hW>l&qmRFoLW&1~&4W>M@()tCKw7}(KSyQ%L40{1pfH+) zN~)czE{d~Tvm%IP3A-`#r^Acienl+YDebrjsJ@%*Cp1U=I`@GDi+vxK*UiPA93$of zh%X#^zP;L`Y+PO{n_;?4p!) zFu#H3k;$`#6yc8dy+Z9(K^#vZSqSkOHqKw+$z3}d-rdTdn8+Lr zmY=^hdWBm0&Qd6T8^{XeDDaSM$P*zw7YP&+!tT8HwAKrlxV6%G+u0CR)lI_PD_Y)9 zE^5v(Y@e-?BRGR-e^3T`N$vxWpC|{XT2v}JBXq6 z5e`QY)e(O6RH(?+sWXDFBeqQ$Ti4!nY{Yvd=e;uY#wDo39Jq{gh`U!g4}MLz?(AnB z+-HKQ_CqFJjQ}h*C;7vo-8o~G;<=t_bhzZXWi%qkB%993% z&+aaEfwrOY3eF&4LTwHHQWJt!+0Nw6icq`<^?61O4N&B)cyyQ^79Vi&Fbkg;6?f_* zh&Qx(#?#TVJtHWHi66X`t5#KQ#j8KGJBWMPK%)ATM{Wd?b@9u94WvACy@kz6It2=c zUt^WIr{nt|KBT$2s#fAH4~Hlv;hxUZJOmYbp3i$`wynlKJh=bd$VR#5G6LZRn|NS$ z&iK!Cp+0;zu%ya6a*MKLv7DxOJh^_dpSsS5n}=Uc1SV8p3aWOu+-pC&yNppi4~^W- zYvp}0QFOj}`g_GX?i;D~iU2lW{DMzsW;tvT=`*0|>0K6!7OU7UtjgCvNuuL_+Co?i?zX5a*(Goy~LDo?Yd|@7? znkdBKCJ>lH@(rZwj-KoJ09b5q!!ny?G3gTk=hWB`UHdwkpgQwD&s&c2^%yfKA%2r4 zR;{Yav3vXD+wpS-ZC>JQXTN`q>|`K?hNu7^|AFpYIMWh%3O*^fK0|1KnVaU;p=pz{ zLA6WL>+RHJ+RP2;4Cpd%qmp_v$X{djdrm{fc>#M}s_IscjBFCl55O7yPnFG5qDQfR zF0kaWBA#v}S+#k095Bp*9%Qnu2IeBs=mz2IZA;gZngR0Sk#>y`o6{52)Q}6jjBUcC zmvZH|lOE5o@Kk+i4FrsWA$2t|+O)5OmLQqG9zVGl6~RuaTkk$9s_#y)TRzpr4XPe7 z>#S5to`p6~%{E(IEVzwu=lZZe^@+N1VF!~xCRN3t2#3G8P`Jnow~Ni@1HFaAWoGl6 zdu9lPndGqzSSQe0hzdW0tIgzbZyvS#g{WiWa4U-dM%9qFWKz75+KMWmGW91#<@NS7 zqa&&PD}{bgIl@c8$jP`pwW98KDvSu9R>hAJn3kq`4ydau7s9@6goh#!y0w~?!AIOr z7DJ&>d1jKlswfnbl54PzYd@17}NK0B|uCv$bzCyr&MQ5z_9AKsai-Z2Q z+JOARr$91*#d4iCuRx9mF!ua0-Y_5Kz|2AOcPyDupuxUP?;qH&04n5UmX<>VdW~&a z<2uF1q1Qwf?Pd3>{9M@#ZDYf3xXA8>*U!7p6fac-x#2%x+fICx7t$$9Bx#*1sI?y% z5LB$Ep}g)6JfkO(BQyQpyf)6~+H)1mXwz$VcFVd!Wu=|Q2kf$~;FnlQ^3W>Lzi<83 z()WD3aIdAt>2^Qb>6KU0$hn=jcMNMq99~uRv?WCeq>t$!y$7k56!8L_5IB%K?R`N{rO!QRYh3(e^(Odh5 zv;$azItq(x?o)n^j&dKW5cXIcBC8bNZTPr?T`7PQo%cTxj+VcmvI7O7Gog5P3Id!@ z=>7m$aoLd!<11)smAZFGz=l(|J3vjW?(|GY0;^(=Bfo8ECXde?m)%f3##*t}5jyIn zRqSO3hb6A?+F%uuODD`EB}6|eIls@m94LMIo?hH_Z845^PvgQ84;dLdK|4@cbg8EY zivcDx=6c&XzSE_z`U7q|oPF{9_R_0K|91A1%Lg+7&2Nj34^a;sf+U2Co)+J8ZO(&;112mBob-jlf2HxE=?uUD?EK7`d3LhGf06i*4d)~;z zI<@EK(0PoN+L4xnWN0ko(pJ#6;ElV=XlSUeY3ddehS^xXe<3dW}t(OG~C?SeK$LHfc8D@W~uGMvtwciiKn~ zKt8(x9+a@}a z$=WH4MM++5_JHx+pkd6bOwqCPV4IlKn(0W+27zd)UFtzm(B1_=7h7_9=9W7hax$cC zO?xKeG9045wzS}`g@(;lh9BrmT);OcBr zD-O3L#*=H6qh%$dY=^_)Wto$93CwQ<*j~pvIKutzURJoCeShAC#3cu#}`SJPL-A;3-twvUY zJg7!qUU7e6+I2^~*lwbzwt8o4W3m1s1s?|R?rAZe0JD}Ryq$Zvw<-?T5yQ;*o;}4? z1R#^5F@9ZYC&e^JK5vyZ<`D?Xmxb)iERo>=qbFI%oSVr#+kDl_U>DGDeRTddP>40> zSi)ykt#h5Gfw@-aYC4?TriMUB9g?gZl0V|{Y^&A_Rn>TElmVqpe+r<0;JL@5?b}aR zvWQB%ni1WsMO9OW+pyoZBdQM21i~s!fN$ru zG!G%!s_JlkV_CtwwuQ0+_r~GZl$e^-W0o7y=#b0&4kFzZLU#cXxf@sF=r-z9AK^My z;Vj(!j23S+oOWvnL++rYri7AdX`t(L8`>N4vj`;N(S3$2s=G zN2Wz6vwA2L>NCapAdKxhkg}gD#wZ|uwYi*Ur*s<-%u+uj7D_{p&3^4&ZDR5CX zqVHjGxeDZ0I15&M+GHI4s=w)YNX>;3+~Z>-W`YwZy!s>|LKwW4;Z zs@YaivnWB(D6PFhRcxxYH!)(hsM>qRXenwXt=Ox->;3+Y&u{+sODlIgH_si^v z>%7i+QtRK;&Q4!^-hV(^ndWbPD=v0dY~nq_f7tTE!iYI2710I8Y$hh!cARa+v~lBw zg{3qv#HlJwj7xXXR$Sd>iX2Kr zu$Q0!@Lt718AvRXv9i}8CMhmG77CYgv%chM?|*P`I%cxJ+ruNTOg_Lhkyu*5iK`dC z;fUTrAg1HyQkp=NL<;ni5VoNydELRF3VLkhYg8Z>@d-rsdZ*)-LG}$OHb0HNJrm?< zhQn{m9;(C8qZ-Tn*6#`NkB&}pf9mO*O*M)QxO2#}fr z2`FFjNwzgHmKC_qLsFkgorH-&j;@844=jdr$1gIY$iSoxpeDix{Et^jnQE^IMFuKZ zgjU(Eg&(T_;d=t&;=z;sm+uKwS2BSBznx~oRldC?tkW7x-5Pt$!qM##f^z+=czBT= zWkSaI@LiE7)tWXnGlbTXwduh(EF!_>rJwckuGru3UYo|v^0IiAUzyxh;JN@Q9!FST z?7z>VFMBh5%Jr7r2CeRH^9YA(GmjNW zys;p6B=4>TF&4Cr38U*~YD4Q|MlD7Sfk9?!EQh!3IiWD#%cJqHhqIC>zo}ACi=s3@ zy|exGXB0h@LJPupos683h6+M<(ME&8{4RTJou1HrXE*GYZHsB#8j_on#bimba9{C+ zhwMa6TQ?Q*qa)n@lW%G>`|)2T&jC)Sk6=!Si45Gl>v&k9<$Ze6pZ& zraC77^;#~O&51k(H<=aAl?+4=IH-3zAtp4D6UgOfO7b>}OL(`+BL5%f!oKptp?o83 z%g27=lH;EmNHOWIghO@`&(XpDcCE1J30u~g(8rq4M#NfRWM2DZC(FpZ zGtqiyVxkqlkAj_M#va^}YMIXr-d(-Bt&cl-RdV9|cV1~__xcf!M~u6irKHEYL>62z=rHMbU=>D8wj;(**mQk9(XTSqmCjYXYq?vAQe>hDz9r*jo@J?su zn&6^9Lf_KB;H3IFt7%lix>s1cH4_xuChq^o}XEZP0Df69B(VjAiu zc*=8SM$szs_WQQ+ug$mdzlr-9`VI)oxm5yrMy-;jlHn>oFT;JnDwAmefmBk6&1@SO z=u$K7+Y>r4%4^&H8@p~je|K%5h^{qs^sw4`sPKK{VpP}eDbZDQoa?IcvDVApbzY~@gVV-L+;gd-$}!7MEQszb{qF~22g#p=!F-`x74QT>BT^!L zTiSAAIn=(43qQA3WX?jBZI!^1{}pHCF3iuF5vvUE!8 z?N6tOt|`KOi(6WhJiE!J2m$E!Vw7uPWte=UyV;p`5>_Aa`hjOEuA#Ni^*jwP?>kBe z%$OpM(!$B4u(02lkyPRYUW=uh_lCeBczq4)Wk@$0$oh`;-QKo|mcZk4pf3dns=;)s z;v%bK4Nac@PuW1qM*pAws#4#Tyjvq8tY~#UhNo3QYSe{75Ef&J{HyYOCRW!YD!8yK z=1&fqF_`y_AudZ%Xn{=-pQG2C?Ds?<;*}e9Ks1M%51Dovv)52K8QHP$q_Dx3Wx%^0 z#O}6v7g;-I=KzK6Cn^Btsq!Q*1f%khOK^$U)cYFQfB^%|7H{vM~-96abl9VL@;Z zEiHe9%vs7m79b^yx0iL~RZ;A~69h^5ED_lAolO)8e3~a#xDsi=C zd+oxlhQrm`c2vU2a7X+VH^+?)fiOf|{xJG2S2~gz?FZv!vE_7qCcY!)6hU-)WANi_Y`&?FVF>B zpWQ4;oF%y)3A%2&I6X)4X#Lcc_%uzFC#`G-G@g29x} zJWimtME`La^p33}5LL-LAVcNza%9&e-k1*f3Eq%krYxN5Va=nsO zH?9lquyt9uddTJsh#-4@TF8Y7U@cmIZ@k#ueP$77)#D$IL$-@rzOFBNSac(Ud0k|; zXz5-4@MvxFsI|<%ec^JG233@#R2SJ1chsh&J&ff`U;K1_Xu)0EWv(YfS!Ef`+6(s( zrY|nv42`kHUHRbtE7d&>-mw;Z%WC}hB2VeNbs`wXLRHXyQxl_Pa965qT{c=)FPaf1 zun~mtrY9p1XT?a1-q)E$BtWWlC%L_uI*S zy%(7fQ7<#)55oM*l`@Myo-OhdoZfOJpe{u2D1N>YSN4FYd`6q8PxhU?G}C(?r_zjY z?7s9bGY2vAK0X7{KkCAjzZG4Cm=DO`-R1rVeyQyJAPnkGg}EKZ$%O@yCI!V^CGhME zQ%!~?4Q61B1dN7EIVy^p?_M-3kZnBYEDAAW6=9joN`xeb*u+EQZA7VW7+q%w`)nin z5C%lDL{bJr!s(;T7&4llMhJK%(0bf)FkKBSn+Tk)i&eUk(-@=UxwyKuTc1=0(ye#& z@wEM}=D+LbHx)J8JKHs~m+jpaCpxnrSd#deJww+b-@W-~uc<92Xmbfy72^ipg;%Gd zWX59{D_WFVg}NFAno#U(r0z1I!0SJ#fOCPVAhY0gP%kfJ1^aAf1`W(NEib!0Zqc^vwy0V2Zm{lr|nzgcZ}v&;(XV)ROk%<2Hg(z0@xhFS;}U!E}g zy0vNN5Vn|@vDwdkyFjoNtxbj8pChy_ou!UD274|tqZa$cM4KZwGE$}vz0w1|WGKpn4}8@KcJy!n z0-B2wc;MWYKU$e)$GMtcEq<{XG4G+bJp|juh9c5>1{AgdXfg2tq0 zRkV*$tYf5`&7||QB|5!2YC64opQs_Z-LIKn4#>t0XqP$``E)$Jf_PDH0vrF0_QR3p z1G>a5vDs-Aur4ratzq57L=ynK$Zb&+PFvMgqDZ1r^l=8UpRhbTJB5h?2hj3>b$j_v zm*{82V7D~Koeb$tMe+1MjqDHM)LI&9C|1i4CM#>Eq0Lr{34?&vL}^7i(4tbVOkQ_t z6=n-izD2iIiC^#jZ4!jRm@FAfZjRpU60~%h@FPBQLZWrOMigwT0VOViTaUu}zlQGF zaOT@@(!A@pUs?NUePRHSa>>p6upR}xYhJu3&YLAJ1|C?Q06I{9^nUI*O?rs}mcS&J z*2`MFkXL#ad$*^w{a-18_b@x_vW<2_AONmS&n6zvrrz^k4`RNGnYb)JUF{!343N)a zgOvp{+>mH66CtwRL2^fInmeVT=dQwZb`)CAkNE2T=m67~D_G<%0Lt>*v)GXTD^?$Z z`eMr}qWa!MLHJ%uPb#h+Edr?9&Tf6NBg}5z=yg>aB!~UCp$x>ufmDRJvta^&17ysg zVT(a={`~VI8{A6)4i{u=pLSlV}g_<#65jw7X25Q@SAN@^~TK>$-*``UqF^^C4piW*YM5N%Zm5`c~2OUe7OI z|CLPjIy`2nZ);t)p4ja3i;H&j90K(AXGxVP?=^uKeN)z^C1Htc&#~73jPzLTVoAVg zjIMo?>mR*g_jN#CL}If~!Bb#aHhs==sZriyBsKNS0A@4reG5jJkg@z1SHP|^ORNmx zzca4`V)*~?34|{FyUe=K$UeJJAtv{j@9e{?#mHCDlhyi;pSpti9y8;+TM%jrn|NLZ z8wTnMEm2kxG79BzfVaa&%|@M94XP4OseX;kb9GF%pTpGT#i8G^RYsuyJKY%ffX0BM zP)6s#cP74C<$vN2kS`UllMaa82nYX}#->9g&eO8NYZIRzbw4HVV(-ZHN4OGI@p?XD zzXFf7GDi=t3hcV%Ygn&^b@_W@>(@9r$b%PsxYFvP($#eIY8aXvYsj4XVi0)$HN0rL zSM5DqHCI(%Z_hsaiq{rgZoJ|9B_~VIb-TTCCriZ4+%9dy8fh>D)wc&?ve>MRRU{Ea z!nBgdPaoYxQAQM&xl!4@$khUP1{b=hPLaeu0@~8xpTWW>{b_%5X~}YD-*-D3`SG1j z`IS7`4tIZ#);NA%m5Xl~?&m2=DtNpA*xO8&*c)Y&9fc7~g2|xLtJ*j={)o-b>Au`p zm+H<(qICV$IXC1?ynp2|aA6741%MXYhpO8ZBe);$EV7d+ zxBiq$H~V=OExwb6G5?gHE*AzxX2w*%rwzHnqwJoEsJUHwxB$us4p7`kz$7aJ=l;MJ ziHH@~E?7FQ6?}d~v2x#$!n`+9muAPlbI!|HDXnNd8g1|Y#BUhiII8i%8Z&<@B=N(5 z^wL8>mctpia}&-BRKBpYT>!5zBiF!hqUg_*cyn6|+^f-9zHuUubA=q&Z@#)>-kt$6 zDS>l#8*OZJ<~7K+^gjc#E9v$bva4DB64cHvCeovjTX264_gXGluakJ5K{%O8i`5=t zB*qWtwIaK6TinGW8MH?FR;tHq5Qwj$And(QCghisP0a_Tf%1_-#V$UfR=urjFDV!g zYj%s?5J-lQlDedoBJqnEO4hfz0elZm{Ole1g7G<;Tg-ERGi%LN-hlIs+FaxP>3|6z zbrcE*1C7-LYZ__hEUFpd@{H=(F7f$PTshGyFfh}VfTBW!EuK3sLK3ris7!XU!#^)S zegY_fYAP#OGr=>>t%>LXe;xGh4}!QxmrUOY4TRW^2IykY zx^BqkJvdYalMFU|*~i6oqPBSQ-1yVaZ!hnGBUrg+uF7QhPcKRd9KdKT?NbW*#Hc?} zl1r*izne z3jKRU5eE;Y^6Z{E-}c_DoreYyY^OJrcN_pYFp`CQ7!F(<)Sw6EP97xL-S&qq+Xbvc z`|Sd_(E#@zn5!5wU$%1$O@3pzgy`p8>#mc@b8-2 zL;VMH3^WPOq(A*@P{xy~s-VDJS8W^~qd(p=Uy(3Ncq>cuG+u%z<|$4o>+5gUgsZP{ z#DD!CpD<`rfCEDA*%$#ZDg$o>K$FGhoUDR{(0@_QP#_Kq7%}ov{L4gRn*!rK4)F6O zzQ4zjcZJ)Pk6&GWy61Ynun&dij~xDxfcjq3`Crv2yp2{ntF2di3VT&o7PG-gv;QG5pjN z{+MN=oy>62EZ+^x{}HHn?uuz}fP1>_*f5D)#1-Oxj)E;`$ zqQz-d+GrJ4*ETRI0~ zw8+`wU+dG$`_KLfgv1f^Y7|J*bYOu~Gts^78JlUwzwY4Z?qWAH+?3rSBOfEf>!(gN zt^pOfgOD7E!7H`TV1Gm$Jsz6RI*Dq52TzdHJ zcQnLADO1iBPB;JUTuv1~_tqOfse!B8Uj?KQHW5-<0Hp6sN)q zT!W#=1AK;iyR;H8Cz-b*X@|5Pas z3j>L#J0(trJX0=;57v{>TTn?#>*9A8M6V*p8#COm9x6UFft6`%0n){{6%tx+F55*H z35wqlXkK&^7m$0u5u^-c*nlx*=d6va_L`69Q!6$5wtK;DOOp2TO_w*H&7R;su<17o zwpa9>lk-@A&c<}#yFGrf%z5I<2=w zsl|j%6fpvnmg`q^%K>XftxLqT`H$ubME^j#ut_RVylx%MjdafSET$C|evV9Km7WpO#q zP;sYnE92qIs83hfI`5j;_Pd+oaB09uWtG@$AX2z6-J-G&bZSrWLgKFYREaO$m$XGe zw(@rpFmD@4_`-^&6)Yo|>j35)lzFkHg^^jm^#i8x#nZBJy(* z>PpXC3tLnBMbk+Gy2Qj)K?*c^wlBpXRH&|)C@%PJi5eXD6t;@k+c2SB!|5hqLzWii z57e)`g<}%F9-9)L+5l@!4P`>pLrHUXc3-7Gb>p3T`@s1Q!WD%g@+^-`C41)f>PtQS z=k{7;`+YNfH;+IO`mf(tVbkgyvLE_6T)q$zQX6IONR!qDBaV$#>eiq<%!L4-m5jam z9+i{KiANKSCQ`0ZR&dxIB z|Bq1xG`8_cOU1ptdC7S5HQXQ>7>SU#mqm74+yH*S<2J*$+g%Jr(Am&V+tWW$bzX>N?+s zef%eEWysCcjZMq=ly*HAy9TIrHk_SoveJKUpEBHTHe2WE22`|z_+^g zDFK>0DC;5;_gFDfD&OO~EWYITR8(WnN009dg`VC8&f&LIhja}?OTX1ud_B7TjIwF6 zBIyvFZI0TITk2>0fEi+|x90W$-8d^FRe+TS-%=zNnQs$|*GjDwP!Tm;))b}wm@A{>aO&vRR<~fhP3n=TX zNZ%LJPX54BKb`*NM3EHFq$!{2ygMJcXL#SnP3&v9z{xDp1`P*%EUKBT6_JO1$nhq`Vg~tQ+DgaK z&PrRu4`bFdm;LnZbRNB)+CD0>Jw%ONAF}xrB&;o^_3ka_R*5%rX#pz|b7q1=3nU~! z7cE`Vw{c^v5_K^MlX4C0IRR6!YkLE!{Qh8XZE6GnZ(^Q#z^2>nH?t;hqA(Ucjq>YO zH3J+w37zCKdrer*Opb9p?X5>VR~qMb8BmIkVTqRxcIE?iIrl-IGnk%jcO{MJIl!Y` zI7tPvZh=kV(q-}N&*D$rK5gHPbwji`R;@H2+dxPw;~;=To{08GfIt%AOp7Np`gMAt z$Vc_;to*h<0~c3{>qm$G(GV?y`6rK3Hp!rA9q(@stwGRQ|!mTj2WLbMq>Ys~#z}d@lVXm#^ebKyU`JcH> zwB4!X6V$m>H|eI$>;3)DX61?2SzNOwmqDROcca%iU_I5peCf}kZC~T3bJj}){+gaI z%*XzECvb)5e;ia``v;c9$53UkWoKLsz_d++bg%B@&F#TR3;XlwhkL}O{x*B?0Ro$8 zoA%az?w+ZQ6&s({`i~EGNE4xDO2>!9_5`VL*hCyJ+74%OX&nUF0h%7?gf=B>o-55i z(`yz+ki_-VxgAG)g9UzVej>vc?>G0p@2r3SAFLgSr#=fHJrge=)(&WCfywOvIBn^g zBdXHw;3cDM+Ebq;?6jlRvkp_vVaK_P|9LDZqyEYD0l-j@|Hj#Uzx)?tk`Dr<4*_!j zM=7TN1U~AM^5d1hKizDB6V1mpZ!H3G<+l)BuooIh5+Ur#;J66Y!FHO|OD> z=Gpn0?kc2bWpo0~^TL~tB2&yv!X$^%b!Fs5qwDMBStArIlV10~EbN%45z%7bfp@pMHwT}c zMy39yJ|fQh!38}*Ko}sO!u8Lcb8++Sogs=YULsw;7;vcc-kOt`vCm`Xk_AcKt3e0c zDQ=wm62Nn_wmgdbS8l>p)J`v`@ew1$j|LG;rY_un+7!zldZVwenJ{crtf9k1pPDUa6u=Bv)nUp0dS@(N|Jl>vK>$A zpZ9-|^U^D>-zKDo!ISy6+u3n#F83BRn_RRrcfs}(-zRj+pYwI0LYcPk+#iVLhGm?% z5_>lk@D6|nUYQ)BmawS3>=)=4C|9_28LR<#S=>1zKf0b+z;0ev+c0A(9bk<6IpA2- zeV-TbztvYzzN1vSJE;L7_HUwHP#${=ZoZhrR#5i}!o)$9$(5`-B8fO9|53C>D_9$O zz40%5B%AT?h1s8WqPoimivzJ%zKCUKMLc*jz6!cnwuSbDj7pHSa?WD`{&kb~UbrAQ z=hRoy07&550Ko=O9QkVcA)1!w_WPD<9oVjWuZHT!T85|c9n9YjfM3t>Ol4|z)7=2L zH?VM7;*X{-1z88SEu(wl^yL6~6OY8&!E7VIlX8fk4Il+#XIV^?!A4nf3y@Ej_pW0> znDx+Jk?Bj{xb@Y}@u;8|1)dPnqWIkIaVDc#a@xld)VW_?;AJQU+oGs00FY+CLeSgR zyhx06X>P`X7(f*jsL%jh&9OI|cR>g}_2HGE`?Wf)#LhZ}&HlFa?Rp2_MPw?S1loHx zdvS5q-!tvI|H^}I?#(l(0XrpdObXarpKr;0Yx&|I6X6`X7T+sBdSG_H>Y{wG3S52^ zH#ui_ejPNlQR3p4K*aaGjY0q$IGYavf4AdLQrB(21|ss(UK7Z)D@;+yOd|97yHfTC znSEN3xtPh#!wY>CY@NkMW8N>@+2?P(*L`r3Z0si-Q)$HB@ZpQ08~?w$RfD@vYe zGQbPqY(^Z|M|!5uB-u)pi|uMm1}gNMQ9^~REXtqWD3kex4W9%XJpFZg)N$ISh*Wi}_E7sU6pR3f*37OuQa=n02j@ck zX@6z^K85wf;kWb?12{ACN&+7)ZXfK0eb;!mv|n7qqOQ;$7#Caom#4vzNA^@jR@Tti zU$9p_i~xnosfICH@H@VTGRL2@66pNCC-@^X;gmV-4w#OyP-*^jB~31&HC8D7s+qB* zp_dF&zmk1u@9w5zf{I}45&z$hECP8OKWhCn7u1jG;$ldShx}_1bVfXf6oD|Mf~LT0 zJDr`VyCZ*QBv_FzF7MAsv7Wl0p1XZa6BVR%B9*vx1VuE{Y%!_))(=wBY=_7qOH_zny9vcdbibos72Qfkqhm$ z>K?duhrN-K^@mMW@hbn%_!cObKr$ z_pnX$y(I=bk-;Utnm@t*V_?d)*NVtx(k`k0r7Ocx5D(-se~-^v9E`^#pvopzP|K%m z1)1W^Vmk0EK*e!TscKV;E7owyio)j5ip+!mJO2s`x^_6%%o_EY9_dbBi`n63#%np^Jn6O8MXTASZH59^#t(Kl%^#(~#648pu}`zI#S5}$ z!^_v{`C48I=5D;M1`9jLoK8$J#nnO~jP>+8?diY?Ym)=Zimj1YVnpXh7( zLEnoxPc>A9d-axfoTH=Y9ia#qns=4@fX@1F(_c3gZp*Bgv4yMGmxCw})cK~ql13`m zmH@$`oD`sa2*B1-gvy(_gh(Q5>esrV7S9LEUd0>(Z#DJhoIiw zUU@E^uWER8G7=qPs&a*3t9!>HZ!&LbWLrq4j5D%%*e>9e21zgeiIA#%2GRW&|DdK% zd^I_R5k>q}WK$XMRbm#hCsxT|?^dp*DnpzNy@?^Muiwht?)O#bbI#*6xP4KNoV$_M zXRf&?cO3a=w0>o%!q@n_TW*ahHcNfUewKJ;y5&A>J>`5w+fCRW0sgSJ%yFe`-fY$Z zB1Y!%L_%QDjO9^3paZ0bykz*rujKVDc97wzfAhx8A_RSTfn zCbzVOb&5k!8$ONsT6CgZY8D~eko^FKYzP)^=B*}n>=PXP*_ugCq9GO^M$xb^fRHhHa=0ox3zJzB=im| zo=zG!(hd!AhPE5f{9pkLpwG#6Z48aAn3gWUH~8rp)m(iW^SZdxEYg3*_r}x;!iC|g zVj(7X_sOmueP#)L%tG(i047Ey?T5{dt(c!aW-)};E1Xij6oJbh^qA{XH^tdOtO6MxAm>EEb!m2i;n)D8^5`b?HnSsXB^H9hb57`6FR@X z)}q}|%gBaNQLj=@;Ht`F$)sj9af6!7VA9wJ(4&$Uni6k2!t&}ZqFX$&$d)ZfxYa^Nvn`_np2 z%=cj}*yVVoK{WY~rIkrdUxgV)`LN&ob+P_C3B&+<&v#dE)Uc@*Loc0j$lSqF#c&DZ1}x2XT zGuB#hC#UiUTc&1yY~=Q$XM?NUvo7dC#7F8f+b*7#=sqY7)#o8nr3Or;w}K}`-F`ym zGq)~vwU*e4kzk{SzW9(}KO>y}z*q$;+oyrhBqR`h2b$LSWnP#dHE(-$W~qM(sLWBP z&KC&rZOV$3<<+_sHPd$81)OyvgSLaqmcYNEA05Ei{DI4w|HaW&W9<-Qm`-h6Z28o+ zWBSWkH&7MyESG~AZ|NNNtS+w7@ZOP851aOK*|%*eS9jWaj?ao+;(;$feW`aD>TC;S zr|7lrfUl@4|6(>r*oUlGDg@2BmhKP-b?OPOToOaBdRSTY8vl2n3TA$*^d9est#DX4 zL$$sk?2XSBoc_hJZGjuceqHm{j)1<}-Vc67HD9IkVX^P0cx=m<*^gg~=ecvdG_UC0 z*$VEJ@zp$c7REbQLS{5OQ8CSY zoSu4x@d1Sl_A4@e$00Ak+8j4kWp-ArePSKpLh5k(Y-YIPhdKUfUHf7F$UkFCIb2if z!ujg=XX0SoNzmV#qu_X*70D3JZ`l(|HUIou#HcA$Jcl2%G&`^VxjgnBNgkQt5I(vW zhGQ@{F3o^0zc5|>_FJJ|iBVr}&6}abAo9KvARzHH=lnLMNrVqotG*i{JR?WgOONgv zd;|@Dg|`0;r6V!&9w?Pri+_mFk1C7OBh8xo1&}G6Xp5ngRY;8EA~cY}f*E&w9g}Kd zgrKXi|M3y)a553|?i(C}?Jg`SP9ZTo5mKinF?alDZVoD!zBcdQmbCIk&J&@5U<<}F9a1Y}afP>a*2M#g*1x$aAMRk$cD4w<&J z;dEd5llgzmN+;B!B1p%#OR_nUaFuqOSiR{ThB1YZKoxGiD)V%Thf(Mo{6WkNaS;r; zhsjVh?2Z3ZXb2K~VKVrB{}ej^cJ)_8;q4bRO|0K37DKF{JV^oKD?D#T^5BA2JP*SF zA+80OA~YT_eyGGn3}D`i;PtqCc$e*~B0KY4+a~l{CPr9CcSO`nAwRyBW2MpmhQ12y4ysRl`FTK1DuIg`5)V3Gxm%txX>Ds2%->X+{5*l{9<|hxr!C7o`~jmRIPf0` z3HE2Q3(o6r{n%jV=?CpC39Cs{g^{jsk3dD_ZmT+o=v+ z*}30~?Z-l{fv{KHJOgxKCW}*_K*ybMoX{dRT*Z>To2?%D7=vX3gTcWNkORpoa=w)t=1mkUuamUp`94i@o%r8;FV zgi#HMSHAFCl7&p=&CnHtsQkFX2DK*`0}MEun+gp>Jf*Ek9K$UkM(9Oelq9oBog_WX zfQJ3`RduzxXcej)GGqF96>SycjQJ+wF?A~=WHV#mgp$Yqt&-x%-a?DAz@Yy7e9dXd zjr-)kGY#e_4GfgDXqp`;9f2gC+W^cU^f4dllCXa#F>t3_&6oOQFVu}Az1doo<>?$fV+>p)9rkUUpNmJ(+ zqX0P_;JnN7sHV8@W>bA|BFM~8fXwY~;hb>TnrE{`aXwT->$)rnk6UHfbLn`=Lb#_X z4S+1N*QhKl=(XyCLzlxseRXC>cB)`ra=t9~volJND+7RI#^-Cf=L_@=1_40Kfm|gE zUO|COAq+4B7%zZ{MQMc1nPM zYGJT%(3Jbz#(xU({q*ne=t@9pE@ph#&Rzo~UKM6!XN_nK1LSvilnY>=3t)@_pBx=@ z6?Ia;nc@9V?U&AKVZWqE6L%*u@Y|jBCuly_Tqwh9RhqL!geo5^g^lPx3nlHpZ{hr~ zhv9tG^ja5r`k{$XW8TlvWYsW6YG!2$I#R@Eo%5%Y#gIGSt_O)cjIhz4hCEXCP~)c( zd5mg3|DB@s9a@;LoCO7=c&)+01ACe$>z8?TjjYUpr&@2_h1_VHQq5)zblXHH$VHKKUf z*gMB*7Ha5!m5(#r(Xv|FcBbD`SRq-!MuBq<>Qmp5RDgxc|MdNOkXJSH?phwBbbZPC z3O7v4@{nf6KuLt+P|0((;+pAlw$;h+&^9v9S2(6U5%+QVwt{#winn}Gy{a0V{tCx* zA&vf1_qJcP_7}J=m8rY!JDz4He=JFBA_nNKcwUe4j-@I++F(nj*7!L!)%%dnJ}u|c zN6WMYVu-hlJhL0}HNwq(7e`%q+o>i2_X5{drafc3yj$zK;@fx6XhSa&lTHGOFSL`@ zPp|zE$73#AZ0dPZWq5d6%odvZxsZ?>=I);Mw>(Aqh}T+1J$~!@@YoX5?=_1fX?L%3 z4b40G_v=j~Q`5?jKU$||CAe{W)0@OP&?k#roIBNgOr}h$X2_t<4BAWoFaIx#81Y{| zulD4#R@e>Zu#VU9tmXf`BkJKbhDb`Ns7iq&$!0#THT4_2BJ4Loz%TWkV z)v3B_CWOSz)R@p(cLy)m^OyVj276~7H@XZ-5iIGP&Ng7q`qXc9pjm?!$nt= z>CEJLyRLo4)u*OBAG)>Jz=~DG-kf~$RnOM@*KB%q90_bzDy@_2kZy>nL5XtD8 zDmA2T?K;=bajN2ZJe2VsoSR7!73U|^+?7p-j$c=W+T=IP?M!9sA;6_Y1Um6t=9839k)00-%} z94^@JBYKK>sYTtKJrlVEliG^s1rnvw6;7^QRope^NXD^85!l_EZ?$s8bl$cP*Ufc& z${lmrc!bXrSbAQFpR68DDQOCK`RIs=L|mH$*CTb|AKjZG&AoM#cfj(b!cnkJXEF5) zcD;ReiDNg@Bee=7!Fq=uecK^yycHPEy?y@{pJS5mzL9yEhfCkJRofbajuI!Aa_uS)*RIDPVFb^p zo7lzdg1yyM>6}C;#5=>K*s+q=U81qh3IA1&k#rTxsDC0>k>~J+B6>^``xQ@P?wI;% z`fVgH`hvi>p=b*~wn^8L5-jIbrS4l7b8}}|sVi6pPY!R(*%8S$^J0fv=eJmeVtK`A za-*qTH~ZuyoM)--C8^}-e2T_CqZ)cH_cj_A{G`ME(bsBsCt0-Ib9rbX7SHj&*N|EU zeN+8_3|4u;VF(-PP>*@9L5SvPkbdd(+%>w|0k2+d@fiW`8ejf_vHOrrVr}O%FEV!- zs&r1hiUX@+)D5dDdFtLJVVnFLx{+FDq=%iqZ`GGdt7y*QipDNguQ5YauBOX9AHn45 zj)rUMrOUls9eIg0wEt%fm#3F5@%n|sb-M`K);BYc7-#L?;2sV>2&ra(Q(S5I`nvjR zO*Exzg~}tw3CTJMu6NOt4)?rLE^j^s_l%;89j<#toF7c;TNhZw7fSu-jYV|4rVM&| zk+bT<)0Exf$fvW0*h!pSmlRu#lS>6`(re90!1VIEOQ_U8%>g?0byE^UH9E>DIZ{I4 z=lh;dfMQ#l&>+;oa`3c_2x z*Z&-3`KdQgg9n8((@5BX2M&XW^&t%K5Q;G=sdfgnyuQ^RsJ?<=e>JnP@ zq}C`NdziB8Jn6nRiGRE?RXknfQt=-T$@Og8yASOw?l_Kr0xzGfd4PYinaV%qx^~v3 z?4FoBz(4)Jm;ZN{dyI1|!FJ%KG%IJv%w56-zP7nKV52!4u#uQVhuNVI>X(PijUA?_ z!g$d%$r6Sxm)!zrLp_^zeYXpqT9*6n`nkcK#j@=zKh;H6czL>b*x_AR*j$PY#T*|< zv|Y-s6$!b#j$6R5HeGg>b@^l@yjs$*@Vv?eofPhtdCz|U?%W|!IE8hgeulMg8b7GU zVvLqtT(8{J;qbtRzsMiCv{w?KUhiQiDSok6SSaS1Q?i|TqI>s~Q6i2YREsBM>{)Yx z(kyok{KDeh?bxdj&oq_^#i^AE0(eo!S&b;EUK2%uMeIVs^B~y-zKPtK_uTib5PT^Q zDZ82gpLx)T)fIHt+ER??>U3Q~@=0I9r409pUrde2%boF_F;TqAy0bhbf#K-ulN?1{ z?TP#Mqz@9rs7V4%0!x>dwYO6fuO&DY6P}qRP2>`u)hC(c_TnGht4sh-=Q0JKy=Udx zl}otJt%+l(+ng!075Gu>Y4yoQL$~Apu&X?RWr{|yVnUf_!t$jYg4w`8{$~6}&g&pU zWoAwa-b$zzZ#x(S2GbDZr{--}R-=s5in7(9*J@XO%F7$26~!COfNDp@v&OTkQ1L^e z{?BWS|G5uJ#!JJHsS0R+BvZ4A(xCoA|0J;~r!P%L#`AsXe9|0sUw7}qLlJK>|WbrdV_+c(p@i;bL@nM@~W8)eLPQzMQJM zl;Tz|D=XtXA~7v5eQ88*qfMmi%{Axju3LDJ-sXZG&WSj@+iJoWDWJQP_%X>$&$jE{ z{p#I5k(Uk63A$-Ao}q#QzjagWQY};8uI5#L0gst7|Hb{V!nnFj41-QeteN>_TR9y4 zTzga)+SN)D-EQwqpz^{rsJ7FW2;94Ll`-Xe0xc77kO~?6y4q{uTi>QN9U^o(G!)ug zKH&xI@_Aviee9C6Mq1LMO#;!iV!CvqwNH$c+b%6X_*KB7POm&GV1AD_TsT2Yt;qEv zCiw;SNM0c_MXE1t#MP-}8|`O(PmvzhEqhS*v~t7) z%4GU+(k(azyhjc5Ha81Z{u%a```feu`g>Qht&2e0C70QzAH6l7n0sr5lM+Tc1-Sot zGI$qZ=*^mcR;RH;{mJGST8rzC;0}V~aDMgNv_6Vy^nmM#m%rcL?n0>Gg=YmC71f_i zKIV^yRp?xE<76Lsj!9mLam8RfFFZHz#;cpifAbv2-!#ceL8~o;PG~#E2VY4XE?+z^ zGP=}9WAWMv7{3C^=ke85;zDS1+Yt1et)N&BCi){>O6Q9n-WF|VCk^ivTY0d2-CR2X zmJPFYxhXY`Rzq(}F6AfOERJ`5qSJj?>olT~B=W-@j{YRgiYHI(7Nbl}i4pgF2@Uxofjb2wwnQYo}Bi=>fZnvIrT&u|2Yoe^IQOUlsDJ<1$B{E|! z+7Dif(_ZY#vuIC_78lj}a8WWjLgtZq>W7?1!iSZ3I^z`wbC-|JwKsd!mhBjIqnAbW z9=q9wd`l3}n${%{>sjQ;SJj=GC5c z6I06_C-I40g_^yE^SOyOcENhZRR0g^-ZHGNU27P{t+;g+w_=4BFJ9c;incffin|tf zcefVT;_h0kNU?*H5VDGc{d(M0Az2BevJU2`-$4s)4k&%%R9f?LpLOc`x z7>6tkI<72^GI@s4FDMVgr$U`%au}I>!*cNg*h3JH%MeSnraa#ED=*#0x^r zZ$w(}_5-1&g)iKk-euUZokQt2Quc~KHdco-i$#0EspbM1Q9TW{7inf}?gt?>`Nn0& ze1}%LT2CwKr&*h9-YNAa>zGQ9*rvvvcJIa9RWp?77=%Twt)n4*$JFym%!|EJ> z7~_sna8tKEm8V->Y0>hG3$EG5>C=RgZ2pTD@cV`fVzpaW%MkMph}TO#BwVFDANC62 zG^>e%5Slaz_BW|BgbVmsb9wfJM*Zzf$&-WlP84c+reQ<3*-Z zVvICabWu^FR559yL*vfY^6J(Cg!KLNyWw|b; z24lH>S>a2AQwyLwUuD+WKXhMf0MWuJK2)U021!jmbpiti`+hqw)#Rl`p)$Cqf=!_$ z(G1Y@=j6n(J>G-8>5bC3jH#j|Ob-{z7|Gd>B(3(S0!S8ocu0vK@yBnWpwFNQr+JNx zjP#kO7fmfT+h(|#KM7G_lDD|0>-2O3>${IuQ#J))6%Bns)Fd5t*)kR`g9?vBR{Oa} zHlIExSJlj!0LbC6H7-5U3mS?G$>dG6!zSwm+o{O1^oNTC8hfH9g~EMHlw6AKNM!57 zKF;J08SJr86ZGrhH$t7ku~09a#VI1d3^iYGwOmOvf5KMCnnL!o%;U|(V|3Wol7vT8 z2^e#ISP6yoE=W@D+*-OxMd)V-86P6bvIFiQ!nr~S) z-rlo6TIQ8HN{Xo?bh>|pn-yjGoAm~uqsT}&4$^?BE|%OjlF8MBvO-06F&FoK?1F7` zzSsE&3*bnJV`@8ZVfI+E1Rzu}Ac-kNobCNktI9$jb`>wD4$dep?o+LQtt?nl7dODN zCn&*EGZWuN$7qR`AcmO2F7?f`;|dt7>jkC}#O;#9kC$!=BUj~YjAJr=Jrn6eEK=y> zRftETkuXjG&|av1T|B_NH-b%2ORj^-yzA*5*ff&GzAc#*!ekz5DmIEm$W2YJtA?zgc#(&_Hae!%$?^N*S^jQkfE9QXsC&Hxg;;&F$e zTH^GHGms}X9^-wJRxAs~DfWVFY~6>o8Xhcx$Px^+PtZdL-|8;iYLpkF^I`jcW&3(^ z8g5g6QSseKDRGKAEzCJjRf#a(FNy)llwP`VrnpD0)%g&+ci6?0!&1hsq;F zju_$Mq4zvNk3Xu15jmS*yrz~sZp3_&5^<8G{c$qkf^pKWyNprXS)Qu9N;nZnNs5}D z@`;bN^$`#{JMNGLySvXpNSGx0eBGU;yLaLNzVV;nuidRJ+?x!362)0~{&~Q1dX z4FAu%FwWq2#_k2ET$BTZu6{I-22!tq@x{PX!gW)88gZut8AP}i;7(JjG9x*uo>KUH zQc+#0_=dtr;v`n%0o6}dx2K%E7K}ts#S(UpQY_L0898w4zb}HHsA>|^gaH%MS6y~J8ln=C8k%^<LTC@_S>8JiX?!37`y_@vZn-K>9(#5j-xjhKH-f?%0rIKLT9j8850KS7| zKB+MgMo7}+(!%`iLt0c6U9I{QVgD#fkEv$I|!Zp6uAe7<0E&9MdcBAJEW7 z7m7g%B@Rt~rNoZRM81&B>}}t!+!wh+lVc6@o5u#$khxQ#^IYA4T#^A~?$Yzpxk4)p zm(s~pf&+Du94m)X-CUAfk}PY&O;t%`!8xW%Nfqt9q6Yq1P2O3;Q4PWa^_ve}N>8sZ zHz(&VvVTDd`j+RXR^8SD?7W%3Ee2+Zf={c7j!2In$4S7!ELithSq+Ol$?W>}8 z-!3w7b&%xM_33;r!>`;*K&0;i?KyCKBLH>4l=N&G&nTorXD%x{CM`U{3&PZmmpF*C zHi3#ADEEQt+OxL2s_TY0vc5PmjTLhwPPcjPsHZEL@g@Bqywvoao(^%`TlP0Dr#lTp z2R9!qCg*&-?|hr@e7oLO&-r);9n4qj%*#qdNfMeBM5ygxFa<9Ysy{MR-C!(yVXvz2 zq6YXM16(eV345otBN!)qdL-FeE+q-4AuELH^67}EkR`^V$1eeg^?(Q?=5OGw0w-TYqTHH_~kKTAoOA& zo>UXObV?S>n0UI)H}KhoH#Id&e_(b)zkQ>LT^jXrju*wiy2iLReIc|MN7`{N7Hpa(Mp6 zLC-+x>GuETp=;&v;`xajV87t4uWHz^cuDb0?*XAc^>D}2h#B>854Q+)!1frZySK-< zc~f8TRsuGF4$RKdySMcpey}QN1st1lA|IR6&_8kPR<7VHWW6owX^JzwdaK0fK8 z7fbY}@WA8SbGzli4uzG8bIZ(Metu#h8J2xR>sRLo8_Z)hk3x9U_UIZv^E1iVd(*&I}9aj-37p>#oA?Kw(&lW z)`t|pIuHK;z#ItJs0G9gOvUM0JN#!%dXer;F-+F(y34w=_ek!K-p8dU&uVR^153=d zwfbp0ELjI@BN)Do4G;Ncwbpwsr1wqG>|idZ!}EMFrB0#JhSjEWFx$o2W!}JY-oWKA zy1;(c+)xU8Renop)P}_~lA>caP#Fv(&c+;&G2OW)t^1U9XKR6Aw)~rAKrAl*puZh4 zfP|&B?xOBoA0R1M8=EL#nO~Y~gn8&i>ZSlM-4z|H`*PD=)UnnDn-y}+D8f8-g6kW# zMk8GcTW4%|z>0H69S%E3!Igt42i7i)8ef1oH|9p=-8WrcH#Qi!Y}#=30n`QSezVfe z1j>K$sIlt_Q2G&;00k|JGAxU={s+pVFhqd7mD;xUuCgYxT054&MV29NwU59t~%4k<72dYX=ovOY~E=_w)bM@09qs^F_UawQ!5l?&166&|54 z+8!zGIk3qDt@f2FMZa%>5beygP}n*}{2oR8mh>l2=}%sGraHuu{lI^`1F=-t*^lV> z=IHqKCj!*HuPS8r2-N842z?ES{xFWfKs6Mh>_tPog`>hb#$cwzlN2AyCltd6I-9@) zU|+DhN^A3RZV+q(9^53mylQ{*%8)T>0Tpjp$mib3E!fD7|7pEfZFpw%S!%X2WVYfj zYk*X(kyNejZG>CL(%DjS&B8}3J)Lqk0P4dkwK1>gv(oA_jxNB>K!E5|~<8j}*{S$+GhX*wN+42GK zUs%CV`>*E71fVDdX95~zLt(R^0`l;mp^@=3;nL&Cq-~qle4t)$?07nkJTg~LUv`kH zHY}Dp03{RhF9;~3`vR&A0g9*YZBSwsB%Og_B%nYz4^Z~a1KNV()(G0x1PM7{`vP-5 zjli0~^{?L_UgeIjtXv$cWx{h(3DQ<$yRCx9PQCv5H?{z`Y0C>-^8!5oH8X&c?(tq( zS(&X-lqR5stux^S9E?})^^qWoZREfH2ZPU*IkV0IVU*Jf<215f;@Y|Ja3;A1Iklv6jY0shwE7c}Q_BrX#MDdhU8TO;P)hR`zVWy!e_{(xma859a037IXd!MAIM+Okjl^a=6Ev?|z zHxkd4Xq6lO36{&t8(C4?SOKp0;8UpAf$m&A##5#m0uIDp?)4}WnCL+WmwS&i<~M8o zMtBMjkJQb*0!D%VpPELPAO|u9SQB;t-RFh03FXv~#*)aT4NO3QhwC?gi9#xc5z&&l zkDx&yU}FV95Cn5MEUAWjdVsZ%SpvH61ALBx#gzw$GGwTif63gR-~Y)Icyu>DZ_9w9 z(*=rD^B$;g_!B5(QlJib&LpRnY?V~_Dgp_?x8IK-3-ZdK4Y*(u<0%ik*XnmC@|J$! zB=3QOuMuHUlBz_Spojuy8ajc9g%tfDIzU-gJ7-~#eRC+5^klQi7Eqdpnb%|vLytSE zUuM3!Xdj1qWR@&NSB=X@m+E1%{RQ2N%EI?Nz{9wdobfB1fnf+T2I1R`_#eevJ}n!> zNd$`$%?>W~xL(4B;v?^bCva2bE}@*dA-yT8w{=dD9T{+MHtgY~DumI{$$d%bvJo&~ zJv}|mhDsO&^lrY{Sla-rY;%B_M>FSZoVRXVI&y6@r~)fgTHXuqhKxEuj00Gv%vq(i z=>nqtFe5pmw~>@azY-?f3t{p61HmeM1-f(?#^ph5p~rA^h*#fb!ot8dpQDV+b&p`h z1F-K7_uMVC6DUs+pm;D~zlMXeeU2I=AvFb%c3BGSU!n9rLwPPo(wj+!>YN1J zw3s|X6s!riRvCQuFO;%J)80S=qY5GU1FNX4$ths<7Aq4z{!oXdrh0|4^PK79%oqx6 zHy%@SvtbS~qf9pn15x9iNEvCK$7$@^shldQ+9_qvXH`^qOurFg0)JCW0TCj4`lR{=YsS z*D`+}KbNDzIGtAyY(3F~n7m8&fP zo%y9VNllTuNez{On5;mD*kx|T1?b1O7O^$v@QjwL%eh#&XYs%LN!ynQ9vL~H+sb+F zwhfa4U|Bx$lhg12Wa)btWC-_I@G8O4t>b7Ca3BP_NNku7p^zt*q3Lv6r*vCxLve7x zVMZc|V~L3Zn}Efi;OL&4K)t?VvcUns3EftK@S0pHwvfw(wfZP~ zdu=r-&w$oj&jI#HDjJy#;X%Zr@ruwSCl%^;SiSi-^9H>*mh6>Bm5gU*nqN4L^WOTx z52@`ZAWYO`RbSC#U@;Bu+WIGgugL2|m0R4mbvHb(;)24%66k_xsX^UApa2F(0(ieD zT3nDqIIba`Odvds#1j-MTB?2|Q;=Ue2YXomQFvZI9xbj!lqhJB22(;5KS-8=W$!m% zP*@D#@Ma7j4GmrHhe@*Q_Um>>2??k8erY;sG9_s|f_O3qJ~9a<35WhI2RuH!A+jw8 zGDisqxDR<*M5?cb%fiBdC;a!cVR$f+Djpsl;5c>N_4zjEgX4#Q5BeW?hjaS!`FYx; zZC6Tb76e>FrWTvxHXO;aln7!kJa_LTQ&=s3zd!pRQ(RqYa$amfknoack;kU_eWuOl z`sJnfnVFgKbvAttJhNOGmRyR8v{FSO;YIPEX4I_ci$1-Z{W`12jRinc+}yNM86gFh zC6?S=8T1(>T+@~mA8$&2=Tm-*ztbU={>qgokr7^!5uQ(;Xlf}gv+MnQV4=tGmD`4Q z=i3*FKd&iYq^{fu-=0(E0au_$QxeBUc#CiJZG?h^H_sZiGwcofLO908M%l(jSvoG> zJ8yP<$?f9Z@XjK&Y1~n;koqD&q!t$<>`>%Q%6eD(55 z=xkf?w*M?UQ=U|wfUAo zb<42(iLn4zdVqqc{s{j?A6wA~)|Ze_UVsWroV*k~J>LwAp`igX_HWiBmRevp)fv)F zP*}gOL*X4>!_D2VcS2{Bl+y%fahq4#w;RoO>~C8VV&kp6ldkw2x5uKz6}h=)0WNse z3U)HNVn8Le@}0}SmA$P~S5%bwIs@F+19$?4R$P&5MrJnp9##R|r#XuBTO79(@)PM5 z(g~=xM^m3`3_sy89ZBNA)=zib!t_r(l~jy+yX#wBk=sR=AboHL`oQv=;D+HxZm%g2 zE|Ehf9eBmR>QeblguoV#=KqT)AW21qk=sa4Bmh^CGAxeQo(F`X1-J=Fv&85sgy`D$ zqC66993DKJK%_oE8!->ZKeVZ(d#A$m?zc-o@?(c(WI(ay<`JCp)-0EihJdw}G{4D5_J0?4Z6hFjnSXupQ)A&$q%MSThq76GZVH8>wV5M@~X(r!EILgalywc zgs5HE*)x#{>!px2U$^Jxp$u)cSA&6Ra}GSB8E?D^W;hoM1)Xo))>F4a03Cm_VwyM( zc}YL}3;&{F@=N6k$7-237f4@!nkg8GhZiGk^dBMdcC=fP`8PkmES|kywi9kiAGs8` za5Xv$x8Hw{^mPY&PifpJmCV78f;H-yx9rH0tjC&VsF*!}g5{Rt21>8G2qH6zgMUb0 z!~}IkQ50uXs-pe2{x`l}f$&0uG@_8>r{AO}Th;D%yjUkJV%lv6=SE4LJzeJ6j@uy3 zKeN+z>NF$YOAX>}60$FR40yB~;{Vu7oCMloqhj?98A}`8ijk2N7}%X5&P!fh@g0nG z+P*n9{TTysbbRTxxZp);{}^1>Pkb7f`hs9%YQ)W>_ZGZrw0$5pCIFt0OD@}Nc&0hz zS@LY8lA%r%Avb~JbZ>k0il$Jk6~#VtgKVE9kL}Lm`c;QYx6&%a11u$?Kt+5x?XgEFFW-&n zRgM7)u>2_D>7{y`{5EHb8!5?h@q(5sGsV`yh0NsX9&JT6-cI!uLVZyx=e4ydOF5%H zv&sxHp-J8)OY8bAwyYJCPeP1y-nx}sOjp|uy+|!P-*ICK;C;VOFBa059-riBC=>Ah z5k1>YA+io#ZHg?*=cq!AiiqJJNz>Y(l6cL4uv)b*RE&`*?D&g}U{y&;Ji|z$u>J@R zUAd?*<}wx&)}%%q`KJ=v9M6c%^3-VP!E$VHg`hDej9RtsG8QHo&3FO~#8+_yiP7^c z5YoCVi^Rxz4hxdh%puAsw8^fM{)W}6qt(fTJ=n4-D78acY!3;Q}VuDiR(@yd^}>A8oDU)t}eTNqTL(uWuzJ} zWQ`Mj`}b$UKgdMZTD%tCPgC4*R-!~%dzA&qzwBt^qVejvoJyr9-kf8N!E&8*-0G0R z#~oAXL!qe4dYse649pnnyUxFSe$rImvi#zZh+UQSNu0R|a4|&e?g*83l+8JXa8^_G zTjJuyo8e!0H-G5TBqJxVpwr?WdhmK>gQD02d+C*h{Ds}1Z+#clD<)=9>l76^!ZS!p z>7QjP^1nZ&v$5$ZdWN?5Zgl@s`pJNz}Ysr+9K?0@JXV`UMWf?m5bi zIo7VTQg8?SS87XSDAd=c_BG2v^vbFEu*le>GMkExVQl+hhtx$RvV$$NllRTw`KhyC z@z=i!m{gx?%1XqC*$sQ*AWVI4chw*in0Hc=uMFgQ9a%S??iRP)QbS!AxtM64v7#Qw zw0Jti5SUPMK`tPyp4gE@EX1|vHHl`!qmDLq_(%bTL`I~}elmmar_!6W)A2LhaJPlF zD0c0^d>yC9k|PW{_Odv==;iG`Qfp7lhGzEWH)v0;fbHq`B;Xaa_h6FsAw8izYL z?9Or^jqEvN3z^_+k91m&C!A4YY~7|KwzU3r-zJ#Y=k-v%WI8b5{3dp~MX$6?8Wek- zak33@81-+vn-q*3m*Mx|)_)NxotnlA^{y-H>t@>632*uQ-i^?Z)l~JTGbR;84SO%Q znK*_+3hitDQ50?6saRT{Y3=3Yemj?=G<&F2?SO4BQ)6D{n<>g-nS+Hv`|36Xx&?uPw;domI7#1?hW90Z*T|%HXyP1vLidP!_Zjj%>-Enfz>lO z1V|h(x7T(#gMZh4nNZzFsYtzqo2b8ESzA)8 zozpGgh9#mL=2#BJ-PFC16rf~J{LCjn4hj`L4e+`Riwmoj^rtfw23PmR-wrKHFWweK zj9?naeWY+SQsvBKo#3*2jYWj5qL3P*{cAp=aJ%AM+zcf4-^^>Xzk+X14SmsyTWVU>pE23+!Iy;BEYso1XHUn(V3G)AJ^oIxwk#1O zdEdv${9UgDcX=sq*p+^%&B%nH1Qz z=N>DmfANG?o_Dkqzp!~MuIMx$+16Q+-R=^+frac)#u;Ed5{|C@C``Qjxs@%|$9Tog z7X~wd(t-4fq?2IOu9FNy|$~WoU6Zp~0^!WV` z^nbp$29xUt|?tHo0#~=L&_| zkXX+YW79-<1Db8O{LT>Y*d2^^7}4zvfxG$y~TIjKubY|5LZ={|mqiTQr$@lGEw7_sXA0at$|tbsPU&Frnls~DLv!4@pLxKmpeUESRHD>1$r_W6+->J2{cI< zP7Fa{8~lDNOQNC-J8dR8R9(xHk7*7Fc9A^q7tQ*jRR=aHKD)VZ=2!5CQ_%G4s3jLj z9!F;E`{Ql4zB?oz%OWR_mH8Vv3U9VJQ`wK7>!#w=a7A_l$}Yon+8;~M(aAQMD+p~+ zsfcoj(2XRH=jA7$?Jy>}^Ro2EnU80%(eA_Ve-hRRWcKINlyn%>k)@ao5|AZW!ZkZa z_4ZKk(A0Eon#qVCWJ4;fDa>QU6VdhQLKYG|GEX3AmZH*^ z`SH^K`iHkqj75(LSc%t09>u5kRAzc4C!NU6H3Db4#6R-~m#IJoj~kB{f|u7{q$Q&e zlx0vafZKo*AGfH;_T)gQ5$ub8_j#ER3N6G7U4ga>g1p7L1@+K+EGC?ydQ0XOvcX=K zUCegS2}Oq{!lXi~oLQBQ4U`Kz^QclZMlrO@F!THrg-gT%oSajlDAx|WbHW?Wximf= zPo(qRziRyV(}f>`>Xb5uo;^9k{sF>wMj^uA(GmF5gy(Q^3)u;ebNkL`PCwlSKRtgG z%&>=feO>Ok`Kh2U5Y;3x@GC>L7#$5uyrJw<@gdS%;*-GwXnS!1 z+xKV=?~fSrI}}XZjXpD-Hm8GrY`CboVI*+mh|n?h`6j{6JB!DB!!P)hJ=XZD-(-3% zXP-DdCj7oJap4GFJm`eDi9=J(kL`R|CdAhm%r=v&vJ1B(5#rhtpN&m*dDV}#Ev`81 z>=1RnizX>(XiB(T)nhHpH{UTGwWwd5H0|@w=HwQx4>e4$sHjtld(L8tu)>PqQ10llEQS zvbOa|RCvT3tn_c!o?WV!WbM1LD#$Epaa`E*+j+iFXD{N`9E^uDm^n=BFrROhRym%W4nR15p1O^{ed$RG0#2lt1xX>oqvO&d6ROe-n4lmT zO8CX$g3t!pvrL~6`o+u8fsT-)*&{@0;-o~W!q@ivRb@dcvdnQt5(ys~CE9W#g~i$3I%T_(w6`}fasF@Suf|ybIPugESh?bXgJZ-3 z0GMe3XP?q#<(LA^`cGgX%4rzR12)ZmZ(aP^Vzap?IAxKyKumync()F?hXG+80TmrQ zd(54t!NirBL*|I}c85nzDqTo5ZOPN;^P4kKb@$s38^NKV^J@t0pNRN?^M}LWXUKg&U&I$I{zNF|{#*#XmI_ z*w54M7cWvkUQ!}KJ@JM28*TWbr)HMoJ2~fyaaI+=V9W4 zb82EPu_c?*gDc(+n?I!?Kf?+|A4VLd=m|X5Li(=kHrllKF?}cA)O0bMWz=r=yvAg<#+V_oWg`{*NyE@Ys*_sPo<$)lc>Pz_ z1dBx&P<`9Y*mPV|+*#_O?wmS~TO(^NSqg=G+=-mP4Jq^r-DaIW?e3R2E*&n~r|J3U z$#}w(YbM~0S#dMIX`mHkoRR{HbN_Xl;LNQ3E4G1juuW0#nrK`$`NtAmag2iomU^I zC*+<`A~LM+Ylp}~BC169(WpO(EO^nODX-$%?UNA_JHOxEJ^B6@*DS6Lp~fseO-AcQ z#aeU))pfq>tX-TFJa9j1vao^jS<~ye*X}cw?C=VzO7YgYXueSuisABhvE~135L-}I zD8940W=HV66e={BZjJd&*JzV)K;W`(MDcU9>@vZi=k<)`)UX>rmmBW`Ax(jS?E4mBkz9HrTY>T0MaE_tBwuLP(&_4&;C$zc%r?tnfdnNtuO?c{Yyu^RHPrNEJOa&3f$z{K;smJq~v(hZwdgBw3z7&GAM+-+O#&F;#QqEKdqM1E{_p>1lkVl6( zW9ebM?h`3af|ezFVN7E$rO2K{?XDcS8TduA<=KKcB%cx~l^kDou3mPRD#&?SN^oWi z$gAh~HO?OErD*BNFW9>&zOd(H?da)k9{4dU2N9Zky$FU#LY`%8v{iE&$hRnXAA}WG zZNGL~ndDw__eYbZRYHrBkP=0gQArU^z@!R@d_t(D5*&<%iSStpqs(6}KwZ ziOaRLx8o)|-rnF7s4tYPqwg5nyB0V22sxm~aGOx?{WBO)qs>D62uYF%1iT);X_3A# zHa4RD>4hB7TlQ?9PEVP{VY5o`z^2`@xLT{pz$MfG7&-pEg|dOk`hGllze!Z@5ZExG zyQGJq_pRoJ9j{g>>@0SQPsn3rLUuxy`~=zpeQ1dOY4-u`($^MXl=<&X70m5XHt+z= zR^WT!3z*xqi=7-ec>|>o^tQ8zd6&I)>3Sj7Anw;~E@y=~N?t(#-=-qHhqa&1;Y;QT z^uO9hZk4Kh`y_tli0>E2tlskVgiJDM_XI{6v3w6!C63UQV?5c3q7DdCIB+#Q`h)4> zx802a<$K|U-yVNx+meJ7(LevN*J@=Q9-*r-L_k!kPNtw$sNle^o6O!nVD&$o+}Qf( z|F;m27enZq(<C2@Bzs4`3evP5g&)l5M zj#2egL99Gn9k*=bZwCiVH1=2tyEZe9k&6_>2{(p{)0qkfP+yBV;dy=aCCUeTSr zDmJ~m`B&P4z{!YAf5+JOA2F^zor1;ap6O1F;Q_-j0*2#nN_IV&TYa}2FMO*H*dx%R z_Ing>b8_fc(Zq73vGEuR0J{HtRXnCOEqoAjI%%v-a0SrZXN~pbdDukfDR?rzoiJDk z7P1!zc_BQRR{6;b$aPMC4#U}D&TsIjd#Z%R+m=1Z?ka{@&PO2Ei$JdLC}$1;LN0B# zpMFp5|D6qx$HNYPH|pS0NbnBVIIj2;*`K+lzPK6iRTH*zfu^=6M$QT_RCiUUT*2au zZJ&5WfgzT_YacF@v@N>!`A+zuyn*bv=g!o6-98keFQlS3u?J0k7$D>sKuF)AAJ;%> zuQ;rF9LjFM@(pdyzP!DGoaZ9tFkBtx{NeQ{vq9Pir+_1qVX4E4(Rb(!mU_pZsVn`1>U9{( zNYu*zR*YT_t6talOz8wI|1W5oJfPV`4w+nJh+Gz6c%}D1c8>$LPd~&6f5J#a2#_fL zog&hKA3VI9V2pk@=@HBjfLjc!5r_9R zVh>g$e1IBp_fR7)zx`Z;l_XSX$Njr;+$Yg78f7y+6}JsaJAgMl=gGHk6C6B4P0ufn z9s-`63jNMm#iCYr_`5n@0wh{pcFXlO&3R#en02@RK=#|5(|^$j#zxoom51UMpwaFB zI~u`qH0rH>0_3RWAxF3WCpq%9GW^7}50FzBMy1ccg+J@bT!UjyA%}?r$K;8*9dG}v z7^@aL06p*def_?cZ^HOJyBR9%`#`4KKgo0{wDZ443dp#Z+nr2TmkeFY51ix!X`dWd z_(yHKc{MZ#hz@~&i7ltgKRM*sYm7+{H&`%+?1A=MACzJB@@U8ddMvwfi9Ise`DZ0+ zf&R@QuuAm6Ay62Hv^;Rg&A(FbO*6(V4g;hytl)o%AHfP<7pTE&u2;n~%RpV5rEE6V_J-pgU}^S|WqGO$3o zxt#Nd-b0+l06qT_?p`qA9``Tdz5`sFOP)9nevlt~=jrG9yK01Iu+(9K7)Tuu#4wSR z+txH7oU?U#v-Tj{fmVP^2q>dCrw5tzEA-$`nRI3MZx8@Qjza&ZTjzelu2A zuZ&cY0KeP#X_l=a0h~3xC*);MgS-etfI*ilypTilIG&A3n==>_-ONIxijd7nK)kWW z?nzxEocy=*{^Y*-6%5l~oK(L{zDJ-Z_)k;WLtTFf+N`Gz5ufimP#i5Dans6j%n6OK zB{I`4Nko>&J%AAYgjyit^3)z8FF zqD9u$O-u0)#G*nnq>`eE4`4C&6Qg5gM+&N8b2;Ffl>bKhN%>7JIJ_|wRecUV$WsPB zt#{vv*^pZ0Fiw#K*d@?g5W$1DeeK@Swm$!+`TQ4>*Ykw3sm97|4LPlNo9bZ+B3T-< zLYi`X?&A4|Ro*g5UY<#A@F)&hsm9GAhx8lQUmsW^*c}fG<%z)tYcI98RW;lfzUqNI z_x$VTqm-`0oSK$q6Rd?;#wKn++=r*`r*BMn3uR+Kpw-R^zL~0&tAhzIH2agfGLG%x ztq!X!2m`4bI+nFk6kjU>MdTBf5cEOZU4 z*hu*Kd3oIe6GFAww5wGLkoU{*YOjtuTURHjdIS8=>GBdl+P;Pgl6c%`4)h@Yv&(=R z-2~a^&X{p1q~`|&yPmc^Cz>zfD$g0Y})UJ6CpMqQX3Mjyc zWa>the${Qz$0dw{(%yuZKg&CYa!J_^He>4N3j`VJ#|f4c)s&f9F$MfyX(b{(l~FjS z;}YS<2+P5x_}Xc8S7G9W8q?fYA?(y)w)PC$I(0`MGEqCxkfNWSrWw}PKHp-r{0z{$ zVGzObfqFo4+?AjeZx)n02Qa?dZVFJWaxIYuhQH$=Kel*ble+~6caX>BG1iklBFmN| zVXnK9oEpe6uU+2ItRT-8id2&Gv*NN`Yi>qxV`D(ti>cSE(Zc}Wa|}s8zhT-+LJqGj znmxEDz2&Jxcm@;8?jwZ;WLsy+P)x-jrAMtb6A+^`P_W!XaG%`p~E zt2hEV6POe3$3@4sjvg7=)u4hejT4{~KpBBcFej5cThMj-#~i~mr6uA;9Xoy;snfEK zWBsIOUgD3P9&0XsROxJV3q`eydL7HzRQ@EYLZ|RRVOht1hu>O&`&cwqMVyn9eW2fG zbOD~qba;>!G$^X6_5@v|MnEJ8Z#J}UBBjNc+=Tvo~7h@~d z9d;9!EtBth0%Gf3QlnZAp0j2*_Sp#M04rbz)#SjCrm^8q6|hnD3YOm4-Za3i(w6l- z>%6YZT(-{=uyU5uVI%=;$?zpefQ+@A{&NuX0JC+&J$HWY3|zfo><5SCm-pcM+!bOA zxFJA95Foa$5JNB!0ud9PF5z-vBnMyi<&F#gP}ydPvMJXM6<(rXJT=vdM?9Gs+ez`_ z%u#i7R3pRKb)9ls(fG?9CD(~4@Hq#Yhr+e8KNl|TYhO%x0f_`Tk9kvKh3;E-59Vl) znipivr;yZUo{|i_rsIK{B$z{(7I6N}{k7LHdR;xsm%RLsAc3#y)KR%bmW9D$2&5sn zaThZgj;G?N&3C6=zT=i)BoL>})7y!B-9As4ksVy+lW%SyFT>wEl)uXA0bDH^pO zt+w#>4W${=#7yr^x^=p3YmVbgGd3LM#y=v6&RVl@Q|jMwb624f!$A$e5Jjvq{4O4< zaynnsi;AWgBz)L}na*_6-Q8#ClC=|>_=>4FS5=F3pCWpRP^n4peG^1+uUN;|FYY?W zVJ50}dP#p|bA*;JV@_R;i^J$>F~4&pbi8}y((|_pgaI>P7%%YA4`oIN`PXfQ?#wNT zGnnQPQO5EL7boTpSKPeAWRQdO54zsix#W8Dq-OhSpDLJ*Np^I;JcGodvj>(-ClL~& zu^N6qe3v>~L!djLX%jM;-*VcXr6ei!MB%osooi>AAe=632h4E=-rN+5ccEXpWGVil z$Qt5v>cUy` z>lmE8Aj~J3Q-@_E8^ivX_4AQ5F|<3jWm&zk1> z7I%2QWIfUvwRBlVnGY7uEC@A>MZt|is%;%+{32FVm!7gdo@GUUE!2K|HTCw*nmy;^ zMZ?I>LkI>WYfh2h@%&WJ=38Txm#0TIVWYY5dg~Wy=45P**?s**!f~_dqpjs8kKNA# zBNNk~lZhE!7u}t)vmy3l?0Qy8H{XG4;e>c|^uCyc>)Tb?LP(0eMmvnfkB4tXx$d{y15e^J!At%*Po0cJ? z%W5$_AwuZYvG~ywh-)li*pG+8CIM^!mtv0+#S5cR6aVl!=h!zl9lQcr14e%A>@f$O zA4H@&J#sycFhRmofc9xa^MM_pzGl&?65OY3s zjW)YNVmh>$%}@3PD1n-AZIWtLOuoU|T|_@#T1B0CtF~XipQCS|QV3d={`2ze*Z8lS zmejQbgG@$yrww%-<0Y|B=7{5i{IkU{hB!YbewDsZ97^RWM*@pi6jvRG{N^rSc}Pd7 z9ocF&k>jx6FUFOoB4XC+#!$P=>ka8Ugujm1^RhElgc1+R1hGGVGNAB=n+G*OLVYd{K5Y#(icXCz*M^&u`3d5BfLVCX9U>GrF(3ul(oL91zt!o^PtQC zq|g|DGG>T~m+_h1Uo0Y04waqLmMSGr%{bWbqF~o+C2?qo+Y`cl%niw0%dC6ywtXFI zZS4Cq6e=3yA2ly}&FTnMQC=j+3gM>NpL}cH+`MbS$3PhioK?WX*hC({{y`@C9)n53 zON4li22=j#8=)!$0eb`IFgv^E872C1-&xY}&Yj-;MY1rZHpOH|lZL|kv}zP3rwmJL+>x z`HNTw%j}$%IfAU?(b0Z0@nm6j4Z@{Twfybt93v?}{jEA?dq5l}$I6^4S7qSzZ5;wL zx6(Nk5Kz?O(nc^nZd&?&&Oqv_GLx>qEF429zI>4nZAs7Y_E8|m!REAQOAsNGct3?E z#eu_L&PBq@VgG)&pklvnFvF{h{7c8_DAZvvS+rJdH! zBi|~Us$(h6wJ2~@Ax6;$eo-JEs)f_GRpG{WVsm{sbB76ZV2{Da5*Eg>;yt?#Q9Z?O zlgbkw2Yfw{Aii46iEeVFV$<^hGd zmp6q1KQG=uECv={Bn9CV>FV^U`eV7$Ns83khL0(mkCB=e75A$spfQ|we0~1PFT>^K z)YYGj;aIfI)6~>tebT~~b(H$rk`y@gSq8V8hQv)tNdL&Onsase8K>@o>h>h;$M%BcKSs5j=bjDViFPghUu3o(lf`O9x*< zN&-Ht1f7OP3a(!RDISkTng_inweq~B)4goRPF-&^D#0%=iF_tt(d31mo^Uguv$3(- z+`tb=$reEG{qN%l`1}Pzg_Fg~N zx7PeQYp=cUpR?QAcb#*dCwut%<;-iLyIy4O9XBeIKX)SjUz5zrdV8-nxa#{<_ODeX z8HLW%%tJKYg(%en#@|gfBT-S`bUkgTQbgkajtEGPoRP(SRVw5o0S@yYR=;@DFN17a z-uXmqt$$T!Sn%K!xg^DYu9;&|l&OVtLa*Cjy=meQSZ32%cB27X@=c+renCJd~xbV z{;%Y}dZD-256=55!+-Rc&zFtwx2rw><#61e)BV#Q?oHe896M};k+zI6KW!rqntA!xAU~Q zG7MYMviSDgV3++q+yAb;9Mu;`B@4}mZjaklZUv@0&fnQQ~fDx~-b2XB;nOt)^TU|;;y*@wr&Gw& zG4onOx>K<3L5%?G1Jp4G0a0vQ;y!yDokMKFn_=0*P zJUeW5|5N{Mp4Fnq%njEX5IUl5ok_dv*3Fj{d+}DaBz{|rV(@o7lk9=|8B#b4E{EaAQkvc>b7b@ z%C4#e!GaJC#Et$i@RjSIAZtcNI*@iKqN!iQYqe9RTj+b^jovF>jql-bmZPVC|HVgE zmi+Eg@FZ`oW`N^UDQmtqoJ|#w*wN%gph!SHyc~c&k4cAQeQgyDG$D+QJQ5! z!=Ax|ZIxOLe12PXo%Lqb+-Dq9SD_MrPEwOa^c-^4RRkurK18M5!I|$q8#lY&qG42i z-}tASyfnvnp9-&-zbm7r{&Dnaj>^~TUp@cl+nI)7N#@ZJ(F?5Ui7HpUG|O1Bv5Qzd zBCz0VMKWVLL&}49pi|E0W&2M?QHwHP=<|YG9Q-yElq^hNB&P+(Wj&7T(=8P}X)nf6 z+nK9y_$?p0wN}F!{Q7l!G(p|TJsUvkrPxkq$VGw+h_@V?+#*u{@=%ol1hhGq^R&HP(ZC15pcgwl z^5AfGiG{hW_oqkUf83JG7oX-Wgl}wpP#M=+{wmCJHakAHFE_d?Kp{Vqt*5Lh4^!`Z zfj_uPqk6=?Mi%5{HpQ}j9hYnW*~})s@5#ML37gsD+qyY?-&f#8VBP%NmgfUWs}{b* zch0}&ocT-EbdevD4S3IMXH;7C*RHrZ2r1!fz5S!`dJ z)UO>-lK;3Aim2b6kxHG2qPACQX;a?_ERqP0$F+@T`Hm<1v~R5q^m(mHGPqDZ$p8Cc z^5*$-{fvgJ&DFDR_UeNHe%#5X&)8Y@#Qgfhn6O_IprzKH%4$vWYp&lk~rM}pmMUif8l4A}r zG2UtTzlc^)Bv`FqB0;g4g3N9qcICe4Ghrivj8O2HtPG02*nu-pB*B-)qu+&BW+an@ zV)p~g4k1?k69mr?yhdZ=r5YQ;RJ*O(fmh%f(d97BsLIVUt{1@D4dhnS&t8t(aLN7=s|)XQ~)XmJCZ{ z4x>aW6lLwM1sA;@8l0d28;YQ1_cAFFN4TjkMQs{Id3K-~KBj4!SE%_s*BuxJM%2C|Lam$TpaROg7vLDn@Ci#Vqy0v`Z`ph*Nh!Qs~ao_v#5UCAgYkc!FrD zLnD$o|78gHa;d9}lBKbm>z+g+dUcM0#ST!ypqSH0bASZDCV9bFuFAH#KiA+2RgCJ0 zo?AKpQX#?bKxpaFAsK zHzT{mB$8n#V2+wLMP+_Y6`zV`aIilJc7Wr?;Hz$3Y<;es<=5Tq8S8l@I8{TL@0&fO}i}74?>)=19TSM1m|5ya3f(7p7*6yQ=W=$ zOBT+QfH{O2pqN?Ant|Uqi%J2AKT1&69ih3}foL->)OKk(wM-}Ism(Q^tM}=HxUcOS zLjCG3<{$xI$^d8a$h}MGJQd3Cb~{8UXZFl@(4`Ph)>ysIpQx2aaOS-CJYI1F{{lzNx$@&6y|v` z62qwOL>FxpUD{^ogp{eGKZ%52NF&T}OM7|6rElC4y16OS2e`h@{%aT-I8(}BcrRxY z6_>nuV3I3MNaxW*Kxzgxebj)?b;B3}g@Pgy{w(AzQC917k(bYdZq9~SL#hrc4N91& l6|Zv9FXKwtgoSrHNKs9oImb+KMl1ikk$93IV!i(a_kTV6;e!AG literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/48amd64-4d2n6c-sparse.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/48amd64-4d2n6c-sparse.output new file mode 100644 index 0000000000..91d83101af --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/48amd64-4d2n6c-sparse.output @@ -0,0 +1,283 @@ +Machine (P#0 total=100661148KB DMIProductName=DRACHMA DMIProductVersion="Rev 2" DMIProductSerial=0123456789 DMIProductUUID=008844D0-2214-DF11-B89F-F50F715B14E8 DMIBoardVendor=AMD DMIBoardName=DRACHMA DMIBoardVersion="Rev 2" DMIBoardSerial=0123456789 DMIBoardAssetTag= DMIChassisVendor=AMD DMIChassisType=23 DMIChassisVersion= DMIChassisSerial= DMIChassisAssetTag= DMIBIOSVendor="Phoenix Technologies Ltd." DMIBIOSVersion=PDPAX1-6 DMIBIOSDate=12/15/2009 DMISysVendor=AMD Backend=Linux) + Package L#0 (P#0 total=25163676KB CPUModel="AMD Engineering Sample") + L3Cache L#0 (total=8386460KB size=5118KB linesize=64 ways=48) + NUMANode L#0 (P#0 local=8386460KB total=8386460KB) + L2Cache L#0 (size=512KB linesize=64 ways=16) + L1dCache L#0 (size=64KB linesize=64 ways=2) + L1iCache L#0 (size=64KB linesize=64 ways=2) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=512KB linesize=64 ways=16) + L1dCache L#1 (size=64KB linesize=64 ways=2) + L1iCache L#1 (size=64KB linesize=64 ways=2) + Core L#1 (P#1) + PU L#1 (P#1) + L2Cache L#2 (size=512KB linesize=64 ways=16) + L1dCache L#2 (size=64KB linesize=64 ways=2) + L1iCache L#2 (size=64KB linesize=64 ways=2) + Core L#2 (P#2) + PU L#2 (P#2) + L2Cache L#3 (size=512KB linesize=64 ways=16) + L1dCache L#3 (size=64KB linesize=64 ways=2) + L1iCache L#3 (size=64KB linesize=64 ways=2) + Core L#3 (P#3) + PU L#3 (P#3) + L2Cache L#4 (size=512KB linesize=64 ways=16) + L1dCache L#4 (size=64KB linesize=64 ways=2) + L1iCache L#4 (size=64KB linesize=64 ways=2) + Core L#4 (P#4) + PU L#4 (P#4) + L2Cache L#5 (size=512KB linesize=64 ways=16) + L1dCache L#5 (size=64KB linesize=64 ways=2) + L1iCache L#5 (size=64KB linesize=64 ways=2) + Core L#5 (P#5) + PU L#5 (P#5) + L3Cache L#1 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#1 (P#1 local=16777216KB total=16777216KB) + L2Cache L#6 (size=512KB linesize=64 ways=16) + L1dCache L#6 (size=64KB linesize=64 ways=2) + L1iCache L#6 (size=64KB linesize=64 ways=2) + Core L#6 (P#0) + PU L#6 (P#6) + L2Cache L#7 (size=512KB linesize=64 ways=16) + L1dCache L#7 (size=64KB linesize=64 ways=2) + L1iCache L#7 (size=64KB linesize=64 ways=2) + Core L#7 (P#1) + PU L#7 (P#7) + L2Cache L#8 (size=512KB linesize=64 ways=16) + L1dCache L#8 (size=64KB linesize=64 ways=2) + L1iCache L#8 (size=64KB linesize=64 ways=2) + Core L#8 (P#2) + PU L#8 (P#8) + L2Cache L#9 (size=512KB linesize=64 ways=16) + L1dCache L#9 (size=64KB linesize=64 ways=2) + L1iCache L#9 (size=64KB linesize=64 ways=2) + Core L#9 (P#3) + PU L#9 (P#9) + L2Cache L#10 (size=512KB linesize=64 ways=16) + L1dCache L#10 (size=64KB linesize=64 ways=2) + L1iCache L#10 (size=64KB linesize=64 ways=2) + Core L#10 (P#4) + PU L#10 (P#10) + L2Cache L#11 (size=512KB linesize=64 ways=16) + L1dCache L#11 (size=64KB linesize=64 ways=2) + L1iCache L#11 (size=64KB linesize=64 ways=2) + Core L#11 (P#5) + PU L#11 (P#11) + Package L#1 (P#1 total=25165824KB CPUModel="AMD Engineering Sample") + L3Cache L#2 (total=8388608KB size=5118KB linesize=64 ways=48) + NUMANode L#2 (P#2 local=8388608KB total=8388608KB) + L2Cache L#12 (size=512KB linesize=64 ways=16) + L1dCache L#12 (size=64KB linesize=64 ways=2) + L1iCache L#12 (size=64KB linesize=64 ways=2) + Core L#12 (P#0) + PU L#12 (P#12) + L2Cache L#13 (size=512KB linesize=64 ways=16) + L1dCache L#13 (size=64KB linesize=64 ways=2) + L1iCache L#13 (size=64KB linesize=64 ways=2) + Core L#13 (P#1) + PU L#13 (P#13) + L2Cache L#14 (size=512KB linesize=64 ways=16) + L1dCache L#14 (size=64KB linesize=64 ways=2) + L1iCache L#14 (size=64KB linesize=64 ways=2) + Core L#14 (P#2) + PU L#14 (P#14) + L2Cache L#15 (size=512KB linesize=64 ways=16) + L1dCache L#15 (size=64KB linesize=64 ways=2) + L1iCache L#15 (size=64KB linesize=64 ways=2) + Core L#15 (P#3) + PU L#15 (P#15) + L2Cache L#16 (size=512KB linesize=64 ways=16) + L1dCache L#16 (size=64KB linesize=64 ways=2) + L1iCache L#16 (size=64KB linesize=64 ways=2) + Core L#16 (P#4) + PU L#16 (P#16) + L2Cache L#17 (size=512KB linesize=64 ways=16) + L1dCache L#17 (size=64KB linesize=64 ways=2) + L1iCache L#17 (size=64KB linesize=64 ways=2) + Core L#17 (P#5) + PU L#17 (P#17) + L3Cache L#3 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#3 (P#33 local=16777216KB total=16777216KB) + L2Cache L#18 (size=512KB linesize=64 ways=16) + L1dCache L#18 (size=64KB linesize=64 ways=2) + L1iCache L#18 (size=64KB linesize=64 ways=2) + Core L#18 (P#0) + PU L#18 (P#18) + L2Cache L#19 (size=512KB linesize=64 ways=16) + L1dCache L#19 (size=64KB linesize=64 ways=2) + L1iCache L#19 (size=64KB linesize=64 ways=2) + Core L#19 (P#1) + PU L#19 (P#19) + L2Cache L#20 (size=512KB linesize=64 ways=16) + L1dCache L#20 (size=64KB linesize=64 ways=2) + L1iCache L#20 (size=64KB linesize=64 ways=2) + Core L#20 (P#2) + PU L#20 (P#20) + L2Cache L#21 (size=512KB linesize=64 ways=16) + L1dCache L#21 (size=64KB linesize=64 ways=2) + L1iCache L#21 (size=64KB linesize=64 ways=2) + Core L#21 (P#3) + PU L#21 (P#21) + L2Cache L#22 (size=512KB linesize=64 ways=16) + L1dCache L#22 (size=64KB linesize=64 ways=2) + L1iCache L#22 (size=64KB linesize=64 ways=2) + Core L#22 (P#4) + PU L#22 (P#22) + L2Cache L#23 (size=512KB linesize=64 ways=16) + L1dCache L#23 (size=64KB linesize=64 ways=2) + L1iCache L#23 (size=64KB linesize=64 ways=2) + Core L#23 (P#5) + PU L#23 (P#23) + Package L#2 (P#2 total=25165824KB CPUModel="AMD Engineering Sample") + L3Cache L#4 (total=8388608KB size=5118KB linesize=64 ways=48) + NUMANode L#4 (P#34 local=8388608KB total=8388608KB) + L2Cache L#24 (size=512KB linesize=64 ways=16) + L1dCache L#24 (size=64KB linesize=64 ways=2) + L1iCache L#24 (size=64KB linesize=64 ways=2) + Core L#24 (P#0) + PU L#24 (P#24) + L2Cache L#25 (size=512KB linesize=64 ways=16) + L1dCache L#25 (size=64KB linesize=64 ways=2) + L1iCache L#25 (size=64KB linesize=64 ways=2) + Core L#25 (P#1) + PU L#25 (P#25) + L2Cache L#26 (size=512KB linesize=64 ways=16) + L1dCache L#26 (size=64KB linesize=64 ways=2) + L1iCache L#26 (size=64KB linesize=64 ways=2) + Core L#26 (P#2) + PU L#26 (P#26) + L2Cache L#27 (size=512KB linesize=64 ways=16) + L1dCache L#27 (size=64KB linesize=64 ways=2) + L1iCache L#27 (size=64KB linesize=64 ways=2) + Core L#27 (P#3) + PU L#27 (P#27) + L2Cache L#28 (size=512KB linesize=64 ways=16) + L1dCache L#28 (size=64KB linesize=64 ways=2) + L1iCache L#28 (size=64KB linesize=64 ways=2) + Core L#28 (P#4) + PU L#28 (P#28) + L2Cache L#29 (size=512KB linesize=64 ways=16) + L1dCache L#29 (size=64KB linesize=64 ways=2) + L1iCache L#29 (size=64KB linesize=64 ways=2) + Core L#29 (P#5) + PU L#29 (P#29) + L3Cache L#5 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#5 (P#45 local=16777216KB total=16777216KB) + L2Cache L#30 (size=512KB linesize=64 ways=16) + L1dCache L#30 (size=64KB linesize=64 ways=2) + L1iCache L#30 (size=64KB linesize=64 ways=2) + Core L#30 (P#0) + PU L#30 (P#30) + L2Cache L#31 (size=512KB linesize=64 ways=16) + L1dCache L#31 (size=64KB linesize=64 ways=2) + L1iCache L#31 (size=64KB linesize=64 ways=2) + Core L#31 (P#1) + PU L#31 (P#31) + L2Cache L#32 (size=512KB linesize=64 ways=16) + L1dCache L#32 (size=64KB linesize=64 ways=2) + L1iCache L#32 (size=64KB linesize=64 ways=2) + Core L#32 (P#2) + PU L#32 (P#32) + L2Cache L#33 (size=512KB linesize=64 ways=16) + L1dCache L#33 (size=64KB linesize=64 ways=2) + L1iCache L#33 (size=64KB linesize=64 ways=2) + Core L#33 (P#3) + PU L#33 (P#33) + L2Cache L#34 (size=512KB linesize=64 ways=16) + L1dCache L#34 (size=64KB linesize=64 ways=2) + L1iCache L#34 (size=64KB linesize=64 ways=2) + Core L#34 (P#4) + PU L#34 (P#34) + L2Cache L#35 (size=512KB linesize=64 ways=16) + L1dCache L#35 (size=64KB linesize=64 ways=2) + L1iCache L#35 (size=64KB linesize=64 ways=2) + Core L#35 (P#5) + PU L#35 (P#35) + Package L#3 (P#3 total=25165824KB CPUModel="AMD Engineering Sample") + L3Cache L#6 (total=8388608KB size=5118KB linesize=64 ways=48) + NUMANode L#6 (P#72 local=8388608KB total=8388608KB) + L2Cache L#36 (size=512KB linesize=64 ways=16) + L1dCache L#36 (size=64KB linesize=64 ways=2) + L1iCache L#36 (size=64KB linesize=64 ways=2) + Core L#36 (P#0) + PU L#36 (P#36) + L2Cache L#37 (size=512KB linesize=64 ways=16) + L1dCache L#37 (size=64KB linesize=64 ways=2) + L1iCache L#37 (size=64KB linesize=64 ways=2) + Core L#37 (P#1) + PU L#37 (P#37) + L2Cache L#38 (size=512KB linesize=64 ways=16) + L1dCache L#38 (size=64KB linesize=64 ways=2) + L1iCache L#38 (size=64KB linesize=64 ways=2) + Core L#38 (P#2) + PU L#38 (P#38) + L2Cache L#39 (size=512KB linesize=64 ways=16) + L1dCache L#39 (size=64KB linesize=64 ways=2) + L1iCache L#39 (size=64KB linesize=64 ways=2) + Core L#39 (P#3) + PU L#39 (P#39) + L2Cache L#40 (size=512KB linesize=64 ways=16) + L1dCache L#40 (size=64KB linesize=64 ways=2) + L1iCache L#40 (size=64KB linesize=64 ways=2) + Core L#40 (P#4) + PU L#40 (P#40) + L2Cache L#41 (size=512KB linesize=64 ways=16) + L1dCache L#41 (size=64KB linesize=64 ways=2) + L1iCache L#41 (size=64KB linesize=64 ways=2) + Core L#41 (P#5) + PU L#41 (P#41) + L3Cache L#7 (total=16777216KB size=5118KB linesize=64 ways=48) + NUMANode L#7 (P#73 local=16777216KB total=16777216KB) + L2Cache L#42 (size=512KB linesize=64 ways=16) + L1dCache L#42 (size=64KB linesize=64 ways=2) + L1iCache L#42 (size=64KB linesize=64 ways=2) + Core L#42 (P#0) + PU L#42 (P#42) + L2Cache L#43 (size=512KB linesize=64 ways=16) + L1dCache L#43 (size=64KB linesize=64 ways=2) + L1iCache L#43 (size=64KB linesize=64 ways=2) + Core L#43 (P#1) + PU L#43 (P#43) + L2Cache L#44 (size=512KB linesize=64 ways=16) + L1dCache L#44 (size=64KB linesize=64 ways=2) + L1iCache L#44 (size=64KB linesize=64 ways=2) + Core L#44 (P#2) + PU L#44 (P#44) + L2Cache L#45 (size=512KB linesize=64 ways=16) + L1dCache L#45 (size=64KB linesize=64 ways=2) + L1iCache L#45 (size=64KB linesize=64 ways=2) + Core L#45 (P#3) + PU L#45 (P#45) + L2Cache L#46 (size=512KB linesize=64 ways=16) + L1dCache L#46 (size=64KB linesize=64 ways=2) + L1iCache L#46 (size=64KB linesize=64 ways=2) + Core L#46 (P#4) + PU L#46 (P#46) + L2Cache L#47 (size=512KB linesize=64 ways=16) + L1dCache L#47 (size=64KB linesize=64 ways=2) + L1iCache L#47 (size=64KB linesize=64 ways=2) + Core L#47 (P#5) + PU L#47 (P#47) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 8 L3Cache (type #6) + depth 3: 48 L2Cache (type #5) + depth 4: 48 L1dCache (type #4) + depth 5: 48 L1iCache (type #9) + depth 6: 48 Core (type #2) + depth 7: 48 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 8 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 + 0 10 16 16 22 16 22 16 22 + 1 16 10 22 16 16 22 22 16 + 2 16 22 10 16 16 16 16 16 + 3 22 16 16 10 16 16 22 22 + 4 16 16 16 16 10 16 16 22 + 5 22 22 16 16 16 10 22 16 + 6 16 22 16 22 16 22 10 16 + 7 22 16 16 22 22 16 16 10 +CPU kind #0 efficiency 0 cpuset 0x0000ffff,0xffffffff + FrequencyMaxMHz = 1700 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/48amd64-4d2n6c-sparse.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/48amd64-4d2n6c-sparse.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..efe85d273f3a91a7bea5daf37814e72c4880ed82 GIT binary patch literal 21102 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.options new file mode 100644 index 0000000000..e8e5adcc03 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.options @@ -0,0 +1 @@ +- -p --ignore Core --no-caches --filter package:none --no-io diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.output new file mode 100644 index 0000000000..c07149e5c5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.output @@ -0,0 +1,6 @@ +Machine (3958MB total) + NUMANode P#0 (3958MB) + PU P#0 + PU P#1 + PU P#2 + PU P#3 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4em64t-2c2t-ignore-reorder.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..754de72a210a2e1edf743637320ae5e515a9134d GIT binary patch literal 7605 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 Dn|hQ( literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4ia64-4s.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4ia64-4s.output new file mode 100644 index 0000000000..1e228d2475 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4ia64-4s.output @@ -0,0 +1,40 @@ +Machine (P#0 total=1009920KB Backend=Linux) + NUMANode L#0 (P#0 local=1009920KB total=1009920KB) + Package L#0 + L3Cache L#0 (size=4096KB linesize=128 ways=16) + L2Cache L#0 (size=256KB linesize=128 ways=8) + L1dCache L#0 (size=16KB linesize=64 ways=4) + L1iCache L#0 (size=16KB linesize=64 ways=4) + Core L#0 (P#0) + PU L#0 (P#0) + Package L#1 + L3Cache L#1 (size=4096KB linesize=128 ways=16) + L2Cache L#1 (size=256KB linesize=128 ways=8) + L1dCache L#1 (size=16KB linesize=64 ways=4) + L1iCache L#1 (size=16KB linesize=64 ways=4) + Core L#1 (P#0) + PU L#1 (P#1) + Package L#2 + L3Cache L#2 (size=4096KB linesize=128 ways=16) + L2Cache L#2 (size=256KB linesize=128 ways=8) + L1dCache L#2 (size=16KB linesize=64 ways=4) + L1iCache L#2 (size=16KB linesize=64 ways=4) + Core L#2 (P#0) + PU L#2 (P#2) + Package L#3 + L3Cache L#3 (size=4096KB linesize=128 ways=16) + L2Cache L#3 (size=256KB linesize=128 ways=8) + L1dCache L#3 (size=16KB linesize=64 ways=4) + L1iCache L#3 (size=16KB linesize=64 ways=4) + Core L#3 (P#0) + PU L#3 (P#3) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 4 L3Cache (type #6) + depth 3: 4 L2Cache (type #5) + depth 4: 4 L1dCache (type #4) + depth 5: 4 L1iCache (type #9) + depth 6: 4 Core (type #2) + depth 7: 4 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4ia64-4s.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/4ia64-4s.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ba16fe01d49764dd8c41df7543a2d5d49b807b4e GIT binary patch literal 1990 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 U64_$nRo8Ik7B@)*J(ErTAM@r^uK)l5 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64fake-4n2s2ca2c2t.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64fake-4n2s2ca2c2t.output new file mode 100644 index 0000000000..e73efb8f4e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64fake-4n2s2ca2c2t.output @@ -0,0 +1,212 @@ +Machine (P#0 total=4194304KB Backend=Linux) + Group0 L#0 (total=1048576KB) + NUMANode L#0 (P#0 local=1048576KB total=1048576KB) + Package L#0 (P#0) + L3Cache L#0 (size=8192KB linesize=64 ways=16) + L2Cache L#0 (size=256KB linesize=64 ways=8) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=4) + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#4) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=4) + Core L#1 (P#2) + PU L#2 (P#2) + PU L#3 (P#6) + L2Cache L#1 (size=256KB linesize=64 ways=8) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=4) + Core L#2 (P#1) + PU L#4 (P#1) + PU L#5 (P#5) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=4) + Core L#3 (P#3) + PU L#6 (P#3) + PU L#7 (P#7) + Package L#1 (P#1) + L3Cache L#1 (size=8192KB linesize=64 ways=16) + L2Cache L#2 (size=256KB linesize=64 ways=8) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=4) + Core L#4 (P#0) + PU L#8 (P#8) + PU L#9 (P#12) + L1dCache L#5 (size=32KB linesize=64 ways=8) + L1iCache L#5 (size=32KB linesize=64 ways=4) + Core L#5 (P#2) + PU L#10 (P#10) + PU L#11 (P#14) + L2Cache L#3 (size=256KB linesize=64 ways=8) + L1dCache L#6 (size=32KB linesize=64 ways=8) + L1iCache L#6 (size=32KB linesize=64 ways=4) + Core L#6 (P#1) + PU L#12 (P#9) + PU L#13 (P#13) + L1dCache L#7 (size=32KB linesize=64 ways=8) + L1iCache L#7 (size=32KB linesize=64 ways=4) + Core L#7 (P#3) + PU L#14 (P#11) + PU L#15 (P#15) + Group0 L#1 (total=1048576KB) + NUMANode L#1 (P#1 local=1048576KB total=1048576KB) + Package L#2 (P#2) + L3Cache L#2 (size=8192KB linesize=64 ways=16) + L2Cache L#4 (size=256KB linesize=64 ways=8) + L1dCache L#8 (size=32KB linesize=64 ways=8) + L1iCache L#8 (size=32KB linesize=64 ways=4) + Core L#8 (P#0) + PU L#16 (P#16) + PU L#17 (P#20) + L1dCache L#9 (size=32KB linesize=64 ways=8) + L1iCache L#9 (size=32KB linesize=64 ways=4) + Core L#9 (P#2) + PU L#18 (P#18) + PU L#19 (P#22) + L2Cache L#5 (size=256KB linesize=64 ways=8) + L1dCache L#10 (size=32KB linesize=64 ways=8) + L1iCache L#10 (size=32KB linesize=64 ways=4) + Core L#10 (P#1) + PU L#20 (P#17) + PU L#21 (P#21) + L1dCache L#11 (size=32KB linesize=64 ways=8) + L1iCache L#11 (size=32KB linesize=64 ways=4) + Core L#11 (P#3) + PU L#22 (P#19) + PU L#23 (P#23) + Package L#3 (P#3) + L3Cache L#3 (size=8192KB linesize=64 ways=16) + L2Cache L#6 (size=256KB linesize=64 ways=8) + L1dCache L#12 (size=32KB linesize=64 ways=8) + L1iCache L#12 (size=32KB linesize=64 ways=4) + Core L#12 (P#0) + PU L#24 (P#24) + PU L#25 (P#28) + L1dCache L#13 (size=32KB linesize=64 ways=8) + L1iCache L#13 (size=32KB linesize=64 ways=4) + Core L#13 (P#2) + PU L#26 (P#26) + PU L#27 (P#30) + L2Cache L#7 (size=256KB linesize=64 ways=8) + L1dCache L#14 (size=32KB linesize=64 ways=8) + L1iCache L#14 (size=32KB linesize=64 ways=4) + Core L#14 (P#1) + PU L#28 (P#25) + PU L#29 (P#29) + L1dCache L#15 (size=32KB linesize=64 ways=8) + L1iCache L#15 (size=32KB linesize=64 ways=4) + Core L#15 (P#3) + PU L#30 (P#27) + PU L#31 (P#31) + Group0 L#2 (total=1048576KB) + NUMANode L#2 (P#2 local=1048576KB total=1048576KB) + Package L#4 (P#4) + L3Cache L#4 (size=8192KB linesize=64 ways=16) + L2Cache L#8 (size=256KB linesize=64 ways=8) + L1dCache L#16 (size=32KB linesize=64 ways=8) + L1iCache L#16 (size=32KB linesize=64 ways=4) + Core L#16 (P#0) + PU L#32 (P#32) + PU L#33 (P#36) + L1dCache L#17 (size=32KB linesize=64 ways=8) + L1iCache L#17 (size=32KB linesize=64 ways=4) + Core L#17 (P#2) + PU L#34 (P#34) + PU L#35 (P#38) + L2Cache L#9 (size=256KB linesize=64 ways=8) + L1dCache L#18 (size=32KB linesize=64 ways=8) + L1iCache L#18 (size=32KB linesize=64 ways=4) + Core L#18 (P#1) + PU L#36 (P#33) + PU L#37 (P#37) + L1dCache L#19 (size=32KB linesize=64 ways=8) + L1iCache L#19 (size=32KB linesize=64 ways=4) + Core L#19 (P#3) + PU L#38 (P#35) + PU L#39 (P#39) + Package L#5 (P#5) + L3Cache L#5 (size=8192KB linesize=64 ways=16) + L2Cache L#10 (size=256KB linesize=64 ways=8) + L1dCache L#20 (size=32KB linesize=64 ways=8) + L1iCache L#20 (size=32KB linesize=64 ways=4) + Core L#20 (P#0) + PU L#40 (P#40) + PU L#41 (P#44) + L1dCache L#21 (size=32KB linesize=64 ways=8) + L1iCache L#21 (size=32KB linesize=64 ways=4) + Core L#21 (P#2) + PU L#42 (P#42) + PU L#43 (P#46) + L2Cache L#11 (size=256KB linesize=64 ways=8) + L1dCache L#22 (size=32KB linesize=64 ways=8) + L1iCache L#22 (size=32KB linesize=64 ways=4) + Core L#22 (P#1) + PU L#44 (P#41) + PU L#45 (P#45) + L1dCache L#23 (size=32KB linesize=64 ways=8) + L1iCache L#23 (size=32KB linesize=64 ways=4) + Core L#23 (P#3) + PU L#46 (P#43) + PU L#47 (P#47) + Group0 L#3 (total=1048576KB) + NUMANode L#3 (P#3 local=1048576KB total=1048576KB) + Package L#6 (P#6) + L3Cache L#6 (size=8192KB linesize=64 ways=16) + L2Cache L#12 (size=256KB linesize=64 ways=8) + L1dCache L#24 (size=32KB linesize=64 ways=8) + L1iCache L#24 (size=32KB linesize=64 ways=4) + Core L#24 (P#0) + PU L#48 (P#48) + PU L#49 (P#52) + L1dCache L#25 (size=32KB linesize=64 ways=8) + L1iCache L#25 (size=32KB linesize=64 ways=4) + Core L#25 (P#2) + PU L#50 (P#50) + PU L#51 (P#54) + L2Cache L#13 (size=256KB linesize=64 ways=8) + L1dCache L#26 (size=32KB linesize=64 ways=8) + L1iCache L#26 (size=32KB linesize=64 ways=4) + Core L#26 (P#1) + PU L#52 (P#49) + PU L#53 (P#53) + L1dCache L#27 (size=32KB linesize=64 ways=8) + L1iCache L#27 (size=32KB linesize=64 ways=4) + Core L#27 (P#3) + PU L#54 (P#51) + PU L#55 (P#55) + Package L#7 (P#7) + L3Cache L#7 (size=8192KB linesize=64 ways=16) + L2Cache L#14 (size=256KB linesize=64 ways=8) + L1dCache L#28 (size=32KB linesize=64 ways=8) + L1iCache L#28 (size=32KB linesize=64 ways=4) + Core L#28 (P#0) + PU L#56 (P#56) + PU L#57 (P#60) + L1dCache L#29 (size=32KB linesize=64 ways=8) + L1iCache L#29 (size=32KB linesize=64 ways=4) + Core L#29 (P#2) + PU L#58 (P#58) + PU L#59 (P#62) + L2Cache L#15 (size=256KB linesize=64 ways=8) + L1dCache L#30 (size=32KB linesize=64 ways=8) + L1iCache L#30 (size=32KB linesize=64 ways=4) + Core L#30 (P#1) + PU L#60 (P#57) + PU L#61 (P#61) + L1dCache L#31 (size=32KB linesize=64 ways=8) + L1iCache L#31 (size=32KB linesize=64 ways=4) + Core L#31 (P#3) + PU L#62 (P#59) + PU L#63 (P#63) +depth 0: 1 Machine (type #0) + depth 1: 4 Group0 (type #12) + depth 2: 8 Package (type #1) + depth 3: 8 L3Cache (type #6) + depth 4: 16 L2Cache (type #5) + depth 5: 32 L1dCache (type #4) + depth 6: 32 L1iCache (type #9) + depth 7: 32 Core (type #2) + depth 8: 64 PU (type #3) +Special depth -3: 4 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64fake-4n2s2ca2c2t.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64fake-4n2s2ca2c2t.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..19aa8b9a0678a550609b1769197cd76924ce1aee GIT binary patch literal 11131 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 D)hms! literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-A2A-cache.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-A2A-cache.output new file mode 100644 index 0000000000..550f6f52d6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-A2A-cache.output @@ -0,0 +1,134 @@ +Machine (P#0 total=1048576KB ClusterMode=All2All MemoryMode=Cache Backend=Linux OSName=Linux OSRelease=3.10.0-327.el7.x86_64 OSVersion="#1 SMP Thu Oct 29 17:29:29 EDT 2015" HostName=localhost.localdomain Architecture=x86_64) + Package L#0 (P#0 total=1048576KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=87 CPUModel=06/57 CPUStepping=0) + NUMANode L#0 (P#0 local=1048576KB total=1048576KB) + L3Cache(MemorySideCache) L#0 (size=16777216KB linesize=64 ways=1 Inclusive=1) + L2Cache L#0 (size=4096KB linesize=64) + L1dCache L#0 (size=32KB linesize=64) + L1iCache L#0 (size=32KB linesize=64) + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#16) + PU L#2 (P#32) + PU L#3 (P#48) + L1dCache L#1 (size=32KB linesize=64) + L1iCache L#1 (size=32KB linesize=64) + Core L#1 (P#1) + PU L#4 (P#1) + PU L#5 (P#17) + PU L#6 (P#33) + PU L#7 (P#49) + L2Cache L#1 (size=4096KB linesize=64) + L1dCache L#2 (size=32KB linesize=64) + L1iCache L#2 (size=32KB linesize=64) + Core L#2 (P#2) + PU L#8 (P#2) + PU L#9 (P#18) + PU L#10 (P#34) + PU L#11 (P#50) + L1dCache L#3 (size=32KB linesize=64) + L1iCache L#3 (size=32KB linesize=64) + Core L#3 (P#3) + PU L#12 (P#3) + PU L#13 (P#19) + PU L#14 (P#35) + PU L#15 (P#51) + L2Cache L#2 (size=4096KB linesize=64) + L1dCache L#4 (size=32KB linesize=64) + L1iCache L#4 (size=32KB linesize=64) + Core L#4 (P#4) + PU L#16 (P#4) + PU L#17 (P#20) + PU L#18 (P#36) + PU L#19 (P#52) + L1dCache L#5 (size=32KB linesize=64) + L1iCache L#5 (size=32KB linesize=64) + Core L#5 (P#5) + PU L#20 (P#5) + PU L#21 (P#21) + PU L#22 (P#37) + PU L#23 (P#53) + L2Cache L#3 (size=4096KB linesize=64) + L1dCache L#6 (size=32KB linesize=64) + L1iCache L#6 (size=32KB linesize=64) + Core L#6 (P#6) + PU L#24 (P#6) + PU L#25 (P#22) + PU L#26 (P#38) + PU L#27 (P#54) + L1dCache L#7 (size=32KB linesize=64) + L1iCache L#7 (size=32KB linesize=64) + Core L#7 (P#7) + PU L#28 (P#7) + PU L#29 (P#23) + PU L#30 (P#39) + PU L#31 (P#55) + L2Cache L#4 (size=4096KB linesize=64) + L1dCache L#8 (size=32KB linesize=64) + L1iCache L#8 (size=32KB linesize=64) + Core L#8 (P#8) + PU L#32 (P#8) + PU L#33 (P#24) + PU L#34 (P#40) + PU L#35 (P#56) + L1dCache L#9 (size=32KB linesize=64) + L1iCache L#9 (size=32KB linesize=64) + Core L#9 (P#9) + PU L#36 (P#9) + PU L#37 (P#25) + PU L#38 (P#41) + PU L#39 (P#57) + L2Cache L#5 (size=4096KB linesize=64) + L1dCache L#10 (size=32KB linesize=64) + L1iCache L#10 (size=32KB linesize=64) + Core L#10 (P#10) + PU L#40 (P#10) + PU L#41 (P#26) + PU L#42 (P#42) + PU L#43 (P#58) + L1dCache L#11 (size=32KB linesize=64) + L1iCache L#11 (size=32KB linesize=64) + Core L#11 (P#11) + PU L#44 (P#11) + PU L#45 (P#27) + PU L#46 (P#43) + PU L#47 (P#59) + L2Cache L#6 (size=4096KB linesize=64) + L1dCache L#12 (size=32KB linesize=64) + L1iCache L#12 (size=32KB linesize=64) + Core L#12 (P#12) + PU L#48 (P#12) + PU L#49 (P#28) + PU L#50 (P#44) + PU L#51 (P#60) + L1dCache L#13 (size=32KB linesize=64) + L1iCache L#13 (size=32KB linesize=64) + Core L#13 (P#13) + PU L#52 (P#13) + PU L#53 (P#29) + PU L#54 (P#45) + PU L#55 (P#61) + L2Cache L#7 (size=4096KB linesize=64) + L1dCache L#14 (size=32KB linesize=64) + L1iCache L#14 (size=32KB linesize=64) + Core L#14 (P#14) + PU L#56 (P#14) + PU L#57 (P#30) + PU L#58 (P#46) + PU L#59 (P#62) + L1dCache L#15 (size=32KB linesize=64) + L1iCache L#15 (size=32KB linesize=64) + Core L#15 (P#15) + PU L#60 (P#15) + PU L#61 (P#31) + PU L#62 (P#47) + PU L#63 (P#63) +depth 0: 1 Machine (type #0) + depth 1: 1 Package (type #1) + depth 2: 1 L3Cache (type #6) + depth 3: 8 L2Cache (type #5) + depth 4: 16 L1dCache (type #4) + depth 5: 16 L1iCache (type #9) + depth 6: 16 Core (type #2) + depth 7: 64 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-A2A-cache.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-A2A-cache.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..158ddfa36d1cb5f2d9655c4f10be4b49d57306b9 GIT binary patch literal 12003 zcmd6N2UJr_x9~|J0i^d%fKWxGcQ7CUf^-rDL=1>X7o<0D0*HWs5Xz+p2BbzrL^|RP z3J8jTG?6CKJ18pZz3P9|@4fGSZ@vGn`@OaPf4!YKGiUbMvuB^Z_sp5h9%C189Tg*I z83$*rv7S$m&Y54vzkS_*`RVbu4_|j*0pGrT+d}~WBLD{&r9Kh~ZlAA3!!vESsT&m z$^}AzcehX0&Ev;Ws;a603ki^{`6^~nVN#O)1y7eUJq`deOxa8%0DuTU5j7trOK3HX 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 uwA?;nEwM!74nh* literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.env b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.env new file mode 100644 index 0000000000..2b48672bee --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.env @@ -0,0 +1,2 @@ +HWLOC_KNL_MSCACHE_L3=0 +export HWLOC_KNL_MSCACHE_L3 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.output new file mode 100644 index 0000000000..9b8be5fb01 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.output @@ -0,0 +1,158 @@ +Machine (P#0 total=12582912KB ClusterMode=SNC4 MemoryMode=Hybrid50 Backend=Linux OSName=Linux OSRelease=3.10.0-327.el7.x86_64 OSVersion="#1 SMP Thu Oct 29 17:29:29 EDT 2015" HostName=localhost.localdomain Architecture=x86_64) + Package L#0 (P#0 total=12582912KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=87 CPUModel=06/57 CPUStepping=0) + Group0(Cluster) L#0 (total=3145728KB) + MemCache L#0 (total=1048576KB size=2097152KB linesize=64 ways=1 Inclusive=1) + NUMANode L#0 (P#0 local=1048576KB total=1048576KB) + NUMANode(MCDRAM) L#1 (P#7 local=2097152KB total=2097152KB) + L2Cache L#0 (size=4096KB linesize=64) + L1dCache L#0 (size=32KB linesize=64) + L1iCache L#0 (size=32KB linesize=64) + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#16) + PU L#2 (P#32) + PU L#3 (P#48) + L1dCache L#1 (size=32KB linesize=64) + L1iCache L#1 (size=32KB linesize=64) + Core L#1 (P#1) + PU L#4 (P#1) + PU L#5 (P#17) + PU L#6 (P#33) + PU L#7 (P#49) + L2Cache L#1 (size=4096KB linesize=64) + L1dCache L#2 (size=32KB linesize=64) + L1iCache L#2 (size=32KB linesize=64) + Core L#2 (P#2) + PU L#8 (P#2) + PU L#9 (P#18) + PU L#10 (P#34) + PU L#11 (P#50) + L1dCache L#3 (size=32KB linesize=64) + L1iCache L#3 (size=32KB linesize=64) + Core L#3 (P#3) + PU L#12 (P#3) + PU L#13 (P#19) + PU L#14 (P#35) + PU L#15 (P#51) + Group0(Cluster) L#1 (total=3145728KB) + MemCache L#1 (total=1048576KB size=2097152KB linesize=64 ways=1 Inclusive=1) + NUMANode L#2 (P#1 local=1048576KB total=1048576KB) + NUMANode(MCDRAM) L#3 (P#4 local=2097152KB total=2097152KB) + L2Cache L#2 (size=4096KB linesize=64) + L1dCache L#4 (size=32KB linesize=64) + L1iCache L#4 (size=32KB linesize=64) + Core L#4 (P#4) + PU L#16 (P#4) + PU L#17 (P#20) + PU L#18 (P#36) + PU L#19 (P#52) + L1dCache L#5 (size=32KB linesize=64) + L1iCache L#5 (size=32KB linesize=64) + Core L#5 (P#5) + PU L#20 (P#5) + PU L#21 (P#21) + PU L#22 (P#37) + PU L#23 (P#53) + L2Cache L#3 (size=4096KB linesize=64) + L1dCache L#6 (size=32KB linesize=64) + L1iCache L#6 (size=32KB linesize=64) + Core L#6 (P#6) + PU L#24 (P#6) + PU L#25 (P#22) + PU L#26 (P#38) + PU L#27 (P#54) + L1dCache L#7 (size=32KB linesize=64) + L1iCache L#7 (size=32KB linesize=64) + Core L#7 (P#7) + PU L#28 (P#7) + PU L#29 (P#23) + PU L#30 (P#39) + PU L#31 (P#55) + Group0(Cluster) L#2 (total=3145728KB) + MemCache L#2 (total=1048576KB size=2097152KB linesize=64 ways=1 Inclusive=1) + NUMANode L#4 (P#2 local=1048576KB total=1048576KB) + NUMANode(MCDRAM) L#5 (P#5 local=2097152KB total=2097152KB) + L2Cache L#4 (size=4096KB linesize=64) + L1dCache L#8 (size=32KB linesize=64) + L1iCache L#8 (size=32KB linesize=64) + Core L#8 (P#8) + PU L#32 (P#8) + PU L#33 (P#24) + PU L#34 (P#40) + PU L#35 (P#56) + L1dCache L#9 (size=32KB linesize=64) + L1iCache L#9 (size=32KB linesize=64) + Core L#9 (P#9) + PU L#36 (P#9) + PU L#37 (P#25) + PU L#38 (P#41) + PU L#39 (P#57) + L2Cache L#5 (size=4096KB linesize=64) + L1dCache L#10 (size=32KB linesize=64) + L1iCache L#10 (size=32KB linesize=64) + Core L#10 (P#10) + PU L#40 (P#10) + PU L#41 (P#26) + PU L#42 (P#42) + PU L#43 (P#58) + L1dCache L#11 (size=32KB linesize=64) + L1iCache L#11 (size=32KB linesize=64) + Core L#11 (P#11) + PU L#44 (P#11) + PU L#45 (P#27) + PU L#46 (P#43) + PU L#47 (P#59) + Group0(Cluster) L#3 (total=3145728KB) + MemCache L#3 (total=1048576KB size=2097152KB linesize=64 ways=1 Inclusive=1) + NUMANode L#6 (P#3 local=1048576KB total=1048576KB) + NUMANode(MCDRAM) L#7 (P#6 local=2097152KB total=2097152KB) + L2Cache L#6 (size=4096KB linesize=64) + L1dCache L#12 (size=32KB linesize=64) + L1iCache L#12 (size=32KB linesize=64) + Core L#12 (P#12) + PU L#48 (P#12) + PU L#49 (P#28) + PU L#50 (P#44) + PU L#51 (P#60) + L1dCache L#13 (size=32KB linesize=64) + L1iCache L#13 (size=32KB linesize=64) + Core L#13 (P#13) + PU L#52 (P#13) + PU L#53 (P#29) + PU L#54 (P#45) + PU L#55 (P#61) + L2Cache L#7 (size=4096KB linesize=64) + L1dCache L#14 (size=32KB linesize=64) + L1iCache L#14 (size=32KB linesize=64) + Core L#14 (P#14) + PU L#56 (P#14) + PU L#57 (P#30) + PU L#58 (P#46) + PU L#59 (P#62) + L1dCache L#15 (size=32KB linesize=64) + L1iCache L#15 (size=32KB linesize=64) + Core L#15 (P#15) + PU L#60 (P#15) + PU L#61 (P#31) + PU L#62 (P#47) + PU L#63 (P#63) +depth 0: 1 Machine (type #0) + depth 1: 1 Package (type #1) + depth 2: 4 Group0 (type #12) + depth 3: 8 L2Cache (type #5) + depth 4: 16 L1dCache (type #4) + depth 5: 16 L1iCache (type #9) + depth 6: 16 Core (type #2) + depth 7: 64 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Special depth -8: 4 MemCache (type #18) +Memory attribute #2 name `Bandwidth' flags 5 + NUMANode L#0 = 22500 from cpuset 0x000f000f,0x000f000f (Group0 L#0) + NUMANode L#1 = 90000 from cpuset 0x000f000f,0x000f000f (Group0 L#0) + NUMANode L#2 = 22500 from cpuset 0x00f000f0,0x00f000f0 (Group0 L#1) + NUMANode L#3 = 90000 from cpuset 0x00f000f0,0x00f000f0 (Group0 L#1) + NUMANode L#4 = 22500 from cpuset 0x0f000f00,0x0f000f00 (Group0 L#2) + NUMANode L#5 = 90000 from cpuset 0x0f000f00,0x0f000f00 (Group0 L#2) + NUMANode L#6 = 22500 from cpuset 0xf000f000,0xf000f000 (Group0 L#3) + NUMANode L#7 = 90000 from cpuset 0xf000f000,0xf000f000 (Group0 L#3) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.source new file mode 100644 index 0000000000..99fc6226e9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid-msc.source @@ -0,0 +1 @@ +64intel64-fakeKNL-SNC4-hybrid.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid.output new file mode 100644 index 0000000000..87903c7c69 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid.output @@ -0,0 +1,153 @@ +Machine (P#0 total=12582912KB ClusterMode=SNC4 MemoryMode=Hybrid50 Backend=Linux OSName=Linux OSRelease=3.10.0-327.el7.x86_64 OSVersion="#1 SMP Thu Oct 29 17:29:29 EDT 2015" HostName=localhost.localdomain Architecture=x86_64) + Package L#0 (P#0 total=12582912KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=87 CPUModel=06/57 CPUStepping=0) + L3Cache(MemorySideCache) L#0 (total=3145728KB size=2097152KB linesize=64 ways=1 Inclusive=1) + NUMANode L#0 (P#0 local=1048576KB total=1048576KB) + NUMANode(MCDRAM) L#1 (P#7 local=2097152KB total=2097152KB) + L2Cache L#0 (size=4096KB linesize=64) + L1dCache L#0 (size=32KB linesize=64) + L1iCache L#0 (size=32KB linesize=64) + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#16) + PU L#2 (P#32) + PU L#3 (P#48) + L1dCache L#1 (size=32KB linesize=64) + L1iCache L#1 (size=32KB linesize=64) + Core L#1 (P#1) + PU L#4 (P#1) + PU L#5 (P#17) + PU L#6 (P#33) + PU L#7 (P#49) + L2Cache L#1 (size=4096KB linesize=64) + L1dCache L#2 (size=32KB linesize=64) + L1iCache L#2 (size=32KB linesize=64) + Core L#2 (P#2) + PU L#8 (P#2) + PU L#9 (P#18) + PU L#10 (P#34) + PU L#11 (P#50) + L1dCache L#3 (size=32KB linesize=64) + L1iCache L#3 (size=32KB linesize=64) + Core L#3 (P#3) + PU L#12 (P#3) + PU L#13 (P#19) + PU L#14 (P#35) + PU L#15 (P#51) + L3Cache(MemorySideCache) L#1 (total=3145728KB size=2097152KB linesize=64 ways=1 Inclusive=1) + NUMANode L#2 (P#1 local=1048576KB total=1048576KB) + NUMANode(MCDRAM) L#3 (P#4 local=2097152KB total=2097152KB) + L2Cache L#2 (size=4096KB linesize=64) + L1dCache L#4 (size=32KB linesize=64) + L1iCache L#4 (size=32KB linesize=64) + Core L#4 (P#4) + PU L#16 (P#4) + PU L#17 (P#20) + PU L#18 (P#36) + PU L#19 (P#52) + L1dCache L#5 (size=32KB linesize=64) + L1iCache L#5 (size=32KB linesize=64) + Core L#5 (P#5) + PU L#20 (P#5) + PU L#21 (P#21) + PU L#22 (P#37) + PU L#23 (P#53) + L2Cache L#3 (size=4096KB linesize=64) + L1dCache L#6 (size=32KB linesize=64) + L1iCache L#6 (size=32KB linesize=64) + Core L#6 (P#6) + PU L#24 (P#6) + PU L#25 (P#22) + PU L#26 (P#38) + PU L#27 (P#54) + L1dCache L#7 (size=32KB linesize=64) + L1iCache L#7 (size=32KB linesize=64) + Core L#7 (P#7) + PU L#28 (P#7) + PU L#29 (P#23) + PU L#30 (P#39) + PU L#31 (P#55) + L3Cache(MemorySideCache) L#2 (total=3145728KB size=2097152KB linesize=64 ways=1 Inclusive=1) + NUMANode L#4 (P#2 local=1048576KB total=1048576KB) + NUMANode(MCDRAM) L#5 (P#5 local=2097152KB total=2097152KB) + L2Cache L#4 (size=4096KB linesize=64) + L1dCache L#8 (size=32KB linesize=64) + L1iCache L#8 (size=32KB linesize=64) + Core L#8 (P#8) + PU L#32 (P#8) + PU L#33 (P#24) + PU L#34 (P#40) + PU L#35 (P#56) + L1dCache L#9 (size=32KB linesize=64) + L1iCache L#9 (size=32KB linesize=64) + Core L#9 (P#9) + PU L#36 (P#9) + PU L#37 (P#25) + PU L#38 (P#41) + PU L#39 (P#57) + L2Cache L#5 (size=4096KB linesize=64) + L1dCache L#10 (size=32KB linesize=64) + L1iCache L#10 (size=32KB linesize=64) + Core L#10 (P#10) + PU L#40 (P#10) + PU L#41 (P#26) + PU L#42 (P#42) + PU L#43 (P#58) + L1dCache L#11 (size=32KB linesize=64) + L1iCache L#11 (size=32KB linesize=64) + Core L#11 (P#11) + PU L#44 (P#11) + PU L#45 (P#27) + PU L#46 (P#43) + PU L#47 (P#59) + L3Cache(MemorySideCache) L#3 (total=3145728KB size=2097152KB linesize=64 ways=1 Inclusive=1) + NUMANode L#6 (P#3 local=1048576KB total=1048576KB) + NUMANode(MCDRAM) L#7 (P#6 local=2097152KB total=2097152KB) + L2Cache L#6 (size=4096KB linesize=64) + L1dCache L#12 (size=32KB linesize=64) + L1iCache L#12 (size=32KB linesize=64) + Core L#12 (P#12) + PU L#48 (P#12) + PU L#49 (P#28) + PU L#50 (P#44) + PU L#51 (P#60) + L1dCache L#13 (size=32KB linesize=64) + L1iCache L#13 (size=32KB linesize=64) + Core L#13 (P#13) + PU L#52 (P#13) + PU L#53 (P#29) + PU L#54 (P#45) + PU L#55 (P#61) + L2Cache L#7 (size=4096KB linesize=64) + L1dCache L#14 (size=32KB linesize=64) + L1iCache L#14 (size=32KB linesize=64) + Core L#14 (P#14) + PU L#56 (P#14) + PU L#57 (P#30) + PU L#58 (P#46) + PU L#59 (P#62) + L1dCache L#15 (size=32KB linesize=64) + L1iCache L#15 (size=32KB linesize=64) + Core L#15 (P#15) + PU L#60 (P#15) + PU L#61 (P#31) + PU L#62 (P#47) + PU L#63 (P#63) +depth 0: 1 Machine (type #0) + depth 1: 1 Package (type #1) + depth 2: 4 L3Cache (type #6) + depth 3: 8 L2Cache (type #5) + depth 4: 16 L1dCache (type #4) + depth 5: 16 L1iCache (type #9) + depth 6: 16 Core (type #2) + depth 7: 64 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Memory attribute #2 name `Bandwidth' flags 5 + NUMANode L#0 = 22500 from cpuset 0x000f000f,0x000f000f (L3 L#0) + NUMANode L#1 = 90000 from cpuset 0x000f000f,0x000f000f (L3 L#0) + NUMANode L#2 = 22500 from cpuset 0x00f000f0,0x00f000f0 (L3 L#1) + NUMANode L#3 = 90000 from cpuset 0x00f000f0,0x00f000f0 (L3 L#1) + NUMANode L#4 = 22500 from cpuset 0x0f000f00,0x0f000f00 (L3 L#2) + NUMANode L#5 = 90000 from cpuset 0x0f000f00,0x0f000f00 (L3 L#2) + NUMANode L#6 = 22500 from cpuset 0xf000f000,0xf000f000 (L3 L#3) + NUMANode L#7 = 90000 from cpuset 0xf000f000,0xf000f000 (L3 L#3) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/64intel64-fakeKNL-SNC4-hybrid.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6770b99fe2f5b3bb261ac71ee31d1aae013f88ba GIT binary patch literal 12982 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8amd64-4n2c.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8amd64-4n2c.output new file mode 100644 index 0000000000..990473038a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8amd64-4n2c.output @@ -0,0 +1,64 @@ +Machine (P#0 total=67108240KB Backend=Linux) + Package L#0 (P#0 total=16776592KB CPUModel="Dual-Core AMD Opteron(tm) Processor 8218") + NUMANode L#0 (P#0 local=16776592KB total=16776592KB) + L2Cache L#0 (size=1024KB linesize=64 ways=16) + L1dCache L#0 (size=64KB linesize=64 ways=2) + L1iCache L#0 (size=64KB linesize=64 ways=2) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=1024KB linesize=64 ways=16) + L1dCache L#1 (size=64KB linesize=64 ways=2) + L1iCache L#1 (size=64KB linesize=64 ways=2) + Core L#1 (P#1) + PU L#1 (P#4) + Package L#1 (P#1 total=16777216KB CPUModel="Dual-Core AMD Opteron(tm) Processor 8218") + NUMANode L#1 (P#1 local=16777216KB total=16777216KB) + L2Cache L#2 (size=1024KB linesize=64 ways=16) + L1dCache L#2 (size=64KB linesize=64 ways=2) + L1iCache L#2 (size=64KB linesize=64 ways=2) + Core L#2 (P#0) + PU L#2 (P#1) + L2Cache L#3 (size=1024KB linesize=64 ways=16) + L1dCache L#3 (size=64KB linesize=64 ways=2) + L1iCache L#3 (size=64KB linesize=64 ways=2) + Core L#3 (P#1) + PU L#3 (P#5) + Package L#2 (P#2 total=16777216KB CPUModel="Dual-Core AMD Opteron(tm) Processor 8218") + NUMANode L#2 (P#2 local=16777216KB total=16777216KB) + L2Cache L#4 (size=1024KB linesize=64 ways=16) + L1dCache L#4 (size=64KB linesize=64 ways=2) + L1iCache L#4 (size=64KB linesize=64 ways=2) + Core L#4 (P#0) + PU L#4 (P#2) + L2Cache L#5 (size=1024KB linesize=64 ways=16) + L1dCache L#5 (size=64KB linesize=64 ways=2) + L1iCache L#5 (size=64KB linesize=64 ways=2) + Core L#5 (P#1) + PU L#5 (P#6) + Package L#3 (P#3 total=16777216KB CPUModel="Dual-Core AMD Opteron(tm) Processor 8218") + NUMANode L#3 (P#3 local=16777216KB total=16777216KB) + L2Cache L#6 (size=1024KB linesize=64 ways=16) + L1dCache L#6 (size=64KB linesize=64 ways=2) + L1iCache L#6 (size=64KB linesize=64 ways=2) + Core L#6 (P#0) + PU L#6 (P#3) + L2Cache L#7 (size=1024KB linesize=64 ways=16) + L1dCache L#7 (size=64KB linesize=64 ways=2) + L1iCache L#7 (size=64KB linesize=64 ways=2) + Core L#7 (P#1) + PU L#7 (P#7) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 8 L2Cache (type #5) + depth 3: 8 L1dCache (type #4) + depth 4: 8 L1iCache (type #9) + depth 5: 8 Core (type #2) + depth 6: 8 PU (type #3) +Special depth -3: 4 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 4 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 + 0 10 20 20 20 + 1 20 10 20 20 + 2 20 20 10 20 + 3 20 20 20 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8amd64-4n2c.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8amd64-4n2c.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..904b84bb4edbeefa3f4805505067ce61d24bb1b2 GIT binary patch literal 3471 zcmZ{kdpr~R8^`C&Xl&RFb8ieID))QY#brnv=FG^M``oEGDis@>xnH9WWpZn#R#B@X zKQfmhw?uWKp;F1MBXl|St8>op&)@s|dY;$wJb!$i@9Xt_eLpxF!`>VlXy_NnHZUFl z5Xw)tecP4|Ag_MgbWWPh{I>dhP09ra07yv#^tS0L-}ZH_Z@#!AqkrHDFWpSzL?#1( z0I3+DJLLiYq6M{jh~@EkrFH561_Npp0RY?$1LBOiH{bG`IG--n0bKxqAMqWi-(xPn z4xrOi_;>p~0Y6}k-{{2{mg_}4^v?X>bWE?pW9&yG!*-D>`B9j7V69+vV>qkk_U3cV zdB@LMXjmlRH4KZ%Z=4OiC+Qc?qxCnq+v2akl$`FqKq_wVW(ENz${Wai^$R#o-}1+O z`>S4lz3^M0;bcZHgK6ncb-gMb4@2x}a76;(ph{_y`*AS*z>U%JVjb#izd5y|GVeZi zB0;}7M%LqvcInXJ4@{zfXw5Yl>1cIorCraP63lnB+BHbukBW+-v|*1gW~^G!w(i`! z?l=|c_4EceTi>p_8aLHp982~zcEvOz>Z1&Qpp>a>Nue-(%nQPVQSnmnd);I;TtbeF zshv3slD2oi4f(oP8yS94;h`UGHV?qyLgvw?zHsjbVph|+M*+8Rd1|UmMQ_6e5WBIX z3jRLQ)727%e(>z~ACwW%ez5={rh+D$ zG#8y7BUxf`Yr*>Bd;BRr9L(vi>S zUv8uPLv(24KkSLlfrO3qH$oiVzfK6m@yFV%cE$645hz>=d0=_*T|F(IZ06c>rv8y( z%q>y6e7*vUJ`Jz@#jcx9y4Cwj&=k^gW+r}f+6Or1Kx{g;95?$HC}}9|L`*MgbOu4r zqIfm9?f?NJr1i+4_+#2R%{+)a(UfCMA8Am-1C_2%1fYFYbsIv|?)>~*tG~=3ie;ap zVx(js>(0A3Vtf3jmy)tIVE$cZ84=zAfJ&sihtc(LW(A@h08Y9rAF|zXB{gKT^?4_q zw4x(O*JI+1c4;M0FJkB|xes5_X2H0fVVW!pvbO zW(vZ;n@U?8ZK|U!E)Yn!cH!6a8-T@`BuYR>O^s&TmNzj847A@nYvvv8PxjZ4j=In1 zD>F$=a>?Cb^^~dPfL-Q>c$EOW-O-PxoA3Lr!jXN;amhM8&!51lRGufOo^{}a<@X!z zHX))*)^bZe=Idr2*3CTFehTKQSd%fIvG4`I2HqwJhppuhm{YVbA-t#iYPyOqcCP4_ z9Bh93Y~Ppj6tF8yR#?g)aB2vgduyY4Wjp6qe(rHh4Kir+gAH3ul>%5Rk zsM;F1UO)^D%fYDTL2m3HBNe~4u0dgOqIIhU%kvZN76gl~$Sv%0OPRbvnxoB=VdtA& z0dH64`eNPGFSW&hR{BEt1m?u#Wk<=Vvv_6nkdHZB^&wxdHzc|s&Ye24ELz-dOZZ4s zN`o3Prjr;mmHwr_XJ093Tizz7_|~J19a3mhiFar zHS3BV23DumA5lIqmAj_nWYR7W3`Re-ddoF6B{lvuj^zyqCu}GAmoKXfTg`Rb#^v5j zlqc`4uy}Vyxo*PF=ZkdEO<0rN(>E!5;uQXX1ZQl(CvqmH_(=DKOPc=N0x<2-L#w4b z+j%z*yHYS-gh)S=n9;yn3E`zv*kBIXUA>#qFWlkPre3<)^|n3RsW#HZx_{ z?io0AOV(^_CNSg=YqMjC>Vd~{7Mzm!WlGc~IfTaZ_9m9O`l={QIG0MPN89Zj4H{uz zbQ6y3I(4MC;`#kYL4p5i6qbUL<80LK1W?1Y)8=5PpdFPsXk&V~!wT4N%5{Dm-$y5- z70QPXhc-61S85zDV>t*8r7lf5+AbAzh{mjR&*|ZBPoSrNcQ%>6(dHGh@thl_?p-}H z%@5i&SgsVjIB2@tZaHWy;kF*GBPV9^XBUxp%J1sk0CN+lzQ=@?OQo^Wa8`|{eS`-l zq|EQ6C}yT&nl@?-kF~c8HEon>4T~-hiaSXul=IJSv6{NsdiBoWp#+04&%)q}X1Lo& z?Sy*|Y=(LZ*K9jIAIvXms`eU0boe>+mF<*ZVu$u=K)-Bs#Ra^heZVv2X1c=uNPEdh zt1Jq_MqT%P!hl@k=L@EYX`P$O@_t&sBjTt1tZ$UXRo8}27r)CbdFFG#ZnCr`+SVOo zqdG(@Z90OysPweJYmOY~>1=y%sP(*P>`>7uXqeaJE@{mjO-HaD^aWdtbZ2hFY-peL z{jzfpY*R61jXP6MpI#Ke;yV_uBhJ|)!M6Mx$H%YV$$PQMBo z39h!>Kf%B5bA4w{$!+GW!9A8`B!!k5p>$1+6ePa2H!7ar>LXyP;@--qR~bScR8nFd zmEZ;sVUyr5dd^ezf5h&kcHve77hC*o$z{;aiL7iUZGT-f~{p}zsVt3t5?qT}y z6G}jBp!80cZ?22>z0d}Ujeo?M!ZT+cnznC14Q}|mkddaql z)@Lg_Jwfcd$FH=Ug8;AT;b+u~uEqM_3X%DVxa7de`V0(}?A>p?3hC?X&8)ph=ZUGD zT;7Bpp8VLMKN3z_*Qpr!h7kG+T0bcLrSwVbLY<+0$&gBY#?ipem-c2W}&`$iMU za8*rS^%qH5jyQreoOU*E|8N)>!lIW&hno86XFkK&!0$49%~N*gvZ~Lh7AQ(JY*M^( zSed_x<1s&sEGtt2t8T#`g=>J}#TBN`;j_B*^HNwGr-5e&VOk*7RCTU)M>q{6lRCig zQdLA5=axgCZhJh<+K>fe&xt(|29RRCfmKKLpMvh+NMo4CK6*LO9@L6*=8~ndIejwT zN{iD%-x7CZ_gLhXOr{lbx(#2W&Fm>A6g(<<*c(`}(^)_LgQEE>BNUG6$Z1Jb-0>_p z0z(Q;=VX3Rv~U}TYbrMoa@ZwwlCbEimZa>cfp{=QO-p9&T%q)&7aP~(L@yb$lG6eW zbZT<+1sU$uFZRGtD_}S?cxEuzhW9je$1wf0dARtsQ-S!k2AKY<^sluN(mU8N=CCUI z0(jO^y^zE0UX!n#kFtdJj>AyZ-eS>U@UJ>JTlTuxz9@7Gj>MdozAAj|#T01H6QQ!? z7uHBbvWAAN(vrNa%b*Voj?lWV^O!5Q|5zsj^VSaBQi|~<94nUCXmNtkn>v|;$(pPb z{Mq%2SmI#1d%3u71NJ5OlI8e?e-_I>yH@pykT9|!?AXb zksJz`Ir8Z!6aj`y52mJ5BP3*0esb<2)19@@f6OD1YAtNN@W?3n>HTe5#U zR$r8+pfB|9U*pYVlGNaZ1W9(uGv|xIul=Y=PfWSst2tb!`zv|pF;9PA;ll&KSlL5T| literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c-buggynuma.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c-buggynuma.output new file mode 100644 index 0000000000..d00d806d40 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c-buggynuma.output @@ -0,0 +1,49 @@ +Machine (P#0 total=2096684KB DMIProductName=AltixXE320 DMIProductVersion=AltixXE DMIBoardVendor=SM DMIBoardName=X7DWT-INF DMIBoardVersion=1.01 DMIBoardAssetTag= DMIChassisVendor=SGI.COM DMIChassisType=1 DMIChassisVersion=013-5556-002 DMIChassisAssetTag=" " DMIBIOSVendor="Phoenix Technologies LTD" DMIBIOSVersion=.0b DMIBIOSDate=03/24/2008 DMISysVendor=SGI.COM Backend=Linux LinuxCgroup=/) + NUMANode L#0 (P#0 local=2096684KB total=2096684KB) + Package L#0 (P#0 CPUModel="Intel(R) Xeon(R) CPU E5472 @ 3.00GHz") + L2Cache L#0 (size=6144KB linesize=64 ways=24) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#1 (P#2) + L2Cache L#1 (size=6144KB linesize=64 ways=24) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=8) + Core L#2 (P#2) + PU L#2 (P#4) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=8) + Core L#3 (P#3) + PU L#3 (P#6) + Package L#1 (P#1 CPUModel="Intel(R) Xeon(R) CPU E5472 @ 3.00GHz") + L2Cache L#2 (size=6144KB linesize=64 ways=24) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=8) + Core L#4 (P#0) + PU L#4 (P#1) + L1dCache L#5 (size=32KB linesize=64 ways=8) + L1iCache L#5 (size=32KB linesize=64 ways=8) + Core L#5 (P#1) + PU L#5 (P#3) + L2Cache L#3 (size=6144KB linesize=64 ways=24) + L1dCache L#6 (size=32KB linesize=64 ways=8) + L1iCache L#6 (size=32KB linesize=64 ways=8) + Core L#6 (P#2) + PU L#6 (P#5) + L1dCache L#7 (size=32KB linesize=64 ways=8) + L1iCache L#7 (size=32KB linesize=64 ways=8) + Core L#7 (P#3) + PU L#7 (P#7) +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 4 L2Cache (type #5) + depth 3: 8 L1dCache (type #4) + depth 4: 8 L1iCache (type #9) + depth 5: 8 Core (type #2) + depth 6: 8 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f32afc5a111f5f514d85d35caad1def2d37588a4 GIT binary patch literal 10547 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s4c-heterogeneous.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s4c-heterogeneous.output new file mode 100644 index 0000000000..9d401e6c9e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s4c-heterogeneous.output @@ -0,0 +1,42 @@ +Machine (P#0 total=16772032KB DMIProductName="PowerEdge 2950" DMIProductVersion= DMIBoardVendor="Dell Inc." DMIBoardName=0NR282 DMIBoardVersion=A00 DMIBoardAssetTag= DMIChassisVendor="Dell Inc." DMIChassisType=23 DMIChassisVersion= DMIChassisAssetTag= DMIBIOSVendor="Dell Inc." DMIBIOSVersion=2.3.1 DMIBIOSDate=04/29/2008 DMISysVendor="Dell Inc." Backend=Linux) + NUMANode L#0 (P#0 local=16772032KB total=16772032KB) + Package L#0 (P#0 CPUModel="Intel(R) Xeon(R) CPU E5345 @ 2.33GHz") + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#0 (size=4096KB linesize=64 ways=16) + Core L#1 (P#2) + PU L#1 (P#2) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#2 (P#3) + PU L#2 (P#6) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=8) + Core L#3 (P#1) + PU L#3 (P#4) + Package L#1 (P#1 CPUModel="Intel(R) Xeon(R) CPU E5345 @ 2.33GHz") + L2Cache L#1 (size=4096KB linesize=64 ways=16) + Core L#4 (P#0) + PU L#4 (P#1) + Core L#5 (P#1) + PU L#5 (P#5) + L2Cache L#2 (size=4096KB linesize=64 ways=16) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=8) + Core L#6 (P#2) + PU L#6 (P#3) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=8) + Core L#7 (P#3) + PU L#7 (P#7) +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 3 L2Cache (type #5) + depth 3: 5 L1dCache (type #4) + depth 4: 5 L1iCache (type #9) + depth 5: 8 Core (type #2) + depth 6: 8 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s4c-heterogeneous.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-2s4c-heterogeneous.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..be5358502ee46b73649957dc64bd3635a2b627d5 GIT binary patch literal 4891 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-4c2t.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-4c2t.output new file mode 100644 index 0000000000..5e3751f27f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-4c2t.output @@ -0,0 +1,40 @@ +Machine (P#0 total=1038200KB Backend=Linux Architecture=x86_64) + Package L#0 (P#1 total=1038200KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=26 CPUModel="Genuine Intel(R) CPU @ 0000 @ 2.93GHz" CPUStepping=2) + NUMANode L#0 (P#0 local=1038200KB total=1038200KB) + L3Cache L#0 (size=8192KB linesize=64 ways=16) + L2Cache L#0 (size=256KB linesize=64 ways=8) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=4) + Core L#0 (P#0) + PU L#0 (P#0) + PU L#1 (P#4) + L2Cache L#1 (size=256KB linesize=64 ways=8) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=4) + Core L#1 (P#1) + PU L#2 (P#1) + PU L#3 (P#5) + L2Cache L#2 (size=256KB linesize=64 ways=8) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=4) + Core L#2 (P#2) + PU L#4 (P#2) + PU L#5 (P#6) + L2Cache L#3 (size=256KB linesize=64 ways=8) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=4) + Core L#3 (P#3) + PU L#6 (P#3) + PU L#7 (P#7) +depth 0: 1 Machine (type #0) + depth 1: 1 Package (type #1) + depth 2: 1 L3Cache (type #6) + depth 3: 4 L2Cache (type #5) + depth 4: 4 L1dCache (type #4) + depth 5: 4 L1iCache (type #9) + depth 6: 4 Core (type #2) + depth 7: 8 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +CPU kind #0 efficiency 0 cpuset 0x000000f1 + FrequencyMaxMHz = 2927 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-4c2t.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/8em64t-4c2t.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..419f024f28672066f55e82d931d472013f42eb2c GIT binary patch literal 18476 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 z�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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/96em64t-4n4d3ca2co.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/96em64t-4n4d3ca2co.output new file mode 100644 index 0000000000..5a95bf0e0d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/96em64t-4n4d3ca2co.output @@ -0,0 +1,490 @@ +Machine (P#0 total=528473984KB Backend=Linux) + Group0 L#0 (total=132101504KB) + NUMANode L#0 (P#0 local=132101504KB total=132101504KB) + Package L#0 (P#1 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#0 (size=16384KB linesize=64 ways=16) + L2Cache L#0 (size=3072KB linesize=64 ways=12) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#1 (P#4) + L2Cache L#1 (size=3072KB linesize=64 ways=12) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=8) + Core L#2 (P#2) + PU L#2 (P#8) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=8) + Core L#3 (P#3) + PU L#3 (P#12) + L2Cache L#2 (size=3072KB linesize=64 ways=12) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=8) + Core L#4 (P#4) + PU L#4 (P#16) + L1dCache L#5 (size=32KB linesize=64 ways=8) + L1iCache L#5 (size=32KB linesize=64 ways=8) + Core L#5 (P#5) + PU L#5 (P#20) + Package L#1 (P#0 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#1 (size=16384KB linesize=64 ways=16) + L2Cache L#3 (size=3072KB linesize=64 ways=12) + L1dCache L#6 (size=32KB linesize=64 ways=8) + L1iCache L#6 (size=32KB linesize=64 ways=8) + Core L#6 (P#0) + PU L#6 (P#1) + L1dCache L#7 (size=32KB linesize=64 ways=8) + L1iCache L#7 (size=32KB linesize=64 ways=8) + Core L#7 (P#1) + PU L#7 (P#5) + L2Cache L#4 (size=3072KB linesize=64 ways=12) + L1dCache L#8 (size=32KB linesize=64 ways=8) + L1iCache L#8 (size=32KB linesize=64 ways=8) + Core L#8 (P#2) + PU L#8 (P#9) + L1dCache L#9 (size=32KB linesize=64 ways=8) + L1iCache L#9 (size=32KB linesize=64 ways=8) + Core L#9 (P#3) + PU L#9 (P#13) + L2Cache L#5 (size=3072KB linesize=64 ways=12) + L1dCache L#10 (size=32KB linesize=64 ways=8) + L1iCache L#10 (size=32KB linesize=64 ways=8) + Core L#10 (P#4) + PU L#10 (P#17) + L1dCache L#11 (size=32KB linesize=64 ways=8) + L1iCache L#11 (size=32KB linesize=64 ways=8) + Core L#11 (P#5) + PU L#11 (P#21) + Package L#2 (P#2 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#2 (size=16384KB linesize=64 ways=16) + L2Cache L#6 (size=3072KB linesize=64 ways=12) + L1dCache L#12 (size=32KB linesize=64 ways=8) + L1iCache L#12 (size=32KB linesize=64 ways=8) + Core L#12 (P#0) + PU L#12 (P#2) + L1dCache L#13 (size=32KB linesize=64 ways=8) + L1iCache L#13 (size=32KB linesize=64 ways=8) + Core L#13 (P#1) + PU L#13 (P#6) + L2Cache L#7 (size=3072KB linesize=64 ways=12) + L1dCache L#14 (size=32KB linesize=64 ways=8) + L1iCache L#14 (size=32KB linesize=64 ways=8) + Core L#14 (P#2) + PU L#14 (P#10) + L1dCache L#15 (size=32KB linesize=64 ways=8) + L1iCache L#15 (size=32KB linesize=64 ways=8) + Core L#15 (P#3) + PU L#15 (P#14) + L2Cache L#8 (size=3072KB linesize=64 ways=12) + L1dCache L#16 (size=32KB linesize=64 ways=8) + L1iCache L#16 (size=32KB linesize=64 ways=8) + Core L#16 (P#4) + PU L#16 (P#18) + L1dCache L#17 (size=32KB linesize=64 ways=8) + L1iCache L#17 (size=32KB linesize=64 ways=8) + Core L#17 (P#5) + PU L#17 (P#22) + Package L#3 (P#3 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#3 (size=16384KB linesize=64 ways=16) + L2Cache L#9 (size=3072KB linesize=64 ways=12) + L1dCache L#18 (size=32KB linesize=64 ways=8) + L1iCache L#18 (size=32KB linesize=64 ways=8) + Core L#18 (P#0) + PU L#18 (P#3) + L1dCache L#19 (size=32KB linesize=64 ways=8) + L1iCache L#19 (size=32KB linesize=64 ways=8) + Core L#19 (P#1) + PU L#19 (P#7) + L2Cache L#10 (size=3072KB linesize=64 ways=12) + L1dCache L#20 (size=32KB linesize=64 ways=8) + L1iCache L#20 (size=32KB linesize=64 ways=8) + Core L#20 (P#2) + PU L#20 (P#11) + L1dCache L#21 (size=32KB linesize=64 ways=8) + L1iCache L#21 (size=32KB linesize=64 ways=8) + Core L#21 (P#3) + PU L#21 (P#15) + L2Cache L#11 (size=3072KB linesize=64 ways=12) + L1dCache L#22 (size=32KB linesize=64 ways=8) + L1iCache L#22 (size=32KB linesize=64 ways=8) + Core L#22 (P#4) + PU L#22 (P#19) + L1dCache L#23 (size=32KB linesize=64 ways=8) + L1iCache L#23 (size=32KB linesize=64 ways=8) + Core L#23 (P#5) + PU L#23 (P#23) + Group0 L#1 (total=132124160KB) + NUMANode L#1 (P#1 local=132124160KB total=132124160KB) + Package L#4 (P#4 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#4 (size=16384KB linesize=64 ways=16) + L2Cache L#12 (size=3072KB linesize=64 ways=12) + L1dCache L#24 (size=32KB linesize=64 ways=8) + L1iCache L#24 (size=32KB linesize=64 ways=8) + Core L#24 (P#0) + PU L#24 (P#24) + L1dCache L#25 (size=32KB linesize=64 ways=8) + L1iCache L#25 (size=32KB linesize=64 ways=8) + Core L#25 (P#1) + PU L#25 (P#28) + L2Cache L#13 (size=3072KB linesize=64 ways=12) + L1dCache L#26 (size=32KB linesize=64 ways=8) + L1iCache L#26 (size=32KB linesize=64 ways=8) + Core L#26 (P#2) + PU L#26 (P#32) + L1dCache L#27 (size=32KB linesize=64 ways=8) + L1iCache L#27 (size=32KB linesize=64 ways=8) + Core L#27 (P#3) + PU L#27 (P#36) + L2Cache L#14 (size=3072KB linesize=64 ways=12) + L1dCache L#28 (size=32KB linesize=64 ways=8) + L1iCache L#28 (size=32KB linesize=64 ways=8) + Core L#28 (P#4) + PU L#28 (P#40) + L1dCache L#29 (size=32KB linesize=64 ways=8) + L1iCache L#29 (size=32KB linesize=64 ways=8) + Core L#29 (P#5) + PU L#29 (P#44) + Package L#5 (P#5 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#5 (size=16384KB linesize=64 ways=16) + L2Cache L#15 (size=3072KB linesize=64 ways=12) + L1dCache L#30 (size=32KB linesize=64 ways=8) + L1iCache L#30 (size=32KB linesize=64 ways=8) + Core L#30 (P#0) + PU L#30 (P#25) + L1dCache L#31 (size=32KB linesize=64 ways=8) + L1iCache L#31 (size=32KB linesize=64 ways=8) + Core L#31 (P#1) + PU L#31 (P#29) + L2Cache L#16 (size=3072KB linesize=64 ways=12) + L1dCache L#32 (size=32KB linesize=64 ways=8) + L1iCache L#32 (size=32KB linesize=64 ways=8) + Core L#32 (P#2) + PU L#32 (P#33) + L1dCache L#33 (size=32KB linesize=64 ways=8) + L1iCache L#33 (size=32KB linesize=64 ways=8) + Core L#33 (P#3) + PU L#33 (P#37) + L2Cache L#17 (size=3072KB linesize=64 ways=12) + L1dCache L#34 (size=32KB linesize=64 ways=8) + L1iCache L#34 (size=32KB linesize=64 ways=8) + Core L#34 (P#4) + PU L#34 (P#41) + L1dCache L#35 (size=32KB linesize=64 ways=8) + L1iCache L#35 (size=32KB linesize=64 ways=8) + Core L#35 (P#5) + PU L#35 (P#45) + Package L#6 (P#6 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#6 (size=16384KB linesize=64 ways=16) + L2Cache L#18 (size=3072KB linesize=64 ways=12) + L1dCache L#36 (size=32KB linesize=64 ways=8) + L1iCache L#36 (size=32KB linesize=64 ways=8) + Core L#36 (P#0) + PU L#36 (P#26) + L1dCache L#37 (size=32KB linesize=64 ways=8) + L1iCache L#37 (size=32KB linesize=64 ways=8) + Core L#37 (P#1) + PU L#37 (P#30) + L2Cache L#19 (size=3072KB linesize=64 ways=12) + L1dCache L#38 (size=32KB linesize=64 ways=8) + L1iCache L#38 (size=32KB linesize=64 ways=8) + Core L#38 (P#2) + PU L#38 (P#34) + L1dCache L#39 (size=32KB linesize=64 ways=8) + L1iCache L#39 (size=32KB linesize=64 ways=8) + Core L#39 (P#3) + PU L#39 (P#38) + L2Cache L#20 (size=3072KB linesize=64 ways=12) + L1dCache L#40 (size=32KB linesize=64 ways=8) + L1iCache L#40 (size=32KB linesize=64 ways=8) + Core L#40 (P#4) + PU L#40 (P#42) + L1dCache L#41 (size=32KB linesize=64 ways=8) + L1iCache L#41 (size=32KB linesize=64 ways=8) + Core L#41 (P#5) + PU L#41 (P#46) + Package L#7 (P#7 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#7 (size=16384KB linesize=64 ways=16) + L2Cache L#21 (size=3072KB linesize=64 ways=12) + L1dCache L#42 (size=32KB linesize=64 ways=8) + L1iCache L#42 (size=32KB linesize=64 ways=8) + Core L#42 (P#0) + PU L#42 (P#27) + L1dCache L#43 (size=32KB linesize=64 ways=8) + L1iCache L#43 (size=32KB linesize=64 ways=8) + Core L#43 (P#1) + PU L#43 (P#31) + L2Cache L#22 (size=3072KB linesize=64 ways=12) + L1dCache L#44 (size=32KB linesize=64 ways=8) + L1iCache L#44 (size=32KB linesize=64 ways=8) + Core L#44 (P#2) + PU L#44 (P#35) + L1dCache L#45 (size=32KB linesize=64 ways=8) + L1iCache L#45 (size=32KB linesize=64 ways=8) + Core L#45 (P#3) + PU L#45 (P#39) + L2Cache L#23 (size=3072KB linesize=64 ways=12) + L1dCache L#46 (size=32KB linesize=64 ways=8) + L1iCache L#46 (size=32KB linesize=64 ways=8) + Core L#46 (P#4) + PU L#46 (P#43) + L1dCache L#47 (size=32KB linesize=64 ways=8) + L1iCache L#47 (size=32KB linesize=64 ways=8) + Core L#47 (P#5) + PU L#47 (P#47) + Group0 L#2 (total=132124160KB) + NUMANode L#2 (P#2 local=132124160KB total=132124160KB) + Package L#8 (P#8 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#8 (size=16384KB linesize=64 ways=16) + L2Cache L#24 (size=3072KB linesize=64 ways=12) + L1dCache L#48 (size=32KB linesize=64 ways=8) + L1iCache L#48 (size=32KB linesize=64 ways=8) + Core L#48 (P#0) + PU L#48 (P#48) + L1dCache L#49 (size=32KB linesize=64 ways=8) + L1iCache L#49 (size=32KB linesize=64 ways=8) + Core L#49 (P#1) + PU L#49 (P#52) + L2Cache L#25 (size=3072KB linesize=64 ways=12) + L1dCache L#50 (size=32KB linesize=64 ways=8) + L1iCache L#50 (size=32KB linesize=64 ways=8) + Core L#50 (P#2) + PU L#50 (P#56) + L1dCache L#51 (size=32KB linesize=64 ways=8) + L1iCache L#51 (size=32KB linesize=64 ways=8) + Core L#51 (P#3) + PU L#51 (P#60) + L2Cache L#26 (size=3072KB linesize=64 ways=12) + L1dCache L#52 (size=32KB linesize=64 ways=8) + L1iCache L#52 (size=32KB linesize=64 ways=8) + Core L#52 (P#4) + PU L#52 (P#64) + L1dCache L#53 (size=32KB linesize=64 ways=8) + L1iCache L#53 (size=32KB linesize=64 ways=8) + Core L#53 (P#5) + PU L#53 (P#68) + Package L#9 (P#9 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#9 (size=16384KB linesize=64 ways=16) + L2Cache L#27 (size=3072KB linesize=64 ways=12) + L1dCache L#54 (size=32KB linesize=64 ways=8) + L1iCache L#54 (size=32KB linesize=64 ways=8) + Core L#54 (P#0) + PU L#54 (P#49) + L1dCache L#55 (size=32KB linesize=64 ways=8) + L1iCache L#55 (size=32KB linesize=64 ways=8) + Core L#55 (P#1) + PU L#55 (P#53) + L2Cache L#28 (size=3072KB linesize=64 ways=12) + L1dCache L#56 (size=32KB linesize=64 ways=8) + L1iCache L#56 (size=32KB linesize=64 ways=8) + Core L#56 (P#2) + PU L#56 (P#57) + L1dCache L#57 (size=32KB linesize=64 ways=8) + L1iCache L#57 (size=32KB linesize=64 ways=8) + Core L#57 (P#3) + PU L#57 (P#61) + L2Cache L#29 (size=3072KB linesize=64 ways=12) + L1dCache L#58 (size=32KB linesize=64 ways=8) + L1iCache L#58 (size=32KB linesize=64 ways=8) + Core L#58 (P#4) + PU L#58 (P#65) + L1dCache L#59 (size=32KB linesize=64 ways=8) + L1iCache L#59 (size=32KB linesize=64 ways=8) + Core L#59 (P#5) + PU L#59 (P#69) + Package L#10 (P#10 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#10 (size=16384KB linesize=64 ways=16) + L2Cache L#30 (size=3072KB linesize=64 ways=12) + L1dCache L#60 (size=32KB linesize=64 ways=8) + L1iCache L#60 (size=32KB linesize=64 ways=8) + Core L#60 (P#0) + PU L#60 (P#50) + L1dCache L#61 (size=32KB linesize=64 ways=8) + L1iCache L#61 (size=32KB linesize=64 ways=8) + Core L#61 (P#1) + PU L#61 (P#54) + L2Cache L#31 (size=3072KB linesize=64 ways=12) + L1dCache L#62 (size=32KB linesize=64 ways=8) + L1iCache L#62 (size=32KB linesize=64 ways=8) + Core L#62 (P#2) + PU L#62 (P#58) + L1dCache L#63 (size=32KB linesize=64 ways=8) + L1iCache L#63 (size=32KB linesize=64 ways=8) + Core L#63 (P#3) + PU L#63 (P#62) + L2Cache L#32 (size=3072KB linesize=64 ways=12) + L1dCache L#64 (size=32KB linesize=64 ways=8) + L1iCache L#64 (size=32KB linesize=64 ways=8) + Core L#64 (P#4) + PU L#64 (P#66) + L1dCache L#65 (size=32KB linesize=64 ways=8) + L1iCache L#65 (size=32KB linesize=64 ways=8) + Core L#65 (P#5) + PU L#65 (P#70) + Package L#11 (P#11 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#11 (size=16384KB linesize=64 ways=16) + L2Cache L#33 (size=3072KB linesize=64 ways=12) + L1dCache L#66 (size=32KB linesize=64 ways=8) + L1iCache L#66 (size=32KB linesize=64 ways=8) + Core L#66 (P#0) + PU L#66 (P#51) + L1dCache L#67 (size=32KB linesize=64 ways=8) + L1iCache L#67 (size=32KB linesize=64 ways=8) + Core L#67 (P#1) + PU L#67 (P#55) + L2Cache L#34 (size=3072KB linesize=64 ways=12) + L1dCache L#68 (size=32KB linesize=64 ways=8) + L1iCache L#68 (size=32KB linesize=64 ways=8) + Core L#68 (P#2) + PU L#68 (P#59) + L1dCache L#69 (size=32KB linesize=64 ways=8) + L1iCache L#69 (size=32KB linesize=64 ways=8) + Core L#69 (P#3) + PU L#69 (P#63) + L2Cache L#35 (size=3072KB linesize=64 ways=12) + L1dCache L#70 (size=32KB linesize=64 ways=8) + L1iCache L#70 (size=32KB linesize=64 ways=8) + Core L#70 (P#4) + PU L#70 (P#67) + L1dCache L#71 (size=32KB linesize=64 ways=8) + L1iCache L#71 (size=32KB linesize=64 ways=8) + Core L#71 (P#5) + PU L#71 (P#71) + Group0 L#3 (total=132124160KB) + NUMANode L#3 (P#3 local=132124160KB total=132124160KB) + Package L#12 (P#12 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#12 (size=16384KB linesize=64 ways=16) + L2Cache L#36 (size=3072KB linesize=64 ways=12) + L1dCache L#72 (size=32KB linesize=64 ways=8) + L1iCache L#72 (size=32KB linesize=64 ways=8) + Core L#72 (P#0) + PU L#72 (P#72) + L1dCache L#73 (size=32KB linesize=64 ways=8) + L1iCache L#73 (size=32KB linesize=64 ways=8) + Core L#73 (P#1) + PU L#73 (P#76) + L2Cache L#37 (size=3072KB linesize=64 ways=12) + L1dCache L#74 (size=32KB linesize=64 ways=8) + L1iCache L#74 (size=32KB linesize=64 ways=8) + Core L#74 (P#2) + PU L#74 (P#80) + L1dCache L#75 (size=32KB linesize=64 ways=8) + L1iCache L#75 (size=32KB linesize=64 ways=8) + Core L#75 (P#3) + PU L#75 (P#84) + L2Cache L#38 (size=3072KB linesize=64 ways=12) + L1dCache L#76 (size=32KB linesize=64 ways=8) + L1iCache L#76 (size=32KB linesize=64 ways=8) + Core L#76 (P#4) + PU L#76 (P#88) + L1dCache L#77 (size=32KB linesize=64 ways=8) + L1iCache L#77 (size=32KB linesize=64 ways=8) + Core L#77 (P#5) + PU L#77 (P#92) + Package L#13 (P#13 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#13 (size=16384KB linesize=64 ways=16) + L2Cache L#39 (size=3072KB linesize=64 ways=12) + L1dCache L#78 (size=32KB linesize=64 ways=8) + L1iCache L#78 (size=32KB linesize=64 ways=8) + Core L#78 (P#0) + PU L#78 (P#73) + L1dCache L#79 (size=32KB linesize=64 ways=8) + L1iCache L#79 (size=32KB linesize=64 ways=8) + Core L#79 (P#1) + PU L#79 (P#77) + L2Cache L#40 (size=3072KB linesize=64 ways=12) + L1dCache L#80 (size=32KB linesize=64 ways=8) + L1iCache L#80 (size=32KB linesize=64 ways=8) + Core L#80 (P#2) + PU L#80 (P#81) + L1dCache L#81 (size=32KB linesize=64 ways=8) + L1iCache L#81 (size=32KB linesize=64 ways=8) + Core L#81 (P#3) + PU L#81 (P#85) + L2Cache L#41 (size=3072KB linesize=64 ways=12) + L1dCache L#82 (size=32KB linesize=64 ways=8) + L1iCache L#82 (size=32KB linesize=64 ways=8) + Core L#82 (P#4) + PU L#82 (P#89) + L1dCache L#83 (size=32KB linesize=64 ways=8) + L1iCache L#83 (size=32KB linesize=64 ways=8) + Core L#83 (P#5) + PU L#83 (P#93) + Package L#14 (P#14 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#14 (size=16384KB linesize=64 ways=16) + L2Cache L#42 (size=3072KB linesize=64 ways=12) + L1dCache L#84 (size=32KB linesize=64 ways=8) + L1iCache L#84 (size=32KB linesize=64 ways=8) + Core L#84 (P#0) + PU L#84 (P#74) + L1dCache L#85 (size=32KB linesize=64 ways=8) + L1iCache L#85 (size=32KB linesize=64 ways=8) + Core L#85 (P#1) + PU L#85 (P#78) + L2Cache L#43 (size=3072KB linesize=64 ways=12) + L1dCache L#86 (size=32KB linesize=64 ways=8) + L1iCache L#86 (size=32KB linesize=64 ways=8) + Core L#86 (P#2) + PU L#86 (P#82) + L1dCache L#87 (size=32KB linesize=64 ways=8) + L1iCache L#87 (size=32KB linesize=64 ways=8) + Core L#87 (P#3) + PU L#87 (P#86) + L2Cache L#44 (size=3072KB linesize=64 ways=12) + L1dCache L#88 (size=32KB linesize=64 ways=8) + L1iCache L#88 (size=32KB linesize=64 ways=8) + Core L#88 (P#4) + PU L#88 (P#90) + L1dCache L#89 (size=32KB linesize=64 ways=8) + L1iCache L#89 (size=32KB linesize=64 ways=8) + Core L#89 (P#5) + PU L#89 (P#94) + Package L#15 (P#15 CPUModel="Genuine Intel(R) CPU @ 2.66GHz") + L3Cache L#15 (size=16384KB linesize=64 ways=16) + L2Cache L#45 (size=3072KB linesize=64 ways=12) + L1dCache L#90 (size=32KB linesize=64 ways=8) + L1iCache L#90 (size=32KB linesize=64 ways=8) + Core L#90 (P#0) + PU L#90 (P#75) + L1dCache L#91 (size=32KB linesize=64 ways=8) + L1iCache L#91 (size=32KB linesize=64 ways=8) + Core L#91 (P#1) + PU L#91 (P#79) + L2Cache L#46 (size=3072KB linesize=64 ways=12) + L1dCache L#92 (size=32KB linesize=64 ways=8) + L1iCache L#92 (size=32KB linesize=64 ways=8) + Core L#92 (P#2) + PU L#92 (P#83) + L1dCache L#93 (size=32KB linesize=64 ways=8) + L1iCache L#93 (size=32KB linesize=64 ways=8) + Core L#93 (P#3) + PU L#93 (P#87) + L2Cache L#47 (size=3072KB linesize=64 ways=12) + L1dCache L#94 (size=32KB linesize=64 ways=8) + L1iCache L#94 (size=32KB linesize=64 ways=8) + Core L#94 (P#4) + PU L#94 (P#91) + L1dCache L#95 (size=32KB linesize=64 ways=8) + L1iCache L#95 (size=32KB linesize=64 ways=8) + Core L#95 (P#5) + PU L#95 (P#95) +depth 0: 1 Machine (type #0) + depth 1: 4 Group0 (type #12) + depth 2: 16 Package (type #1) + depth 3: 16 L3Cache (type #6) + depth 4: 48 L2Cache (type #5) + depth 5: 96 L1dCache (type #4) + depth 6: 96 L1iCache (type #9) + depth 7: 96 Core (type #2) + depth 8: 96 PU (type #3) +Special depth -3: 4 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 4 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 + 0 10 26 26 26 + 1 26 10 26 26 + 2 26 26 10 26 + 3 26 26 26 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/96em64t-4n4d3ca2co.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/96em64t-4n4d3ca2co.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3cdccb3aa95dbac8c04dadbf7cf4b785089150c7 GIT binary patch literal 17295 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 wll5gV;Q~(!^J}Wxmi)4h(Iap1tmaN=sB1n7 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/Makefile.am new file mode 100644 index 0000000000..0db4c668fd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/Makefile.am @@ -0,0 +1,183 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2011 Université Bordeaux +# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +# Add your expected output file here. +# By default, it shows the output of `lstopo - -v'. +sysfs_outputs = \ + 2amd64-2n.output \ + 2i386-2t-hugepagesizecount.xml.output \ + 2i386-2c-nohugepage.xml.output \ + 2ps3-2t.output \ + 4em64t-2c2t-ignore-reorder.output \ + 4ia64-4s.output \ + 4fake-4gr1nu1pu.output \ + 256ppc-8n8s4t.output \ + 32amd64-4s2n4c-cgroup2.output \ + 32amd64-4s2n4c-cgroup2.xml.output \ + 8amd64-4n2c.output \ + 8em64t-4c2t.output \ + 8em64t-2s2ca2c.output \ + 8em64t-2s2ca2c-buggynuma.output \ + 8em64t-2s4c-heterogeneous.output \ + 8ia64-2n2s2c.output \ + 8ia64-2s2c2t.output \ + 8ia64-4s2c.output \ + 16amd64-4n4c-cgroup-distance-merge.output \ + 16amd64-8n2c.output \ + 16amd64-8n2c-cpusets.output \ + 16amd64-8n2c-cpusets.xml.output \ + 16amd64-8n2c-cpusets_noadmin.output \ + 16em64t-4s2ca2c-cpusetreorder.output \ + 16em64t-4s2ca2c-cpusetreorder-merge.output \ + 16em64t-4s2c2t.output \ + 16em64t-4s2c2t-offlines.output \ + 16em64t-4s2c2t-offlines.xml.output \ + 16em64t-4s2c2t_ncaches.output \ + 16em64t-4s2c2t_merge.output \ + 16em64t-4s2c2t.xml.output \ + 16ia64-8n2s.output \ + 32em64t-2n8c+1mic.output \ + 32intel64-2p8co2t+8ve.output \ + 40intel64-2g2n4c+pci.output \ + 40intel64-4n10c+pci-conflicts.output \ + 48amd64-4d2n6c-sparse.output \ + 64amd64-4s2n4ca2co.output \ + 64fake-4n2s2ca2c2t.output \ + 64intel64-fakeKNL-A2A-cache.output \ + 64intel64-fakeKNL-SNC4-hybrid.output \ + 64intel64-fakeKNL-SNC4-hybrid-msc.output \ + 96em64t-4n4d3ca2co.output \ + 128ia64-17n4s2c.output \ + 128arm-2pa2n8cluster4co.output \ + 256ia64-64n2s2c.output \ + 2s390-2c.output \ + 20s390-2g6s4c.output \ + 1alpha.output \ + 2arm-2c.output \ + nvidiagpunumanodes.output \ + nvidiagpunumanodes.kept.output \ + fakememinitiators-1np2c+1npp+gi.output \ + fakecpuid1f-64intel64-2p4d2n2c2t.output \ + fakeheterocpunuma.output \ + offline-cpu0-node0.output + +if HWLOC_HAVE_32BITS_PCI_DOMAIN +sysfs_outputs += 2pa-pcidomain32bits.output +EXTRA_DIST = 2pa-pcidomain32bits-disabled.output +else +sysfs_outputs += 2pa-pcidomain32bits-disabled.output +EXTRA_DIST = 2pa-pcidomain32bits.output +endif + +# Each output `xyz.output' must have a corresponding tarball `xyz.tar.bz2' +# or a corresponding `xyz.source' specifying which tarball to use +sysfs_tarballs = \ + 2amd64-2n.tar.bz2 \ + 2i386-2t-hugepagesizecount.tar.bz2 \ + 2i386-2t-hugepagesizecount.xml.source \ + 2i386-2c-nohugepage.tar.bz2 \ + 2i386-2c-nohugepage.xml.source \ + 2ps3-2t.tar.bz2 \ + 4em64t-2c2t-ignore-reorder.tar.bz2 \ + 4ia64-4s.tar.bz2 \ + 4fake-4gr1nu1pu.tar.bz2 \ + 256ppc-8n8s4t.tar.bz2 \ + 32amd64-4s2n4c-cgroup2.tar.bz2 \ + 32amd64-4s2n4c-cgroup2.xml.source \ + 8amd64-4n2c.tar.bz2 \ + 8em64t-4c2t.tar.bz2 \ + 8em64t-2s2ca2c.tar.bz2 \ + 8em64t-2s2ca2c-buggynuma.tar.bz2 \ + 8em64t-2s4c-heterogeneous.tar.bz2 \ + 8ia64-2n2s2c.tar.bz2 \ + 8ia64-2s2c2t.tar.bz2 \ + 8ia64-4s2c.tar.bz2 \ + 16amd64-4n4c-cgroup-distance-merge.tar.bz2 \ + 16amd64-8n2c.tar.bz2 \ + 16amd64-8n2c-cpusets.tar.bz2 \ + 16amd64-8n2c-cpusets.xml.source \ + 16amd64-8n2c-cpusets_noadmin.source \ + 16em64t-4s2ca2c-cpusetreorder.tar.bz2 \ + 16em64t-4s2ca2c-cpusetreorder-merge.source \ + 16em64t-4s2c2t.tar.bz2 \ + 16em64t-4s2c2t-offlines.tar.bz2 \ + 16em64t-4s2c2t-offlines.xml.source \ + 16em64t-4s2c2t_merge.source \ + 16em64t-4s2c2t_ncaches.source \ + 16em64t-4s2c2t.xml.source \ + 16ia64-8n2s.tar.bz2 \ + 32em64t-2n8c+1mic.tar.bz2 \ + 32intel64-2p8co2t+8ve.tar.bz2 \ + 40intel64-2g2n4c+pci.tar.bz2 \ + 40intel64-4n10c+pci-conflicts.tar.bz2 \ + 48amd64-4d2n6c-sparse.tar.bz2 \ + 64amd64-4s2n4ca2co.tar.bz2 \ + 64fake-4n2s2ca2c2t.tar.bz2 \ + 64intel64-fakeKNL-A2A-cache.tar.bz2 \ + 64intel64-fakeKNL-SNC4-hybrid.tar.bz2 \ + 64intel64-fakeKNL-SNC4-hybrid-msc.source \ + 96em64t-4n4d3ca2co.tar.bz2 \ + 128ia64-17n4s2c.tar.bz2 \ + 128arm-2pa2n8cluster4co.tar.bz2 \ + 256ia64-64n2s2c.tar.bz2 \ + 2s390-2c.tar.bz2 \ + 20s390-2g6s4c.tar.bz2 \ + 1alpha.tar.bz2 \ + 2arm-2c.tar.bz2 \ + 2pa-pcidomain32bits.tar.bz2 \ + 2pa-pcidomain32bits-disabled.source \ + nvidiagpunumanodes.tar.bz2 \ + nvidiagpunumanodes.kept.source \ + fakememinitiators-1np2c+1npp+gi.tar.bz2 \ + fakecpuid1f-64intel64-2p4d2n2c2t.tar.bz2 \ + fakeheterocpunuma.tar.bz2 \ + offline-cpu0-node0.tar.bz2 + +# Each output `xyz.output' may have a corresponding exclude `xyz.exclude' +sysfs_excludes = + +# Each output `xyz.output' may have a corresponding `xyz.options' +# file modifying the behavior of lstopo +sysfs_options = \ + 2i386-2t-hugepagesizecount.xml.options \ + 2i386-2c-nohugepage.xml.options \ + 4em64t-2c2t-ignore-reorder.options \ + 16amd64-4n4c-cgroup-distance-merge.options \ + 16amd64-8n2c-cpusets.xml.options \ + 16amd64-8n2c-cpusets_noadmin.options \ + 16em64t-4s2ca2c-cpusetreorder-merge.options \ + 16em64t-4s2c2t-offlines.xml.options \ + 16em64t-4s2c2t_ncaches.options \ + 16em64t-4s2c2t_merge.options \ + 16em64t-4s2c2t.xml.options \ + 32amd64-4s2n4c-cgroup2.xml.options \ + 32em64t-2n8c+1mic.options \ + 40intel64-2g2n4c+pci.options \ + fakeheterocpunuma.options + +# Each output `xyz.output' may have a corresponding `xyz.env' +# modifying the environment of lstopo +sysfs_envs = \ + 40intel64-2g2n4c+pci.env \ + 40intel64-4n10c+pci-conflicts.env \ + 64intel64-fakeKNL-SNC4-hybrid-msc.env \ + nvidiagpunumanodes.kept.env \ + fakeheterocpunuma.env + +if HWLOC_HAVE_OPENAT +if HWLOC_HAVE_BUNZIPP +TESTS = $(sysfs_outputs) +endif HWLOC_HAVE_BUNZIPP +endif HWLOC_HAVE_OPENAT + +EXTRA_DIST += $(sysfs_outputs) $(sysfs_tarballs) $(sysfs_excludes) $(sysfs_options) $(sysfs_envs) + +LOG_COMPILER = $(builddir)/test-topology.sh + +SUBDIRS = . allowed gather diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/README b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/README new file mode 100644 index 0000000000..ce729ebfae --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/README @@ -0,0 +1,35 @@ +-*- text -*- + +This directory contains tarballs of Linux sysfs hierarchies collected on +various systems. Each tarball `xyz.tar.bz2' comes with the corresponding +`xyz.output', which gives the expected output of "lstopo -v -" for that +system. + +Together with the `HWLOC_FSROOT' environment variable, these are +used by `test-topology.sh' to check for any regression introduced in +hwloc detection logic. + +A new topology may be added by: +* running "hwloc-gather-topology" on the target system and saving the + tarball and output files here. +* if lstopo is not available on the target system, running "lstopo -v -" + on the extracted tarball to generate the corresponding `output' file + locally. +* adding the tarball and output files to Makefile.am so that they are + properly handled in "make check" and "make dist". + +When adding a XML-based output, make sure that the filename of the +tarball ends with .xml.tar.bz2 (so that test-topology may skip it +if XML support is disabled). + +If a `xyz.options' file is found, it will override the `lstopo' options +(`-v -' by default) for generating the output `xyz.output'. + +If the output and tarball names do not match, it is possible to specify +the actual tarball name in a `xyz.source' file. +If some files should be excluded when extracting the tarball, they may +be listed in a `xyz.exclude' file. For instance, to exclude `/sys/*/foo' +from the saved topology, you should add `*/sys/foo' to `xyz.exclude'. +These features are especially useful when the same tarball should be +used for different tests with different configurations and thus different +expected outputs, without having to save multiple copies of the tarball. diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/Makefile.am new file mode 100644 index 0000000000..5fead69181 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/Makefile.am @@ -0,0 +1,30 @@ +# Copyright © 2009-2017 Inria. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +tests_outputs = \ + test1.output + +tests_synthetics = \ + test1.synthetic + +tests_fsroots = \ + test1.fsroot.tar.bz2 + +tests_options = \ + test1.options + +tests_envs = + +if HWLOC_HAVE_OPENAT +if HWLOC_HAVE_BUNZIPP +TESTS = $(tests_outputs) +endif HWLOC_HAVE_BUNZIPP +endif HWLOC_HAVE_OPENAT + +EXTRA_DIST = $(tests_outputs) $(tests_synthetics) $(tests_fsroots) $(tests_options) $(tests_envs) + +LOG_COMPILER = $(builddir)/test-topology.sh diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test-topology.sh.in b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test-topology.sh.in new file mode 100644 index 0000000000..32c52c74f2 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test-topology.sh.in @@ -0,0 +1,156 @@ +#!@BASH@ +#-*-sh-*- + +# +# Copyright © 2009 CNRS +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2009-2011 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +# Check the conformance of `lstopo' for all the Linux sysfs +# hierarchies available here. Return true on success. + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +lstopo="$HWLOC_top_builddir/utils/lstopo/lstopo-no-graphics" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_THISSYSTEM=1 +export HWLOC_THISSYSTEM + +HWLOC_THISSYSTEM_ALLOWED_RESOURCES=1 +export HWLOC_THISSYSTEM_ALLOWED_RESOURCES + +HWLOC_DONT_ADD_VERSION_INFO=1 +export HWLOC_DONT_ADD_VERSION_INFO + +HWLOC_XML_EXPORT_SUPPORT=0 +export HWLOC_XML_EXPORT_SUPPORT + +actual_output="$1" + +# make sure we use default numeric formats (only XML outputs are dis-localized when supported) +LANG=C +LC_ALL=C +export LANG LC_ALL + +error() +{ + echo $@ 2>&1 +} + +# test_topology NAME TOPOLOGY-DIR +# +# Test the topology under TOPOLOGY-DIR. Return true on success. +test_topology () +{ + local input="$1" + local dir="$2" + local expected_output="$3" + local options="$4" + + local output="`mktemp`" + + export HWLOC_DEBUG_CHECK=1 + + opts="-v -" + [ -r "$options" ] && opts=`cat $options` + + input=$(cat $input) + inputformat=synthetic + + if ! HWLOC_FSROOT="$dir" "$lstopo" --if $inputformat -i "$input" $opts \ + > "$output" + then + result=1 + else + if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ] + then + @DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ "$expected_output" "$output" + result=$? + else + if ! @DIFF@ "$expected_output" "$output" >/dev/null + then + cp -f "$output" "$expected_output" + echo "Updated $expected_output" + fi + result=0 + fi + fi + + rm "$output" + + return $result +} + +# test_eligible TOPOLOGY-DIR +# +# Return true if the topology under TOPOLOGY-DIR is eligible for +# testing with the current flavor. +test_eligible() +{ + local dir="$1" + local output="$2" + + [ -d "$dir" -a -f "$output" ] +} + + +if [ ! -x "$lstopo" ] +then + error "Could not find executable file \`$lstopo'." + exit 1 +fi + +topology="${actual_output%.output}" +if [ "$topology" = "$actual_output" ] ; +then + error "Input file \`$1' should end with .output" + exit 1 +fi + +actual_options="$topology".options + +actual_input="$topology".synthetic + +# if there's a .source file, use the tarball name it contains instead of $topology +if [ -f "$topology".source ] ; then + actual_fsroot="$HWLOC_top_srcdir"/tests/hwloc/linux/allowed/`cat "$topology".fsroot.source` +else + actual_fsroot="$topology".fsroot.tar.bz2 +fi + +# if there's a .env file, source it +if [ -f "$topology".env ] ; then + . "$topology".env +fi + +result=1 + +dir="`mktemp -d`" + +if ! ( bunzip2 -c "$actual_fsroot" | ( cd "$dir" && tar xf - $tar_options ) ) +then + error "failed to extract topology \`$topology'" +else + actual_dir="`echo "$dir"/*`" + + if test_eligible "$actual_dir" "$actual_output" + then + test_count="`expr $test_count + 1`" + + test_topology "$actual_input" "$actual_dir" "$actual_output" "$actual_options" + result=$? + else + # Skip this test. + result=77 + fi +fi + +rm -rf "$dir" + +exit $result diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.fsroot.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.fsroot.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f94feda1c44094e72f8778c96baf2ca49e6ed436 GIT binary patch literal 359 zcmV-t0hsIV4(f|T{e}%)40sue<|A81`hyZ`5-=F{l01!baFae6m zuo6Kkdm%Lkq|g8j06jnnB8lYy00TfhKmY)#NQttZp!AsmpfH*Z7>1ifdKmhw5>6s?z9dBidx+ZsIykkN zO>zZ&JiK&?m_%x0eI_0%iZB?+vBpJesuAU$ne=JZhgYstlF}%O5!{a4$m=i4$cma) zqTN(r#iF!@giST$%O<9}D3K9V48^TbxbLcvv)m%n#4F%b91%z%mgABqA%Tf3>j?_q zTtTNJS=>W3!!ROo3dn{LAszxs(+Nv?w!~E?#M<~pq5~w1YDVMnUYWOcO+AV2@Um; F%^=$Nn#uqG literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.options b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.options new file mode 100644 index 0000000000..cdc6d70678 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.options @@ -0,0 +1 @@ +-v -.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.output new file mode 100644 index 0000000000..fc81373124 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.output @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.synthetic b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.synthetic new file mode 100644 index 0000000000..6ec00fd3ca --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/allowed/test1.synthetic @@ -0,0 +1 @@ +numa:4 core:2 pu:2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakecpuid1f-64intel64-2p4d2n2c2t.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakecpuid1f-64intel64-2p4d2n2c2t.output new file mode 100644 index 0000000000..f7867d68c6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakecpuid1f-64intel64-2p4d2n2c2t.output @@ -0,0 +1,339 @@ +Machine (P#0 total=4025476KB DMIProductName="Standard PC (i440FX + PIIX, 1996)" DMIProductVersion=pc-i440fx-3.1 DMIChassisVendor=QEMU DMIChassisType=1 DMIChassisVersion=pc-i440fx-3.1 DMIChassisAssetTag= DMIBIOSVendor=SeaBIOS DMIBIOSVersion=1.12.0-1 DMIBIOSDate=04/01/2014 DMISysVendor=QEMU Backend=Linux LinuxCgroup=/ OSName=Linux OSRelease=5.0.0-rc7 OSVersion="#1 SMP Tue Feb 26 08:48:46 CET 2019" HostName=debian Architecture=x86_64) + Package L#0 (P#0 total=1028812KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=6 CPUModel="QEMU Virtual CPU version 2.5+" CPUStepping=3) + Die L#0 (P#0 total=514156KB) + L3Cache L#0 (P#0 total=514156KB size=16384KB linesize=64 ways=16) + Group0 L#0 (total=256828KB) + NUMANode L#0 (P#0 local=256828KB total=256828KB) + L2Cache L#0 (P#0 size=4096KB linesize=64 ways=16) + Core L#0 (P#0) + L1dCache L#0 (P#0 size=32KB linesize=64 ways=8) + L1iCache L#0 (P#0 size=32KB linesize=64 ways=8) + PU L#0 (P#0) + L1dCache L#1 (P#1 size=32KB linesize=64 ways=8) + L1iCache L#1 (P#1 size=32KB linesize=64 ways=8) + PU L#1 (P#1) + L2Cache L#1 (P#1 size=4096KB linesize=64 ways=16) + Core L#1 (P#1) + L1dCache L#2 (P#2 size=32KB linesize=64 ways=8) + L1iCache L#2 (P#2 size=32KB linesize=64 ways=8) + PU L#2 (P#2) + L1dCache L#3 (P#3 size=32KB linesize=64 ways=8) + L1iCache L#3 (P#3 size=32KB linesize=64 ways=8) + PU L#3 (P#3) + Group0 L#1 (total=257328KB) + NUMANode L#1 (P#1 local=257328KB total=257328KB) + L2Cache L#2 (P#2 size=4096KB linesize=64 ways=16) + Core L#2 (P#2) + L1dCache L#4 (P#4 size=32KB linesize=64 ways=8) + L1iCache L#4 (P#4 size=32KB linesize=64 ways=8) + PU L#4 (P#4) + L1dCache L#5 (P#5 size=32KB linesize=64 ways=8) + L1iCache L#5 (P#5 size=32KB linesize=64 ways=8) + PU L#5 (P#5) + L2Cache L#3 (P#3 size=4096KB linesize=64 ways=16) + Core L#3 (P#3) + L1dCache L#6 (P#6 size=32KB linesize=64 ways=8) + L1iCache L#6 (P#6 size=32KB linesize=64 ways=8) + PU L#6 (P#6) + L1dCache L#7 (P#7 size=32KB linesize=64 ways=8) + L1iCache L#7 (P#7 size=32KB linesize=64 ways=8) + PU L#7 (P#7) + Die L#1 (P#1 total=514656KB) + L3Cache L#1 (P#1 total=514656KB size=16384KB linesize=64 ways=16) + Group0 L#2 (total=257328KB) + NUMANode L#2 (P#2 local=257328KB total=257328KB) + L2Cache L#4 (P#4 size=4096KB linesize=64 ways=16) + Core L#4 (P#0) + L1dCache L#8 (P#8 size=32KB linesize=64 ways=8) + L1iCache L#8 (P#8 size=32KB linesize=64 ways=8) + PU L#8 (P#8) + L1dCache L#9 (P#9 size=32KB linesize=64 ways=8) + L1iCache L#9 (P#9 size=32KB linesize=64 ways=8) + PU L#9 (P#9) + L2Cache L#5 (P#5 size=4096KB linesize=64 ways=16) + Core L#5 (P#1) + L1dCache L#10 (P#10 size=32KB linesize=64 ways=8) + L1iCache L#10 (P#10 size=32KB linesize=64 ways=8) + PU L#10 (P#10) + L1dCache L#11 (P#11 size=32KB linesize=64 ways=8) + L1iCache L#11 (P#11 size=32KB linesize=64 ways=8) + PU L#11 (P#11) + Group0 L#3 (total=257328KB) + NUMANode L#3 (P#3 local=257328KB total=257328KB) + L2Cache L#6 (P#6 size=4096KB linesize=64 ways=16) + Core L#6 (P#2) + L1dCache L#12 (P#12 size=32KB linesize=64 ways=8) + L1iCache L#12 (P#12 size=32KB linesize=64 ways=8) + PU L#12 (P#12) + L1dCache L#13 (P#13 size=32KB linesize=64 ways=8) + L1iCache L#13 (P#13 size=32KB linesize=64 ways=8) + PU L#13 (P#13) + L2Cache L#7 (P#7 size=4096KB linesize=64 ways=16) + Core L#7 (P#3) + L1dCache L#14 (P#14 size=32KB linesize=64 ways=8) + L1iCache L#14 (P#14 size=32KB linesize=64 ways=8) + PU L#14 (P#14) + L1dCache L#15 (P#15 size=32KB linesize=64 ways=8) + L1iCache L#15 (P#15 size=32KB linesize=64 ways=8) + PU L#15 (P#15) + Package L#1 (P#1 total=1004832KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=6 CPUModel="QEMU Virtual CPU version 2.5+" CPUStepping=3) + Die L#2 (P#0 total=514656KB) + L3Cache L#2 (P#2 total=514656KB size=16384KB linesize=64 ways=16) + Group0 L#4 (total=257328KB) + NUMANode L#4 (P#4 local=257328KB total=257328KB) + L2Cache L#8 (P#8 size=4096KB linesize=64 ways=16) + Core L#8 (P#0) + L1dCache L#16 (P#16 size=32KB linesize=64 ways=8) + L1iCache L#16 (P#16 size=32KB linesize=64 ways=8) + PU L#16 (P#16) + L1dCache L#17 (P#17 size=32KB linesize=64 ways=8) + L1iCache L#17 (P#17 size=32KB linesize=64 ways=8) + PU L#17 (P#17) + L2Cache L#9 (P#9 size=4096KB linesize=64 ways=16) + Core L#9 (P#1) + L1dCache L#18 (P#18 size=32KB linesize=64 ways=8) + L1iCache L#18 (P#18 size=32KB linesize=64 ways=8) + PU L#18 (P#18) + L1dCache L#19 (P#19 size=32KB linesize=64 ways=8) + L1iCache L#19 (P#19 size=32KB linesize=64 ways=8) + PU L#19 (P#19) + Group0 L#5 (total=257328KB) + NUMANode L#5 (P#5 local=257328KB total=257328KB) + L2Cache L#10 (P#10 size=4096KB linesize=64 ways=16) + Core L#10 (P#2) + L1dCache L#20 (P#20 size=32KB linesize=64 ways=8) + L1iCache L#20 (P#20 size=32KB linesize=64 ways=8) + PU L#20 (P#20) + L1dCache L#21 (P#21 size=32KB linesize=64 ways=8) + L1iCache L#21 (P#21 size=32KB linesize=64 ways=8) + PU L#21 (P#21) + L2Cache L#11 (P#11 size=4096KB linesize=64 ways=16) + Core L#11 (P#3) + L1dCache L#22 (P#22 size=32KB linesize=64 ways=8) + L1iCache L#22 (P#22 size=32KB linesize=64 ways=8) + PU L#22 (P#22) + L1dCache L#23 (P#23 size=32KB linesize=64 ways=8) + L1iCache L#23 (P#23 size=32KB linesize=64 ways=8) + PU L#23 (P#23) + Die L#3 (P#1 total=490176KB) + L3Cache L#3 (P#3 total=490176KB size=16384KB linesize=64 ways=16) + Group0 L#6 (total=257328KB) + NUMANode L#6 (P#6 local=257328KB total=257328KB) + L2Cache L#12 (P#12 size=4096KB linesize=64 ways=16) + Core L#12 (P#0) + L1dCache L#24 (P#24 size=32KB linesize=64 ways=8) + L1iCache L#24 (P#24 size=32KB linesize=64 ways=8) + PU L#24 (P#24) + L1dCache L#25 (P#25 size=32KB linesize=64 ways=8) + L1iCache L#25 (P#25 size=32KB linesize=64 ways=8) + PU L#25 (P#25) + L2Cache L#13 (P#13 size=4096KB linesize=64 ways=16) + Core L#13 (P#1) + L1dCache L#26 (P#26 size=32KB linesize=64 ways=8) + L1iCache L#26 (P#26 size=32KB linesize=64 ways=8) + PU L#26 (P#26) + L1dCache L#27 (P#27 size=32KB linesize=64 ways=8) + L1iCache L#27 (P#27 size=32KB linesize=64 ways=8) + PU L#27 (P#27) + Group0 L#7 (total=232848KB) + NUMANode L#7 (P#7 local=232848KB total=232848KB) + L2Cache L#14 (P#14 size=4096KB linesize=64 ways=16) + Core L#14 (P#2) + L1dCache L#28 (P#28 size=32KB linesize=64 ways=8) + L1iCache L#28 (P#28 size=32KB linesize=64 ways=8) + PU L#28 (P#28) + L1dCache L#29 (P#29 size=32KB linesize=64 ways=8) + L1iCache L#29 (P#29 size=32KB linesize=64 ways=8) + PU L#29 (P#29) + L2Cache L#15 (P#15 size=4096KB linesize=64 ways=16) + Core L#15 (P#3) + L1dCache L#30 (P#30 size=32KB linesize=64 ways=8) + L1iCache L#30 (P#30 size=32KB linesize=64 ways=8) + PU L#30 (P#30) + L1dCache L#31 (P#31 size=32KB linesize=64 ways=8) + L1iCache L#31 (P#31 size=32KB linesize=64 ways=8) + PU L#31 (P#31) + Package L#2 (P#2 total=963512KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=6 CPUModel="QEMU Virtual CPU version 2.5+" CPUStepping=3) + Die L#4 (P#0 total=514656KB) + L3Cache L#4 (P#4 total=514656KB size=16384KB linesize=64 ways=16) + Group0 L#8 (total=257328KB) + NUMANode L#8 (P#8 local=257328KB total=257328KB) + L2Cache L#16 (P#16 size=4096KB linesize=64 ways=16) + Core L#16 (P#0) + L1dCache L#32 (P#32 size=32KB linesize=64 ways=8) + L1iCache L#32 (P#32 size=32KB linesize=64 ways=8) + PU L#32 (P#32) + L1dCache L#33 (P#33 size=32KB linesize=64 ways=8) + L1iCache L#33 (P#33 size=32KB linesize=64 ways=8) + PU L#33 (P#33) + L2Cache L#17 (P#17 size=4096KB linesize=64 ways=16) + Core L#17 (P#1) + L1dCache L#34 (P#34 size=32KB linesize=64 ways=8) + L1iCache L#34 (P#34 size=32KB linesize=64 ways=8) + PU L#34 (P#34) + L1dCache L#35 (P#35 size=32KB linesize=64 ways=8) + L1iCache L#35 (P#35 size=32KB linesize=64 ways=8) + PU L#35 (P#35) + Group0 L#9 (total=257328KB) + NUMANode L#9 (P#9 local=257328KB total=257328KB) + L2Cache L#18 (P#18 size=4096KB linesize=64 ways=16) + Core L#18 (P#2) + L1dCache L#36 (P#36 size=32KB linesize=64 ways=8) + L1iCache L#36 (P#36 size=32KB linesize=64 ways=8) + PU L#36 (P#36) + L1dCache L#37 (P#37 size=32KB linesize=64 ways=8) + L1iCache L#37 (P#37 size=32KB linesize=64 ways=8) + PU L#37 (P#37) + L2Cache L#19 (P#19 size=4096KB linesize=64 ways=16) + Core L#19 (P#3) + L1dCache L#38 (P#38 size=32KB linesize=64 ways=8) + L1iCache L#38 (P#38 size=32KB linesize=64 ways=8) + PU L#38 (P#38) + L1dCache L#39 (P#39 size=32KB linesize=64 ways=8) + L1iCache L#39 (P#39 size=32KB linesize=64 ways=8) + PU L#39 (P#39) + Die L#5 (P#1 total=448856KB) + L3Cache L#5 (P#5 total=448856KB size=16384KB linesize=64 ways=16) + Group0 L#10 (total=257328KB) + NUMANode L#10 (P#10 local=257328KB total=257328KB) + L2Cache L#20 (P#20 size=4096KB linesize=64 ways=16) + Core L#20 (P#0) + L1dCache L#40 (P#40 size=32KB linesize=64 ways=8) + L1iCache L#40 (P#40 size=32KB linesize=64 ways=8) + PU L#40 (P#40) + L1dCache L#41 (P#41 size=32KB linesize=64 ways=8) + L1iCache L#41 (P#41 size=32KB linesize=64 ways=8) + PU L#41 (P#41) + L2Cache L#21 (P#21 size=4096KB linesize=64 ways=16) + Core L#21 (P#1) + L1dCache L#42 (P#42 size=32KB linesize=64 ways=8) + L1iCache L#42 (P#42 size=32KB linesize=64 ways=8) + PU L#42 (P#42) + L1dCache L#43 (P#43 size=32KB linesize=64 ways=8) + L1iCache L#43 (P#43 size=32KB linesize=64 ways=8) + PU L#43 (P#43) + Group0 L#11 (total=191528KB) + NUMANode L#11 (P#11 local=191528KB total=191528KB) + L2Cache L#22 (P#22 size=4096KB linesize=64 ways=16) + Core L#22 (P#2) + L1dCache L#44 (P#44 size=32KB linesize=64 ways=8) + L1iCache L#44 (P#44 size=32KB linesize=64 ways=8) + PU L#44 (P#44) + L1dCache L#45 (P#45 size=32KB linesize=64 ways=8) + L1iCache L#45 (P#45 size=32KB linesize=64 ways=8) + PU L#45 (P#45) + L2Cache L#23 (P#23 size=4096KB linesize=64 ways=16) + Core L#23 (P#3) + L1dCache L#46 (P#46 size=32KB linesize=64 ways=8) + L1iCache L#46 (P#46 size=32KB linesize=64 ways=8) + PU L#46 (P#46) + L1dCache L#47 (P#47 size=32KB linesize=64 ways=8) + L1iCache L#47 (P#47 size=32KB linesize=64 ways=8) + PU L#47 (P#47) + Package L#3 (P#3 total=1028320KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=6 CPUModel="QEMU Virtual CPU version 2.5+" CPUStepping=3) + Die L#6 (P#0 total=514656KB) + L3Cache L#6 (P#6 total=514656KB size=16384KB linesize=64 ways=16) + Group0 L#12 (total=257328KB) + NUMANode L#12 (P#12 local=257328KB total=257328KB) + L2Cache L#24 (P#24 size=4096KB linesize=64 ways=16) + Core L#24 (P#0) + L1dCache L#48 (P#48 size=32KB linesize=64 ways=8) + L1iCache L#48 (P#48 size=32KB linesize=64 ways=8) + PU L#48 (P#48) + L1dCache L#49 (P#49 size=32KB linesize=64 ways=8) + L1iCache L#49 (P#49 size=32KB linesize=64 ways=8) + PU L#49 (P#49) + L2Cache L#25 (P#25 size=4096KB linesize=64 ways=16) + Core L#25 (P#1) + L1dCache L#50 (P#50 size=32KB linesize=64 ways=8) + L1iCache L#50 (P#50 size=32KB linesize=64 ways=8) + PU L#50 (P#50) + L1dCache L#51 (P#51 size=32KB linesize=64 ways=8) + L1iCache L#51 (P#51 size=32KB linesize=64 ways=8) + PU L#51 (P#51) + Group0 L#13 (total=257328KB) + NUMANode L#13 (P#13 local=257328KB total=257328KB) + L2Cache L#26 (P#26 size=4096KB linesize=64 ways=16) + Core L#26 (P#2) + L1dCache L#52 (P#52 size=32KB linesize=64 ways=8) + L1iCache L#52 (P#52 size=32KB linesize=64 ways=8) + PU L#52 (P#52) + L1dCache L#53 (P#53 size=32KB linesize=64 ways=8) + L1iCache L#53 (P#53 size=32KB linesize=64 ways=8) + PU L#53 (P#53) + L2Cache L#27 (P#27 size=4096KB linesize=64 ways=16) + Core L#27 (P#3) + L1dCache L#54 (P#54 size=32KB linesize=64 ways=8) + L1iCache L#54 (P#54 size=32KB linesize=64 ways=8) + PU L#54 (P#54) + L1dCache L#55 (P#55 size=32KB linesize=64 ways=8) + L1iCache L#55 (P#55 size=32KB linesize=64 ways=8) + PU L#55 (P#55) + Die L#7 (P#1 total=513664KB) + L3Cache L#7 (P#7 total=513664KB size=16384KB linesize=64 ways=16) + Group0 L#14 (total=257328KB) + NUMANode L#14 (P#14 local=257328KB total=257328KB) + L2Cache L#28 (P#28 size=4096KB linesize=64 ways=16) + Core L#28 (P#0) + L1dCache L#56 (P#56 size=32KB linesize=64 ways=8) + L1iCache L#56 (P#56 size=32KB linesize=64 ways=8) + PU L#56 (P#56) + L1dCache L#57 (P#57 size=32KB linesize=64 ways=8) + L1iCache L#57 (P#57 size=32KB linesize=64 ways=8) + PU L#57 (P#57) + L2Cache L#29 (P#29 size=4096KB linesize=64 ways=16) + Core L#29 (P#1) + L1dCache L#58 (P#58 size=32KB linesize=64 ways=8) + L1iCache L#58 (P#58 size=32KB linesize=64 ways=8) + PU L#58 (P#58) + L1dCache L#59 (P#59 size=32KB linesize=64 ways=8) + L1iCache L#59 (P#59 size=32KB linesize=64 ways=8) + PU L#59 (P#59) + Group0 L#15 (total=256336KB) + NUMANode L#15 (P#15 local=256336KB total=256336KB) + L2Cache L#30 (P#30 size=4096KB linesize=64 ways=16) + Core L#30 (P#2) + L1dCache L#60 (P#60 size=32KB linesize=64 ways=8) + L1iCache L#60 (P#60 size=32KB linesize=64 ways=8) + PU L#60 (P#60) + L1dCache L#61 (P#61 size=32KB linesize=64 ways=8) + L1iCache L#61 (P#61 size=32KB linesize=64 ways=8) + PU L#61 (P#61) + L2Cache L#31 (P#31 size=4096KB linesize=64 ways=16) + Core L#31 (P#3) + L1dCache L#62 (P#62 size=32KB linesize=64 ways=8) + L1iCache L#62 (P#62 size=32KB linesize=64 ways=8) + PU L#62 (P#62) + L1dCache L#63 (P#63 size=32KB linesize=64 ways=8) + L1iCache L#63 (P#63 size=32KB linesize=64 ways=8) + PU L#63 (P#63) +depth 0: 1 Machine (type #0) + depth 1: 4 Package (type #1) + depth 2: 8 Die (type #19) + depth 3: 8 L3Cache (type #6) + depth 4: 16 Group0 (type #12) + depth 5: 32 L2Cache (type #5) + depth 6: 32 Core (type #2) + depth 7: 64 L1dCache (type #4) + depth 8: 64 L1iCache (type #9) + depth 9: 64 PU (type #3) +Special depth -3: 16 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 16 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 0 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 + 1 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 + 2 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 20 + 3 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 20 + 4 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 20 + 5 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 20 + 6 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 20 + 7 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 20 + 8 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 20 + 9 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 20 + 10 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 20 + 11 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 20 + 12 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 20 + 13 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 20 + 14 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 20 + 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakecpuid1f-64intel64-2p4d2n2c2t.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakecpuid1f-64intel64-2p4d2n2c2t.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e8b74b1c531c246c5d5ec8510157a4fce6019fac GIT binary patch literal 52970 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 Nv(BJE*O-=9{|mNG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 4 5 + 10 20 30 40 40 50 20 10 30 40 + 40 50 30 30 10 40 40 50 40 40 + 50 10 20 30 40 40 50 20 10 30 + 40 40 50 30 30 10 + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakeheterocpunuma.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakeheterocpunuma.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5f6074a9af60ef082304241f42e094f8c8c2b8ca GIT binary patch literal 2191 zcmV;A2ypj8T4*^jL0KkKS+2Vl-~c^%e~15&13Y_h|M(Cy1OWf<|8M{V00;mG7IBJs*m)3s*^){i7;pr69{26G&IP_4F&|J zjT)&+8ZbX|eirU~kLO{nzL(?_TS)cs2P zNeoZ9UwW}IKh;>QOihdLY+tc`D*M(Y!oa=-Q}YUVBtIIV?g+qPOqBH!sH*mmRZ&27 z2r7WDZ`}8Mi5~aAJV^;A^6L@DcTSVLyHxJiA8qWDapaO6-1ghPd(tT-hXx7`UOgd~zlcXCNLP>nZsNhCU2xg?SjN!c%(Z&u%5c5dX{>5^obCP|WG z+iv7Hi78H!InHyP(sp8Jc<$$(+^Je5F<~Lts&*9XnT5(K1zJqHuL&x~@MTh?Ht0DA zCXz@zWJ`1_Lap`{O(d06Nd_tlDwRuuOyyvf3Z$qYUe>UZ=~ZmZ%sW-`ojbEKXqis9 zHYO8!mhG+EX_~V$8LZ6C;?Q7V!Iv4BUCRr(bxv7@Q!rB^hrp22MI_2bmL(6-GQQk; zRv6k9CXP-RUP)sW*aH?k%rU<%-~a#s003)}x1_8l*|OCzFSu|Aba#xcP;iFftlK3} zy%LA-Brv~H*;M(RCS{pfk)cg#ckADM{x6AkQoeD0D)oLEPTjnB&d%JJc%;&4IC0~~ z1%Lw=-|e5S{dkg1ktCZnGbUz~l4fh&?@QA3z3+R0U;qawP@n+r1%NA8tt(2>wWvFR zU<%diO478gY5-UOGty0yCL915W>T4%nbBmMAiV|cq85sJ|kR&n{8;;HCCZ( zK(tp@(beXagDhHBF^pz}hda)pbd^!X)xG<-qgiVz+WRKu^Fd`QDI`^zPhSpSU;qFF zazFq84BE+CC92J&l4{ho(YjxV?>Lbhj-78(Pdv_dI4^8skyV2vlX{bTw@hvT0053i z0Bc&-wXUzUE}dDKaGkwXWN=u0s~!7xQsvb+@8v-0!g3r)H&A)y*tg(IdaIklY} zCfo&$^lMz5$3)*5j^T3NIZ1Mxo58C1jpNgF0tdp7iRRb0FWV7MmA4 zYo`7soT&(o|djw;~^T$pPI)j_*F3Y>I2tqro#F9svnjV2cfm)hKu>mGk zUk$jWH+z&&oztkXdX-L)Qrk^)p_Q)Im~g7N3IvKprmEsV~!QdSt@B$Uf88ON0r<9uhHbD(-IQ%vKX_1_BhQadu~ z)0tG;wk|l~)~#urw`*qwo1xM*){FQ zXa%a)0MAopq>>#MpK+LGEa0;O!LC`D-m`5RLJ)){OsaWmSbh9y;^M4tXaiVpG%atD zP8nt_t>iM=HKt)BL=2^%QZ~N@ReR-L2{A4>@DRN5**e|GrOgV{A;_%Epr#aph5`zz z-kPObU;qKD8pCz(Me(%KRMeESMy6LgZMw`D#gg9lzB4n8YaI%v^_iK@cq-nsTW=1V z233KFjnGwO%7C+JcV#k6*>Lfn^z7J=?@N|5KL3S7K zT7*AnUP?snNN_F!;9IG2QXaMLseaLau)oMhypZ<9MCtzItu*Qs@ig5rX;!^a&5hBsvA5SLGx=QGBBQVIPbk z+%L=|K9%Mz1@o__Z2Bs&rt2KCBDh+e@~Pc%c?EC_P` R!jgaZyOJrwgoSn3w*UbK6R`jQ literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakememinitiators-1np2c+1npp+gi.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakememinitiators-1np2c+1npp+gi.output new file mode 100644 index 0000000000..cab36a174b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakememinitiators-1np2c+1npp+gi.output @@ -0,0 +1,58 @@ +Machine (P#0 total=1951314696KB Backend=Linux LinuxCgroup=/) + Package L#0 (P#0 total=974581080KB CPUModel="Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz") + NUMANode L#2 (P#7 local=778043392KB total=778043392KB DAXDevice=dax0.0) + Group0 L#0 (total=97447340KB) + NUMANode L#0 (P#5 local=97447340KB total=97447340KB) + Core L#0 (P#0) + PU L#0 (P#0) + Core L#1 (P#0) + PU L#1 (P#1) + Group0 L#1 (total=99090348KB) + NUMANode L#1 (P#6 local=99090348KB total=99090348KB) + Core L#2 (P#0) + PU L#2 (P#4) + Core L#3 (P#0) + PU L#3 (P#5) + Package L#1 (P#1 total=976733616KB CPUModel="Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz") + NUMANode L#5 (P#10 local=780140544KB total=780140544KB DAXDevice=dax1.0) + Group0 L#2 (total=97542052KB) + NUMANode L#3 (P#8 local=97542052KB total=97542052KB) + Core L#4 (P#1) + PU L#4 (P#2) + Core L#5 (P#1) + PU L#5 (P#3) + Group0 L#3 (total=99051020KB) + NUMANode L#4 (P#9 local=99051020KB total=99051020KB) + Core L#6 (P#1) + PU L#6 (P#6) + Core L#7 (P#1) + PU L#7 (P#7) +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 4 Group0 (type #12) + depth 3: 8 Core (type #2) + depth 4: 8 PU (type #3) +Special depth -3: 6 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 6 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 + 0 10 13 17 21 21 28 + 1 13 10 17 21 21 28 + 2 17 17 10 28 28 28 + 3 21 21 28 10 13 17 + 4 21 21 28 13 10 17 + 5 28 28 28 17 17 10 +Memory attribute #2 name `Bandwidth' flags 5 + NUMANode L#0 = 131072 from cpuset 0x00000003 (Group0 L#0) + NUMANode L#1 = 131072 from cpuset 0x00000030 (Group0 L#1) + NUMANode L#2 = 78644 from cpuset 0x00000033 (Package L#0) + NUMANode L#3 = 131072 from cpuset 0x0000000c (Group0 L#2) + NUMANode L#4 = 131072 from cpuset 0x000000c0 (Group0 L#3) + NUMANode L#5 = 78644 from cpuset 0x000000cc (Package L#1) +Memory attribute #3 name `Latency' flags 6 + NUMANode L#0 = 26 from cpuset 0x00000003 (Group0 L#0) + NUMANode L#1 = 26 from cpuset 0x00000030 (Group0 L#1) + NUMANode L#2 = 77 from cpuset 0x00000033 (Package L#0) + NUMANode L#3 = 26 from cpuset 0x0000000c (Group0 L#2) + NUMANode L#4 = 26 from cpuset 0x000000c0 (Group0 L#3) + NUMANode L#5 = 77 from cpuset 0x000000cc (Package L#1) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakememinitiators-1np2c+1npp+gi.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/fakememinitiators-1np2c+1npp+gi.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c912c630c284fed1f677d689fe992657f3e592f7 GIT binary patch literal 19314 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 +} + +if [ ! -x "$lstopo" ] +then + error "Could not find executable file \`$lstopo'." + exit 1 +fi +if [ ! -x "$gather" ] +then + error "Could not find executable script \`$gather'." + exit 1 +fi + +tmpdir=`mktemp -d` + +# make sure other components don't report things that won't be exported in the tarball +export HWLOC_COMPONENTS=linux,stop +# use "//" so that we gather from root but thissystem gets disabled since it's not "/". +# therefore we only gather things that can be gathered from the tarball. +# (if we disabled thissystem explicitly without changing fsroot, Linux would automatically disable itself). +export HWLOC_FSROOT=// + +echo "Saving current system topology to XML..." +# ignore DAXDevice info attr because it won't appear in save2.xml unless we pass --io to gather below +if ! "$lstopo" --no-io -.xml | grep -v DAXDevice > "$tmpdir/save1.xml" ; then + error "Failed" + exit 1 +fi + +echo "Saving current system topology to a tarball..." +if ! "$gather" "$tmpdir/save" ; then + error "Failed" + exit 1 +fi +# we'll ignore save.xml generated by hwloc-gather-topology +# and just our own xmls generated with the right lstopo options + +echo "Extracting tarball..." +if ! ( cd "$tmpdir" && tar xfj save.tar.bz2 ) ; then + error "Failed" + exit 1 +fi +export HWLOC_FSROOT="$tmpdir/save" + +rm -f "$tmpdir/save/proc/hwloc-nofile-info" + +echo "Saving tarball topology to XML..." +if ! "$lstopo" --no-io "$tmpdir/save2.xml" ; then + error "Failed" + exit 1 +fi + +echo "Comparing XML outputs..." +( cd $tmpdir && @DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ save1.xml save2.xml ) +result=$? + +rm -rf "$tmpdir" + +exit $result diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.env b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.env new file mode 100644 index 0000000000..cf4ced84bc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.env @@ -0,0 +1,2 @@ +HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES=1 +export HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.output new file mode 100644 index 0000000000..df6ae83cff --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.output @@ -0,0 +1,110 @@ +Machine (P#0 total=358162944KB PlatformName=PowerNV PlatformModel="PowerNV 8335-GTW" Backend=Linux LinuxCgroup=/jjh OSName=Linux OSRelease=4.14.0-49.el7a.bz1553205.page_fault_hang.ppc64le OSVersion="#1 SMP Fri Mar 30 12:06:11 CDT 2018" HostName=c685f8n02 Architecture=ppc64le) + Package L#0 (P#0 total=177025024KB CPUModel="POWER9, altivec supported" CPURevision="2.1 (pvr 004e 1201)") + NUMANode L#0 (P#0 local=129839104KB total=129839104KB) + NUMANode(GPUMemory) L#1 (P#253 local=15728640KB total=15728640KB PCIBusID=0006:00:00.0) + NUMANode(GPUMemory) L#2 (P#254 local=15728640KB total=15728640KB PCIBusID=0004:06:00.0) + NUMANode(GPUMemory) L#3 (P#255 local=15728640KB total=15728640KB PCIBusID=0004:05:00.0) + L3Cache L#0 (size=10240KB linesize=0) + L2Cache L#0 (size=512KB linesize=0) + L1dCache L#0 (size=32KB linesize=128 ways=32) + L1iCache L#0 (size=32KB linesize=128 ways=32) + Core L#0 (P#8) + PU L#0 (P#0) + PU L#1 (P#1) + PU L#2 (P#2) + PU L#3 (P#3) + L1dCache L#1 (size=32KB linesize=128 ways=32) + L1iCache L#1 (size=32KB linesize=128 ways=32) + Core L#1 (P#12) + PU L#4 (P#4) + PU L#5 (P#5) + PU L#6 (P#6) + PU L#7 (P#7) + L3Cache L#1 (size=10240KB linesize=0) + L2Cache L#1 (size=512KB linesize=0) + L1dCache L#2 (size=32KB linesize=128 ways=32) + L1iCache L#2 (size=32KB linesize=128 ways=32) + Core L#2 (P#16) + PU L#8 (P#8) + PU L#9 (P#9) + PU L#10 (P#10) + PU L#11 (P#11) + L1dCache L#3 (size=32KB linesize=128 ways=32) + L1iCache L#3 (size=32KB linesize=128 ways=32) + Core L#3 (P#20) + PU L#12 (P#12) + PU L#13 (P#13) + PU L#14 (P#14) + PU L#15 (P#15) + HostBridge L#0 (buses=0004:[05-05]) + PCI L#0 (busid=0004:05:00.0 id=0000:0000 class=0300(VGA)) + HostBridge L#1 (buses=0004:[06-06]) + PCI L#1 (busid=0004:06:00.0 id=0000:0000 class=0300(VGA)) + HostBridge L#2 (buses=0006:[00-00]) + PCI L#2 (busid=0006:00:00.0 id=0000:0000 class=0300(VGA)) + Package L#1 (P#8 total=181137920KB CPUModel="POWER9, altivec supported" CPURevision="2.1 (pvr 004e 1201)") + NUMANode L#4 (P#8 local=133952000KB total=133952000KB) + NUMANode(GPUMemory) L#5 (P#250 local=15728640KB total=15728640KB PCIBusID=0035:05:00.0) + NUMANode(GPUMemory) L#6 (P#251 local=15728640KB total=15728640KB PCIBusID=0035:04:00.0) + NUMANode(GPUMemory) L#7 (P#252 local=15728640KB total=15728640KB PCIBusID=0007:00:00.0) + L3Cache L#2 (size=10240KB linesize=0) + L2Cache L#2 (size=512KB linesize=0) + L1dCache L#4 (size=32KB linesize=128 ways=32) + L1iCache L#4 (size=32KB linesize=128 ways=32) + Core L#4 (P#2056) + PU L#16 (P#88) + PU L#17 (P#89) + PU L#18 (P#90) + PU L#19 (P#91) + L1dCache L#5 (size=32KB linesize=128 ways=32) + L1iCache L#5 (size=32KB linesize=128 ways=32) + Core L#5 (P#2060) + PU L#20 (P#92) + PU L#21 (P#93) + PU L#22 (P#94) + PU L#23 (P#95) + L3Cache L#3 (size=10240KB linesize=0) + L2Cache L#3 (size=512KB linesize=0) + L1dCache L#6 (size=32KB linesize=128 ways=32) + L1iCache L#6 (size=32KB linesize=128 ways=32) + Core L#6 (P#2064) + PU L#24 (P#96) + PU L#25 (P#97) + PU L#26 (P#98) + PU L#27 (P#99) + L1dCache L#7 (size=32KB linesize=128 ways=32) + L1iCache L#7 (size=32KB linesize=128 ways=32) + Core L#7 (P#2068) + PU L#28 (P#100) + PU L#29 (P#101) + PU L#30 (P#102) + PU L#31 (P#103) + HostBridge L#3 (buses=0007:[00-00]) + PCI L#3 (busid=0007:00:00.0 id=0000:0000 class=0300(VGA)) + HostBridge L#4 (buses=0035:[04-04]) + PCI L#4 (busid=0035:04:00.0 id=0000:0000 class=0300(VGA)) + HostBridge L#5 (buses=0035:[05-05]) + PCI L#5 (busid=0035:05:00.0 id=0000:0000 class=0300(VGA)) +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 4 L3Cache (type #6) + depth 3: 4 L2Cache (type #5) + depth 4: 8 L1dCache (type #4) + depth 5: 8 L1iCache (type #9) + depth 6: 8 Core (type #2) + depth 7: 32 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Special depth -4: 6 Bridge (type #14) +Special depth -5: 6 PCIDev (type #15) +Relative latency matrix (name NUMALatency kind 5) between 8 NUMANodes (depth -3) by logical indexes: + index 0 4 5 6 7 1 2 3 + 0 10 40 80 80 80 80 80 80 + 4 40 10 80 80 80 80 80 80 + 5 80 80 10 80 80 80 80 80 + 6 80 80 80 10 80 80 80 80 + 7 80 80 80 80 10 80 80 80 + 1 80 80 80 80 80 10 80 80 + 2 80 80 80 80 80 80 10 80 + 3 80 80 80 80 80 80 80 10 +144 processors not represented in topology: 0x0000ffff,0xffffffff,0xffffff00,0x00ffffff,0xffffffff,0xffff0000 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.source b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.source new file mode 100644 index 0000000000..76618944af --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.kept.source @@ -0,0 +1 @@ +nvidiagpunumanodes.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.output b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.output new file mode 100644 index 0000000000..1a4668dba4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.output @@ -0,0 +1,98 @@ +Machine (P#0 total=263791104KB PlatformName=PowerNV PlatformModel="PowerNV 8335-GTW" Backend=Linux LinuxCgroup=/jjh OSName=Linux OSRelease=4.14.0-49.el7a.bz1553205.page_fault_hang.ppc64le OSVersion="#1 SMP Fri Mar 30 12:06:11 CDT 2018" HostName=c685f8n02 Architecture=ppc64le) + Package L#0 (P#0 total=129839104KB CPUModel="POWER9, altivec supported" CPURevision="2.1 (pvr 004e 1201)") + NUMANode L#0 (P#0 local=129839104KB total=129839104KB) + L3Cache L#0 (size=10240KB linesize=0) + L2Cache L#0 (size=512KB linesize=0) + L1dCache L#0 (size=32KB linesize=128 ways=32) + L1iCache L#0 (size=32KB linesize=128 ways=32) + Core L#0 (P#8) + PU L#0 (P#0) + PU L#1 (P#1) + PU L#2 (P#2) + PU L#3 (P#3) + L1dCache L#1 (size=32KB linesize=128 ways=32) + L1iCache L#1 (size=32KB linesize=128 ways=32) + Core L#1 (P#12) + PU L#4 (P#4) + PU L#5 (P#5) + PU L#6 (P#6) + PU L#7 (P#7) + L3Cache L#1 (size=10240KB linesize=0) + L2Cache L#1 (size=512KB linesize=0) + L1dCache L#2 (size=32KB linesize=128 ways=32) + L1iCache L#2 (size=32KB linesize=128 ways=32) + Core L#2 (P#16) + PU L#8 (P#8) + PU L#9 (P#9) + PU L#10 (P#10) + PU L#11 (P#11) + L1dCache L#3 (size=32KB linesize=128 ways=32) + L1iCache L#3 (size=32KB linesize=128 ways=32) + Core L#3 (P#20) + PU L#12 (P#12) + PU L#13 (P#13) + PU L#14 (P#14) + PU L#15 (P#15) + HostBridge L#0 (buses=0004:[05-05]) + PCI L#0 (busid=0004:05:00.0 id=0000:0000 class=0300(VGA)) + HostBridge L#1 (buses=0004:[06-06]) + PCI L#1 (busid=0004:06:00.0 id=0000:0000 class=0300(VGA)) + HostBridge L#2 (buses=0006:[00-00]) + PCI L#2 (busid=0006:00:00.0 id=0000:0000 class=0300(VGA)) + Package L#1 (P#8 total=133952000KB CPUModel="POWER9, altivec supported" CPURevision="2.1 (pvr 004e 1201)") + NUMANode L#1 (P#8 local=133952000KB total=133952000KB) + L3Cache L#2 (size=10240KB linesize=0) + L2Cache L#2 (size=512KB linesize=0) + L1dCache L#4 (size=32KB linesize=128 ways=32) + L1iCache L#4 (size=32KB linesize=128 ways=32) + Core L#4 (P#2056) + PU L#16 (P#88) + PU L#17 (P#89) + PU L#18 (P#90) + PU L#19 (P#91) + L1dCache L#5 (size=32KB linesize=128 ways=32) + L1iCache L#5 (size=32KB linesize=128 ways=32) + Core L#5 (P#2060) + PU L#20 (P#92) + PU L#21 (P#93) + PU L#22 (P#94) + PU L#23 (P#95) + L3Cache L#3 (size=10240KB linesize=0) + L2Cache L#3 (size=512KB linesize=0) + L1dCache L#6 (size=32KB linesize=128 ways=32) + L1iCache L#6 (size=32KB linesize=128 ways=32) + Core L#6 (P#2064) + PU L#24 (P#96) + PU L#25 (P#97) + PU L#26 (P#98) + PU L#27 (P#99) + L1dCache L#7 (size=32KB linesize=128 ways=32) + L1iCache L#7 (size=32KB linesize=128 ways=32) + Core L#7 (P#2068) + PU L#28 (P#100) + PU L#29 (P#101) + PU L#30 (P#102) + PU L#31 (P#103) + HostBridge L#3 (buses=0007:[00-00]) + PCI L#3 (busid=0007:00:00.0 id=0000:0000 class=0300(VGA)) + HostBridge L#4 (buses=0035:[04-04]) + PCI L#4 (busid=0035:04:00.0 id=0000:0000 class=0300(VGA)) + HostBridge L#5 (buses=0035:[05-05]) + PCI L#5 (busid=0035:05:00.0 id=0000:0000 class=0300(VGA)) +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 4 L3Cache (type #6) + depth 3: 4 L2Cache (type #5) + depth 4: 8 L1dCache (type #4) + depth 5: 8 L1iCache (type #9) + depth 6: 8 Core (type #2) + depth 7: 32 PU (type #3) +Special depth -3: 2 NUMANode (type #13) +Special depth -4: 6 Bridge (type #14) +Special depth -5: 6 PCIDev (type #15) +Relative latency matrix (name NUMALatency kind 5) between 2 NUMANodes (depth -3) by logical indexes: + index 0 1 + 0 10 40 + 1 40 10 +144 processors not represented in topology: 0x0000ffff,0xffffffff,0xffffff00,0x00ffffff,0xffffffff,0xffff0000 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/nvidiagpunumanodes.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3e8e78b24586f066ac434a76938b93d6bb40c8b1 GIT binary patch literal 24566 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/linux/test-topology.sh.in b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/test-topology.sh.in new file mode 100644 index 0000000000..d92bbdf466 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/linux/test-topology.sh.in @@ -0,0 +1,163 @@ +#!@BASH@ +#-*-sh-*- + +# +# Copyright © 2009 CNRS +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2009-2011 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +# Check the conformance of `lstopo' for all the Linux sysfs +# hierarchies available here. Return true on success. + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +lstopo="$HWLOC_top_builddir/utils/lstopo/lstopo-no-graphics" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DONT_ADD_VERSION_INFO=1 +export HWLOC_DONT_ADD_VERSION_INFO + +HWLOC_XML_EXPORT_SUPPORT=0 +export HWLOC_XML_EXPORT_SUPPORT + +HWLOC_DEBUG_SORT_CHILDREN=1 +export HWLOC_DEBUG_SORT_CHILDREN + +actual_output="$1" + +# make sure we use default numeric formats (only XML outputs are dis-localized when supported) +LANG=C +LC_ALL=C +export LANG LC_ALL + +error() +{ + echo $@ 2>&1 +} + +# test_topology NAME TOPOLOGY-DIR +# +# Test the topology under TOPOLOGY-DIR. Return true on success. +test_topology () +{ + local name="$1" + local dir="$2" + local expected_output="$3" + local options="$4" + + local output="`mktemp`" + + export HWLOC_DEBUG_CHECK=1 + + opts="-v -" + [ -r "$options" ] && opts=`cat $options` + + # Use HWLOC_COMPONENTS explicitly instead of passing --if fsroot because + # we don't want the pci backend to annotate PCI vendor/device when supported. + # We'll set HWLOC_FSROOT and HWLOC_DUMPED_HWDATA_DIR manually below. + HWLOC_COMPONENTS=linux,stop + export HWLOC_COMPONENTS + HWLOC_FSROOT="$dir" + export HWLOC_FSROOT + HWLOC_DUMPED_HWDATA_DIR=/var/run/hwloc + export HWLOC_DUMPED_HWDATA_DIR + + if ! "$lstopo" $opts \ + | sed -e 's/ gp_index="[0-9]\+"//' \ + > "$output" + # filtered gp_index because it depends on the insertiong order, which may depend on pciaccess version, etc + then + result=1 + else + if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ] + then + @DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ "$expected_output" "$output" + result=$? + else + if ! @DIFF@ "$expected_output" "$output" >/dev/null + then + cp -f "$output" "$expected_output" + echo "Updated $expected_output" + fi + result=0 + fi + fi + + rm "$output" + + return $result +} + +# test_eligible TOPOLOGY-DIR +# +# Return true if the topology under TOPOLOGY-DIR is eligible for +# testing with the current flavor. +test_eligible() +{ + local dir="$1" + local output="$2" + + [ -d "$dir" -a -f "$output" ] +} + + +if [ ! -x "$lstopo" ] +then + error "Could not find executable file \`$lstopo'." + exit 1 +fi + +topology="${actual_output%.output}" +if [ "$topology" = "$actual_output" ] ; +then + error "Input file \`$1' should end with .output" + exit 1 +fi +actual_options="$topology".options + +# if there's a .source file, use the tarball name it contains instead of $topology +if [ -f "$topology".source ] ; then + actual_source="$HWLOC_top_srcdir"/tests/hwloc/linux/`cat "$topology".source` +else + actual_source="$topology".tar.bz2 +fi + +# if there's a .env file, source it +if [ -f "$topology".env ] ; then + . "$topology".env +fi + +# use an absolute path for tar options because tar is invoked from the temp directory +actual_exclude="$HWLOC_top_srcdir/tests/hwloc/linux/`basename $topology`".exclude +[ -f "$actual_exclude" ] && tar_options="--exclude-from=$actual_exclude" + +result=1 + +dir="`mktemp -d`" + +if ! ( bunzip2 -c "$actual_source" | ( cd "$dir" && tar xf - $tar_options ) ) +then + error "failed to extract topology \`$topology'" +else + actual_dir="`echo "$dir"/*`" + + if test_eligible "$actual_dir" "$actual_output" + then + test_count="`expr $test_count + 1`" + + test_topology "`basename $topology`" "$actual_dir" "$actual_output" "$actual_options" + result=$? + else + # Skip this test. + result=77 + fi +fi + +rm -rf "$dir" + +exit $result diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/memattrs.c b/3rd-party/hwloc-2.7.1/tests/hwloc/memattrs.c new file mode 100644 index 0000000000..478fc315f6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/memattrs.c @@ -0,0 +1,513 @@ +/* + * Copyright © 2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "hwloc.h" + +static void +check_memattr(hwloc_topology_t topology, const char *name, hwloc_memattr_id_t id, unsigned long flags) +{ + hwloc_memattr_id_t gotid; + const char *gotname; + unsigned long gotflags; + int err; + + err = hwloc_memattr_get_by_name(topology, name, &gotid); + assert(!err); + assert(id == gotid); + + err = hwloc_memattr_get_name(topology, id, &gotname); + assert(!err); + assert(!strcmp(gotname, name)); + + err = hwloc_memattr_get_flags(topology, id, &gotflags); + assert(!err); + assert(gotflags == flags); +} + +int +main(void) +{ + hwloc_topology_t topology; + const char *gotname; + hwloc_memattr_id_t id, id2, gotid; + struct hwloc_location loc, locs[2]; + unsigned nrlocs, nrtgs, i; + hwloc_uint64_t gotvalue; + hwloc_obj_t node, targets[4]; + int err; + hwloc_bitmap_t bitmap; + + err = hwloc_topology_init(&topology); + assert(!err); + err = hwloc_topology_set_synthetic(topology, "node:4 pu:2"); + assert(!err); + err = hwloc_topology_load(topology); + assert(!err); + + /* check get local nodes */ + err = hwloc_get_local_numanode_objs(topology, NULL, NULL, NULL, 0); + assert(err < 0); + /* get all nodes */ + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_root_obj(topology); + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, HWLOC_LOCAL_NUMANODE_FLAG_ALL); + assert(!err); + assert(nrtgs == 4); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); + assert(targets[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + assert(targets[3] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 3)); + /* get root local nodes (none) */ + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_root_obj(topology); + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, 0); + assert(!err); + assert(nrtgs == 0); + /* get root-or-smaller local nodes (all) */ + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_root_obj(topology); + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY); + assert(!err); + assert(nrtgs == 4); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); + assert(targets[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + assert(targets[3] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 3)); + /* get PU local nodes (none) */ + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 1); + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, 0); + assert(!err); + assert(nrtgs == 0); + /* get PU-or-larger local nodes (1) */ + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 7); + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY); + assert(!err); + assert(nrtgs == 1); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 3)); + /* get node local nodes (1) */ + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2); + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, 0); + assert(!err); + assert(nrtgs == 1); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + /* get 2-node local nodes (0) */ + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(loc.location.cpuset, 2, 5); + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, 0); + assert(!err); + assert(nrtgs == 0); + /* get 2-node-or-larger local nodes (0) */ + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY); + assert(!err); + assert(nrtgs == 0); + /* get 2-node-or-smaller local nodes (2) */ + nrtgs = 4; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrtgs, targets, HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY); + assert(!err); + assert(nrtgs == 2); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + hwloc_bitmap_free(loc.location.cpuset); + + /* check default memattrs */ + check_memattr(topology, "Capacity", HWLOC_MEMATTR_ID_CAPACITY, HWLOC_MEMATTR_FLAG_HIGHER_FIRST); + check_memattr(topology, "Locality", HWLOC_MEMATTR_ID_LOCALITY, HWLOC_MEMATTR_FLAG_LOWER_FIRST); + check_memattr(topology, "Bandwidth", HWLOC_MEMATTR_ID_BANDWIDTH, HWLOC_MEMATTR_FLAG_HIGHER_FIRST|HWLOC_MEMATTR_FLAG_NEED_INITIATOR); + check_memattr(topology, "Latency", HWLOC_MEMATTR_ID_LATENCY, HWLOC_MEMATTR_FLAG_LOWER_FIRST|HWLOC_MEMATTR_FLAG_NEED_INITIATOR); + + /* check convenience memattr values */ + err = hwloc_memattr_get_value(topology, HWLOC_MEMATTR_ID_CAPACITY, + hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1), NULL, 0, + &gotvalue); + assert(!err); + assert(gotvalue == 1024*1024*1024); + err = hwloc_memattr_get_value(topology, HWLOC_MEMATTR_ID_LOCALITY, + hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2), NULL, 0, + &gotvalue); + assert(!err); + assert(gotvalue == 2); + nrtgs = 0; + err = hwloc_memattr_get_targets(topology, HWLOC_MEMATTR_ID_LOCALITY, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 4); + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, HWLOC_MEMATTR_ID_LOCALITY, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 4); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); + assert(targets[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + assert(targets[3] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 3)); + + /* look for unexisting memattr */ + err = hwloc_memattr_get_by_name(topology, "foobarrrrr", &gotid); + assert(err < 0); + err = hwloc_memattr_get_name(topology, HWLOC_MEMATTR_ID_LATENCY+1, &gotname); + assert(err < 0); + + /* (fail to) register with invalid flags */ + err = hwloc_memattr_register(topology, "foobar", 0, &id); + assert(err < 0); + assert(errno == EINVAL); + + /* (fail to) register with existing name */ + err = hwloc_memattr_register(topology, "Capacity", HWLOC_MEMATTR_FLAG_HIGHER_FIRST, &id); + assert(err < 0); + assert(errno == EBUSY); + + /******************************** + * new attribute with initiators + */ + + /* register with initiator */ + err = hwloc_memattr_register(topology, "foobar", HWLOC_MEMATTR_FLAG_LOWER_FIRST|HWLOC_MEMATTR_FLAG_NEED_INITIATOR, &id); + assert(!err); + /* check it */ + check_memattr(topology, "foobar", id, HWLOC_MEMATTR_FLAG_LOWER_FIRST|HWLOC_MEMATTR_FLAG_NEED_INITIATOR); + + /* check 0 target */ + nrtgs = 0; + err = hwloc_memattr_get_targets(topology, id, NULL, 0, &nrtgs, NULL, NULL); + assert(!err); + assert(!nrtgs); + + /* add a new value for the first NUMA node */ + node = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0); + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PU)-1); + err = hwloc_memattr_set_value(topology, id, node, + &loc, 0, 2345); + assert(!err); + + /* check 1 target */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 1); + assert(targets[0] == node); + + /* check that value */ + err = hwloc_memattr_get_value(topology, id, node, &loc, 0, &gotvalue); + assert(!err); + assert(gotvalue == 2345); + + /* try with NULL or unknown initiators */ + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = NULL; + err = hwloc_memattr_get_value(topology, id, node, &loc, 0, &gotvalue); + assert(err < 0); + + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_root_obj(topology); + err = hwloc_memattr_get_value(topology, id, node, &loc, 0, &gotvalue); + assert(err < 0); + + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = NULL; + err = hwloc_memattr_get_value(topology, id, node, &loc, 0, &gotvalue); + assert(err < 0); + + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = hwloc_get_root_obj(topology)->cpuset; + err = hwloc_memattr_get_value(topology, id, node, &loc, 0, &gotvalue); + assert(err < 0); + + /* check initiators */ + nrlocs = 0; + err = hwloc_memattr_get_initiators(topology, id, node, 0, &nrlocs, NULL, NULL); + assert(!err); + assert(nrlocs == 1); + /* try first without values */ + err = hwloc_memattr_get_initiators(topology, id, node, 0, &nrlocs, &loc, NULL); + assert(!err); + assert(nrlocs == 1); + assert(loc.type == HWLOC_LOCATION_TYPE_OBJECT); + assert(loc.location.object != NULL); + assert(loc.location.object->type == HWLOC_OBJ_PU); + assert(loc.location.object->logical_index == (unsigned) (hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PU) - 1)); + /* try again with values */ + err = hwloc_memattr_get_initiators(topology, id, node, 0, &nrlocs, &loc, &gotvalue); + assert(!err); + assert(nrlocs == 1); + assert(loc.type == HWLOC_LOCATION_TYPE_OBJECT); + assert(loc.location.object != NULL); + assert(loc.location.object->type == HWLOC_OBJ_PU); + assert(loc.location.object->logical_index == (unsigned) (hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PU) - 1)); + assert(gotvalue == 2345); + + /*********************************** + * new attribute without initiators + */ + + /* register without initiator */ + err = hwloc_memattr_register(topology, "barnoinit", HWLOC_MEMATTR_FLAG_HIGHER_FIRST, &id2); + assert(!err); + /* check it */ + check_memattr(topology, "barnoinit", id2, HWLOC_MEMATTR_FLAG_HIGHER_FIRST); + + /* check 0 target */ + nrtgs = 0; + err = hwloc_memattr_get_targets(topology, id2, NULL, 0, &nrtgs, NULL, NULL); + assert(!err); + assert(!nrtgs); + + /* add a new value for the last NUMA node */ + node = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NUMANODE)-1); + err = hwloc_memattr_set_value(topology, id2, node, + NULL, 0, 3456); + assert(!err); + + /* force refresh */ + err = hwloc_topology_refresh(topology); + assert(!err); + + /* check 1 target */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id2, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 1); + assert(targets[0] == node); + + /* check that value */ + err = hwloc_memattr_get_value(topology, id2, node, NULL, 0, &gotvalue); + assert(!err); + assert(gotvalue == 3456); + + /* check that initiator is ignored when getting values */ + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = hwloc_get_root_obj(topology); + gotvalue = 0; + err = hwloc_memattr_get_value(topology, id2, node, &loc, 0, &gotvalue); + assert(!err); + assert(gotvalue == 3456); + + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = hwloc_get_root_obj(topology)->cpuset; + gotvalue = 0; + err = hwloc_memattr_get_value(topology, id2, node, &loc, 0, &gotvalue); + assert(!err); + assert(gotvalue == 3456); + + /* check no initiators are returned */ + nrlocs = 0; + err = hwloc_memattr_get_initiators(topology, id2, node, 0, &nrlocs, NULL, NULL); + assert(!err); + assert(nrlocs == 0); + + /********************************************** + * add value for both attributes for all nodes + */ + /* use first node as initiator for first attribute */ + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset; + for(i=0; i<(unsigned)hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NUMANODE); i++) { + node = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, i); + /* increasing value for first attribute, best target will be first node */ + err = hwloc_memattr_set_value(topology, id, node, + &loc, 0, (i+1)*10); + assert(!err); + + /* increasing value for second attribute without initiator, best target will be last node */ + err = hwloc_memattr_set_value(topology, id2, node, + NULL, 0, (i+1)*10); + assert(!err); + } + + /* check 4 targets for id */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 4); + /* first target */ + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + nrlocs = 2; + err = hwloc_memattr_get_initiators(topology, id, targets[0], 0, &nrlocs, locs, NULL); + assert(!err); + assert(nrlocs == 2); + assert(locs[0].type == HWLOC_LOCATION_TYPE_OBJECT); + assert(locs[0].location.object->type == HWLOC_OBJ_PU); + assert(locs[0].location.object->os_index == 7); + assert(locs[1].type == HWLOC_LOCATION_TYPE_CPUSET); + assert(hwloc_bitmap_isequal(locs[1].location.cpuset, hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset)); + /* second target */ + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); + nrlocs = 2; + err = hwloc_memattr_get_initiators(topology, id, targets[1], 0, &nrlocs, locs, NULL); + assert(!err); + assert(nrlocs == 1); + assert(locs[0].type == HWLOC_LOCATION_TYPE_CPUSET); + assert(hwloc_bitmap_isequal(locs[0].location.cpuset, hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset)); + /* third target */ + assert(targets[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + nrlocs = 2; + err = hwloc_memattr_get_initiators(topology, id, targets[2], 0, &nrlocs, locs, NULL); + assert(!err); + assert(nrlocs == 1); + assert(locs[0].type == HWLOC_LOCATION_TYPE_CPUSET); + assert(hwloc_bitmap_isequal(locs[0].location.cpuset, hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset)); + /* fourth target */ + assert(targets[3] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 3)); + nrlocs = 2; + err = hwloc_memattr_get_initiators(topology, id, targets[3], 0, &nrlocs, locs, NULL); + assert(!err); + assert(nrlocs == 1); + assert(locs[0].type == HWLOC_LOCATION_TYPE_CPUSET); + assert(hwloc_bitmap_isequal(locs[0].location.cpuset, hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset)); + + /* check 4 targets for id with entire topology cpuset */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id, &loc, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 4); + /* check 0 targets for id with entire topology cpuset */ + nrtgs = 4; + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = (hwloc_bitmap_t) hwloc_topology_get_topology_cpuset(topology); + err = hwloc_memattr_get_targets(topology, id, &loc, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 0); + + /* check 4 targets for id2, no initiators to check */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id2, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 4); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 3)); /* node 3 was added first */ + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + assert(targets[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); + assert(targets[3] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + + /* now check best targets from first PU (included in first node used as initiator above) */ + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0)->cpuset; + /* check best is the first node for first attribute (lower first) */ + err = hwloc_memattr_get_best_target(topology, id, &loc, 0, &node, NULL); + assert(!err); + assert(node); + assert(node->type == HWLOC_OBJ_NUMANODE); + assert(node == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + /* check best is the last node for last attribute (lower first) */ + err = hwloc_memattr_get_best_target(topology, id2, &loc, 0, &node, NULL); + assert(!err); + assert(node); + assert(node->type == HWLOC_OBJ_NUMANODE); + assert(node == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NUMANODE)-1)); + + /* check best initiator for first NUMA is its own cpuset */ + err = hwloc_memattr_get_best_initiator(topology, id, node, 0, &loc, NULL); + assert(!err); + assert(locs[0].type == HWLOC_LOCATION_TYPE_CPUSET); + /* check best initiator is invalid for no-initiator memattr */ + assert(hwloc_bitmap_isequal(locs[0].location.cpuset, hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset)); + err = hwloc_memattr_get_best_initiator(topology, id2, node, 0, &loc, NULL); + assert(err == -1); + assert(errno == EINVAL); + + /*************************** + * restrict to only 3 nodes + */ + bitmap = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(bitmap, 0, 2); + err = hwloc_topology_restrict(topology, bitmap, HWLOC_RESTRICT_FLAG_BYNODESET); + assert(!err); + hwloc_bitmap_free(bitmap); + + /* now only 3 targets for id, last target was removed */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 3); + /* first target unchanged */ + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + nrlocs = 2; + err = hwloc_memattr_get_initiators(topology, id, targets[0], 0, &nrlocs, locs, NULL); + assert(!err); + assert(nrlocs == 2); + assert(locs[0].type == HWLOC_LOCATION_TYPE_OBJECT); + assert(locs[0].location.object->type == HWLOC_OBJ_PU); + assert(locs[0].location.object->os_index == 7); + assert(locs[1].type == HWLOC_LOCATION_TYPE_CPUSET); + assert(hwloc_bitmap_isequal(locs[1].location.cpuset, hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset)); + /* second target unchanged */ + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); + nrlocs = 2; + err = hwloc_memattr_get_initiators(topology, id, targets[1], 0, &nrlocs, locs, NULL); + assert(!err); + assert(nrlocs == 1); + assert(locs[0].type == HWLOC_LOCATION_TYPE_CPUSET); + assert(hwloc_bitmap_isequal(locs[0].location.cpuset, hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset)); + /* third target unchanged */ + assert(targets[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + nrlocs = 2; + err = hwloc_memattr_get_initiators(topology, id, targets[2], 0, &nrlocs, locs, NULL); + assert(!err); + assert(nrlocs == 1); + assert(locs[0].type == HWLOC_LOCATION_TYPE_CPUSET); + assert(hwloc_bitmap_isequal(locs[0].location.cpuset, hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)->cpuset)); + /* fourth target removed */ + + /* now only 3 targets for id2, last target was removed */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id2, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 3); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); + assert(targets[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); + + /******************************************** + * restrict to only the second half of cores + */ + bitmap = hwloc_bitmap_alloc(); + hwloc_bitmap_set_range(bitmap, 4, 7); + err = hwloc_topology_restrict(topology, bitmap, 0); + assert(!err); + hwloc_bitmap_free(bitmap); + + /* now only 1 target for id, all cpuset initiators removed */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 1); + /* first target only has one initiator */ + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); /* CPUless node:0 became node:2 */ + nrlocs = 2; + err = hwloc_memattr_get_initiators(topology, id, targets[0], 0, &nrlocs, locs, NULL); + assert(!err); + assert(nrlocs == 1); + assert(locs[0].type == HWLOC_LOCATION_TYPE_OBJECT); + assert(locs[0].location.object->type == HWLOC_OBJ_PU); + assert(locs[0].location.object->os_index == 7); + /* second, third and fourth targets removed */ + + /* still only 3 targets for id2 */ + nrtgs = 4; + err = hwloc_memattr_get_targets(topology, id2, NULL, 0, &nrtgs, targets, NULL); + assert(!err); + assert(nrtgs == 3); + assert(targets[0] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 2)); /* CPUless node:0 became node:2 */ + assert(targets[1] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 1)); /* 0 and 1 should be reversed, but the core doesn't current reordered those, see FIXME in restrict_object_by_nodeset() */ + assert(targets[2] == hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, 0)); + + hwloc_topology_destroy(topology); + return 0; +} + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/nvml.c b/3rd-party/hwloc-2.7.1/tests/hwloc/nvml.c new file mode 100644 index 0000000000..791d3e18d6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/nvml.c @@ -0,0 +1,93 @@ +/* + * Copyright © 2012-2017 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "hwloc.h" +#include "hwloc/nvml.h" + +/* check the NVML helpers */ + +int main(void) +{ + hwloc_topology_t topology; + nvmlReturn_t nvres; + nvmlDevice_t device; + unsigned count, i; + int err; + + nvres = nvmlInit(); + if (nvres != NVML_SUCCESS) { + printf("nvmlInit failed %d\n", nvres); + return 0; + } + + nvres = nvmlDeviceGetCount(&count); + if (nvres != NVML_SUCCESS) { + printf("nvmlDeviceGetCount failed %d\n", nvres); + return 0; + } + printf("nvmlDeviceGetCount found %u devices\n", count); + + hwloc_topology_init(&topology); + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_load(topology); + + for(i=0; iname); + err = strncmp(osdev->name, "nvml", 4); + assert(!err); + assert(atoi(osdev->name+4) == (int) i); + + value = hwloc_obj_get_info_by_name(osdev, "Backend"); + err = strcmp(value, "NVML"); + assert(!err); + + assert(osdev->attr->osdev.type == HWLOC_OBJ_OSDEV_GPU); + + value = hwloc_obj_get_info_by_name(osdev, "GPUModel"); + printf("found OSDev model %s\n", value); + + set = hwloc_bitmap_alloc(); + err = hwloc_nvml_get_device_cpuset(topology, device, set); + if (err < 0) { + printf("failed to get cpuset for device %u\n", i); + } else { + char *cpuset_string = NULL; + hwloc_bitmap_asprintf(&cpuset_string, set); + printf("got cpuset %s for device %u\n", cpuset_string, i); + free(cpuset_string); + if (hwloc_bitmap_isequal(hwloc_topology_get_complete_cpuset(topology), hwloc_topology_get_topology_cpuset(topology))) + /* only compare if the topology is complete, otherwise things can be significantly different */ + assert(hwloc_bitmap_isequal(set, ancestor->cpuset)); + } + hwloc_bitmap_free(set); + } + + hwloc_topology_destroy(topology); + + nvmlShutdown(); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/opencl.c b/3rd-party/hwloc-2.7.1/tests/hwloc/opencl.c new file mode 100644 index 0000000000..4fc7afa806 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/opencl.c @@ -0,0 +1,128 @@ +/* + * Copyright © 2012-2018 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#define CL_TARGET_OPENCL_VERSION 220 +#ifdef __APPLE__ +#include +#else +#include +#endif + +#include "hwloc.h" +#include "hwloc/opencl.h" + +/* check the OpenCL helpers */ + +int main(void) +{ + hwloc_topology_t topology; + cl_int clret; + cl_platform_id *platform_ids; + unsigned nrp, nrd, count, i, j; + int err; + + hwloc_topology_init(&topology); + hwloc_topology_set_type_filter(topology, HWLOC_OBJ_PCI_DEVICE, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_set_type_filter(topology, HWLOC_OBJ_OS_DEVICE, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_load(topology); + + clret = clGetPlatformIDs(0, NULL, &nrp); + if (CL_SUCCESS != clret || !nrp) + return 0; + platform_ids = malloc(nrp * sizeof(*platform_ids)); + if (!platform_ids) + return 0; + clret = clGetPlatformIDs(nrp, platform_ids, &nrp); + if (CL_SUCCESS != clret || !nrp) { + free(platform_ids); + return 0; + } + + count = 0; + for(i=0; icpuset)); + } + hwloc_bitmap_free(set); + + printf("found OSDev %s\n", osdev->name); + err = sscanf(osdev->name, "opencl%ud%u", &p, &d); + assert(err == 2); + assert(p == i); + assert(d == j); + + value = hwloc_obj_get_info_by_name(osdev, "Backend"); + err = strcmp(value, "OpenCL"); + assert(!err); + + assert(osdev->attr->osdev.type == HWLOC_OBJ_OSDEV_COPROC); + + value = osdev->subtype; + assert(value); + err = strcmp(value, "OpenCL"); + assert(!err); + + value = hwloc_obj_get_info_by_name(osdev, "GPUModel"); + printf("found OSDev model %s\n", value); + + count++; + } + free(device_ids); + } + free(platform_ids); + + hwloc_topology_destroy(topology); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/openfabrics-verbs.c b/3rd-party/hwloc-2.7.1/tests/hwloc/openfabrics-verbs.c new file mode 100644 index 0000000000..c7ca06e2ff --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/openfabrics-verbs.c @@ -0,0 +1,73 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "hwloc.h" +#include "hwloc/openfabrics-verbs.h" + +/* check the ibverbs helpers */ + +int main(void) +{ + hwloc_topology_t topology; + struct ibv_device **dev_list, *dev; + int count, i; + int err; + + dev_list = ibv_get_device_list(&count); + if (!dev_list) { + fprintf(stderr, "ibv_get_device_list failed\n"); + return 0; + } + printf("ibv_get_device_list found %d devices\n", count); + + hwloc_topology_init(&topology); + hwloc_topology_set_type_filter(topology, HWLOC_OBJ_PCI_DEVICE, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_set_type_filter(topology, HWLOC_OBJ_OS_DEVICE, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_load(topology); + + for(i=0; itype == HWLOC_OBJ_OS_DEVICE); + printf("found OS object subtype %u lindex %u name %s\n", + (unsigned) os->attr->osdev.type, os->logical_index, os->name); + assert(os->attr->osdev.type == HWLOC_OBJ_OSDEV_OPENFABRICS); + if (strcmp(ibv_get_device_name(dev), os->name)) + assert(0); + } + } + hwloc_bitmap_free(set); + } + + hwloc_topology_destroy(topology); + + ibv_free_device_list(dev_list); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/Makefile.am new file mode 100644 index 0000000000..0be3293f2a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/Makefile.am @@ -0,0 +1,195 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009, 2011-2012, 2020 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +SRC = $(HWLOC_top_srcdir)/hwloc + +if HWLOC_HAVE_LINUX +check_LTLIBRARIES = \ + libhwloc-port-aix.la \ + libhwloc-port-bgq.la \ + libhwloc-port-darwin.la \ + libhwloc-port-freebsd.la \ + libhwloc-port-hpux.la \ + libhwloc-port-netbsd.la \ + libhwloc-port-solaris.la \ + libhwloc-port-windows.la \ + libhwloc-port-opencl.la \ + libhwloc-port-cuda.la \ + libhwloc-port-nvml.la \ + libhwloc-port-rsmi.la \ + libhwloc-port-levelzero.la \ + libhwloc-port-gl.la +check_LIBRARIES = \ + liblstopo-port-windows.a \ + liblstopo-port-android.a +endif HWLOC_HAVE_LINUX + +# Note that AC_CONFIG_LINKS sets up the sym links for the files in +# this directory (back to the $top_srcdir/hwloc directory). So if you +# need more sym-linked files in here, go edit configure.ac. Note that +# we have to use sym links in here rather than just directly +# referencing the files via $HWLOC_top_srcdir/hwloc/foo.c because of +# dependencies issues when using the Automake option "subdir-objects". +# We nodist these because they're created by configure. + +common_CPPFLAGS = \ + $(HWLOC_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/include \ + -DHWLOC_COMPILE_PORTS \ + -DHWLOC_INSIDE_LIBHWLOC + +nodist_libhwloc_port_aix_la_SOURCES = topology-aix.c +libhwloc_port_aix_la_SOURCES = \ + include/aix/procinfo.h \ + include/aix/sys/processor.h \ + include/aix/sys/rset.h \ + include/aix/sys/systemcfg.h \ + include/aix/sys/thread.h +libhwloc_port_aix_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/aix \ + -DHWLOC_AIX_SYS \ + -DHWLOC_HAVE_PTHREAD_GETTHRDS_NP + +nodist_libhwloc_port_bgq_la_SOURCES = topology-bgq.c +libhwloc_port_bgq_la_SOURCES = \ + include/bgq/spi/include/kernel/location.h \ + include/bgq/spi/include/kernel/process.h +libhwloc_port_bgq_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/bgq \ + -DHWLOC_BGQ_SYS + +nodist_libhwloc_port_darwin_la_SOURCES = topology-darwin.c +libhwloc_port_darwin_la_SOURCES = \ + include/darwin/sys/sysctl.h \ + include/darwin/IOKit/IOKitLib.h \ + include/darwin/CoreFoundation/CoreFoundation.h +libhwloc_port_darwin_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/darwin \ + -DHWLOC_DARWIN_SYS \ + -DHWLOC_HAVE_DARWIN_FOUNDATION -DHWLOC_HAVE_DARWIN_IOKIT + +nodist_libhwloc_port_freebsd_la_SOURCES = topology-freebsd.c +libhwloc_port_freebsd_la_SOURCES = \ + include/freebsd/pthread.h \ + include/freebsd/pthread_np.h \ + include/freebsd/sys/cpuset.h \ + include/freebsd/sys/sysctl.h \ + include/freebsd/sys/thr.h \ + include/freebsd/sys/user.h \ + include/freebsd/sys/param.h \ + include/freebsd/sys/domainset.h +libhwloc_port_freebsd_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/freebsd \ + -DHWLOC_FREEBSD_SYS \ + -DHAVE_PTHREAD_NP_H \ + -DHAVE_SYS_CPUSET_H \ + -DHAVE_SYS_SYSCTL_H \ + -DHAVE_SYSCTL \ + -DHAVE_CPUSET_SETAFFINITY \ + -Dhwloc_thread_t=pthread_t \ + -DHAVE_DECL_PTHREAD_SETAFFINITY_NP=1 \ + -DHAVE_DECL_PTHREAD_GETAFFINITY_NP=1 \ + -DHAVE_CPUSET_SETID \ + -DHAVE_SYS_DOMAINSET_H \ + -DHAVE_SYS_THR_H + +nodist_libhwloc_port_hpux_la_SOURCES = topology-hpux.c +libhwloc_port_hpux_la_SOURCES = \ + include/hpux/sys/mpctl.h +libhwloc_port_hpux_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/hpux \ + -DHWLOC_HPUX_SYS + +nodist_libhwloc_port_netbsd_la_SOURCES = topology-netbsd.c +libhwloc_port_netbsd_la_SOURCES = \ + include/netbsd/pthread.h \ + include/netbsd/sched.h \ + include/netbsd/sys/sysctl.h +libhwloc_port_netbsd_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/netbsd \ + -DHWLOC_NETBSD_SYS \ + -DHAVE_SYS_SYSCTL_H \ + -DHAVE_SYSCTL + +nodist_libhwloc_port_solaris_la_SOURCES = topology-solaris.c topology-solaris-chiptype.c +libhwloc_port_solaris_la_SOURCES = \ + include/solaris/kstat.h \ + include/solaris/picl.h \ + include/solaris/sys/lgrp_user.h \ + include/solaris/sys/processor.h \ + include/solaris/sys/procset.h \ + include/solaris/sys/systeminfo.h +libhwloc_port_solaris_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/solaris \ + -DHWLOC_SOLARIS_SYS \ + -DHAVE_LIBLGRP \ + -DHAVE_DECL_LGRP_LATENCY_COOKIE=1 \ + -DHAVE_LIBKSTAT \ + -DHAVE_PICL_H + +nodist_libhwloc_port_windows_la_SOURCES = topology-windows.c +libhwloc_port_windows_la_SOURCES = \ + include/windows/windows.h +libhwloc_port_windows_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/windows \ + -DHWLOC_WIN_SYS + +nodist_liblstopo_port_windows_a_SOURCES = lstopo-windows.c +liblstopo_port_windows_a_SOURCES = \ + include/windows/windowsx.h +liblstopo_port_windows_a_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/windows \ + -I$(HWLOC_top_srcdir)/utils/lstopo \ + -I$(HWLOC_top_srcdir)/utils/hwloc \ + -DHWLOC_WIN_SYS + +nodist_liblstopo_port_android_a_SOURCES = lstopo-android.c +liblstopo_port_android_a_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/utils/lstopo \ + -I$(HWLOC_top_srcdir)/utils/hwloc + +nodist_libhwloc_port_opencl_la_SOURCES = topology-opencl.c +libhwloc_port_opencl_la_SOURCES = \ + include/opencl/CL/cl.h +libhwloc_port_opencl_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/opencl + +nodist_libhwloc_port_cuda_la_SOURCES = topology-cuda.c +libhwloc_port_cuda_la_SOURCES = \ + include/cuda/cuda.h \ + include/cuda/cuda_runtime_api.h +libhwloc_port_cuda_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/cuda + +nodist_libhwloc_port_nvml_la_SOURCES = topology-nvml.c +libhwloc_port_nvml_la_SOURCES = \ + include/nvml/nvml.h +libhwloc_port_nvml_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/nvml + +nodist_libhwloc_port_rsmi_la_SOURCES = topology-rsmi.c +libhwloc_port_rsmi_la_SOURCES = \ + include/rsmi/rocm_smi/rocm_smi.h +libhwloc_port_rsmi_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/rsmi + +nodist_libhwloc_port_levelzero_la_SOURCES = topology-levelzero.c +libhwloc_port_levelzero_la_SOURCES = \ + include/levelzero/level_zero/ze_api.h \ + include/levelzero/level_zero/zes_api.h +libhwloc_port_levelzero_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/levelzero + +nodist_libhwloc_port_gl_la_SOURCES = topology-gl.c +libhwloc_port_gl_la_SOURCES = \ + include/gl/X11/Xlib.h \ + include/gl/NVCtrl/NVCtrl.h \ + include/gl/NVCtrl/NVCtrlLib.h +libhwloc_port_gl_la_CPPFLAGS = $(common_CPPFLAGS) \ + -I$(HWLOC_top_srcdir)/tests/hwloc/ports/include/gl diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/procinfo.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/procinfo.h new file mode 100644 index 0000000000..a482d3e13d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/procinfo.h @@ -0,0 +1,25 @@ +/* + * Copyright © 2012 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_AIX_PROCINFO_H +#define HWLOC_PORT_AIX_PROCINFO_H + +#include +#include + +struct thrdsinfo { + unsigned long ti_tid; + unsigned long ti_cpuid; +}; + +struct thrdentry64 { + tid_t ti_tid; + cpu_t ti_cpuid; +}; + +extern int getthrds(pid_t, void *, int, tid_t *, int); +extern int getthrds64(pid_t, void *, int, tid64_t *, int); + +#endif /* HWLOC_PORT_AIX_PROCINFO_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/processor.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/processor.h new file mode 100644 index 0000000000..397854bac0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/processor.h @@ -0,0 +1,18 @@ +/* + * Copyright © 2009 inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_AIX_SYS_PROCESSOR_H +#define HWLOC_PORT_AIX_SYS_PROCESSOR_H + +typedef short cpu_t; +#define BINDPROCESS 1 +#define BINDTHREAD 2 +#define PROCESSOR_CLASS_ANY ((cpu_t)(-1)) +extern int bindprocessor(int What, int Who, cpu_t Where); + +extern cpu_t mycpu(void); + +#endif /* HWLOC_PORT_AIX_SYS_PROCESSOR_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/rset.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/rset.h new file mode 100644 index 0000000000..e3b40447c6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/rset.h @@ -0,0 +1,95 @@ +/* + * Copyright © 2009 inria. All rights reserved. + * Copyright © 2009-2011 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_AIX_SYS_RSET_H +#define HWLOC_PORT_AIX_SYS_RSET_H + +#include + +#include "thread.h" + +typedef unsigned int uint_t; +typedef void *rsethandle_t; + +#define RS_EMPTY 3 +#define RS_ALL 2 +#define RS_PARTITION 3 + +#define RS_UNION 1 +#define RS_INTERSECTION 2 +#define RS_EXCLUSION 3 +#define RS_COPY 4 +#define RS_FIRST 5 +#define RS_NEXT 6 +#define RS_NEXT_WRAP 7 +#define RS_ISEMPTY 8 +#define RS_ISEQUAL 9 +#define RS_ISCONTAINED 10 +#define RS_TESTRESOURCE 11 +#define RS_ADDRESOURCE 12 +#define RS_DELRESOURCE 13 + +typedef int rsinfo_t; +#define R_NUMPROCS 0 +#define R_MAXSDL 3 +#define R_SMPSDL 4 +#define R_MCMSDL 5 +#define R_MAXPROCS 6 +#define R_L2CSDL 11 +#define R_CORESDL 12 +#define R_REF1SDL 13 + +#define R_PROCS 6 + +#define R_NADA 0 +#define R_PROCESS 1 +#define R_RSET 2 +#define R_SUBRANGE 3 +#define R_SHM 4 +#define R_FILDES 5 +#define R_THREAD 6 + +#define P_DEFAULT 0 +#define P_FIRST_TOUCH 1 +#define P_BALANCED 2 /* This is the default */ + +rsethandle_t rs_alloc (unsigned int flags); +int rs_numrads(rsethandle_t rset, unsigned int sdl, unsigned int flags); +int rs_getrad (rsethandle_t rset, rsethandle_t rad, unsigned int sdl, unsigned int index, unsigned int flags); +int rs_getinfo(rsethandle_t rseth, rsinfo_t info_type, unsigned int flags); +int rs_op(unsigned int command, rsethandle_t rseth1, rsethandle_t rseth2, unsigned int flags, unsigned int id); +void rs_free(rsethandle_t rseth); + +typedef int rstype_t; +typedef struct subrange subrange_t; + +typedef union { + pid_t at_pid; + tid_t at_tid; + int at_shmid; + int at_fd; + rsethandle_t at_rset; + subrange_t *at_subrange; +} rsid_t; + +struct subrange { + uint64_t su_offset; + uint64_t su_length; + rstype_t su_rstype; + unsigned int su_policy; + rsid_t su_rsid; + uint64_t su_rsoffset; + uint64_t su_rslength; +}; + +int ra_attachrset (rstype_t rstype, rsid_t rsid, rsethandle_t rset, unsigned int flags); +int ra_detachrset (rstype_t rstype, rsid_t rsid, unsigned int flags); +int ra_getrset (rstype_t rstype, rsid_t rsid, unsigned int flags, rsethandle_t rset); + +void * ra_mmap(void *addr, off64_t len, int prot, int flags, int fildes, off64_t off, rstype_t rstype, rsid_t rsid, unsigned int att_flags); + + +#endif /* HWLOC_PORT_AIX_SYS_RSET_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/systemcfg.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/systemcfg.h new file mode 100644 index 0000000000..264f4f44a8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/systemcfg.h @@ -0,0 +1,34 @@ +/* + * Copyright © 2011 Université Bordeaux + * Copyright © 2016 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_AIX_SYS_SYSTEMCFG_H +#define HWLOC_PORT_AIX_SYS_SYSTEMCFG_H + +struct { + int dcache_size; + int dcache_asc; + int dcache_line; + int icache_size; + int icache_asc; + int icache_line; + int L2_cache_size; + int L2_cache_asc; + int cache_attrib; +} _system_configuration; + +#define __power_pc() 1 +#define __power_4() 1 +#define __power_5() 1 +#define __power_6() 1 +#define __power_7() 1 + +/* hide Linux' host disabling _SC_LARGE_PAGESIZE */ +#undef HAVE_DECL__SC_LARGE_PAGESIZE +#define HAVE_DECL__SC_LARGE_PAGESIZE 1 +#undef _SC_LARGE_PAGESIZE +#define _SC_LARGE_PAGESIZE 33 + +#endif /* HWLOC_PORT_AIX_SYS_SYSTEMCFG_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/thread.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/thread.h new file mode 100644 index 0000000000..6a4be5d911 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/aix/sys/thread.h @@ -0,0 +1,20 @@ +/* + * Copyright © 2009 inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_AIX_SYS_THREAD_H +#define HWLOC_PORT_AIX_SYS_THREAD_H + +typedef long tid_t; +typedef uint64_t tid64_t; + +tid_t thread_self(void); +struct __pthrdsinfo { + tid_t __pi_tid; +}; +#define PTHRDSINFO_QUERY_TID 0x10 +int pthread_getthrds_np (pthread_t * thread, int mode, struct __pthrdsinfo * buf, int bufsize, void * regbuf, int * regbufsize); + +#endif /* HWLOC_PORT_AIX_SYS_THREAD_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/bgq/spi/include/kernel/location.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/bgq/spi/include/kernel/location.h new file mode 100644 index 0000000000..e029466435 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/bgq/spi/include/kernel/location.h @@ -0,0 +1,20 @@ +/* + * Copyright © 2013-2015 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_BGQ_KERNEL_LOCATION_H +#define HWLOC_PORT_BGQ_KERNEL_LOCATION_H + +#include + +uint32_t Kernel_ProcessorID( void ); +uint32_t Kernel_MyTcoord( void ); + +/* don't try to cross-build BGQ port on old Linux platforms */ +#if (!HAVE_DECL_PTHREAD_GETAFFINITY_NP) || (!HAVE_DECL_PTHREAD_SETAFFINITY_NP) || (!defined HWLOC_HAVE_CPU_SET) +#warning Disabling BGQ port cross-build on old Linux platform +#define HWLOC_DISABLE_BGQ_PORT_TEST +#endif + +#endif /* HWLOC_PORT_BGQ_KERNEL_LOCATION_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/bgq/spi/include/kernel/process.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/bgq/spi/include/kernel/process.h new file mode 100644 index 0000000000..a2c2720132 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/bgq/spi/include/kernel/process.h @@ -0,0 +1,13 @@ +/* + * Copyright © 2013 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_BGQ_KERNEL_PROCESS_H +#define HWLOC_PORT_BGQ_KERNEL_PROCESS_H + +#include + +uint64_t Kernel_ThreadMask(uint32_t t); + +#endif /* HWLOC_PORT_BGQ_KERNEL_PROCESS_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/cuda/cuda.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/cuda/cuda.h new file mode 100644 index 0000000000..137403e9b0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/cuda/cuda.h @@ -0,0 +1,11 @@ +/* + * Copyright © 2015 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_CUDA_CUDA_H +#define HWLOC_PORT_CUDA_CUDA_H + +#define CUDA_VERSION 4000 + +#endif /* HWLOC_PORT_CUDA_CUDA_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/cuda/cuda_runtime_api.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/cuda/cuda_runtime_api.h new file mode 100644 index 0000000000..ea12896d29 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/cuda/cuda_runtime_api.h @@ -0,0 +1,36 @@ +/* + * Copyright © 2013-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_CUDA_CUDA_RUNTIME_API_H +#define HWLOC_PORT_CUDA_CUDA_RUNTIME_API_H + +/* we need to replace any CUDA-related #define that configure may have put in private/autogen/config.h */ +#ifndef HWLOC_CONFIGURE_H +#error cuda_runtime_api.h must be included after private/autogen/config.h +#endif +#undef HWLOC_HAVE_CUDA_L2CACHESIZE +#define HWLOC_HAVE_CUDA_L2CACHESIZE 1 + +typedef unsigned cudaError_t; +#define cudaErrorNoDevice 37 + +struct cudaDeviceProp { + char name[256]; + int pciDomainID; + int pciBusID; + int pciDeviceID; + size_t totalGlobalMem; + size_t sharedMemPerBlock; + int major; + int minor; + int l2CacheSize; + int multiProcessorCount; +}; + +cudaError_t cudaGetDeviceProperties(struct cudaDeviceProp *, int); +cudaError_t cudaGetDeviceCount(int *); +const char * cudaGetErrorString(cudaError_t); + +#endif /* HWLOC_PORT_CUDA_CUDA_RUNTIME_API_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/CoreFoundation/CoreFoundation.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/CoreFoundation/CoreFoundation.h new file mode 100644 index 0000000000..f4f0c8c74b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/CoreFoundation/CoreFoundation.h @@ -0,0 +1,38 @@ +#ifndef HWLOC_PORT_DARWIN_COREFOUNDATION_COREFOUNDATION_H +#define HWLOC_PORT_DARWIN_COREFOUNDATION_COREFOUNDATION_H + +typedef unsigned char UInt8; +typedef long int CFIndex; +typedef const int * CFNumberRef; +typedef const void * CFDataRef; +typedef const char * CFStringRef; +typedef const void * CFTypeRef; + +#define CFSTR(x) (x) + +#define CFRangeMake(x,y) (x) +typedef unsigned CFRange; + +typedef unsigned CFTypeID; +extern CFTypeID CFGetTypeID(CFTypeRef); +extern CFTypeID CFNumberGetTypeID(void); +extern CFTypeID CFDataGetTypeID(void); + +typedef int CFNumberType; +#define kCFNumberLongLongType 0 +extern int CFNumberGetValue(CFNumberRef, CFNumberType, void *); + +extern CFIndex CFDataGetLength(CFDataRef); +extern void CFDataGetBytes(CFDataRef, CFRange, UInt8 *); + +typedef unsigned CFStringEncoding; +#define kCFStringEncodingUTF8 0 +extern const char * CFStringGetCStringPtr(CFStringRef, CFStringEncoding); +extern CFStringRef CFCopyTypeIDDescription(CFTypeID); + +extern void CFRelease(CFTypeRef); + +typedef const void * CFAllocatorRef; +#define kCFAllocatorDefault NULL + +#endif /* HWLOC_PORT_DARWIN_COREFOUNDATION_COREFOUNDATION_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/IOKit/IOKitLib.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/IOKit/IOKitLib.h new file mode 100644 index 0000000000..5177c6a471 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/IOKit/IOKitLib.h @@ -0,0 +1,30 @@ +#ifndef HWLOC_PORT_DARWIN_IOKIT_IOKITLIB_H +#define HWLOC_PORT_DARWIN_IOKIT_IOKITLIB_H + +#include "CoreFoundation/CoreFoundation.h" + +typedef int io_registry_entry_t; +typedef int io_iterator_t; +typedef int io_object_t; +typedef const char io_name_t[10]; +typedef const char * io_string_t; + +typedef int kern_return_t; +#define KERN_SUCCESS 0 + +typedef int mach_port_t; +#define kIOMasterPortDefault 0 +extern io_registry_entry_t IORegistryEntryFromPath(mach_port_t, const io_string_t); +extern kern_return_t IOObjectRelease(io_object_t); + +extern kern_return_t IORegistryEntryGetChildIterator(io_registry_entry_t, const io_name_t, io_iterator_t *); +extern io_object_t IOIteratorNext(io_iterator_t); + +extern kern_return_t IORegistryEntryGetNameInPlane(io_registry_entry_t, const io_name_t, io_name_t); + +typedef unsigned IOOptionBits; +#define kNilOptions 0 +extern CFTypeRef IORegistryEntrySearchCFProperty(io_registry_entry_t, const io_name_t, CFStringRef, CFAllocatorRef, IOOptionBits); + +#endif /* HWLOC_PORT_DARWIN_IOKIT_IOKITLIB_H */ + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/sys/sysctl.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/sys/sysctl.h new file mode 100644 index 0000000000..e34b2de764 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/darwin/sys/sysctl.h @@ -0,0 +1,22 @@ +/* + * Copyright © 2009-2016 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_DARWIN_SYS_SYSCTL_H +#define HWLOC_PORT_DARWIN_SYS_SYSCTL_H + +extern int sysctl(int *name, int name_len, void *oldp, size_t *oldlenp, void *newp, size_t newlen); +extern int sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen); + +#define CTL_HW 6 +#define HW_PHYSMEM 5 + +/* hide Linux' host disabling _SC_LARGE_PAGESIZE */ +#undef HAVE_DECL__SC_LARGE_PAGESIZE +#define HAVE_DECL__SC_LARGE_PAGESIZE 1 +#undef _SC_LARGE_PAGESIZE +#define _SC_LARGE_PAGESIZE 33 + +#endif /* HWLOC_PORT_DARWIN_SYS_SYSCTL_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/pthread.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/pthread.h new file mode 100644 index 0000000000..6af46259bb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/pthread.h @@ -0,0 +1,9 @@ +/* + * Copyright © 2012 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_FREEBSD_PTHREAD_H +#define HWLOC_PORT_FREEBSD_PTHREAD_H + +#endif /* HWLOC_PORT_FREEBSD_PTHREAD_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/pthread_np.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/pthread_np.h new file mode 100644 index 0000000000..d2edaccfdb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/pthread_np.h @@ -0,0 +1,14 @@ +/* + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_FREEBSD_PTHREAD_NP_H +#define HWLOC_PORT_FREEBSD_PTHREAD_NP_H + +#include + +int pthread_getaffinity_np(pthread_t, size_t, cpuset_t *); +int pthread_setaffinity_np(pthread_t, size_t, const cpuset_t *); + +#endif /* HWLOC_PORT_FREEBSD_PTHREAD_NP_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/cpuset.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/cpuset.h new file mode 100644 index 0000000000..d12f59690f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/cpuset.h @@ -0,0 +1,38 @@ +/* + * Copyright © 2009 Université Bordeaux + * Copyright © 2015 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_FREEBSD_SYS_CPUSET_H +#define HWLOC_PORT_FREEBSD_SYS_CPUSET_H + +#include + +typedef long cpuset_t; +typedef int cpulevel_t; +typedef int cpuwhich_t; +typedef int cpusetid_t; + +#define CPU_LEVEL_CPUSET 2 +#define CPU_LEVEL_WHICH 3 +#define CPU_WHICH_TID 1 +#define CPU_WHICH_PID 2 +#define CPU_WHICH_DOMAIN 6 + +int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); +int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); + +#undef CPU_SETSIZE +#define CPU_SETSIZE (sizeof(cpuset_t) * CHAR_BIT) +#undef CPU_ZERO +#define CPU_ZERO(cpuset) (*(cpuset) = 0) +#undef CPU_SET +#define CPU_SET(cpu, cpuset) (*(cpuset) |= (1ULL<<(cpu))) +#undef CPU_ISSET +#define CPU_ISSET(cpu, cpuset) (*(cpuset) & (1ULL<<(cpu))) + +int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t size, cpuset_t *cpuset); +int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t size, const cpuset_t *cpuset); + +#endif /* HWLOC_PORT_FREEBSD_SYS_CPUSET_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/domainset.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/domainset.h new file mode 100644 index 0000000000..e1ed6f175b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/domainset.h @@ -0,0 +1,25 @@ +/* + * Copyright © 2009 Université Bordeaux + * Copyright © 2015-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_FREEBSD_SYS_DOMAINSET_H +#define HWLOC_PORT_FREEBSD_SYS_DOMAINSET_H + +typedef long domainset_t; + +#define DOMAINSET_POLICY_ROUNDROBIN 1 +#define DOMAINSET_POLICY_FIRSTTOUCH 2 +#define DOMAINSET_POLICY_PREFER 3 +#define DOMAINSET_POLICY_INTERLEAVE 4 + +#undef DOMAINSET_ZERO +#define DOMAINSET_ZERO(domainset) (*(domainset) = 0) +#undef DOMAINSET_SETSIZE +#define DOMAINSET_SETSIZE (sizeof(domainset_t) * CHAR_BIT) + +int cpuset_getdomain(cpulevel_t, cpuwhich_t, id_t, size_t, domainset_t *, int *); +int cpuset_setdomain(cpulevel_t, cpuwhich_t, id_t, size_t, const domainset_t *, int); + +#endif /* HWLOC_PORT_FREEBSD_SYS_DOMAINSET_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/param.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/param.h new file mode 100644 index 0000000000..ee6abd7308 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/param.h @@ -0,0 +1,4 @@ +#ifndef _SYS_PARAM_H_ +#define _SYS_PARAM_H_ + +#endif /* _SYS_PARAM_H_ */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/sysctl.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/sysctl.h new file mode 100644 index 0000000000..3acf1107a4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/sysctl.h @@ -0,0 +1,35 @@ +/* + * Copyright © 2009 inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_FREEBSD_SYS_SYSCTL_H +#define HWLOC_PORT_FREEBSD_SYS_SYSCTL_H + +extern int sysctl(int *name, int name_len, void *oldp, size_t *oldlenp, void *newp, size_t newlen); +extern int sysctlbyname(const char *name, void *oldp, size_t *oldlenp, const void *newp, size_t newlen); + +/* + * CTL_KERN identifiers + */ +#define CTL_KERN 1 +#define CTL_HW 6 + +/* + * CTL_KERN identifiers + */ +#define KERN_PROC 14 + +/* + * KERN_PROC subtypes + */ +#define KERN_PROC_PID 1 +#define KERN_PROC_INC_THREAD 0x10 + +/* + * CTL_HW identifiers + */ +#define HW_PHYSMEM 5 + +#endif /* HWLOC_PORT_FREEBSD_SYS_SYSCTL_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/thr.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/thr.h new file mode 100644 index 0000000000..09ea996936 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/thr.h @@ -0,0 +1,6 @@ +#ifndef HWLOC_PORT_FREEBSD_SYS_THR_H +#define HWLOC_PORT_FREEBSD_SYS_THR_H + +int thr_self(long *id); + +#endif /* HWLOC_PORT_FREEBSD_SYS_THR_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/user.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/user.h new file mode 100644 index 0000000000..3c023e4e14 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/freebsd/sys/user.h @@ -0,0 +1,13 @@ +#ifndef _SYS_USER_H_ +#define _SYS_USER_H_ + +typedef __int32_t lwpid_t; + +struct kinfo_proc { + pid_t ki_pid; + int ki_oncpu; + int ki_lastcpu; + lwpid_t ki_tid; +}; + +#endif /* _SYS_USER_H_ */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/NVCtrl/NVCtrl.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/NVCtrl/NVCtrl.h new file mode 100644 index 0000000000..20fd940ab9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/NVCtrl/NVCtrl.h @@ -0,0 +1,18 @@ +/* + * Copyright © 2013 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_GL_NVCTRL_NVCTRL_H +#define HWLOC_PORT_GL_NVCTRL_NVCTRL_H + +#define NV_CTRL_TARGET_TYPE_X_SCREEN 0 +#define NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN 4 +#define NV_CTRL_TARGET_TYPE_GPU 1 +#define NV_CTRL_PCI_DOMAIN 306 +#define NV_CTRL_PCI_BUS 239 +#define NV_CTRL_PCI_DEVICE 240 +#define NV_CTRL_PCI_FUNCTION 241 +#define NV_CTRL_STRING_PRODUCT_NAME 0 + +#endif /* HWLOC_PORT_GL_NVCTRL_NVCTRL_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/NVCtrl/NVCtrlLib.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/NVCtrl/NVCtrlLib.h new file mode 100644 index 0000000000..01f81dc50b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/NVCtrl/NVCtrlLib.h @@ -0,0 +1,14 @@ +/* + * Copyright © 2013 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_GL_NVCTRL_NVCTRLLIB_H +#define HWLOC_PORT_GL_NVCTRL_NVCTRLLIB_H + +int XNVCTRLIsNvScreen(Display *, int); +int XNVCTRLQueryTargetBinaryData(Display *, int, int, unsigned int, unsigned int, unsigned char **, int *); +int XNVCTRLQueryTargetAttribute(Display *, int, int, unsigned int, unsigned int, int *); +int XNVCTRLQueryTargetStringAttribute(Display *, int, int, unsigned int, unsigned int, char **ptr); + +#endif /* HWLOC_PORT_GL_NVCTRL_NVCTRLLIB_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/X11/Xlib.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/X11/Xlib.h new file mode 100644 index 0000000000..ce7f8f6e0e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/gl/X11/Xlib.h @@ -0,0 +1,16 @@ +/* + * Copyright © 2013 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_GL_X11_XLIB_H +#define HWLOC_PORT_GL_X11_XLIB_H + +typedef struct _XDisplay Display; + +Display *XOpenDisplay(const char*); +int XQueryExtension(Display*, const char*, int*, int*, int*); +int XCloseDisplay(Display*); +int ScreenCount(Display*); + +#endif /* HWLOC_PORT_GL_X11_XLIB_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/hpux/sys/mpctl.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/hpux/sys/mpctl.h new file mode 100644 index 0000000000..d0c2ccd4a9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/hpux/sys/mpctl.h @@ -0,0 +1,71 @@ +/* + * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_HPUX_SYS_MPCTL_H +#define HWLOC_PORT_HPUX_SYS_MPCTL_H + +typedef int spu_t, ldom_t, pthread_spu_t, pthread_ldom_t; + +typedef enum mpc_request { + MPC_GETNUMSPUS, + MPC_GETFIRSTSPU, + MPC_GETNEXTSPU, + + MPC_GETNUMSPUS_SYS, + MPC_GETFIRSTSPU_SYS, + MPC_GETNEXTSPU_SYS, + + MPC_GETCURRENTSTSPU, + MPC_SETPROCESS, + MPC_SETPROCESS_FORCE, + MPC_SETLWP, + MPC_SETLWP_FORCE, + MPC_SETLWP_UP, + + MPC_SETLDOM, + MPC_SETLWPLDOM, + + MPC_GETNUMLDOMS, + MPC_GETFIRSTLDOM, + MPC_GETNEXTLDOM, + MPC_GETNUMLDOMS_SYS, + MPC_GETFIRSTLDOM_SYS, + MPC_GETNEXTLDOM_SYS, + + MPC_SPUTOLDOM, + MPC_LDOMSPUS, + MPC_LDOMSPUS_SYS, + + MPC_GETPROCESS_BINDVALUE, + MPC_GETLWP_BINDVALUE +} mpc_request_t; + +#define MPC_SPUFLOAT 0 +#define MPC_LDOMFLOAT 1 +#define MPC_SELFPID 2 +#define MPC_SELFLWPPID 3 + +extern int mpctl(mpc_request_t, spu_t, ...); + +#define _SC_CCNUMA_SUPPORT 0 +#define _SC_PSET_SUPPORT 1 + +int pthread_processor_bind_np(int request, pthread_spu_t *answer, pthread_spu_t spu, pthread_t tid); + +int pthread_ldom_bind_np(pthread_ldom_t *answer, pthread_ldom_t ldom, pthread_t tid); + +#define PTHREAD_SELFTID_NP 0 +#define PTHREAD_LDOMFLOAT_NP 0 +#define PTHREAD_SPUFLOAT_NP 0 + +#define PTHREAD_BIND_ADVISORY_NP 0 +#define PTHREAD_BIND_FORCED_NP 1 + +#define MAP_MEM_LOCAL 0 +#define MAP_MEM_INTERLEAVED 1 +#define MAP_MEM_FIRST_TOUCH 2 + +#endif /* HWLOC_PORT_HPUX_SYS_MPCTL_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/levelzero/level_zero/ze_api.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/levelzero/level_zero/ze_api.h new file mode 100644 index 0000000000..fe9736569d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/levelzero/level_zero/ze_api.h @@ -0,0 +1,58 @@ +/* + * Copyright © 2020-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_L0_ZE_API_H +#define HWLOC_PORT_L0_ZE_API_H + +typedef int ze_result_t; +#define ZE_RESULT_SUCCESS 0 + +#define ZE_MAX_DEVICE_NAME 64 + +typedef void * ze_driver_handle_t; +typedef void * ze_device_handle_t; + +extern ze_result_t zeInit(int); +extern ze_result_t zeDriverGet(uint32_t *, ze_driver_handle_t *); +extern ze_result_t zeDeviceGet(ze_driver_handle_t, uint32_t *, ze_device_handle_t *); + +typedef enum _ze_device_type { + ZE_DEVICE_TYPE_GPU = 1, + ZE_DEVICE_TYPE_CPU = 2, + ZE_DEVICE_TYPE_FPGA = 3, + ZE_DEVICE_TYPE_MCA = 4, + ZE_DEVICE_TYPE_VPU = 5 +} ze_device_type_t; + +#define ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE (1<<1) + +typedef struct ze_device_properties { + ze_device_type_t type; + unsigned flags; + uint32_t numThreadsPerEU; + uint32_t numEUsPerSubslice; + uint32_t numSubslicesPerSlice; + uint32_t numSlices; +} ze_device_properties_t; + +extern ze_result_t zeDeviceGetProperties(ze_device_handle_t, ze_device_properties_t *); + +typedef struct ze_command_queue_group_properties { + unsigned long flags; + unsigned numQueues; +} ze_command_queue_group_properties_t; + +extern ze_result_t zeDeviceGetCommandQueueGroupProperties(ze_driver_handle_t, uint32_t *, ze_command_queue_group_properties_t *); + +extern ze_result_t zeDeviceGetSubDevices(ze_device_handle_t, uint32_t *, ze_device_handle_t*); + +typedef struct ze_device_memory_properties { + uint64_t totalSize; + char *name; +} ze_device_memory_properties_t; + +extern ze_result_t zeDeviceGetMemoryProperties(ze_device_handle_t, uint32_t *, ze_device_memory_properties_t*); + +#endif /* HWLOC_PORT_L0_ZE_API_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/levelzero/level_zero/zes_api.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/levelzero/level_zero/zes_api.h new file mode 100644 index 0000000000..75a47b7b14 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/levelzero/level_zero/zes_api.h @@ -0,0 +1,73 @@ +/* + * Copyright © 2020-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_L0_ZET_API_H +#define HWLOC_PORT_L0_ZET_API_H + +#include "ze_api.h" + +typedef void * zes_device_handle_t; + +typedef struct { + char *vendorName; + char *brandName; + char *modelName; + char *serialNumber; + char *boardNumber; + unsigned numSubdevices; +} zes_device_properties_t; + +extern ze_result_t zesDeviceGetProperties(zes_device_handle_t, zes_device_properties_t *); + +typedef struct { + struct { + unsigned domain, bus, device, function; + } address; + struct { + unsigned gen; + unsigned lanes; + unsigned maxBandwidth; + } maxSpeed; +} zes_pci_properties_t; + +extern ze_result_t zesDevicePciGetProperties(zes_device_handle_t, zes_pci_properties_t *); + +typedef enum _zes_mem_type_t { + ZES_MEM_TYPE_HBM = 0, + ZES_MEM_TYPE_DDR = 1, + ZES_MEM_TYPE_DDR3 = 2, + ZES_MEM_TYPE_DDR4 = 3, + ZES_MEM_TYPE_DDR5 = 4, + ZES_MEM_TYPE_LPDDR = 5, + ZES_MEM_TYPE_LPDDR3 = 6, + ZES_MEM_TYPE_LPDDR4 = 7, + ZES_MEM_TYPE_LPDDR5 = 8, + ZES_MEM_TYPE_SRAM = 9, + ZES_MEM_TYPE_L1 = 10, + ZES_MEM_TYPE_L3 = 11, + ZES_MEM_TYPE_GRF = 12, + ZES_MEM_TYPE_SLM = 13, +} zes_mem_type_t; + +typedef void * zes_mem_handle_t; + +extern ze_result_t zesDeviceEnumMemoryModules(zes_device_handle_t, uint32_t*, zes_mem_handle_t*); + +typedef struct { + zes_mem_type_t type; + int onSubdevice; + unsigned subdeviceId; + uint64_t physicalSize; +} zes_mem_properties_t; + +extern ze_result_t zesMemoryGetProperties(zes_mem_handle_t, zes_mem_properties_t*); + +typedef struct { + uint64_t size; +} zes_mem_state_t; + +extern ze_result_t zesMemoryGetState(zes_mem_handle_t, zes_mem_state_t*); + +#endif /* HWLOC_PORT_L0_ZET_API_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/pthread.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/pthread.h new file mode 100644 index 0000000000..ee6f26c672 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/pthread.h @@ -0,0 +1,16 @@ +/* + * Copyright © 2012 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_NETBSD_PTHREAD_H +#define HWLOC_PORT_NETBSD_PTHREAD_H + +#include + +pthread_t pthread_self(void); + +int pthread_getaffinity_np(pthread_t, size_t, cpuset_t *); +int pthread_setaffinity_np(pthread_t, size_t, cpuset_t *); + +#endif /* HWLOC_PORT_NETBSD_PTHREAD_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/sched.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/sched.h new file mode 100644 index 0000000000..536905fd42 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/sched.h @@ -0,0 +1,22 @@ +/* + * Copyright © 2012 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_NETBSD_SCHED_H +#define HWLOC_PORT_NETBSD_SCHED_H + +typedef struct _cpuset cpuset_t; +typedef unsigned long cpuid_t; + +cpuset_t *cpuset_create(void); +void cpuset_destroy(cpuset_t *); +void cpuset_zero(cpuset_t *); +int cpuset_set(cpuid_t, cpuset_t *); +int cpuset_isset(cpuid_t, const cpuset_t *); +size_t cpuset_size(const cpuset_t *); + +int sched_getaffinity_np(pid_t, size_t, cpuset_t *); +int sched_setaffinity_np(pid_t, size_t, cpuset_t *); + +#endif /* HWLOC_PORT_NETBSD_SCHED_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/sys/sysctl.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/sys/sysctl.h new file mode 100644 index 0000000000..f379af6fd0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/netbsd/sys/sysctl.h @@ -0,0 +1,14 @@ +/* + * Copyright © 2014 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_NETBSD_SYS_SYSCTL_H +#define HWLOC_PORT_NETBSD_SYS_SYSCTL_H + +extern int sysctl(const int *, unsigned int, void *, size_t *, const void *, size_t); + +#define CTL_HW 6 +#define HW_PHYSMEM64 13 + +#endif /* HWLOC_PORT_NETBSD_SYS_SYSCTL_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/nvml/nvml.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/nvml/nvml.h new file mode 100644 index 0000000000..398835d425 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/nvml/nvml.h @@ -0,0 +1,48 @@ +/* + * Copyright © 2013-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_NVML_NVML_H +#define HWLOC_PORT_NVML_NVML_H + +/* we need to replace any NVML-related #define that configure may have put in private/autogen/config.h */ +#ifndef HWLOC_CONFIGURE_H +#error nvml.h must be included after private/autogen/config.h +#endif +#undef HAVE_DECL_NVMLDEVICEGETMAXPCIELINKGENERATION +#define HAVE_DECL_NVMLDEVICEGETMAXPCIELINKGENERATION 1 + + +typedef int nvmlReturn_t; +#define NVML_SUCCESS 0 + +typedef struct nvmlPciInfo_st { + unsigned int domain; + unsigned int bus; + unsigned int device; +} nvmlPciInfo_t; + +struct nvmlDevice_st; +typedef struct nvmlDevice_st* nvmlDevice_t; + +nvmlReturn_t nvmlInit(void); +nvmlReturn_t nvmlShutdown(void); +char* nvmlErrorString(nvmlReturn_t result); +nvmlReturn_t nvmlDeviceGetCount(unsigned int *deviceCount); +nvmlReturn_t nvmlDeviceGetHandleByIndex(unsigned int index, nvmlDevice_t *device); +nvmlReturn_t nvmlDeviceGetPciInfo(nvmlDevice_t device, nvmlPciInfo_t *pci); +nvmlReturn_t nvmlDeviceGetName(nvmlDevice_t device, char *name, unsigned int length); +nvmlReturn_t nvmlDeviceGetSerial(nvmlDevice_t device, char *serial, unsigned int length); +nvmlReturn_t nvmlDeviceGetUUID(nvmlDevice_t device, char *uuid, unsigned int length); +nvmlReturn_t nvmlDeviceGetMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int *maxLinkGen); +nvmlReturn_t nvmlDeviceGetMaxPcieLinkWidth(nvmlDevice_t device, unsigned int *maxLinkGen); + +#define NVML_NVLINK_MAX_LINKS 6 +typedef unsigned nvmlEnableState_t; +#define NVML_FEATURE_ENABLED 1 +nvmlReturn_t nvmlDeviceGetNvLinkState(nvmlDevice_t device, unsigned int link, nvmlEnableState_t * isActive); +nvmlReturn_t nvmlDeviceGetNvLinkVersion(nvmlDevice_t device, unsigned int link, unsigned int* version); +nvmlReturn_t nvmlDeviceGetNvLinkRemotePciInfo(nvmlDevice_t device, unsigned int link, nvmlPciInfo_t * pci); + +#endif /* HWLOC_PORT_NVML_NVML_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/opencl/CL/cl.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/opencl/CL/cl.h new file mode 100644 index 0000000000..3bc8b0648d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/opencl/CL/cl.h @@ -0,0 +1,44 @@ +/* + * Copyright © 2013-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_OPENCL_CL_CL_H +#define HWLOC_PORT_OPENCL_CL_CL_H + +typedef char cl_char; +typedef unsigned long cl_ulong; +typedef unsigned int cl_uint; +typedef int cl_int; +typedef unsigned int cl_device_type; +typedef unsigned int cl_platform_info; +typedef unsigned int cl_device_info; + +struct _cl_platform_id; +typedef struct _cl_platform_id * cl_platform_id; +struct _cl_device_id; +typedef struct _cl_device_id * cl_device_id; + +#define CL_SUCCESS 0 + +cl_int clGetPlatformIDs(cl_uint, cl_platform_id *, cl_uint *); +cl_int clGetDeviceIDs(cl_platform_id, cl_device_type, cl_uint, cl_device_id *, cl_uint *); +cl_int clGetDeviceInfo(cl_device_id, cl_device_info, size_t, void *, size_t *); +cl_int clGetPlatformInfo(cl_platform_id, cl_platform_info, size_t, void *, size_t *); + +#define CL_DEVICE_TYPE_DEFAULT (1 << 0) +#define CL_DEVICE_TYPE_CPU (1 << 1) +#define CL_DEVICE_TYPE_GPU (1 << 2) +#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) +#define CL_DEVICE_TYPE_CUSTOM (1 << 4) +#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF + +#define CL_PLATFORM_NAME 0x0902 +#define CL_DEVICE_TYPE 0x1000 +#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 +#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F +#define CL_DEVICE_NAME 0x102B +#define CL_DEVICE_VENDOR 0x102C +#define CL_DEVICE_PLATFORM 0x1031 + +#endif /* HWLOC_PORT_OPENCL_CL_CL_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/rsmi/rocm_smi/rocm_smi.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/rsmi/rocm_smi/rocm_smi.h new file mode 100644 index 0000000000..c671926132 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/rsmi/rocm_smi/rocm_smi.h @@ -0,0 +1,88 @@ +/* + * Copyright © 2013-2021 Inria. All rights reserved. + * Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. + * Written by Advanced Micro Devices, + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_RSMI_RSMI_H +#define HWLOC_PORT_RSMI_RSMI_H + +/* we need to replace any RSMI-related #define that configure may have put in private/autogen/config.h */ +#ifndef HWLOC_CONFIGURE_H +#error rocm_smi.h must be included after private/autogen/config.h +#endif + +typedef int rsmi_status_t; +#define RSMI_STATUS_SUCCESS 0 + +typedef struct { int major; int minor; int patch; } rsmi_version_t; + +typedef int RSMI_IO_LINK_TYPE; +#define RSMI_IOLINK_TYPE_XGMI 2 + +#define RSMI_MAX_NUM_FREQUENCIES 32 + +/** + * @brief This structure holds information about clock frequencies. + */ +typedef struct { + /** + * The number of supported frequencies + */ + uint32_t num_supported; + + /** + * The current frequency index + */ + uint32_t current; + + /** + * List of frequencies. + * Only the first num_supported frequencies are valid. + */ + uint64_t frequency[RSMI_MAX_NUM_FREQUENCIES]; +} rsmi_frequencies_t; +typedef rsmi_frequencies_t rsmi_frequencies; + +/** + * @brief This structure holds information about the possible PCIe + * bandwidths. Specifically, the possible transfer rates and their + * associated numbers of lanes are stored here. + */ +typedef struct { + /** + * Transfer rates (T/s) that are possible + */ + rsmi_frequencies_t transfer_rate; + + /** + * List of lanes for corresponding transfer rate. + * Only the first num_supported bandwidths are valid. + */ + uint32_t lanes[RSMI_MAX_NUM_FREQUENCIES]; +} rsmi_pcie_bandwidth_t; + +typedef enum { + RSMI_MEM_TYPE_VRAM, + RSMI_MEM_TYPE_VIS_VRAM, + RSMI_MEM_TYPE_GTT, +} rsmi_memory_type_t; + +rsmi_status_t rsmi_init(uint64_t init_flags); +rsmi_status_t rsmi_shut_down(void); +rsmi_status_t rsmi_version_get(rsmi_version_t *); +rsmi_status_t rsmi_status_string(rsmi_status_t, const char **string); +rsmi_status_t rsmi_num_monitor_devices(uint32_t *num_devices); +rsmi_status_t rsmi_dev_pci_id_get(uint32_t dv_ind, uint64_t *bdfid); +rsmi_status_t rsmi_dev_name_get(uint32_t dv_ind, char *name, size_t len); +rsmi_status_t rsmi_dev_serial_number_get(uint32_t dv_ind, char *serial_num, uint32_t len); +rsmi_status_t rsmi_dev_unique_id_get(uint32_t dv_ind, uint64_t *id); +rsmi_status_t rsmi_dev_pci_bandwidth_get(uint32_t dv_ind, rsmi_pcie_bandwidth_t *bandwidth); +rsmi_status_t rsmi_dev_xgmi_hive_id_get(uint32_t dv_ind, uint64_t *hive_id); +rsmi_status_t rsmi_topo_get_link_type(uint32_t dv_ind_src, uint32_t dv_ind_dst, + uint64_t *hops, RSMI_IO_LINK_TYPE *type); +rsmi_status_t rsmi_dev_memory_total_get(uint32_t dv_ind, rsmi_memory_type_t mem_type, + uint64_t *total); + +#endif /* HWLOC_PORT_RSMI_RSMI_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/kstat.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/kstat.h new file mode 100644 index 0000000000..fffedc982e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/kstat.h @@ -0,0 +1,53 @@ +/* + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_SOLARIS_KSTAT_H +#define HWLOC_PORT_SOLARIS_KSTAT_H + +#include + +typedef long kid_t; + +#define KSTAT_STRLEN 31 + +typedef struct kstat { + char ks_module[KSTAT_STRLEN]; + char ks_name[KSTAT_STRLEN]; + int ks_instance; + struct kstat *ks_next; +} kstat_t; + +typedef struct kstat_named { + unsigned char data_type; + union { + char c[16]; + int32_t i32; + uint32_t ui32; + struct { + union { + char *ptr; + } addr; + } str; + } value; +} kstat_named_t; + +typedef struct kstat_ctl { + kstat_t *kc_chain; +} kstat_ctl_t; + +#define KSTAT_DATA_CHAR 1 +#define KSTAT_DATA_INT32 1 +#define KSTAT_DATA_UINT32 2 +#define KSTAT_DATA_INT64 3 +#define KSTAT_DATA_UINT64 4 +#define KSTAT_DATA_STRING 9 + +kstat_ctl_t *kstat_open(void); +kid_t kstat_read(kstat_ctl_t *, kstat_t *, void *); +void *kstat_data_lookup(kstat_t *, char *); +int kstat_close(kstat_ctl_t *); + +#endif /* HWLOC_PORT_SOLARIS_KSTAT_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/picl.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/picl.h new file mode 100644 index 0000000000..094cdd77c8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/picl.h @@ -0,0 +1,48 @@ +/* + * Copyright © 2011 inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_SOLARIS_PICL_H +#define HWLOC_PORT_SOLARIS_PICL_H + +#include +#include + +#define PICL_PROPNAMELEN_MAX 256 + +typedef uint64_t picl_nodehdl_t; +typedef uint64_t picl_prophdl_t; + +typedef enum { + PICL_PTYPE_UNKNOWN, + PICL_PTYPE_INT, + PICL_PTYPE_UNSIGNED_INT, + PICL_PTYPE_TABLE, + PICL_PTYPE_CHARSTRING +} picl_prop_type_t; + +typedef struct { + picl_prop_type_t type; + size_t size; + char name[PICL_PROPNAMELEN_MAX]; +} picl_propinfo_t; + +typedef enum { + PICL_SUCCESS, + PICL_WALK_TERMINATE, + PICL_ENDOFLIST +} picl_errno_t; + +extern int picl_initialize(void); +extern int picl_shutdown(void); +extern int picl_get_root(picl_nodehdl_t *nodehandle); +extern int picl_get_first_prop(picl_nodehdl_t nodeh, picl_prophdl_t *proph); +extern int picl_get_next_prop(picl_prophdl_t proph, picl_prophdl_t *nexth); +extern int picl_get_propinfo(picl_prophdl_t proph, picl_propinfo_t *pi); +extern int picl_get_propval(picl_prophdl_t proph, void *valbuf, size_t sz); +extern int picl_get_next_by_row(picl_prophdl_t thish, picl_prophdl_t *proph); +extern int picl_get_next_by_col(picl_prophdl_t thish, picl_prophdl_t *proph); +extern int picl_walk_tree_by_class(picl_nodehdl_t rooth, const char *classname, void *c_args, int (*callback_fn)(picl_nodehdl_t hdl, void *args)); + +#endif /* HWLOC_PORT_SOLARIS_PICL_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/lgrp_user.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/lgrp_user.h new file mode 100644 index 0000000000..de75ef1d53 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/lgrp_user.h @@ -0,0 +1,66 @@ +/* + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009-2011 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_SOLARIS_SYS_LGRP_USER_H +#define HWLOC_PORT_SOLARIS_SYS_LGRP_USER_H + +#include + +typedef int lgrp_cookie_t; +#define LGRP_COOKIE_NONE 0 +typedef long lgrp_id_t; +typedef long long lgrp_mem_size_t; + +typedef enum lgrp_content { + LGRP_CONTENT_ALL, + LGRP_CONTENT_HIERARCHY = LGRP_CONTENT_ALL, + LGRP_CONTENT_DIRECT +} lgrp_content_t; + +typedef enum lgrp_view { + LGRP_VIEW_CALLER, + LGRP_VIEW_OS +} lgrp_view_t; + +typedef enum lgrp_mem_size_flag { + LGRP_MEM_SZ_FREE, + LGRP_MEM_SZ_INSTALLED +} lgrp_mem_size_flag_t; + +typedef enum lgrp_rsrc { + LGRP_RSRC_MEM +} lgrp_rsrc_t; + +typedef enum lgrp_lat_between { + LGRP_LAT_CPU_TO_MEM +} lgrp_lat_between_t; + +typedef enum lgrp_affinity { + LGRP_AFF_NONE, + LGRP_AFF_WEAK, + LGRP_AFF_STRONG +} lgrp_affinity_t; + +lgrp_cookie_t lgrp_init(lgrp_view_t view); + +int lgrp_nlgrps(lgrp_cookie_t cookie); +lgrp_id_t lgrp_root(lgrp_cookie_t cookie); +int lgrp_cpus(lgrp_cookie_t cookie, lgrp_id_t lgrp, processorid_t *cpuids, unsigned int count, int content); +int lgrp_children(lgrp_cookie_t cookie, lgrp_id_t parent, lgrp_id_t *lgrp_array, unsigned int lgrp_array_size); +lgrp_mem_size_t lgrp_mem_size(lgrp_cookie_t cookie, lgrp_id_t lgrp, lgrp_mem_size_flag_t type, lgrp_content_t content); +int lgrp_resources(lgrp_cookie_t cookie, lgrp_id_t lgrp, lgrp_id_t *lgrps, unsigned int count, lgrp_rsrc_t type); +int lgrp_latency_cookie(lgrp_cookie_t cookie, lgrp_id_t from, lgrp_id_t to, lgrp_lat_between_t between); +int lgrp_affinity_set(idtype_t idtype, id_t id, lgrp_id_t lgrp, lgrp_affinity_t aff); +lgrp_affinity_t lgrp_affinity_get(idtype_t idtype, id_t id, lgrp_id_t lgrp); + +int lgrp_fini(lgrp_cookie_t cookie); + +/* Should actually be in sys/mman.h, but don't want to interfere with the system one */ +#define MADV_ACCESS_DEFAULT 6 +#define MADV_ACCESS_LWP 7 +#define MADV_ACCESS_MANY 8 + +#endif /* HWLOC_PORT_SOLARIS_SYS_LGRP_USER_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/processor.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/processor.h new file mode 100644 index 0000000000..66d016c274 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/processor.h @@ -0,0 +1,24 @@ +/* + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_SOLARIS_SYS_PROCESSOR_H +#define HWLOC_PORT_SOLARIS_SYS_PROCESSOR_H + +#include +typedef int processorid_t; +#define PBIND_NONE -1 +#define PBIND_QUERY -2 + +extern int processor_bind(idtype_t idtype, id_t id, processorid_t processorid, processorid_t *obind); +extern processorid_t getcpuid(void); + +/* hide Linux' host disabling _SC_LARGE_PAGESIZE */ +#undef HAVE_DECL__SC_LARGE_PAGESIZE +#define HAVE_DECL__SC_LARGE_PAGESIZE 1 +#undef _SC_LARGE_PAGESIZE +#define _SC_LARGE_PAGESIZE 33 + +#endif /* HWLOC_PORT_SOLARIS_SYS_PROCESSOR_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/procset.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/procset.h new file mode 100644 index 0000000000..adc5b75bcd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/procset.h @@ -0,0 +1,23 @@ +/* + * Copyright © 2009-2014 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_SOLARIS_SYS_PROCSET_H +#define HWLOC_PORT_SOLARIS_SYS_PROCSET_H + +#ifndef __ENUM_IDTYPE_T +/* Linux doesn't have idtype_t unless __ENUM_IDTYPE_T is set */ +typedef int idtype_t; +#ifndef P_PID +/* If there's no idtype_t, P_PID could exist as a #define */ +#define P_PID 1 +#endif +#endif + +/* Linux never has P_LWPID and P_MYID */ +#define P_LWPID 2 +#define P_MYID 3 + +#endif /* HWLOC_PORT_SOLARIS_SYS_PROCSET_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/systeminfo.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/systeminfo.h new file mode 100644 index 0000000000..49077d330a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/solaris/sys/systeminfo.h @@ -0,0 +1,15 @@ +/* + * Copyright © 2011-2017 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_SOLARIS_SYS_SYSTEMINFO_H +#define HWLOC_PORT_SOLARIS_SYS_SYSTEMINFO_H + +#define SI_ARCHITECTURE 6 +#define SI_HW_PROVIDER 8 +#define SI_PLATFORM 513 + +extern int sysinfo(int, char *, long); + +#endif /* HWLOC_PORT_SOLARIS_SYS_SYSTEMINFO_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/windows/windows.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/windows/windows.h new file mode 100644 index 0000000000..1ae6626b74 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/windows/windows.h @@ -0,0 +1,295 @@ +/* + * Copyright © 2009-2020 Inria. All rights reserved. + * Copyright © 2009-2012 Université Bordeaux + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_WINDOWS_WINDOWS_H +#define HWLOC_PORT_WINDOWS_WINDOWS_H + +#include + +#define CALLBACK +#define FALSE 0 + +#define DECLARE_HANDLE(n) typedef struct n##__ {int i;} *n +DECLARE_HANDLE(HINSTANCE); +typedef HINSTANCE HMODULE; +typedef int WINBOOL, BOOL; +typedef int64_t LONGLONG; +typedef uint64_t DWORDLONG; +typedef DWORDLONG ULONGLONG, *PULONGLONG; +typedef unsigned char BYTE, UCHAR; +typedef unsigned short WORD, USHORT; +typedef unsigned int UINT, UINT_PTR, DWORD, *PDWORD, *LPDWORD; +typedef unsigned long ULONG_PTR, DWORD_PTR, *PDWORD_PTR; +typedef long LONG, LONG_PTR; +typedef const char *LPCSTR; +typedef int (*FARPROC)(void); +typedef void *PVOID,*LPVOID; +typedef LONG NTSTATUS; +typedef char CHAR; +typedef CHAR *LPSTR; +typedef LPSTR LPTSTR; +typedef const void *LPCVOID; +typedef ULONG_PTR SIZE_T; +typedef LONG_PTR LRESULT; +typedef UINT_PTR WPARAM; +typedef LONG_PTR LPARAM; +typedef void *HGDIOBJ; +typedef void *HWND; +typedef struct tagMSG { + void *dummy; +} MSG; +typedef struct tagMSG *LPMSG; +typedef void VOID; +typedef WORD ATOM; +typedef char TCHAR; +typedef const TCHAR *LPCTSTR; +typedef void *HBRUSH; +typedef void *HICON; +typedef void *HMENU; +typedef void *HFONT; +typedef void *HPEN; +typedef HICON HCURSOR; +typedef DWORD COLORREF; +typedef LRESULT CALLBACK (*WNDPROC)(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); +typedef struct tagWNDCLASS { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCTSTR lpszMenuName; + LPCTSTR lpszClassName; +} WNDCLASS; +typedef void *HDC; +typedef struct tagPAINTSTRUCT { + HDC hdc; +} PAINTSTRUCT, *LPPAINTSTRUCT; +typedef struct _RECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECT, *LPRECT; +typedef void *HRGN; +typedef struct tagPOINT { + void *dummy; +} *LPPOINT; +typedef struct _SIZE { + unsigned cx; + unsigned cy; +} SIZE, *LPSIZE; + +/* This is to cope with linux using integers for hwloc_pid_t and hwloc_thread_t +typedef PVOID HANDLE; */ +typedef int HANDLE; + +#define WINAPI + +#define ANYSIZE_ARRAY 1 + +#define ERROR_INSUFFICIENT_BUFFER 122L + +#define MEM_COMMIT 0x1000 +#define MEM_RESERVE 0x2000 +#define MEM_RELEASE 0x8000 + +#define PAGE_EXECUTE_READWRITE 0x0040 + +WINAPI HINSTANCE LoadLibrary(LPCSTR); +WINAPI HMODULE GetModuleHandle(LPCSTR); +WINAPI FARPROC GetProcAddress(HINSTANCE, LPCSTR); +WINAPI DWORD GetLastError(void); + +DWORD_PTR WINAPI SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask); +BOOL WINAPI SetProcessAffinityMask(HANDLE hProcess, DWORD_PTR dwProcessAffinityMask); +BOOL WINAPI GetProcessAffinityMask(HANDLE hProcess, PDWORD_PTR lpProcessAffinityMask, PDWORD_PTR lpSystemAffinityMask); + +HANDLE WINAPI GetCurrentThread(void); +HANDLE WINAPI GetCurrentProcess(void); + +PVOID WINAPI VirtualAlloc(PVOID,DWORD,DWORD,DWORD); + +BOOL GetNumaAvailableMemoryNode(UCHAR Node, PULONGLONG AvailableBytes); + +typedef struct _SYSTEM_INFO { + _ANONYMOUS_UNION + union { + DWORD dwOemId; + _ANONYMOUS_STRUCT + struct { + WORD wProcessorArchitecture; + WORD wReserved; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + DWORD dwPageSize; + LPVOID lpMinimumApplicationAddress; + LPVOID lpMaximumApplicationAddress; + DWORD_PTR dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; +} SYSTEM_INFO, *LPSYSTEM_INFO; + +void WINAPI GetSystemInfo(LPSYSTEM_INFO lpSystemInfo); + +HANDLE WINAPI OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId); +#define PROCESS_SET_INFORMATION 0x0200 +#define PROCESS_QUERY_INFORMATION 0x0400 + +DWORD WINAPI FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPTSTR lpBuffer, DWORD nSize, va_list *Arguments); +#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100 +#define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000 + +WORD MAKELANGID(USHORT usPrimaryLanguage, USHORT usSubLanguage); +#define LANG_NEUTRAL 0x00 +#define SUBLANG_DEFAULT 0x01 + +HGDIOBJ GetStockObject(int fnObject); +BOOL DeleteObject(HGDIOBJ hObject); +HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj); + +HWND WINAPI CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam); +BOOL WINAPI ShowWindow(HWND hWnd, int nCmdShow); +BOOL InvalidateRect(HWND hWnd, const RECT *lpRect, BOOL bErase); +BOOL UpdateWindow(HWND hWnd); +BOOL RedrawWindow(HWND hWnd, const RECT *lprcUpdate, HRGN hrgnUpdate, UINT flags); +BOOL DestroyWindow(HWND hWnd); +COLORREF RGB(BYTE byRed, BYTE byGreen, BYTE byBlue); +HBRUSH CreateSolidBrush(COLORREF crColor); +COLORREF SetBkColor(HDC hdc, COLORREF crColor); +COLORREF SetTextColor(HDC hdc, COLORREF crColor); +BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); +BOOL MoveToEx(HDC hdc, int X, int Y, LPPOINT lpPoint); +BOOL LineTo(HDC hdc, int nXEnd, int nYEnd); +HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwItalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace); +#define FW_NORMAL 400 +#define FW_BOLD 700 +#define PS_SOLID 0 +#define PS_DASH 1 +#define PS_DOT 2 +#define PS_DASHDOT 3 +#define PS_DASHDOTDOT 4 +HPEN CreatePen(int iStyle, int cWidth, COLORREF color); +BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cchString); +BOOL GetTextExtentPoint32(HDC hdc, LPCTSTR lpString, int c, LPSIZE lpSize); +#define TRANSPARENT 0 +int SetBkMode(HDC hdc, int mode); + +LRESULT DispatchMessage(const MSG *lpmsg); +BOOL TranslateMessage(const MSG *lpMsg); +BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); +VOID WINAPI PostQuitMessage(int nExitCode); + +typedef struct _OSVERSIONINFOEX { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[128]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} OSVERSIONINFOEX; +typedef OSVERSIONINFOEX* LPOSVERSIONINFO; +BOOL GetVersionEx(LPOSVERSIONINFO lpVersionInformation); +void ZeroMemory(PVOID Destination, SIZE_T Length); + +BOOL GetComputerName(LPSTR lpBuffer, LPDWORD nSize); + +#define WM_DESTROY 2 +#define WM_SIZE 5 +#define WM_PAINT 15 +#define WM_KEYDOWN 256 +#define WM_KEYUP 257 +#define WM_CHAR 258 +#define WM_MOUSEMOVE 512 +#define WM_LBUTTONDOWN 513 +#define WM_LBUTTONUP 514 + +#define MK_LBUTTON 1 + +#define VK_ESCAPE 0x1B +#define VK_CONTROL 17 +#define VK_PRIOR 33 +#define VK_NEXT 34 +#define VK_END 35 +#define VK_HOME 36 +#define VK_LEFT 37 +#define VK_UP 38 +#define VK_RIGHT 39 +#define VK_DOWN 40 +#define VK_F5 0x74 + +#define RDW_INVALIDATE 1 + +#define SM_CYCAPTION 4 +#define SM_CXFULLSCREEN 16 +#define SM_CYFULLSCREEN 17 +#define SM_CXSIZEFRAME 32 +#define SM_CYSIZEFRAME 33 + +#define CW_USEDEFAULT 0x80000000 + +#define SW_SHOWDEFAULT 10 + +#define WS_OVERLAPPEDWINDOW 0xcf0000 + +#define MAKEINTRESOURCE(x) (LPCTSTR)(x) +#define IDC_SIZEALL MAKEINTRESOURCE(32646) +#define IDI_APPLICATION MAKEINTRESOURCE(32512) + +#define DEFAULT_CHARSET 43 +#define DEFAULT_QUALITY 43 +#define DEFAULT_PITCH 43 +#define OUT_DEFAULT_PRECIS 43 +#define CLIP_DEFAULT_PRECIS 43 + +HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint); +BOOL EndPaint(HWND hWnd, const PAINTSTRUCT *lpPaint); + +int GET_X_LPARAM(LPARAM lParam); +int GET_Y_LPARAM(LPARAM lParam); + +WORD LOWORD(DWORD dwValue); +WORD HIWORD(DWORD dwValue); + +LRESULT WINAPI DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); + +BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags); +#define SWP_NOMOVE 0x0002 +#define SWP_NOZORDER 0x0004 +#define SWP_NOCOPYBITS 0x0100 +#define SWP_NOOWNERZORDER 0x0200 +#define SWP_DEFERERASE 0x2000 + +#define HWND_TOP (HWND)0 + +BOOL AdjustWindowRect(LPRECT lpRect, DWORD dwStyle, BOOL bMenu); + +#define WHITE_BRUSH 26 + +HCURSOR WINAPI LoadCursor(HINSTANCE hInstance, LPCTSTR lpCursorName); +HICON WINAPI LoadIcon(HINSTANCE hInstance, LPCTSTR lpIconName); + +int WINAPI GetSystemMetrics(int nIndex); + +ATOM WINAPI RegisterClass(const WNDCLASS *lpWndClass); + +/* hide Linux' host disabling _SC_LARGE_PAGESIZE */ +#undef HAVE_DECL__SC_LARGE_PAGESIZE +#define HAVE_DECL__SC_LARGE_PAGESIZE 1 +#undef _SC_LARGE_PAGESIZE +#define _SC_LARGE_PAGESIZE 33 + +#endif /* HWLOC_PORT_WINDOWS_WINDOWS_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/windows/windowsx.h b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/windows/windowsx.h new file mode 100644 index 0000000000..f6d94bf52f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/ports/include/windows/windowsx.h @@ -0,0 +1,10 @@ +/* + * Copyright © 2015 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_PORT_WINDOWS_WINDOWSX_H +#define HWLOC_PORT_WINDOWS_WINDOWSX_H + + +#endif /* HWLOC_PORT_WINDOWS_WINDOWSX_H */ diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/rename/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/rename/Makefile.am new file mode 100644 index 0000000000..f9974fe92b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/rename/Makefile.am @@ -0,0 +1,88 @@ +if !HWLOC_HAVE_DARWIN +all-local: needed useless +else HWLOC_HAVE_DARWIN +# Do nothing on Darwin because their default compiler doesn't like our gcc/cpp lines +all-local: +endif HWLOC_HAVE_DARWIN + +TEST_CPPFLAGS = +if HWLOC_HAVE_LINUX +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_LINUX=1 +endif HWLOC_HAVE_LINUX +if HWLOC_HAVE_LINUX_LIBNUMA +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_LINUX_LIBNUMA=1 +endif HWLOC_HAVE_LINUX_LIBNUMA +if HWLOC_HAVE_SCHED_SETAFFINITY +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_GLIBC_SCHED=1 +endif HWLOC_HAVE_SCHED_SETAFFINITY +if HWLOC_HAVE_LIBIBVERBS +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_OPENFABRICS_VERBS=1 +endif HWLOC_HAVE_LIBIBVERBS +if HWLOC_HAVE_OPENCL +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_OPENCL=1 $(HWLOC_OPENCL_CFLAGS) $(HWLOC_OPENCL_CPPFLAGS) +endif HWLOC_HAVE_OPENCL +if HWLOC_HAVE_CUDA +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_CUDA=1 $(HWLOC_CUDA_CFLAGS) $(HWLOC_CUDA_CPPFLAGS) +endif HWLOC_HAVE_CUDA +if HWLOC_HAVE_CUDART +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_CUDART=1 $(HWLOC_CUDART_CFLAGS) $(HWLOC_CUDART_CPPFLAGS) +endif HWLOC_HAVE_CUDART +if HWLOC_HAVE_NVML +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_NVML=1 $(HWLOC_NVML_CFLAGS) $(HWLOC_NVML_CPPFLAGS) +endif HWLOC_HAVE_NVML +if HWLOC_HAVE_RSMI +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_RSMI=1 $(HWLOC_RSMI_CFLAGS) $(HWLOC_RSMI_CPPFLAGS) +endif HWLOC_HAVE_RSMI +if HWLOC_HAVE_LEVELZERO +TEST_CPPFLAGS += -DHWLOC_TEST_RENAME_LEVELZERO=1 $(HWLOC_LEVELZERO_CFLAGS) $(HWLOC_LEVELZERO_CPPFLAGS) +endif HWLOC_HAVE_LEVELZERO + +dirs: + mkdir -p include/hwloc/autogen include/private/autogen + +include/hwloc/autogen/config.h: dirs $(HWLOC_top_builddir)/include/hwloc/autogen/config.h + sed -e 's/^#define HWLOC_SYM_TRANSFORM 0/#define HWLOC_SYM_TRANSFORM 1/' \ + -e 's/^#define HWLOC_SYM_PREFIX hwloc_/#define HWLOC_SYM_PREFIX foobar_/' \ + -e 's/^#define HWLOC_SYM_PREFIX_CAPS HWLOC_/#define HWLOC_SYM_PREFIX_CAPS FOOBAR_/' \ + $(HWLOC_top_builddir)/include/hwloc/autogen/config.h > include/hwloc/autogen/config.h + +include/private/autogen/config.h: dirs $(HWLOC_top_builddir)/include/private/autogen/config.h + sed -e 's/^#define HWLOC_SYM_TRANSFORM 0/#define HWLOC_SYM_TRANSFORM 1/' \ + -e 's/^#define HWLOC_SYM_PREFIX hwloc_/#define HWLOC_SYM_PREFIX foobar_/' \ + -e 's/^#define HWLOC_SYM_PREFIX_CAPS HWLOC_/#define HWLOC_SYM_PREFIX_CAPS FOOBAR_/' \ + $(HWLOC_top_builddir)/include/private/autogen/config.h > include/private/autogen/config.h + +useless: + @echo "# Finding useless renaming" + @if grep '^#define' $(HWLOC_top_srcdir)/include/hwloc/rename.h \ + | awk '{print $$2}' \ + | egrep -v '(HWLOC_RENAME_H|HWLOC_MUNGE_NAME|HWLOC_NAME)' \ + | while read name ; do \ + grep $$name -rwH $(HWLOC_top_srcdir)/include/ \ + | grep -v rename.h: >/dev/null \ + || echo $$name; \ + done \ + | grep '' ; then false ; else true ; fi + @echo "# done" + +cpp.out: include/hwloc/autogen/config.h include/private/autogen/config.h + @echo "# Checking for warnings/errors during renaming" + @echo "# using $(TEST_CPPFLAGS)" + @$(CPP) -Werror $(CPPFLAGS) $(TEST_CPPFLAGS) -Iinclude -I$(HWLOC_top_srcdir)/include -I$(HWLOC_top_builddir)/include $(srcdir)/main.c >$@ + +# hwloc_uint64_t is ignored because it's always a typedef. +# we have to manually concat a##b because some cpp let gcc do it (at least cpp 4.2.1 on OpenBSD 5.2). +needed: cpp.out + @echo "# Finding needed renaming" + @if cat cpp.out \ + | sed -e 's/foobar_ ## hwloc_ ## /foobar_hwloc_/g' \ + | sed -e 's/FOOBAR_ ## hwloc_ ## /FOOBAR_hwloc_/g' \ + | grep -vw HWLOC_DEBUG_VERBOSE \ + | grep -vw hwloc_uint64_t \ + | egrep -i '(^| |\*)hwloc_' ; then false ; else true ; fi + @echo "# done" + +clean-local: + rm -rf include + +EXTRA_DIST = main.c diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/rename/main.c b/3rd-party/hwloc-2.7.1/tests/hwloc/rename/main.c new file mode 100644 index 0000000000..e1d080db2e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/rename/main.c @@ -0,0 +1,60 @@ +/* don't let assert() stringify some hwloc names that would not + * renamed afterwards, and wouldn't be easy to filter out */ +#define NDEBUG 1 + +#define _GNU_SOURCE 1 +#include "sched.h" + +/* all headers should be explicitly included */ + +/* autoheaders definitions first, to avoid conflicts later */ +#include "private/autogen/config.h" +#include "hwloc/autogen/config.h" + +#include "hwloc.h" /* hwloc/rename.h required before everything else */ +#include "hwloc/bitmap.h" +#include "hwloc/shmem.h" +#include "hwloc/helper.h" +#include "hwloc/plugins.h" + +#if HWLOC_TEST_RENAME_LINUX +#include "hwloc/linux.h" +#endif +#if HWLOC_TEST_RENAME_LINUX_LIBNUMA +#include "hwloc/linux-libnuma.h" +#endif +#if HWLOC_TEST_RENAME_GLIBC_SCHED +#include "hwloc/glibc-sched.h" +#endif +#if HWLOC_TEST_RENAME_OPENFABRICS_VERBS +#include "hwloc/openfabrics-verbs.h" +#endif +#if HWLOC_TEST_RENAME_OPENCL +#include "hwloc/opencl.h" +#endif +#if HWLOC_TEST_RENAME_CUDA +#include "hwloc/cuda.h" +#endif +#if HWLOC_TEST_RENAME_CUDART +#include "hwloc/cudart.h" +#endif +#if HWLOC_TEST_RENAME_NVML +#include "hwloc/nvml.h" +#endif +#if HWLOC_TEST_RENAME_RSMI +#include "hwloc/rsmi.h" +#endif +#if HWLOC_TEST_RENAME_LEVELZERO +#include "hwloc/levelzero.h" +#endif +#include "hwloc/gl.h" +#include "hwloc/windows.h" + +#include "private/components.h" +#include "private/internal-components.h" +#include "private/cpuid-x86.h" +#include "private/debug.h" +#include "private/misc.h" +#include "private/private.h" +#include "private/solaris-chiptype.h" +#include "private/xml.h" diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/rsmi.c b/3rd-party/hwloc-2.7.1/tests/hwloc/rsmi.c new file mode 100644 index 0000000000..2eb918ee11 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/rsmi.c @@ -0,0 +1,90 @@ +/* + * Copyright © 2012-2020 Inria. All rights reserved. + * Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. + * Written by Advanced Micro Devices, + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "hwloc.h" +#include "hwloc/rsmi.h" + +/* check the RSMI helpers */ + +int main(void) +{ + hwloc_topology_t topology; + rsmi_status_t ret; + unsigned count, i; + int err = 0; + + rsmi_init(0); + + ret = rsmi_num_monitor_devices(&count); + if (RSMI_STATUS_SUCCESS != ret || !count) { + rsmi_shut_down(); + if (RSMI_STATUS_SUCCESS != ret) { + fprintf(stderr, "Failed to get device count\n"); + return -1; + } else { + fprintf(stderr, "No GPU available\n"); + return 0; + } + } + printf("rsmi_num_monitor_devices found %u devices\n", count); + + hwloc_topology_init(&topology); + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + hwloc_topology_load(topology); + + for (i=0; iname); + err = strncmp(osdev->name, "rsmi", 4); + assert(!err); + assert(atoi(osdev->name+4) == (int) i); + + value = hwloc_obj_get_info_by_name(osdev, "Backend"); + err = strcmp(value, "RSMI"); + assert(!err); + + assert(osdev->attr->osdev.type == HWLOC_OBJ_OSDEV_GPU); + + value = hwloc_obj_get_info_by_name(osdev, "GPUModel"); + printf("found OSDev model %s\n", value); + + set = hwloc_bitmap_alloc(); + err = hwloc_rsmi_get_device_cpuset(topology, i, set); + if (err < 0) { + printf("failed to get cpuset for device %u\n", i); + } else { + char *cpuset_string = NULL; + hwloc_bitmap_asprintf(&cpuset_string, set); + printf("got cpuset %s for device %u\n", cpuset_string, i); + free(cpuset_string); + if (hwloc_bitmap_isequal(hwloc_topology_get_complete_cpuset(topology), hwloc_topology_get_topology_cpuset(topology))) + /* only compare if the topology is complete, otherwise things can be significantly different */ + assert(hwloc_bitmap_isequal(set, ancestor->cpuset)); + } + hwloc_bitmap_free(set); + } + + hwloc_topology_destroy(topology); + + rsmi_shut_down(); + + return err; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/shmem.c b/3rd-party/hwloc-2.7.1/tests/hwloc/shmem.c new file mode 100644 index 0000000000..88932c4257 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/shmem.c @@ -0,0 +1,333 @@ +/* + * Copyright © 2011-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "hwloc.h" +#include "hwloc/shmem.h" +#include "private/misc.h" /* for hwloc_getpagesize() */ + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif + +#define EXIT_SKIP 77 + +/* must match the header defined in hwloc/shmem.c */ +struct header { + uint32_t header_version; + uint32_t header_length; + uint64_t mmap_address; + uint64_t mmap_length; +}; + +static int adopt(int fd, unsigned long fileoffset, unsigned long mmap_address, unsigned long mmap_length, int synthetic_with_distances) +{ + static hwloc_topology_t adopted; + char *xmlbuf; + int xmlbuflen; + char *origxmlbuf; + struct hwloc_distances_s *distances; + unsigned nr = 1; + int err; + int ret = EXIT_SKIP; + + err = lseek(fd, 0, SEEK_SET); + assert(!err); + + printf(" reading XML dump\n"); + origxmlbuf = malloc(fileoffset); + assert(origxmlbuf); + err = read(fd, origxmlbuf, fileoffset); + assert(err > 0); + + printf(" adopting from file at offset %lu with address 0x%lx len %lu\n", fileoffset, mmap_address, mmap_length); + + err = hwloc_shmem_topology_adopt(&adopted, fd, fileoffset, (void*)(uintptr_t)mmap_address, mmap_length, 0); + if (err == -1 && errno == EBUSY) { + /* may fail on 32bits and on some OS (e.g. darwin from time to time), and even on Linux/64bits if unlucky */ + fprintf(stderr, "Failed to shmem adopt, requested mapping is busy\n"); + goto out_with_origxmlbuf; + } + assert(!err); + printf(" adopted OK\n"); + + err = hwloc_distances_get_by_type(adopted, HWLOC_OBJ_NUMANODE, &nr, &distances, 0, 0); + assert(!err); + if (synthetic_with_distances) { + assert(nr == 1); + assert(distances->nbobjs == 3); + assert(distances->kind == (HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER)); + hwloc_distances_release(adopted, distances); + printf(" distances OK\n"); + } + + err = hwloc_topology_export_xmlbuffer(adopted, &xmlbuf, &xmlbuflen, 0); + assert(!err); + printf(" XML export %d bytes\n", xmlbuflen); + assert((unsigned long) xmlbuflen < fileoffset); + assert(!memcmp(origxmlbuf, xmlbuf, xmlbuflen)); + hwloc_free_xmlbuffer(adopted, xmlbuf); + printf(" XML export is identical to original\n"); + + hwloc_topology_destroy(adopted); + printf(" destroyed\n"); + + ret = EXIT_SUCCESS; + + out_with_origxmlbuf: + free(origxmlbuf); + return ret; +} + +static unsigned long +find_mmap_addr(unsigned long length) +{ + unsigned long addr; + void *tmp_mmap; + int err; + + /* try to find a good address starting from something in the middle of the entire/full address space */ +#if SIZEOF_VOID_P == 8 + addr = 0x8000000000000000UL; +#else + addr = 0x80000000UL; +#endif + printf("testing mmaps to find room for length %lu\n", length); + +again: + tmp_mmap = mmap((void*)(uintptr_t)addr, length, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_SHARED, -1, 0); + if (tmp_mmap != MAP_FAILED) { + err = munmap((void*)(uintptr_t)tmp_mmap, length); + assert(!err); + if (tmp_mmap == (void*)(uintptr_t) addr) { + /* worked! */ + printf(" test mmap at 0x%lx succeeded, let's use that!\n", addr); + return addr; + } + printf(" test mmap at 0x%lx returned another address\n", addr); + } else + printf(" test mmap at 0x%lx failed (errno %d)\n", addr, errno); + /* couldn't map there, try again with a smaller address */ + addr >>= 3; + if (addr) + goto again; + + return 0; +} + +static int test(hwloc_topology_t orig, const char *callname) { + unsigned long forced_addr; + unsigned long fileoffset; + size_t shmem_length; + int synthetic_with_distances = (hwloc_obj_get_info_by_name(hwloc_get_root_obj(orig), "ShmemSyntheticWithDistances") != NULL); + char tmpname[] = "/tmp/hwloc_test_shmem.XXXXXX"; + char cmd[512]; + struct stat st; + int fd, err; + int ret = EXIT_SKIP; + + printf("opening temporary file\n"); + fd = mkstemp(tmpname); + if (fd < 0) { + perror("mkstemp"); + goto out; + } + printf("opened %s\n", tmpname); + + printf("exporting XML\n"); + err = hwloc_topology_export_xml(orig, tmpname, 0); + assert(!err); + err = stat(tmpname, &st); + assert(!err); + printf("exported %lu bytes\n", (unsigned long) st.st_size); + fileoffset = st.st_size+1; /* skip a couple bytes to make sure the XML is don" */ + fileoffset = (fileoffset + hwloc_getpagesize() - 1) &~(hwloc_getpagesize() - 1); + printf("will mmap at file offset %lu\n", fileoffset); + + err = hwloc_shmem_topology_get_length(orig, &shmem_length, 0); + assert(!err); + printf("need mmap length %lu\n", (unsigned long) shmem_length); + + forced_addr = find_mmap_addr((unsigned long) shmem_length); + if (!forced_addr) + goto out_with_fd; + + printf("write to shmem at address 0x%lx in file %s offset %lu\n", forced_addr, tmpname, fileoffset); + err = hwloc_shmem_topology_write(orig, fd, fileoffset, (void*)(uintptr_t)forced_addr, shmem_length, 0); + if (err == -1 && errno == EBUSY) { + fprintf(stderr, "Failed to shmem write, requested mapping is busy\n"); + goto out_with_fd; + } + assert(!err); + printf("wrote length %lu\n", (unsigned long) shmem_length); + + printf("adopting locally\n"); + ret = adopt(fd, fileoffset, forced_addr, shmem_length, synthetic_with_distances); + assert(ret == EXIT_SUCCESS || ret == EXIT_SKIP); + + printf("adopting in other child process\n"); + snprintf(cmd, sizeof(cmd), "%s %s %lu 0x%lx %lu %d", callname, tmpname, fileoffset, forced_addr, (unsigned long) shmem_length, synthetic_with_distances); + printf("running command %s\n", cmd); + err = system(cmd); + assert(WIFEXITED(err)); + printf("child process returned %d\n", WEXITSTATUS(err)); + assert(WEXITSTATUS(err) == EXIT_SUCCESS || WEXITSTATUS(err) == EXIT_SKIP); + + /* we caught errors above. + * return SKIP if both returned SKIP. otherwise SUCCESS + */ + if (WEXITSTATUS(err) == EXIT_SKIP && ret == EXIT_SKIP) + ret = EXIT_SKIP; + else + ret = EXIT_SUCCESS; + + out_with_fd: + close(fd); + unlink(tmpname); + out: + return ret; +} + +int main(int argc, char *argv[]) +{ + static hwloc_topology_t orig; + hwloc_obj_t nodes[3]; + uint64_t node_distances[9]; + hwloc_distances_add_handle_t handle; + unsigned i,j; + const char *top_srcdir; + int err, ret, ret2; + + if (argc > 1) { + int fd; + unsigned long forced_addr; + unsigned long fileoffset; + size_t shmem_length; + int synthetic_with_distances; + + if (argc < 6) { + printf("needs 5 arguments\n"); + return EXIT_FAILURE; + } + + printf(" opening %s\n", argv[1]); + fd = open(argv[1], O_RDONLY); + if (fd < 0) { + perror("open"); + return EXIT_FAILURE; + } + + fileoffset = strtoul(argv[2], NULL, 0); + forced_addr = strtoul(argv[3], NULL, 0); + shmem_length = strtoul(argv[4], NULL, 0); + synthetic_with_distances = atoi(argv[5]); + + ret = adopt(fd, fileoffset, forced_addr, shmem_length, synthetic_with_distances); + close(fd); + exit(ret); + } + + printf("########################\n"); + printf("creating native topology\n"); + err = hwloc_topology_init(&orig); + assert(!err); + err = hwloc_topology_set_all_types_filter(orig, HWLOC_TYPE_FILTER_KEEP_ALL); + assert(!err); + err = hwloc_topology_load(orig); + assert(!err); + + ret = test(orig, argv[0]); + + printf("destroying original\n"); + hwloc_topology_destroy(orig); + + printf("###############################################\n"); + printf("creating synthetic topo with distances topology\n"); + err = hwloc_topology_init(&orig); + assert(!err); + err = hwloc_topology_set_synthetic(orig, "node:3 core:2 pu:4"); + assert(!err); + err = hwloc_topology_load(orig); + assert(!err); + err = hwloc_obj_add_info(hwloc_get_root_obj(orig), "ShmemSyntheticWithDistances", "1"); + assert(!err); + + printf("adding distance matrix\n"); + for(i=0; i<3; i++) { + nodes[i] = hwloc_get_obj_by_type(orig, HWLOC_OBJ_NUMANODE, i); + for(j=0; j<3; j++) + node_distances[i*3+j] = (i == j ? 10 : 20); + } + handle = hwloc_distances_add_create(orig, NULL, + HWLOC_DISTANCES_KIND_MEANS_LATENCY|HWLOC_DISTANCES_KIND_FROM_USER, + 0); + assert(handle); + err = hwloc_distances_add_values(orig, handle, 3, nodes, node_distances, 0); + assert(!err); + err = hwloc_distances_add_commit(orig, handle, + HWLOC_DISTANCES_ADD_FLAG_GROUP); + assert(!err); + + ret2 = test(orig, argv[0]); + + printf("destroying original\n"); + hwloc_topology_destroy(orig); + + top_srcdir = getenv("HWLOC_TOP_SRCDIR"); + if (top_srcdir) { + const char *xmlnames[4] = { + "16intel64-manyVFs.xml", + "8intel64-4n2t-memattrs.xml", + "fakecpukinds.xml", + "fakeheterodistances.xml" + }; + for(i=0; i<4; i++) { + char xmlpath[PATH_MAX]; + snprintf(xmlpath, sizeof(xmlpath), "%s/tests/hwloc/xml/%s", top_srcdir, xmlnames[i]); + + printf("#########################################\n"); + printf("creating from XML %s\n", xmlpath); + err = hwloc_topology_init(&orig); + assert(!err); + err = hwloc_topology_set_xml(orig, xmlpath); + assert(!err); + err = hwloc_topology_set_all_types_filter(orig, HWLOC_TYPE_FILTER_KEEP_ALL); + assert(!err); + err = hwloc_topology_load(orig); + assert(!err); + + ret = test(orig, argv[0]); + + printf("destroying original\n"); + hwloc_topology_destroy(orig); + } + } else { + printf("#########################################\n"); + printf("Skipping XML tests because HWLOC_TOP_SRCDIR isn't defined in the environment\n"); + } + + /* we caught errors above. + * return SKIP if both returned SKIP. otherwise SUCCESS + */ + if (ret == EXIT_SKIP && ret2 == EXIT_SKIP) + ret = EXIT_SKIP; + else + ret = EXIT_SUCCESS; + + return ret; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/windows_processor_groups.c b/3rd-party/hwloc-2.7.1/tests/hwloc/windows_processor_groups.c new file mode 100644 index 0000000000..d3c77e4ae8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/windows_processor_groups.c @@ -0,0 +1,57 @@ +/* + * Copyright © 2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/windows.h" + +#include + +int main(void) +{ + hwloc_topology_t topology; + hwloc_bitmap_t set; + int nr, i, err; + char *s; + + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + + set = hwloc_bitmap_alloc(); + assert(set); + + /* check invalid flag */ + nr = hwloc_windows_get_nr_processor_groups(topology, 1); + assert(nr < 0); + assert(errno == EINVAL); + + nr = hwloc_windows_get_nr_processor_groups(topology, 0); + assert(nr >= 1); + printf("found %d groups\n", nr); + + /* check invalid flag */ + err = hwloc_windows_get_processor_group_cpuset(topology, 0, set, 1); + assert(err < 0); + assert(errno == EINVAL); + /* check invalid index */ + err = hwloc_windows_get_processor_group_cpuset(topology, nr, set, 0); + assert(err < 0); + assert(errno == ENOENT); + + for(i=0; i= 0); + printf("processor group #%d has cpuset %s\n", i, s); + free(s); + } + + hwloc_bitmap_free(set); + hwloc_topology_destroy(topology); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/wrapper.sh.in b/3rd-party/hwloc-2.7.1/tests/hwloc/wrapper.sh.in new file mode 100644 index 0000000000..c3fc1651c6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/wrapper.sh.in @@ -0,0 +1,32 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2012-2021 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_builddir="@HWLOC_top_builddir@" +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +xmlbuffer=xmlbuffer@EXEEXT@ + +HWLOC_TOP_SRCDIR=${HWLOC_top_srcdir} +export HWLOC_TOP_SRCDIR + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +HWLOC_LIBXML_CLEANUP=1 +export HWLOC_LIBXML_CLEANUP + +if test "`basename $1`" = "$xmlbuffer"; then + "$@" 1 1 + "$@" 0 1 + "$@" 1 0 + "$@" 0 0 +else + "$@" +fi diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.env b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.env new file mode 100644 index 0000000000..74c59414c6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.env @@ -0,0 +1,2 @@ +HWLOC_COMPONENTS=linux,x86,stop +export HWLOC_COMPONENTS diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.options b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.options new file mode 100644 index 0000000000..2631539bef --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.options @@ -0,0 +1 @@ +-v diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.output new file mode 100644 index 0000000000..5f7b9b4a98 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.output @@ -0,0 +1,42 @@ +Machine (P#0 total=3857124KB DMIProductName="LakeField Client Platform" DMIProductVersion=0.1 DMIProductSerial=fzlf933000en DMIBoardVendor="Intel Corporation" DMIBoardName="Lakefield LPDDR4x T4 RVP2" DMIBoardVersion=1 DMIBoardSerial=fzlf933000en DMIBoardAssetTag="Base Board Asset Tag" DMIChassisVendor="Intel Corporation" DMIChassisType=9 DMIChassisVersion=0.1 DMIChassisSerial="Chassis Serial Number" DMIChassisAssetTag="Chassis Asset Tag" DMIBIOSVendor="Intel Corporation" DMIBIOSVersion=LKFSFWR1.R00.4082.A00.2002190224 DMIBIOSDate=02/19/2020 DMISysVendor="Intel Corporation" Backend=Linux LinuxCgroup=/ OSName=Linux OSRelease=5.3.0-28-generic OSVersion="#30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020" HostName=jf1lkf Architecture=x86_64) + Package L#0 (P#0 total=3857124KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=138 CPUModel="Intel(R) Core(TM) i5-L16G7 CPU @ 1.40GHz" CPUStepping=1) + NUMANode L#0 (P#0 local=3857124KB total=3857124KB) + L3Cache L#0 (P#0 size=4096KB linesize=64 ways=16 Inclusive=1) + L2Cache L#0 (P#0 size=1536KB linesize=64 ways=12 Inclusive=0) + L1dCache L#0 (P#0 size=32KB linesize=64 ways=8 Inclusive=0) + L1iCache L#0 (P#0 size=32KB linesize=64 ways=8 Inclusive=0) + Core L#0 (P#0) + PU L#0 (P#0) + L1dCache L#1 (P#2 size=32KB linesize=64 ways=8 Inclusive=0) + L1iCache L#1 (P#2 size=32KB linesize=64 ways=8 Inclusive=0) + Core L#1 (P#1) + PU L#1 (P#1) + L1dCache L#2 (P#4 size=32KB linesize=64 ways=8 Inclusive=0) + L1iCache L#2 (P#4 size=32KB linesize=64 ways=8 Inclusive=0) + Core L#2 (P#2) + PU L#2 (P#2) + L1dCache L#3 (P#6 size=32KB linesize=64 ways=8 Inclusive=0) + L1iCache L#3 (P#6 size=32KB linesize=64 ways=8 Inclusive=0) + Core L#3 (P#3) + PU L#3 (P#3) + L2Cache L#1 (P#4 size=512KB linesize=64 ways=8 Inclusive=0) + L1dCache L#4 (P#4 size=48KB linesize=64 ways=12 Inclusive=0) + L1iCache L#4 (P#4 size=32KB linesize=64 ways=8 Inclusive=0) + Core L#4 (P#4) + PU L#4 (P#4) +depth 0: 1 Machine (type #0) + depth 1: 1 Package (type #1) + depth 2: 1 L3Cache (type #6) + depth 3: 2 L2Cache (type #5) + depth 4: 5 L1dCache (type #4) + depth 5: 5 L1iCache (type #9) + depth 6: 5 Core (type #2) + depth 7: 5 PU (type #3) +Special depth -3: 1 NUMANode (type #13) +CPU kind #0 efficiency 0 cpuset 0x0000000f + FrequencyBaseMHz = 1400 + CoreType = IntelAtom +CPU kind #1 efficiency 1 cpuset 0x00000010 + FrequencyBaseMHz = 2000 + CoreType = IntelCore +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/5intel64-hybrid-lakefield.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3eac20db7950213900dedd0ef94025c23df23af3 GIT binary patch literal 34749 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 4 5 6 7 + 10 16 16 22 16 22 16 22 16 10 + 22 16 16 22 22 16 16 22 10 16 + 16 16 16 16 22 16 16 10 16 16 + 22 22 16 16 16 16 10 16 16 22 + 22 22 16 16 16 10 22 16 16 22 + 16 22 16 22 10 16 22 16 16 22 + 22 16 16 10 + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ce4a5009184bb376b7527c262c1a6319b1c71489 GIT binary patch literal 89059 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.env b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.env new file mode 100644 index 0000000000..cefaae9a83 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.env @@ -0,0 +1,2 @@ +HWLOC_X86_TOPOEXT_NUMANODES=1 +export HWLOC_X86_TOPOEXT_NUMANODES diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.output new file mode 100644 index 0000000000..c5eca84f14 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.output @@ -0,0 +1,700 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 4 5 6 7 + 10 16 16 22 16 22 16 22 16 10 + 22 16 16 22 22 16 16 22 10 16 + 16 16 16 16 22 16 16 10 16 16 + 22 22 16 16 16 16 10 16 16 22 + 22 22 16 16 16 10 22 16 16 22 + 16 22 16 22 10 16 22 16 16 22 + 22 16 16 10 + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.source b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.source new file mode 100644 index 0000000000..c0b7d6b692 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/64amd64-4p2n4ca2co.topoextnuma.source @@ -0,0 +1 @@ +64amd64-4p2n4ca2co.tar.bz2 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/Makefile.am new file mode 100644 index 0000000000..09ba8efbd3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/Makefile.am @@ -0,0 +1,41 @@ +# Copyright © 2019-2021 Inria. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +# Add your expected output file here. +# By default, it shows the output of `lstopo - -v'. +cpuid_sysfs_outputs = \ + 64amd64-4p2n4ca2co.output \ + 64amd64-4p2n4ca2co.topoextnuma.output \ + 5intel64-hybrid-lakefield.output + +# Each output `xyz.output' must have a corresponding tarball `xyz.tar.bz2' +# or a corresponding `xyz.source' specifying which tarball to use +cpuid_sysfs_tarballs = \ + 64amd64-4p2n4ca2co.tar.bz2 \ + 64amd64-4p2n4ca2co.topoextnuma.source \ + 5intel64-hybrid-lakefield.tar.bz2 + +# Each output `xyz.output' may have a corresponding `xyz.options' +# file modifying the behavior of lstopo +cpuid_sysfs_options = \ + 5intel64-hybrid-lakefield.options + +# Each output `xyz.output' may have a corresponding `xyz.env' +# modifying the environment of lstopo +cpuid_sysfs_envs = \ + 64amd64-4p2n4ca2co.topoextnuma.env \ + 5intel64-hybrid-lakefield.env + +if HWLOC_HAVE_OPENAT +if HWLOC_HAVE_BUNZIPP +TESTS = $(cpuid_sysfs_outputs) +endif HWLOC_HAVE_BUNZIPP +endif HWLOC_HAVE_OPENAT + +EXTRA_DIST = $(cpuid_sysfs_outputs) $(cpuid_sysfs_tarballs) $(cpuid_sysfs_options) $(cpuid_sysfs_envs) + +LOG_COMPILER = $(builddir)/test-topology.sh diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/test-topology.sh.in b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/test-topology.sh.in new file mode 100644 index 0000000000..87cd0ad29e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86+linux/test-topology.sh.in @@ -0,0 +1,147 @@ +#!@BASH@ +#-*-sh-*- + +# +# Copyright © 2015-2021 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +lstopo="$HWLOC_top_builddir/utils/lstopo/lstopo-no-graphics" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DONT_ADD_VERSION_INFO=1 +export HWLOC_DONT_ADD_VERSION_INFO + +HWLOC_XML_EXPORT_SUPPORT=0 +export HWLOC_XML_EXPORT_SUPPORT + +actual_output="$1" + +# make sure we use default numeric formats +LANG=C +LC_ALL=C +export LANG LC_ALL + +error() +{ + echo $@ 2>&1 +} + +# test_topology NAME TOPOLOGY-DIR +# +# Test the topology under TOPOLOGY-DIR. Return true on success. +test_topology () +{ + local name="$1" + local dir="$2" + local expected_output="$3" + local options="$4" + + local output="`mktemp`" + + export HWLOC_THISSYSTEM=0 + export HWLOC_DEBUG_CHECK=1 + export HWLOC_FSROOT="$dir/fsroot" + export HWLOC_CPUID_PATH="$dir/cpuid" + + opts="--of xml -" + [ -r "$options" ] && opts=`cat $options` + + if ! "$lstopo" $opts \ + | sed -e 's/ gp_index="[0-9]*"//' \ + > "$output" + # filtered gp_index because it may change if we reorder discovery + # (not used in NUMA/PU distances, and regenerated (differently) during XML import). + then + result=1 + else + if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ] + then + @DIFF@ -b @HWLOC_DIFF_U@ "$expected_output" "$output" + result=$? + else + if ! @DIFF@ "$expected_output" "$output" >/dev/null + then + cp -f "$output" "$expected_output" + echo "Updated $expected_output" + fi + result=0 + fi + fi + + rm "$output" + + return $result +} + +# test_eligible TOPOLOGY-DIR +# +# Return true if the topology under TOPOLOGY-DIR is eligible for +# testing with the current flavor. +test_eligible() +{ + local dir="$1" + local output="$2" + + [ -d "$dir" -a -f "$output" ] +} + + +if [ ! -x "$lstopo" ] +then + error "Could not find executable file \`$lstopo'." + exit 1 +fi + +topology="${actual_output%.output}" +if [ "$topology" = "$actual_output" ] ; +then + error "Input file \`$1' should end with .output" + exit 1 +fi +actual_options="$topology".options + +# if there's a .source file, use the tarball name it contains instead of $topology +if [ -f "$topology".source ] ; then + actual_source="$HWLOC_top_srcdir"/tests/hwloc/x86+linux/`cat "$topology".source` +else + actual_source="$topology".tar.bz2 +fi + +# set HWLOC_COMPONENTS here so that tests may change the order in the .env below +export HWLOC_COMPONENTS=x86,linux,stop + +# if there's a .env file, source it +if [ -f "$topology".env ] ; then + . "$topology".env +fi + +result=1 + +dir="`mktemp -d`" + +if ! ( bunzip2 -c "$actual_source" | ( cd "$dir" && tar xf - $tar_options ) ) +then + error "failed to extract x86 cpuid \`$topology'" +else + actual_dir="`echo "$dir"/*`" + + if test_eligible "$actual_dir" "$actual_output" + then + test_count="`expr $test_count + 1`" + + test_topology "`basename $topology`" "$actual_dir" "$actual_output" "$actual_options" + result=$? + else + # Skip this test. + result=77 + fi +fi + +rm -rf "$dir" + +exit $result diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Bulldozer-4xOpteron-6272.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Bulldozer-4xOpteron-6272.output new file mode 100644 index 0000000000..0b9916157e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Bulldozer-4xOpteron-6272.output @@ -0,0 +1,643 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Bulldozer-4xOpteron-6272.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Bulldozer-4xOpteron-6272.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..70f0d6a6d6695511707bc41f15d98317501fe51d GIT binary patch literal 1860 zcmX|A3s6&68b0?Pa<5>>rHF1ILb7Yb)DaEBAjrdGYbk7@O>1?43`+UBN2e+D_fJwnT;mcFW2gt&k!@Y?p_GM_RBV^6GYg|1QF!YQZ0#>7f$qB0RfhQWjcv*27p{3*zwK%|u82Cy{w|B&V2ow9wkxQ<;%rn({dk*LgSd zZss>twKooYaz3l#%pd+y*7@AdkNxsnTif#0K=e);mizhny;rW=TNy6hb0N*wxA`rZ z(KT|dlST7LX(;pDfgUN#-e@@!xmJtGP5wURw8ai$|3X8z%W zoAl-gI1)_ah7nDfS52;jnW8c#zoSJ*=-wm!|v zoyqO{uDi3RNp>_T>X$D~nYJzZgR%pry7)2e?)x#Ezlh8x@gXtb9Vc1j4Y}*$!sk$eM=7`fs#8}oiVaUhqoQ?+1jDLOT&)R3!;CI~RNAR9 zpmQ{+oG8SFu;?6kA6ncPv|)!kRP1pmvBxUTWjj%r3&c(Heft8<9q|NKQ~C4#!5edW zZ2GiY(mVRGUHrOxrTk%GMezns`@OQn4E=02iWt2f({fyIMlza>xuYY1l1GZDdiK#P0EIX)3%9~ps1hfN_vp>AUj*$`S|*g52L%3$)Bhv1c;Z$n5C1?b zq6s%Kfj;0hDrX~=R;esi&SB#UbW}?er&9jZaiT)3MKA3!VvQG=NAry{%#U!Go#G0Q zGgoglw(z+FDShK}1(%!PgBM>v1j+1sWHjN8>=f{RgA|zmDgtjRG_FzKncDcIPYJ{Y zkUD2V3!k}_ZshgS(~0uruckKfUTeM z#al^sgt8~I{OYvE=cp}<7^e86F{oE;m+<=*(FFpP;hEXN>T}h>3kP%4S*u**M#=WY zr`IIeMJEHuGBw+-$G_oY)Mg456R2F6K@eQcq9^d|^zib=kcWlMGIkt#G~&1woO=sh zF5YKdev?Wy{X{1{AiFp>gRNOR*&Z5rz3M|GNcrZ}V|^f52^DW2qYZ&XQ)i^9Z7y+b zbUgn(f&FSl7V#dV?6~NXUFBhwMp##_@!?BAm?Cqqsv-UUzt6h((`&d80^OXfJFzYv zj8gVA0;}AK2F$y1@qE+lFr6CIuKktZWP^B9Y%}_s#%~~EHJ@a6f}HnET(2+_AEMYN zUs)QCFROjGkk9Db}qZhgbxD)I;Fi%&ek3+T)X;%LsFXixDvSdy-^J8gv)sjsch!=HMNj=)#U>EA{g zy`F4A+<^$ys;GHB8(N$r2XE4;UjOo}6?Ud6qb@9;ZJN&+qVNlnRqD<6tzNi5#u^zE z)Lzn%Jbh^aMiym3fA z&dzfAg1+-`wjqQS@D15bzL!VgBw7R(xnk4mv==a_jSI8N8yGvBAs#@ZY_coi=>qC@ zqGyR4^JBa-F4&fE2PKg#;#6+S+e3z!#ZFVTA`#Zhb<91;ZKf6`+W3P(UA&kGfIp+K zgc=cA5*BdXI23->APLESYLr5q+M(B(AJ9MNWH`}r0^&djQbo`zLG$1kjS@vrx9#eW zaG5-pzBT(&u4Jm`@=*&t!q(7ZL(CQWifC%^lu&!vIYkcanpG6KF^ydg5{;VW*3&ig o)lv2?Ues)B7T#tEtL~;drWE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Piledriver-4xOpteron-6348.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-15h-Piledriver-4xOpteron-6348.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6caa85c5a92f707863177e81fac6d9ed0fa8310d GIT binary patch literal 1719 zcmX|Ae^gWF8BVU;HHVL_jot2DopyrNBF#-;Xe|R3;t66`E1F$M1(YkMB!GdNoKE67QR7Jp8G%9v8^3B$34stGyZvK(&Uw%I-simE zdEf7OzlSd>Oo&SnZaXX-@}8SvoZcEDmTMqJ+PYBi8bpOx&W%!xFb0dkl0}HU8pc@$ zgONuEjaWK1{B&4|tBi>Hvl^Ot?a22FM>ZT=w{KfjJ;Tb_z-+m){MVno zzwRL8o<4#u`2W@LOnxEj+`_i{u%YT}`Ax38h@A@gONl$QooW#F<;cj~jI{M7QV*tNfq)a{JVy?N|_qWggO(^qQWymwl0 z@qozHW-*Co8@ah33Z5Fq(aeN@AI=j-t=Mj5y0&jDSOnK|Y#1KPVL3#=gyDN~Wm{w< zs>}lOu%;)s5CCTN_pf;{W%{&8a*?g)KtXkJn)Vpyn^0gOH;Z{FfTXUNdO8E~p9alD+ zt&4!n*=!8|b4^Y%8RNikD%&DMYseTsfP6>{hP$yN&okeP>D7>!m6G6tKd(O?{}L$z zDIY#m-7ogU$9>`5c>0q40dzScexK}x=QBU5Yo%DvjlO*_f|Z<*U>k2vs2{a)`Hq}e zGd_b*CR-}(M&LHP-EI@s)zvi+H}dlfIrQX+r65w4jZ-~@rW-biKox+fF2I)m4#dYN zz;xA5Q29YRiG8E#K|=?1USGuS+d55n)UH;T>2{ZdV|X zP1J7()$RcNn&RcTQ7 zwei|?H+HBozBmeAO@lT=Py!NG63OSn~H^v|1MJiCH zOahZx=z2HDfQX4dl0p-vJ)zHduQ4W(3t1$D-UxU7>Nmv7i!&K3dv~SB%pmXtuVjnN z9CjwkA%XSW9~5jd8=p5C&~P_mDIxBmLumLIpc^oZROh?OzC+ABBS;pv9#1I-`%+}X zoUPraf0#JpbDB&CbcwP3WbLv33olkIw)_t+s0R9k`3FY$YenB_o%kN+2PDtLd3O%H zumgE8JU^?Ka5W}aLvq3zU|N5Vc^Cfrc>6|ngA###0%Q7ZX!WX0YJF^z5YDBj`(edR zw<1SS=1DS#DPQI90?=FVoM*7;%7(-_XLE^*SCa(}c1;eLv#+qCP~z2dD=H$YVHswu~&f@ z5GBij&Vc?RbKw5jM_h{nJ?iGA$V4U6;}2$gUuKqqnr@2%)QDJA)fi{=W{{XdrJIs) zAJQYkAcsVGN}F$x%Wj`MpQ~_Wf$OP3@y;8&A&&^eB4vVFSL!C{_q05o!KBj3g1;?P zpFlOzT4p)XoL#m!QpnS6aqINb+=8T{t=jTeTewNZ3#|h~18YhDdV=bWll_NwM@vrM zwVbMcB$wj-nyQC+;>ICVDP%2xF{BGbn*`?%cVMhu>JIb_P46ZsNx;+G+phANtuts+ z;HgRKDnd+y8wnrm=71@bV|f1J4s)l(~K_a=r7(#B%QOxIe|Jg>CtJ zRs#7Rb#&h^b251kbPk@L7j4FaP#_RkePgsDbcyHHEfdSo1drsJ&(f}V`;Bpjm{_C< z7x01+bY3vQn+(#DLsN*kr5>hoJ|3Kvbwd=%fwi(MH1rXeU_S#3aL`gBaM4@J#;0f( zsGu=k`*LH5WzaeH525J>SX&P34eT*`n+WY-&4o)6*bnQ?R>}<1|BidL6ehXQikf8* z1T#uQeSM(}6Mb literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-17h-Zen-2xEpyc-7451.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-17h-Zen-2xEpyc-7451.output new file mode 100644 index 0000000000..589ffe5c5d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-17h-Zen-2xEpyc-7451.output @@ -0,0 +1,717 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-17h-Zen-2xEpyc-7451.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-17h-Zen-2xEpyc-7451.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..905a8061318b07fbaf677a0be72b7c6d5256ee03 GIT binary patch literal 2253 zcmXX{3se(H7VY$w9Lmp3NV%@E?i!GEM~|Q&f`UjIQ6YqoQ4mDbjNk_~d;~#2*rs)y z5t$tXL=q69gNiuIZ+0Sry5Ts2I*K?VWDSrgX!xjzg8T%wb7t$DI^9)WT~+Vi`|k4! z-M_|>+D2^IcB-%EBBl?R{$@N2$9(YVkAxStXnLU2hylzJvy^{1k*cwvzxd?(b@N<| zZQX3Q#;`d7UwH&3M-MM8l9^|*KanNV8#8Fkf;JBVKP1h4Do&;&=9s?$Rmqt%Q&&Ai z=FtMo!aQegGc))z@SK+CJjJG~y&h;|(PgEF#Jb4KIHNNuvhTp_rX2E!c#AwcVY8pJ zxA#7!^31ARO6A3UiHV7)lLxCNVL=RFpI}b=dcBOmu7yvnw}ygN8R@ zJBzMacv!LQnxsImBuA|B&2h><6}ed{&bH(;vuE0bEC~c$%3{V$Y9^PO5gw#h{Om)> z{o`9f+cCYOEZbgi^-$>PsA&hTG=e)W^RqkSi1RzA<kZXuYmM=em=NI%2oIx zESG0~%E2qp3qEH_L`6l>|4FMIDS!S}6Y|{T7hB!op!!yJ_qVxEzPM}QEX&D0K98G! zbFq)wLDM?qlYJD5{5e7b%Y`JJ%Of~K?u3Y-3z;ZbNs5ZKXo~Wr$u1+Wn^)3~Xo>fD z`mz)}upMFfDfq5mdG~~Z^Gsk`Wq^!W+>Uf8MuJKg8W=S|Jpy)gk0o8&m*aM~Y zODv`7PVl=^HnbRw0(Cx6OS!~~+JjN;<;lZ4Z=LIUlJc%|Y-in1$fCaPci+u>xBvUP z)A_wyl!x-_*9NXyANY%3V9n56IS9r$_IpC{@cE#TF2W-VdO$Oh5g9;8g19GRvAo-?VXZ3zLW9jZ19)fsN0LLvpfJR5th9` zz?qH9Y$%~!E-zguz`f)=t#@W(`K`eQBZ(DqT!0hI60;<(4w9QOT){$&72tA&Wl0$M z2`XDA!4G)Jr1ef-e0A}yb-digiv~r$tH1=0JIZn8pQPNu5S{>O!YDyM%Op%Jp4@3k z@(Xg}Xps(O`9tLI*i<{-2eq)ub)8zm$o!4|l#nQCX@bXP>-kCncnR9J$OO*d61dC} zvd4?TQ@4Xx7A6i3mcQ+vf49bVHJbxkGD2M(Bd{99zp~2*b&B4`E9;cN2%jDa#!iX~ z85x@x18#YiyS4et(BErHm7yhzbMnX!kfn%G>ww#+oPABBiZE+-#X&rZ3R=eN$=VjY4W2SDMllHPLS{JQ^`%UOwoq z4S?+R1?kR)hfK6-?K_yY{-=fxJf!gDVB^9uQ^&}}WZ_7s`@ro9?B*;C+ee3C7BQSZ zoDkz!Sy?#;23~Bm-kmMZ3n{a^dO33l8VMnxT3J!p3ph@og*VI!N<>=M*t!gZH}E@dH{$ziA}=+CJcQS`^?zU2g4F(M z2_9Dli;RAh5Yg);5hxxl=v{z^Lo1qa`o)^DKGKkE`eE13TGO=yx-OcGXhAK!k=yzK zQ=uj(3Vy^7LCQ9<3iPq$ii+?ZD{Eow*1_wcy@s%TGO1&hpkc*bR@}4g_ru-Hw#Efr z-;WNN(pERvU)#Aa3^k)liAzv)QMxPm6{=d${OzSSDLN#1Rm!`(ya_xVz#~fqMzoP* zFUq@!|B#?BaP|%r+sR&G#RE2;af- z5)Bi%>k=5j6TnlcCHZI2U<^pz%X-_FGO_I*&^l()bas4v1KW1Qws{=s+7lcCy3qqL z8{Zq*FnOdcY!WMce7g_)i*oHRuQf#P^hjTq6(EwPFF$I!T{rNo`dandiiNR_Yn?$e zRFnMTALVxB0PdBNwsN$2t`)~;DP2A5bDpTMY3uff%&~e`YWbwPcsDd6yG^a2$~GBK zrO& + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K10-Istanbul-8xOpteron-8439SE.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K10-Istanbul-8xOpteron-8439SE.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ff7990f93344ba692f994ecb11bc050e3663606d GIT binary patch literal 1302 zcmV+x1?l=iT4*^jL0KkKS&X|EN&rWu|AqRH0sz00;mGU z00D|qA)%l$8fXAAWMlvUGE~SvR5a11jTsFAqd|xo82~9zf)gS%o`ptFNc~N!11F@> z=!1HmsmzRs{~4K=R#c8TB$itbRz0m$N1`et(Jah!tvSv_Vxp@oDypi%WB>~(=nxIO z1dmZAG>>n8q-%ixwEh zF^n;ax_fX%$rsHQ6;@!SzCOWn7x4=~uoeQySqmX`3jrSRuo29YqA&eLm|6ndE<(Ur z0{Df1x&?rb+7a#x0eOY!7a@Cs{KDWD@C)7-A$)@97l6Ei>=)__)GdP81zm#h7H|s- zV6d_l0?=56<`y&-DlNjnkgyiPVirQhO95hNEd`LY79k#ibPHfzLic1Y0^@+Oz+8pq z7C~+oaJL1>Ed_v8lu>*Fz%I1GuwTqB;bazq{{X)(Kd4`dFZ@NqFZD(LU#CC47q`3T z@cVu+x7mz*k#|xnU@ZlJwgrGGa27(yDSTysvA9^NXe>+xptE1x78ZeU7Iq5^g4`^$ z3RpU!X-KVt&{?Sf@Ug}LU>D*RL2(O&USV_# zAhqYvFPL0~xLXB)zh^Kk*Ar5kgi8?;0xP7H0~FIr4$3W}(6NL@W-71%7ob=RxGsTU z7eHC*w!O1wZ=hcie~?%!As7olvK1V9h5QkA3y3b=yK9_dtStTrwWhv-Yezu80KMU4 zE;&WV6V?{n?Xea@&P<}vTE;$sWq??rcJJSwHL18>;I`iM1=KD=&@LfpBLQ>MeRm6d zh0~ik$^M$wjOR9cqSn4aZP6Cpb_mYFZ=3~~S;UKN`)|J6ZH!+I+hi`GbOqopp=d3E zb>tTiT=eU&0Jz^-$2rqlZ|oL!3mT>{Mms{|Xj*ZNw%E4LWOoZW$XJD-wTM{9V7En+ z*e@=;@6L4F7-MP|0eA~=xWjN;1%R*%0bmw*)}d{;fL>o9u~q?K+ZT{r1)8|-7XD#& zMeaqfBwWJi5#S?ig^qx+fQG!uKuI8yos2~!h-;7_9)N&tfIz?H7qTwMyaM?G@QdUZufO5x{DFT`FR)udZ^s|3 zFQ_a9{h+*&e)M0bJ$iNIFQ_m0_VxR9>(j5$BlZQjUr<>H?YJ+70>UrR7nol_uosYA zg^;)l0d@-k8VKAL;d%w!FEFwT@(XZXL3;Y4-500w`u`MO-)~U1MfOGa?ibA$bYH0! zeZ09v^F{p;d4=iG7wz%vManFq*e~ddD80m9KIppQ7vPKa{gHjqe171*KSW + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K10-MagnyCours-2xOpteron-6164HE.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K10-MagnyCours-2xOpteron-6164HE.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..854e33fa32459162a21876c39bf50179fdeaae7a GIT binary patch literal 1096 zcmV-O1h@M_T4*^jL0KkKSw$1u5&$EOe}(#x0su%h|MxCRfC_)_-rxWM00;mGU002@NN*I7^hj;#rG9SKKcFWEaRR1=Lszu&^(9k5I5LA$J!d^B3GL!t5=@%QD{>)WSYg|NE?)Gjyl<97P{h4Cxv784@vEDIPGBFM40S_>?T83bZ; z>S`}BeaUqfFuZ(o&N0hA9}-&Yuee+bUPbbY0{F$h9HqW=&NlH2RI)8~%2*b0k8rZU zScT!?ucJo#>@PuV7XCu&7Q*001>h_Tu&^$;S{Ed_yKTVuFg@+}3FwH5`DaxKMycNdto?Z*^di-B|(VQ>~iU@Qpl7IPNa?iW#c zive{O;^Ty{E)wyJVQd#+7#Cqy1=D1;5wN%L--f#H+L#N0ZZ837FIcn}DR>K=BFb7M zY%O}{qPzHusJaVdjOJ$^No*|w)Lr7rTYe#IErq73hAd*3EQ0n6)E7~3E(Nf-@bT&8 z-?+593yyTX1;DT@x{D(87jU|ZxLdj<)Gt?9wbWfjj{YLpTdM-`2{y(>$g(fp=q{mo z3y!`*$hr%vXQrWYE<*F)VHNfWuMcc2 z1>~2?FJGtP7lL1+UzomOZwr5{FQi`3yCwcOQ+$5#zW+}@%VBgEtVhx>T)Gs^> z34N(>E=7TPi=eVC#eiIh)LRAOFL=B~kiFv6E<*c!(Ag23BkRNFK^Ua410amBfZP#; zN6G}feKMEIm;OugOSrvWX@1{7VJs!dEG4M0my%vT1i8dtN0MKfUjZ1U0Ako9ct_k- O@Gj(vaG@ZIC$=OY|Lm>+ literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SantaRosa-2xOpteron-2218.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SantaRosa-2xOpteron-2218.output new file mode 100644 index 0000000000..ddd8911426 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SantaRosa-2xOpteron-2218.output @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SantaRosa-2xOpteron-2218.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SantaRosa-2xOpteron-2218.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..afb04be00a1d7795ebdf89c5601bc4e21e07d49f GIT binary patch literal 661 zcmV;G0&4w2T4*^jL0KkKS*iK1;s6Bl|A+dJ0su$?|MO%Dm08kJJ00>Y6 zj{pDw10?|-p^ZaBMkas;KmcMKzyJUM000009KZko00000035&o00000000F^5GIW# znwn`dL5VcT83uz*rl&A^Jp2n=KweJZ)iYUo5Pwg!j6M;tZ$FS@;ADNN7^%;#0N1W(0B4km#q9$dAb~7+9 zfl4U3a{`HgqQl~CV>2O>TeNhU?hB$LdZ^4|ugv&{1@#z*1yrdySID*4%7y91Tp$ zH5Q`fU|h1Q=4tqR6LHNso05sH;)*dcP8j3B(7D8I9F2|!h``9mu=1N@B-F^Uu7fg) zBEx9Vniv<%zd^k;P4R)a&}uI<7*N2#U|O)l35ecNbjCDBrLIlYh`$WXPO^rlIPMvm zo6UsO*kE8_QM|C?QJIy?nw9F&T3D$mz_D`7krIWzaZaqh6)jyB8|3~f1PQ&Yo-b~MM zqG{_VDLje9#O^G2lsknQlwwRxtQ;*N#;GSO&lfgWA9cjTU(4I|mPcnT| v>YWEI6Wi12CW*3LF)2Eer8+!QT8~eHc&A^8>+MeDPyAiU6yZWbr{=qeDGfDp literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SledgeHammer-2xOpteron-250.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SledgeHammer-2xOpteron-250.output new file mode 100644 index 0000000000..5eed18c3cc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SledgeHammer-2xOpteron-250.output @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SledgeHammer-2xOpteron-250.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/AMD-K8-SledgeHammer-2xOpteron-250.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e4210a5efc843eaaa9f3684b1e3c9b27cd2c07de GIT binary patch literal 549 zcmV+=0^0pTT4*^jL0KkKS$uLpO8^3`e}(#x5&%d8|NA6Lhzfu2-oO9>00;nxKmwb9 z00Wo+00000000A+0000000001l#NZ4WXZIHAQ}w-4K!$Jpel$!B6=pN`YGyur>bc3 zhDWLDJrSc#lhr?W0*F|~h4fMai{Su}izJdnYgCC?5)zP;8j;s{!Xt?wq7ihx7@lm_ z6iQda1LjgJgPXkSc`|C+!K)Xw+{o3V1R_#|VwII?l8sbRg7jRK=G&AsXk1@%;uS%; zBCnE)BM08^^>RML++KV>JG4DJqk&WkI3?VXDG;hqia4sO_qd%|J>?AWW|fT{WsFypVzOPUL{WPrUNA3b5@xcyOU&Zs#%QZD(u$&sUzOLH zr9#MLq$=7@JMdAal4#!)ZZuhRkJUpZ%a<*(Gf}akSEZ{nR)$*)jk(6VQrf*|kvBv_ zUH7+{tg5E`*dZP$ML%!Hr%HL4pK1J>lqzeP4P{|*oayTsTOV5$SyzBowx1GMb-$RMhsn~lCMx^#^#O^%} n&G{UU4ip#^ER%V&p^V2rQ=!?= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Hygon-Dhyana-32cores.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Hygon-Dhyana-32cores.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6b6b00f1ad9e0eb5cec79e622ea4192531ae70e0 GIT binary patch literal 1709 zcmX|Be^gWV75~2XO8i-NaM1;$vnKtBFWOM2dVL zcs5pqrPL}@YoBhV*j7qi8`uHlRfJ}Y>FX4V4QHl6g$aQI3d+xg{n2~x=iYnH{dvwk z=Wg0>TSg=Iv zmsG&YGZ&J(HZP{Xig^>k@=~HC<=*dhET*fjU8%mmltEyR;+MRx?epm|QfX9-L#l=^ zlV-T_=gkgKsO&WL(dDjr_dee&@gZ zwl1-MY*XrIPt!k2Pf!2TWOT%R8i+eVhZ1NLqN5WU!Pie;rX;FQga2`^>-WnISKra! zy0QJ(uT$ll^dF~ntk$%Jyq2OTFsX~YA!;p5>)d^=?Tf>E6m1{<<+5*r!M~3&y{p8P z>xvq*Hf@!PH0u2UEg>{6;|hlca3Xz>EqNUJ1|Gh7Ao877@9bN(DVBIN!pTK-atVQ~xLqFHW&>Y# z`1;VBe4PeCRKG!xY4NJR*Ogv)!tUJZJfhpLa1w`wPa!WME?VkoH3U(tScvUT3-aLq zk|TsVW7MRjm)>^praAv?Mtk3*09!=0sptJHeaGs({no&v7i(W+zOp;bL3ltCU5IZ} zYdxh+OsQngaj0ZzAH=ChUaug~`G;(Dm4v83qf|3z+(6)$piP61QOKcyC%k*0E)@df z3l}Jzl1xit*9aV{cHACbqjdO3DDBJ)K`UKi3e0kI$#jxIn!%O3&z36zGw>3W}@ILxJDsVrG`*<-FpT0in0WHj}vAH%$d6wN;-~COc=$WE>nd zgpPs%CQ6i@h-e9zMR`BT%|6_5JiugAc5xi(jju9}Kzu+08ZB%LRRXqx+lkf4Bo>Sa zy7TVz7Cg+YwJx|!dac8IMRJuQL`go+KZ1B^8&M|*?wcpCD#}u?_H5Z~4GXtsA`)$CuVh&1x*JH~o5gJY<=mQIQ1n3)8s@nZte4Tg>% zu5CQ-&RCmKKSGg=%Nw|B?Mir=Gf__<9UNZ!c=u7 zx>Q&RZ?35Gz8g5_ zin#=Or9{-PM0I`)8${p@pjS+}OcXYT#=HMpe?IBm?;~-eJ~7x3 zMAS*`&h=zI=7I?Ku+8@r(#sLX8?0+)eIgY-;F+ppf1> z*f4bg*%0UyK~<;$!M4sAd0S;LCwz*&kr;I`vCZ(Ro;(4tna7nzp`bfLc- znJLUk3G|b|p(d`|yK#e2iSoIC3u*%`neS{Z;md;YH*z zAG6wE(P`P=q1LCt5PDh$_VUT!R5-M|Dcm7CCJRflX|ukC&LQaZ(msG=l_^Ef8Y@@b LI$iR^wPy4`{kpeB literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Broadwell-2xXeon-E5-2650Lv4.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Broadwell-2xXeon-E5-2650Lv4.output new file mode 100644 index 0000000000..a4d630c0fc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Broadwell-2xXeon-E5-2650Lv4.output @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Broadwell-2xXeon-E5-2650Lv4.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Broadwell-2xXeon-E5-2650Lv4.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2c9996fcd013ef5a99dd3d80014f07d03f5e6fb4 GIT binary patch literal 1996 zcmX9;2~-nV7Oj-lv=q%8U@UR%mVmZH9b8yMN2DcVXo8JPgp?K}M6~G`z$Gm^V#pC& z>(Dxh*ho|ekrqKJMI`J=Kx{@-mVgLp7l;yNQ(3!lL#A-v`RASU-v95P|L(j0vT)JH zb^d!-?%w2$eMY$h$tFcYlRT z#OkB*jbq6n_d2c}+~(KPF8)3EpW6n5e!QQ(dR^xJh5udGk{@u~dzqt$r1QY}m8JF^ zC#j9p-&=Ki*_Q#%6+I`}rbn?&v6Xhsr`E*k6q1Dr96DuTwyEqQ^Teq?u zyd*`6Rc^AADSq3toOCKf`-1sjIIrqb>(j;}n04#I2`loBm{wOfABRL3QwP7|DT1FX z4wXC%*?V^VfOy%J!g$6W0B}kd0szNV5r~8U07J?H0LVh89qE+suNYfqV2jHaNTGWV z#pT==l4@?2iko#C=4LGp_I3>J5B4cg);&XyhTHfOCaj7Cjp`lO$^I03qgsbX>Rdm- zCJNM{avaHzDCOki$Q#sxnXpcbX>8EL7OaXoDtKOn452EDS&LZdxC(oMMj9GVtfiR7 zxw%k`ji0O*(F)Xt#$)K*%S2bBP{Wp>L^fD~Xv63=e={Va>sdOKRe?rUz$TJ-#e;<8 zJU%hNo45kklW_g{eX*@(a1?5|0+gmp1vl_6hWH61Vf8U^5}dd}hvj56?P?e)fB?`l z4w3PIzUL64#W`N+P9r2f?EP^|jt31-pW^~Pp<3~OrxTaRhy|&ido(2E5cai`Fx^p z1O4=F&;SXs>l#^Qn}D5&D3MpFzd&6>^pW$z;ZD?BjuYk(%7lisun&igy7op^^?ub* zDaTv4Ub-cK(w+&}5~PV5M5Zr`J(~s!lC05Bd)i$BN@}zZTCe^Pn*Horxt1UE{ax;5 z=-4b^tYEk^l;59}qwE=XPDE7LCPW)5;+?z%*W@*aW6Cs zsV6Pu5~Sc(7$VcA<7yp(@-m`X<*TyC;g>dA+)TRPTQNn9qEE1!*bBe*qN1;}RXZ&g zrY7OZ-~Qeh!?B`f6pBOcVO5%>{@i$U0L`Zdi6c_7QGyDo^f1CqhEyZw68IVVwlO)O z@6NaUZ|$O#;}@#L5r;k|`1|RE zaipt7bfW`J@iF8ncz-1ZO*U_Wd+ze!_fi|7EY|b9?Un|e(;nda)&-muHug4MjBvuN z$q->G3e>+CMd=T96VZmp+`vmQR?TEzYfU>jU)er@T6p_phK#7vTLNy?ZJc=#9yU&I z8Y74Cq^C&RW*SRY_KdZ_itZgy3OpvOxKQ-dm8ou){CDy8&|N@iDr-#x^MllOQtFdM<({*? zO?XDu?W8gh+4c+xJV49nlGeys88xAQeWKDfjp%7w9^icR+|U`jmbV;bo1zi*b`jv`)046jj0W~64M&K?)h3O$TmSX8{eQxbA~ z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1A-1p2co2t.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1A-1p2co2t.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c9a91b02e3fef5ee3f1945f956fef20ae4122fac GIT binary patch literal 982 zcmV;{11bDMT4*^jL0KkKS!yv%)&L7Hf0f#h0su$@|MM*%LJEKH-oOI@00e*t00>Y9 z9smFU0006RP>lf4Z4mVtGH5br$i!)YU;qFB000000{{R30000002lxO00000001gT zAv6RdRL0dkO*RyIVvkXVlVYFkK3zKY?(W2RbDJmHT7*{N43wGi;aIg3&lvH=Uaxy) z-C8E3@JdLQh?%e8`^yi3lEJw`Mui=U?&W*l_p93WB+)ld)h!ng za>Ry(9)gb&i5`+Br5#QN4UUH9=Tm`W^EsOod=4kQvDD&dWXq979Zp8Z=TdA~i8>T& zTyr^?g9Xc&F*GQ#a*8Zbp>pG5iZwYGE?lt`Q7EBe#ml1Q1r{t|q@2no4GUXK7ATWp z%q(JxT&o>i43gyy29m{C(6Jc3?P8)Rr&9^JwhN0EGF53sg9ajnjt2sUg&YXL*wC>= zqLgtc$?+_AaWGMH;%aj;ZeYRR-7IQKHYB2j9LpCHN1UR@#L2+wWWbm|;bCJzvDn!B zPgl_Pr|6yDe{y`&`1Hql;oeILE**+2T(K-sMM#o%D3NOvSd%3Lxw(SkPU3`<&{(ue zDp5p9dLe>^s7ffRCPfMw6l`3h1&AdQO-)Y{qe7&)f=Q|HJia+0uIjPmhE74i919b8 zlx$q$nx=uk!IL7!hC?O`2bE|j+`7d3j@@PG{EzTh7r8bqV&%)+Npi&lr5uX3dFK&P zgL{)FGQ}8gT&nDz~p(088nAYMSBWoaiMh3coa+&C@5Ig zGZ`>(G%Q@AP0N}cj0K8C!!eSLj2lG`2{L5rdk#kvSZ}RxIUEe1aUyXhrrvUk9@Elp zX@iKda%9tbbmDR-#GMYwbAh>&yl~0*M(1(Z@G@N7$#aP8IUAc6T4bZ4W5Co{=2)@P z>A+Z>FfdWEM#6^yM2s6A-3NJ*)?~qM7cyY6lE!RFBjQOTih8`0(woQ0KEGeD+P3`@ z^-hD*H%@0#y$6Z=55WH^^fe5hh{?pkVY+_l + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1F-Qemu-2p3d3c2t.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CPUID.1F-Qemu-2p3d3c2t.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0ddaa8d82b1c97b4d25a1254965cc2cb4bf3d319 GIT binary patch literal 3740 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 X9Ri8;e7N5-l58Pz;^dWMcN+c!-YqL| literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CascadeLake-2xXeon6230.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CascadeLake-2xXeon6230.output new file mode 100644 index 0000000000..f679d28bb3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CascadeLake-2xXeon6230.output @@ -0,0 +1,548 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CascadeLake-2xXeon6230.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-CascadeLake-2xXeon6230.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a44baaf2bd2c284429cc70511048b7c8d86b5374 GIT binary patch literal 2461 zcmYLKc~nzZ8h?57q&%jbq8A01aR`I&p*^-xz=B~(B3Q6l%-{nlqKVZ=0ZRahC;^i+ z$K!$1Jx!=9t_xpao z-^ctiDcFw@kHy4SfPR1I*M+xbPtL+n6#RB_$Q#;nWbBy<_JyPn0y#s@{3V6Co^l8} zwB>@EGzo%b^sQ^DO!*0K2znp--�v4&fD*x3y_@{a}bI{$jh(NmOTd!VF%6;5<` zOZb*`O1cx>0y#1>UtCg zeX#lcWs3o+pN*#hQSpeF~X$(N#(v|Qb zR2GEF0s#C8UkPlO`0wFeBBVN=Hu^;;tKb`bu~^YSoSS>aRSW|K-3}8`W*uo$emJSHAvj z{C@N2S9Lxg(cQAWBIAHQHk0xbCTCWqwkt9n9o+2 z@R!ats4NW5M#q7LtK={bqZSTKmg8B7_TaOM*QklD7{X0lMi`ug8#&B8sT%FaO@xWP zi17!i)Aagc<{X8|VB|CgqBfjDL!R=;H|c8fLdpgJmor6xuYvgh&Ot1ZIwjgeCa~@` zDx)FO1!cRDN|Vmx$dZjj!LO11hGT9$pJU*Iyw&{g31^ zsq-G#4feR-0m&&J?6wlbE)lYJznJpp{ba1Gs1$a?`Nif#=<|j=5}+50(_p>64sxx0 zO#CiocIljxyXe&YdOgJja{U=z)(>wWyD0MoLx4d`Z%JaIx@qXW-iy!UNPf1#--3| z-*l)R0r^rfoQfe9w!%W_l$6boPZK3_>$91rf@tshl)`Q$#oNY$vry?tof5He89}H{ z%O^~c78ZO|o`hYFMSdxP`P)|Uw?06c$=xJ1EGae%<>ifmsaULBXf9P)Fc09SM!z$u zWPWR9ej5Na0Qdr!A02mqz2rS=Fxtven3N~R!QZP{F#_Le^z_eLZ6xu)xaw1I|(UWyoIrlM@|l76A$JjNaB1u;)apcvHTLl7em_QX`h?1svn54KFRF#w2iZnd4-$s z^bYuX2=hrfy?&*aSkZUz0hZ!?>fjh{ddxcJ;rFfkVVz!CyzkOu65hi4#I~F(68YXW ziAYl@(iAy((^y!K4B^xbOU0%(1^o#>A zik=jFddp|9@Sv!ODD7+5=Wf9pR`#{rulO=zq^}|Osn@<$$tDdmCFfD8|A%d07}eo? zjP#K5h1m&vXL(Mh%AeM_`PTJW`}f`jn=%GwKBa6n`Ak7R7F>6)qxz}Scy zPYQfN^&*evbV*ld+GpSG&>NZ#=xd4FvDQTW??iSvL7dDNLnX#V%k6Dtav?H_wwzu+ zFqgiv9%rq?opJ7k|31peEj7kWdo`r7mAvIoxx|7*wml);{R zG1~ilTya`Kwv;DzACU7gp; zp807A*wI($D42uAXj{TVfik*C@#qyws@z8IY7Q)sNHW`7v~?HqK`?dOd-O#stj`lO zNvPR7r)p^CT$qn<>&IM%urFGi1Zu0Xh?$aK38;aW@*K2-6YcRv&g}yc?Hc6S5+N^; z&dcxdlj`)}Upv_ue9!wOnRk3md+6L8G6(0tsrY}TX5`4T$>AXvquqewE>Z#u3w@q< zc%-xZHRbbrkP8iR3l>)tdb&k>caM-_tKTu`t#jG%&SQ-5sqT*cA~IBGII9g^v?j0T zYK4+()fR&Z$MJ=9|7F5G4~lPIf4_Ne_^OKgt9fBRvycT(4KGxx^;IGcx;6u!h?wVv z@5W!Dt%QYJhskq$G^GBg~ehEe?oMb Jx)W~|{s$R>V;ukh literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Core-2xXeon-E5345.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Core-2xXeon-E5345.output new file mode 100644 index 0000000000..263e04efe1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Core-2xXeon-E5345.output @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Core-2xXeon-E5345.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Core-2xXeon-E5345.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bd0cc639537123b472882d04c03a7a666acf5b1a GIT binary patch literal 799 zcmV+)1K|8ZT4*^jL0KkKSr_a*_y7#+e}(#x0w72N|MMzf07`%F-oO9>00;mGPz6r_ z00000gp#8{p`c=DXaF)XGyn`VGynhwfB*mhFwoEd02%-Q006^7KmY(}00000sUZZ@ zO$ur@r=d>?0QRZr4K#aG)jv`py5GTt_#wpJQ9Y=sBw9p_>Q6!MA7Mh^`wATe2|a>P)<-0N)LIt^z@ZKW4~U@Z zC{LhFhjFlOI}8rN$ZRwj4TCY}J>zkp+$3k#3XP(M-7 zeq;H5u3}zAo&H+uy_ylAG$pU zuy_w}_=kwxY&?eO@gJrG+!_lE4W{>hwJ^0w?QV0M5 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Haswell-2xXeon-E5-2680v3.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Haswell-2xXeon-E5-2680v3.output new file mode 100644 index 0000000000..20b5ac9edf --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Haswell-2xXeon-E5-2680v3.output @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Haswell-2xXeon-E5-2680v3.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Haswell-2xXeon-E5-2680v3.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..87010d1717fc14a3d6f3277f03f92fa3e503a2e9 GIT binary patch literal 3768 zcmZuyc{tSV*Pj_i__kOwqg0k8F$QJHzC29P_{l!Qm=>*?--W#ZPy-m%deCpT=CtgaBnFLTirBQS!YjL)u%EklA^wr01?jB42~uEt{4H^8eZd`jEyPB=}ARp`;Zf%#wpl zLarg{KQ~8pySeC+Z8>*N`Gf}-S1CG=UQ2Ylqq{@SsYa4OHOCAqqTC=lR<5xI?3c0o z3QP1^7MhwPG8;GtFUO1yMv^t2N137J{s*HFN}7HD-G!~s!6Tc$q(1{kwwa4SM0m_WlQ z0box@xRs9*Invqm6Vk<3iRpg6ekE@PwrVI4M$QR@Z4-+s5z)-6 zPXYZrjgblE_I@XF4ezQ#akgmi1v6PKh7}}4Vo5?V!`gZnq)+B%V>scKyqX<&k*Jc#`2b26Rg2$!$@!IYa|&|$!c zrhsKA2HEjbGJo&&q=9!Y`?oTgwKUcO%^Jwoy&u-bsLIVBL<#Cn?74W+oPhMItjkSP z@DFqa{MFwx-?McjIv%G!z^I&f_<8;OG9>|XR9dj zoW9mMLS~`tvMc*u(RkOKARb#|a$0qX1X*59!4XUyB` zaEeA`q*yZ9&e!o~ab;Plov%fkoove`z(SK;3IakQITB834bv=o!m5@;wU;6y|LDh? z*wR0a=li29Pc?Ae3t9(lxv{EIrA1zgul)n!z|jMx`>Y;3huQ=Q7yAdb5R);W+Rn*K^E6OJv zUx`XqM<~S>FJYVnk#JAj#gV?Wi}E$jxpra}ecb~dbl6Va)sjqaiCFV-Cv(;-IdXzP zOqW){Tpf2KOrvQ?=Px0qb|Yy)R{r&Z3RAD1r5OPyi3v3zipV&mLI}mrl=$pUh!-ZQ zpb+~4&zc=8;^bI6w+|N={7|jpyr>sCEYoTvWFpLKB$7`tvo@#LQZk8EliUg?6@Cde zm)BO0WgSGPS*}c$n0?SLR2%$1>OmC8oLKP)HL98kA+7~npyHH`&|(R z6hJrIRsrKuz`YZjHmspi9+>XQEuoBZ^l-L!4t8 zT>ZRVB(=+f9ca!RdTcEm!p6=|eP#}5YQ7x{feXL6kLAF{kvd|%A?LT9d?rSok~_%twrDGJCRZbI(6@dQNTS$qmIAK8+r|X9UHvJ@{<%AjqA5l0G75doLV;TY$mS(@c(8be z_@f)AdSvSu6!zxNx<-6lN5&t>Qo$idE+y5j|E;g;uT)Tp%<=2^(#WVihug{hoOES; zzGw8E47;ozKV#hxhTo3Ez%K`Wp|b(|m$N!hdO~y!4BA;%zy7h%@8DLyv*{dH); z#NOPf_N%iuyWi_%`ujW$dW-EDV_=j_a|ljn2c1pJ8<2z=MOQ~nMVIh9E<_@e#4g*@ zjI2?Nx>+AswqQc-oCAKb20OMTPIGevBLQU0oT?(6<|bbFlBM4Sgi_fhdxrR zpAnCD@rN~ULUaI7O~b36vtH>?&gHX4Ix)TA&a3r+4ZsG7-bc_Q5bL|!gYCV2JgAF7METF z-wz`*8V?j~42OhSYKQiX0iwivh94Cj%NooZJ7>bq9Qt#XTQPexT;SO`#q zB+VcDS6~%1`Nq}7@CKdpx0M=R?!0r@IACzzQ8e;R1JV-KJ4e*kR!zDu&5tU!k34wz%H4jy9Mk=r*_Aa33v_%ZD-b0?Ax+o;8$HUp7o26_o=(DNU-p9qce!w#XO@*`%O|MYMM`|U z61R0mF>b5q0C`s9%WWi{b_h$I9%qD zNZu!Fd!Q>QM0_*O)aAt2=|gn-M7FNrnxNjTd(_CSYv)Fs-}3aYYh8{wEq#lxzpVY3 z{_6^MwzgP|w#ZJQrpOKJbQSA4I|op@IfEd+-`)kmr>L6oNlTd7x=vZW>oS|IyLO5F zqoa9U(BSZ|haE!r?S~Bx>Z8?{Pq<9%zs<9FC|)^w-L|lQ_StUAzHb{5UO$V{V%XXG z!cz)*q=lp_f~60>88i(JBIi3+^(BRf|8aA2sOpBug3YV!U>WP?-ME(~eK?M&0 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-IvyBridge-12xXeon-E5-4620v2.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-IvyBridge-12xXeon-E5-4620v2.output new file mode 100644 index 0000000000..9c81acbd39 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-IvyBridge-12xXeon-E5-4620v2.output @@ -0,0 +1,1376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-IvyBridge-12xXeon-E5-4620v2.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-IvyBridge-12xXeon-E5-4620v2.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6b7e4afb8595c5059bfafa77b177745e38301107 GIT binary patch literal 3365 zcmai0X;>5I+J0vkC?ll@5*3BE2RT_N0wSBB2*IK?A%O@CvYVrb6a*2#4~+1=*XU$#Jj37-=BlVNaB;nV88HsHk049fuol!3B9qjcpTs*Cc^N_Q*#ewNJ! zHD>_)?H}&e)P!c5ruzlk8wnea4R&+#OK)L&3xow(LYr9CO~eC@w{k9+H-koL$Q00mW6 zA&PWT^!yHff2rUK0DILxDB%i6Jb-HC`2FacdFf|69=d@`Ff|Jw$Q0>uYg1 zRznP8+?JhnGciL;X*w=X(hkXTTT{Ob^dN}Q(+}mdQG14#>l#}IT4y37C6c8USz(C-H!^_m0z$8t)cey=ccvEiG@a3SVK?aYf>Safa8|RbWjB>GOX%$!IB2HaB ze8SR1Xfa}b$@BPv-nSMBr!`01AD{4HTsf*WxuwGL7_X2Bu;=VAzg+pEJtIeXWOXje za%og1F6lUN-+Y=n{;&F`NQaui)5Ddq)-fx~lY@M84nCL6{Ge@*-$X8zs=Y+dulA{L zMnv0|U_P~vg8vBFgdie1WEE!tN5e7jNn|xnA6)`IkrQaYrISdv#)QScjxh;{=hWdbfNpx}w` z5OI&(9u}yP7%NB*_PeDD>9UQ1Ryy{7773KbEr-H#i2u*Tk~&Bq6*z#bRtfBc=%P-n zw@9ImPq37EIDmMJ9Xm6yQLP(0I$?{LVQw`<(I9rhb4Y&SE6kOVsQnX$Wf4>smyDB3 z<|$$To-|>mL7Qz1`?+H|MA1}WjIC`bQ5G{KCw)yXC>wsj{Fdt;elbDi1-iAi`uSOx z7xSsfjOML_n0wm-L9~Szw-TkcwusvLQhbBC^pqF)9n)s`nV5)}fR~0$lSLOXW~nif z8rT?f4aZ!=&h#1mmpMw9I~gqI>gOJ%C*FPP@9S{Ef6uHS1mhGknI>vIyR+Ubs^sgn7^T`O|PssSJNLl?Yo_@ zVIv(~{q&uH!fU4XA#dVn?_oE!Y4{9$IIoHw2C^XwJV%>%s;*5=weF3S4Ic@T@}xQ8 zI5UJ1Sjc2?Zz6qYDFshMI;mBNEF|3sEv2%kD)1oz55ExsAHwPXT4AN}k`d#-hIHVPpXwgx@By6J-@~Hvx1!H3hCbCPcx!e z3K6?3e+f$J47yy6*|>Q>xp!qMPUn|{l%EULHAN%?xXUw*Yb)>Bw3L+v)0E6qV|JoE zYv-P1pkUXwU}6=sJl*Bs=NWwe>+QAddN~JIft{Rf z&*V6z-FbHV?enNH&$5oZ%XwjU`(FLcM+HO*#U$~8hcpqminjCBfr{Hk5vY6g3M|hI zH~7@mLl*E^*n_P98{{oAOLl?fsLd6qjx9t;^hD6T>WL}>S33Lg{Kv4Ix#-$@hlPhD z$GwL3BuRk3RP&`5)-Kh`sS*oA4E1JIpFj4-jZE}rwgAoaP+|=0Q_w5vq)ZcHkT!v4 zV3;+21BZyK636X>=<9HRy3lIy`2H*&wss7RBo(Ja>L2~7z3oTz&a!SGJ>{Bs=FL17^VHVvp%V?~KTIRCc+@GpCsjE! zldKQ7_3Has4jCYDyMVF}x{y>oqZ{ANJSPif zWfm_C>#z!XU>{V=ZXvu*cSxzdXLF?-oNZzliWEIHX^4@u*Gx7fGX}$t59X4c@%}il z2hZx!i12>#mJ+{ETpuRu?TGc7mjx}Z#~Z-j)p6e^`(%pj)K2q~E-xulSeLS2X4bJQ zvZrRUSenz$;*`=IZfE7|gut}eDCO%Rv5s@Byd-4U`eW>|wSeOq2~V-^@#aDA*bZ-Z zuFKWkJiSYn|4zNOX*famD*rE)MZ8f{{=Q?zXA>KI>>lOGm zP8G7@t382T`p_c+x<*OKjBqt_Cgdc1i00T&QtYG6{*?~>)DEjz8CjJe+Ur27BMYEw z+s~Ut#++(gn?cTx8s3IcA5X?-!!f({wG-_SFuoW zVAA&FvvkGy&7vJjFEtKdE>;}2wQi=WF{B(;o*FZ+HO?d?E?T1IrRJ?`kZ3RfJZsdB WJklt1Y8aV5cy|NkvnA7G;C}#J9P;A; literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsCorner-XeonPhi-SE10P.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsCorner-XeonPhi-SE10P.output new file mode 100644 index 0000000000..0176fffa21 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsCorner-XeonPhi-SE10P.output @@ -0,0 +1,929 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsCorner-XeonPhi-SE10P.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsCorner-XeonPhi-SE10P.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f972f28e699ffd31411842b4ec42d3cfaee3dd6d GIT binary patch literal 2554 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 Q$qT`EBvXY64n-RM;D%n5EC2ui literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsLanding-XeonPhi-7210.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsLanding-XeonPhi-7210.output new file mode 100644 index 0000000000..bf7e904c06 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsLanding-XeonPhi-7210.output @@ -0,0 +1,879 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsLanding-XeonPhi-7210.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-KnightsLanding-XeonPhi-7210.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7af33a1ff9befbdd85edf3199be77bcdaa4fe7e4 GIT binary patch literal 4021 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Nehalem-2xXeon-X5550.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Nehalem-2xXeon-X5550.output new file mode 100644 index 0000000000..87625f1c61 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Nehalem-2xXeon-X5550.output @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Nehalem-2xXeon-X5550.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Nehalem-2xXeon-X5550.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..4409814b8e6ab8c26f79a7863c3c5cbf5771f79c GIT binary patch literal 1125 zcmV-r1e*IoT4*^jL0KkKSt5u_NdO#5|K-|{0su$?|MM~-07`%F-oOBi03ZMX00;mG zUYOtKT}-+0JvE?X_0hZMNHIInHz04iNaE zXgP#(pq+wr3snT3u%MuzSSUW=EEF9Bn05*b2T<@I0JwJy2QaX19Yc^%d;{7YgRoFg zCm2^=k%#!Ejh8FIS+jP;y`|d|{BrAq7=cRaIC3 zMgWcg6aWbkKx-92P%;%@sGS0Vv=MnK z3|1hZ#sk25gIU&~&~O--?&7`Lal$qLFuO#>l8V6a#g4Os~)s(|$c1ib_#stHsI6cYh0V7Oc_aJX9GR|=q@ zphVP#k|KKpK%lZjPo)pVKNS>f;h;uHcLQW2+8r(vm`&~fXrOND~e9nj<%!Bk){hdf}gdxFP+(#8;=8|!;jUJ9zD zJB3Lh*f1M18wLV{fT$V@0>MDAOy&!D1^>1K!V-|agF(m?3yas5A`+h%_1s3{(*#Z^=s!hpDFEDZ$$fy%2_vf(K=z+5{a zWI92h=nnzBhHJoc4F)?~J8m>3M6o9-44&|r8Eq&tVu8;0;?IR{X{PSdX#ND9eD literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Penryn-4xXeon-X7460.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Penryn-4xXeon-X7460.output new file mode 100644 index 0000000000..bd3eb12bdd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Penryn-4xXeon-X7460.output @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Penryn-4xXeon-X7460.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Penryn-4xXeon-X7460.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..27eff1834d7f9efb1d0786bca1b5552cfdee24bb GIT binary patch literal 1326 zcmV+}1=0FKT4*^jL0KkKSxDN})&ME`f92Yc0su$?|MNK@KuUk_-rxX55C8xH00;mG zUWDiE81ObyFiIJcHl0>KJKh-@-Xc_VBeWnu7*}$iXziVACK{kr0|RB59d_}-7#8@u^!5-Xr`~7{t z56AKPyYs#{=dW)4{e1lOf-V6CKvV%_0YzdfTTS=N!dq>&+nI=&nVFfHZMNHQNJ7&P zy#y*CSwIkHz>iU8U>BIMSS%HOz>SN*y~6buxVRU{Uc$j>UjcU(3$VHi%rAhy#9js9 zE(M@fp>-FSv@OM0_-DN7Xs`f zo$=sRpt=ixAz;1wbGWcs$h0gLh1gmbaeRg3EsNA$qV3uw;8=@$(pVKAShuaEt!to; zMX#(}^Sl;dwVH4TXbb>x0OXhkK^@{g0yZM@5sEHXqT`QbzRGP?90kCzS{8+&9We_t zFc;_+0^2nVFfH znVHa9)@K6XE$?F1vm(&7g4POJYeLqvEo(C~I`K_+fFOa(L%Q|nJ3tG&J&{!8?brytZTx-AT7H}*W zmmzf*BJ+!Zb95I1IR%32-)(p6MdVxQnVA=HV5^|8FDpXD#`M^`@GpS2FC@4Z33iLo zEo3iIb{A26h3YRbztt|@+vxP|-={g5o}$5hVwVYMT#KE2!s?dA>MorH&|GjW>ZiH>+R?-Ah%D7Up|8Pi_lmXCB$C=eFg3>n7fOhym|RW*j@$DUV_lM z3#eQR)8F6S(l2pz7nrs$NVYHHmvFkfrSRlkt@qfv3x0jYt}`<^7noiG*j2G+s&THN zbQkRC7d^ZSuGyIvL2F!vv3qPnegYHj^^5!K^8Ek4tjw5Y`RiHwNqeQ{7upwey}V{- zMVa##{RRD!{DsdsnUGnZF@1vlBKv~-Mc`cp{$lW#mh&?{g8z+z>Myif7b3{B1<1B9 z))xZ)KVP3-Gc!3C<-PV7`3u-B1>9N|gm>gGQGHauqF=2q`AdO&g@Ir%&@Ul-2;eHf zG=Oz_h|&@B;r03>9IyfQ5tK$~0Q?BfBLN>8Vls%@im;6l7y#J5CHZ_gOX^GLmeS-{ km%%R_rQ7q0?_n9lW1InwK^O?*6?==hBAh5lByDSJ0Nbo>(*OVf literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-SandyBridge-2xXeon-E5-2650.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-SandyBridge-2xXeon-E5-2650.output new file mode 100644 index 0000000000..dc2dae0087 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-SandyBridge-2xXeon-E5-2650.output @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-SandyBridge-2xXeon-E5-2650.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-SandyBridge-2xXeon-E5-2650.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c8119ceb73b225cd6fb1df2178fcdef8b47eb421 GIT binary patch literal 1434 zcmX|AdrT7t7{9yHJ1F4EC|D?zQvnMyMd^5i*PW6Kn8wbvGEv+`*;dib%3zcNa@T@E z=d@Omv8i|_8prXl8bu}`t>L8$SbU&7293DLLqT9bd9Un`{qp6@m*4ltm;AopZ(Fh= zVhgd?|BJoFevP|;sOJ2_ZXE=~L(9t(n0;dYa-RhN0eirnD3bR=vIa~lpI9^5@yMq4*Zi0l^xyAmG|1((|l=|$U z#C2Ck*`n@5O3H9u-`nzzQFf;OKzsJv(v_M-)ASki%^P#X4)f^=7gzk6_l=$Ns_ABH zk4N*}mxAW7=3AGJRgUjFULcJ3OygeMlX!l2_)Hf(xZyTWzkRhseXi*ZYV?G0HK);= zAU_3|Ozw{(XAaIEt6s=hx-vhLw|p{?Wh?Z52I&)g_3ZG+oV%w0dZ4}`~35sPQcs2(cbmHig zXmAc)6M?jP)35kEj*@f{YIQ1&C6TK!r6=H0G2bB^DGGLiXaNiwg4}s_rFg|R2w)6y z1sIivK2Kf^Ue%)|Q$1iyc^&BnDFm>uzUrNuA&Tx5AS5Y(@AVh!<$`8=fEVCT!9~qjQ#}uLnYYKDilq+_W2ZOjY5NO)X_!IbMz_^aa<4PDmoN=oW`-9{w zzN3Nkk^fAAw2BkSVglf3x2X~bU4*YAMJ*1C=$aXyb@i%*|EKi@D(t&bCt;e@w| z+66>{W+C3iHJ-K9fi*tlR!6Re#tjNCWTI^QESfY%fm94OR2seU3c6Dsi15*F^tBUE z3lnD`Q&BN5m?sUS6YT?=og}ipKBU~w>=D1=Ign+P96D?1g6DcJ<@_5Vg zrO}oZT_D;J-b~a;Z2rL858wmRphECLfIJi_2{wNG%6$l$h7>llL}h>I5x!>eA>VqI ztt0Rq6V5b~D&RuKHc0+9#v%KSkmGL-kR3@T(zknqrTC1-G=@+cysUkdEn)58Ww~6X zp{&3a^{O!91%llZ&Kn;(a`4J(M49T&gVh#i$dr>ga;ApvXF}xi6dE^+y+Om~y)EJk z!*oKih@3{0xj-LmVw4Crj3|RV;JV1pns!V3lw2Cg>F;%0OO`RRP&C|Y{H{4Lfjo9i zlx){cKlf?pD5WE8Oto*yK*k25GT=~_rR9cTF6SQpE0nMZ=*gJ=4rG{E8hbw{ zTi{)n^FOx^xXEv$5)qaIb|5ES$fYriS~F%rKOi&29JXMpwo!gbooF{Qf{>{KL?%p; zC;dHPXVp$o=15KTEQl{!PQQzWB9_}A@rm<68BxEl&q1`(H`Y?C4|rHm JaCOr<)xVE*QXK#Q literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Skylake-2xXeon6140.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Skylake-2xXeon6140.output new file mode 100644 index 0000000000..689284599e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Skylake-2xXeon6140.output @@ -0,0 +1,496 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Skylake-2xXeon6140.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Skylake-2xXeon6140.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ec380d9b7f64e3ce323f3ffccf46ccc77856e6f2 GIT binary patch literal 2328 zcmY*aX;@Qd77iiUTb^k7sElDrkbH3gJ2evaO-Dhf0~rD!dJ3PA#DFhaCh z3|es;B?>NKL{Jn)KobZwiVo4Xh6)J~(0~v?5m^+N>-?Mh<37*%&VBBA&w0=HzU(bY z!Aq9M%wHeV@*w#J;r80;qc2Yo36aF<;cp6&m4^n+9Rv~q(I7mqueU#NK7sJ=s2#yT znC(D1`fWX1v?7E+a5^Xpd~;)3eO&{;BdpFnm#|Z;aXyxNoU`7~iSYSRe?L`BS6Olo z|1Uaz$x`IzX1`2NAkWns?C~?Z!q16fx)Z}OF~^_zJQFK=c2y*cj@IyxynTNlv&J0# zs<#_7z5jFKijl>QGQ;z80&aQwE;`!;ca96cx)=WRb@ITTTUTd%Il$C*vlcfm)MdH2 z3~XflL@X8a>K(=eRc{A7ztVTDXp41O{Pq55-|@8A?k1D>xy1_Z_JW!E?ssoaRg;6j*G|&u5DbSAAX@6L2v9})!9pj9RK3;W?@!e+E))k1{ zhOJ6>myJ3eD(0Q~#NmM7%%3@IYMMq(ju>8dh_IUAvla7pvSyuVxgEP8@wk@Lcd%iPOR*J3H}CY ziITD?AkqjBum}t!&ioXAV(P zjd5HqH$&=`TV+zK)jj;`>I|tL|H`bcSqJ(=c|nORIX`b}wI2Uv1)lR!t5tdYJPFfU zT0^>OIX$YPiYSnj9%)TitLq*AP5B4@MTzogL;RWgr^dJxrj;CIEv=tvdZ|_yhBNFPN(! zGEtmO_G$5UCOOvj@{jx|?*}WmR|zu^JCUZ?42kQjq_giqgB&mX+&cw%2kp2?s5ogu z9%c3&;t~<1Y-Pd%zH6bJv$LF10Rw>24XGz3Tw(h%QJ$2er365_A5ciVwUH?+WVl*vd_uOp(0=O81vFoa8^W9{c*T zGW%ZW(=T++nqbW$`j@CYm(c108)s*;{YxxfEfiMe&x7qQ0&+?$CFXcO4)4CDIQs#v zJB5ntj`70$P+e-`wtpgBe}B?=H;c{MoEWFu*VkMs9O=pg?ZP`E>hFhu8@`gUTRmQC z4RX%D23<^apsC$YP5tGJd|PX1T5G8=eN>{Qig_q9(kIvr ze$5F*T4bpO9m)%gJ)4xSrRS=V4z#LkgS;+y*m&{&NLRn4{bJeyaLLPanc{@vjGUBi zOL`%5tCRMiiW5>qOVfJb3M!&a3+iv>ys6C-cGeSk(wO7V@qWam`8?h*UQD+eleK#o z*P|O_k*DMeNcZ<0MMkX6ahW!2z`~|-7}m!QxUGB}`IN$4bMkCu>q#HFSC^89Z-KVk z{tJn{11{FMDyXQsYWNgTBj>U0K|2X5|57Q@?oVhc@*Yy|Qz>~vGhxTHRpayFLCa8yfAgACxGTG~y zk9`1|VuPX#6=#cRoFuFdc?HLdvT;WkpJXqM#C?Sr@ytUq1k3Q$)DKGqUfz>s*Z|TG zHBvCui{If@BI*#-E3T0euqj3ozO-dFj#$tdEhkj`gu9 zYjW}!%{hV|5#OyCobZFr5#F>1r{oWV6n~8uWlb{`R|X>SrnH=C;y~mzM`!mrPyd|z EU)|{^V*mgE literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Westmere-2xXeon-X5650.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Westmere-2xXeon-X5650.output new file mode 100644 index 0000000000..7ae9e9f05c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Westmere-2xXeon-X5650.output @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Westmere-2xXeon-X5650.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Intel-Westmere-2xXeon-X5650.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a29dc702588476ebe40b08fadec93267b946a6b6 GIT binary patch literal 1359 zcmV-V1+e-;T4*^jL0KkKS(CV}8vrU6|K-|{0su$?|MO%Z0Lp*w-oOAx5C8xH00;mG zUT13&;60000D z000004NuijG62xX4FgRKjG8pa0E$wYX_IKmWYg4Xq3U1|01cX;Qjrrv38bE;nx54( zdY+IxP#%$?q0kU$#K%}23RBqM$pY53q9P(ee1KYbl0S9?8$(z#;85gPmU{a8=f96` zefZ~&bB?#Jxb4>+YoxVB(}=e1#c7#|+v&8tVp&D@rHZXV9cS_vz`sFqE&+am!FmfK zJ@X#EzTWwa+kElP`RASBPDzqZWRrxGm}YzC4+sE&2ZJy(0nYj7T=UMk=biJ;XLP-i z{wZoM;;yhqppQ{&&Ivw(!C&Sc?Ucdy9>4U!b#LdkeU?zI4{LYg%hsYg+jWVQgK+#`hKl ztk$^;H@!8jTGpD@n%1;00^k=S!$g7g=GY%gJS zFF|(_a4ZXA!FLLeptLT8axTKqy9=EZ+aacM)fwI_NIC*_drDXzZ4|=ba0y=7Vkl1mh$?Gk$CaPjO~XpVVP)I+%Dqw z7ihWUNysk(@#&s?^^{nRcjLZqd*1iIL12@g0?=P(g5C(uy6d)az_}MGZ)s&OP`(B1 zFWN70c^6*#@$bi8INz^rZ+qVNzj0u+FQBENc1zhV;dk%XZT=x}mjdiAy9=RUy5Ly{ z`K8FVE_hag(76|3aqHjLZ-~A<#oS&d3xRkSVQ|p1zEt_eg?tP53*cX9yoRopK@e-6QS z@9Hjs>@GsVV7>MsKR|$!fY%ny!cexvK*}Z}GlDdT-~e=m1 z_=^($34Id%QvOMH7tCKVXe|o`f-qhM=r5R$uwNl@fZYL@2g{sB=#D?Feu6bw%mYx3 zf-=SfP>x|7LNUNcB=>}Gh~fdGuuJvfFP_?jtsAMtnmPag literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Makefile.am new file mode 100644 index 0000000000..025c918dd7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Makefile.am @@ -0,0 +1,83 @@ +# Copyright © 2015-2020 Inria. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +# Add your expected output file here. +# By default, it shows the output of `lstopo --of xml -'. +# +# XML outputs shouldn't have gp_index attributes to avoid spurious errors. +# Remove them with: sed -r -e 's/ gp_index=\"[0-9]+\"//' -i foo.outpu +cpuid_outputs = \ + Intel-CPUID.1A-1p2co2t.output \ + Intel-CPUID.1F-Qemu-2p3d3c2t.output \ + Intel-CascadeLake-2xXeon6230.output \ + Intel-Skylake-2xXeon6140.output \ + Intel-Broadwell-2xXeon-E5-2650Lv4.output \ + Intel-Haswell-2xXeon-E5-2680v3.output \ + Intel-IvyBridge-12xXeon-E5-4620v2.output \ + Intel-SandyBridge-2xXeon-E5-2650.output \ + Intel-Westmere-2xXeon-X5650.output \ + Intel-Nehalem-2xXeon-X5550.output \ + Intel-Penryn-4xXeon-X7460.output \ + Intel-Core-2xXeon-E5345.output \ + Intel-KnightsLanding-XeonPhi-7210.output \ + Intel-KnightsCorner-XeonPhi-SE10P.output \ + AMD-17h-Zen-2xEpyc-7451.output \ + AMD-15h-Piledriver-4xOpteron-6348.output \ + AMD-15h-Bulldozer-4xOpteron-6272.output \ + AMD-K10-MagnyCours-2xOpteron-6164HE.output \ + AMD-K10-Istanbul-8xOpteron-8439SE.output \ + AMD-K8-SantaRosa-2xOpteron-2218.output \ + AMD-K8-SledgeHammer-2xOpteron-250.output \ + Hygon-Dhyana-32cores.output \ + Zhaoxin-CentaurHauls-ZXD-4600.output \ + Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.output + +# FIXME add AMD-K10-Shanghai/Barcelona-[248]3xx + +# Each output `xyz.output' must have a corresponding tarball `xyz.tar.bz2' +# specifying which tarball to use +cpuid_tarballs = \ + Intel-CPUID.1A-1p2co2t.tar.bz2 \ + Intel-CPUID.1F-Qemu-2p3d3c2t.tar.bz2 \ + Intel-CascadeLake-2xXeon6230.tar.bz2 \ + Intel-Skylake-2xXeon6140.tar.bz2 \ + Intel-Broadwell-2xXeon-E5-2650Lv4.tar.bz2 \ + Intel-Haswell-2xXeon-E5-2680v3.tar.bz2 \ + Intel-IvyBridge-12xXeon-E5-4620v2.tar.bz2 \ + Intel-SandyBridge-2xXeon-E5-2650.tar.bz2 \ + Intel-Westmere-2xXeon-X5650.tar.bz2 \ + Intel-Nehalem-2xXeon-X5550.tar.bz2 \ + Intel-Penryn-4xXeon-X7460.tar.bz2 \ + Intel-Core-2xXeon-E5345.tar.bz2 \ + Intel-KnightsLanding-XeonPhi-7210.tar.bz2 \ + Intel-KnightsCorner-XeonPhi-SE10P.tar.bz2 \ + AMD-17h-Zen-2xEpyc-7451.tar.bz2 \ + AMD-15h-Piledriver-4xOpteron-6348.tar.bz2 \ + AMD-15h-Bulldozer-4xOpteron-6272.tar.bz2 \ + AMD-K10-MagnyCours-2xOpteron-6164HE.tar.bz2 \ + AMD-K10-Istanbul-8xOpteron-8439SE.tar.bz2 \ + AMD-K8-SantaRosa-2xOpteron-2218.tar.bz2 \ + AMD-K8-SledgeHammer-2xOpteron-250.tar.bz2 \ + Hygon-Dhyana-32cores.tar.bz2 \ + Zhaoxin-CentaurHauls-ZXD-4600.tar.bz2 \ + Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.tar.bz2 + +# Each output `xyz.output' may have a corresponding `xyz.options' +# file modifying the behavior of lstopo +cpuid_options = + +# Each output `xyz.output' may have a corresponding `xyz.env' +# modifying the environment of lstopo +cpuid_envs = Intel-CPUID.1A-1p2co2t.env + +if HWLOC_HAVE_BUNZIPP +TESTS = $(cpuid_outputs) +endif HWLOC_HAVE_BUNZIPP + +EXTRA_DIST = $(cpuid_outputs) $(cpuid_tarballs) $(cpuid_options) $(cpuid_envs) + +LOG_COMPILER = $(builddir)/test-topology.sh diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-CentaurHauls-ZXD-4600.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-CentaurHauls-ZXD-4600.output new file mode 100644 index 0000000000..e3de8b8d67 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-CentaurHauls-ZXD-4600.output @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-CentaurHauls-ZXD-4600.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-CentaurHauls-ZXD-4600.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9f582d40542876dc768f369b5cc503f16869d9d9 GIT binary patch literal 934 zcmV;X16lk+T4*^jL0KkKS-lBo4*(B^|ApF+0su$?|MR>+pjv)jo*)`0LxlzpK~dQ1%-u#u%Qh_Lf5#kxQdn)78W0kg@WS( z!uP$bDoGs$34ox^g2N-gTH5F=E*1`>TaLp6VX$Ley8`1u%x__!@0)8wH-)c4!ub}3 z@urnP@xGeLQ0@mdqxCe7#IsstBSa=v@8-zNfY=DgrTA?LVSjw z;~^WPfTAc(hltpcdxpc1$gp5&En!knY#TzvbQlR2*laK?42iV{gBBMQH53-cbH={? zL$9y9}z+&gqIavLi!>7t~(;*KzjNO;Ol;WRu*FS3OAm$m%;;8>9bLh`6#kBgGu`^oE3cy%FEgJNr@WNPqEnBvXY6 I3(%Hu@b7}1g#Z8m literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.output b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.output new file mode 100644 index 0000000000..2613ff2ccb --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.output @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.tar.bz2 b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/Zhaoxin-Shanghai-KaiSheng-ZXC+-FC1081.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7f17b74a0b3442edb4e8cda9b66d121c1ff05e6c GIT binary patch literal 959 zcmV;w13>&jT4*^jL0KkKS%PXWYyb~-|ApF+0su%F|MMvb2wH#d-oO9^00;mGUcsSm*wBrXKjzmdRv#spaL9EJplfO*h17^@_bNhdzq zZha?!AQ(b0@-U>pXon#x8*Z^D>?j)yiyXxVF@f(Ag%4=J=rTHv0|Q}^u(3lyu<9Gf z>^@_}bPj>Ap<*K=Va#M^3mF+0l7$BGK-5q<3lI76mJM#6@e90dk* zzg>54)fsBRZxMo^jITbRK~t!6O2Srr@pc;yDjk&}uu5T#=m4B8Kqg z3-b;F$Cz)i)N}BKNr90YWG;!C;9zIC#NI^9hwgC6|nl=Cc literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/x86/test-topology.sh.in b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/test-topology.sh.in new file mode 100644 index 0000000000..9a03b12aad --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/x86/test-topology.sh.in @@ -0,0 +1,139 @@ +#!@BASH@ +#-*-sh-*- + +# +# Copyright © 2015-2020 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +lstopo="$HWLOC_top_builddir/utils/lstopo/lstopo-no-graphics" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DONT_ADD_VERSION_INFO=1 +export HWLOC_DONT_ADD_VERSION_INFO + +HWLOC_XML_EXPORT_SUPPORT=0 +export HWLOC_XML_EXPORT_SUPPORT + +HWLOC_X86_TOPOEXT_NUMANODES=1 +export HWLOC_X86_TOPOEXT_NUMANODES + +actual_output="$1" + +# make sure we use default numeric formats +LANG=C +LC_ALL=C +export LANG LC_ALL + +error() +{ + echo $@ 2>&1 +} + +# test_topology NAME TOPOLOGY-DIR +# +# Test the topology under TOPOLOGY-DIR. Return true on success. +test_topology () +{ + local name="$1" + local dir="$2" + local expected_output="$3" + local options="$4" + + local output="`mktemp`" + + export HWLOC_THISSYSTEM=0 + export HWLOC_DEBUG_CHECK=1 + + opts="--of xml -" + [ -r "$options" ] && opts=`cat $options` + + if ! "$lstopo" -i "$dir" --if cpuid $opts \ + | sed -e 's/ gp_index="[0-9]*"//' \ + > "$output" + # filtered gp_index because it may change if we reorder discovery + # (not used in NUMA/PU distances, and regenerated (differently) during XML import). + then + result=1 + else + if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ] + then + @DIFF@ -b @HWLOC_DIFF_U@ "$expected_output" "$output" + result=$? + else + if ! @DIFF@ "$expected_output" "$output" >/dev/null + then + cp -f "$output" "$expected_output" + echo "Updated $expected_output" + fi + result=0 + fi + fi + + rm "$output" + + return $result +} + +# test_eligible TOPOLOGY-DIR +# +# Return true if the topology under TOPOLOGY-DIR is eligible for +# testing with the current flavor. +test_eligible() +{ + local dir="$1" + local output="$2" + + [ -d "$dir" -a -f "$output" ] +} + + +if [ ! -x "$lstopo" ] +then + error "Could not find executable file \`$lstopo'." + exit 1 +fi + +topology="${actual_output%.output}" +if [ "$topology" = "$actual_output" ] ; +then + error "Input file \`$1' should end with .output" + exit 1 +fi +actual_options="$topology".options +actual_source="$topology".tar.bz2 + +# if there's a .env file, source it +if [ -f "$topology".env ] ; then + . "$topology".env +fi + +result=1 + +dir="`mktemp -d`" + +if ! ( bunzip2 -c "$actual_source" | ( cd "$dir" && tar xf - $tar_options ) ) +then + error "failed to extract x86 cpuid \`$topology'" +else + actual_dir="`echo "$dir"/*`" + + if test_eligible "$actual_dir" "$actual_output" + then + test_count="`expr $test_count + 1`" + + test_topology "`basename $topology`" "$actual_dir" "$actual_output" "$actual_options" + result=$? + else + # Skip this test. + result=77 + fi +fi + +rm -rf "$dir" + +exit $result diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.options new file mode 100644 index 0000000000..ecaa3932f1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.options @@ -0,0 +1 @@ +--of console -v diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.output b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.output new file mode 100644 index 0000000000..0b23d7c79d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.output @@ -0,0 +1,66 @@ +Machine (P#0 total=8388608KB Backend=Synthetic SyntheticDescription="group:2 group:2 node:2 core:2 1" hwlocVersion=1.10.1) + Group0(MyBigGroup) L#0 (P#0 total=4194304KB) + Group1(MySmallGroup) L#0 (P#0 total=2097152KB) + Group2 L#0 (total=1048576KB) + NUMANode L#0 (P#0 local=1048576KB total=1048576KB) + Core L#0 (P#0) + PU L#0 (P#0) + Core L#1 (P#1) + PU L#1 (P#1) + Group2 L#1 (total=1048576KB) + NUMANode L#1 (P#1 local=1048576KB total=1048576KB) + Core L#2 (P#2) + PU L#2 (P#2) + Core L#3 (P#3) + PU L#3 (P#3) + Group1(MySmallGroup) L#1 (P#1 total=2097152KB) + Group2 L#2 (total=1048576KB) + NUMANode L#2 (P#2 local=1048576KB total=1048576KB) + Core L#4 (P#4) + PU L#4 (P#4) + Core L#5 (P#5) + PU L#5 (P#5) + Group2 L#3 (total=1048576KB) + NUMANode L#3 (P#3 local=1048576KB total=1048576KB) + Core L#6 (P#6) + PU L#6 (P#6) + Core L#7 (P#7) + PU L#7 (P#7) + Misc L#0 MyName + Group0(MyBigGroup) L#1 (P#1 total=4194304KB) + Group1(MySmallGroup) L#2 (P#2 total=2097152KB) + Group2 L#4 (total=1048576KB) + NUMANode L#4 (P#4 local=1048576KB total=1048576KB) + Core L#8 (P#8) + PU L#8 (P#8) + Core L#9 (P#9) + PU L#9 (P#9) + Group2 L#5 (total=1048576KB) + NUMANode L#5 (P#5 local=1048576KB total=1048576KB) + Core L#10 (P#10) + PU L#10 (P#10) + Core L#11 (P#11) + PU L#11 (P#11) + Group1(MySmallGroup) L#3 (P#3 total=2097152KB) + Group2 L#6 (total=1048576KB) + NUMANode L#6 (P#6 local=1048576KB total=1048576KB) + Core L#12 (P#12) + PU L#12 (P#12) + Core L#13 (P#13) + PU L#13 (P#13) + Group2 L#7 (total=1048576KB) + NUMANode L#7 (P#7 local=1048576KB total=1048576KB) + Core L#14 (P#14) + PU L#14 (P#14) + Core L#15 (P#15) + PU L#15 (P#15) + Misc(ReallyMisc) L#1 MyName2 +depth 0: 1 Machine (type #0) + depth 1: 2 Group0 (type #12) + depth 2: 4 Group1 (type #12) + depth 3: 8 Group2 (type #12) + depth 4: 16 Core (type #2) + depth 5: 16 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Special depth -7: 2 Misc (type #17) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.source new file mode 100644 index 0000000000..67885557fa --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.console.source @@ -0,0 +1 @@ +16-2gr2gr2n2c+misc.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.xml new file mode 100644 index 0000000000..2c4e62d4ce --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16-2gr2gr2n2c+misc.xml @@ -0,0 +1,143 @@ + + + + + + + + 0000000000000001 + + + + + + + + + + + + + + + + + + + f+B/ + eK5kf+B/AAB4rmR/4H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtmR/4H8AAP////8AAAAA////fwAAAAA= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.env b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.env new file mode 100644 index 0000000000..cdb657aa2a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.env @@ -0,0 +1,5 @@ +# make sure we use default numeric formats (only XML outputs are dis-localized when supported) +# we really want to check the distance matrix here (in case it gets truncated or so) +LANG=C +LC_ALL=C +export LANG LC_ALL diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.options new file mode 100644 index 0000000000..ecaa3932f1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.options @@ -0,0 +1 @@ +--of console -v diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.output b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.output new file mode 100644 index 0000000000..c6aa17c3da --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.output @@ -0,0 +1,145 @@ +Machine (P#0 total=67106960KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux Architecture=x86_64 hwlocVersion=1.11.4 ProcessName=lstopo) + Group0 L#0 (total=33552528KB) + Package L#0 (P#0 total=8388608KB CPUVendor=AuthenticAMD CPUFamilyNumber=15 CPUModelNumber=33 CPUModel="Dual Core AMD Opteron(tm) Processor 865" CPUStepping=0) + NUMANode L#0 (P#1 local=8388608KB total=8388608KB) + L2Cache L#0 (size=1024KB linesize=64 ways=16) + L1dCache L#0 (size=64KB linesize=64 ways=2) + L1iCache L#0 (size=64KB linesize=64 ways=2) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=1024KB linesize=64 ways=16) + L1dCache L#1 (size=64KB linesize=64 ways=2) + L1iCache L#1 (size=64KB linesize=64 ways=2) + Core L#1 (P#1) + PU L#1 (P#1) + Package L#1 (P#1 total=8386704KB CPUVendor=AuthenticAMD CPUFamilyNumber=15 CPUModelNumber=33 CPUModel="Dual Core AMD Opteron(tm) Processor 865" CPUStepping=0) + NUMANode L#1 (P#0 local=8386704KB total=8386704KB) + L2Cache L#2 (size=1024KB linesize=64 ways=16) + L1dCache L#2 (size=64KB linesize=64 ways=2) + L1iCache L#2 (size=64KB linesize=64 ways=2) + Core L#2 (P#2) + PU L#2 (P#2) + L2Cache L#3 (size=1024KB linesize=64 ways=16) + L1dCache L#3 (size=64KB linesize=64 ways=2) + L1iCache L#3 (size=64KB linesize=64 ways=2) + Core L#3 (P#3) + PU L#3 (P#3) + Package L#2 (P#2 total=8388608KB CPUVendor=AuthenticAMD CPUFamilyNumber=15 CPUModelNumber=33 CPUModel="Dual Core AMD Opteron(tm) Processor 865" CPUStepping=0) + NUMANode L#2 (P#2 local=8388608KB total=8388608KB) + L2Cache L#4 (size=1024KB linesize=64 ways=16) + L1dCache L#4 (size=64KB linesize=64 ways=2) + L1iCache L#4 (size=64KB linesize=64 ways=2) + Core L#4 (P#4) + PU L#4 (P#4) + L2Cache L#5 (size=1024KB linesize=64 ways=16) + L1dCache L#5 (size=64KB linesize=64 ways=2) + L1iCache L#5 (size=64KB linesize=64 ways=2) + Core L#5 (P#5) + PU L#5 (P#5) + Package L#3 (P#3 total=8388608KB CPUVendor=AuthenticAMD CPUFamilyNumber=15 CPUModelNumber=33 CPUModel="Dual Core AMD Opteron(tm) Processor 865" CPUStepping=0) + NUMANode L#3 (P#5 local=8388608KB total=8388608KB) + L2Cache L#6 (size=1024KB linesize=64 ways=16) + L1dCache L#6 (size=64KB linesize=64 ways=2) + L1iCache L#6 (size=64KB linesize=64 ways=2) + Core L#6 (P#6) + PU L#6 (P#6) + L2Cache L#7 (size=1024KB linesize=64 ways=16) + L1dCache L#7 (size=64KB linesize=64 ways=2) + L1iCache L#7 (size=64KB linesize=64 ways=2) + Core L#7 (P#7) + PU L#7 (P#7) + Group0 L#1 (total=33554432KB) + Package L#4 (P#4 total=8388608KB CPUVendor=AuthenticAMD CPUFamilyNumber=15 CPUModelNumber=33 CPUModel="Dual Core AMD Opteron(tm) Processor 865" CPUStepping=0) + NUMANode L#4 (P#4 local=8388608KB total=8388608KB) + L2Cache L#8 (size=1024KB linesize=64 ways=16) + L1dCache L#8 (size=64KB linesize=64 ways=2) + L1iCache L#8 (size=64KB linesize=64 ways=2) + Core L#8 (P#8) + PU L#8 (P#8) + L2Cache L#9 (size=1024KB linesize=64 ways=16) + L1dCache L#9 (size=64KB linesize=64 ways=2) + L1iCache L#9 (size=64KB linesize=64 ways=2) + Core L#9 (P#9) + PU L#9 (P#9) + Package L#5 (P#5 total=8388608KB CPUVendor=AuthenticAMD CPUFamilyNumber=15 CPUModelNumber=33 CPUModel="Dual Core AMD Opteron(tm) Processor 865" CPUStepping=0) + NUMANode L#5 (P#3 local=8388608KB total=8388608KB) + L2Cache L#10 (size=1024KB linesize=64 ways=16) + L1dCache L#10 (size=64KB linesize=64 ways=2) + L1iCache L#10 (size=64KB linesize=64 ways=2) + Core L#10 (P#10) + PU L#10 (P#10) + L2Cache L#11 (size=1024KB linesize=64 ways=16) + L1dCache L#11 (size=64KB linesize=64 ways=2) + L1iCache L#11 (size=64KB linesize=64 ways=2) + Core L#11 (P#11) + PU L#11 (P#11) + Package L#6 (P#6 total=8388608KB CPUVendor=AuthenticAMD CPUFamilyNumber=15 CPUModelNumber=33 CPUModel="Dual Core AMD Opteron(tm) Processor 865" CPUStepping=0) + NUMANode L#6 (P#6 local=8388608KB total=8388608KB) + L2Cache L#12 (size=1024KB linesize=64 ways=16) + L1dCache L#12 (size=64KB linesize=64 ways=2) + L1iCache L#12 (size=64KB linesize=64 ways=2) + Core L#12 (P#12) + PU L#12 (P#12) + L2Cache L#13 (size=1024KB linesize=64 ways=16) + L1dCache L#13 (size=64KB linesize=64 ways=2) + L1iCache L#13 (size=64KB linesize=64 ways=2) + Core L#13 (P#13) + PU L#13 (P#13) + Package L#7 (P#7 total=8388608KB CPUVendor=AuthenticAMD CPUFamilyNumber=15 CPUModelNumber=33 CPUModel="Dual Core AMD Opteron(tm) Processor 865" CPUStepping=0) + NUMANode L#7 (P#7 local=8388608KB total=8388608KB) + L2Cache L#14 (size=1024KB linesize=64 ways=16) + L1dCache L#14 (size=64KB linesize=64 ways=2) + L1iCache L#14 (size=64KB linesize=64 ways=2) + Core L#14 (P#14) + PU L#14 (P#14) + L2Cache L#15 (size=1024KB linesize=64 ways=16) + L1dCache L#15 (size=64KB linesize=64 ways=2) + L1iCache L#15 (size=64KB linesize=64 ways=2) + Core L#15 (P#15) + PU L#15 (P#15) +depth 0: 1 Machine (type #0) + depth 1: 2 Group0 (type #12) + depth 2: 8 Package (type #1) + depth 3: 16 L2Cache (type #5) + depth 4: 16 L1dCache (type #4) + depth 5: 16 L1iCache (type #9) + depth 6: 16 Core (type #2) + depth 7: 16 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Relative latency matrix (name NUMALatency kind 5) between 8 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 + 0 10 20 20 20 20 20 20 20 + 1 20 10 20 20 20 20 20 20 + 2 20 20 10 20 20 20 20 20 + 3 20 20 20 10 20 20 20 20 + 4 20 20 20 20 10 20 20 20 + 5 20 20 20 20 20 10 20 20 + 6 20 20 20 20 20 20 10 20 + 7 20 20 20 20 20 20 20 10 +Relative latency matrix (name (null) kind 5) between 8 Packages (depth 2) by logical indexes: + index 1 0 3 6 4 7 2 5 + 1 10 20 40 40 80 80 80 80 + 0 20 10 40 40 80 80 80 80 + 3 40 40 10 20 80 80 80 80 + 6 40 40 20 10 80 80 80 80 + 4 80 80 80 80 10 20 40 40 + 7 80 80 80 80 20 10 40 40 + 2 80 80 80 80 40 40 10 20 + 5 80 80 80 80 40 40 20 10 +Relative latency matrix (name (null) kind 5) between 4 PUs (depth 7) by logical indexes: + index 0 1 2 3 + 0 145 200 300 400 + 1 567 687 457 2300 + 2 450 12300 45 67 + 3 4600 345600 100 100 +Relative latency matrix (name (null) kind 5) between 8 Cores (depth 6) by logical indexes: + index 0 1 2 3 4 5 6 7 + 0 10 20 40 40 80 80 80 80 + 1 20 10 40 40 80 80 80 80 + 2 40 40 10 20 80 80 80 80 + 3 40 40 20 10 80 80 80 80 + 4 80 80 80 80 10 20 40 40 + 5 80 80 80 80 20 10 40 40 + 6 80 80 80 80 40 40 10 20 + 7 80 80 80 80 40 40 20 10 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.source new file mode 100644 index 0000000000..7163811c31 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.console.source @@ -0,0 +1 @@ +16amd64-4distances.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1.xml new file mode 100644 index 0000000000..31e4be40d0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1.xml @@ -0,0 +1,690 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1tov2.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1tov2.source new file mode 100644 index 0000000000..ba66b3be3c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1tov2.source @@ -0,0 +1 @@ +16amd64-4distances.v1.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1tov2.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1tov2.xml new file mode 100644 index 0000000000..9421b2cfe7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v1tov2.xml @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 0 2 5 4 3 6 7 + 1 2 4 4 8 8 8 8 2 1 + 4 4 8 8 8 8 4 4 1 2 + 8 8 8 8 4 4 2 1 8 8 + 8 8 8 8 8 8 1 2 4 4 + 8 8 8 8 2 1 4 4 8 8 + 8 8 4 4 1 2 8 8 8 8 + 4 4 2 1 + + + 1 0 2 5 4 3 6 7 + 10 20 20 20 20 20 20 20 20 10 + 20 20 20 20 20 20 20 20 10 20 + 20 20 20 20 20 20 20 10 20 20 + 20 20 20 20 20 20 10 20 20 20 + 20 20 20 20 20 10 20 20 20 20 + 20 20 20 20 10 20 20 20 20 20 + 20 20 20 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.options new file mode 100644 index 0000000000..0249e0c917 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.options @@ -0,0 +1 @@ +--of xml --export-xml-flags 1 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.source new file mode 100644 index 0000000000..7163811c31 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.source @@ -0,0 +1 @@ +16amd64-4distances.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.xml new file mode 100644 index 0000000000..e7b13c3410 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.v2tov1.xml @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.xml new file mode 100644 index 0000000000..c22b73e267 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-4distances.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 0 2 5 4 3 6 7 + 10 20 20 20 20 20 20 20 20 10 + 20 20 20 20 20 20 20 20 10 20 + 20 20 20 20 20 20 20 10 20 20 + 20 20 20 20 20 20 10 20 20 20 + 20 20 20 20 20 10 20 20 20 20 + 20 20 20 20 10 20 20 20 20 20 + 20 20 20 10 + + + 16 4 40 77 53 89 28 65 + 10 20 40 40 80 80 80 80 20 10 + 40 40 80 80 80 80 40 40 10 20 + 80 80 80 80 40 40 20 10 80 80 + 80 80 80 80 80 80 10 20 40 40 + 80 80 80 80 20 10 40 40 80 80 + 80 80 40 40 10 20 80 80 80 80 + 40 40 20 10 + + + 0 1 2 3 + 145 200 300 400 567 687 457 2300 450 12300 + 45 67 4600 345600 100 100 + + + 8 13 20 25 32 37 44 49 + 10 20 40 40 80 80 80 80 20 10 + 40 40 80 80 80 80 40 40 10 20 + 80 80 80 80 40 40 20 10 80 80 + 80 80 80 80 80 80 10 20 40 40 + 80 80 80 80 20 10 40 40 80 80 + 80 80 40 40 10 20 80 80 80 80 + 40 40 20 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-8n2c-cpusets.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-8n2c-cpusets.xml new file mode 100644 index 0000000000..ada411b3e8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16amd64-8n2c-cpusets.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 2 3 4 5 + 10 20 20 20 20 20 10 20 20 20 + 20 20 10 20 20 20 20 20 10 20 + 20 20 20 20 10 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t-offlines.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t-offlines.xml new file mode 100644 index 0000000000..314898e0d5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t-offlines.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.options new file mode 100644 index 0000000000..bd06d560e8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.options @@ -0,0 +1 @@ +--of console diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.output b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.output new file mode 100644 index 0000000000..de4ec9759c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.output @@ -0,0 +1,30 @@ +Machine + NUMANode L#0 (P#0) + Package L#0 + L3 L#0 (4096KB) + L2 L#0 (1024KB) + L1d L#0 (16KB) + Core L#0 + PU L#0 (P#0) + PU L#1 (P#8) + L2 L#1 (1024KB) + L1d L#1 (16KB) + Core L#1 + PU L#2 (P#4) + PU L#3 (P#12) + Package L#1 + L3 L#1 (4096KB) + L2 L#2 (1024KB) + L1d L#2 (16KB) + Core L#2 + PU L#4 (P#1) + PU L#5 (P#9) + L2 L#3 (1024KB) + L1d L#3 (16KB) + Core L#3 + PU L#6 (P#5) + PU L#7 (P#13) + Package L#2 + L3 L#2 (4096KB) + L2 L#4 (1024KB) + L1d L#4 (16KB) + Core L#4 + PU L#8 (P#2) + PU L#9 (P#10) + L2 L#5 (1024KB) + L1d L#5 (16KB) + Core L#5 + PU L#10 (P#6) + PU L#11 (P#14) + Package L#3 + L3 L#3 (4096KB) + L2 L#6 (1024KB) + L1d L#6 (16KB) + Core L#6 + PU L#12 (P#3) + PU L#13 (P#11) + L2 L#7 (1024KB) + L1d L#7 (16KB) + Core L#7 + PU L#14 (P#7) + PU L#15 (P#15) diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.source new file mode 100644 index 0000000000..54566e468a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.console.source @@ -0,0 +1 @@ +16em64t-4s2c2t.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.xml new file mode 100644 index 0000000000..9e1e68a858 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16em64t-4s2c2t.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.options new file mode 100644 index 0000000000..5aa323879a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.options @@ -0,0 +1 @@ +--of console -v --no-collapse diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.output b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.output new file mode 100644 index 0000000000..5de1a54a64 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.output @@ -0,0 +1,142 @@ +Machine (P#0 total=134181920KB Architecture=x86_64 hwlocVersion=2.0.0a1-git ProcessName=lt-lstopo-no-graphics) + Package L#0 (P#0 total=67073056KB) + NUMANode L#0 (P#0 local=67073056KB total=67073056KB) + L3Cache L#0 (size=20480KB linesize=64 ways=20) + L2Cache L#0 (size=256KB linesize=64 ways=8) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=256KB linesize=64 ways=8) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#1 (P#1) + L2Cache L#2 (size=256KB linesize=64 ways=8) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=8) + Core L#2 (P#2) + PU L#2 (P#2) + L2Cache L#3 (size=256KB linesize=64 ways=8) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=8) + Core L#3 (P#3) + PU L#3 (P#3) + L2Cache L#4 (size=256KB linesize=64 ways=8) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=8) + Core L#4 (P#4) + PU L#4 (P#4) + L2Cache L#5 (size=256KB linesize=64 ways=8) + L1dCache L#5 (size=32KB linesize=64 ways=8) + L1iCache L#5 (size=32KB linesize=64 ways=8) + Core L#5 (P#5) + PU L#5 (P#5) + L2Cache L#6 (size=256KB linesize=64 ways=8) + L1dCache L#6 (size=32KB linesize=64 ways=8) + L1iCache L#6 (size=32KB linesize=64 ways=8) + Core L#6 (P#6) + PU L#6 (P#6) + L2Cache L#7 (size=256KB linesize=64 ways=8) + L1dCache L#7 (size=32KB linesize=64 ways=8) + L1iCache L#7 (size=32KB linesize=64 ways=8) + Core L#7 (P#7) + PU L#7 (P#7) + HostBridge L#0 (buses=0000:[00-15]) + PCIBridge L#1 (busid=0000:00:01.1 id=8086:3c03 class=0604(PCIBridge) buses=0000:[02-03] PCIVendor="Intel Corporation" PCIDevice="Xeon E5/Core i7 IIO PCI Express Root Port 1b") + PCI L#0 (busid=0000:02:00.0 id=8086:1521 class=0200(Ethernet) PCIVendor="Intel Corporation" PCIDevice="I350 Gigabit Network Connection") + Network L#0 (Address=a4:93:4c:aa:60:1e) "eth0" + PCI L#1 (busid=0000:02:00.1 id=8086:1521 class=0200(Ethernet) PCIVendor="Intel Corporation" PCIDevice="I350 Gigabit Network Connection") + Network L#1 (Address=a4:93:4c:aa:60:1f) "eth1" + PCIBridge L#2 (busid=0000:00:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0000:[06-11] PCIVendor="Intel Corporation" PCIDevice="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode") + PCIBridge L#3 (busid=0000:06:00.0 id=1137:004e class=0604(PCIBridge) buses=0000:[07-11] PCIVendor="Cisco Systems Inc" PCIDevice="VIC 82 PCIe Upstream Port") + PCIBridge L#4 (busid=0000:07:01.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[09-11] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCIBridge L#5 (busid=0000:09:00.0 id=1137:0040 class=0604(PCIBridge) buses=0000:[0a-11] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Upstream Port") + PCIBridge L#6 (busid=0000:0a:00.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[0b-0b] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCI L#2 (busid=0000:0b:00.0 id=1137:0043 class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Ethernet NIC") + Network L#2 (Address=24:57:20:04:20:00 Port=1) "eth4" + OpenFabrics L#3 (NodeGUID=0200:00ff:fe00:0000 SysImageGUID=2657:20ff:fe04:2000 Port1State=4 Port1LID=0x0 Port1LMC=1 Port1GID0=fe80:0000:0a0a:0004:2657:20ff:fe04:2000) "usnic_0" + PCI L#3 (busid=0000:0b:00.1 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#4 (busid=0000:0b:00.2 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#5 (busid=0000:0b:00.3 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCIBridge L#7 (busid=0000:0a:01.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[0c-0c] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCI L#6 (busid=0000:0c:00.0 id=1137:0043 class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Ethernet NIC") + Network L#4 (Address=24:57:20:04:21:00 Port=1) "eth5" + OpenFabrics L#5 (NodeGUID=0200:00ff:fe00:0000 SysImageGUID=2657:20ff:fe04:2100 Port1State=4 Port1LID=0x0 Port1LMC=1 Port1GID0=fe80:0000:0a02:0004:2657:20ff:fe04:2100) "usnic_1" + PCI L#7 (busid=0000:0c:00.1 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#8 (busid=0000:0c:00.2 id=1138:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#9 (busid=0000:0c:00.3 id=1138:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#10 (busid=0000:0c:00.4 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + Package L#1 (P#1 total=67108864KB) + NUMANode L#1 (P#1 local=67108864KB total=67108864KB) + L3Cache L#1 (size=20480KB linesize=64 ways=20) + L2Cache L#8 (size=256KB linesize=64 ways=8) + L1dCache L#8 (size=32KB linesize=64 ways=8) + L1iCache L#8 (size=32KB linesize=64 ways=8) + Core L#8 (P#0) + PU L#8 (P#8) + L2Cache L#9 (size=256KB linesize=64 ways=8) + L1dCache L#9 (size=32KB linesize=64 ways=8) + L1iCache L#9 (size=32KB linesize=64 ways=8) + Core L#9 (P#1) + PU L#9 (P#9) + L2Cache L#10 (size=256KB linesize=64 ways=8) + L1dCache L#10 (size=32KB linesize=64 ways=8) + L1iCache L#10 (size=32KB linesize=64 ways=8) + Core L#10 (P#2) + PU L#10 (P#10) + L2Cache L#11 (size=256KB linesize=64 ways=8) + L1dCache L#11 (size=32KB linesize=64 ways=8) + L1iCache L#11 (size=32KB linesize=64 ways=8) + Core L#11 (P#3) + PU L#11 (P#11) + L2Cache L#12 (size=256KB linesize=64 ways=8) + L1dCache L#12 (size=32KB linesize=64 ways=8) + L1iCache L#12 (size=32KB linesize=64 ways=8) + Core L#12 (P#4) + PU L#12 (P#12) + L2Cache L#13 (size=256KB linesize=64 ways=8) + L1dCache L#13 (size=32KB linesize=64 ways=8) + L1iCache L#13 (size=32KB linesize=64 ways=8) + Core L#13 (P#5) + PU L#13 (P#13) + L2Cache L#14 (size=256KB linesize=64 ways=8) + L1dCache L#14 (size=32KB linesize=64 ways=8) + L1iCache L#14 (size=32KB linesize=64 ways=8) + Core L#14 (P#6) + PU L#14 (P#14) + L2Cache L#15 (size=256KB linesize=64 ways=8) + L1dCache L#15 (size=32KB linesize=64 ways=8) + L1iCache L#15 (size=32KB linesize=64 ways=8) + Core L#15 (P#7) + PU L#15 (P#15) + HostBridge L#8 (buses=0000:[80-8c]) + PCIBridge L#9 (busid=0000:80:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0000:[83-8c] PCIVendor="Intel Corporation" PCIDevice="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode") + PCIBridge L#10 (busid=0000:83:00.0 id=1137:004e class=0604(PCIBridge) buses=0000:[84-8c] PCIVendor="Cisco Systems Inc" PCIDevice="VIC 82 PCIe Upstream Port") + PCIBridge L#11 (busid=0000:84:01.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[86-8c] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCIBridge L#12 (busid=0000:86:00.0 id=1137:0040 class=0604(PCIBridge) buses=0000:[87-8c] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Upstream Port") + PCIBridge L#13 (busid=0000:87:00.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[88-88] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCI L#11 (busid=0000:88:00.0 id=1137:0043 class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Ethernet NIC") + Network L#6 (Address=24:57:20:04:50:00 Port=1) "eth6" + OpenFabrics L#7 (NodeGUID=0200:00ff:fe00:0000 SysImageGUID=2657:20ff:fe04:5000 Port1State=4 Port1LID=0x0 Port1LMC=1 Port1GID0=fe80:0000:0a03:0004:2657:20ff:fe04:5000) "usnic_2" + PCI L#12 (busid=0000:88:00.1 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#13 (busid=0000:88:00.2 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#14 (busid=0000:88:00.3 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#15 (busid=0000:88:00.4 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCI L#16 (busid=0000:88:00.5 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + PCIBridge L#14 (busid=0000:87:01.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[89-89] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCI L#17 (busid=0000:89:00.0 id=1137:0043 class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Ethernet NIC") + Network L#8 (Address=24:57:20:04:51:00) "eth7" +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 2 L3Cache (type #6) + depth 3: 16 L2Cache (type #5) + depth 4: 16 L1dCache (type #4) + depth 5: 16 L1iCache (type #9) + depth 6: 16 Core (type #2) + depth 7: 16 PU (type #3) +Special depth -3: 2 NUMANode (type #13) +Special depth -4: 15 Bridge (type #14) +Special depth -5: 18 PCIDev (type #15) +Special depth -6: 9 OSDev (type #16) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.source new file mode 100644 index 0000000000..6e7b504d34 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.nocollapse.source @@ -0,0 +1 @@ +16intel64-manyVFs.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.options new file mode 100644 index 0000000000..ecaa3932f1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.options @@ -0,0 +1 @@ +--of console -v diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.output b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.output new file mode 100644 index 0000000000..8f369c52af --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.output @@ -0,0 +1,135 @@ +Machine (P#0 total=134181920KB Architecture=x86_64 hwlocVersion=2.0.0a1-git ProcessName=lt-lstopo-no-graphics) + Package L#0 (P#0 total=67073056KB) + NUMANode L#0 (P#0 local=67073056KB total=67073056KB) + L3Cache L#0 (size=20480KB linesize=64 ways=20) + L2Cache L#0 (size=256KB linesize=64 ways=8) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=256KB linesize=64 ways=8) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#1 (P#1) + L2Cache L#2 (size=256KB linesize=64 ways=8) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=8) + Core L#2 (P#2) + PU L#2 (P#2) + L2Cache L#3 (size=256KB linesize=64 ways=8) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=8) + Core L#3 (P#3) + PU L#3 (P#3) + L2Cache L#4 (size=256KB linesize=64 ways=8) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=8) + Core L#4 (P#4) + PU L#4 (P#4) + L2Cache L#5 (size=256KB linesize=64 ways=8) + L1dCache L#5 (size=32KB linesize=64 ways=8) + L1iCache L#5 (size=32KB linesize=64 ways=8) + Core L#5 (P#5) + PU L#5 (P#5) + L2Cache L#6 (size=256KB linesize=64 ways=8) + L1dCache L#6 (size=32KB linesize=64 ways=8) + L1iCache L#6 (size=32KB linesize=64 ways=8) + Core L#6 (P#6) + PU L#6 (P#6) + L2Cache L#7 (size=256KB linesize=64 ways=8) + L1dCache L#7 (size=32KB linesize=64 ways=8) + L1iCache L#7 (size=32KB linesize=64 ways=8) + Core L#7 (P#7) + PU L#7 (P#7) + HostBridge L#0 (buses=0000:[00-15]) + PCIBridge L#1 (busid=0000:00:01.1 id=8086:3c03 class=0604(PCIBridge) buses=0000:[02-03] PCIVendor="Intel Corporation" PCIDevice="Xeon E5/Core i7 IIO PCI Express Root Port 1b") + PCI L#0 (busid=0000:02:00.0 id=8086:1521 class=0200(Ethernet) PCIVendor="Intel Corporation" PCIDevice="I350 Gigabit Network Connection") + Network L#0 (Address=a4:93:4c:aa:60:1e) "eth0" + PCI L#1 (busid=0000:02:00.1 id=8086:1521 class=0200(Ethernet) PCIVendor="Intel Corporation" PCIDevice="I350 Gigabit Network Connection") + Network L#1 (Address=a4:93:4c:aa:60:1f) "eth1" + PCIBridge L#2 (busid=0000:00:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0000:[06-11] PCIVendor="Intel Corporation" PCIDevice="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode") + PCIBridge L#3 (busid=0000:06:00.0 id=1137:004e class=0604(PCIBridge) buses=0000:[07-11] PCIVendor="Cisco Systems Inc" PCIDevice="VIC 82 PCIe Upstream Port") + PCIBridge L#4 (busid=0000:07:01.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[09-11] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCIBridge L#5 (busid=0000:09:00.0 id=1137:0040 class=0604(PCIBridge) buses=0000:[0a-11] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Upstream Port") + PCIBridge L#6 (busid=0000:0a:00.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[0b-0b] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCI L#2 (busid=0000:0b:00.0 id=1137:0043 class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Ethernet NIC") + Network L#2 (Address=24:57:20:04:20:00 Port=1) "eth4" + OpenFabrics L#3 (NodeGUID=0200:00ff:fe00:0000 SysImageGUID=2657:20ff:fe04:2000 Port1State=4 Port1LID=0x0 Port1LMC=1 Port1GID0=fe80:0000:0a0a:0004:2657:20ff:fe04:2000) "usnic_0" + 3 x { PCI L#3-5 (busid=0b:00.1-3 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") } + PCIBridge L#7 (busid=0000:0a:01.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[0c-0c] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCI L#6 (busid=0000:0c:00.0 id=1137:0043 class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Ethernet NIC") + Network L#4 (Address=24:57:20:04:21:00 Port=1) "eth5" + OpenFabrics L#5 (NodeGUID=0200:00ff:fe00:0000 SysImageGUID=2657:20ff:fe04:2100 Port1State=4 Port1LID=0x0 Port1LMC=1 Port1GID0=fe80:0000:0a02:0004:2657:20ff:fe04:2100) "usnic_1" + PCI L#7 (busid=0000:0c:00.1 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + 2 x { PCI L#8-9 (busid=0c:00.2-3 id=1138:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") } + PCI L#10 (busid=0000:0c:00.4 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") + Package L#1 (P#1 total=67108864KB) + NUMANode L#1 (P#1 local=67108864KB total=67108864KB) + L3Cache L#1 (size=20480KB linesize=64 ways=20) + L2Cache L#8 (size=256KB linesize=64 ways=8) + L1dCache L#8 (size=32KB linesize=64 ways=8) + L1iCache L#8 (size=32KB linesize=64 ways=8) + Core L#8 (P#0) + PU L#8 (P#8) + L2Cache L#9 (size=256KB linesize=64 ways=8) + L1dCache L#9 (size=32KB linesize=64 ways=8) + L1iCache L#9 (size=32KB linesize=64 ways=8) + Core L#9 (P#1) + PU L#9 (P#9) + L2Cache L#10 (size=256KB linesize=64 ways=8) + L1dCache L#10 (size=32KB linesize=64 ways=8) + L1iCache L#10 (size=32KB linesize=64 ways=8) + Core L#10 (P#2) + PU L#10 (P#10) + L2Cache L#11 (size=256KB linesize=64 ways=8) + L1dCache L#11 (size=32KB linesize=64 ways=8) + L1iCache L#11 (size=32KB linesize=64 ways=8) + Core L#11 (P#3) + PU L#11 (P#11) + L2Cache L#12 (size=256KB linesize=64 ways=8) + L1dCache L#12 (size=32KB linesize=64 ways=8) + L1iCache L#12 (size=32KB linesize=64 ways=8) + Core L#12 (P#4) + PU L#12 (P#12) + L2Cache L#13 (size=256KB linesize=64 ways=8) + L1dCache L#13 (size=32KB linesize=64 ways=8) + L1iCache L#13 (size=32KB linesize=64 ways=8) + Core L#13 (P#5) + PU L#13 (P#13) + L2Cache L#14 (size=256KB linesize=64 ways=8) + L1dCache L#14 (size=32KB linesize=64 ways=8) + L1iCache L#14 (size=32KB linesize=64 ways=8) + Core L#14 (P#6) + PU L#14 (P#14) + L2Cache L#15 (size=256KB linesize=64 ways=8) + L1dCache L#15 (size=32KB linesize=64 ways=8) + L1iCache L#15 (size=32KB linesize=64 ways=8) + Core L#15 (P#7) + PU L#15 (P#15) + HostBridge L#8 (buses=0000:[80-8c]) + PCIBridge L#9 (busid=0000:80:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0000:[83-8c] PCIVendor="Intel Corporation" PCIDevice="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode") + PCIBridge L#10 (busid=0000:83:00.0 id=1137:004e class=0604(PCIBridge) buses=0000:[84-8c] PCIVendor="Cisco Systems Inc" PCIDevice="VIC 82 PCIe Upstream Port") + PCIBridge L#11 (busid=0000:84:01.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[86-8c] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCIBridge L#12 (busid=0000:86:00.0 id=1137:0040 class=0604(PCIBridge) buses=0000:[87-8c] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Upstream Port") + PCIBridge L#13 (busid=0000:87:00.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[88-88] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCI L#11 (busid=0000:88:00.0 id=1137:0043 class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Ethernet NIC") + Network L#6 (Address=24:57:20:04:50:00 Port=1) "eth6" + OpenFabrics L#7 (NodeGUID=0200:00ff:fe00:0000 SysImageGUID=2657:20ff:fe04:5000 Port1State=4 Port1LID=0x0 Port1LMC=1 Port1GID0=fe80:0000:0a03:0004:2657:20ff:fe04:5000) "usnic_2" + 5 x { PCI L#12-16 (busid=88:00.1-5 id=1137:00cf class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Userspace NIC") } + PCIBridge L#14 (busid=0000:87:01.0 id=1137:0041 class=0604(PCIBridge) buses=0000:[89-89] PCIVendor="Cisco Systems Inc" PCIDevice="VIC PCIe Downstream Port") + PCI L#17 (busid=0000:89:00.0 id=1137:0043 class=0200(Ethernet) PCIVendor="Cisco Systems Inc" PCIDevice="VIC Ethernet NIC") + Network L#8 (Address=24:57:20:04:51:00) "eth7" +depth 0: 1 Machine (type #0) + depth 1: 2 Package (type #1) + depth 2: 2 L3Cache (type #6) + depth 3: 16 L2Cache (type #5) + depth 4: 16 L1dCache (type #4) + depth 5: 16 L1iCache (type #9) + depth 6: 16 Core (type #2) + depth 7: 16 PU (type #3) +Special depth -3: 2 NUMANode (type #13) +Special depth -4: 15 Bridge (type #14) +Special depth -5: 18 PCIDev (type #15) +Special depth -6: 9 OSDev (type #16) +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.source new file mode 100644 index 0000000000..6e7b504d34 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.console.source @@ -0,0 +1 @@ +16intel64-manyVFs.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.xml new file mode 100644 index 0000000000..f3da0d641b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/16intel64-manyVFs.xml @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/192em64t-12gr2n8c2t.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/192em64t-12gr2n8c2t.xml new file mode 100644 index 0000000000..f0e52a8b78 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/192em64t-12gr2n8c2t.xml @@ -0,0 +1,2418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 + 10 50 65 65 65 65 65 65 65 65 + 79 79 65 65 79 79 65 65 79 79 + 79 79 79 79 50 10 65 65 65 65 + 65 65 65 65 79 79 65 65 79 79 + 65 65 79 79 79 79 79 79 65 65 + 10 50 65 65 65 65 79 79 65 65 + 79 79 65 65 79 79 65 65 79 79 + 79 79 65 65 50 10 65 65 65 65 + 79 79 65 65 79 79 65 65 79 79 + 65 65 79 79 79 79 65 65 65 65 + 10 50 65 65 65 65 79 79 65 65 + 79 79 79 79 79 79 65 65 79 79 + 65 65 65 65 50 10 65 65 65 65 + 79 79 65 65 79 79 79 79 79 79 + 65 65 79 79 65 65 65 65 65 65 + 10 50 79 79 65 65 79 79 65 65 + 79 79 79 79 79 79 65 65 65 65 + 65 65 65 65 50 10 79 79 65 65 + 79 79 65 65 79 79 79 79 79 79 + 65 65 65 65 79 79 65 65 79 79 + 10 50 65 65 65 65 65 65 65 65 + 79 79 79 79 79 79 65 65 79 79 + 65 65 79 79 50 10 65 65 65 65 + 65 65 65 65 79 79 79 79 79 79 + 79 79 65 65 79 79 65 65 65 65 + 10 50 65 65 65 65 79 79 65 65 + 79 79 79 79 79 79 65 65 79 79 + 65 65 65 65 50 10 65 65 65 65 + 79 79 65 65 79 79 79 79 65 65 + 79 79 65 65 79 79 65 65 65 65 + 10 50 65 65 79 79 79 79 65 65 + 79 79 65 65 79 79 65 65 79 79 + 65 65 65 65 50 10 65 65 79 79 + 79 79 65 65 79 79 79 79 65 65 + 79 79 65 65 65 65 65 65 65 65 + 10 50 79 79 79 79 79 79 65 65 + 79 79 65 65 79 79 65 65 65 65 + 65 65 65 65 50 10 79 79 79 79 + 79 79 65 65 65 65 79 79 79 79 + 79 79 65 65 79 79 79 79 79 79 + 10 50 65 65 65 65 65 65 65 65 + 79 79 79 79 79 79 65 65 79 79 + 79 79 79 79 50 10 65 65 65 65 + 65 65 79 79 65 65 79 79 79 79 + 79 79 65 65 79 79 79 79 65 65 + 10 50 65 65 65 65 79 79 65 65 + 79 79 79 79 79 79 65 65 79 79 + 79 79 65 65 50 10 65 65 65 65 + 79 79 79 79 65 65 79 79 79 79 + 79 79 65 65 79 79 65 65 65 65 + 10 50 65 65 79 79 79 79 65 65 + 79 79 79 79 79 79 65 65 79 79 + 65 65 65 65 50 10 65 65 79 79 + 79 79 79 79 65 65 79 79 79 79 + 79 79 65 65 65 65 65 65 65 65 + 10 50 79 79 79 79 79 79 65 65 + 79 79 79 79 79 79 65 65 65 65 + 65 65 65 65 50 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/192em64t-24n8c2t.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/192em64t-24n8c2t.xml new file mode 100644 index 0000000000..dbdfc81c23 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/192em64t-24n8c2t.xml @@ -0,0 +1,2368 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 + 10 50 65 65 65 65 65 65 65 65 + 79 79 65 65 79 79 65 65 79 79 + 79 79 79 79 50 10 65 65 65 65 + 65 65 65 65 79 79 65 65 79 79 + 65 65 79 79 79 79 79 79 65 65 + 10 50 65 65 65 65 79 79 65 65 + 79 79 65 65 79 79 65 65 79 79 + 79 79 65 65 50 10 65 65 65 65 + 79 79 65 65 79 79 65 65 79 79 + 65 65 79 79 79 79 65 65 65 65 + 10 50 65 65 65 65 79 79 65 65 + 79 79 79 79 79 79 65 65 79 79 + 65 65 65 65 50 10 65 65 65 65 + 79 79 65 65 79 79 79 79 79 79 + 65 65 79 79 65 65 65 65 65 65 + 10 50 79 79 65 65 79 79 65 65 + 79 79 79 79 79 79 65 65 65 65 + 65 65 65 65 50 10 79 79 65 65 + 79 79 65 65 79 79 79 79 79 79 + 65 65 65 65 79 79 65 65 79 79 + 10 50 65 65 65 65 65 65 65 65 + 79 79 79 79 79 79 65 65 79 79 + 65 65 79 79 50 10 65 65 65 65 + 65 65 65 65 79 79 79 79 79 79 + 79 79 65 65 79 79 65 65 65 65 + 10 50 65 65 65 65 79 79 65 65 + 79 79 79 79 79 79 65 65 79 79 + 65 65 65 65 50 10 65 65 65 65 + 79 79 65 65 79 79 79 79 65 65 + 79 79 65 65 79 79 65 65 65 65 + 10 50 65 65 79 79 79 79 65 65 + 79 79 65 65 79 79 65 65 79 79 + 65 65 65 65 50 10 65 65 79 79 + 79 79 65 65 79 79 79 79 65 65 + 79 79 65 65 65 65 65 65 65 65 + 10 50 79 79 79 79 79 79 65 65 + 79 79 65 65 79 79 65 65 65 65 + 65 65 65 65 50 10 79 79 79 79 + 79 79 65 65 65 65 79 79 79 79 + 79 79 65 65 79 79 79 79 79 79 + 10 50 65 65 65 65 65 65 65 65 + 79 79 79 79 79 79 65 65 79 79 + 79 79 79 79 50 10 65 65 65 65 + 65 65 79 79 65 65 79 79 79 79 + 79 79 65 65 79 79 79 79 65 65 + 10 50 65 65 65 65 79 79 65 65 + 79 79 79 79 79 79 65 65 79 79 + 79 79 65 65 50 10 65 65 65 65 + 79 79 79 79 65 65 79 79 79 79 + 79 79 65 65 79 79 65 65 65 65 + 10 50 65 65 79 79 79 79 65 65 + 79 79 79 79 79 79 65 65 79 79 + 65 65 65 65 50 10 65 65 79 79 + 79 79 79 79 65 65 79 79 79 79 + 79 79 65 65 65 65 65 65 65 65 + 10 50 79 79 79 79 79 79 65 65 + 79 79 79 79 79 79 65 65 65 65 + 65 65 65 65 50 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/24em64t-2n6c2t-pci.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/24em64t-2n6c2t-pci.xml new file mode 100644 index 0000000000..a8c53eebe6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/24em64t-2n6c2t-pci.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 20 20 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.options new file mode 100644 index 0000000000..0b6128b77f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.options @@ -0,0 +1 @@ +--ignore group diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.source new file mode 100644 index 0000000000..145b3cdf2a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.source @@ -0,0 +1 @@ +28intel64-2p2g7c-CoDgroups.v1.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.xml new file mode 100644 index 0000000000..47b514ba7d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoD.nogroups.v1tov2.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 + 10 21 31 31 21 10 31 31 31 31 + 10 21 31 31 21 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1.xml new file mode 100644 index 0000000000..70de79b060 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1tov2.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1tov2.source new file mode 100644 index 0000000000..145b3cdf2a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1tov2.source @@ -0,0 +1 @@ +28intel64-2p2g7c-CoDgroups.v1.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1tov2.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1tov2.xml new file mode 100644 index 0000000000..6f5e66fd1a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/28intel64-2p2g7c-CoDgroups.v1tov2.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 + 10 21 31 31 21 10 31 31 31 31 + 10 21 31 31 21 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1.xml new file mode 100644 index 0000000000..b12eb2a3a5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1tov2.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1tov2.source new file mode 100644 index 0000000000..813808b185 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1tov2.source @@ -0,0 +1 @@ +2intel64-1n2c-numaroot.v1.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1tov2.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1tov2.xml new file mode 100644 index 0000000000..4fc3ae7a25 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/2intel64-1n2c-numaroot.v1tov2.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.options new file mode 100644 index 0000000000..deee383e3f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.options @@ -0,0 +1 @@ +--no-io diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.source new file mode 100644 index 0000000000..263a78c5c3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.source @@ -0,0 +1 @@ +32em64t-2n8c2t-pci-wholeio.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.xml new file mode 100644 index 0000000000..b54e630f72 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-noio.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 20 20 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.source new file mode 100644 index 0000000000..263a78c5c3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.source @@ -0,0 +1 @@ +32em64t-2n8c2t-pci-wholeio.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.xml new file mode 100644 index 0000000000..f560132af4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-normalio.xml @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 20 20 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-wholeio.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-wholeio.options new file mode 100644 index 0000000000..92298e4d32 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-wholeio.options @@ -0,0 +1 @@ +--whole-io diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-wholeio.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-wholeio.xml new file mode 100644 index 0000000000..164467d4d8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/32em64t-2n8c2t-pci-wholeio.xml @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 20 20 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.env b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.env new file mode 100644 index 0000000000..cdb657aa2a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.env @@ -0,0 +1,5 @@ +# make sure we use default numeric formats (only XML outputs are dis-localized when supported) +# we really want to check the distance matrix here (in case it gets truncated or so) +LANG=C +LC_ALL=C +export LANG LC_ALL diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.options new file mode 100644 index 0000000000..f5080e8aa3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.options @@ -0,0 +1 @@ +--of console -v --disallowed diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.output b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.output new file mode 100644 index 0000000000..e7f7b23438 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.output @@ -0,0 +1,398 @@ +Machine (P#0 total=259890340KB DMIProductName=UV2000 DMIProductVersion=SGI DMIBoardVendor="Intel Corp." DMIBoardName=ROMLEY DMIBoardVersion=E63448-400 DMIBoardAssetTag="Base Board Asset Tag" DMIChassisVendor="Intel Corporation" DMIChassisType=23 DMIChassisVersion=0.1 DMIChassisAssetTag="Chassis Asset Tag" DMIBIOSVendor="Silicon Graphics International Corp." DMIBIOSVersion="SGI UV 2000/3000 series BIOS" DMIBIOSDate=01/15/2013 DMISysVendor=SGI Backend=Linux LinuxCgroup=/boot OSName=Linux OSRelease=3.0.80-0.7-default OSVersion="#1 SMP Tue Jun 25 18:32:49 UTC 2013 (25740f8)" HostName=condor Architecture=x86_64 hwlocVersion=2.0.0a1-git ProcessName=lstopo-no-graphics) + Group0 L#0 (total=64953508KB) + Package L#0 (P#0 total=32464036KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=45 CPUModel="Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz" CPUStepping=7) + NUMANode L#0 (P#0 local=32464036KB total=32464036KB) + L3Cache L#0 (size=20480KB linesize=64 ways=20) + L2Cache L#0 (size=256KB linesize=64 ways=8) + L1dCache L#0 (size=32KB linesize=64 ways=8) + L1iCache L#0 (size=32KB linesize=64 ways=8) + Core L#0 (P#0) + PU L#0 (P#0) + L2Cache L#1 (size=256KB linesize=64 ways=8) + L1dCache L#1 (size=32KB linesize=64 ways=8) + L1iCache L#1 (size=32KB linesize=64 ways=8) + Core L#1 (P#1) + PU L#1 (P#1) + L2Cache L#2 (size=256KB linesize=64 ways=8) + L1dCache L#2 (size=32KB linesize=64 ways=8) + L1iCache L#2 (size=32KB linesize=64 ways=8) + Core L#2 (P#2) + PU L#2 (P#2) + L2Cache L#3 (size=256KB linesize=64 ways=8) + L1dCache L#3 (size=32KB linesize=64 ways=8) + L1iCache L#3 (size=32KB linesize=64 ways=8) + Core L#3 (P#3) + PU L#3 (P#3) + L2Cache L#4 (size=256KB linesize=64 ways=8) + L1dCache L#4 (size=32KB linesize=64 ways=8) + L1iCache L#4 (size=32KB linesize=64 ways=8) + Core L#4 (P#4) + PU L#4 (P#4) + L2Cache L#5 (size=256KB linesize=64 ways=8) + L1dCache L#5 (size=32KB linesize=64 ways=8) + L1iCache L#5 (size=32KB linesize=64 ways=8) + Core L#5 (P#5) + PU L#5 (P#5) + L2Cache L#6 (size=256KB linesize=64 ways=8) + L1dCache L#6 (size=32KB linesize=64 ways=8) + L1iCache L#6 (size=32KB linesize=64 ways=8) + Core L#6 (P#6) + PU L#6 (P#6) + L2Cache L#7 (size=256KB linesize=64 ways=8) + L1dCache L#7 (size=32KB linesize=64 ways=8) + L1iCache L#7 (size=32KB linesize=64 ways=8) + Core L#7 (P#7) + PU L#7 (P#7) + HostBridge L#0 (buses=0000:[00-0a]) + PCIBridge L#1 (busid=0000:00:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0000:[01-02] PCIVendor="Intel Corporation" PCIDevice="Sandy Bridge IIO PCI Express Root Port 3a in PCI Express Mode") + PCI L#0 (busid=0000:01:00.0 id=8086:1521 class=0200(Ethernet) PCIVendor="Intel Corporation" PCIDevice="I350 Gigabit Network Connection") + Network L#0 (Address=08:00:69:16:d0:b9) "eth0" + PCI L#1 (busid=0000:01:00.1 id=8086:1521 class=0200(Ethernet) PCIVendor="Intel Corporation" PCIDevice="I350 Gigabit Network Connection") + Network L#1 (Address=08:00:69:16:d0:ba) "eth1" + PCIBridge L#2 (busid=0000:00:1c.0 id=8086:1d1e class=0604(PCIBridge) buses=0000:[05-09] PCIVendor="Intel Corporation" PCIDevice="Patsburg PCI Express Root Port 8") + PCIBridge L#3 (busid=0000:05:00.0 id=1912:0013 class=0604(PCIBridge) buses=0000:[06-09] PCIVendor="Renesas Technology Corp." PCIDevice="SH7757 PCIe Switch [PS]") + PCIBridge L#4 (busid=0000:06:00.0 id=1912:0013 class=0604(PCIBridge) buses=0000:[07-08] PCIVendor="Renesas Technology Corp." PCIDevice="SH7757 PCIe Switch [PS]") + PCIBridge L#5 (busid=0000:07:00.0 id=1912:0012 class=0604(PCIBridge) buses=0000:[08-08] PCIVendor="Renesas Technology Corp." PCIDevice="SH7757 PCIe-PCI Bridge [PPB]") + PCI L#2 (busid=0000:08:00.0 id=102b:0534 class=0300(VGA) PCIVendor="Matrox Graphics, Inc." PCIDevice=G200eR2) + PCI L#3 (busid=0000:00:1f.2 id=8086:1d02 class=0106(SATA) PCIVendor="Intel Corporation" PCIDevice="Patsburg 6-Port SATA AHCI Controller") + Package L#1 (P#1 total=32489472KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=45 CPUModel="Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz" CPUStepping=7) + NUMANode L#1 (P#1 local=32489472KB total=32489472KB) + L3Cache L#1 (size=20480KB linesize=64 ways=20) + L2Cache L#8 (size=256KB linesize=64 ways=8) + L1dCache L#8 (size=32KB linesize=64 ways=8) + L1iCache L#8 (size=32KB linesize=64 ways=8) + Core L#8 (P#0) + PU L#8 (P#8) + L2Cache L#9 (size=256KB linesize=64 ways=8) + L1dCache L#9 (size=32KB linesize=64 ways=8) + L1iCache L#9 (size=32KB linesize=64 ways=8) + Core L#9 (P#1) + PU L#9 (P#9) + L2Cache L#10 (size=256KB linesize=64 ways=8) + L1dCache L#10 (size=32KB linesize=64 ways=8) + L1iCache L#10 (size=32KB linesize=64 ways=8) + Core L#10 (P#2) + PU L#10 (P#10) + L2Cache L#11 (size=256KB linesize=64 ways=8) + L1dCache L#11 (size=32KB linesize=64 ways=8) + L1iCache L#11 (size=32KB linesize=64 ways=8) + Core L#11 (P#3) + PU L#11 (P#11) + L2Cache L#12 (size=256KB linesize=64 ways=8) + L1dCache L#12 (size=32KB linesize=64 ways=8) + L1iCache L#12 (size=32KB linesize=64 ways=8) + Core L#12 (P#4) + PU L#12 (P#12) + L2Cache L#13 (size=256KB linesize=64 ways=8) + L1dCache L#13 (size=32KB linesize=64 ways=8) + L1iCache L#13 (size=32KB linesize=64 ways=8) + Core L#13 (P#5) + PU L#13 (P#13) + L2Cache L#14 (size=256KB linesize=64 ways=8) + L1dCache L#14 (size=32KB linesize=64 ways=8) + L1iCache L#14 (size=32KB linesize=64 ways=8) + Core L#14 (P#6) + PU L#14 (P#14) + L2Cache L#15 (size=256KB linesize=64 ways=8) + L1dCache L#15 (size=32KB linesize=64 ways=8) + L1iCache L#15 (size=32KB linesize=64 ways=8) + Core L#15 (P#7) + PU L#15 (P#15) + HostBridge L#6 (buses=0001:[00-02]) + PCIBridge L#7 (busid=0001:00:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0001:[02-02] PCIVendor="Intel Corporation" PCIDevice="Sandy Bridge IIO PCI Express Root Port 3a in PCI Express Mode") + PCI L#4 (busid=0001:02:00.0 id=1000:0079 class=0104(RAID) PCIVendor="LSI Logic / Symbios Logic" PCIDevice="MegaRAID SAS 2108 [Liberator]") + Block L#2 (LinuxDeviceID=8:0) "sda" + Group0 L#1 (total=64978944KB) + Package L#2 (P#2 total=32489472KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=45 CPUModel="Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz" CPUStepping=7) + NUMANode L#2 (P#2 local=32489472KB total=32489472KB) (disallowed) + L3Cache L#2 (size=20480KB linesize=64 ways=20) + L2Cache L#16 (size=256KB linesize=64 ways=8) + L1dCache L#16 (size=32KB linesize=64 ways=8) + L1iCache L#16 (size=32KB linesize=64 ways=8) + Core L#16 (P#0) + PU L#16 (P#16) (disallowed) + L2Cache L#17 (size=256KB linesize=64 ways=8) + L1dCache L#17 (size=32KB linesize=64 ways=8) + L1iCache L#17 (size=32KB linesize=64 ways=8) + Core L#17 (P#1) + PU L#17 (P#17) (disallowed) + L2Cache L#18 (size=256KB linesize=64 ways=8) + L1dCache L#18 (size=32KB linesize=64 ways=8) + L1iCache L#18 (size=32KB linesize=64 ways=8) + Core L#18 (P#2) + PU L#18 (P#18) (disallowed) + L2Cache L#19 (size=256KB linesize=64 ways=8) + L1dCache L#19 (size=32KB linesize=64 ways=8) + L1iCache L#19 (size=32KB linesize=64 ways=8) + Core L#19 (P#3) + PU L#19 (P#19) (disallowed) + L2Cache L#20 (size=256KB linesize=64 ways=8) + L1dCache L#20 (size=32KB linesize=64 ways=8) + L1iCache L#20 (size=32KB linesize=64 ways=8) + Core L#20 (P#4) + PU L#20 (P#20) (disallowed) + L2Cache L#21 (size=256KB linesize=64 ways=8) + L1dCache L#21 (size=32KB linesize=64 ways=8) + L1iCache L#21 (size=32KB linesize=64 ways=8) + Core L#21 (P#5) + PU L#21 (P#21) (disallowed) + L2Cache L#22 (size=256KB linesize=64 ways=8) + L1dCache L#22 (size=32KB linesize=64 ways=8) + L1iCache L#22 (size=32KB linesize=64 ways=8) + Core L#22 (P#6) + PU L#22 (P#22) (disallowed) + L2Cache L#23 (size=256KB linesize=64 ways=8) + L1dCache L#23 (size=32KB linesize=64 ways=8) + L1iCache L#23 (size=32KB linesize=64 ways=8) + Core L#23 (P#7) + PU L#23 (P#23) (disallowed) + Package L#3 (P#3 total=32489472KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=45 CPUModel="Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz" CPUStepping=7) + NUMANode L#3 (P#3 local=32489472KB total=32489472KB) (disallowed) + L3Cache L#3 (size=20480KB linesize=64 ways=20) + L2Cache L#24 (size=256KB linesize=64 ways=8) + L1dCache L#24 (size=32KB linesize=64 ways=8) + L1iCache L#24 (size=32KB linesize=64 ways=8) + Core L#24 (P#0) + PU L#24 (P#24) (disallowed) + L2Cache L#25 (size=256KB linesize=64 ways=8) + L1dCache L#25 (size=32KB linesize=64 ways=8) + L1iCache L#25 (size=32KB linesize=64 ways=8) + Core L#25 (P#1) + PU L#25 (P#25) (disallowed) + L2Cache L#26 (size=256KB linesize=64 ways=8) + L1dCache L#26 (size=32KB linesize=64 ways=8) + L1iCache L#26 (size=32KB linesize=64 ways=8) + Core L#26 (P#2) + PU L#26 (P#26) (disallowed) + L2Cache L#27 (size=256KB linesize=64 ways=8) + L1dCache L#27 (size=32KB linesize=64 ways=8) + L1iCache L#27 (size=32KB linesize=64 ways=8) + Core L#27 (P#3) + PU L#27 (P#27) (disallowed) + L2Cache L#28 (size=256KB linesize=64 ways=8) + L1dCache L#28 (size=32KB linesize=64 ways=8) + L1iCache L#28 (size=32KB linesize=64 ways=8) + Core L#28 (P#4) + PU L#28 (P#28) (disallowed) + L2Cache L#29 (size=256KB linesize=64 ways=8) + L1dCache L#29 (size=32KB linesize=64 ways=8) + L1iCache L#29 (size=32KB linesize=64 ways=8) + Core L#29 (P#5) + PU L#29 (P#29) (disallowed) + L2Cache L#30 (size=256KB linesize=64 ways=8) + L1dCache L#30 (size=32KB linesize=64 ways=8) + L1iCache L#30 (size=32KB linesize=64 ways=8) + Core L#30 (P#6) + PU L#30 (P#30) (disallowed) + L2Cache L#31 (size=256KB linesize=64 ways=8) + L1dCache L#31 (size=32KB linesize=64 ways=8) + L1iCache L#31 (size=32KB linesize=64 ways=8) + Core L#31 (P#7) + PU L#31 (P#31) (disallowed) + Package L#4 (P#4 total=32489472KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=45 CPUModel="Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz" CPUStepping=7) + NUMANode L#4 (P#4 local=32489472KB total=32489472KB) (disallowed) + L3Cache L#4 (size=20480KB linesize=64 ways=20) + L2Cache L#32 (size=256KB linesize=64 ways=8) + L1dCache L#32 (size=32KB linesize=64 ways=8) + L1iCache L#32 (size=32KB linesize=64 ways=8) + Core L#32 (P#0) + PU L#32 (P#32) (disallowed) + L2Cache L#33 (size=256KB linesize=64 ways=8) + L1dCache L#33 (size=32KB linesize=64 ways=8) + L1iCache L#33 (size=32KB linesize=64 ways=8) + Core L#33 (P#1) + PU L#33 (P#33) (disallowed) + L2Cache L#34 (size=256KB linesize=64 ways=8) + L1dCache L#34 (size=32KB linesize=64 ways=8) + L1iCache L#34 (size=32KB linesize=64 ways=8) + Core L#34 (P#2) + PU L#34 (P#34) (disallowed) + L2Cache L#35 (size=256KB linesize=64 ways=8) + L1dCache L#35 (size=32KB linesize=64 ways=8) + L1iCache L#35 (size=32KB linesize=64 ways=8) + Core L#35 (P#3) + PU L#35 (P#35) (disallowed) + L2Cache L#36 (size=256KB linesize=64 ways=8) + L1dCache L#36 (size=32KB linesize=64 ways=8) + L1iCache L#36 (size=32KB linesize=64 ways=8) + Core L#36 (P#4) + PU L#36 (P#36) (disallowed) + L2Cache L#37 (size=256KB linesize=64 ways=8) + L1dCache L#37 (size=32KB linesize=64 ways=8) + L1iCache L#37 (size=32KB linesize=64 ways=8) + Core L#37 (P#5) + PU L#37 (P#37) (disallowed) + L2Cache L#38 (size=256KB linesize=64 ways=8) + L1dCache L#38 (size=32KB linesize=64 ways=8) + L1iCache L#38 (size=32KB linesize=64 ways=8) + Core L#38 (P#6) + PU L#38 (P#38) (disallowed) + L2Cache L#39 (size=256KB linesize=64 ways=8) + L1dCache L#39 (size=32KB linesize=64 ways=8) + L1iCache L#39 (size=32KB linesize=64 ways=8) + Core L#39 (P#7) + PU L#39 (P#39) (disallowed) + HostBridge L#8 (buses=0002:[00-01]) + PCIBridge L#9 (busid=0002:00:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0002:[01-01] PCIVendor="Intel Corporation" PCIDevice="Sandy Bridge IIO PCI Express Root Port 3a in PCI Express Mode") + PCI L#5 (busid=0002:01:00.0 id=10de:11ba class=0300(VGA) PCIVendor="nVidia Corporation") + Group0 L#2 (total=64978944KB) + Package L#5 (P#6 total=32489472KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=45 CPUModel="Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz" CPUStepping=7) + NUMANode L#5 (P#5 local=32489472KB total=32489472KB) (disallowed) + L3Cache L#5 (size=20480KB linesize=64 ways=20) + L2Cache L#40 (size=256KB linesize=64 ways=8) + L1dCache L#40 (size=32KB linesize=64 ways=8) + L1iCache L#40 (size=32KB linesize=64 ways=8) + Core L#40 (P#0) + PU L#40 (P#40) (disallowed) + L2Cache L#41 (size=256KB linesize=64 ways=8) + L1dCache L#41 (size=32KB linesize=64 ways=8) + L1iCache L#41 (size=32KB linesize=64 ways=8) + Core L#41 (P#1) + PU L#41 (P#41) (disallowed) + L2Cache L#42 (size=256KB linesize=64 ways=8) + L1dCache L#42 (size=32KB linesize=64 ways=8) + L1iCache L#42 (size=32KB linesize=64 ways=8) + Core L#42 (P#2) + PU L#42 (P#42) (disallowed) + L2Cache L#43 (size=256KB linesize=64 ways=8) + L1dCache L#43 (size=32KB linesize=64 ways=8) + L1iCache L#43 (size=32KB linesize=64 ways=8) + Core L#43 (P#3) + PU L#43 (P#43) (disallowed) + L2Cache L#44 (size=256KB linesize=64 ways=8) + L1dCache L#44 (size=32KB linesize=64 ways=8) + L1iCache L#44 (size=32KB linesize=64 ways=8) + Core L#44 (P#4) + PU L#44 (P#44) (disallowed) + L2Cache L#45 (size=256KB linesize=64 ways=8) + L1dCache L#45 (size=32KB linesize=64 ways=8) + L1iCache L#45 (size=32KB linesize=64 ways=8) + Core L#45 (P#5) + PU L#45 (P#45) (disallowed) + L2Cache L#46 (size=256KB linesize=64 ways=8) + L1dCache L#46 (size=32KB linesize=64 ways=8) + L1iCache L#46 (size=32KB linesize=64 ways=8) + Core L#46 (P#6) + PU L#46 (P#46) (disallowed) + L2Cache L#47 (size=256KB linesize=64 ways=8) + L1dCache L#47 (size=32KB linesize=64 ways=8) + L1iCache L#47 (size=32KB linesize=64 ways=8) + Core L#47 (P#7) + PU L#47 (P#47) (disallowed) + HostBridge L#10 (buses=0003:[00-02]) + PCIBridge L#11 (busid=0003:00:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0003:[01-02] PCIVendor="Intel Corporation" PCIDevice="Sandy Bridge IIO PCI Express Root Port 3a in PCI Express Mode") + PCI L#6 (busid=0003:01:00.0 id=1000:0072 class=0107(SAS) PCIVendor="LSI Logic / Symbios Logic" PCIDevice="SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]") + Package L#6 (P#7 total=32489472KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=45 CPUModel="Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz" CPUStepping=7) + NUMANode L#6 (P#6 local=32489472KB total=32489472KB) (disallowed) + L3Cache L#6 (size=20480KB linesize=64 ways=20) + L2Cache L#48 (size=256KB linesize=64 ways=8) + L1dCache L#48 (size=32KB linesize=64 ways=8) + L1iCache L#48 (size=32KB linesize=64 ways=8) + Core L#48 (P#0) + PU L#48 (P#48) (disallowed) + L2Cache L#49 (size=256KB linesize=64 ways=8) + L1dCache L#49 (size=32KB linesize=64 ways=8) + L1iCache L#49 (size=32KB linesize=64 ways=8) + Core L#49 (P#1) + PU L#49 (P#49) (disallowed) + L2Cache L#50 (size=256KB linesize=64 ways=8) + L1dCache L#50 (size=32KB linesize=64 ways=8) + L1iCache L#50 (size=32KB linesize=64 ways=8) + Core L#50 (P#2) + PU L#50 (P#50) (disallowed) + L2Cache L#51 (size=256KB linesize=64 ways=8) + L1dCache L#51 (size=32KB linesize=64 ways=8) + L1iCache L#51 (size=32KB linesize=64 ways=8) + Core L#51 (P#3) + PU L#51 (P#51) (disallowed) + L2Cache L#52 (size=256KB linesize=64 ways=8) + L1dCache L#52 (size=32KB linesize=64 ways=8) + L1iCache L#52 (size=32KB linesize=64 ways=8) + Core L#52 (P#4) + PU L#52 (P#52) (disallowed) + L2Cache L#53 (size=256KB linesize=64 ways=8) + L1dCache L#53 (size=32KB linesize=64 ways=8) + L1iCache L#53 (size=32KB linesize=64 ways=8) + Core L#53 (P#5) + PU L#53 (P#53) (disallowed) + L2Cache L#54 (size=256KB linesize=64 ways=8) + L1dCache L#54 (size=32KB linesize=64 ways=8) + L1iCache L#54 (size=32KB linesize=64 ways=8) + Core L#54 (P#6) + PU L#54 (P#54) (disallowed) + L2Cache L#55 (size=256KB linesize=64 ways=8) + L1dCache L#55 (size=32KB linesize=64 ways=8) + L1iCache L#55 (size=32KB linesize=64 ways=8) + Core L#55 (P#7) + PU L#55 (P#55) (disallowed) + Package L#7 (P#8 total=32489472KB CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=45 CPUModel="Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz" CPUStepping=7) + NUMANode L#7 (P#7 local=32489472KB total=32489472KB) (disallowed) + L3Cache L#7 (size=20480KB linesize=64 ways=20) + L2Cache L#56 (size=256KB linesize=64 ways=8) + L1dCache L#56 (size=32KB linesize=64 ways=8) + L1iCache L#56 (size=32KB linesize=64 ways=8) + Core L#56 (P#0) + PU L#56 (P#56) (disallowed) + L2Cache L#57 (size=256KB linesize=64 ways=8) + L1dCache L#57 (size=32KB linesize=64 ways=8) + L1iCache L#57 (size=32KB linesize=64 ways=8) + Core L#57 (P#1) + PU L#57 (P#57) (disallowed) + L2Cache L#58 (size=256KB linesize=64 ways=8) + L1dCache L#58 (size=32KB linesize=64 ways=8) + L1iCache L#58 (size=32KB linesize=64 ways=8) + Core L#58 (P#2) + PU L#58 (P#58) (disallowed) + L2Cache L#59 (size=256KB linesize=64 ways=8) + L1dCache L#59 (size=32KB linesize=64 ways=8) + L1iCache L#59 (size=32KB linesize=64 ways=8) + Core L#59 (P#3) + PU L#59 (P#59) (disallowed) + L2Cache L#60 (size=256KB linesize=64 ways=8) + L1dCache L#60 (size=32KB linesize=64 ways=8) + L1iCache L#60 (size=32KB linesize=64 ways=8) + Core L#60 (P#4) + PU L#60 (P#60) (disallowed) + L2Cache L#61 (size=256KB linesize=64 ways=8) + L1dCache L#61 (size=32KB linesize=64 ways=8) + L1iCache L#61 (size=32KB linesize=64 ways=8) + Core L#61 (P#5) + PU L#61 (P#61) (disallowed) + L2Cache L#62 (size=256KB linesize=64 ways=8) + L1dCache L#62 (size=32KB linesize=64 ways=8) + L1iCache L#62 (size=32KB linesize=64 ways=8) + Core L#62 (P#6) + PU L#62 (P#62) (disallowed) + L2Cache L#63 (size=256KB linesize=64 ways=8) + L1dCache L#63 (size=32KB linesize=64 ways=8) + L1iCache L#63 (size=32KB linesize=64 ways=8) + Core L#63 (P#7) + PU L#63 (P#63) (disallowed) + HostBridge L#12 (buses=0004:[00-01]) + PCIBridge L#13 (busid=0004:00:03.0 id=8086:3c08 class=0604(PCIBridge) buses=0004:[01-01] PCIVendor="Intel Corporation" PCIDevice="Sandy Bridge IIO PCI Express Root Port 3a in PCI Express Mode") + PCI L#7 (busid=0004:01:00.0 id=10de:11ba class=0300(VGA) PCIVendor="nVidia Corporation") +depth 0: 1 Machine (type #0) + depth 1: 3 Group0 (type #12) + depth 2: 8 Package (type #1) + depth 3: 8 L3Cache (type #6) + depth 4: 64 L2Cache (type #5) + depth 5: 64 L1dCache (type #4) + depth 6: 64 L1iCache (type #9) + depth 7: 64 Core (type #2) + depth 8: 64 PU (type #3) +Special depth -3: 8 NUMANode (type #13) +Special depth -4: 14 Bridge (type #14) +Special depth -5: 8 PCIDev (type #15) +Special depth -6: 3 OSDev (type #16) +Relative latency matrix (name NUMALatency kind 5) between 8 NUMANodes (depth -3) by logical indexes: + index 0 1 2 3 4 5 6 7 + 0 10 50 65 65 65 65 65 65 + 1 50 10 65 65 65 65 65 65 + 2 65 65 10 50 65 65 65 79 + 3 65 65 50 10 65 65 65 79 + 4 65 65 65 65 10 65 65 65 + 5 65 65 65 65 65 10 50 79 + 6 65 65 65 65 65 50 10 79 + 7 65 65 79 79 65 79 79 10 +48 processors represented but not allowed: 0xffffffff,0xffff0000 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.source new file mode 100644 index 0000000000..5a9f769329 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.console.source @@ -0,0 +1 @@ +64intel64-3g2n+2n-irregulargroups+pci.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.options new file mode 100644 index 0000000000..b786172e6d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.options @@ -0,0 +1 @@ +--disallowed diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.xml new file mode 100644 index 0000000000..edfbe35b9f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-3g2n+2n-irregulargroups+pci.xml @@ -0,0 +1,811 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 4 5 6 7 + 10 50 65 65 65 65 65 65 50 10 + 65 65 65 65 65 65 65 65 10 50 + 65 65 65 79 65 65 50 10 65 65 + 65 79 65 65 65 65 10 65 65 65 + 65 65 65 65 65 10 50 79 65 65 + 65 65 65 50 10 79 65 65 79 79 + 65 79 79 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v1tov2.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v1tov2.source new file mode 100644 index 0000000000..aab9a48552 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v1tov2.source @@ -0,0 +1 @@ +64intel64-fakeKNL-SNC4-hybrid.v2tov1.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v1tov2.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v1tov2.xml new file mode 100644 index 0000000000..26a115fefc --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v1tov2.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.options new file mode 100644 index 0000000000..0249e0c917 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.options @@ -0,0 +1 @@ +--of xml --export-xml-flags 1 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.source new file mode 100644 index 0000000000..d24dac1911 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.source @@ -0,0 +1 @@ +64intel64-fakeKNL-SNC4-hybrid.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.xml new file mode 100644 index 0000000000..ae80e3f79d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.v2tov1.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.xml new file mode 100644 index 0000000000..111abd0664 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/64intel64-fakeKNL-SNC4-hybrid.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1.xml new file mode 100644 index 0000000000..19f5949cfa --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1tov2.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1tov2.source new file mode 100644 index 0000000000..0df3970449 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1tov2.source @@ -0,0 +1 @@ +8em64t-2p2ca2co-nonodesets.v1.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1tov2.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1tov2.xml new file mode 100644 index 0000000000..eadd1982d7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8em64t-2p2ca2co-nonodesets.v1tov2.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1.xml new file mode 100644 index 0000000000..2dd74d8388 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1tov2.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1tov2.source new file mode 100644 index 0000000000..649ca18cd0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1tov2.source @@ -0,0 +1 @@ +8ia64-2n2s2c+1n.v1.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1tov2.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1tov2.xml new file mode 100644 index 0000000000..2870515cfd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8ia64-2n2s2c+1n.v1tov2.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 2 16 + 10 17 17 17 17 10 14 14 14 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-4n2t-memattrs.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-4n2t-memattrs.xml new file mode 100644 index 0000000000..c86b9b0271 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-4n2t-memattrs.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.source new file mode 100644 index 0000000000..f5a6ba407e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.source @@ -0,0 +1 @@ +8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.xml new file mode 100644 index 0000000000..30052cf8c7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.options b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.options new file mode 100644 index 0000000000..0249e0c917 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.options @@ -0,0 +1 @@ +--of xml --export-xml-flags 1 diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.source b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.source new file mode 100644 index 0000000000..ce66981651 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.source @@ -0,0 +1 @@ +8intel64-fakeKNL-A2A-hybrid.rootattachednumas.xml diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.xml new file mode 100644 index 0000000000..c44f6194c7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.xml new file mode 100644 index 0000000000..83b6fbc5d4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/8intel64-fakeKNL-A2A-hybrid.rootattachednumas.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/96em64t-4n4d3ca2co-pci.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/96em64t-4n4d3ca2co-pci.xml new file mode 100644 index 0000000000..c650904e4d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/96em64t-4n4d3ca2co-pci.xml @@ -0,0 +1,839 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 + 10 26 26 26 26 10 26 26 26 26 + 10 26 26 26 26 10 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/Makefile.am b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/Makefile.am new file mode 100644 index 0000000000..a17c7bfd25 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/Makefile.am @@ -0,0 +1,109 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2010 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +# Add your output files here. +xml_outputs = \ + 8intel64-4n2t-memattrs.xml \ + 16amd64-8n2c-cpusets.xml \ + 16amd64-4distances.xml \ + 16amd64-4distances.console.output \ + 16em64t-4s2c2t.xml \ + 16em64t-4s2c2t-offlines.xml \ + 16em64t-4s2c2t.console.output \ + 16-2gr2gr2n2c+misc.xml \ + 16-2gr2gr2n2c+misc.console.output \ + 16intel64-manyVFs.xml \ + 16intel64-manyVFs.console.output \ + 16intel64-manyVFs.console.nocollapse.output \ + 24em64t-2n6c2t-pci.xml \ + 32em64t-2n8c2t-pci-noio.xml \ + 32em64t-2n8c2t-pci-normalio.xml \ + 32em64t-2n8c2t-pci-wholeio.xml \ + 64intel64-3g2n+2n-irregulargroups+pci.xml \ + 64intel64-3g2n+2n-irregulargroups+pci.console.output \ + 8intel64-fakeKNL-A2A-hybrid.rootattachednumas.xml \ + 64intel64-fakeKNL-SNC4-hybrid.xml \ + 96em64t-4n4d3ca2co-pci.xml \ + 192em64t-12gr2n8c2t.xml \ + 192em64t-24n8c2t.xml \ + power8gpudistances.xml \ + fakeheterodistances.xml \ + fakecpukinds.xml \ + 8em64t-2p2ca2co-nonodesets.v1tov2.xml \ + 8ia64-2n2s2c+1n.v1tov2.xml \ + 16amd64-4distances.v1tov2.xml \ + 16amd64-4distances.v2tov1.xml \ + 2intel64-1n2c-numaroot.v1tov2.xml \ + 28intel64-2p2g7c-CoDgroups.v1tov2.xml \ + 28intel64-2p2g7c-CoD.nogroups.v1tov2.xml \ + 8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.xml \ + 8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.xml \ + 64intel64-fakeKNL-SNC4-hybrid.v1tov2.xml \ + 64intel64-fakeKNL-SNC4-hybrid.v2tov1.xml + +# Each output `xyz.xml' may have a corresponding `xyz.source' file specifying +# its source file. +# Each output `xyz.output' must have a corresponding `xyz.xml' source file, +# or a `xyz.source' file specifying its source file. +xml_source = \ + 16amd64-4distances.console.source \ + 16em64t-4s2c2t.console.source \ + 16-2gr2gr2n2c+misc.console.source \ + 16intel64-manyVFs.console.source \ + 16intel64-manyVFs.console.nocollapse.source \ + 32em64t-2n8c2t-pci-noio.source \ + 32em64t-2n8c2t-pci-normalio.source \ + 64intel64-3g2n+2n-irregulargroups+pci.console.source \ + 8em64t-2p2ca2co-nonodesets.v1tov2.source \ + 8em64t-2p2ca2co-nonodesets.v1.xml \ + 8ia64-2n2s2c+1n.v1tov2.source \ + 8ia64-2n2s2c+1n.v1.xml \ + 16amd64-4distances.v1tov2.source \ + 16amd64-4distances.v2tov1.source \ + 16amd64-4distances.v1.xml \ + 2intel64-1n2c-numaroot.v1tov2.source \ + 2intel64-1n2c-numaroot.v1.xml \ + 28intel64-2p2g7c-CoDgroups.v1tov2.source \ + 28intel64-2p2g7c-CoD.nogroups.v1tov2.source \ + 28intel64-2p2g7c-CoDgroups.v1.xml \ + 8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v1tov2.source \ + 8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.source \ + 64intel64-fakeKNL-SNC4-hybrid.v1tov2.source \ + 64intel64-fakeKNL-SNC4-hybrid.v2tov1.source + +# Each output `xyz.xml' or `xyz.output' may have a corresponding `xyz.options' +# file modifying the behavior of lstopo +xml_options = \ + 16amd64-4distances.console.options \ + 16em64t-4s2c2t.console.options \ + 16intel64-manyVFs.console.options \ + 16intel64-manyVFs.console.nocollapse.options \ + 16-2gr2gr2n2c+misc.console.options \ + 32em64t-2n8c2t-pci-noio.options \ + 32em64t-2n8c2t-pci-wholeio.options \ + 64intel64-3g2n+2n-irregulargroups+pci.options \ + 64intel64-3g2n+2n-irregulargroups+pci.console.options \ + 16amd64-4distances.v2tov1.options \ + 28intel64-2p2g7c-CoD.nogroups.v1tov2.options \ + 8intel64-fakeKNL-A2A-hybrid.rootattachednumas.v2tov1.options \ + 64intel64-fakeKNL-SNC4-hybrid.v2tov1.options + +# Each output `xyz.xml' or `xyz.output' may have a corresponding `xyz.env' +# modifying the environment of lstopo +xml_envs = \ + 16amd64-4distances.console.env \ + 64intel64-3g2n+2n-irregulargroups+pci.console.env + +# Only run the tests if we're building standalone, because the tests +# call hwloc executables. +TESTS = $(xml_outputs) + +EXTRA_DIST = $(xml_outputs) $(xml_source) $(xml_options) $(xml_envs) + +LOG_COMPILER = $(HWLOC_top_builddir)/tests/hwloc/xml/test-topology.sh diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/fakecpukinds.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/fakecpukinds.xml new file mode 100644 index 0000000000..50d661473b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/fakecpukinds.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/fakeheterodistances.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/fakeheterodistances.xml new file mode 100644 index 0000000000..b325b5440e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/fakeheterodistances.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 2 3 4 5 6 7 + 10 16 16 22 16 22 16 22 16 10 + 22 16 16 22 22 16 16 22 10 16 + 16 16 16 16 22 16 16 10 16 16 + 22 22 16 16 16 16 10 16 16 22 + 22 22 16 16 16 10 22 16 16 22 + 16 22 16 22 10 16 22 16 16 22 + 22 16 16 10 + + + NUMANode:254 NUMANode:255 NUMANode:256 NUMANode:257 NUMANode:258 NUMANode:259 NUMANode:260 NUMANode:261 Group:500 Group:501 + Machine:1 + 10 16 16 22 16 22 16 22 16 10 + 22 16 16 22 22 16 16 22 10 16 + 16 16 16 16 22 16 16 10 16 16 + 22 22 16 16 16 16 10 16 16 22 + 22 22 16 16 16 10 22 16 16 22 + 16 22 16 22 10 16 22 16 16 22 + 10 16 16 22 16 22 16 22 16 10 + 22 16 16 22 22 16 16 22 10 16 + 16 16 16 16 22 16 16 10 16 16 + 22 22 16 16 16 16 10 16 16 22 + 22 22 16 16 16 10 22 16 16 22 + 16 22 16 22 10 16 22 16 16 22 + 22 + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/power8gpudistances.xml b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/power8gpudistances.xml new file mode 100644 index 0000000000..6ef86fa1ba --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/power8gpudistances.xml @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 40 40 10 + + + OSDev:332 OSDev:333 OSDev:334 OSDev:335 Package:3 Package:134 + 1000000 40000 0 0 40000 0 40000 1000000 0 0 + 40000 0 0 0 1000000 40000 0 40000 0 0 + 40000 1000000 0 40000 40000 40000 0 0 1000000 0 + 0 0 40000 40000 0 1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xml/test-topology.sh.in b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/test-topology.sh.in new file mode 100644 index 0000000000..2dd65f3181 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xml/test-topology.sh.in @@ -0,0 +1,149 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009 CNRS +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2009-2012 Université Bordeaux +# Copyright © 2010-2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +# Check the conformance of `lstopo' for all the XML +# hierarchies available here. Return true on success. + +HWLOC_top_builddir="@HWLOC_top_builddir@" +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +lstopo="$HWLOC_top_builddir/utils/lstopo/lstopo-no-graphics" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +HWLOC_LIBXML_CLEANUP=1 +export HWLOC_LIBXML_CLEANUP + +if test x@HWLOC_XML_LOCALIZED@ = x1; then + # make sure we use default numeric formats in XML outputs (non-XML outputs have to set those variables too) + LANG=C + LC_ALL=C + export LANG LC_ALL +fi + +error() +{ + echo $@ 2>&1 +} + +if [ ! -x "$lstopo" ] +then + error "Could not find executable file \`$lstopo'." + exit 1 +fi + + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +file="$tmp/lstopo_xml.output" + +set -e + +output="$1" +dirname=`dirname $1` +filename=`basename $1` +basename=`basename $1 .xml` +basename=`basename $basename .output` + +source="${dirname}/${basename}.xml" +source_file="${dirname}/${basename}.source" + +if test \! -f "$source" && test \! -f "$source_file"; then + echo "Missing both ${basename}.xml and ${basename}.source" + exit 1 +fi +test -f "$source_file" && source="${dirname}/"`cat $source_file` + +options_file="${dirname}/${basename}.options" +test -f "$options_file" && opts=`cat $options_file` + +test -f "${dirname}/${basename}.env" && . "${dirname}/${basename}.env" + +do_run() +{ + echo $lstopo --if xml --input "$source" --of xml "$file" $opts + $lstopo --if xml --input "$source" --of xml "$file" $opts + + if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ] + then + @DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ "$output" "$file" + else + if ! @DIFF@ "$output" "$file" >/dev/null + then + cp -f "$file" "$output" + echo "Updated $filename" + fi + fi + + if [ -n "@XMLLINT@" ] + then + cp -f "$HWLOC_top_srcdir"/hwloc/hwloc*.dtd "$tmp/" + ( cd $tmp ; @XMLLINT@ --valid $file ) > /dev/null + fi + + rm "$file" +} + +do_run_with_output() +{ + echo $lstopo --if xml --input "$source" "$file" $opts + $lstopo --if xml --input "$source" "$file" $opts + + if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ] + then + @DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ "$output" "$file" + else + if ! @DIFF@ "$output" "$file" >/dev/null + then + cp -f "$file" "$output" + echo "Updated ${basename}.xml" + fi + fi + + rm $file +} + +export HWLOC_LIBXML_IMPORT +export HWLOC_LIBXML_EXPORT + +if test "$filename" = "${basename}.xml"; then + echo "Importing with default parser and reexporting with minimalistic implementation..." + HWLOC_LIBXML_IMPORT=1 + HWLOC_LIBXML_EXPORT=0 + do_run "$dirname" "$basename" + echo "Importing with minimalistic parser and reexporting with default implementation..." + HWLOC_LIBXML_IMPORT=0 + HWLOC_LIBXML_EXPORT=1 + do_run "$dirname" "$basename" +else if test "$filename" = "${basename}.output"; then + echo "Importing with default parser" + HWLOC_LIBXML_IMPORT=1 + do_run_with_output "$dirname" "$basename" + echo "Importing with minimalistic parser" + HWLOC_LIBXML_IMPORT=0 + do_run_with_output "$dirname" "$basename" +else + echo "Filename must end with either .xml or .output" + exit 1 +fi fi + +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/tests/hwloc/xmlbuffer.c b/3rd-party/hwloc-2.7.1/tests/hwloc/xmlbuffer.c new file mode 100644 index 0000000000..b14622e6bd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/hwloc/xmlbuffer.c @@ -0,0 +1,119 @@ +/* + * Copyright © 2010-2020 Inria. All rights reserved. + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include +#include + +#include "hwloc.h" + +static int one_test(void) +{ + hwloc_topology_t topology; + int size1, size2; + char *buf1, *copy1, *buf2; + int err = 0, i; + char s[129]; + char t[10]; + + for(i=0; i<128; i++) + s[i] = ' '; + s[128] = 0; + for(i=32; i<=126; i++) + s[i] = i; + s['\t'] = '\t'; + s['\n'] = '\n'; + s['\r'] = '\r'; + + t[0] = 'x'; + for(i=1; i<=7; i++) + t[i] = i; + t[8] = 'y'; + t[9] = '\0'; + + hwloc_topology_init(&topology); + hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_load(topology); + assert(hwloc_topology_is_thissystem(topology)); + hwloc_obj_add_info(hwloc_get_root_obj(topology), "UglyString", s); + hwloc_obj_add_info(hwloc_get_root_obj(topology), "UberUglyString", t); + hwloc_topology_export_xmlbuffer(topology, &buf1, &size1, 0); + hwloc_topology_destroy(topology); + printf("exported to buffer %p length %d\n", buf1, size1); + + /* copy the returned buffer to a newly malloc'd one + * to check that the returned length is correct (contains ending 0, etc). + */ + copy1 = malloc(size1); + assert(copy1); + memcpy(copy1, buf1, size1); + + hwloc_topology_init(&topology); + hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + assert(!hwloc_topology_set_xmlbuffer(topology, copy1, size1)); + hwloc_topology_load(topology); + assert(!hwloc_topology_is_thissystem(topology)); + if (strcmp(hwloc_obj_get_info_by_name(hwloc_get_root_obj(topology), "UglyString"), s)) + assert(0); + if (strcmp(hwloc_obj_get_info_by_name(hwloc_get_root_obj(topology), "UberUglyString"), "xy")) + assert(0); + hwloc_topology_export_xmlbuffer(topology, &buf2, &size2, 0); + printf("re-exported to buffer %p length %d\n", buf2, size2); + + if (strcmp(buf1, buf2)) { + printf("### First exported buffer is:\n"); + printf("%s", buf1); + printf("### End of first export buffer\n"); + printf("### Second exported buffer is:\n"); + printf("%s", buf2); + printf("### End of second export buffer\n"); + err = 1; + } + + hwloc_free_xmlbuffer(topology, buf1); + hwloc_free_xmlbuffer(topology, buf2); + free(copy1); + + hwloc_topology_destroy(topology); + + return err; +} + +int main(int argc, char *argv[]) +{ + int err; + + if (argc < 3) { + fprintf(stderr, "Need 0 or 1 twice as arguments for enabling/disabling libxml import and export\n"); + fprintf(stderr, "For instance `xmlbuffer 0 1' enables libxml for export only\n"); + fprintf(stderr, "Those arguments are passed by wrapper.sh during make check\n"); + exit(EXIT_FAILURE); + } + + putenv((char *) "HWLOC_LIBXML_CLEANUP=1"); + + if (atoi(argv[1])) { + putenv((char *) "HWLOC_LIBXML_IMPORT=1"); + printf("import=libxml "); + } else { + putenv((char *) "HWLOC_LIBXML_IMPORT=0"); + printf("import=nolibxml "); + } + + if (atoi(argv[2])) { + putenv((char *) "HWLOC_LIBXML_EXPORT=1"); + printf("export=libxml\n"); + } else { + putenv((char *) "HWLOC_LIBXML_EXPORT=0"); + printf("export=nolibxml\n"); + } + + err = one_test(); + if (err < 0) + return err; + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/Makefile.am b/3rd-party/hwloc-2.7.1/tests/netloc/Makefile.am new file mode 100644 index 0000000000..80376cf960 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/netloc/Makefile.am @@ -0,0 +1,40 @@ +# Copyright © 2016-2017 Inria. All rights reserved. +# +# See COPYING in top-level directory. +# +# $HEADER$ +# + +AM_CFLAGS = $(NETLOC_CFLAGS) +AM_CPPFLAGS = $(NETLOC_CPPFLAGS) +AM_LDFLAGS = $(NETLOC_LDFLAGS) -lpthread + +LDADD = $(top_builddir)/netloc/libnetloc.la \ + $(top_builddir)/netloc/libnetlocscotch.la \ + -lscotch -lscotcherr -lm -lpthread + +EXTRA_DIST = \ + data/tests_extract.txt \ + data/tests_draw.txt \ + data/avakas.txz \ + data/plafrim.txz \ + data/plafrim2.txz \ + data/scotch.txz \ + data/tests_scotch.txt \ + data/tests_mpiscotch.txt + +if FOUND_XZ +TESTS = \ + data/tests_extract.txt \ + data/tests_draw.txt + +if BUILD_NETLOCSCOTCH +TESTS += data/tests_scotch.txt +if BUILD_MPITOOLS +TESTS += data/tests_mpiscotch.txt +endif +endif +endif + +TEST_EXTENSIONS = .txt +TXT_LOG_COMPILER = ./tests.sh diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/data/avakas.txz b/3rd-party/hwloc-2.7.1/tests/netloc/data/avakas.txz new file mode 100644 index 0000000000000000000000000000000000000000..215fd22d6a55927fd4b78e83d4559eeffca811c1 GIT binary patch literal 256372 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

      &OUiX|*wAxt zQz|&)kzpQ8FUAmJ4|+PLO8~_^H>;5)erPaH4@k3rQ2IjRXsl z%H!Iq#t0GOQ#4c?(`fx93>Po@9vwx?p&FBoAJ9H$>TW1#wmL)(65t`w9s8e~ad{(l zswuUVmqHbdlV&f!shF5n$6DWJF*4$~BuX+hy|lH2a2&?#>?Vk!jC}rQ+E>be6cDrRR9q?F; z{G!vboaV;SX{_pPB103`LVk#n5E@5YQqqxvzNH%k2&05?A=g(X!--(HC)Rt4j2^jF z<#7~S6oPY!p^y5>iwFi=jiTicm$tB@&aI-j^PbxRl%h41gJn?j#xrQDJZ!9onqZph z3LY#LHzpF`gq0g!?*u0~b9;=y>{f6Em^Pumq}MztSlFqItV>^H@<$%UY^w%c#~cdB z5OszYd^BIQOA{)Nu&tfU5p8H2Wis_%!K@aiOb7+sGLo&Rs*TvD5Nn?W-R3eVEH=JO zLqqb&)7FSeGBdq zV@-ph6I$qo!#+;MXdKRei~HFM16;b?iRmEPO0KbRwDQl6{P6#{Y$$YH-ala$f7bX+ zq}eE}`*u}}*YHBznIZ`P!;`#AL3MkdDXgjNCa>;8nsJF+38Ahi+q3D0fPx^6RWgCP z4<_+EBcB42PJi$MlH_(g57FV338e|7o#nB~U{*%V>UhvL&@xN_Tu0 zr`kG6J!y~z!nmqLR<%+6^Ok(vo>wcyLFR`-t&6>DS9n27QR3UxQORUe=jI`cx~=)dUPU?A-bp6(jhMWJUh*T@ zJV6M*^MJ>ph0D4BB3tv*Q!7yM)BHyp@_T&4oQd;tHx@ejvLAP&^J1jAmBNZ?!UAA( zZmH+S`(HPs>Q_2d-YFVi{vpDyLRP~a2)yGP1PyCV(7b;<=j&c2Vt96i1PaD_g6f*= zqkBK`9n3Hzi~OOeK~yD75rttB0=>^i<9+cd`aa5S+CaQZCq35g?;*!#86yV8v(GDX zWIs8;ry;3?b&aXnm!Og>Em1336L1fy!0~SD>)QdH^yb0@3@)!qxe*PbL_^U%bt%!i zyFMpCB$0VALHkDBXIHO@yZ1A1aNrNO7-r|IWb@mr4^-rz?R_5;K=i%0@H{nvOfa9U zG)y+W>y#vyzJbJDS4JQ78PHeivvi^OTCBDbl?F$4H2Pw1!VJ(%hOm8!p+ObmNz}8S zkM@eJ6-Vy)F$?RR<$03bvebe-1}qiU5f%nhhAkDjcA^L7ADhj z{{OV(Y?=gk`nS9)pJE!AI);FJ{St$pqQme->q$xC`b@I@t{k$6|3yO@$fp=_jTrAr zGS5^Qr*`0QO?VYdowhgV1f;+}q1o1=VReY19BcrqNnjRY-c^oxM0ZAbX}&G`Tz68M zCS3ivK-~&OOC7wW$4U63XD6*i_VUH6&Ku}je&=|4uaLTvl@Cpq8`MV?Xt1!&MP(1C zUPauq#vdPOX1@L9Pff7u<6m)r{AaDSt}qis8o!_ue_VY&q}-pFp$7I94pu1~1m6A! z)WBVU!y`?>Z+;BBUWg3NQ_gKwaFI3*?2PX+_6$;c5k{BpI#7?!Z>(>sU>UT zdt!~KuGyMe;1D0z;xxMC6jJeZ;B5Xz%Y+umKbWcGCmco1t^1qg1g@?YZVx0?sWkA5+h(D*5V`T8-IDb)_XCaGEE+MS< za*?L>Ge09Ca6RT@> zqS!&U?QDPe^zl9oAzvLZloc{vK8l0$?fz2u-=ybQw^T@Ug2+*er(ai9xk&pI9p*8c zilbZU`y%Xcic! zTk}p{-}7Cv2Azt)#R{i4f&LHEd%lQ^=Gd*#MmFk_DbYSl9{;leOjQHIA37-|h;)N~ ze&|@tb#;z0GF00L7=Ez6^*6&RJVsl}n6kiXLMUvIn>BKdV5al96Dh|W^({xcyd~PQO5GvJSB|`f6=s)9zeof@r9^;iYn$IO zvQRj=BYx2JgIt;vJFF@rurmd*54Cgqy%yM0Wur6vAiobO=fHMpCC~8y)FtoimKBh^ zPXg=C6rroQnRIOSU3xX(VIEr?);(BM%F^8-)VjGp3dgfxk5Dime8m2FTcaX#xx9s| z_!@*~qm-45Qub-LV%JOt6?c4ZFc87p+gm87?wZL7=}u%G>4|Hs3xPREqNIEtQ&&$< zxNqvfp(Nj(F&3GJs$NvT>>DBxo%3h!8pA-GYg${H>h&xBsa>w9Mf(#`=!glYJ(7n9=5k~v6p*T#J;A3uTjoOy=tBdnp zcnR62uePMXt<;EC@&M*@<6B?zxaaEXmgvx1YlF4Za3GJ3YK)h&0)4zk znDcgTQi==~lM8t{@%$cVc zRVo~tcP=bUs$75TzC`4(|0;f?P2W7xKnR1|gre%jZ7q;#f4lsSIq}toQj!XsdpYvP zqj#l#YtAXy5600NyyUwG`ABLfUqaXwNoHCNK42SR!#7W~^ll zI{A#80QQ6vdXa&Dv6uxOS8ViKdsEg1@O7p_{W+xFi)x79?=l^3CF*roTe{21v8Xe0 z^6WQvXS-dKGGZKD$Dm^iGICePD!~Se<3ZQS3v*8f^QgC*gKp11%1(du*YdZ3mXux1 zuK?0mOWkN?;F_H(w?h4wEOid&iHQh$roJq0ugf`0Gk!e+4{C1BnMdSG0{YvaR>N}b zOYsKin>(la4Hw}?2YY=}X)5Rj1BM4o40sFL^-AyOh@YIa<0!1736Xl{Y@td|6>W*8%7@#M8SIyg-!AU zjJSEvXhs}r$qY27L3|Rnt!L1bVEq7rC4R&Xh%er=*JDB^-RJtO4XI9yT4?H4Gv9jL zPCaE4f}D6E?GqD87CdwTYUEx+dUW{nYVK@GduCCzlEiq4OoB$#_IYLw4VgwUc{-<9 z)(IL)M1Hwu4`fNoa4i(>YgeN;A&=IdZ6517^V$t-@{&QCtA34ZXblsF0)5mI8ZI28MWd`KJ}-siHk>-g<38%B$~kG{jEAo@gFL&E9KAh!Y`X2iSyIB;v5Wk@ z<9wMm%62}dP=1 zr*}Y_e1w~BH-C9Xh}Us$dG65pPR)wJ-74Wm+67kNRvWxahErzrL)aOeC=U~uc4hCuYFxOq323x3$hX?% zVj+uj^2e%&AcjVHUkO!rBB#?~U}Gwn6L-=LW!c`b$|p1r07DH#08ip9kUd+#zm&q; z{Z|yvYBtKVSt2|GJqkpdEZ7Hr#l<}ivxnoMQR%#O$QwW7?xoq&ZwP_eljVz0$!iSP zVRTQsqn5}XPCnvsCeL_hgb=NgX36$kwj~*1YH^0zRT^zc!eutOTIcOd` zig)C=+j}2XE2m|==CFb;LuSUtwfFAIgvR+H-9~HYEdUxxUk{DI<^_eSkcf*|ioaK7 zha*U>hIr?$i*}9htD()^_F6jgHaO~mDv&r&;AjD<(e1%(Aw6pi4Z5f{ad@a~5#3U0N5LN~iB?HA(4TI1U7<6{njAN*Sl}2BYW~gkF+9d+E9M8G7?lk%R3$w6$i8>(3#-BR#=o zTDfpi&lUy!n3FtSI6qKWfyO+DXqVhonj%=$@tT4?U%dTVgFiJQ;0BE9{(u(FXn0%& z+E%WSX)repc6X52-x?zbrq6V6Im$9ch(ImE?5C-RBbvFNw&ZKqff~M9yRTQJOew*b z)^T;2`c8y-I{4B!4^*rt2cxE1n7r#M#1}RaTV2GS3@i8;7k^=@m6`J^vvQPujXA-% zXG*!n?Ly`7=#m_Za^a6B)5zud<$ekPtG6Pg7xOX0Zo%4)mP<-uFTEndEe5e@#RsHC z{5RXER2*h7kV2HJx}l;Y9;!wR7cI1~iN;;^%2Mt_yG@@RG<3dpR$Qd~Fn%V(9hyB}& z`cg_~fQ7a}smBC7v=+<48`lvT+aua?VyXZ7SplC>I9v)TUubR)XAF7+vK0vryze?zcdN$fyA_@p#l?OO4NwuL46`9Tx2v=Ye*!U?Fn!a z!4Q_SQB{s)I#{IQ=LA;?^TU|Aq;!Y;H>VU&AsCo;#QFgB9WZJhKl$?nn5ra9PRA-& zQQXNV0#yoxVa@-b_A)q2O2D$VUxuXnw~bN;42->v>=^y3^Mlfh=|VM*k;~E{bVn-b zwStNh)+Q>?Xo^1NEw>Uc_F=TpSvoNS%4Gzy$#D zFRR)kNX}qeK?!ofk(-=qOoBR)$plTkufn8`4~%g*zF)#)4Pbo#*5Nd{WjJfglqXGg zW#%H-`x_b~GYYi}iUZgZ3_Xi`cGm zGCQCQm|=gFygV-d*B^#T2Bfz$C$jwNHTOY)}-eONZ4}YqvBvW!|(m~wj zbtjBlZh6ZAbK?v}JGW_AKUMIds|rzI494WAu+R#p_X@I}`Ng~+Q* z{H6ujT6GUhucoq8ydsQw{T@E(-|u!X1+tW%<9~o;Qmi`d1hFZzGSEI<&h1z_Yrjnq z6nbJ($nnl$0+vWo@zO~XC*<4bwyLCH*idTFMuLBfqkC!(DQIXVdJC$z?#O{1dC3U- znz>l?D+>%Um7y0aLUi!5^`>G_6HCxO#|maR*~oJ2%KwvWEDZgXR0@gC6at`1-}ijo zPYby*`klyooJSmi&YA==`XG4*-wsAKZK97)vMFTEGCzivpxX)Eh*Y5^#>QcxEowZY zzQJXH2XI{CTer?5u<@z!)Y-xSRKm7bmzIorgy9B+|y z%_BK@EfFnC13*|1&vY4L(8N-myGK=Ku|)3SaSCm)9LTris=VyxfsMso<=x@%V?0K_ zfu-GYfQ$hkU3MXYG`P&wyAC3*ex5NrZxJ`MO4V7}YM|6QE&PzdxZM6C%WtK_#H^bF zUg@ztvc}LQ!cyaIc4k~6e5dJfI=!WPN+d0W87*stNDiav)|Ea7Um?LPURa)sF3^nw8lU^(qR}IE)da{>z#D^?dbW$u zqJ{0^3mHSa`JA_ID}n-l80z7ZLBGmYaKa#8?h}>(>>UI3nQSlx_qt&r|N9yH-W+H|$m>l(#3Lf5b=y)$nn|~uVGt%s8KMhbdAv4V zf7VA{zrd_lCrsIGx_WA7g)aEAuEuVD;}$(tYr-WVEHM3g^lrOY2I40Rewywva@2$I z2y(YTo3Ks=b!e&gO(>(gzNLwW@i+9!z9T7OB4I^x;=JN_V#S4~BEF;yQQ`?_q`E~O z%TLIEytr;e2m*NDE24(177`jN-Gz+eBl6(y;inXP^{3mZprENg^X+BZ)~k9qoRN6V zim)f24|ktWZCckgMelOVUdsmxp8q+eWk_v(IPHk};qhOIksF;7uV|6*ghL*uAUtHy z7x(ws^R=2EK)4ih*4?~fybT)lw)ZA$5r6&zq|(jcah|QN(unCNOI{pl@E5_rZ#`o@ z>U71mJcFsvUY0W;Lvl9QeDB1pP|@A0MA6>-#FMPy%DU(zxhmQbxym?)%i*HQuix(T z4#_4$vwmqcY_>g9zqViGk?W2e=W?--4zr9~}1`l-oXJQYw|Nm>+Kry%|5sLfjC_4rs#kmKELU{#9p$?h?L)E{P35k){nZ&1y zcn=IggEfS>&BK(J0d#|Tt5AO2PPC06+yybT9FXU{m8lUU74jw#2~7BbsR)$LYgBX0sNpwCKFWx}T*?uT_wg zevlf8H9OqsV3B-W3W*OUmEp*w0veD%BOhG^J?yYyjJ3fka?7#o-kJv9KqoqL)7{+` z;NCc}((OrF!tso4t$kNRUtM77t}yr`cwNrt?yl_S4em}66*cYcJqJDB_xtshi16y`Lb&W)bo>zBpI_f3{YZ1RA?F>M9N_xWZp zirMkfX0s5}oDk{pZ=$Wk;uDm=atGo%;+n6yr}3&D{0ebRlXLKALV}F|`eiTkj}^1L zQe{u1;VDWZTDOETSzsKrI@Z1?Wg%E=;s2bx=__oEr?y$9fN7os<&*&o5oE1U7)Ags zO5aohmD8v25TpB@{tqvbtYZHB+b)Z6kM4Uf)H2Y_G(e}t6gwn z_$!{YdVzeVG{P+HyBvH<(tpJ*Cp+Skn^LBpli}dAc~cv9hL0g%6ft6xJ&-%m#p%cD z5c7m%+LCLl00dNNutTJNE|(71Q#f+YyKf0-P{C30^SzI#)0+1|!J#ciC=h7OBHJnF z4&4xlE;qb@U#IFXZaj+H0B#O;HksP!qY1hz%f3h*wUHV2oC6`*1 zh2yXNqjwjgkgi&4SXtGn7|{V0}$~!6uS{mO-tuz`QRU zU!fqsFA8HcoRkFm^4C`<_y3w+J8#cD(Rf}=^)KbFdOW|962e`&5=PT%eg6yA)-P`| z;4S-dA#d2iF`)URY_A=SDTVQec$6n#+vy^O?{2WNpkI0bJ-0cAra`L$@Wy0d>5~xk z_1$m{d7q_7*;3>Ri!j=(??Xu(rL@?Jx1`0ahUC82tgPkJ8?XQ&gBi8+a>6KOv)mcH znO1pFA)Pg=Z~`ddHn(so7T>IHxe;!Qh|0g%aIl4WP}q3u+dhd_CxxSC2`h`k=@e!3 z(Vo4F1!_xhWRO+)o)ZOO-;r9upFppBKE7zPZw1xlpzyD-R_1 zx{Q}o645;|*F`8ZeJDZHNSrk+uKQ@G-7eE-lq`UX$wdrlfzKU;=MCB_?!Q78M)fx> zpnYN9{+YgYlpbUhW@pB5L)xWSO&lu7ktV4HY)-NA$x1tsX$*W`sHZP2d2?R8CiM!= z3+nLSoVUfNS|XPB2Y6pBUOz7~4VA4_HMr6&E&k!@U&Hsu|Rs8$+w~j68IANm(QWMF03O&S!`NIqr7{Al41(-~wea$^7Ct z*fQU|OV)>_9;7mkD@gRm=vdv*+y7WyQlCc>zc7^ZOcBg1lf?(@g-@EIE2T%axHd4qo!oL%X^BG&5W?EIyu+I#6MW7P4bb=zLfe-BoTDouC z=Z5Y?wDO?4ZY=JDncxjvv1xLcChkyLpj-*}dxx`5xqBKgyuGm`KIuHs|jC6rn} zYg=XA!R9G$TrSIa3cx0krfWR3)V-p1;LtzkeiDsk`XhHoot5R1ar%9)wkTfGt$G@m zqmj0sNS_0<0kyv}XMl-3y(vjz(mH4B1;%Z_fmNZxSS zZ1_+f7tW*q@7>1SmK`PHsI#OW{&V6p5Xru|c!S!%8R6eu@~~0zGm>Q(DNi~Pl^2oI z&c@WT`b_eyZi4-*?9ibMo4aoui@8lg#KMg?((8G$?W8W&+Z6!F{t(3rhp!g@eX|*v zZ0KUFh9R%dvT7FK&x$MQ!K>S#=g}Rj0AG~pP-#?*tNZ6dL=@K|@B1W!Y)v~TzKyr+ zs@&HGJ8lYE6pp>nLOK2+3f(+H2HT%fo-8_xFmczYyvpXb8I=^AyH8mGCl#57Hd~6X zuBL|s9HHskI&<(bB_Ad{fWD`Rp0y~Z@pCg3>ks00N9)YFT~`?M(4uu@I!^qxaL@_> z%UepZ(enLT0#d2KlLW60PqHSM7oZRxbOs9YHFkkb0F!@OYmR{^TftcLdaIx_~KJYWS5zr>%P ziYCUO`lc;#{q6wx)49Rm!e$djN+5N=?818N$+9hCkqv0*Y6_#94HCo1ny(i_5R_0k zF|s?{l+JJ{vZQ=IvpvNv#zvs?XKGU!VmYgO`zY9m{_AG6UEp64c}fHB3mJ84IxB9e zw>{AHaBk?*>psS<1A;3_(?=~Ju`GvT7Gha|Mh?o;vL-S^?fWk_j5?bQ5){i!muX9=w6#pgWR_Igks#;bM!3KpE{jZP#yBa@?UhT z`#l~%40WPS-7C_~#W#FULkDV}WuOd(ak&eg=Habr;aH?A==b#fChfboFY6Fb0rF-X z(k=|$XWz^z%lx%V5}`v5reTp0EkHs194r$~pX0a&Y}8{U!@U_UkC5jPSNx+{xdQFm zZEnu~!E#&#AcO4keJ2sIbx+vP>EwuhXl=0{iSJAg{2_tJ-um#tpy=ODqEf&AiF{Sn zJ6iOp^z|wXsRs1&t4nb3k3RYbcYg99j}s%?%OyP#3*niz%|=k9Bv;ain zA`s?VP>nM_UN*kq_nXePD2kj*CG}J=n03gNvNGe{DH04}f`@6Sxl)~vlG!dEhs%J& zwE9bJi@VQp8#r5{mu?t{ZrD4?UqoaL5Aua4ul=gWBbk_AWoX#RpOQ9n`M4h?GMOuJ5t5L4L+%+pX$%RFVzvZI4kFgb>n17g+ zlmZ#fo0#KcctIA0Sqj+ktM>W)Ssl(|yYVcy57DQw;ZOK?IJYjODYbjfww)YER6*?} zX9KiLSa{GuY=v|d#<6_Xi1=CDA{L56dTX(XspH;tRuu)=o2Ld!EKgt;a`uHldQ~7I zwM7!AKhO1+lkz-@#4n{HH@Qb@-RLwN;!V3a=)APHS+Zi&s(lWuTO9z_lYKR?T~B`# zpX7)PhKPVAg_?pfb4m6&Cp-`GKceUE98k#|C0f4y+Gd&~Mm9;%#aVsst^5+Q%w=Y(qp*gYW`}FM!{LaFeHkGcDK=jBxwWRmK zcJQaK^a#eV#8)+F3scSphNj*}^sRW7tCq+&dHs7kFC`g7e5{w&_fqI0J>Gt|!Xh&} zH?;>vj8yQemYkQx2k?1GwSnShueCfX?Qj+GoCIoz>{4;mjyEB$Rd8XBP`x(zztkdU zaX&u0mgxU)SIuZ69OK}E$$_FQmv6QpCUDu6oRkW3adG7r*qiQR&4;epaTJoeh`)rC z%L;Zl^KPGhc4IeTucb9VE-HnA^qA#}l2@#I7}KJ>jhx{F`1W2!%W`FPb<(q4-D573NTk|=yCc+IBZ1}{W^nkSL>h3Orb)}y#VuQeefdO!#`m(zGD4Iq_b-c*4Jj4e-5V!0_&9iK0_yBW<-Ga`yfQdG=Iu z;n5Rrj)LZ;UraUIoJFVkvm7P=?Q^If1kJ_5l^m-i`T%u3`;t_yvgx=2ul)!faCK4mQ`F+BA-0je@5imrQmJ6n;~3`9>{cq@ln-7#6h1=J=$Bftb34u+z*dR;Mz9v&J@9c7s0O@k*O`#sn$ya+w~ylHIUNh-`ia%G?srG9`;U$W z-=%1TH$Z4(CKjZw2~Rg{qD8|E<(S%_|&Etxmgko4A#$!0k?j z;nH(Q(oVJi$Lr~qYZdf)3FNkYG?ygjnzOjAek8#9XI?YL`*t<8#aH`CN%B2kDMuiE zU&2uVRT+tdPm<y1Kk$x>0L;^$VFtuW=V+!ldjrr14%z%F3kX6hU*;s!*K~J<);p zF8HQSYvV?%_6mv#g9h-mUMp56Wc6BYgrnN}6D7%Pyut&BAfayp+g$y=mT^^l3Xi$$ z@|BP!8KE3<4X;Lzz%nHrG2eG(dZM^O6<*lt{N4){jZ^31bp3Wtf0y}lZKgqXhp)P# zBE@uj95M`E#p}o~I2~FF4vC88rW_b)I1)TSC=|7)EJvu?)byNzcBbc@Qcd@tcEdI= zeW+MI<%=6=B`SU%I-AgjO?)+vmf08PiW8}WcQ(+`yb2d#s?V?X!ztdYUFO#p@JoZA zKlYz8uToezlq47W{Qxv9CBYu;`7UrAgs{3#LFe)R;>$g)j*cai zx@_i=Fh*4#=IV3p@(I*s4vCt^oXc7v3|}S0WN&0DHXmuy^D=O+=}MHDz8@2VJM@DBfHC#9+Sj2N~FW1KN{>VeA%nP6agpOa=R0b z?&v^}N>lLw_rrhs8iXCl+`OBf2%2=FVRe|e@-8X{^DHs(nn3apd4FJ!QEA~xMiWqH zwB9%sK?%C?16~Sm<;T~1yY{PcbOYXoqrhJfUKt&}X#)r3lzm3wQq%7nB+Mg+Ttbje z$R{Yr_Tg)fVRDi>iIQC$H=nLDJVbGRRPMgEm5_bdo0FEWG)X42fG)uOeQV)b|9}Hz zgPQHzWDrc1xP=Upy8JE6TfmCh9pGAGCHUIR)f=PNR))Qm`eNx13o5M=lS{QE^B&=j zgvZ*@gMB3Fp~vHA+Uv4@UVOmEhY-RMW6n=HSMMG_f_X{&JbR=3g)f)l=Ihug^uoof z8w{KSki#?EqPkbyHLl8be$RL4| zz){>NO8imHy=k{hc{QL9;cR)1%@dNsriLvjqqSf~S#4hkt6MvI1Ef$tEt?V#}A8vWSA6`rrplD8G6Ydb>dncdQxdZSQ7rc6-=cE?Xw03Fn`jB zj9kg1c7ON6FgcZw6Hw>r6Gdm;Y>gES_U;%p>h3+T(#wW zW8<%Vjxe`VeBlqYiDa|KT<#EAQuHplq6!Pl4m9gy7!Nk$54~MUIc*sHW6z0ixcE%z7tLDbhSb+=Q;-i z2CNZvK$QuE2DzR6k%kBVAYOysc5`y$-%l+Tz(Ud%9IG-17Hh;LD|lx3xg5BAKO_6y zq=Di81de#0DyoZTe(-B&7$9MNNc}kIjaax=X6HBe^8`dEnqZA{W&iy)d_zu?) zp9=rd?1WL89<}FimtH5&&YIHM8>Yzz4}T;@KT#wt*mVm?B;ZAY3#(wa8ci#c5H}TX z?jq;U=MMlaJ*%YyN~zui&NfInaS>lyc2wxw`ejie?QQ~lEOic~n2ucNuBZ2>;c1zR z#rDoMnX(@ny{+Tn*v)htI=f^nuSzP{r7{Gjl~eeNnlVv}Iub?31l zJYTQcC|BL^6n^Xg7pf&Oaq6*VnoJknV|eK)L@*Rk&n`YIu82D=i-o2k)-lO*5cU~p zAA?Yp48E7rIZ^Mm07AF2GaL~i!Ibd67TRK~rN#mUy(@l?eD(GaVMEBmlu?y{P%61q z;at1j2#K~Nom*(9Uxif0+CJsmUC6V)bw+Cbj41>zhWCcA)4ekq((JmUzVs$dHY;V6 zepB08wwRTRrjR*SU<1ZA5H!;2&{X7Ebt-ccz=!7!UieN3+&}L#9 znn)urd6*cAe|k1q9t)Q*Uqu6kT_LK^_M zTQniH4!!%ozj7m*REH;&@uu%D_-G+=%krRkz#q5$?wVbv5Ci}~*%){?heEOg`yH5t zXpwL)i4n|`&`;{BAbl3(*7PX!M#K2^2)l6LF*qS^dQ0;~p(#aJXpd{1rGw9F$MiTQ z)EFQvTb+cC0(}{abRh#&1Y6@stBp*mK5{H$_eOMDQL>o?IT@qlksxHgJ!8O*12pZg z$xDA##7WGR48s4b7)oJI+m_C0K|U6Fa@BWppWiLT!yHqfTzd&U)4rg)F&b|X*Xfp_ zQeU7)@U0!>0k}#FVk8@wNNeqrb2SWJz#mJ+1o=+IZiPnd{m8?%3uMY3bVI}_Vx?Gm zZ>fk$^!I_SBwNfBr%ILV02>%;hBXjewZnerJZ~4xN>UqJHU1(O9ISdq0vY=_g)~l) zt8D^%bc%Ie_e9o zR-bb|1n}&C5{bn(yWiL7f9CnTJ#8xr!P`&tGCZhiL%zuA4mQtPUXX&6t$A+W$S2WO zr&xaD3d|#R(1ZYAUC2r~QKUqvlsS!XAO?ve!%j8TcH7aj>p`d$fOfGpjP^lkhFNy!)r;uB zeR0oTX80y2P1ZIqNc@4*K4vbfNFE+7$t-K0Pr3qfMeIx`;`l0wRZM_QFGJ-4Np6|KHoR10Ol+It|BvScUy>@>?GSIMKbY-DCPk}Zv2 zi}`14r6`-*L-X?6=iMz>H#{X|2FPOD)4S^}vL*E}BC3zZggNSq6)AQl5Q+jQ{+uge zocS^5O;_37D!Hi}TuSpGICuB*hicnE^_qT~!LN(!W}hrk>FT`86UqhA79(eu{1MEN zNVJl@8?hz_G%%6k#?&UJLSLUcIY+DMl3YdLTrka%bKiQL@) z^m8a6)Hp3gHW_d6?m#kN<<(Eb)*eq$SwKxlNkVetE1GY56UW4*wvsKw206LpkwOBY zF+JvOC1?+1PJrDQPVC{*A`cXI8mPMlg=Ubih5M;>*8G|V?Da`WE%|pueD0IAw=TvTScH;=_A3=-or57ZdBa& zJmAZxOl(oK#N;&UCMnay?E=YRoL8}Wp=-!-OFO$zjL0n_c5X0oKyeYe8p2LDh=Bb@ zhM9_UH^&NCSTuTLy2Je39j=m@dy`zfb3#{pAU>SOYRl@GG|4|`?e$o*%SBEc2Hdst z)j}v?NX{x!M>J~+B|;W1zH)-?&>1^9?wvboUDrxY37`$Oi^NNTEmo^zR6o|bp zY16`YeQTL621kB9 zX`a5(9>s4e*{O!JPY8 z8SLIm;06ctmaQm!v1O`(i~E;UGmj;qgI;A%)Xg&*oLk#(zO2AMSOR7n+U}ax^v!wA zY%OQwj{G6iO_W;5CWBcsM#9M{NJqUAhOF`Q(})k*sT# zFOCzs+}!p`c!alud_!(*j|kuUSomNMhxul>y~c00YIa`1kgfTUSzGr>eX3-b<|tJq z>&0{>mqS~NHMSd2DP+j5yk>&d->WnBj+^YPA}=m&48V5lUWq+m>i+T?=9s}im{!f` z6E+&2WIH!8j9B7C$ZKvD`s{yXeu^?w1%tV2d$A23BHjk5DxUx$^IplLNhB?15(Xqv z6;#H><1~zy3Q1gq1>^vrNvk7tZlnX*9*z591A!~xaPDO75vRq((K#_J(Am3Ts{)ZBDSTX>?zYvCNs0%Nw?DvZgZb9a#z;7LiJb^z zMuqxHS@du|zdw5v?4?mJ%$BsdA_WB**b5Hou710qA(b5(<$z6}G;q17w2$vEKlP2M zTLdZ>wi(x%aR^B92mb4v2Wt_C$~`CCU&*^g9oO2)&c7&HL;XwJm0CWT+u34R0d(Q1o62BQm58 zn6dAY!Zz&QfG0<078lj}2Gbo+K1$1gM!z(XIxkIFl`=3w9e{Do73M4bP$xAH?AjjqQjg;R;LKul%fU=f0-uO3|#Bqt{zIAV7>;C!;8 zco8Ls;w6tLA~pa|K(N2pU#QDwf;HJb5?N^>-mz{xFBt}cXdt;AsMFbaw*^n-c5+2E zvTSGaZsdY4tMLR0rbY+IXgut7x5uyQ_ zvv0#9FV19s-NnfGAJ3)@RZOQNQ7TL`RiP@ddK}9-+|JnFN8I>Hj2qI&$Ab}(=bsQxMT9%*t^ue6dJy?eN@8)t?GtB{4fsG_Ksb7DA$f}C)lJHT;F$#A*+;Am+Te70-2ur4p zG={`yR&#cs7c+Z+QmDU#JmXkfnPDPqI-MNO-=1Vl#+~6)MOuO9xS%5{HbRV~5|?lO zgdh+BChEul+^h6azUn{ERKUhz!9WvyJfLC{8uw&#-tuxt@B5iPqOK^a25nC%taF$d zBk{d;lJNvI4ap4YX01vu!y;+}RpB$JloS@Z-?5MCEG7}tQ02sI>tX_V} zy`k*16!t#aU#Wq6R#S>&>Z7LYFdKBSoP29eeTbA1qZ>?Low-Ktb4YU4+gOtnUFUC( z25Tg#1_Maw*bwi??g0F*waO>suAP6*;u3$&X%&0FUy~O1k1)*v8Cy_%Acix|g9q)P zj1oj2UFSQEZT{;bKwJy9X5w(B9z(i(_}Bzj4pulsWcoP{U)E3!mW}__HksT&erL;; zW?stvX`kS=0c+PUMCmQUwi{zeKA~SEeM`yYglzOUlgoR+y(xFkxqg0;dcXfrM#YAa z1Nrcnip4)oJ8Q-zeZ#c2p#6)27H1ZgR&44lkJN3`d79JM9)Wd8$&7qzhb zBvu>!$%vDz0grO9hWM9qS?_(1<|UbhT(ja04rnp@a&&r65RvU+*Z_#uI2aeD8r{7Ri26*Rst2fN-i1??K?VOOojAR&LuOpJM`ooZot3udp1r z{njH912CXBccxqGdjj1@MbO!=@{`z6iC)n4^~>+<-~Pj|a5l}4;B5ONlA zj})QblD1dv#T=&Vg!krztgh^c)CD{S8Q9s***H`8N&^}mFDv&OAoGTd6qUt3U z9dYIiZJy}VRlEZ;$knJ0eL~T6;AdmGK5SNMlpUx^BY-q&Ni0y4{(o6qrU%cQV?Jn{ zUBSZih%3Ks=Sv|aPe+o8H`foVG9jeXCfIg?ay_W)^bSh&-bHNqwptQ2N4G0=_kr7} z;ZchMR(Z6c>K%aH2TjzL>7>Qkl2Ld+!w)Q2W(c(FN1GWkxW< zwH)Yy#rRRdOcn(V8zsjFbkJqUk%@`a7Plt^CF6*@i^6#%$G>+qhDqXQhe=w$eoNBw z0!60q@OKYV&`LT-lY(YFVtIpd2FkO%+r2j(tH7GN#5%Y9R&{|+8h@6|jM05pbiB=h zN2x+V+B^w->}e9=aB-U(NWq)IW>B1nFL|C{GuvFT3)0{hzR3y1F)W|O>3>|Y)r1A^ zuRrv0kB{VXe*YPge|&hq>oO&fE`;T+$)UY_*)f_*;x^Ugk?dIF4*j_LHzw*WHrq~l zI+vKdD?dlZ-s10X*fCUps@E3SV`x6#EWBn;P%_UvQc6p93G%2BJ-TJ|w?dKHMNzvj za~fH!igr{&8RoU_*y$!@dk<&60HJiOKM)UZU*!g-? z{vqHUG1zD({0-pNtUHh4A*7aoO!%?E6dyhpL^u$@R(Uy990wYDU>M0*msh?dnfI&j zNDp8{JIM2u+{5U-*YiEXww?%q) z^w9)fe4&`WpHsxj?G)K<7VdpG50uno7HkzN>51PbE!6_MfwykjdZLLjw`!8g_=QfX zFwQkckuXcR1P2(jCNG*j4aA#uM_{8_iR@|q&G#);%1A|0tC&C4BEH~roZfjCA_ct` zi3WXiTGxJvS1md7Jo2D?8AzeV);OF9V)DX$%-Jr*6t%-@QB|2=ClLgr{+vD zp^s4s+CVFI>Bfn70iB^}i)d#W-LdKJL|R(kU{IURD7>rzckN}t-<}*oL{P|Z69w`k zeMC(1u9GmX5ZecVt5iWY`AF1MX>gS}^|v~A1+}7SN_RZi7NSQ)&T`Zd*Q-dDv!bu| zWNT=)aA6Y~)}`&{^1Q}$S)|nV(;vZ-po1e7<0BT@RhMTXpoxxu@P27PGnKT=l*jFb z{dXczcApRSiNI8hLKDZ0z&^;jM8cC^{RGsiUs|O7iCZr};v z#yqQJd#TIj;=v>*LUT8IgvD1@>~IG8BPF^z$q)twt&W~cbKmU`${MI>CV=Q*esmAO z+)(7-4h~8u&xw*jm64D&)T(+G{3Bn&T1c4#q34w%v3ml@-|6+`Xg!?;q=0G%?# zdYa^swT)yZ2(JzrIHH;AgIGPWM@)AOjY`Y0IIuNfh7TI2`io`ArSDuJ|2Rfry;Jay zZMQkkiP{}DdQK5_%i~Ys6r!4}umS%yHH@sRz21(wYC`8~ak6Bc< zc1qc@MS{rKjA7^PS>AFmrh$MY%PetbGBy2CHk8XG$35ZDRyO;us0y1s#!|2+hOAnY zcyjkapQt=g6PwMlea!Oaw)Dk12gxJ8)(V4WchBspE~3GP~hJ=#kp8a#l0M z^{A?yPX7S2C7DP%$06MIj(SL76wgt=DoHC%=d}9bT_`P&(%_#8m8Xhx2HDvMpL{&Q z456TbqHr*C4Cs5oIcSPO);8+(ruBjGl4ks2P|Eph`X4+Y#)Em$nkTggqCLXxRKeGn zzt~)x)iN@R9*ginutUWy--T~g#ug>18qglu+4R(0-`q4OdGRIjhs;BI@>^X>alMaX*t@jSrqIRS#ha4fg{M(cQ|G85B#XnN^1kssduot50<<>nPpBATkQQ~E4 z>o*n)*Y@ z7|m?r&>AP%w37_o(;brJnHuwXUF~?zoe(TfNt!g43;O07dR)fZ<72WG=L492x0Xmf z#VX#lvTR-h;-6wV6W@D+9LmOt=;c?>?Dq5C2|LwvfN!|Z)y`)bIFyQ)8xm?I%lg-^ zYhh%g^%@o$@$`}HWo)lFg}+{xb#xRWh^H2;<_NH)o+4jz=Ha$03$>3#y1LbGMp&#h zGN>!oGnZscVM^H_S=}d6FB@0n|Z(A&AzZd;5VI?YJGV zl7$0^W5yCGd`6*QXw5@gfqrrgUITJz3+K@}_Z~4@GWZ(7eM(@G4|E5PPIWq*d14XD zPowQ;2#Hm73PPqho25zmS=z+~(-$!@zV7R*MZi**Z)Xf==_IF^GE-o7lb1Z>jU5}? z+s%|{p%tcY<#;D2?pS)(ApmPY-%`K4M-o?R{0yh znnkxeh+4{B*Ig}{cJ%#ehO4Fc$FjJraHTQsENrm`nn-*+GzcTQ0<*yxVX$1g-AKdp zVe{C3UE3iGi+FtZao1)3dI=edxR__Ff#5b<{DlAJc#n zE)wwC>o^jDV;`YrkoA#oD&(an4oCN%9FoL6vKfHV@No*79MTBGo#^}*0Kms&@!zd0 zRmM>7Y*j-FW1zWYZ9~k}K}3%DV1UWmX;$-qzMXd2Yu#IbYmZSJ-;>pqRMs_(d5O^! zMXWEE4nPTBU?skuB7UCV^Hcq%?~cHuG#9s*II%S-w?q5xsrL> zPrsGdacEzvkb4?V{6ygk-Y4@_IgEBrlr@sfcFM<611X7 z%*W;ODa1Db;U!w~_2j3jP=1|o@($@+Q?L_GGR@8%e}W@W z4(iER(wShG$A@u*6cYT6+r2C02nU$(AZ@(JtGNfH>6MXfx8Z0-VT+h)7EEC9EfXwkzz`^IT}$XIn4Nk z-WDx1L#&F?+1_>9P@%LBPjeWaP{)e$tC@v=FfuTbXJLA`a+C?$r!jf|=Cb`1;>la+ zvzc;!0fS}}Sef;7FMYlh!bXIylko2t*l=*jd_fDkomqSInk8|+ZaXRG!&>PZ{HYL_ z*Xr$z@xVRhWh7TcQ=%M&HA*1NDN|*Di?Ai!R<@{%aw}WxWm&V5wUo!woN`+{kaONz zOh=$@X2&UUS^qF;Y~a~^Y{(#0U3;L%!A#U{#hI$r-#)JAxh7_ah@HN+A{X*vVL&2woW!W1??muJ8fydkn4Aqe~jB{8NxDdaqx@QGUK(}5P9Sc}L|K*OyM0ThiVYrsrI+%}YDRaAo4 zL0cCML@2e4+13B5CkWGFaYb0mJer&b|0qJ~;(!!x{(ZNoLJg(Wwfwk7QY@`>+) zTLKV}NuH#Rk$!WrxjVLW$|ZflM+J;x^D0|K;e|*cRANi>#}~u+M6Y_68OlnsZwxws zarm+L%OFyrilNTu$W8W?wbW5u4(U}9-XN-WOzT(8mLqcEb1>aF7{AAzEH-vQc zIlW#6q_6*wl`qL{%J|8U_{f^U6^S@Jd-ShoV%~X|_y!t=uuXoAGui;)_nTE@HMIvv zF}qp_LeD+hO+Pbk?2+aDFG!49i^bzME~hlb9_uOL7_~oe_W><1)J-kXp`=T4dJA*a z>8BijtabWpubmq_>P1xLMtjV8Ro%$@a+EfqVLm(p8Foltq`U_`W#nkOGnPKQ{ zP)WFSm{?YlgA(zvs}S|?Qv}_AY?~Q$bL^12NOYe>t zqu25Hob{tgo&E*;!Ox$O;iUuAvjgk zCXdQ!e~4D=oIZF9rH?d8^&dn?&q4OsJP3p3?wv$f71&L$TZye2l@f2V@|F{S=oS}` zm(?aSo+LM$MlKIeh98EK$%rF&y)VP~8Obj*M-AYh_5r3L^@Oy3}St4 z{m$@;#m?OZ`6-TQ#*<1+R&OMU??!v}QFj17rEsgE5v&`TxMh6)PFDrV{O8f)N7Odd zp2C27_q)~m9*-nTA}rH@10FWTg66x?zwZkGQErMXDTsmP-|Y z3l8b?1$iD{4o;SS@0L%a6pW%z1VPiMJjuUNwX0p=M2$%Imy-{R=H1|~KDsFx0V2Sp zKVTmOb9d3_e$)cTkX*o6^=zqYr!i}?fqSd3tn|;?s8?zf!UMUGWbL>nuG>%%VjPOc zr`dU^hW2QWQF?;{Vz^eAln<3?eJ#ig)YZicP^|!qtbe%RRGX{x-c|>| z!<|_$&sqSwZIHd-qWJY`G@Wv<%@$y{e3RUHA8M2FOGMcrr(^qBNX}sC+YZoUOC6*@ z!OIMJj8V&3;NmSR7G5{!@w2)};Gj z)IkeK!Rb5ro8ra{o@Sv%CqPJA3u<4Nj8MKLaFqsu&uYz{)^_zE2-=teD;8=@9jmEE zy<7RH&$h9z%JxYh%F`(=6>D_ZVN2OK%L1e7vwwu6jGk20x#&%3Hd{W_Pd+;+6;62ZW+*L@tGb zp%-9H+m_NCY{&`wmTqrvigKGm4wV^_G&-u8km?aD1wDM%+% zmtgs#Z?qWS7+J6q?~i{Nx94%%3TY9<6=sjkEt};P{!0)FT^@xhA1@X`obT)G&bKLq zX$KlJMw{vOTr?%3nof82T37mo&%a%Gi@o!2hu8?0a&nq>7D#hq&hNB8{xlPbZnMC* z+|zo9v$ax-UlX-;3E!|50o^_trlsC00LT-OhYZ`FuvZX$&_SiMC>1O;^B+46C?sLEjb6}9=t{?M;YZI1>2n>zCFjs4QLEX(eI&GG;*+@W%4VKpJETexJ$LS;O%E^u-=HYG87fue+0M;S?`AqqSXEH-6@k+&zf3JF)X9bSa33?tzf2GV_RVv;0bY zohbFc4jSMiM$KZHnBZ+ud8LHPE9~Ix$tLHn)s*sZstiBZ@zY| zXA;X|Yk)&_Lj#-;lqbqck==M%s0RQZcTbVSQE?eExj#N|jKu!k)r$t}nEDyHAc=83Q1p=!PXmHUD zFcb1b_xB~w#r+)X1MDor@#mxhOC!l%7gsa{g(Lh&&ejq%3_``qxC>dp z2bd8Q;*t(VtB6ARAi_;%=;$-g8Y|+|(cE0=x_u+GY$bUi+6pKZ|A{ufy2ru~u$ndZ zUP7@x7IJbY5Dr1L^j_EMxtwwJMT#AlK|}R}ScyBQ*)_s6ko`Xf^2>YtOQ}3a(&{jC z@%_LPJ9wm#KtF;1P$4@*FD#|Lq1op}yVDh8{-jOfGe+SONR=CWrb|b#kg03?+mozs z)S4U^ZHo6StR4*SvZ5D0unZ%Lpr5xOxSL@)0zo?@08S1-*x#*g%hvW2(+{QAEYu~dQU^#r}OV^5?rs|3}LS=%`>sXL#WwFA76gavCvw`f)h=Q%D*>fF5x?`n{$pL$sl@J(g?4-uBL& z1fi4d;S}4$AD&jg8`Kg0+i^J%G*?G-`3xf9eNdDX$~s z=p+ehI&&xBAnJsY)Mg@0n2n!fJ?GomkqR!V5LW|vsQnAJKd6p!RDe-9Cf>V9T zPlhB}gwsGyS+0h%R_}=M9_8BW1Ge><``nHVCt8`A0kRhwB1I2Bg=dCQ7+kX;EdRgg z?skK^ZJHA#(@%|pI`fAqg?>BfaATCH()9bY?4<{S;jCThgAzev7AJDv!Cj&lQ?hKJ zdGNe`6lYdo)J|Wh*2ig(%4sw>LPwtDVL==E0FsH{jLK=00c@q(zmw41*mwjp`$Qx){ zI}F+XLSN2hAj<6GLR9X=JFU^Wn?)H(_r)9T`YHWxW;e8zfFLTp4Qr>5i)l1si_B;G zufRTk-=e!o-^uz~;}{yDz>iU`b2qt#BAXCni+rU4ZV7<6(C`F^8{%7h>}CkzLQeEFWlV z+X_+LhWBS0E_^aiu`31yM`{*i4pZ5uJ8Y*{^@v5)&^G;$M80&EMD2-M%nTWdlzEck z-noB;$$KuJC2xCbaI_I1deiMS<`N8)2dKvr*XV50o zq0D^bDumgGr#oF8W4U^Z@&zpy{aZ(BHDP7Yj#vd96fTcMgozJrRRy&W>Mze6uFtKW zPgb0vMS4Izy@Z!o`a_sL;mUx{vX^%h*^79L-q{qyDR!fAGJ3#M%9Up%OW@y<*OMN9 zDE9=zx6VC!Dm|=S>LizqOlFHEFOKgMctQQLixdCoK$QfWvqMWMXgh}M>@FwQJKYdS z^NsgM1SduKIz8pf50I%(hqA(^!z!_sg8(E#g1W!5&d)PU;;h+(-LdJ(EnolVg>Vln z+%ce{BFB6Z@X=yHRg5BrcswRy56&-)yWqM2{jF^EA$}SA)L?cOYXxH%K#6}E>|qfr zwt99}RWx#(S?M7)W~Z9qJ`OlKbxYkO>U=9w_XXl#DVqtGJ*#>-B5zs%U+^;FVJbMO zKQPc&X1|Yz&Qhe}qYPRb2I#_r;VV}37;cJWJxtYUysIs0;!h>RbnD38URbiOokpF< z6>HIGRZ?E)%!CL*yO5Wdc)i(3b2o1m2R#s(P%Tf3O;EMY%8aWLvm?0yK=8Bbk^9iS zyjCUM+=UxC26(Z0yz_-br@JNz5=RX56ZrPXnUn?1oYWj6E<2ymgGO^Me~9Pvfsqp8 zedM=CtV{@WiVuP)0*sMbUQU5RSZ@RT5(+a_TDETGyZJq8ffJXq_Oommc6QmYzWxH^ zrq{4j;mYd95U#iXpvoZ^&OZ;P{HSu7@WuOh!5(zSyQm}k++s1fz&@PH2sn&#Fo9QC z%7!hz?nkr_AB+O^$xZS;MmSC(T~y@S`uBN2eIzHnE{-L~Jovm-waG{N4hMFRUGh2H zv?)VyAK+fBWu(c!)af#*uYYTZLLZ1QLkSU8PCH`@0^Ub@)DMf4J<3&Et|Ek0Kw6~w zV$M)?cqsL2{m!8$XY(;RRQv{OC?zKitLqCpzPfjPCZ=mmZPK|gQdUQOCdAXO64a-L z%GS;c8^YRyv83f98X*Z}Q#SCI@0Oc?vx1M}2*o+})aV%~yvT|sw(PWR-S>(3bxP4G zCJbZVo!boD#{K2?=)CDx9>XYr=FbxKt!k>;Y}g5epBXu%a|3=ia*^?k?rma?OVb@2 zo{a3oZQUth0aJ54Gp!W#a0wL$5Ld8!5D=p!1HlQc?h7eMNBBO%)C_NUYk+e}998~n z3~J4C;eo5E&Tu&Bjcfeo=4rpd@O7Wfs81SFlCUO^K4e`c`p@8wmSKvVVzDI=-bDL12y zQKT@*GSB9%R?#?_Zl^&m>VRdFjKovJ!wPqDSj?CNLv!uv6AM$|JjAtX zvtYZIh%SAV-$(uj+N@v24OdB*NMr`V}?2_|K(S8J|V^NwvkgsO8_116gs_>ayKKWy!nmz}l`0Pbkv@ z1PE<=DG!3?Py5aZA@G-}q)`9-VV&ztTK(dD`hf^NDlhLNUQ%-rJ7%&W_O3CjjK(<^ zlT+@WFC#L?kO>9TdD{v&49L-9-tn#k`Ydo86sg?(^3?6Ig>~>LW%liM&^k;_Y+dq1 z0$n>NH|8|vR<=1j;fqy)LH#l^Ea)lR*F_)<66-?QEkyZ~H`XWqT1^pa$OiN3ML}sM zoZ$um2a41HU0>JbM6{nNNIVRl89^2g40KLdXZEzsw}}%`qJlrj6@0O0v@hWGdKw@M zss9Qfw_09uPs5$K2h=bZjc3KmBHy!mn4>Ni2Skqqv14t8?=r}xCl+VwDX>ZP<_ZB> zWsEP*WW3~9TP^ltnsr;y)}E3EJNu-&!F?B&)V7{Y&$=00QMJBEZVC8Ms^90}p5%h4 zz6{J)mb)r|dN_CtWBd$vM_qVMfFqQ1^!fJsii%50kIM!i3xV z(@*4~&GP^IS*tf!gwA{4Ifx`uR?6<~?fbIy_{=$81O-z8ZqF>aIdDouWoV-z2PL+k zzR&)LGYWvqXAZ&XNGA^v- zaLas=3X%J3f!k5DMf&|^f<3q1j--IsdF6v#j>J+>QN3cxCyQ>z=3aiy<9;C6*uweq zfX#7dnb|(!LN|(ba$M9o-Hw97tR~KsBvG5_l>EF|&2f!=8&Tboquc4Yc%-QNZqmj9 zN9=}y!MMB+BalG5otxMLv)y5obPJ+4K`@WPk!MRpwVXXmsp{ztclDT$lO%B)EqXqV z7XvF(Z1vI~40jSs*%Tl<63%~0s zUge~&B0xn()aMP>LgE^Z1_o})5W)$08KKNdm*$~F`zE65xn)yTZPGJ!bnq*mFW<2I zwmVo97IR~(2ik|rjbJQybPh?v4RV=XW%XRqV+=jS1MQd!Ikhg_Q90`hzsY-PEbQA* zWu20U^1vR1#fmLefeE>jBohDEwyh5*U?GGk*3Poy7CtY?wD!bs4o5kh#gzIcc%Drn zO3u$%jtoAC2rp=a3^>vu#m|o0f3v5=j9JueqL=NI3dp2K8NG&|qTUb46Rqbcf@AI6 zaN|{Rc8+_=ZI+1K2*Ss(FS=U;f!+2m57V8n5OU*w8&SFy*u4%3|G#A5StIIvr*~r zJN6!2!RRt~0dDim5X`eEK=4R`uvFNgo6EzdF503X>>M)cVWSYjgua}8hhI9@zbrm& zW8dX)2jU}ek$dVhZI^^CLsI>)SU7Y_2=@X4I_R#N_C0+I2m@6m>%0^Y#n!~C8A9^u zSo3D>;{>Y&`?bONV?IV7t6ofdX=({@;s?Z>`W@pund*lS>u7hRSw71iKQbenO$XmT zTuu-#M~l+Zt|yJBe=7bHUE$zs-68J|$<4%Gvs>WxFE` zM>Z}J(0qMNv;%F5KkQsp9gECCJ3emIPoO-iV|9;XVlrBcycy-*Vo)5D0?!0wHRg!YMNA@}!E+!TvdQK9z%N>~lty0MjNw=a@EA4W~b4=IfC^9$@`Ff&z zFEKcb{D9lnCTSt#(GC>OOL|afX*jv1&Xak5@|QD*w7F5;#cXB=eR-^L)SHzZbn&-O z@95~TxU-xt00L=(LG;pO)myR)%fbZ(RXZ%-HBzrc_Wh4~@%eZTpk5bY#&7aNYRgM4 zbA@iNKW$zkDZO>h~gp}Ah$J0N%@6pvA{n3j$tC`A(o-Um?eMG#N2>(&^| z6Ou^>)AeEPG@|8G4JS$QMT~dK0xPr0rwO17(+06TY8h>WIPk{;TU z(8fS|rxLNBh6Mr{a1rd^SuZ(J9MA^K4<^PvBiH|QQqy-p3cM{r+(uKn{JGtc;|K#@ zA~5abaoN%YX&k%Qs%NdY@5GqwvZs~*2t796|JJELTLx98jnHchla*?*gexTQqiF$s zlfVg@_wF0&qZx)o*tKhmY~s)z+9ed)UMdmZ7hjUdOFY+u4z%W;oQjJSVoP6X@(5i7 z75kDGu5k#?^dkiZC*n()1EmS@wmnhUlP&|!cZ#lb4Y9|WD+J3m-tlX(P4zftILG+w zD}+}4573dGgPC@jZ``oc%^^7&LoC?azYRPObck{l71xTxB5j`Z&P%3{ri!IlkMc@n zz0yV`R|fLw8DEE4aaZd4d$HE4dQ}gZdKS{$9pW2RProad~;>0fsdm|PU| z`?TV7W*YI}N-I2szD4E?zgk+8IFl*A{3Fp>Yr+;M9Og9JcutL=B2gD%SFLjS5Qs0L zx0w|>deR)!XB~!+T_T72T(HK@w$_Nz75w}G)rV=MhjdnU`iL;>%c2reJ@84Yq7>)Z zZ5wZ6J8w++vfWRtw7L^^nGTH+tgL~QcYK^vX%(sT!R*{X_mN8$Vk$a8v>;lu4dOx2>oWTT(Pr1YNeM;5Vu?(_xGJZ4n#j|JfpwS}xUMZ68y1SA_4n)wBr z30vp&cZc|h>YSy`$%tNlIuAlLOn1~-&SKkFcXJ98k}Os=-P=u%qSc8PwrhcXtq z+%3;&#UC(1jVjZ_0Jm9TzVq#VLkaCr53{9rvnx z+zmh4LI>R(cHK@4i(pNtn=uw_9ubL*Oo5WzKKr<}-9Du9q87aw=vic-w;UY3HQCXY zi7`Mp9t%;rO*z9LW+0+>Q`l~|My6?Ey-!e6_xp zN;jPcqHiRMJP+RVO{!%{$qooOr&`5Xuh5$4<-UxwG~^qfj+&%!MS-*$Yl=7k*+rLB z$cuhh^QYn?pAWn03p#VYPUb4N_ZLKVB7Bg{I}pcp^Hor2qyFa*+9-hQQHPj#hO7dS zd+)D=Q{XrQ+JD~cZ1!opDEyrvZ|R*)0F&Mcy2k##@vqx1qq!YSIpRjxa`G2wl;EjA z71$j@U!fdGYwmc!RH;&Zs*UZp)Pj8;xO&27T{ulm+Cs{HDgDdeqL2LDJP;7)o?lf% zSXbICI5Z4Z_bJn0_?;|zIzMr6Pn0WmN5*$_+<&Y|l*wT@&v#P8lOblhD>u0q#2{Ce z-JvewN8YR24Wdc3cPdcUxVrh)#1D4iWH=xME#E6!G?M_>+0kmPO!yWP)gCgydM-VW z2FuWqVEPgg7C74{f?)~GO#PebcSqx^@HC63xFu+qu9|9TLRJ+}q{z|E<(sa77kW=38iO zd=H%bz@`V?kIqDonhPH@AeeJnn4-gn`__$XDjIa{0z?VsvuCMs-fGy`^f_ZIqP%K> zpymm9^pCF0H@LF<_~6^E(+~vdqe=s26-&}CDXIn2N!}bnS_ArWH5G%uU1uWDnaPbj z=xn$w>YXrTuKvFeg;V}H25!3!T$EQd1wwl2MI3Lh3jDxaI~gnX?ua~QkQV&(E+x%? z7@C-Il_4zr}J0nGYr~Lm#bHTtL-A16TJAhm%_XWX6BATr;0p^c2 zoLTd8|EMyaLIVWzW3%3k5oP@S^0myGG6sSK^_2`-dmxLkBq(otKzoTA>BZF24#>F5 z10A1UwNT0s9Jju%Rs~!yEy%rA7PwR8YXSp39kGFVzkV-B*5`1*^URU_r|f3NR_Iq+ zERY1SyOTbZYjxE(JXyetRcE#-Mj1fi4i5`$0r#+2o~H=Zot&uTy6d*7K&;v3H07w&xS2*7DF5!&kS`s7B9T8-rMf-GhNZxqpI95ML?-N9gI9O8hadW2hYSzbIw#2AvO{7YI|T3vQoU8GE7 zXLLNqlN5pv-ID*FP&eQQS+lV7gGy{s>Q2D}GH20673xvEHYcy>h~Y`}k5Cwp`%E|@ z=@F*QCtB@2m)EtldC8uFI(N3|KWCEx+aH=a?>q+<4we%Mw-91);Q3H9E+0t{n&A1L zR-Qi$+ZkZvZhue)BOBo{Lb@E?aga8K0o03B4084{2RmU#pbN2z3ZWY!5wwY157p8g z>FX_Qj|fvTQ6Go_c`n8&%Th*;^)B5q&wg5_KFtbw+$%%BJ7GNFJvH|-$tq-$Er1ag zVV2`k$Mc{#yaKjc?Hx>T$g`qnfrW0DeDz^v-U1qExUAO^%Ip*{5S_#-ramdP`;+*= zbEx8m2@sfFGEsjW?Ax41{nXeJ3oS-sIP5p`Lpj>LZQO--JWtkTPO)v3`D=g!VZfn# zh~mfJp!ql#xwF-)Nag=}HOocDO&_%>;P>A!UFw(;+kC3-R89%}nE^O_EJXj%%3k|c zr0=l7f4A1RVt(1}pcV`H0RQzeMVo~;r~~h& z*z;rGgtJ)20}(gp*%eack%+f2U5O(cc4+8ftrRMW9wuVmnwg#>_*vKu$HJ2x`}O@9 z1oI*$jQB&hA#SZhnGA6JL(u0Ma%?Za75raq;rKYHCHs{rEBAIMd4%ha%%o7^=Y<$U zU+b_m*|1%{DsfnfV@NcjUl>Zf82Ln=r{Bo*2DNGoMQJQ0IAdmRVriw$VredT=whve zECmDlsP0r`P(Rp}Pu;j}fe{`IZ6a}gbp}=G4p0pnfGf?u+iy=d7La@No0c2Gx6DJR z;IrHqrT_ef(8F+iG3+}m=^GwA z%N|kCQeJs^&eTK%J#%*4ohI07b~dJIoqp&s(Sb(|{5b0-px^hzbGNC~KJ$OYaR{-` z)1=m%FN-bRRq%+|BO?V1U^ZsF1JY-QY5Px0+=R(HWq8ZsUROp*K>mgN;qVTk08YNR zF$7#ps%8Pj+*3S>Tz&;j#O{AA@||SG{v*{o^Ln#G`Br6)mw?i_xtfy&+>E|>Qswyym zglUSI3g)@J`)h`-{$%g#y|zz1rSiSy?1Y4Y>8OPEFd%sEYu;WSrIkRf+P0@~V@!@{ zQNwP4c^A+pOq9P1m#1gpWI86k5Yid1uHKikWV(!rt}1P$&f>pb85g9xz;)@jHm@fr z0g0*YB@Q49wLU2 zo8A}(@`+g@jJYgr^agTg#$O;5cP&SdG*wCeoQT37W!V1-6QW(iLScPu{0d+24o%id zCdoRsbpWogOb#EjMB_{9!X=go>$$_yo*+hFdwPkEyyQzB%S_9b?o&>Zla(cDZV<74 zDf?$D!AXD8U<+T8{Q@`YfH>qgLvV~|2&VOTx-^OPZ>uEo!rvK{!BPBEDJ`WZ!rWjT zoib14&GItQ@`Y|6m4V^U<z#Owv7}2USKP5KqjHw6vzu%};H7rd4?RLsqdbC5;2RkS zzLa`;>Trz<{{D1w$Zk^#SL@I}?6n*IlYhoouEhpBgWnRCDLt8XC12C4DTD8Ftk_j% zkemH*Iv1}IEWgR4-jX8Bv*JpkF2mu5Z}1iS$y8S`MONgB0s*9`in>>J;&pQKXg!yN zqIm5t95h+)xhq_KFYj%|c3o(7Q%{US(+;gnvqG#^Op*H|=t@;Q#vn1!+8~sqD8Yq4 z&}kCc_C@b)G50Rx%-Re*T{eDuHWr>kJUV6kuaw^#)wRNs=X=VH1sdM=Gg%{;x zcbK;@1uU_{Q08U&dYYrdXAxmPn%yu}E}5%xye_^1JVnDSC$uQd;@(j?I?IWE>R+BI zn^7`Rcbzpr!l^5l_S;gmW34ZQufgH4=f?gyk9fVU1Or8AV`cDY9$DL%;LbFll)LRc zGSw_TVivVDtk4m%=l(<=ZuK*qmU zoCaH)VB$XUP7nDG6em@|_FS#Ui?3TZ5W}G4c9Ck&)Fa-q{@C#C)oQ9Xct@6%&h}nN&}>XKVpA%D;J)f8xeW6owtf z-Y1#Q^fc_QDPliYQ{fsxU~aKQFo%Jc?^ILblb}ePf@uGRQE_FNJxK+sYS5dQx^$2% zfx+X5Yq0E>?*QkeKK$@!Wy^!`6aJUo#o*Y5YZpU{Uo|2#RXG+}9SVu{1jJdag1KBz zSZ32m25XIB6nWjt>=xV6HUi{@pqO(F6~cO;gSwxu8GNFS7wHCts6b4mmCai>5BPJG z_BQD$tMiGCe^F=FEqTEHY~GR+Gcxamzi5Eb zm%xTt#QGr1iB^G)Ipm~)uhIsOo(#~%2n?Sa?=wPc<*bOI9wzLBjP`V3o>ebM!o>?Z ztvn&%<{7_`E)#XmM8=*DMooN8$C_fR3R_oq_LuxNn#>b@4c6u1obScM^pm}n&Y*!00tK?PD=uTn_ zg2OLvy;Kfp@Bc2+4pcy|&ckxPe+cGGh~m1_>y50YQ<^8<8@kaSxfN4HQR1m`HCQN! zkhAjyQ6)IH;E~Sx(4C0sVci9<&8RCHgJ>#B2a-Y!CK?@D=NVS%a4HK%c2jOl^yQ|k zZv%lgvQ3qQb9Zgxge!s85aqAxdB#WK^LBVFg!KYl)bO{&F;lW^HK1n`kifAK_%DiQ z8GRapJS_w-vhxD=4T-}Gmq++WhNGB}7$+bQLxuP$y%kKQhz}#X{M2`cF1FYzDDeJ$ zTg?-yKfb&VZ%vY(0!cM<-yNGjH4AB z4#5>jk5Nk^1sK2+9{_1oX3%2@{3>xW#9PhZ3Xnhu-jNF55jB3R!w_B^(CrHD{z^fg zK?zG3$I}oz@5A>N?ysnnT9}wf1J7xK3FC2ev)^Uj$kBF6!NR}TB4-mQU2-VhHtEIS z*Mj(z%JlcB$TH{*`6?|6|ID}pD1Vk@nerJbfBEwf&R>$P&|L*`;)OrPf!sRx&~TJN zI`}j;>T`8yRgQt$Wc1q4Kt$qsI<`a2Z1x8Gx z^b3VdmeR69aAoYeoL;oqnr`iLVCxT5kyi4uMw})QiSCoV$=C3-Yrq8Z65E>{7dg)c zI~%4NfJ!y*Mi;Mm^?bl`VO(GG1auxSL4?N-HPHTm67A|M467cZ!mTm?A34vV&X`SY zz+B!Ih=5N>p`WM?1 zI72hC=6J9;rpdh zW;|ew`RK{i`?}?3!aUCl zI3O+l3YHlD%#AJz6kZRR&YxhO(?|Z zo(FdhI*GXOxq_IKi!z(f0edW_6&4|xu(W}xY#OdF^Y_5Me-_%6T96(e?KiE5P;gwF_7u30p}e?)1Ya(;{pos6)_{QHNbv~RcxN3z z@}RdWhoP~p78MB=1*JXaC$(RbADSh+2^T0ey`#!4P7&rtGedw-h$zzJQFQLW?m~Xd z;nx-2UMsgiqVxuZ{S8!nHV<&Kt2yru2J?B@*ju$;>Fl|BA0BO8o$o{!yO_vjjMaY8KntYCopN9vLmxW$48$(UJE=*7ZF- zUJdM<=ef&1A`#S$8-6c-l&AwqLk_QjC@8~E+OX)PTtqYVC)foHkCx)7MD;N5s&-SN zR+aia(ON#kHlOosS58}{C5FYe5U_5M72MpApk0&)P!zw5ZNLu_j>sg6sHwfo6hWq$ z!>xiFpWvECc0)`$BLjG-ojBw_hW%)(`Nh-GA7UUZ+A~flpQw6bS#_p<<|%NxNgP?D zMH;(&IL>f4Y3Rl&XZ@b+-y20sw>!DnXuFaf@zgu<&lH)QH>TrVac$C_aT$886momB zThlX-bP3y0XVC)j4G^-@J!pGYjl)Nwa(elkyduDHR=cCTarEEUs$fY2>k4^Mg56u+ zZ3^nOS2@T+CIa2`5iXC3LOE-VpLwsP@*P>ozKT>!T9Q3;w!X9O6|tToYy_E`nw0s1 zTf_o=+_#k|<1#9xqeJrUX=e8WX9nc+Bd-;A`V&OSzIVQ%s`vMnsnvf21n!#ZRviM? z2gJl(;GIJ7r83AfI2p&CXfC|Uv-=9npQk_L%JC0{vg59j8K&pk1g zbZK+)fi%gYMA-B6#m`nxT2xzFAiOZ#H^T=?E(5hnwUmXBRMr1WdB^1KYYJhO`7nRF zZ(Kr|k^*b%1B&2$6_VLg-zruOf@puu3f5!I`@FTy)O%b9YXEIcd=^#|;kYkkS5_&6 zbaCT_rH3vNh;F0*_b|DXlcSHN)7^vbLB#0#8@$_x1I?5%Fc0M^+iIqPF@VU>fd*2b z5!<~$$TWIC$UpzU!-qqF-60WRR!Ubp9-cEIv^Wcxu&kL*BI~~O(lsDd9V;0j4&~_5 z^u*Pm$J>Qv<>ZVH&*Gg0qw4k`=4#0iBbX<2Z8A89hjfjiC-IDwQi?>AeS;%arN9p2 zc*n$=JR`a+Pqm2PrqlP+4ann?vcaIKzYdb}us2Dj37?TI8oTVq-v3;={ z#2EFq-VBl8>p0?{{A40d$J4wR<~*Fk`;a@~>8F02@LKWw>muK;vdt?u0TR?G!?*a+ zW_&yj*Zy{l=~yK3&(#_=v~#9a+}k$!r$rHqy?Jdqac=uW@SKBd%-C&_e17sG#KDUG zugqbVKPPPT?u9!V-LN7`;sCH49|`}x`mS}-@zDlUvLUK;3gaQ5-qp58Z{QdXEWx9f z8ODLBPF(;_oE2d^N&^<(jmA2x^bLtaWluALx=Kz^RQ-Tk)f~{BNgD%44pas7S4859 z$#voiuqJ#Qdzy|%>y0}m`@}|mC-cIg3kz<)@*Y@3(nSw~o0_T5b{1A81=gf402_(+BRQwVD$azf6x9M2g1QSblcE1cQ?$tEu)07%|jQL=&QS)?jt>UACJ4Ij1i? z0%>)cCYl5ShqE>#WS+>q(DQcO>;4Va9c<;qnOJo;mJ2b`}Y8Y7v- zai;?KrEu706Pgse_fYO%mlJ~j4H4`ZjznMO;8p&y#a-fh(r>{{l8@TdRX{tjazn#z zXRpEdeSL$Hj91n-h7I6>k#azkrL`^x36re__@WF%BTCng=5egCy)Nl^QjCeq5?#VK zR@-;%0cVG9@jBu){4DiI(4}wp_hV|Ar`8lx`EDPceY)>#BZIjmRQ%NrDxXVkQjmu} zjG)vR_#A|Z!MCr+mxX>zfP8ms8h1GDBzvGT>vZ^Rzv7C#2}K1tePVL?Vw1C|J-5`(#k41C zy*27{XW3r4yc?DjQ#_N8c)wHTu2c?a6qkWeK&_D+c4QF=2Aa1zgQ8_f3-ww1>}^kA zIynEtZHJ@Y4$kUWg%2&>y9_`U8IV;Jii52whJ)MCA-0_c>wJgb^`|Gf_?nxtGjp%& zlB|4p^nr}HVdCLeV!872y)8D_a~c?-9qQuO%VyB;qS~e$xEm?gt>Q25VD#f-@uN;r zxe~V3-r}rFsDN)c@%+IgG}lPuC8L+>{WgB2jv3WG*Nx`KiR+vVpUi1UFR*JR(TrZ~ zX-!Nap34eU9_lkG*VZ>F^e73%8!m2KW<`M4jSPb++(U$FS3b3DTUY9I5<*6#=WPag zoaDYNBPf)rUOgR;ebVAL(#D&`RKXZEjfvXBMfXB8s_r|5k^3y2?6n##xCo!n?yV8d zU^hv?%Tq1;#pu5Iz7uVw@|Fm$q--_L^Gp)cG1gtzqj0;k29$}lZ_Th`Qgk|WO4W({ z`KRu$eOaNRIS?b#7E6+KCWhp5abdI52Q9lO8Jz!SLnIKM!p5~I;(lY~qvGfrb< z$_{+U4WDrN6cxjcch(_^QaOSVT)in&k9It|sh40TdPE>GO0&!@hxO+Vxa-N@)TJ7K zTRu*p#A7V7GX4L!s&L;F?6s~YCktGnV1?kn{BPs*w z)VF-#B;^^{78UALVO1TC1GJ3r67>H1GAOl@Yi(bSK4cnGVlR1g52s@Ke*?9@oYXBg z`TVQl2;F@&X1W_!d$PR5Njr)MAO*dN_dgY9SNBtjRZ2*+>`$qmfLNG5z!>eWRg9*) z$)@ELZJHa;1@ldTkJ&4`X5b2#U@PX|mdRP>!+di3;~VnQ$Q2L?v6W%lQXPE*56eEj zLs|U;9sMM6VHxX)^$20zeOhVWGNAnOux0p7kf9Xpa1Un?x1u#H@}6zZ8rOuP0_tTh z%TVMv(F4!NHqETajxX8tM2h6j9)gO4>PQ3@SB<964(g+Wtujc2!N0zfDrTbV+SLM8 zCILol)cdkfhgy3C7uH13ceCGGjXJxMjvn0Z zf%MhFLRPVlc4)5SCr2is(e3(Jg7O&Nu}=^jikvpp}d>>KkB2HniMSie~5=sac(i`=HP4M4>{H$y@s@}A_WSZFA)v%Z7q;A>@w6Q zEwrti)63JbKj_^lyvJ?w%v$uxTK zs~%bb6M%>;*=o_?(1lWG9?4<)^iGo%?}DV1Gv02l?QxNK%;CRenseV@=bVe6KU{r8DE~*MKz6n&#SqYgtWnBK-Xe=3YCE1po z2SwJS^?ez&LQuD7oC6(9cRPCmAFMENN3nqJv4i-aC2^J&V^y5xZ%y27s2`6LDrkj? z#2JR#%o^j8!0bGdqk`(^w>GjAAe4o2?>g9Q7B)7K8q)85!Ya|`Iooo%BW4Z&WD@33 z$^#5l%ppPpxi4FQ+~|SVOMI^x%st6{o|XotW<)KCo|W8jBYopsN@)DV|t?ZdHQf{g=jjif|dmXbMz^4GY0 zP@56X)-SYWtfRn)TLO>ubmYUEQ?3|bxQ^r0Lbwb0U*PelHp0a)>iUH=M5 zt^B4#p?J)j5{2OC5$z*N;$~q>!e*wm9&O)E0{~fv)^*iJZtRy}_+%r^OHr>0NVz;!Nh|tet`CD}+}Ms#j3t(JtR8UR zf5vfZLT47ODEMVjtS^(1EJIt0Oq{R!E@7PF8x+0q4Y+dGq0cyr&b_R&%jr<80K5)X zBm%4MQ$Nvst7U}GNf)?$TXs1jW67_3q;4poQk5-h35IWWT_Ee{aj=f)Bc+W;gc@|A znayO#+5i6>Yi>a3C1(h1K(>5gwz~tQB982)ZBG)wpUNWZ!=-x^E8VDZC@J#}>^*9U z)<8t9yvmSQxS;}rC~$YvdP1W)K@eLbVFzDv$qxTUXr~|Sdq%L#;9hEOngfdttHN2H zR4uHr3gJG(d!iNyUv9Pz_Rsa9R@7pIJPePKx9Jhg(t&e8li5=F4HDu@?XA`JT${By zEZB9P*ZZ$|MImXz=!zhvxq|VQPq%^?&8Vep?5m}e%v*{a-Krp&x}#@$L39iT1AYE+ zx8idYU3}dqnKm<-z;3ec95NYUmDyW>R_~4g9X9Pl@jc^!jmNC3XtJbkhmtpfTpg>9 zC!P*!y$ z%o2Q|R#P<|0D~~l^coH)2KyeR_JFehWMq#KShi)iC4)Xxjy(d)YBQyK_!4K^wfbMi zX&P--*G_1?JcL{kr)hjv`Ht~oieWQ*Yw{@b6M-H$8E*_mtp!3S$vUUeb!L*AE+LOY z_44}AgupLTZf;FDC?hM7!}OfSMk}1(XRs?0XZIM2r@3qH$dTFH&h$LnDpL_0#{>d9 z9Leeg@u<1^)GP%2Y~JlFJS#2Qumv+>4`R+1v-!W~GHYT*W^SORi7aH=;MSRK=>dT_ zt*Lztr?xApp80pa983Oiq#&Mvt&3HcH}g#24kmdz-U$H(f_hk_GF8!=k$!YZ_bh^$CvoP(4SD?gj4eq#JEef~k-Gw(2% z96Lsf^M&svEUkRs3$W^_8Q{C*@?{tKbR2PnkWSw?ABp^krUhE@MT4!Vq@V^=&2Sh{N9Ckrt%?S$(o|Z}wp|S^yE29w2&(hQXQ-{a zFnZz#eJe3~0IKN>-XZCGH(*qo7e3iKC|Ku8!M5;cD8TnZ#tL#k-A0l-PFaF$$p*m< zON#8*8ROUbSq@_m$b$?o>sNeh2>V_g^*~z5%M0qyutxA0=}ntCL6SEMPgt z{f^`(xgfTw{*WFTaDm~b7Heoc#2w#a#q!v!&vdyHZ8MDJPByrh4>Dns!q6g* z*q+(*>0dBU$5#|PP?nm72E*Uab#|IH=k1DtiYaK?FmZjPetfzu)f- zU2}Fu<&>8YDQLgn4{%0zN!{h&h>pA%ZqfL1eEkHaas1QmHlT#VPX;+0s0Y07^-*Hd zHsx3aAmvlw0+TPTwV4R8pg&sX(fULi%`9q{`*(h(%OJwxcL8FOUE;2^@UmZUP<>$* z!rS*c)dbOks9*?>xJpxkzP)!WJSTl9I6UO5wQv2wmePn?c`{T&j-d1_eMP5Xk~v6G z?noe{3vdu2UmBbx(1|J}f3;%Z(|UCdN|e~N)C2BwU<8$Al$y}PEsSQxM{EsEF?BH0 z;UY+D0U0ktX~P53CNKA7C1@7H*9}Dw%%fk#FI%hVGy{N^y(#He9Ev$)x`;*7nDfZR~?dF_sQBO=mYe|hqZ=HllyeK&%1Zeqyaj{wucqMd(E`9*1aLytB!IVMar~W_QGC0It4n3 z8`(Y>ajonI_WCHc>)6_vty-&915)Mhhe3k3*yEIlq)Q?^F@xG;Pns_bS)MsU{p{|@ z6y{cowy)a-&Ac)Q5eK2}vsA-q#b4tmg8IItnu2|eNw0Ld zr!kj8Tg|xM>W;LEhOHnN|8KB{UqL9Dl#Xh6%8XX>Dr&GNn9W|7dC1cx>>ED-n3Y5i zEJ;$c{i`JoI#zCl@Vy#GCABc4Vv!XmQ#5-|XjvaHlq|{P7af2@;mwh1Z*-G-cpXgx zNbHuDZr;suktIguMBvF8&p}$6yAB3d?KMZrc;~Q-zW}gB@gtldR%?G0j71gqPmglj zP`YkJRdl%YqtTQ8uDGY}wD3p$0hk+|61jYXirZf|82M$1q>=-Y^ohZruVFafDBH6N z6-wXW5J{jh4C5@6dOF}l|23F_vy18+oT^eD*YDBy<&!l^5SG!o!Z)&eE^wXMu5i5F zY-tW&R~wgX5s?@x!<~6J1bBjSg!RyKPm+CQAK7Ai>0pM2e4QPoFzJR(-%Q!enqPX9 zql-0Q0^jo2B+t+OMoN9g-q;7S1`(w72h7l-b_Rm|SDwIF0yPw5mza}!lO>ga_ zj_P~#L3#@TP7ue%O4l0Yr|!FVAnZ#>aL+Kxi0hv!re=1 zdzNXnb4#UVOw9~tnqlV?zK-B20!O>VZ2*>aTaiY=Szt6iUlECXG)56TE}S1JSTXT# zA_BQ}_>cj?u+^tvx#PXVDUnto2Zw@(;qI>{1adrP*rT+_5Ik>@wRy#$LlR*a635<5 zQka@Ldy}ca@<#c%bU@swb~+=#-!cy+c}E{%zHbIxHQ=hzIb2<%%`1;>(lbFFd|hAF z#SxoQdo|#bF$}sQ5VaAVb{8zh3A`EJUkDk(|nnQ#C2eCKVNFc7i|t zDVs$5pzwJlhMX}es5}&=07Sc*z}Zl;k=Pq|{1Tk~C>pkivx9>wFZ=M%x$P(YJUw2T zOCvhDW+GrT6!1z(yt$&_l4~|#6Kb`teAyI4BH#}d-ooR$dwoZJ%{_08%rSX4$* zOAJ2~4d@C+4It1dS`3^45T;a4*Z@YkdfF4z`r)g>fZ>19BHIYa?x)`H(P(O#B{B&EWq@tY)vYUuujQA$-t|tp; zhwEt3!vr(ak@DGr&Aahj7nSr*PRpO5oPo|hteqgE7|t(h?W*07O2;r=qaw|o$ir-b zNz_6zq4#-PTr4hp(8@54wa$HaVs_&MeQkz~`;{e4*$eI)#1_I7k!#j8cTL4pJ(LcP z{D@~;nEY(BM|Fdr+PQEm>d%R4N67wMYOIhQ5LnFzP@V~ts67wzgc-JzDJJ0MoqIHo zQ#rc}O)~vwWa3ho4=q<%yDPW%?}Pfoou$hnOyb(D(0KkH;7;rs6F=(*Arfn;U8i(9 zmmT%$n4RDT>%$S${{}0uukmW{V4M1?0C2tl18$~<41bAaIq}!Hbj2Xc=BJnY0&Upj zCEnp8oBDSKA^zeJ#swS0OZKWAKA7MvlS6#ykWE!BFl5H+@tOOo7O9z%MGZmBe(Em7 zptUN^fS~8&2J3re@^a;0*O@Cs>(PDGMM_07*rbYt;x>*61Ixr8gf5wirNeA3C~4gR z2_3T~;na*aL17d+VLigC@W(ks=mAUV%VEUHx&#X^%89r?g2u~qW>yw@$?_gA3sRLK z0z1KD&HRWtAZl2Xlcf5GZGxK@-j%n!&s*+BVn<;UHSnv_MIopS$bBUS&?n8ih72PD z0Gb!Z-sno*l5i&n36Got~&9pY}j?VY3lw`!o?C< zPRULfEN4ysx(0c`F4b`lYZ5(BlcP%1EXRdx=S?G>)Ak{>vobq@?cYyhvow0M$t)yr z(t8O{`brH>m8q{iB{reW)-8jTEElzbM2kYh)J2IEjX$2I#=RC-Af%C$_)LmrNskz# zW+$|i25~W~2ZIW^@O3O1vad$%NIyeGMZjI3%Qhq9N306LJIwSkguX z{k~m{vi)r)WuZF9W(30C;_&hTT)D;x2;Hs#5&jV^Ym#ke+B!T7wsbru*yTjkQLC(d zAD4ER$q6=h)Dq*ksKQ4xs@d`FdC(91p!oMEK_y1ERBcLHVN4z<0QVkJASGkDa#DgD zW+a+vLok4FX-s=`QU=z%nOXz0OJ@jhjV|6R;(&cYObZqVjFrBH7Q9Jo7ccl?m6%h2a1wGG!rq9o$P0dZLoRgvdyT%Ir z3TvB}oFjWjh=J_pB$sIH*bf2=y_#7|9>2X^4FQ2p z=iqf-YI%QPC0-RVwkk2dqzQG$pX%rj|C%IBTf3{HrTz6C7+}eAZ6YAXSEAS<{SxGj z>@5k!3oV5fFYo-c|E$*WQruGK6VFql&Hd}n9+<}f#>l<}Q)a<>u<8<{IZx<0Ag`g) zk~ZYmejrS6l`X{&RDkcTcc|6krp?BJ$tCKqc1vnaWrEQ8O))G*eaQTCGg8WfeZFYg-p7Adwm zbx(p@;B2o!pNEtE;op?B%xdMm%Idpw+BpJ;njNxqeAMut2?CIk-X z_o{~eJox%7??ZleOtKfaC!# z|6(!3M4lJTZ}{e{YBQ^yr1l_xh2VU2EQSTCp;Ooqo}V-mdl%&D*tqq-+r>i%;`iEPc=^ld*6N71G&jLV;^$J4?i9%;?h8xJ}0{k$w6<%^?nazKR&YVBfZJ& zA^$>W5y53(n1#|%Kq=>2TxrK2Eb5H|#`!e#&qFU818hi8s<dg<$rT;QV0q~RQ;W(`qq}NxWWxuu~kH#Q&U&b;ELHe1ya?l1Szma6_%sbW33?HUk z)emH7P4|pH!)<~WDbG$DaLOvhcM*0DzD%WQwvNuFHr^q}{(6Z^mW6{_N)Y5R45V(% z-qra9cn@lldg2ndIH=WtdC!Axr9MN?$~Jd=`dyHwJxH5LMR@)t*tN!k0nb}NL4sc` zoHvX1MJcN7m^adO-8?&PyUKd0H0=-uwTYu1`r!oMTHvHpev1wB0V7enG_-k}fBnNU z2h+3JSNo4sGg@R4+liFhEs>|9-*x-#vot_u04O~>MEcZPuhc67yD8S86AZt`qget2 z1@=k**Cd|H$gGA6F>Xtuh8kF9KC(sR8l_kscasey-*;Rel>gUfD_eO?zS$pHSRjvT z?@~B0UQNf{R$^_i29i43CaW(@(+%1YMB?OC$3oQ;dDZ!EXFlyN8HtpQDc#kC{18P` z7K_}@1`5*mYKC7GFUBzz#zf<;wSd*~d{7Bo&arBlxq!c=WZ94ltrIK9}MCzT)?V6a<6+Q8jj@ zh|J*Z|HM?Q(7I2-x(@L&LM=l8pxFdf^-tP6BKJsqD)z(tX5{G|FS*jnr;5B4#!}*n zD3saW)e6O_Io{M>_(#2Os*_&<=PZ`;>P3DU$xr?(=L>Y;8^m@|VsFSijA|guRyx%| zz3m?utTrYC9DQbE+SDdd5qJN491t}UivMdAP5<{D5Ad8ig?7^MCv$FmR`p6ss?yZh zpEZ@7KgD3kar5ECBA308N*GYCHcp$dM!B zjU>O(2{M!~Iq<2gImV;$p`FM6ENmXrGL!IOQM9V zVhdqpxxQ;7k>K_=@dVcna8R!&t8kMhmqQ1wZm!6^`;N|18vNKc*NM6#yYb84z73bD zOCQLYT6plZuUc4@tyVH&t#+Im`64$sV}?H6^Tmmz@EmZbJ57k>35L+pYA2yEqtw;tc-rZI!@3d9d?9WPw;ruC5}18`@A#w0R)UtxU$msW z2`4Nh5a2mvs-`vii%WIgsTOU{yLXsfd|@Fk-tt5jXD`0p!Tn$P(Ey_XIvLoEd3HDf zbMk_(@-$T*CPa$EJbTpkDP2r^9P(h+E+gQ~Bx-xrfg)xHoS%RS!bWlwGM`y+oB@2; zXiAp&h-%qKumefcQZ;jOJmuEv6^2;CEBZq13X@xw49jeftc=0FFL~2BLj-IpuE+-I?i5Kw@G9__N8He3Tmx~&IwD%m&~w6TX_qUu8dHkqCRIll-( zch!y?*G*#-FkD`X{^PBWDUWu(J_6XroB2gS35*7J2WB`kIYX{Ln^$ zxE?BELf$3=<~-PC{aU9~aE_3S0KkXmhr)M^jMAnl(Wcdaiwn!ooPupBEj1?*J@ArO zPwi;@nBeslTtpoNRW$_LKk{;~DEnQ--CY5M0Ewbjzh9o=sBX9Bw#Y+wqrmBf&4jz~ z1s2~u7Z+jS*?%j@_=SAHP2?WWykGGfb6pu|xEm`l06-UQu+_1B3z#f;-8RH><`!Y= zggP*oJj4jiv;_NT(U5!RFs?WOknkepqm%^=+i!SlXfA9KP`*9oW#Pw`+}xOoHtk@> zz1{tc%n{%}6}Dhrmxv@!A>1VYzsd3Zuyv_Wt@`#~Dv%vO#E1Ji13+tRL%c)&BS*b( z7Q_nQ3__xT`h)&ql#&%VMIV%$8IxBc<3Cuc7iwNtxDCCu!bqFmiM)_C!uJ_@z4erjBcez>ny$Q;94d;S@QoME;NssNWcU7z%mPrAvy9sPKRyj64tIg0#%p%1 z%qH@>{IpxLLI7NGDUkG^N$QR$#3yCQT!@o2`bbme;9`%fro2+|iK%63sjnB~S2{jq zFhs4y#^A7Ub5%w6C&~rBe*ya}KV$r=aw3h^-sc_xF}qbBuG?~8`xZo)mA@F^dIerL z&f#l#R9TNLk`)tQj`&*-2=cta6I;#oWVd5j>5)#hjAvx3Gg9NxIi$44li}hWnc5Ua zBtM7o+#yJeims6p+}~jN3|DI(Z#PCpMMrh9HIy49U2I>zP!E%}iU)A+JidPVr6y%o zvP&zb#G%*dz|4c!-`4XEQ4erpJZJ-D$78&Q=3DQMgdGYkg=n`bL|-$41u%HNg35lC zi9;a_aMx+pNkW)SrR-#vH7Dd>w_WCJZ9=R_*b705Zt?1dVl`aLE@9V^B8;ilgfX@7 zVqpQE<{Fu+dz?%MN-+loxG<|e2lX6R@6$7OKrHBR@!UExJZD(!$l~cmlhmpGx*jy` zBS}Gm(kw8%ci~bhM}tgQf*iS}t)JTIR3d1swPnHwGgfn@#j;UuOsU0?ds2ZOV7Eue z6JfA}_vJQef@@$duOGlX*4Vd{nj3P_1%Uroy|d!WZK8Lo?oPoZiNzk3)?~V-|Fv&| zT<241smR>1%j@MDBujntP*>scU!Vu89m3x~{>RM57F~JZGf5J!?$nN* zA2~Xs{l{8Z@&%B+m*+6I$@ay05w)OyovmNIyI4GD%1-DRB-(AlRB)LM7ZE#awRm`=bXcr0gbE~@}vsB8rj+C;s= zS8^%d9e)xb4h1lagf`=(>PB(|rWnqaGb)iy!iGjF5&#a~uGGnIQWi8542v)s^P(J% zcJ*h3ISVI70&a5((ZXmeT&q&gyzBLir|V}|;bm<<9ELwOzHynILX%?8K0wGiyBCrDq^ z85tTBb?&ik3g(~9t<4H0vBI{}TXHv6V9L0wgEgtlts1CO|5LO` zv&Ig^(L&7jSR-mmQA9}oUu_o7JPs_|D90Pk;)e~SYaHw+jD&L>Uk3pxm#II_Bc`qt!7WZ#&@r3zGk_>s#|VOa_5AF3^gI>x~>| z3nFpQ!1;8*Pq#6N)<)P-3wI@!;da!E4cb+$m<$bI1$m68Uad z^k-yb1KVM?cvn}hI~$eDxPoXF@YOh_sdk%h6lN&~-fa4iFCv*3A)7_{4TQ5_qf!MV ze}P0lYZC7J37ppAs9#LLmxnlw;gJ=!Z39!y1Fg6M?$@=;ScqL&H>B?zRF>wVxwQO)ga>|Ym#!W$3k1C`aNHY|; zH6=$#^Gw|R#Q&%iW4x4#t|Dn8B+8*^hG^rYco$@#OItWt zaOfuCBO7fHBUJ9`k*!aeO!lxw>(3+X2trv&nV)tf5l@YsWehIWZ{C#v`QT{PhU29) zkYk&N$4j|>xSR}yA) zm^u%NKn*M9Q$R;gLB=%Ys7K4HtUYt(V_o(f4wRnZu@sxY0US5y%>9+Y#D7mW(x(?c zozFxNsIMC#J8lSI!?&C*Z<|s60|Gw`PY*y%in0x#rxV=gtKufsT0!~NU_=mclyWaKrrBoqXft3+!y%k=oW-zaBEk^wvR97k zVs+XYxv1O)#La60p4PI%=QaX4Jc)hF=Eh#IHrIcCrQh&-vIU)2%^YJo?6*RYCL%1SMD%2)!jvGbX9zx!BJzB#VbnJ zA)k&(j1Jrp-RVi z497|^xeSZkL;_Uj2lenj#nBz?-OzIkK&MK2BYHp^CP{S)VQ(99}{H?iKGljr> z@syrUw}_@1t_(cKVhJph8S?0eL}|I#wN~ zPhuoy)dm;VJ(LA=bg714of6cmT~>u)ce-0q+6?Oac)cWou2N^@5O^rbhCkb9|FI{R z0=Orb4O9f?WLnxu>$MfZ#1+037~4D0zeM$sB@@s@&K9)+{uLl%`>7+>I0*ZC^X%0L zpE1_f!OrCYV$r9~>DemMT}*KnQ^l&Nh`;%7-2W@-Kd5F~#{N5EG=O&qH>5XjSbzaL z+TAN-9)ZuP7jv&n>2uw+DHWhP2h)FD=C|YPOcgayHvgTkSYw5h*i>jv6<|KN+&Q_( ziTnityg?|~_lz%kf5!xm1{V}@y}b$bb1l6%ltG9RLx5TH(5JkUx;CK)jnd|H zgK$4Lx}-w2qF#0OeK_0DRIX27V_!P*fD!+w7@1>BF|YK$h()w;;)eyg-kt-XV-=u9 zBDUA-uSPo6RxhDTpF!HlT*@6O5vswV0(G)tD5(@wd9^L}F6~#bz}|CjE)+<;>>_*< zuHnX}lC1X+{Y~=xJ$=ClYt)*(SlM*$C)6_;oR)a!7B<%e3ffCJ*7AoI1T<+yJx$KN z7jAq{5pfCzV!HJ)vTxitDX~R?GGtQdPSvVYbw6`z5N${$kMY&!7s>keXr{aQ@=iFD z2E18sAIkVj-s~6ypV1;ea$#^_KsL&X+paW>?<#zY=EkjhA{Wj=tt@`OIZ07wBP~Ch5sN z#8rCjsTnD73W>UA8Ly`lY`pFCVDTs5wjCT9`%zSsdB-E{?U40pwyNx&56jg_dmJCx;J z|D)&z?RlIliGZ32^q~P(ih9W6a4i*Ae6kz~;CfAjTRZ}eH5dnmz98HnZ_sWia%t2! zCj)qNcE`Unp>&kUw8mqP4TMldXc#3#tHTDjLg!!Cv zD6e0lsM`Uv06Rd$zf8;lZkq?GU+Kae)yaQcl2EimX&Zl}``5%f-v8Nfn;r)^5o8&U zWkPd!u+{X3Fk$dItJnjZKnY2=l8pp-c;ODXd*1rc&RYQpJLyW@UHoz2yA(h*R8 z!e9pT;t7rj##T$-^2)!&iCNY{M`@9Z!D8VBfdE-XQO1sjZvk?#MY}_FMs}%ZaIXYl zWA1Cf613c^p{@*e_5pJqO0lPGQ1MdO3+(vNMQ2=(2YKov$VS@_({XI9x)(IX#Jv53jQpK!U2 zAtXPi3K!5qWp;`RjFB!PW7)Atc=^rt9ud^a#@ioJqW_PJJ+~)Ry)J~9(|6Fqh~^hg zWyoyO7>_-ti_DKY<{jaaTqL~PH)fb>*%%ia!=ggT8^)=ffLUtkOsrw2`Z6#&YZ74- zuIW%%srBC%+6`Y|FNywxDU(TK%{mDchP97%Wvd}c?KSOLz6*&Qog=TSW^?^tD~UBj zIF^F3VRJTBrEYoqZQU=51* zR1ex4D#YeiShD<7UW;6MQ28$Cg4u5tgJc-ikZFU<2q3s+f9*$Vh--5&U#aJ1(Ju>COFnL+}_H(L_(0fWwkNT}<=_ zfAOIp^efBb&YuX_J%u28b8CIanYisI2j@xUXrKZ zOoESPu97`u!K|x7uvp=+J}6|W-!AM1<^!l_Dhc_Qud_k|!2;AnTpp6ILp>;DCpLD# zIu=`rmu_J`HSx$SGz~ySUJ16}yM~rIiPFLTk6imgU^vwcYc*oxxgJa#{Kh5WJDnav zs#hB!k9=sq!xuoG0{>u_(o2GMSYNAyi9P7 zQH!y%XI6ZCDlV3&kd|%MS4qe!WtIDbp{m_n;M&PoL_5@iT5;Nsgdj1YQ~Tb@Kjb*M zpjHdsn};kQ_P{5;z>2!@H?xmASD)21GWefxl)T+3_7-VW4aby}v-=txWyLoPgRVql z595#YrBIi%7o2Q3`=Z#KVxc&+*&;Af+M?;JE#J7;TwA>sa|0iBea{>NiDE=9$l|hI zyz_T6qOlLff_oyBObK=zbz1$|4NS}yFqUcCaWLgO=-_6{?DS*K#b|0UNp~!Yz}dT- zI15$@w&S-ygo`-+c$PLIPsDmfRuTUMffw{>6?DCukivTB@wGI&0=T{6bLkE}nYP*N zX+71daV&(N4pL??Sg(-Tpi&cGxE_hQfZizaHw4_Usj+L|gC@&o&C|9>?ZI0zd<+4k z#$a#Z3NG;EV!U#zu zrYbk0ppKNTLbx4IobMrG|J}SWEeSd3i1f)A{BmKLbV-f5;lr9BA}9u|#xRFG43^}= z2S$jrPVJbV>eoQs=VYUtx3G?p!m2KpElvJlv1l}x8}lXIfr77IFc8;bM5(|)K_5vZ zf+^--6@OrOXdQ)rW_YL9@wIEo>$wII84arYcoxC=p#>5pw;NCQAQHn}#*wBbnlD}Z zfu8iEGrkMMT9h*+BIx6MS*rL!u*6MVWQq*(jii}m7GOo!)&b#>C!-7U#x8l@?I?2S zzrK;+xFUk{pWzW4t<%xem@YmDH{Y;z-?y<_`xpci zd^A+_;T#1Fk>z-t2_yX?J$F6+b!ZtPxO1_;?O5UtCCG@+_67b`tiM-_mS;t;>qoyU zH!KqDJ3$qPgbWf)O+igT#Ful5MB%a5hNnX7itvlWPX;CvuMQj}fIj6AwRs)-VuW&_6LLQi zSFkmvx7p#m7*NOW?;Q2OVOo{#(zKS!syTLRN@D68|0KAf>Vc{#gdB#4K_)$BrX!jy4+O^JgEqG zIP*vFS-rL57+ysFof@RtXg$fNemJ*<@@BbL2_L`VqBu(5mdEtRT{9;b9tiX;%d90t zakL9i8fIFtMLY0(uDV?zBS@;k!~~cv_wgtmXZ6glmfyEXX2^A1$p-P*auB;$NR@oI zGz;EN7+!wX6+@vhvr3L7n7W!`!>mA=A_P9tNeouzAFpbco^rsqNz}ddMm#4ejmD>V zPmnIRIps}jFtxH9*BgF2@*f$@L$uY=$rU)R9~m*Nc<*)kqs{N&i2xDYrZL~WC?You zHYcb%kLkZVy(%T|qB66@1LUzWn5VYjCy@X~pYoM*DN%8d2hq#*(2#r|;#ZRP)MKr> z*IMy)#XLpP{(k8TkMs_m32Ib0Bbh5XAF|abcZrdB>I+VvdhgoBUM1--thTE7Z^?)0 zXEQDjXNthA^gFN*$zml#7$M`%Zb;{k6Qj0)B(KXK-5GsKP;71;=-MqWmmw^a0uYxv zT`3BLH?UaxorSjobT1CO7Rrz-3$Fm65sE)3IS&Yvo&!ugWE73MUGZ1%togiLeP>If z@4yDj+4e;0;VzFW)&)$%-ST1ywH2QF@49%Jt6p9M$e1UIdS`*nPb`DAtg|Uj0J;!8 zV4bTF<~>tgEZLZ4wf9a2I^TOMh+M@t7H{l`<7!H#DOMnFg7j2b1 zW8fP9bZ&Pr_IO}`#I?I*_)s*kRgb6)+<{4okWR-UsI&`p2ZDTsq zhka984{XYT)c_J1x_HAvNitA)7f>Xhz4fdAghaMxycpcFB@OzKG`MHF1z$={(GRcH z8GR^5Ql(_;85-;ik}Zcr__(kU;l+1oJ|EOtyo`qGpUs*iwAcT1@egi_Pac6b|18{^ zuGQmNO(*imz66ozZq8hMgi-}p2MxdaT@+m(k~4bDr23lf{-=T9#O>9$<2+wYkQ zLKigW6rv}~#vlJj0Y+*rw<~BC1^PoE4cirWnk5VQl084t+vC!ZZd8KA)*jL8vP^sX z_fGRbct$w6e%%tx#O5PMCY8-oU@Xm~Pc-Pb53$XrHiaz2@e>0Fwo=*(?=MkKvB)?N4aw>;JO>OyV$f$YXlAIsNRxeL*YsxxtZ zuVl|~nECI+w`6z*liRvk9UHg_v7e+zv8VxmJsqe^ejWyYNH@`)sELZEZy&tjA;D33 ze6?Cj<>noYgB>P<`@N3$p1K1CfA1u9sXk;9chO8~FQmw)P&*Y^7tVI2hN!uvQdsk3!$=j!;zpxs8KS)WJ6C5bH#)PL()n ze3g?EI@a0eE_334i+22ZTDdUOocl?0yZzOOX#Zj{g(F=A4yp4n_wn{fM)G$ z)Tm8m`=j6y04OiGmr9mG5CrsZzXXrc5*+ap&QzIh?j{ z-HSkvVM9qqhu2EGMb2%SWAYfiF5LrQ&gBaY04daivT8D+?-d+;q1s{ZeWS4`t}oJt zxi}1&c!5GP>nlBd3jIq?tWQhv-^O@R_{>&n= z$%Aakk?F$P?N)*S(|w15IsD{NeW36AOu5!a4&h=PB62Yjzn=xJy`t%%Fz(+e!f?Sy zbrb??)IyUYMn_#Z=7(aSdI@z9>RXG|Z*Bsm>8IwQ16BFzL5r%$g!AJkOO;xeZ%^$6 zWUsMQep7K~dNw0<%-dbd76kP@yN?%F4H3ziVOi9HYmkbz%S^7E++mMFRt|Y^Utq^d zAcfExZcU2%rjk&@_0Vxs9r(rwH6DlY33$E4HjjYM}D9Kbdt7SMyZD zwt1YJ&_S2){AM0s?I;q?i*yrVEG~iemKjQ&oTrV#48y`byk3@8bu&4BhX(kdK=6X$ zIl|ZuW5MC;xhUCbmnnArNWe&-j{`qyuEo%Z>=!4w)|<6j@_P1VKZSe-g}Qbe9>vR` z@GE>p#Bn#%a@q>QsJeG@zDObWAd#7T|3a?mBLYYZau+*ZEie zGkN&8d1A<`^%G758GB3NX$_679@ki&Y&ppBj-vEJJRvxJEvXqJ{ooIFo8W?Aq{tr$ z(|C|P-9c`s`FJoFWA)60w|{k1{= z|3(COBPEt{;S_IATi35N4D{-t2J5%xT0K_Em9u#rg-d(R{MEAo z!S1SG0XEqvuq#q?T5`@*lG$BoKBjxK( z#viqcR2DGYnGehA=l~Ji1`I{b%79z6QqrvOkfP&CV?r`PA@X#nRTsAyDU$|%KJ&75 z?wC{T>@X-V$jK^<5(853Ehm)v<$lTb*JWD-9v5od35hg2*1?#)AolyBSQ z4ku|WzJrti_0e(w0fEoERI3(a;o|^Iqp1_y#>irebK_Y_AdY}Lhzq6?l{35;e+`%+ z;uXsJ62WCtfpQ~;6N{8X6`<`?YYoevlm@a6?vN{-v?qb5yIK7Wqx0ips>^~~;t|=S z1n_j5^d%;9g-Rv&!u&Pi763WDi;8X#jM}dJ?I8{XUX)V_(BZ{=4#0Wb8ydUy3Be!U zLyH@Fdcx1pc_`cop%Wfk`tJ2J@&=eHJ$yPoO*4;m zF`{btgkrTgN!~6DI769H{w(fMu8XSuyhygXmKO%AQ`IBK;{zzPlj1ddS5&PyQcu_7 ze-Gw`R*Ul|1@SXwRS7|Jx5m%i84>D~OcqBE^b+DZ*$sfwSQim4EjYR7hi8$89tjKk zVn%Ih+M&?JCS@k^fInU;8#GtTcZv)$o|y&*3-0&l=z8pci-FE%dpt_W2S2zWc3S(K zcLNW}Id{MupYyoi9-2Qlkh%%!{hBYYMiuAyBX#Xt&^qzpFX}sCUQ=)cwP+j!mCW$6 z{Zz!tywM&A{0nE9Hh8OPIy2AJt6nvefUx<(L$+0d$iMN+e z!1L-PpqjUf3@>#!W{n9<-h;YduQC1nso{^gT0?qtYh**lNtOfoR~)tRn`!v#7d~tEvBmc3C99@9YJa?iuO;rF@tUI+W6O4PiE;O5HE~@ z*$R8JsR{TxbNHaH7rNS$2+`b4jV|FWub@Q1@lXGrD@^kMBWOEp_Z;)N9Ps-ashSg z804b%Wz!0%iJA6TQP&3-Yhm3>(h(vv6>0MH2>_=gAEp>L@r#=ZjkyNOLbDRO8~{vk z)F;vVPJ_>avXkAcni(@g9Q3n^oV>A9vG8Kn+Jf84Nk#n`u&rEMeOQ34?@T$dEe4#d zH7;G2ub_F;G!@l~pZOYbb234TRV zTm`6~+T!r^m$AnbkHZ2tDqzA5t0LxJo&7k@1FN}az9lR4_i}__NupyZBh6;qnCNf!5iA<2LF!+Hv4oWXj>N0oqXWOC z=#eY0J0RBH`i?rh(rL%s^Kj9&CXwc&w#7<-5ZZJWdH;Dk;deshWjq~wfO&WdvBTl? zq|h`(^5eJgu2?HY6HR>Uf`Yz!L_obpKjV5!nr~x^-ijw%1OtGxL7FFXUZ$@K3SH3S z>i&rXgp#b+f|vL%X5OHH#X52GV+#)xTbid#R|+MJ{k6?mDz`6}rgkxiHyYJeJ3@CI zPKh|Dc>V;lY5Q%3v0$*EK9#B|uQn#EiXJ$*<6%_Gvb((#e)}S|XmnqLMr_Se&q; za7U0oab8U%Fq7E*4a!8Zq(iggnj0=h2+sbIjIhw*aIEAW11lt{1-`S*eqyEjfpn4E3^>6w5#>($mqEkWLX0yGeGwBv&6291QPxbKsR*7Cw*Jc zpU0~4D9h3TnVf265lqB(SFDOE_DXULv^^mHyZ<6DU0)CrW7hgsCdDcD?lmOZHP;%& z=v8;Xm4B{cBcbk7nb4qcyvMGTQ{A;+2(xta4&~IUnU~kzDLffmaqCQTX26My3`}Y< z0qW&YEHP)a%)h&r3?K&FrY4CZh0NuvW1YyG8uerTMt8n6ni}FYEFL=V*HP$LX|BLH zfv(`!h?F|e%{qoW_W>|RWwyaY4XWlYlFuGjMHyT3aj5ZiA5uRAvwrXmrvK$AM(@k-}BB0OP#!V=| z&O{wDFKX?8WSe(5n>PQV_I^A>9gF3hh!1dt>(+tbt7C{`g_?4Fyj&IEiwg73s4|E; zzNPtI*uFs@n)h_A)#Gcr)!e$(hASZort(go%u>lrd zFtH7ZJmf&ytDw&;A9fqth-#g6d{KZI1A_*)B#-!*0&R5EsT~NL6RER%yf- zu0oPA(ZLJlFtdw?3iJq>Iga@0Xu9v1RE--su#lvSAfK?3lzT;iYTV7Tnr1s3Syi|C z#fD?V4L3Q(8rqxJ;#yk{_H;voqX2|eQULXd)Uqjb(}-mLyoO4 zo^969hV9As39Q@aow>lWT@~o52}^x7HZ*CKK)(M_H)>f^W-aAPkjQ;qLW!fy_NLXBle)SaPrn7XV!2)0*5pJA>&lUOd3UbOP!+o;= zxv5gL)$N5jb`prQ;R);`hoTwa9Gf$|pgr!mr!nY!s(R2*Y6w%jrT6429avx!h9Hg9 zPYBKt71A{=0>CxOD;P1TZ+P!ozR7tgY4_0FnG344CrYQ$9=D^eqq$YWA)T&qgu)0z zdIfoNYX#uh!x7OzM@`QOxiAGcq#)geZf=qpIk^0grHEBEp5pz z&GK7>Acp5i!H|NQGxTVMle(HXS_e+u-Eu_Jm6$+mCDFiV);0jD*J2_U)Kl3vu;pY4 zDUJi_FDTvKp;zU(HSxF=i}7tKzPr;=hA^sCtF*HXkZUeL1Wd8U9h-d5XRXw{e5sys zVX+0hJL>hySK;K?jWS50(0K@Z!T0KW>X6g&XHY5mAU^Vm%^5Fy_G^2jN+~=oZCBE9 zdCG8cL}MrF}l zs&ZgK`H8`@SCgo(-LFPR|HrhDjz9{C@4lp!5B0Lcy)y$+6?F(} z+<)2jPJo-TC|TyT172yI1AeXvRE+BXfd65*V2cVr)zyKw&4Xzl!%>7epDW_IMO$Mx z+usP=@jq2xFI=wvy?(K$GvGVWWnh2)DFi z&ity2ri1+fte4H=PwH<_QOnv_PPArhck?U{Ks8C4Fw=Ye!cf51R5Qi1Kd?2f3S_B$ zmwQz5-O%%F++6e+c623mbk%1k+{R;~CXF>teW6}kHyC}Qc@#{Bbp-J|i1*d%L`b~f z>s#;&o$S=FlpGZO{N!-Q8MLK(7vu0`%UTl=?3w=&QsNYn+IJ}Qza3^E)j>t?A>gO% zQ$o7rWCb=4KGO0iYcImoc~}XMpUiB0>gSb&IDhwqy|^w*fu0w}Ev4BUB=0K#2kS z0sE`AxTD+b6e1GI_Mpc~+x6lRdu86T5jeb(>tXlq;&b&T#jE&xi-ZDxd=Lzv7%@UV zgud75J)0g_?>DKPJ>?)AFsCHKcp|UROP*8`rcWLawOi4FvK6;duy-u(S4exUv37Hm zqlo9LtRY!z`E=F(NmHQXhaop7*mbc^bNxo2(x*~OrYj7!e8dZMc}_Oeq5Jy<&QOtn zL=n-ix75!ZS>Xhc#F#V|8dVnBy&_#|DD##oHu*u@{3l?@mp9^}_06SAjrL|{LEbUl zB>CKPY@DAp(lj0!Kx2Wkf9=IAFlr@HBLre4Ip=(ME>aQEcoqQV)gi0h`c#5O=1&x~ z@jE-vz&-}|W**+MI4PuI%4FY~a9+MB)^?-tFyQ9V30G`D#y}Wi;New!pK7E=@%!8W zsc~QXjY=w_m-Mhi~oHMVg+(=O}5jUNUX zN3!S{rDIjPImgKRE{vEb3?*s9J6O~RbYgt=|365b&eH1tN~65}g(7?Er9f25pPunK zg{73zE;bUJ5qlaz1R7**&%;oVJEy=69%ze&x>#*AlbwmdZMQ*sX{3Qb{t^J&ZCZB2O7Q6leFcDZ&NXjR8E7>sN`D2MLd7P_jMfEA zeJ!_PGoQ6+tca}=^}SxOV;LKib|ALcD@C-81G%e-&z03OaAa+upg4I35K2$|*!b+9u|7V1S7G_=%(#LtoE_|4^ zVBc64>0u|08!xvhSHKZ^9F%{r2*@O}KtHuf)w!2g9ztB%UC5|Q;BTj8EbPTD0a@jg zD#m=W3`JW5OSOrivDqCakf+1N7DjK7=}>xnl3UAz=iqeP>^NoShQY0gcGW5YU`im9 z2dt6253yD?p5Y$j=hzKbu5#aQfwfZL(Yd+de!o9}HpL}hA(pSg<_jlaj`2{12c~Le z%6gv_Ce>nq0N9;G?OTcKZyo7O2N_$9!@!7lFbGotcKuVjPs0F&ivH7wlzgS(X?gDt zi)&5WXM-?E&a~13$de`coy^&tZg_&xPy4&w_#F4(I{~uiqMyOQh>z&u?45aprSL7P zxsg=0xU*>+#i2-;QaDbLW)`rEYoBa4W=w8}k2g*`EbX{_WVMHZk=4^VO!S67J?!Qc z|E*Br(|yTqF(K4dQ}wi?8bN}us2X(LxdYLU%9J^#W)0c2flNjv1xN`stqU?U^`O*X z+hzImzwCFQ(yeYB&}flm_v)AdPN#$Z`^)4wa$oE9mk*G`ydV=@Mr?vTTueN3|7NsB z!nD)06I)GF0z-j-$1HmCdu|csjflO74KE<)iiZPN?PeQmrJ9Ay@Qz&8ua#hZy3A29 z5!8nGt`-{P7?lN0p)doy7m&aZgPHv^gPdEeMC)g$+P+w4Bwb%41^W$ipK&krOo4eD zMS&NeR*j{GfH$tTemHQV;A!&mYn(~Bxf{c(f*}md1+-J~*W3dwmMgkP0eLjX1)>y8 zErvtz;IR1J5c{M})Xf=89tLf7t!h{?Nhn5o(?Ml`AgjW>2db&+NU7(<9ACjM?7PQiWNjZs!%`|FE;-A)^btdJa9VOKBy)QH#yUzq%O8MZ5apkbVe$u|1RVX< zy#Bddh-_i!F4m6-K(2@v%HU=0mdD0El>3#W`1q!B+plW;By&?k;_t>`|6<3NjN#7s zEyEYm_~Ou7jv?Uzw42jn?ZMjiMU&?4ra)U;YiZZ_5el@uc1=YjSUX=KiYmOB$4H`F ztXR$ib0YJ+4s{B^xM4{2demdj3u80eHr-&>o^X-Tjm-BAocVqm>kIicp-VePJUDU6q)--VSZMb$N z%Tlsrj1KY|yOl8FzaD(>O5RQ9i+0NBpvX4f?mZ>)F2S4%QGRi>qR$Z4896x=%oBy|e}V0$n$Q(;jf4L24_%_L0abunz?9YSt=lfT+=PtHTeTGocILBYJHayrR!eH) zebgmRhRW4U6d#4LNl&lWGCqV^(6`xMtLL5o2q!H|L&Q8ZD-zy^N6zmvcD2Hk^;?p< z4NUA;kmWUMd8Re@P>Fs8?>4NQw zQ1#D_f`^}qXBgKGf8>_LL`i&h{)*K5meWo0rV^zwS3#){cg)`WEX9%T{B_9Li_x9s zT&lWr8E!h94oAU*kUVRM#$Ust+;go6?-)zIeT#nNQuMk z-T|=~7M$To4oLZuXp-b{lh&i|?G_g5Q%Qd=>n}x%pEQ@-(El+J9+ehqCk;`o_NDNYLW`GmJgz4dN_DJ> zHBD^32&_^@k|AOtRL&t{?PacrdK!#cNR?b5mYHa?`2<%Bt#j4LnAnv>OAeU{EANG*q-lb+;iMAPeKp=xibhKIPw!y+-5@Ju^AO|EP)1@6aHR*o&_XGk zvQJ|q5kdZyEBy`JGk`YP1DFpHbriko?XwA<}?aGiEBvVISb>L`-v={hS! z>caiON}|XsxpsUVZ5ojOeYjy#jXAc<_@~KBKiHwadXZUg(Je`DGJF8p;vwwnZNd6e zX1pfcqZ1tk)`#3gb!Ni;-gtcDi0h2-p};m6u~s0#>JWfEXp?%jy-*xH>Qnf8zP;fy z90pRE4j6gZ3NnUrK!3aJ$J>Ii0*_2E)?Xw=>~bN?s5eg)(}ob^wcTwh{oaVqVU%z9 zx*UsVtNDS&(r&YhA`ZJ^peQbU%#q*DgC;+}_v1!)Q4iqQ0iz!&R6HiJ$5(mUaN5-shK9${ge?gL@G3@mGoo+<#3YW$dp6OdBxL?T1 zRUsizRhF$|03xU3ecDiz^II(_BVo(z9!&b7ZNt^11{$eeae9n2lE7-B!3QVb^E-^e zie*71_G2L0V&d`F<_rjgt4>)qHDM!@7H0iCWiMO1Jtk zAUF2%4fa-3;S^Q`p^6j*X$g(Du>=W2!d3YU8nSzZ!vQ)IjcLBAK-iey>LEd&DCT=y z_Uc^;rDFS#8lj|<*0|$I@Mg~e&5}g-M;UyzVx*Ers&t2`!iBL6-5RHwGMf|#+4abf zn8gQ}JJVeVK6Fa_r+i324nn^tV)d;Dm-5koi;EgE#o6U=ggX6ay_-1g{vqqJ>G$c- z(F1m)WkFzvg9Ie*iOdVJAV<4on44T|DkkG!d^G01alBO+p9b_0x>5zT-nR*o%9-+R zlNB*&IkI+2{OkPV;nB|d9`iSgx#wyA6S^f0yD0I$)L_BE%RU&z$m>qW&+RN$`hw`? z62uCm%r@l<0x#>>*KeW+&I(GGgl@7L2tcs?Y0d&GI3-9#94C2=b6pt_-ek#>xtE#; zW8C&18rDT+-Y{`|gYrV)v2uRBI7pZ(f_o}+2 zzv2V)*BDI!2+`n6OI&mCf5y|-!8rguH5c~5+NY#PkkfBOCm~o02o%g1D;}x zL`khd5Tl|3B_OK(_P30vg6m7*b~ez|^b2(6{Ct_E5?G;cn6Hj%9mZi3PiQ($5Eafm zW}2qkSP39p)gKlD!vZj+Or(WQl~+QPX>W?bMi(`j4o(1W@g5oc#IoI7=PUtw&;J8- zV{it=%5c?IkCM@F0pyqF6qO%fPz~_2(Xd0i;&G?~nqRBCt!Zo^bHrM)#~2c_!)l25 z*=k;!hY(QOHh+Q7ar1(l#95CZ2zp4q?0SQCGIvA{ugb1C5xkZ9(=m~Vd^LUE+$hAt z!P44c0P;incPJpr7b$h`Kxmx6u4QMU3$tDjK->70w6*XL90a{LfS&QUI- zcgah4A>Y+apMMR8n<6Q2#CH?-#eSd1sPjJO6Vqb5FPe0B8b-Wm{I$*}UFB@K*$yEj z*_@Nn;UmY$F7x3)I~o(rbF)&|Acv7efgq=t0mYt**UfUbk-2_O=EvV9iQbnk4!k9{H9G8F`1ltkQY5>p)te^s;q0Arje$t)}d-ko7RUCgp`%nnn zHnRnU?hL|V;oNe8pJfDXz08zR0ge5F6ee%#B3=t5&IGD*rc)aya)v}I>6?xEPp()m zOvBbMhfOwevQtff(Uw>j<5<|7&7o!sY_<-QqglKF!yOv2`2k`=c-3S)`Q|*hyk?_f zh$oh?3+2j=wQiW9p%o_lFV?h<`5_yQA@9>^pSAb#nq}cDQ0wjKzm{W+aHhv0^g69# z=QK1+Ff8&&D5{BHgccmD?(7mAqN{LO-k0baFd2zLt%oSsL0ZZLH%(10OJ!E*Suz*9 zTq?1M#$eFQ)uN*s>W$!SlMU>40>Qucb_bGjiChzO-M@1#7HedOKYPLT8i7#I?FDa0x<sEDU?bm%6--Z!m&E)6{$CvwVGP%sC;WeI%Ug;MQNjJn|w#MfG|At|IVf1IeqFvbK}KhkPqtY(2!8+NvzD*mPS4JZ0gqn zv-pz6zj1*B5q*h&yt*iro#0mCxgjN4clHwyjF{wm$wqE~GB!r5ozs?32(`W$GAn=9 z!*gEUWu2(?s#~~8QDt})&kz&!+mxbf0n#NCKDpoiju7cHNit``R z75Vy}kx~#zUwsvky^Vsg)3>)0El1aq_$Eo`<}gJFzOaf;i}E^TLUWyO|8|^JvYi9E zB5ARy<`X8?rD<7W2oVKX>2Qz7VkeqWv+r^MW@7wR#FX-<2Ov0R5GIcwM<@M|q6Jmr z&dHB?fRLXAaDA=vI%PnLVZq5?_AP%g)w@QBbU?%l+3ca-!O&@c^5^c75;lb(Q1SbU zMDCUL#KPv^^Pinx9)K1#$4jly1T2LLZn$V=XDZ8eErRf5Lx2roiDUTPBp8gXe(+y( zNe+>Z{|1rV<+9+qAXK_eo!97+`$a5#J(GA@zfbL!14$G4?AQJ6(OPk563r#_oqbwy zT6JmQwV^-g;S$=Ge`g;Jh(b8qN*okDY8GB`+=5a+ruVVB_1w*t%>+-q{KbKV_94r0 zo9^#NsD<`A&qyG0Xp`N=*jY{=wZ_3ruwuH?D%N?S_TCE%4cKLR5FZbqt z{C|%QAQ}}V^$}7w?B8Hr7J2e4waC#IR8ZCn3%>g6kV8TaLUt~GtcXiis3q!ght4n0 zY_Fkx1hnX$yD1zJwd6xO;YZE|Y^0@Xg+0?jLxWe(X_}?+m{TJY7CWFwUy&3YAr)rj zh>?%cjrL<}_*i34=GMB-WYRK~!h3OJ-GH0wG_Q$nL1!(xb3{Sl#sSBUNR)*)ir z4o#$d%}b`wQ2Us7(4;JfHf(VSbSdLBwpo}}MaS^F70=7e_15$l=T+fko&o%d^~-tl z6@4J}er@xedwvGGy^U=b#j*|8ivrjCs+WT8%?uAb5tNk*AfYDaTk~p5Hb17;2n&{s zcbSl%Tse>jk&81Y#dl3e`EWacq1x$!lUqyoq_P$-A6bbzDPYMa3dU0fjKXxRPvOh= zbU%I0aT>-fD%_4eC0dPgT)jz`k-PFbH7Y;yv-U{C>^r&?+l%q8%yN;4 zpBoD~l!qv>a9(SgG2JGY6EvzK5dltx6;i5j)p$u0t*FwApLh(GP$u=qoyC<20wmp{lKp*>s{6q0zx_% zZZQSNrrZ0`xG6<#>^=>6Q+=T>Y~ck$Rf&)WnWKq zFIrFm`mSP{*6-sOy(Z=VKHuB&#l~x8VeR zRqdgQyvofdUXrYMvG}78D`k%fe4V%}Q+nTa+x6V+%9y7d#SmSly*)4JwJh*?lt@DX zyq;qYeUPm~-njR&rmFKgImZrI=TK$G zdi^ZZAFhF_*b?X_IuXu@0c67g*};?3jx@F{t>{xCF3a**XDLVgjBF6rv>rh369%M5 zr5Iz)Tfg%s;&z5ut|xUYh4Q?wjSGnkgrj9M1dLcz+X0?wM|sExJ_YH+OZn9bF6s-I zlajTB3(x*iC4w*U#!eV(bSAUMtCp)>OGWnLdeaZ@x-9f|?b7GEL93p_Al)mTt<5hhGB*6>}O5W%^5;{ekSN>cx zoR{wl|EE!#2uT3K;0a!bR%xxbfsX74EV=gU=h6G+aA0?~;8O0!wVvbjZ{X_-Ic>yGnF z^bV%D;8cV$0mSmMHRi7wzDdIQf>QJ|iC+f6=J;L?*VkjW5ePcX2eY4~>+W zY&owwXsf%;%JhdKN1e;j?ET~zBWNs!HhZA865M}^(qq0-)?>qZY&@(6XJn1+#kGos z3X8vpPgSbfmKQ3 zGW#3wjg(v$4zZKuKa(d|XFaE5ox?U3tG|}*$K!0a!zI9`y3Fv`cm#tP4c-S=Z72~( zQ7$R~XEn0=LZ?F+f~9sM9EPCmv@|*I-Txl0ffBWe{lx?fw!F-OL?e+{SNHG8hky|9 z-Vw+nWp;SU0z#r0hxm7vZ*Qa~XrJ1g082o$zZ`SD+%tikTv)bRb2Jkg;UF+#04mcC zHo$#oxEQeU*8#6ZH_AnzhoBr!;#uuHf`5ta5CUXRCG1sp^$CB40FgbNbGW0kN1=0CE~f+A zXL*K34>U73-sq<9N-A{Jp)+=cpe zgVkAnrm0&WcvxL(mU0oG7Ft2z8>FDjAooMqhd3hMft9+LLHD_%?ZkH#Ru0#LxJLvM~|GciDzWA zBp!a$sa}f2$^As~VPUbe{MV6}h)4^E+8c&K9ApggO+f=pPwRGa@+@liAD=XvrhWF$ za^`VD7!#L=D19uPtdT~`elIrAU(?b7lIm&y+Qm! zIvzW1r1q|guvZrk&O^JvckRXEi0I6SBFszazAma{m})Qh@*fD83y7NcE4>#_Agc_aBtd#s$%_8Ef9@Qm=bTF6s z&m0D=#k1lD8y%oUzH%(48e68(##sjBPgBz6gdTkonhl-nT;Ty_Cs@_PRJ9dG{@Bfw=48928@r=bzpuGoi(!d zx*FxNzQ<-+Li7YvxeIc*l}?Rql&=pJY;$00=<*dCuq8TWnpF|;5_Jf9gigTekTNWz z6K;RV78R=#VwF)KlNG6%RdUe+q!t~B$Dy3K0bz3p7iWvYVcY`KB$d2QxsbP9uIM6P ztK^16^{Jsl=GsQ;_uB^}t93N^_p&HOfVQ{vdD&WC25abMItEz={4GyXg`{VVoX4 zC@usQ5f@0MU`8o^7T}2YRw=@hYS^3h{=|J&RZlyx85};Px$r}pjSP}%f;@u1Hgrdm?J5MeCPtJj2EDPr?FRI>l;RFnZ?xvJ!%Ro>g= z9}^_{ZKc!poz1S;9dQcMH;X-3k)kb9q;q@C_yYmf3LC0?SMNmr$|ip*fz9%GvTXkt^qQzt8KjZc5PM|#gMPgfMWwmh+ohY9y? zP!q8y9(mLXp>f=TKQzy|RX2u}wJ!2X=ZD}`4>^^KRcU|c5N)1t2AYyN_z3o5;T?=L zymKN-sEA6E<*Th11ooN3ivPy@lG#UVqT}=NRfxad1&Vf@D`VRXWxg#Hv7&G%55oB5 zCrH*Ss{+(_N!fpZ0%9Z_DZdn@}$rH3O?~K+CFds%^fO&B(5P|;>A?Jdcags zm`b~VTY!P&@zPC8%r!Jni_ZDxudW!VcbTK43Izv5%zKbFSUK)r{O{34z)i3S`83?O zD$yM4E+{VKK}J50O-!nkGdGYBEXpN7u7R4*rOqp;6S98|h5gXUaOVENSl?YGAAu8_ zLQ31JTMfV4YXQ?sE|}GnO07YiW-=Dq?uq06u>WzL%=EyRn&261u_VYmU^EmUw5+?M zqGSs7r2Hf0JxRNQzw|cSWB=vZoIVWBRO#CK&Z6iY493;vUhgLwb+qU=p_@?dS|ZX* zKjiO4D18s8u+L(LIOpw|g2eI^ryZ%#MSj2@8mu+Ij3d;4KNXzFKEYe5_>pvnmJDibGKkNcYt; zn3&DB!`S_X^n@w@>pk-!&gT9qAl5=Pi$!mTl$NCSDpt;<1v(IaK9o1ogA?9Ws1wqZ z_n%cbjsAvgHqh4|b7GlJpVSPkVVoB_kHZ+UD>G%w>XRLe4E$i8zx!DOnL{=>DCPXOs9vIcBid*2N{f_;Va62h zqT#Bbrm`YMwdco=L|+2agG73y3$%v){IgN$IW6t)M0s706g-*82rRpa%1M*<%|4h8 z$13={!EGVp13);u_O|4sVT#pt0>H`5pmh&DI8qvm25Gea*@ zgU2Yxk{}L*UnLr8)z2#C_u%yEMIry#8uc=|6RInA{2Ig96gs{eVk*~ZULr*Di4`?I z*QQxpZnE7AfY7%pPL`WF(pkLtwRO%nznX_FEj)?!s*ZR8_UtpxX7~srn2$FT!$YcO zzx;iYMaFadmjyZ*-2UdKLv$AYJDp<`Z}I|S$gF{gD$6j5Pmd|&rD_WO!bsSsuM36ANWEbFBnuWtYmV7c1ccGH}d z1n=dG38j{3f%)u`>H-IxVEXB{+g;QxL|$G@xYP8L2&GoJ-q=Pk8W~$@Mva(LL35y0 zk<^VKfF((oV6`L4 z9y-@ko6dY`zEk7tZjDKkxHff&9n-r`7;yaMlI!g-kvQJ^#oL&6j5#%dt*uh!mvvt9 z1PDFzwC|;oc*1X`qA8cf=P5xQ7`z*&%{=r4iS&m=^N4RjL%htn=dLHirG@Y_T1UoO zMu+WxRAtc62^~u;YpV#?FnQnr@2l0YacPo_Rcf-HA0rl7Q#f1|&_|r9kcHPPG2Bbf zu8gwL(ozagDNO0XAJfq7f<0zoY>$()Ykg??L#$7*%372lEoDj-%wl+8$aWsBqLMmf z7~O)S^pWQ`j*6m+lF^)lU_Ow>`9GhUCFreE95`$*xdZO*In%qSd7kqMK-|F5aC1vr z8SR%?4hi1S$SYO0W@WFT@0xZq9D?g$efs{fwkX;>=@A2t>cR?sSEP>xUM2GnBpgJO z)=o68m-@1k{q8yq*LDhS@`@qKC`h);K+GVErgTd;iH==2v(ucpZy2B$j~nvx9xXpc ztLc5)j8=fphP?AsLQoLH+z8PrF-PWTw$YaDFV1Zxb0>~u^^z+CGOT))Co}+Gfb&He zb3_IoSI=1H`fT;Z0?|1cdWE~uuM&I%JrS^N&m=C7d0E8dm?0rM$yH?Yc=xP2{;QS< z(@3Kx@A6zB+VS6P0e$zhtqdg_F8^3Sbv&NukZ>bx_jHxxXubg_;R4ufL? z$C0m{*${YI;+63rMbbe-UWK>)aBM1zH5fOFOj*e43|WN4B2RJ=&q`cZlZPdivl4bq z0i3c~XaV-qo2^M|(>vjn#c7k!GP5>S!nFd!rdV<0AGtg|0qib;pk_G8NY&^!MeWDP1dp`%EJR2j&Q;(B^NAXGe3<$qkZHF;V5p=+jTF-$v?qcQPXjU|? zTKS$=P?vmr*^4*AO-D9&+uZWqZ{5Ek9ufA}|B_oKhP7>jJb-`+qL3wR71k>(GZWd3 zpV=3+YiEnd+?PS;P$KL!&iNw44gH5f+!n3b=#;k&)H5<-HF?{yIz$7+{w6(n*_C+qj{7= z;tlFdl;a*E^&|8>wPns)!UmU^;I5KzJr|c@fEePs=Yt2n`zs`AL_K|BAm)e42n_rA zIzYJ4pmuEocU8|7WAzg;!rSK<%;n~*1j?pKUU*A5&UY9V-f^?$T`hn8dL(BX&mxR; zp+1#OpxYm%=yt~uhY6HnzpW;w%Q7=BLR zfn~&P2Gn9xT}DS2)F%2Rgx^T$G zR`%gyH9B|g4>-=$St7IG;nDDRB3i^hAMX;jOI{G0NiS@}E(kjxNAG6M)Z1e=-xWQ| z3oRIRbp#UO!H2Gzc<998nW5Jq7OR*v=X1AYi(#>7oFgeRR=*J71WuGSttLK?>v7ml zCihGIlw8E6Rm8i;rwivJ!)P&X)i?gD#ff{zrOsuq>`xrbHL7EaB0>YzaAW=)tDc89 zG&#)>Aw=A64(lhdoOS;90!c1Q8OP2wKzeyjoVM30@KSaQ=s2Bn5bTdt=R(G$ADhruTnmjq%n9C`^YZ}#~qRLP?TS=ysg z4eQVtin5wcKd@IQvG;}?%r-r~4Ud5>doe|ww*A^U?O&sqfA+zbtJgNC*g}-*PnNDH6)6)_^?)RVu~yp9;Io>ch(G^_yooh&*c0{i z7ZFWSZ=SU9q?MQLR*~m)jAj8~>nwxncK}+U#%=SJ(_RAPn3XyE1XO{;DjvkJj^`LeJ3)gliY2Gg`NI zK`1V#rup)a-H{Z+0b8v>gP5yuhZjcXJg}kAMh!~Nmt_>JLdkPN#xU_f?uiYh=%Q=? zJJ(+hQnYpVK!f2@AgL=lKe7}^Jwv{e$ms5|m6VQoP*ja%-y8%xz-hQPKCgC4%w2f97yGMCUI3up1 z1(}@vf_(oRMaOun%)}WCmHOF4@=pI4qyQ}J&Pxfk{7c|Cb$J#Zv{Hs z+9t}?#Yu#0^Uaf!k%L2p(AveAgen?9so|-HXG&mprb$8=BxuB5ZxWor@5D)$%s;?h zq=&%Y6}H8qf+{0ABm`JUuCF~GfzN8&W~El6^|>eT{jB&SKbs&=WKbUn3svoQWkXvo z+_4nknE4y(VAwvisxIb$V=ctmQhJM$&mr{NqQfEzA)K*$uU<_zlUvVQ7nFhiD^ zC9A5C7N;Iq54?OfzlQ!vi@TX(RUrobVhIX}_qwf+i2^p>XOZ!kTqr*91~ei%u*OrGJ46&WKY zS<00=r{>akfIuoe_YyI>0Q{Kz7eZ@_O(r$@%qMdiYq21=tR)o~0^>*YL`zS*Gd?8c zT}N<+jbWr1vTE#{>KLZCGZmE)#3GSxD6oGK0u~@vPWEuZpOvN4_%gg09wRJWXw{>_pvFkGKX`T|iVR>nxcA(l)g; zu*~_s7`Q8GD~EAbX=(&UqME>V0zD=g61|w3hr;^FP1ac z9ZV1r+2WWS$&?_R5L199F}tPrGt)BWP~4xt8qNN3B)*Yl1TP_ zg92<~aAGOT_*Y$RzJNYP;{U3bfg@tj4SUfuV0KXXEs!S!xLAVuPn@9T8?c66#{rl= zY9BReNQioZn?n}V?r^$$($-fY*2^{!=Vs#iIQ9EaUoy{b4ZQB&w~THK;l}K=Eb4m- z#E#rzi848D-lm~#>V8}$L+WVv$~nx#tvs6R##&{xX1(VNfd$KCSy{S4U(g!*mT=d~ zIXJ6Wx6a$NDVBavFS36vCEAK)zGl;*35O3vZ~WR_K}Ht}bmx#?Put;;^=zOlnAh|V zK~`gu`IvGKN0Y!v1FRwa66Q%(MRIZQ#?LG`c~5IgZrjJp&;Vr7z0U}uk>*uiVYH0W zrcYmY>>LI(rv&`G++c?PS4c6Rj&i7Be84c^Cs2DkWjv`!5BjT%Njl%V=e zr5DEEjRe7sN4vI}Yo@?*N(qwgNmwbH@H@|(Rlg?u)G_QjhAKX zM^{m1_gxp_W0_%!KOfV{@fYS{IQVCTq=@hSRZma}d6%k!)-C)6u~j`|zCB@OQvvZj z7rTEqMG{nEPtpqplET6F3M)jh7egGIi`o6Yv&&K{B5H3*#Rwuv^IY(No(Oi${zT`# zeKnO`sO`yXQUgm9u|k0@e;Qf^@(Z~&q2*@Hx8eto4d56YQ-2H|S;W#`QN!6qTkSh! zm-@=};srCC-JwEjl90-J?3+z0;sJeU)t*{)GKz2tGwwB1U@=ImBz}c$fKR(fi^<rVNJlM4rn~!vB@D6y1A%Scv`%>vp~)LX=Oj}0$Z|YTxxxnZ!)do5w3ap+~0Ch zfEQGUhr{4lgBlF9&!crL9QDPv3+8N2!QP*xg^GrvFnmKB;lM>11VHuId6)r?y$2&# z0tR9*Tk>e;=D*XM^lzVQ6K2u}yf}KIIl9UUVqrH*`&M`P^kVelqewrCB0d+ZviK;m z{>5jU+O$WGh9mn)DmCcsF$-y|Y=)`i^C;N`u?EZhYS0ZgUfBUL_Q*8k?$ zCSViIG0SIp*rz^@l>C_6Yq&PHTFXM|4}Jk@FCgOnQm@f>&|b|u093+Bbbk6)3Eq3M zZ;WB1bREnaCwvZ(koKc~RUmrkAcRmGtCT>H6PlgH6sCxW)Ap_XEOrV}EVx=RtJdq0 zEi^pkxlwv=wYh|sVQ4a7(!5Uo*<3)cG=sNPyu;`K|2TXkTh~>O&OU+pZ^V)l^b97% zQo;@Nq?#k}Strt8bP5!;>q&xBKnC}*z0Ns-Cr9>)qe~Lp|G)im70oWGqJeWQECMob zz(mcE^&5ZWD>y&XU$w-v{@uTw=*c_Y>MONe3MEq$+nrfC zDIm+F@}FZzo$G2YHh?}NU7Df8Bwg5kG_|b7eSW;XVvdt@jvZ!6todyU8T3l2!5nq1 zVD7BDm*HVPrfveN+_-aO;*Le&3hufBWl~oELkgOf8U#ZX>K5jrDBao!EY6pW=QLJV zqOQ`aY!6s=qKZ-`lH?6M@u^xSiW4du^Ynq6-4s!WR@=srbUP#>90Q;*xxLf=$4Y6iieZ>`1y zDmbjoGmqxfrgTXz8dW3c5Bp_a90wDEG%6?v{AvEF5t1U}91EazWpa1>s;e+EE-rKR zb{%A?PVQyrB5GA8O!I(*dSkZt#4CM6k8;kydsHGs;ktx=FO z==+k^QXObpI8%pPs*U##m2R=%lS(N-BIk~Po}VkEWcej7q?rI*|!l|<}_ zXMTIsB_^QzuvGce9&YT|ypq(gE#Tqq5Iw=+OU&>ev7wulFo=~yO&rwqIO+PZxY8Z6 zK~;Y{hzqM@Y>`Pd&<}gZ_l>sVLi*?vX;dqpLho0qxjK`#O6SLBO*Uj_vvJeU>v@E= zdMY{um@2^wW|Q~Xr9&})_&BEgLe1=T6}FolSj#;lt+mPK}`dXE*ryr7kq zRs{L5Wy$E@Lj*xRZm)K7_R7~Ay#iYJQ(cRnGm(-vsCviqsKKC;Dh?yYXkh_e`( z6DiL0d6gvoL(TD~cG#vnwMyl@ej<=(?lEpJi*Ai#*YTKs35O#a0MF1y?vhcCrJYzl z)+m=_p_O+UO5eMg_Kr{mK_e^onCb4T13H_fzV@!5;_D{E&Mr0gX8)dX8RlAWT>BYe z-3UdYRcL2EnQENXq%>}F@}w`LBcpstbt?9YCx zOrt*bpMxSYWzS_+8+pc${WDYWnyc=8_X)dPf*G~(kS>jAPOSN1mUr^oM%siOsF1$W zT@G}Q(5qs!BhY_yXAs?eFO@U<)!S^eE&KnCBipBm8H3ihn|JN9#@$W$`k-ax(zj@h zkyHyRy+v7pfI%g}gj*{*{d#D&|F-Xtw)+I0vOXC$Nj`Nx&!{=y6^9}08rY<6HqBaD z_f z7wYZVL*JUKb{Un3H6^8}{l3#E>R1m;|JVJp{){_S1xMi2i@Q97 zoQqZ7HPiSSXG~EIcZQru|NLzP+jvF001zw@Te5wrux%{5DBM(%B-V9k-vKTTDZ@JG z?h0C~BN{YKa(1&iw$OY`h4etDqrH6ZO4u1&@cRTE&tzFC-qFvm@xXlO_6!~KP-CL1 zf-ys&LYj}Y%my?&J24^U|K%+>W1kjw)b#iAT9(-ZqqwaNvUu_ zITxJmur3_iYrB;(noiLi2e@zO;qKOCrn4^f6)GTqJ zJR{r~YZ!og)ITP0`vL}k3=s)>Z`vR9P5dd@$d$2Q?HgktyH*bIH(Au&H==LCL#2Aj zhvT1CCqmDAq?hrmR}8=*A-tR}82r#R6Lu(beWh{2a9ObU`KY-_U2?Vn=n4tSsKVSUD&B ztwzLQVdvU?KPriIEq$rHh+r4`hTS!niP~a6F(x@}bj~TtK&WNstPPWVQWq|x^{~JP zRh7Y!XE($deHtY;w{k^pf+Zb#FAC&WfeyxN+qG)NfXKwF4j=E9dCyR3bM0~Qk@yLvKiGV4=i-4k>`(!sb^!uuZ)Lo;Up%k z&k}_U(G&tUMrlgtUQT+8F1gKsh%tFTlj@M8zS^J#fljM^(~R#~`X-JJI)=xJd!8?N zD2enkRCalV`ka1XbfER*1HWLc9=;hdwZ`Oze<~Q8Uy7xK)OVlOsIMU9_!+Kin8F`N zN`q&?W-6S8qXuxvH&{FNkkOeUrXBEugedHL=&G4BRanP87PQII`l_s++~;3e0Qa?U zo!fXkh-`5s$D(pRG=MC~^HbkLbLe3Y7hkN1^5vUlgSN_4MP^d`e@F#Z!RK^?rS>S* zU?HJLy02AQ@AOl)Re`rVDEv>k&)ckdyo-Gu`Uka5$8A|GSh}Fapgn*yr3A4oRN75j z64ly>?pPyCDg6L(VVfvO0P+}AUodDbep5S*b59)bskXX86;6M-D980e5V&h&lX?$> zRWHDjvhXOi3_d#gBoILt^tmJ4*zUByHQ@T;3>~|QEiwvqfW&`6sm2!d9DmD+#c5-`<>m5_$Y(n1oIv(_?@ z5DXyv?K$X8qPf$X<#+?*rRT?pgH+Y?E{k{B3(>^W-}Ln~I-zP=Cd|T{+Fv(;`3itn zZ(AX>)2-wM?HODmu(bf^pv&oH~oxS>5rd(}fss(N);220K)V`(&#{%1P~gsKA6fSC!p&Gl=iUN z=@DP^pAcHI^q+_^d7gZdJ;~i`^rNGTxhXM+z!OCf-(he6G5oB3fu5wK`_-#hnrVVj z;7_r-Kho&+mzf5$TYqRw>lzeMi$NT2Ov{#Y!Ss761j*LTeBQiX<95oFcua=Su5v~a zFU&Yk1R3#wNH3t;f9wP9v-}|hHy1D%8gW($I#4_A_5`3!+#&)HMYSJ{kLn%tLS%JQ zM(%@N8wx9do$_I)hv#?X%aPg!w;Q%TFHO@^2m|9$U zBiHjI^M*GqtTppCYs*7~H|Tda^6hy&dftt93Y)dvcBEaFkU3&K_wR6Wkq-DHG1l+& ztp(WiKJ4%gM7XQ+_=XX1z*ZR2HnVI`XW_U?Rg3ZbpDqR&*tEM5{k19_o=hk1$*5J3 zgi<0b^iPb$35x{iT$x=?4S!S{y1imYR(H$8%=-U>Oz12YiT|Vy5T%Mu@YE^v^zz!w z4#=z#Z@|`yEL>y+k+g<40^50iRb+5c>{K)85cAdDQUc#KrbeJ!VJjdSeGF-bL+BG3 zDaf^3lUi+xG2A4{_Lsw8AvPvnrz-`DV2YOYLrpHk4Bs&&yO&IOPVq#GiUukyL6{cA z5NHg>hW5&h+{kX=nyPea#XU&lBCRtVN$WvZyGpFYYz%5^+Cn>xwW4$@oc5Y&2C^iC zFc9NBXfkcUpL*k;+zGX>$iyv1i$ZUof}>iD_jAFGnW;_Fu_Av1t@NjFe_MX391&lQ zGOoKD#}Og+0CJ!+O{UYJRYkY&o|Y1p0qTBY{sWWb73TZBN88kJcZ+(BnftI&4v*GB z+7Qi>8=9yh8^p)W{#iBfrmr~5r(yg`%5Li+Q1uK_q1eA8s3C3n7eg~fC_mvs?050$tJEKCfk_iDpmh)Qj$zuh0(ecnh)zK zTUl)hJw)5Jd1BhHqEN`Dn2=&ZLOP@#lRkFVd+O-3)%kC__%{AZl;g6jf{gH_a!|_!+8`1#d%a%XPhzxOOIEx&kUr!!mS|NO$0t0W zCOCBI0tw?5r}Saj_~6#R79Zs3nLWC-Lu>V@Ms9JLgL$?_Uyg~+wx>#y7wFDxjD?u|;pC!GiK$TuwYK zDdX5iAk{G`So1y~KDAn#uJ5bp+foPAo(>}h;=Bo0Warx<5laV(b>oPJpg*`O*x5DJ zP>}r$YLPJhAWq)H)>>)>79U~fH8NO@*VX-2 zbdJgCfm75l3AZ^fnnj=)$4F2ji70jNI@sUh_+hUCH?bi)Y1wSy;oSLm%~sa&te_*} zcIQ3C_fa{s15r0kxbQf>v>>rvb|fo`Y>{$1(iW|>H{NlL7Uj^#1}W8n716(TSXG5C z+vdgom$0s&=(dn5(TV>q-;T6C!!g`R8z=&0MDjxH(bJm<`JGy=K>L`Ff^R1Ak#o1G z-E^~68v&*>pu}2vjB%-i9 zA{GSVY^NH-RMiNJ*u-NaleI-Q1}5{)JuiGwyNWA_SEM<8RGSN1e=82Z4uhKGo>$eK zXW=rkby_6^hHa6zZbr^VXD%5iTN5;3TAip&DHCv-zt^-Wd&Vc1&v>sxn1x3Hi6^7{ zWC`^{>s*iN4v-W`E4U&+GO_|b4V65fJbO2pr))xV$Iv5;gicYB?oc@`!36mgSML=F{) z+YjFmsg!JbRdW3}a-(yMP=_#WqPAk85u>{ZcoTBPbDnK*>Ig-1b9Q3`cS>Q{LsIpY zGmprVy-gd7__Py=L z;#6`q6v*%Nu7_zxd7&JUzQvWE@Ni(=V(vJb z2^(WTs;nZ%(R71KoOu-Xl>E7Z zF~AAHWo(%ok=)rt@Wo0Yc8yP}7so^PGu=IQWLyM#AOdG3sQ{;KK*wc6ckO~pHIsPX z;8w9_^FYFo1I@6K7yXr_V4ryx+>Mg-*j#%0e)BlA3X~p?~j}_B4?{De<9r# z6}IyrFg|t7%=sv31l_J-CFbVxQ~|H0b#K4)n#RP|u(FDL-pzGup0+L43${|Ga-{mo zNX03XI-+Ky+v4Om0@gsr7Ls`|4z%jHq~(01ezG#f&`6+`0YboO{+r=!7JU)%CkxCk zVy$?MzH2gyOj&m0JW*G)b$kjgJ>4OiT(wkMamG{ZZags=ad#I}Vo-EEwDJe{K@bynce5R5akxYM18f?m$aEN>5SaE>wApCxMHI+qJp)?P6T}y70Zzl)H%>JTPA;2EaIj?FqXGX(Dr8rR zKhWQ)2Qi$Xsn7LypxX~tx8d;OVKsj&r=}Rg<2?v9&-62;SF7Rnf?qNHqv-@?z9UOawi+uO5RFM0iJRyEHyHEG|7Xa9D;DJych0Q~xWOB*DKI4qP@ z&mM6SV()*&%R{T5K*-kg*qOQ{DA^WwecuF*)1_Y^2gP4o@)^Bmb{&#()f) z2+&`?pHG1dJ}fu>i0rh~;A=}ukIo(@Vupm4HyAVQt8E-8z6#`huHy^PF*hvqPd6VBnfRHo6gGr~l)q)t7ek9Caxmtf z2K1xIWM462`C5Aaq)&XcDg;NsA8qW8s2WH(K+UNrv+a>|02FpMG+wzX9_urW8{l#N z6r0S>YQ6rYAq_>IF^mxKI zIuv<>Yg^+YvB?(Uc!RxKyEYkV!g6853IFR1G%)Ws7VU^yDm5;;YGM8*CxDJ_)&$v>hbtqX;grrhk`Bj%*)BVo(yy|N6AX3P z+xxz}L|oe)CqzV&2*Y3m@^ipcOh51~xBD6E+yU1}Ok#@l{zP`%?>uM22(GW3MNG-V zsOIs)ikl*px97$6+Df63it7e}V&E5bq8L zg9~jhA@l&67_s56PJzB_lvQ#=y01c6B(U?VL!HSIw~uX#r1iml4^FLK*>3sgDKo17 zXOnI*YdOko%Dh63AwKpMy^o|LL6$Q}`D3M(s}_R`ei}#xKH~JT9SWC2LH+Z6fCStU zqm2Q~L}Xslwv!-jH+e>ZXixm8ReU;yP$>ptkCt2+@I2d_6ShB8)Xda^R1IOUkL&0w z>Om;iokq{}UFh6IwO{SBkJhQVU{<`+ekWU&G>4&I;*F;p1jDWg%Yi~rsL+o*5V^+;m`%Zv&z4b{sdvHDR{wp2` zjyCRDel-y8m^UF@Elrnz21($UC@K06<^&md<1`R9&D5=`&j>X8kE@!aupIy9A#Rle z;OM@k>+3{s1fPz0Nw*RrVLCYpzXKq~yn~QZ66%SN#f zT6)xtXi7aHU2y7W`_Px80}~R-p^yzdj@{`0=o}v;Mk-G{S+qCN(!PnAuS}4ZpU(+9 zr&*0H_N<8;QZ8UqRKPKlBRw<-xSWc-9y5+sC=DZS0)c^EaY8$NeiDiTrIu#j8NP)T zYj036bbCWKP@S@UbSIeT^63_A&Fq7t92^`zfn-^jx#AA*{O0zHO#v6`%3PryrdJO~ zf1IL+SEY#37QXRCuJ0LIFz|gunsN2-_cm$5<&yQI%76lx)QX&yV&9;x5L@z?cC1jHlo|cb0DmBK z++WzSOg`aLzg6DpnqLt+to*pkvyfO@wi^(;_->JLAc5Ihvj9l1Kxo)~Is*U`zXtsJ zg&7I5+`}Wc82O7}IokyTTpdvAmiDGQnfTvOQ^vyRqCS;Mog_|CR2ehg=^hpqce=-h zA1F62);?)i`p?SO@msPTV5*bkMrH13>5CxS_W@ndV`VaaNuBnc-h6&-v1nnx4&Yln zpf%Yu)E84(%KsSwj&zZ^XEDJHUx_|-cx@;@#RD4d%VwzBh+sdIRaOJb-%u%3NVJK6 zAMSTk*9f{)*@{y+PS|b8i9DOsba{2~N_l_DyGJD`5N=Z8uJl`j`MvUem|PL&RU%&( zdz|FZP-HzvuCqO`GCqO?k9|-90g9_)ZQUSP>espl?=^ryQ~Zju!RHpaNB)O*13PB* zXFB5^9hVV5_2b18rx7kuE3!LC3y?QOp*m}L)loK#UhjqbyVbtJ0D47uWO}fWe<01R zq41}@5C-M-GSUuDNgDYA7FJoW|Hr;pg2kxY9HK$3=8af6FBFZg6xXo(2~7_={5xy* zho0B6+$K>uYr_6)+k+qg>uebLc&7bzWo1I>Hv$Kn5alX4;NI9}AQ?&ztMe_wKi{HG zqiLe8HJP9xz7#qU06!A*DY~Y+s)D-1o>ugx6at}|C?Iy}5Tew34!93Rxh4cnt8=f; z6^k89f&ZUiC&`_X_MPrwrIK@R{yV=(Ox?b+CV}IXKUd+;Qn+ri??*aBSL16Mwx*| zQ(#zvkcBg$(>rO6hXQqm_#PMZwn*JIH zqoXPz=oxMIEne&`WcVJMo~Mg}qYbgg7m#innZwY7pF7zxH8|KokUkQn#>QH!m}ALC zt5S2rSJCCt((A6C;?8i751by%mAfPeI82LSSg6nOhV(oU)M~+K%%)I+ zMbH;8t92)xSkeq|G52!0i$VWq%ya z%@2WdsT3_4p9JASGp~d$;|<;2p6X{Fp{VPF(xsY`+sSz_W%W>R3H{Yvi)?H46VMyk z=HlzTz+A+=MWCOqG~Mcn5YKO!)qHfGcY$!uY3Yu3Wf|(DhgGw4CBxnO<0tWGUdF!K zTbe(B%3(Jg^4y;{vmXs@;qB16neeGuAR9I}%#1v&A1jIDVzQ?&*o?syjiERAwhb1M z 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/data/plafrim.txz b/3rd-party/hwloc-2.7.1/tests/netloc/data/plafrim.txz new file mode 100644 index 0000000000000000000000000000000000000000..ab6138ff36490b29de35ba79ab90fc51d24aa096 GIT binary patch literal 76852 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%0AwZi3iayfp}MKnZ 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 afbgvX0002Iea+Go7dtQm000001X)_ywX$>o literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/data/plafrim2.txz b/3rd-party/hwloc-2.7.1/tests/netloc/data/plafrim2.txz new file mode 100644 index 0000000000000000000000000000000000000000..7853dc05c01e8a5598ebebc722dcb9da926f9d25 GIT binary patch literal 58880 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%0D?^$@ zGPoM)nf{3ChuG}A3M`B|+KPbsmZ?Ibv~LXk4*%T;x>>4!2aIBIoY3%-Z_O>zqQ8rn z1IeGIFvH>KU{*0@BM#yp`s{YL)p_?M8^vnftF9U_J=O-fULx+-_jCBq=?P-X;#6bH zdJt*b0r$iziOZkO!Ky4U_%OKHG9_Y7Gr;xk`oUy0|DEyiN;UBeQ$@GDt&@Ewb6 zzB@at1f*}7sP*!YDzhTd;c^l9-OUPpHtiVhR_H5pa<^F#B5uN?(N9ftg+89`5j6Dk z8$S>@JA)7-R2QyC>7}Jt7kAL{G#KtmkYqDV?60ufJRVEe4$qp{5t#F%>u2hXcTIIb(E*?yK z#myCvaa)LwepAi=mlx>Yc-1+zZcRFi$SoRu@PFECz0{_H8~uZ=;?z=;eldG_sYk5s zgzwBgl_9iYV1Xnnw5LcI;3Lo+u3;gdyqSu&kRP~(=p?Z$vF)+-EhB(yYF-vpEkSH+ zbcDj=W4|@p>!=PcHHt)TyLpLz^r+4dS)tLLTkdSNO;;Ip(kvHyJ0*|%>*B5C?|gk#PmFv;`T{$kki)h7j-!BZSN(?0%?zQA{X_AWOK~X%fEhD! z*^AsiizvDn08@M@rS3}jm+D&b+XUovrToj*a}pK}9bitZLt4){e)3cdbL)nhuv`W; zkODH;O{DY4fyc$OZSGjoF`fC%oSAv#z^chZrs-3P%TR%t6O)`F!p0=<5bw^}p&k;7 zlKV<9D$*rn0izqs!-cl`WA?j`@Io*Pu`&3JV?PzlY4uPdO!RRln~WWYPxoZ$H!{jRo#a=8|hx zhUK&Z1G!Htr`O>)S8AsgolNWB;4ny!RKT%QA#Hx<+y1@*yZ3}nn$flNEaE>d$+Wqm zraRpcrkM0HcP=@7Rpfs^nn7J}`2?902iiJqyZLrdv+F=MRjyXQ@OFB+b;WwNdAx5Y z3Q?WZxEXsxlL-(bwg=aD7aG+moOsyQ;a6FPlUZo~9wPzr0=D5Z3bfu4qi9zvz^HVGRggmmv5vx?ZeK{e!8?CH?* z8!aCKajOgnh$`Y9A5gy48jcToW{Vm3GKkK}#~67*SKUYu^f0qc%m^?}>@~Ho@oLRJ zUokn7dpOA+*Q_j zV_%i9pl!v*)VlWS{07n3bXtj8hTK>Lm@;{dKOEWh7#L2wU`H!)alWuH*1K1^7plx& zMlZbsOK#P|zvhfWp4KcgL(OJ8?OJ!AL#$ncr1qkZU1vqzb`D`F#0MSKjwszsf@b<` z{baoEPsgiS33CAMYLBCXz@NF(#Zg2s2EGaAUw|Ai3u~RaJpv6N#e^ws-ejwmt~46bFV&Twx9DBE6c$&*R2D7FPVgsX<)*Fc%Ps335)m#X zz}3}xX}cp`=s_f=UVs~nCC5pgP3Q^U_KE=AK7aT%m@}v+9iW0#8xt={#?;6naON0$ z7pH16bYsU#+JZ(PnH$tPQMhFgJhIV*)ZB?Ke}u5X`v3{KOp zlI7BbQJ(0xzH*5v#-U7AzgPjYwt)IC-W53}bw)e}ad65QS_pz~h>;WRj)EcJ-Vc%2 z6>;JWwGwQ4YiKNY;~nuI23OiD`PzRu)7fr|21aRcG@y!6*vB8Z=B=bGyW)eh_wl*| zeeO`X$vxqeOUONYXUm|#vSK}Qw?o*FHv(Me#>)`+$x9y#yVzw4A@xMwANtf?u~d+= z@=Am?4M~4u*%;q=xy_#l`=`Fd4X*WzbnG_d1yhV)RWan%64l`Lf~j#|VO>NPS8H^; z#rsI8Y2ZPoZMa2Y_5AG$OmFV9m67K4ul_sb#s5Kx-4#}29FE}wF#bVT>9=vbl7My( zB=Y^e5%~k`OV!7`Z_8a*FbXPJHNPC65aWZ%=l-x=^mYxZFhz$gT`I--7WmlL%$}CH z@}8)8^+y!p+(AnQY3+zWBKkHWodsi6+1hiB0vY370SJH!z}D=DZ4;KJLn^PjZ@vor ztJMvxB@c_%>Vo9nOhV{mn4@#sDM3WXNqCWk!aZD{ZA$yXOAri^u2~~}!F_)ESUq@D zmidq6|J_3SL&vNhSVKq*2-_gZx3tnnM3Wqi>#)ca^{S;$9XU)!n~_+dn*|v{V`qj9 z+Vk%kDp;)U zS;_!0kSS?wsY(5JF|VN9^*rFBjhHH1ne<#f7oOOIIcq|*8*8{3rvH6J0*h3xj_{?X zy%Ap!)&U!c85<2Zb^YUdJE>MlIO&oAlYK&cE1b83r56bdxTar!!fK5paLImTL;sW^ zd#rr#XayX#$~tYjS6_b5JVc=m2tk4N#7ioq$bfJ@0YV@qw^2(nYUl-6da})RF*Eup z?xI3IWMSzyZom-X3t;f+%EHL?`RSTjU$g?mg&sMHzazv0+?U+jh}L5b7P3NGAzPgm zg0-_x%u!Cr7xpPwaJ>t7*yefoyK^{l9OQdMU&MKr9(X7X^U@&!A_D7LH0(bq_HYjK zgrzA;TDBbH?vX_x!VT5yURMKo-qW#?!;!8vy7bH|dYDC$fyis(JW?JVXq8ax$BRCU zcB!%rieMdfniR{MbjbUmRSJ3EunbZDD;sBw2NX+NX~Ka$d~n1Qi5t2=;x0Gu6 zY@*PVyl@y`IXg2#=n+panHfSd`7g8A7lD^*u+fC3088QNyxsCcqyBl>0T(mr8ptJ!X)%o+HSt!iSi$08+ z7%RS29vN)2QOO2$K|A5^XA#@di$L}EhB0b<>Nc!aNhIg`sq`!4t3fo8^=fOzLwZkJ zr{x1&uJxEzk0nel$f8my1!SIho31Yd&JtshvGwH2+R5!eL+47&74cGw_asLIZ%2Oj zG)8G~-q@L1;^g-9qQjqlh`2>@-;=}Uknpiy0Bjohw&tem#x>YjtG#@1bndKM*G8Hj z$L8I~ks5_05)McKLD8g|A;F3)vrSmMe72T=K9~keSx&{70iJiL^0-xK9){ru)EJ9a zNhD>)c+_|Yud>~`x;akJ4oM-N;FhVDi(+>gDTbj`424Jg-Q`;}5K(_zdVYb4F|LMY zdik$oARmtAIjW_bH#AB8q%0(GuYa;*%Sg|7;k;nMs6`dLSOiH}iiM)`K zvw)22>zu+J5^R%+yJmS9Z4NbGhN?I^mdSEcSpV+T&dYZ7 zptxe5#K*R~C%xvyd{@_mZfjyMCr?aZdT2~$b%%n5Z^OU!(H*iYuB-fAnH}^jvq_A{ zkuKx@=&0F1>*;!aw+~bn6QF&nWdoVVz9V)~ZCh51FQxtYE8a(#JPVYaQchRMt`Mpo zFV+RJye~ADXOlEtqTkcX@9>zq>FHz&@WlqebpX_uw0nVQ0sezkSSFth6kgE?8G z%j60><~ItxwLC^7K>|*gY0wSmM7?Z_)Fh5{sfF5&vYLVt`e@>tvK$J z)TCA@j$2x!nXu##gi{>AW)*Wzeh@aQJJ7%O`Qqp`b5KDld#+zn%59WRlthfPq;wp} zzO#>zpcaS*VjPWd^|2#n+pLIz>=SU3_M96P!Fu6|4$rJcQD3sFJ8=x$NaNrH+}N|5 zVZfWsVDQrnRsVGW-)+~)a$zSEp`@fj=BxixB&T|#!kWy*#;y%|r>4gzptg1>onHoh zJw$3zBN*}jepc<`?^mXPLe)cUu&_i$GDXXX*j-;75Hwx>Z7@&kDne$Mt-Y)J`W{iy zhqagub+&k|^o6>{7WVvZaarI7biz%ZI@5{h-@%-pO6rY{qthY$1d+@+$38P5l2Dlz z+SL|om6N!-OHfgc9F)^t*^kgzswG+}RuIW(f*wLfES#U>L~KWj904~(5lyp8&a1Ph z3<-A%7u?qJ9Pgs;sDcT;XNVQ{AssUKOhHWQ>L|MTBil)88LZwKf$|B&>Y#FhBOW(A z_EY93o)F(CXE<0`kr6JD@l8DW6%L>bp3|;(AoyGWWjR(P%LAvT$oAf%L{G4KgF5^` zH&%8VDp_iMY41!WjHhx~`o;GMiM|u-~&L4 z;-io{ zh&?N}g3e-5rB8xpi9(~^M^o6dn)S3dSj${E`Hvr&c|tNuC^(s@Dz^c4c>wyZQK<>m z0?h9uvRxov!32+CJ^^5B?0jU0&(axxN!VmGV*FGb=7cw<^9arc^v1%K6Qhc)gw=P?46)N0vMBLj_1 zv<>RhHiU&GFfxbXU#>>Ik&N>1gvw5VQ{K)QkAc2bDA{}`8uQG()BEeWccqt(B246E zXjafR7a*{UvB~GhXOPSA_0r6EHmP8=c+nUnB030dIyB|)5QU2|z|4GR2p}~IMTG{z+gb^aszj)OHXQE@=3Z`3VCko$P=ts_O1ejw%8;kI9 zHNRIs6as}S*VdlUNLV*F;dZZMt(7 zvQ@J!su>axDaNt1{l`^U_W(e(U{D?RS!Ov^mKT<{p>Ot<9y$H+N_cLs64kuGPtogy z+pdiD9tpWe2B+l%Tf~RY2oVCHLe+~~c0RYk>&d+F--CNoMg<6p4TuAqaZQf(CPMT&c_BtcTx6wTil`0@VC%y9f2Q06)JH{t+HhCS z`V0r;?RH{_dpTw!&Y0hjs4w4m`w36ZwNn23fq$++NNC{$KQHo;1eX5)S&SBmQ%6@C zYKhbI6)8aQ6*6WE7W3V@cxPM*1h^wP>o0hxY~Tl1s=kV~I4~&-29Y5_PwX2s!`%Pr zq(M+OT3p^wwVio;HbHo1!whk&)(ie{*X-Xw#CpHEGR>{)MY~~EWu{vlQG&EwlE%-T z_s;|a9kW1v*0B#4ce(*#lqQ!%(dBxzj=v3G@X1`bt=yYi^I`EzM0(%U-{*do_{a?{ ztSyIVf>+a)W{oDK!GPW1V<=XkhPAxwpxW~{>9~gJPNWL;#jHnC1%brUQ$xoPve@JZ zle3;g1TQ3j0DB?zW_!=z<5;q37oyZW(w^%uZn0PftKSLwa8>CdQX8fuK;(;Rc_3#x zX#)UUlM4A|TKqyF)BFwhoif?Z+$0gr3BkfBg|XLWyLT|HU4PMgBR~NG_whR_5?}Z7 zo8^8Sd8qJg976WzZFO4nPy`Tf<5q&(A0F5M!D~GDVYbSU-PYGt2Ga_IFPuX zExB5hHoU1rH>~rJ7Y?gqZ?W9y^`ir(Dilb!KB`@YE|{1ue6>B9!A0NpNSmR<`~Dmt zAbtDxeg3I^*#Sz_LRZJandv`IKx0lyVdPyzOt7Ov448$2S3TLoe zR8+r80*nuqOhSYer*z{;vR|GMCA@aqI`xUh2WHtkFe=ZYzBZDxlgPrSvi);n1eYEh zO}96dSSYVudX@}95(72*EI0Z+HLlcZcry8DD5jm#ylYHtcLY%RC6>KFitY4c-RLWO zDI_2Vt-q0>pvA%EM()a1mvcfn8%A{CXR-rF9{GCVx?AyXqjU;`hN4ZO-2*nyP4p2GEv_n@ zm`X^!Aflcz1FRVh^LU&jp>(~dANwL8>m}5jTSgo%#qwmX#LN97B~&_2aQMk-KJQaZ z)uU87C|!iZiU>@%&+~M@4j0x5oUitc(hN!f!l2Kr%A;h6nCIE{2p4q=3}`%o#F;Q&m{_^ZGleI)DiX^8SQ^_|!-27(8%u|ast=sim9nm`5JR+@L)}^e*`P9G?OBbBqG(;455EQKo z_vbD{{(Oy`Q^oHcb(`o!XTSdUHZ~(I#f_@mT3&{oY=kCs^i+5BR7p$gcBj5+EKS`> zPuyh*%9-dc;Q_)~mvm?bJ`whkrqk}-2h7~8EQtP2xMEz$dW3bfGidXApr=xNoGFHD z!=-m-G~tT+#)=_OORZRI!Nh>N%{|-HK7SwP&pS7U0n$p9{KA;7lkuz}u7mof05d?$ zzZ#+CejfjbIJQ|`)CP%#kCmgV+o9ixUDsSBhZt}M0hB+#;-&GA1*$sRk-PkTt(tG8 zOYb~pZd0Z6(Dqc41gNxn^yJ5@*3n3#fFOg!P2JCOC zJc2VL((Qz&k2zkR4ddAtUr8)5k=`aDanfRKv=&r7e_qaRuf&|&L3bLm?N!oVQ@ z^w~K!;}xvlFG#*oP4JxtzeUM2EeLba{~h2elnZ5w8_kQdxmoR+aq&GX?-?8zg@Kf~ z9^Z&X7&$D^XBqg+_7+?wpoaqT_@7GB<^>8V1F9kM!RaV|38VhUI}-M(!?5I?GK?U` z&{2&{w=!~xD4JJwN33wZHH(nanR&;F$#q4+H3Ky68*x2~^h}9RSLhQrWP2vDcIb1* zU^fEDVY>J*GXckpv@)R*{}9wWrOO`LbJ<>U+*fIkJa{5-R5Bbm#MVRj39`12>ChKQ zMMFvA;fp82d}YHykPUHaDgIRbfLC|RYmz1Qo`C;TyE&ygNDahFv-Jy~ch>bw;{uJ{ zb7a|@%d_8Mujz@^uXL;Y8-80`#pRfrj#)90jR0a~1na|_U9wNf9ZU&CZDV@Eg_}M> zydET40Z0Gl9g6Mmb*h9?^U^Af=HHTa^ik)P&J+qjpzIIqDtWlL!~v*pe7&XB*HuXa z**L)u8r#yjZKM!=a7jpA2wub6Jw~Uq;NuevAPd9~8_$1P#bsrK&$s9$L^e(aV0`ti zp$9}cKBE)l#wLy(Qn3&J6Ne3Q6Ibke6N>D7P}OFe(W!ekK)3%im(KeVoMFfAX!}+k z78>0X|0IK5c%f_m77?3gs8aE+(i#@7)>+LrM1i-;pZ_V4aT*!9UsiJ*qxl>#(Mgfx zj$_hI)+7O*`Nz)RAG`AluRdBed9d4*cZSgpm=v8?bL+HQza=~}s85|n^LrZPw2*`k zGj{kFhFNp_rSRRC!b6^(akA{7ExPTh=UtyF-`78O36{7G8s`+~KMP5aw)u@L*||8~ zV69S(k8y+^rF*Ya#pZr(&GRW647RPNUbg@1iQv@ZwR6RjOcrg%K$`Pxgbz=v3AwvZ zkAT=y7qtE~&lApgx{amZp#3BIP&3(Y@gPwJMUM@u$xjJ$l&g!af(-=-T+} z!^lrACf#cx+#U{1Qle-H9iHC@@|!2ez@l;N!RS;Mn5SG43**Y3dROd7w!Ei% z=U3eft8FZ=l>3muofgSf#$tObq3q*r-4*%JbOR1*EQ+sNw?6H6fX06Zm4dF}uqx_W zp;n_Vv>$pI6rkh%gw;p`0v3^aJ`MN&=JIxS&7gW*X&24y_70xVEi`@{YNxK3$atEGH zqENH{PA-FQj6>knYMzU}37~OUfPESkdi=xA-2H0KKHg+e@%Z`-(M0kOCVL$h$Ef`oZq0qNlrJQxd5q!p+~~yO;N) zxMIQXv@qst1_aF2Q$GY&AAH#M$sLJzrTWz3@-uHWP8FmIe9^RswIznQJ!acYD<56m zqWxKX;95_FJtr_`PeMZEG^kR*KWx!=@d~SDi6xqaANX@MA;Vs9?`h_B;nagL-ct@~ zWm`+Q{T|&>2Y(zt7vm`%8z}Cuf7gGLMYUs78{L^XT*btJ0T7cgZh?*D&EcPm^|QOS z6aqS0_WJ^baJ;w7diL?z3c)^=Bbb=uFNij59R^rPC0A)X!N2lI+okQV7$SyoH{Z=7 zQ5>oBToJnyO(fe*l&L`VNLn;6k=(#n(W*K2uVp$~>k&beHFQATx#LVVS%p)qCSmy7 z7Lr+jTzbYR{oOV7qyF4uQZ~oH_sh^-|b6% z6tZ-eLaJ$;H!-r6@Hnxoh^RX`Xe~SHw|z4Qv5k%?S%9XX$U#j=k=%Q6{;;@PyD|92tJ19sBbGdhCKqfaLj48M zDRQfT62C3Ag+$h>-P>aWV%%bjR;Wv$O(^Tkn0va^(OoecS54R3)Kv)L9M6ws1MRnR zBj(v`u71-R7=nBpBF|ss!Q?s57HB$}<-XJ7!B(%jsoD!!+9E?~AYUzqI?O6LpJRHQCw+N^Nk zys_my5w#1~eg;rlUqIYFg??PtL!p~sL(2NI4V2vGy-z6m!m8U}Q9YOpf*geMOuNwu znEO+SLfxRXKCwwa>dG`(COK{1o#^CcA_JDJY67!8Q&HQ+Gd`DWk%CcPk_C;W3ao*V!);A!J_BrO#f;OY~=5pOS2==HR+OAB(Y;5QLP z3KXv0fsfkc3bX8z7gp}Bg=rgU^i+6@-JJZubDK zq2$35GWy5nm+UWX0|7B>h6d$*#>Y8ao-Q!1=OqYdK;3T;+rL1hkDmQ+Eh{^Y@WzWy zONR=+lJV`TyUBsSM;^##Vd=#0x~FA5(>C(w)Yx@%^jC5|GGmW+1IRLBR>YNtJ@txhP+2Nhr^#qnB*`fhp7PlZWzAP|g%3J{1>HHw@p~Gq5i5E(Z%48+DSjH(L}48XoI0(UA@o zK|06=bWQ_`y@!4~ESbRg<2kTVszK+ys^r9iKxpQ&8`TFb-w~oRcn#J7onodFMAx|& zRQ-L+j;6hfMGD8id~Y`u6%24xk>_!J-aELaFMK<#My$qTN^TGaO6Y^lsNb` zzuPYko$$uNnx1wtAOe%d=atolrE-Y@8Ubv^`GyEAu_1TuQwXL%i%?J~nl9N~R>`y1 z7a=VvTi{YqEqCMT(MJm|sGzaADNJ|4;KQ}neXhNgUdy~-a5g%W&$f^QARF$fY4@}WcCG@FE=Lh;#2}(}1 z)u29%VqUee#7#W%6JJ)p4DM#Ra0Uf}Edbd8teENxnTA3@{kU5Pn}Dg%JLfjKb0<8f z{esyr@sAggahy1jwf;CSy@V$fazf@88KUSECP52iXC$hI>O0Bw-yT~5%68>R3NpL`NZyr7?azuqHp4Um4MGDlc2UCZ___a`ig;$Owp^^|>QtO=&u6cf6|f0Qy~y z+5)=55B2t_mDRWXaZb7!XUHQ^%8tHPg#UEp0Wgi%lIZLAz{%Fguc#$optySc2jN)q z_#bJaoO1v|?rDjR!_*Ehs(wM(NyNS)X{vBK(13d*9FWVAz;rw@9yS1V`7=R23rX{N?|R z`zO*)pG{GpbA8z?V%LdDzrUJ=0F-n_E@i-V7ZsiFtMxxZAo|wbso-G7F!+UawiyI5 z%vJw-Jr+`0x&mc5G|E1IQiOJgl}FNHC?8oo!!0*>u_@6+!&vh~*f$*dj&iQ@OXmV( zd$1c4=;4tI8Bj1-I!t=>%J`hwwh^mk9xlV)nNRj!>`x0N7{$2MsDF|&-Fd;Ov)i!w zU#K)Ljkb)c{IQtarDaN?+g6~i7s@wcl``QdJ}Iklyjn_?&keYqEbMS4et#SZHObSe z*j0SxZz#!vCChtGvq_w{#5TkZqfS*AeVS2sv749o(f|V4elsW+B3icn%6F^LBzo6I z8yWuSXGPH-XnVs(RgJugjhb)^j;|Oti;JVte}kA+K7?9Pd%$%Sc5M7JI>BQ{nbA-H zMWrAsV*FrocBfMXeL6(_gt(6#Lx)OsWXbbiXOTdq_NJ8rN-Jg$sZ9c>&iQgJrIkuS?&4|B zVfFyB*FJ2WF7}yDm!~q%LWr$7KBhZ=k24WxivU@5Q%E#5PTq z#F!D)W)Ol3Q3vG9Q-&dy*^cF_~Qw!vQga>8dobyq0y|FUBOTp0LXmtVVi|6{+w#a} zu`SmtyL=j^XA&PzR~3a zsV0&g8nYolK_MjWBQyOi#rkMwD(7QlS~U_fG%hjM%TE?=p+?m8LoD+TV$w6{!t@hPX#{4KhoQ!?sA=JinWU@{9-Ak<PWtz+eVS-!&F-ed{+v&CCW5d6e~Hel`taLwo#y4+q?AHY!P21J>j^d@7_QSyJ9rS?2aX>hi`7ogY)Uf8&pck57kJ} z{;Srx6rd{i4jy>0y_|D3b^|i4iSY=*w0v9#VN;4_B^rqOr4!(}txMr2*KATw zlXeX;^Y#tx&)X8^>;#bWXX9!aBppF1T-ng+HOaV^Hr{RNwb_17{99e__jBN2T%6r3 z=e9!hNeT?;t}i}e$<+)yXPJs zV+=)sjqf(^DUf~d7?LMfqwy_@Pzc}*|4b?wf~xE2?t7i3o(g)zB(Xr0!j#$*8@aw# ztBPbU-;80-iu`hZmUMNbNlcmWvnI4-Dwc&BUw3vfAv+oM2S(>2*D6MxGWN;z9bbj- z{rX$=vym-^5m+euy6mZqYbRf0&(k`B#;%gt8}zvXsL=c6uO1te!v6UVA0&_EDroG* zL*&*7c47NSPjKOqydql>?61R;n({_IX@Q${)Auj?r-2mYu(ML>3h&lT|NPNQ6`DFD zVLAXHj$cKh7!+TfY`S7YUg}xrfO^2<>?~@MPhVxoQ=rtQ#1h~snm=jBps3}0FVcLS zUw#&s1yVy-NniRGZU?9(Vhx1$sPb6HNH4Gj`mM z2nTHE{SE2Wo||ENJ7bw-@f|EC)gIui2o~N?9GlwjQ0e)()UYOY%>CM#f>;wkN#PHw zR{*{nyP>;VXa0D`U%yTVcS#y*T%>nNQ*2Leh-YL@Bpb1i#;oFQnt4}gHXcBdVjgGKNPCyz&p<2kX<6f3*+|H5BZp5ICsxh$Jy#xh^eoqAc}QNm6<*^HqJT z&c$|^RZdZNdy7tUt5HMuA>BRXPYf98l2<|d5qK##{h_$cRFq-}L~?GW8B%T%o2_k6 z;iQpd?#1;1`12W;O#L5}9W=!W4!Al?4ZO#{zGL#J>*8$lr>J^XDH>$`ewf(Awi0>!mA~DK00D~W{7$$odnQvrQeCoJ|=@KMB8U~ef9Gi&c`Np zh%9gs4rIe&TriyG2R+^9c?GhAkgGLA1V9>!lhApJC(*2SZO7CW-;5HgU!o13oeh0{ zlUNIn`Nag2_#^LGt>hE?y1oo0j7NDWMcIBB>Az)5JOwTkRe~1y`yol?n)iz?=3`^x z4;rUrXoto$5I!N;6g5-{h>NrrjYPi*xD$60!$G6wv&xy>ZS#cnwjW*{DALGTPC~{- z+6LfJ(x((y0Q0@9@3|F6mD6zdIyxKp*BaYxzA3WzY323`cr;fS%tonwP0py6nBf0# zZ7Sl&r^2IAyxo$cHJ8`LPwvSgs3x&7AeNIe(-%UNc*q%++$y{+G$dztFP) zm7p2&GZ*j`q*V(P3g8G=7(4{I)5uI2C<2m)6e<&LOzU2QS^T&+{*MqARI`uj%u|Ld zQlbblA@=#Qy&_=2oIlO%^=&H_Q1Tm3?yRB{ zFS?^I@|(%|9BwpRD%xx2*IIO&8{t0nKea`?MLJ<=U^bG8BZr0T+ zL%Z?{oss{&?LMP?+{1k@JWa8Ahv9H+Pxcy$#sGe|O>F`SY zO^$Rsl`XYYCjHnA_kOO7e2^Cmm>$pukzgCVM@XnSsi_m}Gqd8*x83`^(dDU`a*E~A zUdQQeb*@tLzmw{H?ofGy7@S5TV>$!(tkzual48`s^K{%a|E4;6f+RQYX*Pf_x79v+ z?GIg#EEHuVFbvSk*b$6fnDhN0N6Gwz#H}?@DLRp?O@UpCy`ELvo(1rgOm)L%PXQ2< zVOJec6GI-5SwCOL$bwJ4+`--Na0clrDDfR>zq`^*z$2#tuTbw{lt*l}=qX!$wZQq)W`C zLXm1k03yY?d(8h>FPLTym?pU7T3`u#|Hd=PzyqC0qSu-v=TWi5ngaDr;5=p#T?S)DtdW>!= zZP$Pfrmllpfv4$R!ieG%RIx!RhixyoQnDX;?~&>y1#_W(6%VhKO!fPZI-d@#hKyImT-ncDlJ_3m)!_ znuR5I8z%XUDckmhc1cH$=YAPu%#Sz%3*#TOwXLFEt3ZsC}pVwgMCICWcy3CCgR8ssYnlWNfw#~^qNeA zZ5ydd$sE$hWbnKs^~4h!fY;@8OXje6#$q3p>>7X$Kj#G=+!Kt^!CZiC(`-mucr#8Y zU}f9YW43X!D`q{=tqOQqVTgp5o1L!jW0(vGTd10spxKubTYNQOIgU}CQx{6g4e-U2 zl`XkZ-Htg3R;K{cg{I~>0)pLa3FBw&kd7GS%`Fv)2)swWOTmc3tsC7{;R}bn9xLb+ zBQO16J;W47mQ@y4+?d@S^QKW6qLZ5AU&QG@v1qIK`!IIn$_=y;HXg!QyO`Eis&esD zrbeO0)%xdUFdzlaAnt&JAPH*#Kv)Up#E3RYTfeh-J^)1BqRQ*{0hz+|(5Sp4(P7lR zLBZ=0$l}v}5|BsW7p6%YdXNdAWFBhb-ckK{eh5zH@f~7~?~mb{%NFDF+9e%j=e=u< zJzCg!k49=+*}FTROG5c4OR$$!#O~%N_Qk+SpG|LZ!Fy1KS?270Ls@bN#2HE@Px>_8 zx3$|D%3t(FZ-1v(RJEgOigi)aF)|jkK1>M`fs$o~4QykE2>3*f^A4p%GCOxG2MPqK z6F>%beCN?vVgvHsie$;lkW$$ca7j3`Qi~c}mA2kCi@FRjDi;&&oZ3T# zJI=>MnSi-88sD#M)_8Zh2n0WJGVUC-%e3S_GRA#AYa68c%jGKTwk;e-VZRj6C?f%(o3sL=v<%{Fzb4=^Irr4f`9H{H12(_7|Udgr26x8sZXSU`nf;SYOM<(&n-YE?HI)11(AJS~jbK8!{GxI%p*2a3|c6^tVOKsH4>p zzu)XEjZi#p%Ho|+9-n^dwZ5m>JL&DFn`!yT3?cZ~#%yK}L%oeKrAa4{;>yfu*IaE?bR>zb@Mah*Sg2Num3rW8Js-93Mi%tFT@BOVAXirIpyiZsvfJ6*%FO z$(QSI(jA{G?2dN59$VI;3istz(Kq&w`4%E65DOFWhm$gWi`_~^{Q6Ynx9M90st(O> z04Kmi5p#w+Eo&)?zw3ZI6vx{P7e=Yy-Fj;h>&==q-wW;}jyCWJXDoITQoMPe_D zk~F^G8rDS_4N-^cG{UVb23)1l$7<9)*?0|MBp`PytJI!In9r-izh&ub!jUmx zKBi;R$FcTmg8ef?cW`6n*uUWZcgKYoAg2#7+PaS_u1ACtz*fxYpQihBjH2A};-;q$ zl?Iqq^kw_6&*?6n=k!TL7{A@2Z=2`_L8)xLMl_BhWHQ<6MQ83u&4y>bp61bxK^mqV zKS5cm4nP&fsE`&@NBg*|RTP}bY+Ry43Q-mX1CC;Ja6#Z2+jztS0o95)SVgB>1F1@4 zS9*t@sn>0Xq^5P$jL4OgF^suV4u!-U4)G}7SWfx3ghk)BtUlQ-z8F2zdc-`$X#N$9 zuRTGyg7C4hE}sg^>qzn3#JxQApYeA>hh#<7c8#XnQs>nH?h;9@ekyr>!u`I!ujt+^ zIC-a64HH_-2Yz#fb3!wO4fzL4eQ)P0^f63kdb9Uz>pvA-!CEAwpHYCVc+ec%?^wb3 za7%!nvhR*KLFd;Gv)U}}1O>M=O=|EiTBqnkaKWX!$~_#-Hi9%tlW;wspM5S7bzEZt z*7E5rFF?oYUUNB+a7SXp5L_=zAk7`OT<*7+q6xTlOPEWV^B24cRGdY&&Y9O6jewu| zu*_Q=)i`7d@;Kx+Pak+u%!qg7xdnDJk|I)(FV9K$2w@JFJ{r&RDN90f&oKN@_QwjJC~uBd#69U12iiUEkU+!V<_9`wiyNOFPP z&Tjwp=SfR)n%+(><7XAp-ApL2kAG-Hl(ORnQR`g7f1xH5b3PTqdpe|IZLy{YIFoS6 zlHraw@!R)*J=hj#F@$zLJ0wTJiViNax+8@UqNw`Ii54X7=-&_*{^HW~R&cGk)**De z0+I6X=2D$y`W|D2N2x9FQOM3?X{plaVj#o{4h%U{ z&5|Y$S5IJ722mg34G6XG9GFX^T2=lP(N>sz@t&FS*p(;TLm|b%S)e0_dFH3?^M7=K zX;ec07O+&Z&XE45+ttl8<(s-7Mnh1+Wi2PyK(N{->t-{($a4pv ztJl5`Vfk(cfTsl@veF%#hAKu*E2F~Z%L4u3QEo#m*G2F={-&#iyLzx@aTew zmm6PWqcT-Qs=pRw)(Zd>r;n~MM7W^cUW*K$OPYBIaYYSC3H*M({AcEqm}dER8U;-q z;shsBXbm2ntnh*$qTqVGGY!~Cu1};c zUOR|!8QfH$N_sv`Q-tGa1nR(LMPW(A8?IEpr;Cqym&wkmQ z(E5Jg&PK~Vo*a$cW>1gFwgk;Cp+1q$6ji8|9&RVLX&}G5vPv@p$NSl5qmGh3iAi;H zpM>AW`F*}OYlslRS~?xNyFlJ$nT3^i8&blJI?9y$V)^U4ImY^sUu)@7O44Oo6r^r4 zW$pZoge@WDI90z_oTN)*V4D}TPs_n=G`0CIv&V9v zYd3f_MvTc-u@5;A-bORPew=-qjo0Iqjb3z8KQa~I#jhM2v~gNfcXOepp|U>jpY3z> z%@MhHQQc>A?fNY!k>(9r3Df@>B4QpQUF8i^bgO%D@z;Hx!qqEgN0=Ztbui_A~fXpxO@4n zn6|ML@(+fr;A+r?=PjPP_M-+Q!0z!oB}?578?40J6&ZV=wO4yPu*Y=v;-%D}v}m`&%m+N0I+ z;1Ac?e0SInKc1yo+{G)$sM_yY5Xm)M9d|0T3kCTqB_QSoMs|spA;~&e0)$>$fxc9w z1(Z_9ojCsHZtQp@V1Q~bbwo{?PB;=F2}(AHgw+^T`sYicEc&FEU(Llj4l?U8U$1f8 zP)BD2-E$}y`??=IAHGqMQ4{ytlb!5ulQI^*JLti2mUI&NJSEzVUAgkVLhu+R*BGSwBh()_|xcoZL`@%O37bN}7Jah`ua^4&rXv$1&7m<}19m^vQ&op!R9b~$o%deXL;YM)zrGV-NHvI?C7GV6o7pM8Whe5o84^@~hdNbw zp>HF#k(Gw(UsO z2#}!~Zgd&{hBIe^EU3t5(_@}@`9Ovu83o?jS!WO`2v#Y6)ZZ{#I@kW_#^8E!z-Jn) zx$vr!C>#$4hSLZgf#!L|*;jt>^Q#V%GHsN>w}yJB1%ugP;QlJbl9}Vp$Xjw!PuU|j zgMgYat&cXwJEW9B{I9Sr$|3PN>|BeQF*P%E-BI;;Rw)XrG>^`Bk(^Aa?GTVb&*KZ_ z>>!(od}y{Zte#ILqV1!li&mf0c_8_0L&V%p315=^8tO39qCdu-%5_CY$iovZ?ZZAq zT#bJgs@oJfVP`u?0YEHY9>}Yo$%C)n5xRAWoxlFg9>1osb}c!)4zjuuJIq=vk001T z+nMl3O&0o;E~GgNy@RWGY1~fgCSbRzFWpdJ#3!<7Q|2loP|7zkx}rg)jLId4p>Mcm z_-wv=o|R4J@1r}#(mIbHR=P_(Y$sshNBT!)wiGDYS(xTA2L44XY&ph38NzxG*wPs% zj-c24IX*=VkoV%XK0;!(@4j4yTCXye`VX&hq^XO=DGA2{`v&-_Y{}ta9-0nHC@CmO_N^tB{fS6!Xt*{G|DZ#qnpn6KeSs(d#J6dwDZ0~ z^&?1+GJKYN{|D^Q;1gROZdq?u9ZR4Q3I`z(o!W!0=@%BzN@c**goFkpS|lvpeSc!S z7*f)njkkk;7b&$doTLE!v8Ee+E)J$p=&)gl!ML9{yAgR-AxF$=OfeA@6JD!*o1uIt zu>eVQ*NQZudxnc(dnUYF99%7)5~6UD03lO!g!=R3znDfiv_{IlFy}35-tTuG7u*Ud z>kj-g^(=7svI^-_iBWUcNbMdG{Y6RD5|(TSGpQ%kRrj$&>I9!Hp5*P}`J7ekI`O(1 z*oTLzNyi65DK0rJw)jr1%U@7R?)jMVp^MCrA8%b~n96K`C+dah(CP!m^JA*68)Iko z$YJs2)&i~F@_Oc6gR57F&EEuAzxc-o$tB$71s&hqh{)YtCp^(c4%4JxROljZzDYUP z(=U)qU%-d1`sjY=tq(K6rN*G1_&?(M`bS*|cKTnnQGd*+20P|3k>gus;`lX&cSQvw z$n?!?P>n~UI!bs!3@87@J6F<;ESQ)_B%&efnRI}8Cx(TtN+7_$#EgA=a54^nt-C;I zCR>f%Am2fWCbWZegq92caJ{+!pB&_~gfre=j|_7-FT1f{Gze>x>wi4Z<*38gwGbNV zUl|Zj!oYl#>+ZeM*jQ2GP7c}iGH?*MrNBesRLR@qKTNEwYL=8NFTw*e0SH?-R2DAs zk!eBZv}>z=vSW{40*EgS>NddJcJ$l}JYoKAmVYQCGB%dj#R~4tqAjmTt<Di)d%@^q;EiQVlh0R)B z)d&mFH^rwvC8fWrK`1TAOxE%azYf3baJ|pJsaUJhH`s@p^BPpnHCJ`Kn zT=!{Y7zA6Djgh3?ZedKsc7S3{4F>7E_io#_U6Sxz{Um+y1Hi5f;D8@60B2T|5Gv2z z`s~B+rAKO5bSG4e^WtFlUIp}8KSqYSd6ae$j$=ybL`z*Qvp9*J1A4Yjll7Hh1XIg1!#u>2O7dc+oYV@g_?yT8$e0e>1p&Fe0QQC+D**heK+3ErzIi z%bjt#6~Q%1t<7dY&<_?}9m`<5WXf1vEpFgU$nGI{wx9sk7+~7LrwK=Og_a|7S! z5gj=vsIZ?KsV)06opLB~8~!UgMk1J3l)qAUXmq62G3%ytiq15fM8;cpTBK(=vyDtF6<3uZA z^{&aJ*^y~E>G5HG6bf1-9`!ZrlvX8ztTYKT!d{u$qvpqh(RJ-Ap}eRcaxIlx7@81+ z`M3!?1$`AmIk%tz^(hT67;YWshNOmc-xj_DO-9#n2l+z+lpOiNz{>&)FCG?7&`*EI zo=oPqI3fixQWKfJrQcil;6Y7gbh#(s_CUaJ-!syy=zJrMt|C>>d~UD?26yAq=Wd-K zx~sX7=ULHW@t$<9b;|HMkXACO1DPh>-e3;+)J@gQ8ImrsVGgivhXUS8Qq}(|+xn}n zY^;WrUkS~R)*z%{0<#F7+dH2Gy64g(#^A6p@8T>Zej+(uX!@d- zjaMiDf&RfbA_m@=`=I6oL6%0#VtNwfxF6?=xISvh!}9R&vK-#84_)*m=_1w!#Z2N( z@1r2#8rqDcK&7-fh(AG>>;JLXNW1y{P)j2c9anG?0!%w}%@As!heFV8=Ngwsf!j`)5tG%>gIt&RC|#4^MEEKHh0*Iw=VIh!(g}sqp)BqLv|j_Fht8QcHx5?{ zh^^Pe)Z18n8lgC6cOb?J%;)KT%RbptSs_X&AAND15ggA-ZTMVh^D!Qy-07DZ)YbiQ zxH$DE)lz;L)p3vxbZbX+$r4pcm2li&yNNDExtF2Cozq^|T4Q6V#)CS%afw?jE`0;7 zUtUujeK9O~%U0bs@>}(68sFxacY*#D0d79{pu z5O-NUl|PpR6!&uM=3Q9)Di4Ky)kkE9&vQD|BCv%Ur`Ot=NGejq}` zQz%{01c51FvqsqUlB>rA^Pi}M~&%%{F7fT3f{Xde`J5~EdL9Kji z=@Wyu_v`kUwC~U&mKI-UvXxLRw|v1p~*izCoW8;-yA5n_cbH$bQ4X+Ze$i(AZb

      n#rv9r^Hj@imxHVa{wbDyy6uhk)~nRqzBAB>c4p?$9o2`R8*AFF|GnK+uiEIsL?I&*GN3Y{#8uxj~I)OP$o;qr+jo zp|>Py{nxJ}I)CHa?+F*c`%Gb!M3^i*h128~dt~SMugH0Nbb95!@2O}{d{XYahcO{BKJnJ08r?Jh8bYur4SiVPjzfO$7=+EGY^E!1 zbDeEUOtS{t^Y6CiXB}t%AZAj?_={9yit5st!-W#1EB5gs*hZGNkz9$bgYJ#f2$?vT z6)BY6kApCxii)u2Bqs;XQp>@A^dfr`sLgsYah-U+Nt|U!#fIZW@bE!zn^j|)p z!CV4ECD?;jo*z zmVQ-cyM$ALE;$JrnyKz!5TG>wgO%CaSxr%gae4HAEsRQkwx#>$o&?RXxVRE}HyRuk$|0``;?8Kt4Xe!qb% zOQv>@OSh{*S#=i@b!vmNH28o~{xX?Nn!XQixK%T-Svq2AK{#Nk~wWK33N^ehV`JdIQvCWa`f=mSx`QV;$*$iaM_Xx&juHujtYwpEc~> zR(9;g*R?FUZMA2zW)}SsSmsM9S&cp>s*U*|H?o!%Xj%Km`01T!BjfWIv;YO&M+4u| zWOoJt%#?cQxy-IZ<{9(sXdY_2(*JQRvy?*^MLeBI;f}qXqJ}kxkyl{co;HUm{@1Q4 zcNwS5vQ}mj%qiWO$yEFa4;b;kf3as?H7HXaBe69edL^SYj}pOT?PXL04~c=M!h41H zpL?6eB)>#4XMh}U-)5xVbqq!#RI|7a{uSmwVwNJ2i=goF(mUDbrYUYW5a1Ep^e5>t zF5(S+2#d@tdWpizZ{vS26X>}I3M?_DvcA^Uw1HUonx};)z;`aQs@%rBaTj49UDf%| z56R;|qVai~{dO9Cpu1n8;LsTKJc7_g(nB#bLu zy+#Sy>rE17l?Qu5X}B-4Q&K`=j!YE;%!m8}xsL$xCD|&MS}CCRK|+FUt0N|-@XXho zVEqJ~!ZX zkp%NcnA0?=Hl;6jcgs z)zm*IqS+E41c}2$P9!e|_l4!?E4INKHbjZPWwH&SAy6J8`JkA@yGswecvG?|hjt?o z1zxMYak)1+e^VmLS7Yn41&H96xv=df3yYU8oT}ra{Wt7@ui+%!F}LBn8Q#3oIt}AG zH@y{w8N&2UkH?Uu%iES4u3V3T!}0f>_m*=cU?vVs@KoXMwZ8B=1Od@!e-hyAf@ZE@ z>cB~&z{Wfng=t%3G$DZAkmktk-5zd5ed{CqSp?bPe5>s zsZ(@NoGwk)lU(C#pJ(0FsXHJke0IEL=ogo+$1XmFmRJ~((~>*QdpkInB5CXpMEAqAJWwmTi~!+Cus1cZLU z0G9er;OQI=0-x*kJuF*=?s(P$C>s8kzlDq0w>2W74WBnKi({gY91gV!ax)^@(>w z+{S+iH56Ls_EFF4uGHc1XLi^I@Ctcszr;Ix2DNzw9XF)w*~H>1p6$Oyv;aKGa5(Da zPuE59olR04-ba3Glq&+@vQPxpl15BltB!i+8T*>~*1jAcqTqf%_G?R?+JvPIX_+}V z&=xvO6Q}oFwr|-ZyXQ}UmdR)^DYkK>2+`T`fTja|F8QORpfQ;3u-briLO-njV>Weg z{+QCrU?>%5U{O4r{q>Jc&&``ZkyI#fddAaW$^++{i-~9*e;FWd{X$8=;vUznqjTz{f8c})F8e$fo&)c6Eg}eLpkU>0b7XISk>wLdiZ(Xz!+}9)3%c=_tS(iyV#W}3 zfmLm7tQ1RxXTn{FGpwjC$XOPrz0iC_Q}VH`7T6OD*eNF;};jrFOEh z);-xFlBYc$Q<6bYzdGX@o-E&crD{wE_TJy4GzQmtzh;~$A}qB*C0x&Hl}IV5V)WkM zHOaH4X)hYV`Lx}QmRCqchPR6$Lw}<}L!jnYF!nJlFihS$Mz7F8{}TiuOnFu1rc-n) zp^U>n`~a7V{)LRnHtM#+zThKVnn@f{+}yk{yx2Sbss~AHo>G~SUGY~v$JG72lUO(_ zO1?JyJ|3mb59)ZpX_L10v8Te0M3@B0yzA{afU=mvHM)}O=cA{vQgk(8w1RrU$41k{=#;=si%Pbe1;xYeV@Fsr~EoX$f$J-i*(=Kwpke&*$KvY6GVN z7vJL~8Az;0J){U!m)WWU;L@LK7DqrPn#NPBb@`lz?;unIhM^t7#=?w>_sAF$BzcLp zgDmm9kGd`{Y42QG`+O3+YWDqoL88Ovc>e^$<#l3BoT$FTuyG(_lK$*@N*QGYQ0?JF z;-IlKgi;q$?4chO>UTgMMvIU!`XubSy;EQ*yA?Prr8M(KA#v10j1Uu!*J@Y0`m~Y% z85Nt}3k8>!L8)7AJkjZZrK=6BopJ{*@ur(W2oS!Gwodfr?HRo>fg!m$aamvDJ|}QT zdENnIBXu1Po6}B=blN|(e1sKY_qp3&(QjMO-#ELj^q8|`wJiU#pJ;k&caZ0N%lSTx zK!x*Q4~eF6u{2c`dwOR6@@nKzn18CFU?QS5)lJ%I9MzgY**-$w-lr+PK(3R6@OsR2769vob&SdF z^se%xVG$Y`RW}j_pw)6x9HL6W7ya*dd_6#yfgx)@_QB{U97HxI|Iv4O+G)Ti%|oBL zEEpvu6+FmF019(xApVuqo!eygK@6D~3vRjuEKlhoB1Tk?jPzCgg!r)CVu+vmJCPAd z&nz)}R@%r^?U1k@BR^K6SjjBX7H^g{*3dl32CZls_2xyfiSw~a&iq_W5%Y_P3=aqW zOk06&{N3+oNKl}pN=MZ0MRA?~#Vh2IErDU+e2RC7R|q55D~t^g7e=HYRq~zhnpJwV zNaJCON~A?olda_wv9cVb+cB{R0F{V2m#>a4<4rNI1lpH`0)iqb0MI~wGQ2V7G2zDe z2b@D4h5y^1B-IFh-K_#O%<)Iwe+K5jz3$&+>*_>39?McVX(4`=i}p~*IZ|DqQTFRm z!i-~8`sGJLeJ0>u5^WZt4P1@ea_F#(Gs)&hHRKM~nh|SDr#bEZVKu|d0b|N0m|+38 z5#g@aXggmE@gXqS2H(Gez8_ZX|K~~w%&+li;u%iC1zSbk_LKx?j@dWXWQM!B860fAb%YJD5;r zCr}7_b12dK7N@6+oIEs=74}1>*6muGLZwaGJpp&5;2inHz95a*%KcFk5(?9|Q(ElJ zQyQlL+0KxnM=CU1QIXC+nAuj3bM7OhImDeBl#jTK%64w##;_0KBA)`>p<{ijN?x+x z5qHc6YQ;{>=vRZ~a3$`BhyCg>V9>%j*8D(7p%Dq-Oy%XMFfdmwaeGfbP!8=jFHcQZ znxw*yLjf);A2?%`=W2Jz!(IHT<*)g2He0YUF~l^Z?o0l26ji)Z)v?+e9xq6O#*GrL zK;RgZU}q#Y1r1LnJA_O0-z0Ie<{DpP?uij5TTdL=gJb^K3{0_>3IE2zYHYbfp4aIB=Td=pM z>S9)LXHDvr6G(H+u)JkiobkZX>`|!4x;Z44n6MYJBVilsBk4wLi@JZFfzlp;!}Sh| zRgi=)U$l7CK6b$@bg^N@to{GJTN`;;tdar4fjy@UR8zh47e`N8!=oX_CS~kk*UrY| z_2VuJsozV+%41akqh<=Zt9fUEjtv6 z9{KS+I({LK`{(u+XC}w(Vd`B$Lk1ySRUwkF8~{Y*BO2ly&(roqY)e90`%0euh#qCf_R)%^@&iZ{~ES6*oyqV@?u8jpra%|36^$Rt|N+z9& z`|v*=H4xeOcH7J->y)OQ#c8xPg>~D4T!;I zy<$RAFL95gR;@RBG{qnGyY}SFL$L19CC*R$2Z=?!vSZ9n)o5n4WHD%Lj9)!jy){fL zZAP;eKs<(&bv5}1Ac1m-D});{?qdMwlPW{ow9(1E^aY~l@Miyff;r*+KVJ3IBK zwz(Y5s8h2VZ=WDQJ>;{uM~0@%VE|X}Tpy6N)~xoukzW|ZBxBrS5ycwZr;H@GD;PGr z0)b12S181*oAwpFLju6+J zSvS?pz?9A|(Z;SwN!7kw=OK}|UdUO=B3yYtIyTE$khEil`BC-=4TjS+dj)upx}wJc z5cf0cWTvNJ0p4P@%qtv%i+vxk+Hr`TSjy9$Vql7ulFtpG9a${TVv)+@32N}|33$qi zKJ_wo9L1=r0ivCW=DQLG2cPdT1EA`l&(lD;=6Sn=eUIbIA@qc6Z

      mc=IYqD9im`uhiy=Le&t|7yJ_9kfU?I=MxxZ7Sza6> zr?IVUzTG_=eyUS21}qY`48_M~p@4X1+i*EQeG%AA(FHcn42MOrBs!4tcvQy`HO zq}dgf2M5avkkAyV(-SUBAqcN@BKgj?A=2X);vK*{6;0oN4C9q%y!xO2%gSK$;awJy%=%dUG^7t@-Zh?nb#^e> zatTV_3PvjM(Et{nf08vA4Yf)g$jillq+_ES7)5li$pHtDs{E5WF+=TeMtmPo_{{s` z=*iHE)B?7U2zurDc6*NQs!$F3siY(J8_HyXWbcT;+sfWg$fZyIn3wG|=%)z<&pLE8 zUzL4f19Up?5h0fs!K__p1i?in@lJP!-ArkY=Hm^^h!c9U-Jhcy(SvnqXIx1j5R1Ya zKznX=kHSi?H1(_^clscftWd3?#|)P|?rVpjyWHP?WwyKTie`f8i2`;h&;Do2qUyQ> z3i>RAFQT(xaEV^0ybl{TWR%+pxYZljnXh z_E5)<_lc`p1jcHlRVv5m?~lsmQ@zU9hwA7@c12JZUf36+4WLn5Gd9dQMS zhYF>opwDo$(Y@8I1bnqH5=AYjGscr?uDeG|s5#Y1K8gg2hYVf5t@@U)niwdUD6K$>=zbaGJp_UXVC{Vl4O&WS-s^Zy@Q+~P0sczMG zH+XT}|6f`lV_|~{Ap)v@+^#50%RhK{FoXCg{~{#i92Ku-wq(*z2$&cm9}n0rjHola z1Il97e(7!nSZdVGxhfI1!eMI3jqU9yk2z+LAxY=P z5okZE2PRSIwZ+|qbZ|E0J%3eB`tNrjNRe?~XF?gQrI?$gd3IaGNI`;2cwtaM9LvTd z6ZB8qS0GA_67HBa!-zYE@m9=SvXNh3?@Aos2}ryLNoT83o#TIS>txE~>i)Myuecg0 zvbq5_H7CfCO5Rb8eLbPI&d8|Ay29ma(vSZ@D4N8-xkd%;R-s@xs_q6@t$T~wJ!eN) z+eetl(JQ5q)YwZ^;lci;btv7X8IXHyLdlOrM!|ctzTgfnc6JK!*`*$#S+hg5A6eRA zSLjxz698yj)9%tS`Y9cW*X<;4JXe1f@Kjg#%|;75t=RVtv9b~&MNN!%-?_)KBtog^ zOOTJR#)8M(@+Lou<&dm0D0CeNnb73#-zT)G811)a&-%uUF}MZzZH~oB>1Qu2xlnch zmJ6(9-@ubMSloRVCYAx9?$~T3hZfBJAa_J+s)*mb66dWnbUnsPb~3|5a<*p=tEnPM zd0I+}j*PK&-0S9wc;0M2{-b~=SpPy+$Iec!^%e3&nj;BSf(Nc&p^+&+Sh_b36&?_6 zE$nC5^mIZWEPAHrN>HiyWbObo$o3xahh9GmL9z3Eajq=?ZOH<%VuSTc#kp&1!bAMC z09e^{NGwfs8#S4RxJJwT`1-bX`>P|1o?Pf3X>kh7eWzWecO_x#6^LF-Ce~&_|1ynU z_&9l0@+f!@o!j`4*V{Y?{9Ws73 zLXL|}ZZCXTU_8hy!yF3r78w3Mr2i9hK7H(@nBzQ@g$18E+BHnbR>Q-`NLR&y4;a>I)1jSkmfjy%2)4?@yEijB|h=ET7=xYZvIE z!O8I1m}9|q4K#JbF{2&7GJ$KmsLrAdz%<+lB@uY-W0T2QjFJlr`zY32W9+aJ zkPV^?TM!#jbjNwbz{-?@iI|f#3v_B6jpB>ggKxjkyO2Wi6Q**@?wn3(U#&0SWwhk; zyQEVOhs}FJmt0cc>tN?1Sll>*Xb~H~wYcQ{87S|Ut7qqg4=90nA?hD7v`)dZhsP36e+q`&K8y{ZovZ62qb+$Ox+ zV#y-U^Anc}3p45dk~Q_{(bNM?r(%CQcv^HCYiIIx)C@x-1g4J{Tm=+dY~SH++(B}Z z79F@JSu@Ofor;(OHVtB{;9v}qH(hj$P#Vw_z?J_amqnZwXvS1Q)Yn-!##5z(gf|38Es}t! z)hbt`P2+<4AftyKfmt+Ti6xJeS5@qdI$C;_90G8?e$Y7Sqs*EmfbQ4{ zwagp3^IBR%_Pl>scw6#6Ba{Q#!4ZTTrGXEx2>t`?L3{wN2yyzw!9Qt2B>xsIv(YvA zP@}yud^!$GEqfEIC^?wnAPw%tEjNh?rlC%EH!J4SLL7 z>w~9$J=@PDE%pyyG4jm2JD4gU58Rp~m0wiV!TFnVP)fHM3Kz1Ssw_zL=-!DRxQ<}} zN!2tF0F>zARau80NQ zSj0=x;78iebjHpgEwaARh@p-el>H-k>0+cl4mTBQH70Wbe_yA|-A}J7O+iYO4sgj( zFIZe3K01Du-M4dB|1?a^U6O9NrnwPINK48f|xRvosddDST;3jo@}4^e%`GnS5U8tCS%3H?mX?rGndCBDLgsj=Ay zHq&sxOcp%b5iWsUihw4YeJNW~cVlMSF;fhnQTd?y3?@W2SPp^RHFmh+^na`!j z80E`ivQLuDt<*JIDq<2Sf-9Aa`yerLBoz0YaFZaYKo3iEF|s2Pvre5E1uqe_U??ZO zvx5H8nX97AOZG!64q#^z$r_W%k0u!zrP*W%tuxT1oVyHv)ZI^GJdyLPfq1V#_I5*+ zQzm6k3_kZ~1hdMqoPQ>l&6b!#-k$oa{xb@tpl5k2%b&6e5@{VLS}cJX{7aWUrzPrL zVLa$(G~eRST0k2KaR{j|GTtUcM9dIlME#`EE+5=|)HVpV3RG^=Z19c#u}AwmlW90P z^4m=8xdcI?ii#=z3OZLAdQ=TgS~5R#MfECLv22nY%8D?;si11;mD*9_@nqdVYeJBX;b1mp zB=7Ae=IR3VA4U~Fw41Ln=B`JHzt^otfPaO<}cIX9IZJ zNfc5f%@cL4zYla%z69oOkiWxG#wFnW8kq(G^((ZA4xmms>F2ZKrrYXUg_$e42E`h_3BM z$zsdJ^uMqNyu@ru6cH7mj*+~_yTKuPX>5Dtzy8dF#1B4?R$kkC3$WxY7o9F@q^m5o8aL`;adu~F*Q4X5*dHrIt64IWUQ)|ZD{=uwEPn9ECr6OiR0T~U zMk}bc1)&a^SH;_)@Y}>XC8bKR0h)8=Q_oFt=QOc-TaQ?;CbQ~imYRvhG(0x-MnOfI zD&X*(S0<#dzvrU#CjwSnzi(mbc&O+f5#5G3T2>gU`hSi|3Yb&@ zIIJuw^VO#?!EJaR*oBpL^pbL3Mn!LM*0a-|J?jvf9}=zKUs3ihY;2A7Cf$)C=p|#Un>vpx9S_KpTho1raYogUlPgx3mPWR5YLRtPV=?hg7wjOl}^at#1Wz zumU5cRQp8yDR0thO8amSR8$jC8?6!*71)(?YgaXjK$DdqoK_^vzEdnKnl4iYTSy#;y~Vh>y&ZLz-E+zXuzbTsN$& zzi0}v;cUagSI;mR$PoY-ZsDP%nyke+=_-B0j9{yjyH>@@CC-vBc#_QE7O+1s+(Gqp zo_B6>!FgcPYxd;F{tIGr-j#_%CO@$gy9PxMIzgc?nhWZ=Ao;lu;NMs_+Deh*f3u2VC~N+Cv07U`?L)qLe=w)Z*&w8YS#sDrY*ses zp>=2~NDaRV{+9yi9wH%9+Ygv543qNIM8|ud)h|<~$Tsjm=*vu5^l*x&ZJb@VYz?vY z&T_~IUG6&r_w*<38?HrzaTwhx4vYTn0YH8Uu8#&e!aGlH`>#Dr=T0?gki{gx1n3`X z*eE-yW1IQclgPWS-16LnXKvF7N)TnIq!ZQW^vy7L#caJzhT}!U+-br#kZw_I^YZWR@fC+&eZXx7%GWtqKoS73|v}>%QD3nxM8fu`PsTji@txc05W;OxEH|mNAGAj2xxGf zha*X^OQGGhsy=~prwK{@Awv9|^%`OPI7tGDmrXV(SNS2?F3NQ-Z7#PuO#5ZRMhSxw zB+ZM!UZ?|_g#Ej|2H(1Js<5*Nzrn|V09zH*zXM{oiPjutVWfJvz8p6Pb?m<*;5^HI zYwa{wa|@F3hI=z;^<&07R8wG*{bf=h?q6Kmi0yxry|9;}jA1x_Cu!LIde2?^+>?(V zV1_ej5eXUXm!D7#Vj0HWiXA&hLM^2G=TA@K?`Tp)!pgE%$9$$ljM@i`ZgLcdJHic6 zD4wYB>h*pmuQXT4uHlb=>@@DTbw|LLoB--K0ooXR%IPp9%Ye(^=)t;*#zI~j0PS^~ zF4I7zp}x6WStUYhtoZSrDml_01#|GkC=YLo+|dJUrrnII(^&xu`((;DQYDA)vse$n zv8{D+xO{rG0)5BMk3PTqVXST>zRo7u#h`b|PNvE8ag=5TuDgD%vR1u*nLT)MN;w_0 z-f{v#q9-iehmiahv~(+7f@u`oq)|y*i~ygR<4ELjBGlE?Ij8|dUadD~!EI0DK6R&d5H(xYWAn^&aMsPP$$b;s8m@k=3b<&Z6Hw{~Z^uGEA4EgC5I0 zJ?(vwzcolB502=;55jI1lU4hrexg58`RG{B0MCDl|dWM2qqs?e$C ziI(}V{fI%%Leh~%OfBKW&|;lFSJ3Da+UuV5C1K7TRZo}!2RC)idiK&mZ+o5~jj1W$ z_bqKI8Eq<$AaS|h9$$&l$PSriaur1eH|3mq?BKyI4`)iGy(Ntha~`W(3*j{sgo~k> zps|pg;7;d!V?rr@Kv^vr2)Bs`R#aIZ8r`G$=HcYxX1K=PWsaIPhuvt$on_&*60TOQ z7cCI|Q1NtF3D;2D|5u-Y@Yd4Lf7g3S?Qw(sDjkS_&16wbZBCk+o&Sxm1 z2OQMCK^#*h`k(x~%|0)RSQ}BW)_O%qC#=l6CaCHFn$e3*c9YM&6FU}kD>v0Vx9yC| z-g5dpfL|8R8gDy2H``r_Cn!Xh);xXc=O@jyR$#-il39?PO528;u zi!w9%xllm!qTY}Tm@^H(jdNV zJIN7^>@md0;eO4)Mt%ObPcI+G{TlAO-4+L9!=?yWdRcM3ED4?cns6KIztSf*W|EQL zHMr(rm+=(F$@0_-~9&AC^(vH5CJXpO~xga(EyGAO6q@Ysqjd zobE^uhFc7;3M;^flCJ7D1Lrpa0Iz)1qxw)(haqeeKwEaCgAcbPkgKW+U3;bLkRUjc zWI65VWmh?T6|Gx^TBqO4kx9?*hQ-K}S4 zil2{dyb|TCM}*fO3BX82A=nP6QaDI3`@)9PG^AGhLc?MxQPn&V`3LY2EDCUYaWQoE zTmOl%7#7s|EVvEeMqC|%E|;w=6#tRVTc1=03ivvKtJ&psrS7peKrF}#u7Y02l;fge za(G+1-L-{SK>9(UfM{(h)Z`KZDvOurp)Rg}y%8(1JFu{IDn3nd6@?{DfRyH(o)lTJ z_i4NO{Z`cJoW9^vU#a>_=I5f7%+?@`uB8HcS!^kH1-x^EG!4Xr^!y2Hpy=d;Wust` z(P{?FSHFv9jU0+7d+J6y`$K5+%?5b;DZ(3t1m>%GK2TQhui@C8;UfEaFDaYXfBWfP z{6qvqyEvxGcMW~fk@^Dqcw^gJ8r*F!c=oEpD$usBt|A^s+cyRG$oMTMYEsaP-yb(| za=7PgLCc$jrfF01PPamKVIl&rpPCY81Ic=|aND{sNVCMHERJ)^H`hFsbVZ+VN1H#1 z`S?S?$Ip;(0RQ-Pr$I}+QNu(nu+PIO{fDo^6krI_9w;d(iZ{%li#J@Xg?}Qe5DQ@) znDfZGWw%Jv&m!!>+T247LJQLxN`sNR$>Oj1m|g_houvRLCv)3y!*D)BW0!eqT_@=R zL?fU66EZR6w$~F^pzsjDQ&sg@e9+LRv`gRGC}1`}FPW3VUjV1Or^2v#17*uf;&w|iM-5J5 z6A-EWj78yU*yiS87B>CnMqDADeqTkZBf;Ay2$vdAG(UYm9QDPsGeTWUWrsjigNXnD p007V?U9BC--dg|x)yo5bfRFv?l%0*rkS0)$V$I?9m z!%&#sdWDWATLIGf6Ds}!z>_Ubt3Bf9DtUSlbnv}mMat4IpsB!X_gl3^HEd+lI`o<3kd9U%-y2vcUIdXh!JDr3+yxqOP0o{sg3abZraqM}M6*a} zu*oo(+e`qHzY50U53$c9kcq!#c^%IDDDgPP>=i~BNraxbF_Ub#@%8H3bj>__JoQ=L zNg0PZ8hDF3qYlWmGm5O#vnD9AaV+Nbe6v>pG(mUun7Ue;BUK7SOfBCL#aEWr55~px zKB2>J-IYGHS+HhwS-{5eO6uKg5^H&UBO$Ib?C4M7JvQ3dUQ?39KN={fT3Q67!mvFp z0fqVMF-0k0Cxn67>_~Q|AXr4-KJ3m9VIuC@jMxoBpAyt^$D+pFu5gC(Kwag92fU_hA5W z^Ov$^i|a11sil-qFcvAm-#s*%K@JyxG|ts%u=wn>GJl7<2r0Aq(_COTS62iaO=a0h zmfXrhq<|42v)CgbO(ENf10t$;eI9_yPRh7zyeu=vju?kh-m_QO@+%r3)$b8JO=ORE zJ`I9oMQ`#4Q{40rG$*;Q7+WyQH+h$fkcF-WfCX0$b6KVQy8We2pr`|CD z$hWr1H%O>KLTk>th9bq0_G0&}%P(N!<-nh%BkVZ|;hp!#2>-06MLN#gMF==YCe+{N zg+xS(TrMuWAtqDr9YgngoS^DUxPGtEjlHQH0uLc}55)v*t30#k@R zqCrEhb0!Y$w(Sr;@*1eVu79Zu>UkV9Kl#yjT;F<#+L9%JEDF-fmG$q0T!m50{HX}i zp7E>_s{?paT5R;hfg|o;myg1Qca zpLcQlg!H?(@)XuM1c@+(;^X`Pm(ByZgl z>SmYNR0HPICX`u0!qv1g@er$u^*FsF-V^VP}eWC(Hgc3r%B}B>WKR7`gt6UD>Oj+*x`LC+5R6y zXDv8-LvU@|jTIq@k7Mvz~19GVqcKN0ixbfeB{Pl@GvddnuALt@$M@Rzsz102DRe`it^sY*LA_#l7L-q5uGt ivI4xy3}E8`0f-8KpaB5WfIL>Q#Ao{g000001X)_LymjjU literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_draw.txt b/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_draw.txt new file mode 100644 index 0000000000..9bd082dbe6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_draw.txt @@ -0,0 +1,8 @@ +draw: + testset: avakas plafrim plafrim2 + copy: %=txz + needed: %/netloc %/hwloc + excluded: $NETLOC_TEST/netloc/*json + command: $NETLOC_UTIL_PATH/draw/netloc_draw_to_json %/netloc + checkfiles: $NETLOC_TEST/netloc/*json + diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_extract.txt b/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_extract.txt new file mode 100644 index 0000000000..1936861582 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_extract.txt @@ -0,0 +1,7 @@ +extract: + testset: avakas plafrim plafrim2 + copy: %=txz + needed: %/ib-raw + command: mkdir %/netloc; mkdir %/hwloc; $NETLOC_UTIL_PATH/infiniband/netloc_ib_extract_dats %/ib-raw %/netloc --hwloc-dir ../hwloc + checkfiles: %/netloc/*txt + diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_mpiscotch.txt b/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_mpiscotch.txt new file mode 100644 index 0000000000..338a4f8336 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_mpiscotch.txt @@ -0,0 +1,6 @@ +rank_file: + testset: scotch + copy: scotch=txz plafrim2=txz + needed: % plafrim2/netloc/*txt plafrim2/hwloc + command: ./%/test_mpi_rank_file.sh + checkcommand: test -f test.rank && ! grep -vlP "^rank \d+=[^\s]+ slot=\d+$" test.rank diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_scotch.txt b/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_scotch.txt new file mode 100644 index 0000000000..7aaccea7d3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/netloc/data/tests_scotch.txt @@ -0,0 +1,7 @@ +scotch_arch: + testset: scotch + copy: scotch=txz plafrim2=txz + needed: % plafrim2/netloc/*txt plafrim2/hwloc + command: ./%/test_scotch_get_arch.sh + checkfiles: ./%/subarch.scotch ./%/arch.scotch + diff --git a/3rd-party/hwloc-2.7.1/tests/netloc/tests.sh.in b/3rd-party/hwloc-2.7.1/tests/netloc/tests.sh.in new file mode 100644 index 0000000000..f1fb373197 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/tests/netloc/tests.sh.in @@ -0,0 +1,221 @@ +#!/usr/bin/env bash +# +# Copyright © 2016-2017 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +# This script needs a test file as argument +# The syntax of this file is the following +# test1: +# testset: machine1 machine2 # subfolders where tests be run +# command: ./test1 param1 # command to test +# needed: dir1/file*txt dir2 # files needed +# excluded: dir1/file0.txt dir2/file1 # file to exclude +# checkfiles: dir2/file1 # files used to check validity +# checkscript: ./check.sh # script to check validity +# test2: +# ... + +export NETLOC_TESTS_PATH="@HWLOC_top_srcdir@/tests/netloc" +export NETLOC_BUILD_PATH="@HWLOC_top_builddir@/tests/netloc" +export NETLOC_UTIL_PATH="@HWLOC_top_builddir@/utils/netloc" + +origpwd="$(pwd)" + +red="\e[31m" +green="\e[32m" +default="\e[0m" + +function write_output +{ + color=$1 + shift + echo -e $color$@$default +} + +function quit +{ + write_output $red "Test failed" + rm -fr $TEMPDIR +} + +function getvalues +{ + for i in $@; do + echo "$params" | $SED -n "s/^[[:space:]]*$i:[[:space:]]*\(.*\)\$/\1/p" + done | tr '\n' ' ' +} + +function getCopies +{ + local t=$1 + local copies=$(getvalues copy copy_${t}) + for f in $copies; do + local name=$(echo $f | $SED 's/\([^=]*\)\(=.*\)\{0,1\}/\1/') + local ext=$(echo $f | $SED 's/\([^=]*\)\(=.*\)\{0,1\}/\2/') + if [ -z "$ext" ]; then + cp -r "$NETLOC_TESTS_PATH/data/$name" "$REFDIR" + chmod -R u+w $REFDIR + cp -r "$NETLOC_BUILD_PATH/data/$name" "$REFDIR" + chmod -R u+w $REFDIR + elif [ "$ext" = "=txz" ]; then + # TODO prevent from extracting it again + $COMPRESS -d --stdout "$NETLOC_TESTS_PATH/data/$name.txz" > "$REFDIR/$name.tar" + tar -xf "$REFDIR/$name.tar" -C "$REFDIR" + rm "$REFDIR/$name.tar" + fi + done +} + + +trap 'quit' 0 +set -e + +compress=xz +hash $compress 2>/dev/null || \ + { echo >&2 "It requires $compress but it's not installed."; exit 1; } +COMPRESS=$(which $compress) +GREP=$(which grep) +SED=$(which sed) +AWK=$(which awk) + +# Folder structure like that +# TEMPDIR +# ├── ref <- copy of the data directory +# │   ├── machine1 +# │   │   └── file1 +# │   └── machine2 +# │   └── file1 +# └── test +# └── file1 +TEMPDIR=$(mktemp -d -t netloc_tests_XXXXX) +TESTDIR=$TEMPDIR/tests +REFDIR=$TEMPDIR/ref && mkdir $REFDIR +TESTFILE=$REFDIR/$(basename $1); cp $NETLOC_TESTS_PATH/data/$(basename $1) $REFDIR + +# Remove comments from the test file +$SED 's/#.*$//g; /^[[:space:]]*$/d' $TESTFILE > $TESTFILE.new +mv -f $TESTFILE.new $TESTFILE + +# Get tests +tests=$($SED -n 's/^\([^[:space:]]*\):[[:space:]]*$/\1/p' $TESTFILE) + +S=0 +F=0 + +for t in $tests; do + params_sv=$($AWK '/^'$t':\s*$/{flag=1;next}; /^\S*:\s*$/{flag=0}; {if (flag) print}' $TESTFILE) + params="$params_sv" + sets=$(getvalues testset) + + # For each set to test + for s in $sets; do + NETLOC_TEST=$s + params="$(echo "$params_sv" | $SED 's/%/'$NETLOC_TEST'/g')" + mkdir $TESTDIR + cd $TESTDIR + + # Copy or extract files if needed + getCopies $s + + # Copy needed files + cd "$REFDIR" + needed=$(getvalues needed) + if [ -z "needed" ]; then + cp -r $s $TESTDIR + else + files=$(eval "echo \"$needed\"") + for f in $files; do + mkdir -p "$TESTDIR/$(dirname "$f")" + cp -r "$f" "$TESTDIR/$(dirname "$f")" + done + fi + + # Remove excluded files + cd "$TESTDIR" + excluded=$(getvalues excluded) + if [ -n "$excluded" ]; then + files=$(eval "echo \"$excluded\"") + for f in $files; do + rm -f "$f" + done + fi + + while true; do + # Remove output files + cd $TESTDIR + for cf in $checkfiles; do + files=$(eval "echo \"$cf\"") + for f in $files; do + rm -f "$f" + done + done + + # Execute the command + cd $TESTDIR + cmd=$(getvalues command) + eval " $cmd" > /dev/null || \ + { + eval "echo \"Command $cmd failed\"" + write_output $red "Test $t on $NETLOC_TEST failed!" + failed=1 + break + } + + # Check files + cd "$REFDIR" + checkfiles=$(getvalues checkfiles) + for cf in $checkfiles; do + files=$(eval "echo \"$cf\"") + for f in $files; do + cmp "$f" "$TESTDIR/$f" || \ + { + echo "$f: wrong file" + eval "echo \"Command was: $cmd\"" + write_output $red "Test $t on $NETLOC_TEST failed!" + failed=1 + break + } + done + done + if [ "$failed" = 1 ]; then break; fi + + # Check program + cd $TESTDIR + checkcmd=$(getvalues checkcommand) + eval " $checkcmd" > /dev/null || \ + { + echo "Check command failed: $checkcmd" + eval "echo \"Command was: $cmd\"" + write_output $red "Test $t on $NETLOC_TEST failed!" + failed=1 + break + } + + break + done + + cd "$origpwd" + rm -fr $TESTDIR + if [ -n "$failed" ]; then + ((F+=1)) + else + ((S+=1)) + fi + failed= + done +done + +if [[ $F -ne O ]]; then + color=$red + returncode=1 +else + color=$green + returncode=0 +fi +echo "### Summary ###" +write_output $color "$F tests failed" +write_output $green "$S tests succeeded" +trap 0 +rm -fr $TEMPDIR +exit $returncode diff --git a/3rd-party/hwloc-2.7.1/utils/Makefile.am b/3rd-party/hwloc-2.7.1/utils/Makefile.am new file mode 100644 index 0000000000..5502b0d6af --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/Makefile.am @@ -0,0 +1,14 @@ +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# +# Copyright © 2016-2017 Inria. All rights reserved. +# See COPYING in top-level directory. + +SUBDIRS = hwloc lstopo + +if BUILD_NETLOC +SUBDIRS += \ + netloc/infiniband \ + netloc/draw \ + netloc/mpi \ + netloc/scotch +endif diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/Makefile.am b/3rd-party/hwloc-2.7.1/utils/hwloc/Makefile.am new file mode 100644 index 0000000000..35439077f2 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/Makefile.am @@ -0,0 +1,172 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2012, 2014, 2016 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# +# See COPYING in top-level directory. + +# This makefile is only reached when building in standalone mode + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +LDADD = $(HWLOC_top_builddir)/hwloc/libhwloc.la + +EXTRA_DIST = \ + test-hwloc-annotate.input test-hwloc-annotate.output test-hwloc-annotate.output2 \ + test-hwloc-calc.output \ + test-hwloc-compress-dir.input.tar.gz test-hwloc-compress-dir.output.tar.gz \ + test-hwloc-diffpatch.input1 test-hwloc-diffpatch.input2 \ + test-hwloc-distrib.output \ + test-hwloc-info.output \ + test-build-custom-topology.output + +noinst_HEADERS = misc.h common-ps.h + +# convenience library used by both hwloc-ps and lstopo +noinst_LTLIBRARIES = libutils_common.la +libutils_common_la_SOURCES = common-ps.c +libutils_common_la_LIBADD = $(LDADD) + +bin_PROGRAMS = \ + hwloc-annotate \ + hwloc-bind \ + hwloc-calc \ + hwloc-diff \ + hwloc-distrib \ + hwloc-info \ + hwloc-patch + +# start tests here before recursing into subdirs +SUBDIRS = . + +if !HWLOC_HAVE_WINDOWS +bin_PROGRAMS += hwloc-ps +endif +if HWLOC_HAVE_X86_CPUID +bin_PROGRAMS += hwloc-gather-cpuid +endif HWLOC_HAVE_X86_CPUID + +if HWLOC_HAVE_LINUX +if HWLOC_HAVE_X86 +sbin_PROGRAMS = hwloc-dump-hwdata +SUBDIRS += test-hwloc-dump-hwdata +endif HWLOC_HAVE_X86 +endif HWLOC_HAVE_LINUX + +hwloc_dump_hwdata_SOURCES = \ + hwloc-dump-hwdata.c \ + hwloc-dump-hwdata-knl.c +hwloc_dump_hwdata_CPPFLAGS = $(AM_CPPFLAGS) -DRUNSTATEDIR="\"$(HWLOC_runstatedir)\"" + +hwloc_calc_SOURCES = \ + hwloc-calc.h \ + hwloc-calc.c + +hwloc_ps_SOURCES = hwloc-ps.c +# keep HWLOC_PS_LIBS first in case there's also -lnsl which cannot be before -lsocket +hwloc_ps_LDADD = $(HWLOC_PS_LIBS) $(LDADD) libutils_common.la + +bin_SCRIPTS = hwloc-compress-dir +if HWLOC_HAVE_LINUX +bin_SCRIPTS += hwloc-gather-topology +endif HWLOC_HAVE_LINUX + +TESTS = \ + test-hwloc-annotate.sh \ + test-hwloc-calc.sh \ + test-hwloc-compress-dir.sh \ + test-hwloc-diffpatch.sh \ + test-hwloc-distrib.sh \ + test-hwloc-info.sh \ + test-build-custom-topology.sh \ + test-parsing-flags.sh +if HWLOC_HAVE_PLUGINS +TESTS += test-fake-plugin.sh +endif HWLOC_HAVE_PLUGINS + +SEDMAN = $(SED) -e 's/%PACKAGE_NAME%/@PACKAGE_NAME@/g' \ + -e 's/%PACKAGE_VERSION%/@PACKAGE_VERSION@/g' \ + -e 's/%HWLOC_DATE%/@HWLOC_RELEASE_DATE@/g' + +# Only install man pages if we're building in standalone mode +man7_pages = hwloc.7 +EXTRA_DIST += $(man7_pages:.7=.7in) +nodist_man_MANS = $(man7_pages) + +man1_pages = \ + hwloc-annotate.1 \ + hwloc-bind.1 \ + hwloc-calc.1 \ + hwloc-compress-dir.1 \ + hwloc-diff.1 \ + hwloc-distrib.1 \ + hwloc-info.1 \ + hwloc-patch.1 +EXTRA_DIST += $(man1_pages:.1=.1in) +nodist_man_MANS += $(man1_pages) + +# Only install the gather-topology page if we're on Linux, but we need +# to include it in the tarball, regardless of what OS we're building +# on. +hgt_page = hwloc-gather-topology.1 +EXTRA_DIST += $(hgt_page:.1=.1in) +if HWLOC_HAVE_LINUX +nodist_man_MANS += $(hgt_page) +endif HWLOC_HAVE_LINUX + +# Same for hwloc-ps on !Windows +hps_page = hwloc-ps.1 +EXTRA_DIST += $(hps_page:.1=.1in) +if !HWLOC_HAVE_WINDOWS +nodist_man_MANS += $(hps_page) +endif + +# Same for hwloc-gather-cpuid on x86 +hgc_page = hwloc-gather-cpuid.1 +EXTRA_DIST += $(hgc_page:.1=.1in) +if HWLOC_HAVE_X86_CPUID +nodist_man_MANS += $(hgc_page) +endif + +# Same for dump-hwdata page on Linux/x86 +hdh_page = hwloc-dump-hwdata.1 +EXTRA_DIST += $(hdh_page:.1=.1in) +if HWLOC_HAVE_LINUX +# WARNING: The SEDMAN line below isn't portable ($(subst ...) is GNU-make only). +# Keep this rule Linux-only, or stop using $(subst ...). See issue #187. +if HWLOC_HAVE_X86 +nodist_man_MANS += $(hdh_page) +hwloc-dump-hwdata.1: hwloc-dump-hwdata.1in + @ echo Creating $@ man page... + @ $(SEDMAN) \ + -e 's/%RUNSTATEDIR%/$(subst /,\/,$(HWLOC_runstatedir))/g' \ + > $@ < $< +endif HWLOC_HAVE_X86 +endif HWLOC_HAVE_LINUX + +.1in.1: + @ echo Creating $@ man page... + @ $(SEDMAN) \ + > $@ < $< + +.3in.3: + @ echo Creating $@ man page... + @ $(SEDMAN) \ + > $@ < $< + +.7in.7: + @ echo Creating $@ man page... + @ $(SEDMAN) \ + > $@ < $< + +install-exec-hook: + $(SED) -e 's/HWLOC_top_builddir\/utils\/hwloc/bindir/' -e 's/HWLOC_top_builddir\/utils\/lstopo/bindir/' -e '/HWLOC_top_builddir/d' $(DESTDIR)$(bindir)/hwloc-compress-dir > $(DESTDIR)$(bindir)/hwloc-compress-dir.tmp && mv -f $(DESTDIR)$(bindir)/hwloc-compress-dir.tmp $(DESTDIR)$(bindir)/hwloc-compress-dir + chmod +x $(DESTDIR)$(bindir)/hwloc-compress-dir +if HWLOC_HAVE_LINUX + $(SED) -e 's/HWLOC_top_builddir\/utils\/lstopo/bindir/' -e 's/HWLOC_top_builddir\/utils\/hwloc/bindir/' -e '/HWLOC_top_builddir/d' $(DESTDIR)$(bindir)/hwloc-gather-topology > $(DESTDIR)$(bindir)/hwloc-gather-topology.tmp && mv -f $(DESTDIR)$(bindir)/hwloc-gather-topology.tmp $(DESTDIR)$(bindir)/hwloc-gather-topology + chmod +x $(DESTDIR)$(bindir)/hwloc-gather-topology +endif HWLOC_HAVE_LINUX + +distclean-local: + rm -f $(nodist_man_MANS) diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.c b/3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.c new file mode 100644 index 0000000000..5c107567a5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.c @@ -0,0 +1,394 @@ +/* + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#ifdef HWLOC_LINUX_SYS +#include "hwloc/linux.h" +#endif + +#include +#include +#include +#ifdef HAVE_DIRENT_H +#include +#endif +#include + +#include "common-ps.h" +#include "misc.h" + +int hwloc_ps_read_process(hwloc_topology_t topology, hwloc_const_bitmap_t topocpuset, + struct hwloc_ps_process *proc, + unsigned long flags) +{ +#ifdef HAVE_DIRENT_H + hwloc_pid_t realpid; + hwloc_bitmap_t cpuset; + unsigned pathlen; + char *path; + char *end; + int fd; + ssize_t n; + + if (hwloc_pid_from_number(&realpid, proc->pid, 0, 0 /* ignore failures */) < 0) + return -1; + + cpuset = hwloc_bitmap_alloc(); + if (!cpuset) + return -1; + + pathlen = 6 + 21 + 1 + 7 + 1; /* enough for /proc/%ld/cmdline /proc/%ld/comm and /proc/%ld/stat */ + path = malloc(pathlen); + + snprintf(path, pathlen, "/proc/%ld/cmdline", proc->pid); + fd = open(path, O_RDONLY); + if (fd < 0) { + free(path); + goto out; + } + n = read(fd, proc->name, sizeof(proc->name) - 1); + close(fd); + if (n <= 0) { + /* Ignore kernel threads and errors */ + free(path); + goto out; + } + proc->name[n] = 0; + + if (flags & HWLOC_PS_FLAG_SHORTNAME) { + /* try to get a small name from comm */ + char comm[16] = ""; + snprintf(path, pathlen, "/proc/%ld/comm", proc->pid); + fd = open(path, O_RDONLY); + if (fd >= 0) { + n = read(fd, comm, sizeof(comm) - 1); + close(fd); + if (n > 0) { + comm[n] = 0; + if (n > 1 && comm[n-1] == '\n') + comm[n-1] = 0; + } + + } else { + /* Old kernel, have to look at old file */ + char stats[32]; + char *parenl = NULL, *parenr; + + snprintf(path, pathlen, "/proc/%ld/stat", proc->pid); + fd = open(path, O_RDONLY); + if (fd >= 0) { + /* "pid (comm) ..." */ + n = read(fd, stats, sizeof(stats) - 1); + close(fd); + if (n > 0) { + stats[n] = 0; + parenl = strchr(stats, '('); + parenr = strchr(stats, ')'); + if (!parenr) + parenr = &stats[sizeof(stats)-1]; + *parenr = 0; + if (parenl) + snprintf(comm, sizeof(comm), "%s", parenl+1); + } + } + } + + if (*comm) + snprintf(proc->name, sizeof(proc->name), "%s", comm); + } + + free(path); + + proc->string[0] = '\0'; /* might be set later if hwloc_ps_pidcmd is called */ + + if (flags & HWLOC_PS_FLAG_UID) { + proc->uid = HWLOC_PS_ALL_UIDS; +#ifdef HWLOC_LINUX_SYS + pathlen = 6 + 21 + 1 + 6 + 1; + path = malloc(pathlen); + snprintf(path, pathlen, "/proc/%ld/status", proc->pid); + fd = open(path, O_RDONLY); + if (fd >= 0) { + char status[1024]; + char *uid; + (void) read(fd, &status, sizeof(status)); + status[1023] = '\0'; + uid = strstr(status, "Uid:"); + if (uid) + proc->uid = strtoul(uid+4, NULL, 0); + close(fd); + } + free(path); +#endif + /* On *BSD, parse the end of the single-line in /proc/pid/status + * (but the format is different between FreeBSD and NetBSD). + * It may be a good time to switch to a portable library for gathering this info. + */ + } + + if (flags & HWLOC_PS_FLAG_THREADS) { +#ifdef HWLOC_LINUX_SYS + /* check if some threads must be displayed */ + DIR *taskdir; + + pathlen = 6 + 21 + 1 + 4 + 1; + path = malloc(pathlen); + snprintf(path, pathlen, "/proc/%ld/task", proc->pid); + taskdir = opendir(path); + if (taskdir) { + struct dirent *taskdirent; + long tid; + unsigned nbth = 0; + /* count threads */ + while ((taskdirent = readdir(taskdir))) { + tid = strtol(taskdirent->d_name, &end, 10); + if (*end) + /* Not a number */ + continue; + nbth++; + } + if (nbth > 1) { + /* if there's more than one thread, see if some are bound */ + proc->threads = calloc(nbth, sizeof(*proc->threads)); + if (proc->threads) { + /* reread the directory but gather info now */ + rewinddir(taskdir); + unsigned i = 0; + while ((taskdirent = readdir(taskdir))) { + char *path2; + unsigned path2len; + + tid = strtol(taskdirent->d_name, &end, 10); + if (*end) + /* Not a number */ + continue; + + proc->threads[i].tid = tid; + + path2len = pathlen + 1 + 21 + 1 + 4 + 1; + path2 = malloc(path2len); + if (path2) { + int commfd; + snprintf(path2, path2len, "%s/%ld/comm", path, tid); + commfd = open(path2, O_RDWR); + if (commfd >= 0) { + n = read(commfd, proc->threads[i].name, sizeof(proc->threads[i].name)); + close(commfd); + if (n <= 0) + proc->threads[i].name[0] = '\0'; + else if ((size_t)n < sizeof(proc->threads[i].name)) + proc->threads[i].name[n] = '\0'; + proc->threads[i].name[sizeof(proc->threads[i].name)-1] = '\0'; + end = strchr(proc->threads[i].name, '\n'); + if (end) + *end = '\0'; + } + free(path2); + } + + if (flags & HWLOC_PS_FLAG_LASTCPULOCATION) { + if (hwloc_linux_get_tid_last_cpu_location(topology, tid, cpuset)) + goto next; + } else { + if (hwloc_linux_get_tid_cpubind(topology, tid, cpuset)) + goto next; + } + hwloc_bitmap_and(cpuset, cpuset, topocpuset); + if (hwloc_bitmap_iszero(cpuset)) + goto next; + + proc->threads[i].cpuset = hwloc_bitmap_dup(cpuset); + if (!hwloc_bitmap_isequal(cpuset, topocpuset)) { + proc->threads[i].bound = 1; + proc->nboundthreads++; + } + + next: + i++; + proc->nthreads++; + if (i == nbth) + /* ignore the lastly created threads, I'm too lazy to reallocate */ + break; + } + } else { + /* failed to alloc, behave as if there were no threads */ + } + } + closedir(taskdir); + } + free(path); +#endif /* HWLOC_LINUX_SYS */ + } + + if (flags & HWLOC_PS_FLAG_LASTCPULOCATION) { + if (hwloc_get_proc_last_cpu_location(topology, realpid, cpuset, 0)) + goto out; + } else { + if (hwloc_get_proc_cpubind(topology, realpid, cpuset, 0)) + goto out; + } + + hwloc_bitmap_and(cpuset, cpuset, topocpuset); + if (hwloc_bitmap_iszero(cpuset)) + goto out; + + proc->bound = !hwloc_bitmap_isequal(cpuset, topocpuset); + proc->cpuset = cpuset; + return 0; + + out: + hwloc_bitmap_free(cpuset); +#endif /* HAVE_DIRENT_H */ + return -1; +} + +#if defined(HWLOC_WIN_SYS) && !defined(__CYGWIN__) +/* hwloc-ps isn't built for Windows, but lstopo is */ +#define popen _popen +#define pclose _pclose +#endif + +static int +hwloc_ps_pidcmd__from_env(struct hwloc_ps_process *proc, + const char *envname, size_t envnamelen, + const char *buffer) +{ + const char *cur = buffer; + while (*cur) { + size_t len; + if (!strncmp(cur, envname, envnamelen)) { + /* copy the entire "name=value" instead of only the value + * so that users know which variable was used. + */ + strncpy(proc->string, cur, sizeof(proc->string)); + proc->string[sizeof(proc->string)-1] = '\0'; + return 0; + } + len = strlen(cur); + cur += len + 1; + } + return -1; +} + +static void +hwloc_ps_pidcmd_from_env(struct hwloc_ps_process *proc, + unsigned nr_env, const char *env[]) +{ + char path[64]; /* enough for "/proc/%ld/environ" */ + char buffer[65536]; /* should be enough for the vast majority of cases */ + FILE *file; + size_t len; + unsigned i; + + snprintf(path, sizeof(path), "/proc/%ld/environ", proc->pid); + file = fopen(path, "r"); + if (!file) + return; + len = fread(buffer, 1, sizeof(buffer)-2, file); + fclose(file); + if (!len) + return; + + /* we must end with 2 '\0', one for the current variable if truncated, and one for an empty variable ending the environment array */ + buffer[len] = '\0'; + buffer[len+1] = '\0'; + + for(i=0; ipid); + file = popen(cmd, "r"); + if (file) { + if (fgets(proc->string, sizeof(proc->string), file)) { + char *end = strchr(proc->string, '\n'); + if (end) + *end = '\0'; + } + pclose(file); + } + free(cmd); +} + +void hwloc_ps_free_process(struct hwloc_ps_process *proc) +{ + unsigned i; + + if (proc->nthreads) + for(i=0; inthreads; i++) + if (proc->threads[i].cpuset) + hwloc_bitmap_free(proc->threads[i].cpuset); + free(proc->threads); + + hwloc_bitmap_free(proc->cpuset); +} + +int hwloc_ps_foreach_process(hwloc_topology_t topology, hwloc_const_bitmap_t topocpuset, + void (*callback)(hwloc_topology_t topology, struct hwloc_ps_process *proc, void *cbdata), + void *cbdata, + unsigned long flags, const char *only_name, long uid) +{ +#ifdef HAVE_DIRENT_H + DIR *dir; + struct dirent *dirent; + + dir = opendir("/proc"); + if (!dir) + return -1; + + while ((dirent = readdir(dir))) { + struct hwloc_ps_process proc; + long pid; + char *end; + + pid = strtol(dirent->d_name, &end, 10); + if (*end) + /* Not a number */ + continue; + + proc.pid = pid; + proc.cpuset = NULL; + proc.nthreads = 0; + proc.nboundthreads = 0; + proc.threads = NULL; + if (hwloc_ps_read_process(topology, topocpuset, &proc, flags) < 0) + goto next; + if (only_name && !strstr(proc.name, only_name)) + goto next; + if (uid != HWLOC_PS_ALL_UIDS && proc.uid != HWLOC_PS_ALL_UIDS && proc.uid != uid) + goto next; + callback(topology, &proc, cbdata); + next: + hwloc_ps_free_process(&proc); + } + + closedir(dir); + return 0; +#else /* HAVE_DIRENT_H */ + return -1; +#endif /* HAVE_DIRENT_H */ +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.h b/3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.h new file mode 100644 index 0000000000..03b23e1187 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/common-ps.h @@ -0,0 +1,52 @@ +/* + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef UTILS_HWLOC_PS_H +#define UTILS_HWLOC_PS_H + +#include "private/autogen/config.h" +#include "hwloc.h" + +#define HWLOC_PS_TIDNAME_MAX 16 /* specified in pthread_setname_np.3 */ + +struct hwloc_ps_process { + long pid; + char name[64]; + char string[1024]; /* optional string, used by hwloc-ps --pid-cmd */ + hwloc_bitmap_t cpuset; +#define HWLOC_PS_ALL_UIDS ((long)-1) + long uid; + int bound; + unsigned nthreads; + unsigned nboundthreads; + struct hwloc_ps_thread { + long tid; + hwloc_bitmap_t cpuset; + int bound; + char name[HWLOC_PS_TIDNAME_MAX]; + } *threads; +}; + +#define HWLOC_PS_FLAG_THREADS (1UL<<0) +#define HWLOC_PS_FLAG_LASTCPULOCATION (1UL<<1) +#define HWLOC_PS_FLAG_SHORTNAME (1UL<<2) +#define HWLOC_PS_FLAG_UID (1UL<<3) + +int hwloc_ps_read_process(hwloc_topology_t topology, hwloc_const_bitmap_t topocpuset, + struct hwloc_ps_process *proc, + unsigned long flags); + +int hwloc_ps_foreach_process(hwloc_topology_t topology, hwloc_const_bitmap_t topocpuset, + void (*callback)(hwloc_topology_t topology, struct hwloc_ps_process *proc, void *cbdata), + void *cbdata, + unsigned long flags, const char *only_name, long only_uid); + +void hwloc_ps_pidcmd(struct hwloc_ps_process *proc, const char *pidcmd); + +void hwloc_ps_free_process(struct hwloc_ps_process *proc); + +#endif /* UTILS_HWLOC_PS_H */ diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-annotate.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-annotate.1in new file mode 100644 index 0000000000..201df8fe47 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-annotate.1in @@ -0,0 +1,291 @@ +.\" -*- nroff -*- +.\" Copyright © 2013-2021 Inria. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-ANNOTATE "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-annotate \- Modify attributes in a XML topology +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +.B hwloc-annotate +[\fIoptions\fR] +\fI\fR +\fI\fR +-- \fI\fR \fI\fR ... -- +\fI\fR +\fI\fR +. + +.B hwloc-annotate +[\fIoptions\fR] +\fI\fR +\fI\fR +\fI\fR +\fI\fR +\fI\fR +. +.PP +Note that hwloc(7) provides a detailed explanation of the hwloc system +and of valid formats; +it should be read before reading this man page. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP 10 +\fB\-\-ri\fR +Remove all info attributes that exist with the same name before adding the new one. +This option is only accepted in "info" mode. +If the info value is omitted, existing infos are replaced with nothing. +.TP +\fB\-\-ci\fR +Clear the existing info attributes in the target objects before annotating. +If no new annotation has to be added after clearing, \fImode\fR should be +set to \fInone\fR. +.TP +\fB\-\-cu\fR +Clear the existing userdata from the target objects. +If nothing else has to be performed after clearing, \fImode\fR should be +set to \fInone\fR. +. +.TP +\fB\-\-cd\fR +Clear the existing distances from the topology. +If nothing else has to be performed after clearing, \fImode\fR should be +set to \fInone\fR. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc-annotate loads a topology from a XML file, adds some annotations, +and export the resulting topology to another XML file. +The input and output files may be the same. +. +.PP +The annotation may be string info attributes. +This is specified by the \fImode\fR: +. +.TP +.B info +Specifies a new string info attribute whose name is \fIname\fR and +value is \fIvalue\fR. +.TP +.B subtype +Specifies that the subtype attribute of the object should now be \fIsubtype\fR. +If an empty string is given, the subtype is removed. +.TP +.B size +Specifies the size of a cache or NUMA node. +The value may be suffixed with \fBkB\fR, \fBMB\fR, \fBGB\fR or \fBTB\fR. +.TP +.B misc +Specifies a new Misc object name. +.TP +.B memattr <flags> +Register a new memory attribute whose name is \fIname\fR and +flags is \fIflags\fR. +\fIlocation\fR is ignored in this mode. + +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_memattr_register()\fR. +Those names may be substrings of actual flag names as long as a single one matches. +For instance, a value of \fB1\fR (or \fBhigher\fR) means that +highest values are considered best for this attribute. +.TP +.B memattr +Set the memory attribute (whose name is \fIname\fR) +from initiator \fIinitiator\fR (either an object or a CPU-set) +to target NUMA node \fIlocation\fR +to value \fIvalue\fR. + +If this attribute does not require specific initiators, +\fIinitiator\fR is ignored. + +Standard attribute names are \fICapacity\fR, \fILocality\fR, +\fIBandwidth\fR, and \fILatency\fR. +All existing attributes in the input topology may be listed with + + $ lstopo --memattrs -i input.xml + +.TP +.B cpukind [ ] +Specifies the kind of CPU for PUs listed in the given cpuset. +\fIlocation\fR is ignored in this mode. + +\fIefficiency\fR is an abstracted efficiency value that will enforce +ranking of kinds. It should be -1 if unknown. + +\fIflags\fR must be 0 for now. + +If \fIinfoname\fR and \fIinfovalue\fR are given and non-empty, +they are added as info attributes to this kind of CPU. + +See the function hwloc_cpukinds_register() for details. + +.TP +.B distances [] +Specifies new distances to be added to the topology using specifications in \fI\fR. +The optional \fIflags\fR (0 unless specified) corresponds to the flags +given to the function \fBhwloc_distances_set()\fR. +\fIlocation\fR is ignored in this mode. + +The real first line of the pointed file must be a integer representing +a distances \fBkind\fR as defined in \fBhwloc/distances.h\fR. +The second line is the number of objects involved in the distances. +The next lines contain one object each. +The next lines contain one distance value each, +or a single line may be given with a integer combination of format \fBx*y\fR or \fBx*y*z\fR. +An optional line before all others may start with \fBname=\fR +to specify the name of the distances structure if any. + +.TP +.B distances-transform links +Transform a bandwidth distances structure named into links. +See the documentation of HWLOC_DISTANCES_TRANSFORM_LINKS in hwloc/distances.h for details. +.TP +.B distances-transform merge-switch-ports +When switches appear in the matrix as different ports, merge all of them +into a single port for clarity. +This currently only applies to the NVLinkBandwidth matrix between NVIDIA GPUs. +See the documentation of HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS in hwloc/distances.h for details. +.TP +.B distances-transform transitive-closure +If objects are connected across a switch, apply a transitive-closure +to report the bandwidth through that switch. +This currently only applies to the NVLinkBandwidth matrix between NVIDIA GPUs. +The bandwidth between all pairs of GPUs will be exposed instead of +bandwidths between single GPUs and single NVSwitch ports. +See the documentation of HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE in hwloc/distances.h for details. +.TP +.B distances-transform remove-obj +Remove the given object from the distances structure named . +.TP +.B distances-transform replace-objs +Replace objects of type in distances structure named +with objects of type with same locality. +If or are not object types, they are assumed +subtypes of OS devices, e.g. "NVML" or "OpenCL". +See the documentation of hwloc_get_obj_with_same_locality() in hwloc/helper.h for details. + +If is "NULL", objects are removed from the distances structure. + +.TP +.B none +No new annotation is added. This is useful when clearing existing attributes. +. +.PP +Annotations may be added to one specific object in the topology, +all of them, or all of a given type. +This is specified by the \fIlocation\fR (see also EXAMPLES below). +Multiple locations may be affected if they are specified between \fB--\fR. +Objects may be specified as location tuples, as explained in hwloc(7). +However hexadecimal bitmasks are not accepted since they may correspond to multiple objects. +. +.PP +.B NOTE: +The existing annotations may be listed with hwloc-info. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. Most of the concepts described in +hwloc(7) directly apply to the hwloc-annotate utility. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +hwloc-annotate's operation is best described through several examples. +. +.PP +Add an info attribute to all Core and PU objects: + + $ hwloc-annotate input.xml output.xml -- Core:all PU:all -- info infoname infovalue + +Only add to all Core objects: + + $ hwloc-annotate input.xml output.xml Core:all info infoname infovalue + +Add a Misc object named "foobar" under the root object of the topology +and modify the input XML directly: + + $ hwloc-annotate file.xml file.xml root misc foobar + +Add an info attribute to OS device #2 and #3: + + $ hwloc-annotate input.xml output.xml os:2-3 info infoname infovalue + +Change package objects to green with red text in the lstopo graphical output: + + $ hwloc-annotate topo.xml topo.xml package:all info lstopoStyle "Background=#00ff00;Text=#ff0000" + $ lstopo -i topo.xml + +Set the memory attribute latency to 123 nanoseconds from the PUs in the first package to the first NUMA node: + + $ hwloc-annotate topo.xml topo.xml numanode:0 memattr Latency $(hwloc-calc package:0) 123 + +Register a memory attribute \fBMyApplicationPerformance\fR +(with flags specifying that it requires an initiator and reports higher values first) +and set its value for initiator CPU-set 0x11 to NUMA node #2 to 2345: + + $ hwloc-annotate topo.xml topo.xml ignored memattr MyApplicationPerformance need_init,higher + $ hwloc-annotate topo.xml topo.xml numanode:2 memattr MyApplicationPerformance 0x11 2345 + +To clarify that NUMA node #0 is DDR while NUMA node #1 is HBM: + + $ hwloc-annotate topo.xml topo.xml numa:0 subtype DDR + $ hwloc-annotate topo.xml topo.xml numa:1 subtype HBM + +Specify that PU 0-3 and PU 4-7 are of different kinds, and the latter is more efficient: + + $ hwloc-annotate topo.xml topo.xml dummy cpukind 0x0f 0 0 CoreType Small + $ hwloc-annotate topo.xml topo.xml dummy cpukind 0xf0 1 0 CoreType Big + +Replace NUMA nodes with Packages in the NUMALatency distances matrix, +when they have the exact same locality. + + $ hwloc-annotate topo.xml topo.xml -- dummy -- distances-transform NUMALatency replace-objs numanode packages + +Remove NUMA node #3 from the NUMALatency distances matrix: + + $ hwloc-annotate topo.xml topo.xml -- dummy -- distances-transform NUMALatency remove-obj numa:3 + +Merge all NVSwitch ports bandwidth information into a single port in the NVLinkBandwidth matrix: + + $ hwloc-annotate topo.xml topo.xml -- dummy -- distances-transform NVLinkBandwidth merge-switch-ports + +Apply a transitive closure to get inter-GPU bandwidth across NVSwitches in the NVLinkBandwidth matrix: + + $ hwloc-annotate topo.xml topo.xml -- dummy -- distances-transform NVLinkBandwidth transitive-closure + +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, hwloc-annotate generates the output topology. +The return value is 0. +. +.PP +hwloc-annotate will return nonzero if any kind of error occurs, such as +(but not limited to) failure to parse the command line. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-info(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-annotate.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-annotate.c new file mode 100644 index 0000000000..139ba06f2d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-annotate.c @@ -0,0 +1,835 @@ +/* + * Copyright © 2012-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc-calc.h" +#include "hwloc.h" +#include "misc.h" + +#include +#include +#include + +void usage(const char *callname __hwloc_attribute_unused, FILE *where) +{ + fprintf(where, "Usage: hwloc-annotate [options] -- ... -- \n"); + fprintf(where, "Usage: hwloc-annotate [options] \n"); + fprintf(where, " may be:\n"); + fprintf(where, " all, root, :, :all\n"); + fprintf(where, " may be:\n"); + fprintf(where, " info \n"); + fprintf(where, " subtype \n"); + fprintf(where, " size \n"); + fprintf(where, " misc \n"); + fprintf(where, " distances []\n"); + fprintf(where, " memattr \n"); + fprintf(where, " memattr \n"); + fprintf(where, " cpukind [ ]\n"); + fprintf(where, " distances-transform links\n"); + fprintf(where, " distances-transform merge-switch-ports\n"); + fprintf(where, " distances-transform transitive-closure\n"); + fprintf(where, " distances-transform remove-obj \n"); + fprintf(where, " distances-transform replace-objs \n"); + fprintf(where, " none\n"); + fprintf(where, "Options:\n"); + fprintf(where, " --ci\tClear existing infos\n"); + fprintf(where, " --ri\tReplace or remove existing infos with same name (annotation must be info)\n"); + fprintf(where, " --cu\tClear existing userdata\n"); + fprintf(where, " --cd\tClear existing distances\n"); + fprintf(where, " --version\tReport version and exit\n"); + fprintf(where, " -h --help\tShow this usage\n"); +} + +static char *infoname = NULL, *infovalue = NULL; +static char *subtype = NULL; +static unsigned long long sizevalue = ~0ULL; +static char *miscname = NULL; +static char *distancesfilename = NULL; + +static char *maname = NULL; +static unsigned long maflags; + +static char *mavname = NULL; +static hwloc_memattr_id_t mavid; +static hwloc_cpuset_t mavicpuset = NULL; +static char *maviobjstr = NULL; +static hwloc_obj_t maviobj = NULL; +static hwloc_uint64_t mavvalue; + +static unsigned long distancesflags = 0; + +static hwloc_cpuset_t ckcpuset = NULL; +static int ckefficiency = -1; +static unsigned long ckflags = 0; +static char * ckiname = NULL; +static char * ckivalue = NULL; + +static int clearinfos = 0; +static int replaceinfos = 0; +static int clearuserdata = 0; +static int cleardistances = 0; + +static char *distances_transform_name = NULL; +static int distances_transform_links = 0; +static int distances_transform_merge_switch_ports = 0; +static int distances_transform_closure = 0; +static char *distances_transform_removeobj = NULL; +static char *distances_transform_replace_oldtype = NULL; +static char *distances_transform_replace_newtype = NULL; + +static void apply(hwloc_topology_t topology, hwloc_obj_t obj) +{ + unsigned i,j; + if (clearinfos) { + /* this may be considered dangerous, applications should not modify objects directly */ + for(i=0; iinfos_count; i++) { + struct hwloc_info_s *info = &obj->infos[i]; + free(info->name); + free(info->value); + } + free(obj->infos); + obj->infos = NULL; + obj->infos_count = 0; + } + if (clearuserdata) { + hwloc_utils_userdata_free(obj); + } + if (infoname) { + if (replaceinfos) { + /* this may be considered dangerous, applications should not modify objects directly */ + for(i=0, j=0; iinfos_count; i++) { + struct hwloc_info_s *info = &obj->infos[i]; + if (!strcmp(infoname, info->name)) { + /* remove info */ + free(info->name); + info->name = NULL; + free(info->value); + } else { + if (i != j) { + /* shift info to where it belongs */ + obj->infos[j].name = info->name; + obj->infos[j].value = info->value; + } + j++; + } + } + obj->infos_count = j; + if (!j) { + free(obj->infos); + obj->infos = NULL; + } + } + if (infovalue) + hwloc_obj_add_info(obj, infoname, infovalue); + } + if (subtype) { + if (obj->subtype) + free(obj->subtype); + if (!strcmp(subtype, "")) + obj->subtype = NULL; + else + obj->subtype = strdup(subtype); + } + if (sizevalue != ~0ULL) { + if (obj->type == HWLOC_OBJ_NUMANODE) + obj->attr->numanode.local_memory = sizevalue; + else if (hwloc_obj_type_is_cache(obj->type) || obj->type == HWLOC_OBJ_MEMCACHE) + obj->attr->cache.size = sizevalue; + } + if (miscname) + hwloc_topology_insert_misc_object(topology, obj, miscname); + if (mavname) { + struct hwloc_location loc, *locp = NULL; + if (maviobj) { + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = maviobj; + locp = &loc; + } else if (mavicpuset) { + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = mavicpuset; + locp = &loc; + } + if (hwloc_memattr_set_value(topology, mavid, obj, locp, 0, mavvalue) < 0) { + fprintf(stderr, "Failed to add memattr value (%s)\n", strerror(errno)); + } + } +} + +static void apply_recursive(hwloc_topology_t topology, hwloc_obj_t obj) +{ + hwloc_obj_t child = NULL; + while ((child = hwloc_get_next_child(topology, obj, child)) != NULL) + apply_recursive(topology, child); + apply(topology, obj); +} + +static void +hwloc_calc_process_location_annotate_cb(struct hwloc_calc_location_context_s *lcontext, + void *_data __hwloc_attribute_unused, + hwloc_obj_t obj) +{ + apply(lcontext->topology, obj); +} + +static void +hwloc_calc_get_unique_obj_cb(struct hwloc_calc_location_context_s *lcontext __hwloc_attribute_unused, + void *_data, + hwloc_obj_t obj) +{ + hwloc_obj_t *objp = _data; + if (!*objp) + *objp = obj; +} + +static hwloc_obj_t +get_unique_obj(hwloc_topology_t topology, int topodepth, char *str, + int *ignored_multiple) +{ + struct hwloc_calc_location_context_s lcontext; + hwloc_obj_t obj; + size_t length; + size_t typelen; + int err; + + typelen = strspn(str, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + if (!typelen || (str[typelen] != ':' && str[typelen] != '=' && str[typelen] != '[')) + return NULL; + + lcontext.topology = topology; + lcontext.topodepth = topodepth; + lcontext.only_hbm = -1; + lcontext.logical = 1; + lcontext.verbose = 0; + obj = NULL; + length = strspn(str+typelen+1, "0123456789"); + if (str[typelen+1+length] == '-' || str[typelen+1+length] == ':') { + *ignored_multiple = 1; + } else { + *ignored_multiple = 0; + } + err = hwloc_calc_process_location(&lcontext, str, typelen, + hwloc_calc_get_unique_obj_cb, &obj); + if (err < 0) + return NULL; + return obj; +} + + +static void +add_distances(hwloc_topology_t topology, int topodepth) +{ + char *name = NULL; + unsigned long kind = 0; + unsigned nbobjs = 0; + hwloc_obj_t *objs = NULL; + hwloc_uint64_t *values = NULL; + FILE *file; + char line[64], *end; + unsigned i, x, y, z; + hwloc_distances_add_handle_t handle; + int err; + + file = fopen(distancesfilename, "r"); + if (!file) { + fprintf(stderr, "Failed to open distances file %s\n", distancesfilename); + return; + } + + if (!fgets(line, sizeof(line), file)) { + fprintf(stderr, "Failed to read header line\n"); + goto out; + } + if (!strncmp(line, "name=", 5)) { + end = strchr(line, '\n'); + if (end) { + *end = '\0'; + name = strdup(line+5); + } + if (!fgets(line, sizeof(line), file)) { + fprintf(stderr, "Failed to read kind line\n"); + goto out; + } + } + + kind = strtoul(line, NULL, 0); + + if (!fgets(line, sizeof(line), file)) { + fprintf(stderr, "Failed to read nbobjs line\n"); + goto out; + } + nbobjs = strtoul(line, NULL, 0); + if (nbobjs < 2) { + fprintf(stderr, "Invalid distances with nbobjs == %u\n", nbobjs); + goto out; + } + + objs = malloc(nbobjs * sizeof(*objs)); + values = malloc(nbobjs*nbobjs * sizeof(*values)); + if (!objs || !values) + goto out; + + for(i=0; i= 2) { + /* combination: generate the matrix to create x groups of y elements */ + unsigned j; + if (x*y*z != nbobjs) { + fprintf(stderr, "Invalid distances combination (%u*%u*%u=%u instead of %u)\n", + x, y, z, x*y*z, nbobjs); + goto out; + } + for(i=0; i 1) { + fprintf(stderr, "Found %u distances structure with name `%s'\n", nr, distances_transform_name); + goto out_with_dist; + } + + if (distances_transform_links) { + /* replace bandwidth with links */ + err = hwloc_distances_transform(topology, dist, HWLOC_DISTANCES_TRANSFORM_LINKS, NULL, 0); + if (err < 0) { + fprintf(stderr, "Failed to transform distances `%s' into links\n", distances_transform_name); + goto out_with_dist; + } + + } else if (distances_transform_merge_switch_ports) { + /* merge switch ports */ + err = hwloc_distances_transform(topology, dist, HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS, NULL, 0); + if (err < 0) { + fprintf(stderr, "Failed to transform distances `%s' by merging switch ports\n", distances_transform_name); + goto out_with_dist; + } + + } else if (distances_transform_closure) { + /* closure */ + err = hwloc_distances_transform(topology, dist, HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE, NULL, 0); + if (err < 0) { + fprintf(stderr, "Failed to transform distances `%s' through transitive closure\n", distances_transform_name); + goto out_with_dist; + } + + } else if (distances_transform_removeobj) { + /* remove an object */ + hwloc_obj_t obj; + unsigned i; + int ignored_multiple; + obj = get_unique_obj(topology, topodepth, distances_transform_removeobj, &ignored_multiple); + if (!obj) { + fprintf(stderr, "Failed to find object `%s' to remove from distances structure\n", distances_transform_removeobj); + goto out_with_dist; + } + for(i=0; inbobjs; i++) + if (obj == dist->objs[i]) { + printf("Removing object #%u from distances structures `%s'\n", + i, distances_transform_name); + dist->objs[i] = NULL; + } + err = hwloc_distances_transform(topology, dist, HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL, NULL, 0); + if (err < 0) { + fprintf(stderr, "Failed to transform distances `%s' to remove NULL objects\n", distances_transform_name); + goto out_with_dist; + } + + } else if (distances_transform_replace_oldtype) { + /* replace some objects */ + hwloc_obj_type_t old_type, new_type; + char *old_subtype, *new_subtype; + int replace_with_NULL; + unsigned i; + + assert(distances_transform_replace_newtype); + + if (hwloc_type_sscanf(distances_transform_replace_oldtype, &old_type, NULL, 0) < 0) { + old_type = HWLOC_OBJ_OS_DEVICE; + old_subtype = distances_transform_replace_oldtype; + } else { + old_subtype = NULL; + } + + if (!strcasecmp(distances_transform_replace_newtype, "null")) { + replace_with_NULL = 1; + } else { + replace_with_NULL = 0; + if (hwloc_type_sscanf(distances_transform_replace_newtype, &new_type, NULL, 0) < 0) { + new_type = HWLOC_OBJ_OS_DEVICE; + new_subtype = distances_transform_replace_newtype; + } else { + new_subtype = NULL; + } + } + + for(i=0; inbobjs; i++) { + hwloc_obj_t new, old = dist->objs[i]; + if (old->type != old_type) + continue; + if (old_subtype && (!old->subtype || strcasecmp(old_subtype, old->subtype))) + continue; + if (replace_with_NULL) { + new = NULL; + printf("Replacing object #%u in distances structures `%s' with NULL\n", + i, distances_transform_name); + } else { + new = hwloc_get_obj_with_same_locality(topology, old, + new_type, new_subtype, NULL, 0); + if (!new) + continue; + printf("Replacing object #%u in distances structures `%s'\n", + i, distances_transform_name); + } + dist->objs[i] = new; + } + + if (replace_with_NULL) + err = hwloc_distances_transform(topology, dist, HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL, NULL, 0); + } + + handle = hwloc_distances_add_create(topology, distances_transform_name, dist->kind, 0); + if (!handle) { + fprintf(stderr, "Failed to create new distances handle after transformation\n"); + goto out_with_dist; + } + err = hwloc_distances_add_values(topology, handle, dist->nbobjs, dist->objs, dist->values, 0); + if (err < 0) { + fprintf(stderr, "Failed to set values in new distances handle after transformation\n"); + goto out_with_dist; + } + err = hwloc_distances_add_commit(topology, handle, 0); + if (err < 0) { + fprintf(stderr, "Failed to commit new distances handle after transformation\n"); + goto out_with_dist; + } + + out_with_dist: + hwloc_distances_release_remove(topology, dist); + out: + return; +} + +int main(int argc, char *argv[]) +{ + hwloc_topology_t topology; + char *callname, *input, *output; + char **locations; + int nr_locations; + int topodepth; + int err; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + + /* skip argv[0], handle options */ + argc--; + argv++; + + hwloc_utils_check_api_version(callname); + + if (!getenv("HWLOC_XML_VERBOSE")) + putenv((char *) "HWLOC_XML_VERBOSE=1"); + + while (argc && *argv[0] == '-') { + if (!strcmp(argv[0], "--ci")) + clearinfos = 1; + else if (!strcmp(argv[0], "--ri")) + replaceinfos = 1; + else if (!strcmp(argv[0], "--cu")) + clearuserdata = 1; + else if (!strcmp(argv[0], "--cd")) + cleardistances = 1; + else if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } + else if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help")) { + usage(callname, stdout); + exit(EXIT_SUCCESS); + } else { + fprintf(stderr, "Unrecognized options: %s\n", argv[0]); + usage(callname, stderr); + exit(EXIT_FAILURE); + } + argc--; + argv++; + } + + if (argc < 3) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + input = argv[0]; + output = argv[1]; + argc -= 2; + argv += 2; + + if (!strcmp(argv[0], "--")) { + /* modern syntax with locations between "--" */ + argc--; + argv++; + locations = &argv[0]; + nr_locations = 0; + while (nr_locations < argc && strcmp(argv[nr_locations], "--")) + nr_locations++; + /* check we have an ending "--" */ + if (nr_locations == argc || strcmp(argv[nr_locations], "--")) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + /* skip those locations and the ending "--" */ + argc -= nr_locations+1; + argv += nr_locations+1; + } else { + /* old syntax with a single location without "--" before and after */ + locations = &argv[0]; + nr_locations = 1; + argc--; + argv++; + } + + if (argc < 1) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + if (!strcmp(argv[0], "info")) { + if (argc < 2 || (!replaceinfos && argc < 3)) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + infoname = argv[1]; + infovalue = argc >= 3 ? argv[2] : NULL; + + } else if (!strcmp(argv[0], "subtype")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + subtype = argv[1]; + + } else if (!strcmp(argv[0], "size")) { + char *end; + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + sizevalue = strtoull(argv[1], &end, 0); + if (end) { + if (!strcasecmp(end, "kB")) + sizevalue <<= 10; + else if (!strcasecmp(end, "MB")) + sizevalue <<= 20; + if (!strcasecmp(end, "GB")) + sizevalue <<= 30; + if (!strcasecmp(end, "TB")) + sizevalue <<= 40; + } + + } else if (!strcmp(argv[0], "misc")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + miscname = argv[1]; + + } else if (!strcmp(argv[0], "distances")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + distancesfilename = argv[1]; + if (argc >= 3) { + distancesflags = hwloc_utils_parse_distances_add_flags(argv[2]); + if(distancesflags == (unsigned long)-1) + goto out; + } + + } else if (!strcmp(argv[0], "distances-transform")) { + if (argc < 3) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + distances_transform_name = argv[1]; + if (!strcmp(argv[2], "links")) { + distances_transform_links = 1; + } else if (!strcmp(argv[2], "merge-switch-ports")) { + distances_transform_merge_switch_ports = 1; + } else if (!strcmp(argv[2], "transitive-closure")) { + distances_transform_closure = 1; + } else if (!strcmp(argv[2], "remove-obj")) { + if (argc < 4) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + distances_transform_removeobj = argv[3]; + } else if (!strcmp(argv[2], "replace-objs")) { + if (argc < 5) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + distances_transform_replace_oldtype = argv[3]; + distances_transform_replace_newtype = argv[4]; + } else { + fprintf(stderr, "Unrecognized distances-transform operation `%s'\n", argv[2]); + usage(callname, stderr); + exit(EXIT_FAILURE); + } + + } else if (!strcmp(argv[0], "memattr")) { + if (argc < 3) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + if (argc == 3) { + maname = argv[1]; + maflags = hwloc_utils_parse_memattr_flags(argv[2]); + } else { + mavname = argv[1]; + mavvalue = strtoull(argv[3], NULL, 0); + if (strcmp(argv[2], "none")) { + if (!strncmp(argv[2], "0x", 2)) { + /* parse a cpuset */ + mavicpuset = hwloc_bitmap_alloc(); + if (!mavicpuset) { + fprintf(stderr, "Failed to allocate cpuset for memattr initiator\n"); + goto out; + } + hwloc_bitmap_sscanf(mavicpuset, argv[2]); + } else { + /* parse an object */ + maviobjstr = argv[2]; + } + } + } + + } else if (!strcmp(argv[0], "cpukind")) { + if (argc < 4) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + ckcpuset = hwloc_bitmap_alloc(); + if (!ckcpuset) { + fprintf(stderr, "Failed to allocate cpuset for cpukind\n"); + goto out; + } + hwloc_bitmap_sscanf(ckcpuset, argv[1]); + ckefficiency = atoi(argv[2]); + ckflags = atoi(argv[3]); + if (argc == 5) { + fprintf(stderr, "cpukind with info name without info value\n"); + goto out; + } + if (argc >= 6 && *argv[4] && *argv[5]) { + ckiname = argv[4]; + ckivalue = argv[5]; + } + + } else if (!strcmp(argv[0], "none")) { + /* do nothing (maybe clear) */ + } else { + fprintf(stderr, "Unrecognized annotation type: %s\n", argv[0]); + usage(callname, stderr); + exit(EXIT_FAILURE); + } + + if (replaceinfos && !infoname) { + fprintf(stderr, "--ri missing a info name\n"); + usage(callname, stderr); + exit(EXIT_FAILURE); + } + + hwloc_topology_init(&topology); + hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED | HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT); + err = hwloc_topology_set_xml(topology, input); + if (err < 0) + goto out_with_topology; + + putenv((char *) "HWLOC_XML_USERDATA_NOT_DECODED=1"); + hwloc_topology_set_userdata_import_callback(topology, hwloc_utils_userdata_import_cb); + hwloc_topology_set_userdata_export_callback(topology, hwloc_utils_userdata_export_cb); + + err = hwloc_topology_load(topology); + if (err < 0) + goto out_with_topology; + + topodepth = hwloc_topology_get_depth(topology); + + if (cleardistances) { + hwloc_distances_remove(topology); + } + + if (distancesfilename) { + /* ignore locations */ + add_distances(topology, topodepth); + + } else if (distances_transform_name) { + transform_distances(topology, topodepth); + + } else if (maname) { + hwloc_memattr_id_t id; + err = hwloc_memattr_register(topology, maname, maflags, &id); + if (err < 0) { + fprintf(stderr, "Failed to register new memattr (%s)\n", strerror(errno)); + goto out_with_topology; + } + + } else if (ckcpuset) { + struct hwloc_info_s info; + info.name = ckiname; + info.value = ckivalue; + if (hwloc_cpukinds_register(topology, ckcpuset, ckefficiency, + ckiname ? 1 : 0, ckiname ? &info : NULL, + ckflags) < 0) { + fprintf(stderr, "Failed to register CPU kind (%s)\n", strerror(errno)); + } + + } else { + int i; + unsigned long mavflags = 0; + + if (mavname) { + mavid = hwloc_utils_parse_memattr_name(topology, mavname); + if (mavid == (hwloc_memattr_id_t) -1) { + fprintf(stderr, "Failed to find memattr by name %s\n", mavname); + goto out_with_topology; + } + hwloc_memattr_get_flags(topology, mavid, &mavflags); + } + + if (maviobjstr && (mavflags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR)) { + int ignored_multiple; + maviobj = get_unique_obj(topology, topodepth, maviobjstr, &ignored_multiple); + if (!maviobj) { + fprintf(stderr, "Failed to find memattr initiator object %s\n", maviobjstr); + goto out_with_topology; + } + if (ignored_multiple) { + fprintf(stderr, "Only the first object specified is used as a memattr initiator.\n"); + } + } + + for(i=0; i [ [...] ] [--] \fR... +. +.PP +Note that hwloc(7) provides a detailed explanation of the hwloc system +and of valid formats; +it should be read before reading this man page. +.\" ************************** +.\" Options Section +.\" ************************** +.SH TOPOLOGY OPTIONS +. +All topology options must be given before all other options. +. +.TP 10 +\fB\-\-no\-smt\fR, \fB\-\-no\-smt=\fR +Only keep the first PU per core before binding. +If \fI\fR is specified, keep the -th instead, if any. +PUs are ordered by physical index during this filtering. +.TP +\fB\-\-restrict\fR +Restrict the topology to the given cpuset. +.TP +\fB\-\-restrict\fR nodeset= +Restrict the topology to the given nodeset, unless \fB\-\-restrict\-flags\fR specifies something different. +.TP +\fB\-\-restrict\-flags\fR +Enforce flags when restricting the topology. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_topology_restrict()\fR. +Those names may be substrings of actual flag names as long as a single one matches, +for instance \fBbynodeset,memless\fR. +The default is \fB0\fR (or \fBnone\fR). +.TP +\fB\-\-disallowed\fR +Include objects disallowed by administrative limitations. +.TP +\fB\-\-best\-memattr\fR +Select the best NUMA node among the given memory binding set by looking +at the memory attribute given by \fI\fR (or as an index). + +If the memory attribute values depend on the initiator, the CPU binding +set is used as the initiator. + +Standard attribute names are \fICapacity\fR, \fILocality\fR, +\fIBandwidth\fR, and \fILatency\fR. +All existing attributes in the current topology may be listed with + + $ lstopo --memattrs + +.TP +\fB\-\-hbm\fR +Only take high bandwidth memory nodes (Intel Xeon Phi MCDRAM) +in account when looking for NUMA nodes in the input locations. + +This option must be combined with NUMA node locations, +such as \fI--hbm numa:1\fR for binding on the second HBM node. +It may also be written as \fIhbm:1\fR. +.TP +\fB\-\-no\-hbm\fR +Ignore high bandwidth memory nodes (Intel Xeon Phi MCDRAM) +when looking for NUMA nodes in the input locations. +. +.SH OPTIONS +. +All these options must be given after all topology options above. +. +.TP 10 +\fB\-\-cpubind\fR +Use following arguments for CPU binding (default). +.TP +\fB\-\-membind\fR +Use following arguments for memory binding. +If \fB\-\-mempolicy\fR is not also given, +the default policy is bind. +.TP +\fB\-\-mempolicy\fR +Change the memory binding policy. +The available policies are default, firsttouch, bind, interleave +and nexttouch. +This option is only meaningful when an actual binding is also given +with \fB\-\-membind\fR. +If \fB\-\-membind\fR is given without \fB\-\-mempolicy\fR, +the default policy is bind. + +.TP +\fB\-\-get\fR +Report the current bindings. +The output is an opaque bitmask that may be translated into objects with hwloc-calc +(see EXAMPLES below). +.TP +\ +When a command is given, the binding is displayed before executing +the command. When no command is given, the program exits after +displaying the current binding. +.TP +\ +When combined with \fB\-\-membind\fR, report the memory binding +instead of CPU binding. +.TP +\ +No location may be given since no binding is performed. + +.TP +\fB\-\-nodeset\fR +Report binding as a NUMA memory node set instead of a CPU set +if \-\-get was given. +This is useful for manipulating CPU-less NUMA nodes since their +cpuset is empty while their nodeset is correct. +.TP +\ +Also parse input bitmasks as nodesets instead of cpusets. +.TP +\ +When this option is not passed, individual input bitmasks may +still be parsed as nodesets if they are prefixed with \fInodeset=\fR. + +.TP +\fB\-e\fR \fB\-\-get\-last\-cpu\-location\fR +Report the last processors where the process ran. +The output is an opaque bitmask that may be translated into objects with hwloc-calc +(see EXAMPLES below). +.TP +\ +Note that the result may already be outdated when reported since +the operating system may move the process to other processors +at any time according to the binding. +.TP +\ +When a command is given, the last processors is displayed before +executing the command. When no command is given, the program exits +after displaying the last processors. +.TP +\ +This option cannot be combined with \fB\-\-membind\fR. +.TP +\ +No location may be given since no binding is performed. + +.TP +\fB\-\-single\fR +Bind on a single CPU to prevent migration. +.TP +\fB\-\-strict\fR +Require strict binding. +.TP +\fB\-\-pid\fR +Operate on pid +.TP +\fB\-\-tid\fR +Operate on thread instead of on an entire process. +The feature is only supported on Linux for thread CPU binding, +or for reporting the last processor where the thread ran if \fB\-e\fR was also passed. +.TP +\fB\-p\fR \fB\-\-physical\fR +Interpret input locations with OS/physical indexes instead of logical indexes. +This option does not apply to the output, see \fB\-\-get\fR above. +.TP +\fB\-l\fR \fB\-\-logical\fR +Interpret input locations with logical indexes instead of physical/OS indexes (default). +This option does not apply to the output, see \fB\-\-get\fR above. +.TP +\fB\-\-taskset\fR +Display CPU set strings in the format recognized by the taskset command-line +program instead of hwloc-specific CPU set string format. +This option has no impact on the format of input CPU set strings, +both formats are always accepted. +.TP +\fB\-f\fR \fB\-\-force\fR +Launch the executable even if binding failed. +.TP +\fB\-q\fR \fB\-\-quiet\fR +Hide non-fatal error messages. +It includes locations pointing to non-existing objects, +as well as failure to bind. +This is usually useful in addition to \fB\-\-force\fR. +.TP +\fB\-v\fR \fB\-\-verbose\fR +Verbose output. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc-bind execs an executable (with optional command line arguments) +that is bound to the specified location (or list of locations). +Location specification is described in hwloc(7). +Upon successful execution, hwloc-bind simply sets bindings and then execs +the executable over itself. +. +.PP +If a bitmask location is given with prefix \fInodeset=\fR, then it +is considered a nodeset instead of a CPU set. See also \fB\-\-nodeset\fR. +. +.PP +If multiple locations are given, they are combined in the sense that +the binding will be wider. The process will be allowed to run on every +location inside the combination. +. +.PP +The list of input locations may be explicitly ended with "--". +. +.PP +If binding fails, or if the binding set is empty, and \fB\-\-force\fR +was not given, hwloc-bind returns with an error instead of launching +the executable. +. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. Most of the concepts described in +hwloc(7) directly apply to the hwloc-bind utility. +. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +hwloc-bind's operation is best described through several examples. +More details about how locations are specified on the hwloc-bind +command line are described in hwloc(7). +. +.PP +To run the echo command on the first logical processor of the second +package: + + $ hwloc-bind package:1.pu:0 -- echo hello + +which is exactly equivalent to the following line as long as there is +no ambiguity between hwloc-bind option names and the executed command name: + + $ hwloc-bind package:1.pu:0 echo hello + +To bind the "echo" command to the first core of the second package and +the second core of the first package: + + $ hwloc-bind package:1.core:0 package:0.core:1 -- echo hello + +To bind on the first PU of all cores of the first package: + + $ hwloc-bind package:0.core:all.pu:0 -- echo hello + $ hwloc-bind --no-smt package:0 -- echo hello + +To bind on the memory node local to a PU with largest capacity: + + $ hwloc-bind --best-memattr capacity --cpubind pu:23 --membind pu:23 -- echo hello + +To bind memory on the first high-bandwidth memory node on Intel Xeon Phi: + + $ hwloc-bind --membind hbm:0 -- echo hello + $ hwloc-bind --hbm --membind numa:0 -- echo hello + +Note that binding the "echo" command to multiple processors is +probably meaningless (because "echo" is likely implemented as a +single-threaded application); these examples just serve to show what +hwloc-bind can do. +. +.PP +To run on the first three packages on the second and third nodes: + + $ hwloc-bind node:1-2.package:0:3 -- echo hello + +which is also equivalent to: + + $ hwloc-bind node:1-2.package:0-2 -- echo hello + +Note that if you attempt to bind to objects that do not exist, +hwloc-bind will not warn unless +.I -v +was specified. + +To run on processor with physical index 2 in package with physical index 1: + + $ hwloc-bind --physical package:1.core:2 -- echo hello + +To run on odd cores within even packages: + + $ hwloc-bind package:even.core:odd -- echo hello + +To run on the first package, except on its second and fifth cores: + + $ hwloc-bind package:0 ~package:0.core:1 ~package:0.core:4 -- echo hello + +To run anywhere except on the first package: + + $ hwloc-bind all ~package:0 -- echo hello + +To run on a core near the network interface named eth0: + + $ hwloc-bind os=eth0 -- echo hello + +To run on a core near the PCI device whose bus ID is 0000:01:02.0: + + $ hwloc-bind pci=0000:01:02.0 -- echo hello + +To bind memory on second memory node and run on first node (when supported by the OS): + + $ hwloc-bind --cpubind node:1 --membind node:0 -- echo hello + +The --get option can report current bindings. This example shows +nesting hwloc-bind invocations to set a binding and then report it: + + $ hwloc-bind node:1.package:2 -- hwloc-bind --get + 0x00004444,0x44000000 + +hwloc-calc can also be used to convert cpu mask strings to +human-readable package/core/PU strings; see the description of -H in +hwloc-calc(1) for more details. The following example binds to all +the PUs in a specific core, uses the --get option to retrieve where +the process was actually bound, and then uses hwloc-calc to display +the resulting cpu mask in space-delimited list of human-readable +locations: + + $ hwloc-bind package:1.core:2 -- hwloc-bind --get | hwloc-calc -H package.core.pu + Package:1.Core:2.PU:0 Package:1.Core:2.PU:1 + +hwloc-calc may convert this output into actual objects, either with logical or physical indexes: + + $ hwloc-calc --physical -I pu `hwloc-bind --get` + 26,30,34,38,42,46 + $ hwloc-calc --logical -I pu `hwloc-bind --get` --sep " " + 24 25 26 27 28 29 + +. +.PP +Locations may also be specified as a hex bit mask (typically generated +by hwloc-calc). For example: + + $ hwloc-bind 0x00004444,0x44000000 -- echo hello + $ hwloc-bind `hwloc-calc node:1.package:2` -- echo hello + +The current memory binding may also be reported: + + $ hwloc-bind --membind node:1 --mempolicy interleave -- hwloc-bind --get --membind + 0x000000f0 (interleave) + +.SH HINT +If the graphics-enabled lstopo is available, use for instance + + $ hwloc-bind core:2 -- lstopo --pid 0 + +to check what the result of your binding command actually is. +lstopo will graphically show where it is bound to by hwloc-bind. +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, hwloc-bind execs the command over itself. +The return value is therefore whatever the return value of the command +is. +. +.PP +hwloc-bind will return nonzero if any kind of error occurs, such as +(but not limited to): failure to parse the command line, failure to +retrieve process bindings, or lack of a command to execute. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-calc(1), hwloc-distrib(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-bind.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-bind.c new file mode 100644 index 0000000000..b41443741d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-bind.c @@ -0,0 +1,626 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2010, 2012 Université Bordeaux + * Copyright © 2009-2018 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc-calc.h" +#include "hwloc.h" +#ifdef HWLOC_LINUX_SYS +#include "hwloc/linux.h" +#endif + +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +#include "misc.h" + +#if defined(HWLOC_WIN_SYS) && !defined(__CYGWIN__) +#include +#define execvp(a,b) (int)_execvp((a), (const char * const *)(b)) +#endif + +void usage(const char *name, FILE *where) +{ + fprintf(where, "Usage: %s [topology options] [options] -- command ...\n", name); + fprintf(where, " may be a space-separated list of cpusets or objects\n"); + fprintf(where, " as supported by the hwloc-calc utility, e.g:\n"); + hwloc_calc_locations_usage(where); + fprintf(where, "Input topology options (must be at the beginning):\n"); + fprintf(where, " --no-smt Only keep a single PU per core\n"); + fprintf(where, " --restrict [nodeset=]\n"); + fprintf(where, " Restrict the topology to some processors or NUMA nodes.\n"); + fprintf(where, " --restrict-flags Set the flags to be used during restrict\n"); + fprintf(where, " --disallowed Include objects disallowed by administrative limitations\n"); + fprintf(where, " --hbm Only consider high bandwidth memory nodes\n"); + fprintf(where, " --no-hbm Ignore high-bandwidth memory nodes\n"); + fprintf(where, "Options:\n"); + fprintf(where, " --cpubind Use following arguments for cpu binding (default)\n"); + fprintf(where, " --membind Use following arguments for memory binding\n"); + fprintf(where, " --mempolicy \n" + " Change policy that --membind applies (default is bind)\n"); + fprintf(where, " --best-memattr \n"); + fprintf(where, " Select the best target node in the given memory binding\n"); + fprintf(where, " -l --logical Take logical object indexes (default)\n"); + fprintf(where, " -p --physical Take physical object indexes\n"); + fprintf(where, " --single Bind on a single CPU to prevent migration\n"); + fprintf(where, " --strict Require strict binding\n"); + fprintf(where, " --get Retrieve current process binding\n"); + fprintf(where, " -e --get-last-cpu-location\n" + " Retrieve the last processors where the current process ran\n"); + fprintf(where, " --nodeset Display (and parse) cpusets as nodesets\n"); + fprintf(where, " --pid Operate on process \n"); +#ifdef HWLOC_LINUX_SYS + fprintf(where, " --tid Operate on thread \n"); +#endif + fprintf(where, " --taskset Use taskset-specific format when displaying cpuset strings\n"); + fprintf(where, "Miscellaneous options:\n"); + fprintf(where, " -f --force Launch the command even if binding failed\n"); + fprintf(where, " -q --quiet Hide non-fatal error messages\n"); + fprintf(where, " -v --verbose Show verbose messages\n"); + fprintf(where, " --version Report version and exit\n"); + fprintf(where, " -h --help Show this usage\n"); +} + +int main(int argc, char *argv[]) +{ + hwloc_topology_t topology; + int depth = -1; + hwloc_bitmap_t cpubind_set, membind_set; + int got_cpubind = 0, got_membind = 0; + int working_on_cpubind = 1; /* membind if 0 */ + int get_binding = 0; + int use_nodeset = 0; + int get_last_cpu_location = 0; + unsigned long flags = 0; + unsigned long restrict_flags = 0; + int force = 0; + int single = 0; + int verbose = 0; + int no_smt = -1; + int only_hbm = -1; + int logical = 1; + int taskset = 0; + unsigned cpubind_flags = 0; + hwloc_membind_policy_t membind_policy = HWLOC_MEMBIND_BIND; + int got_mempolicy = 0; + unsigned membind_flags = 0; + int opt; + int ret; + int pid_number = -1; + int tid_number = -1; + hwloc_pid_t pid = 0; /* only valid when pid_number > 0, but gcc-4.8 still reports uninitialized warnings */ + hwloc_memattr_id_t best_memattr_id = (hwloc_memattr_id_t) -1; + const char *best_memattr_str = NULL; + char *callname; + char *restrictstring = NULL; + struct hwloc_calc_location_context_s lcontext; + struct hwloc_calc_set_context_s scontext; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + + /* skip argv[0], handle options */ + argv++; + argc--; + + hwloc_utils_check_api_version(callname); + + cpubind_set = hwloc_bitmap_alloc(); + membind_set = hwloc_bitmap_alloc(); + + while (argc >= 1) { + opt = 0; + + if (!strcmp (argv[0], "--disallowed") || !strcmp (argv[0], "--whole-system")) { + flags |= HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED; + goto next_config; + } + if (!strcmp (argv[0], "--restrict")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + if(strncmp(argv[1], "nodeset=", 7)) + restrictstring = strdup(argv[1]); + else { + restrictstring = strdup(argv[1]+8); + restrict_flags |= HWLOC_RESTRICT_FLAG_BYNODESET; + } + opt = 1; + goto next_config; + } + if (!strcmp (argv[0], "--restrict-flags")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + restrict_flags = hwloc_utils_parse_restrict_flags(argv[1]); + opt = 1; + goto next_config; + } + if (!strcmp(argv[0], "--no-smt")) { + no_smt = 0; + goto next_config; + } + if (!strncmp(argv[0], "--no-smt=", 9)) { + no_smt = atoi(argv[0] + 9); + goto next_config; + } + if (!strcmp(argv[0], "--hbm")) { + only_hbm = 1; + goto next_config; + } + if (!strcmp(argv[0], "--no-hbm")) { + only_hbm = 0; + goto next_config; + } + if (!strcmp (argv[0], "--best-memattr")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + best_memattr_str = argv[1]; + opt = 1; + goto next_config; + } + + break; + + next_config: + argc -= opt+1; + argv += opt+1; + } + + hwloc_topology_init(&topology); + hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_set_flags(topology, flags); + ret = hwloc_topology_load(topology); + if (restrictstring) { + hwloc_bitmap_t restrictset = hwloc_bitmap_alloc(); + hwloc_bitmap_sscanf(restrictset, restrictstring); + if (hwloc_topology_restrict (topology, restrictset, restrict_flags)) { + perror("Restricting the topology"); + /* FALLTHRU */ + } + hwloc_bitmap_free(restrictset); + free(restrictstring); + } + if (ret < 0) + return EXIT_FAILURE; + depth = hwloc_topology_get_depth(topology); + + while (argc >= 1) { + char *location; + int nodeset_location; + + if (!strcmp(argv[0], "--")) { + argc--; + argv++; + break; + } + + opt = 0; + + if (*argv[0] == '-') { + if (!strcmp(argv[0], "-v") || !strcmp(argv[0], "--verbose")) { + verbose++; + goto next; + } + if (!strcmp(argv[0], "-q") || !strcmp(argv[0], "--quiet")) { + verbose--; + goto next; + } + if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help")) { + usage(callname, stdout); + return EXIT_SUCCESS; + } + if (!strcmp(argv[0], "--single")) { + single = 1; + goto next; + } + if (!strcmp(argv[0], "-f") || !strcmp(argv[0], "--force")) { + force = 1; + goto next; + } + if (!strcmp(argv[0], "--strict")) { + cpubind_flags |= HWLOC_CPUBIND_STRICT; + membind_flags |= HWLOC_MEMBIND_STRICT; + goto next; + } + if (!strcmp(argv[0], "--pid")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + pid_number = atoi(argv[1]); + opt = 1; + goto next; + } +#ifdef HWLOC_LINUX_SYS + if (!strcmp(argv[0], "--tid")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + tid_number = atoi(argv[1]); + opt = 1; + goto next; + } +#endif + if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } + if (!strcmp(argv[0], "-l") || !strcmp(argv[0], "--logical")) { + logical = 1; + goto next; + } + if (!strcmp(argv[0], "-p") || !strcmp(argv[0], "--physical")) { + logical = 0; + goto next; + } + if (!strcmp(argv[0], "--taskset")) { + taskset = 1; + goto next; + } + if (!strcmp (argv[0], "-e") || !strncmp (argv[0], "--get-last-cpu-location", 10)) { + get_last_cpu_location = 1; + goto next; + } + if (!strcmp (argv[0], "--get")) { + get_binding = 1; + goto next; + } + if (!strcmp (argv[0], "--nodeset")) { + use_nodeset = 1; + goto next; + } + if (!strcmp (argv[0], "--cpubind")) { + working_on_cpubind = 1; + goto next; + } + if (!strcmp (argv[0], "--membind")) { + working_on_cpubind = 0; + goto next; + } + if (!strcmp (argv[0], "--mempolicy")) { + if (!strncmp(argv[1], "default", 2)) + membind_policy = HWLOC_MEMBIND_DEFAULT; + else if (!strncmp(argv[1], "firsttouch", 2)) + membind_policy = HWLOC_MEMBIND_FIRSTTOUCH; + else if (!strncmp(argv[1], "bind", 2)) + membind_policy = HWLOC_MEMBIND_BIND; + else if (!strncmp(argv[1], "interleave", 2)) + membind_policy = HWLOC_MEMBIND_INTERLEAVE; + else if (!strncmp(argv[1], "nexttouch", 2)) + membind_policy = HWLOC_MEMBIND_NEXTTOUCH; + else { + fprintf(stderr, "Unrecognized memory binding policy %s\n", argv[1]); + usage (callname, stderr); + exit(EXIT_FAILURE); + } + got_mempolicy = 1; + opt = 1; + goto next; + } + + fprintf (stderr, "Unrecognized option: %s\n", argv[0]); + usage(callname, stderr); + return EXIT_FAILURE; + } + + location = argv[0]; + nodeset_location = 0; + if (!strncmp(location, "nodeset=", 8)) { + location += 8; + nodeset_location = 1; + } + + lcontext.topology = topology; + lcontext.topodepth = depth; + lcontext.only_hbm = only_hbm; + lcontext.logical = logical; + lcontext.verbose = verbose; + scontext.nodeset_input = use_nodeset || nodeset_location; + scontext.nodeset_output = working_on_cpubind ? 0 : 1; + scontext.output_set = working_on_cpubind ? cpubind_set : membind_set; + ret = hwloc_calc_process_location_as_set(&lcontext, &scontext, location); + if (ret < 0) { + if (verbose > 0) + fprintf(stderr, "assuming the command starts at %s\n", argv[0]); + break; + } + if (working_on_cpubind) + got_cpubind = 1; + else + got_membind = 1; + + next: + argc -= opt+1; + argv += opt+1; + } + + if (pid_number > 0 && tid_number > 0) { + fprintf(stderr, "cannot operate both on tid and pid\n"); + return EXIT_FAILURE; + } + + if (pid_number > 0) { + if (hwloc_pid_from_number(&pid, pid_number, !(get_binding || get_last_cpu_location), 1 /* verbose */) < 0) { + fprintf(stderr, "failed to use pid\n"); + return EXIT_FAILURE; + } + /* no need to set_pid() + * the doc just says we're operating on pid, not that we're retrieving the topo/cpuset as seen from inside pid + */ + } + + if (get_last_cpu_location && !working_on_cpubind) { + fprintf(stderr, "Options --membind and --get-last-cpu-location cannot be combined.\n"); + return EXIT_FAILURE; + } + if ((get_binding || get_last_cpu_location) && (got_cpubind || got_membind)) { + /* doesn't work because get_binding/get_last_cpu_location overwrites cpubind_set */ + fprintf(stderr, "Cannot display and set binding at the same time.\n"); + return EXIT_FAILURE; + } + + if (get_binding || get_last_cpu_location) { + char *s; + const char *policystr = NULL; + int err; + if (working_on_cpubind) { + if (get_last_cpu_location) { + if (pid_number > 0) + err = hwloc_get_proc_last_cpu_location(topology, pid, cpubind_set, 0); +#ifdef HWLOC_LINUX_SYS + else if (tid_number > 0) + err = hwloc_linux_get_tid_last_cpu_location(topology, tid_number, cpubind_set); +#endif + else + err = hwloc_get_last_cpu_location(topology, cpubind_set, 0); + } else { + if (pid_number > 0) + err = hwloc_get_proc_cpubind(topology, pid, cpubind_set, 0); +#ifdef HWLOC_LINUX_SYS + else if (tid_number > 0) + err = hwloc_linux_get_tid_cpubind(topology, tid_number, cpubind_set); +#endif + else + err = hwloc_get_cpubind(topology, cpubind_set, 0); + } + if (err) { + const char *errmsg = strerror(errno); + if (pid_number > 0) + fprintf(stderr, "hwloc_get_proc_%s %d failed (errno %d %s)\n", get_last_cpu_location ? "last_cpu_location" : "cpubind", pid_number, errno, errmsg); + else if (tid_number > 0) + fprintf(stderr, "hwloc_get_tid_%s %d failed (errno %d %s)\n", get_last_cpu_location ? "last_cpu_location" : "cpubind", tid_number, errno, errmsg); + else + fprintf(stderr, "hwloc_get_%s failed (errno %d %s)\n", get_last_cpu_location ? "last_cpu_location" : "cpubind", errno, errmsg); + return EXIT_FAILURE; + } + if (use_nodeset) { + hwloc_bitmap_t nset = hwloc_bitmap_alloc(); + hwloc_cpuset_to_nodeset(topology, cpubind_set, nset); + if (taskset) + hwloc_bitmap_taskset_asprintf(&s, nset); + else + hwloc_bitmap_asprintf(&s, nset); + hwloc_bitmap_free(nset); + } else { + if (taskset) + hwloc_bitmap_taskset_asprintf(&s, cpubind_set); + else + hwloc_bitmap_asprintf(&s, cpubind_set); + } + + } else { + hwloc_membind_policy_t policy; + if (pid_number > 0) { + err = hwloc_get_proc_membind(topology, pid, membind_set, &policy, use_nodeset ? HWLOC_MEMBIND_BYNODESET : 0); + } else if (tid_number > 0) { + err = -1; errno = ENOSYS; + } else { + err = hwloc_get_membind(topology, membind_set, &policy, use_nodeset ? HWLOC_MEMBIND_BYNODESET : 0); + } + if (err) { + const char *errmsg = strerror(errno); + if (pid_number > 0) + fprintf(stderr, "hwloc_get_proc_membind %d failed (errno %d %s)\n", pid_number, errno, errmsg); + else + fprintf(stderr, "hwloc_get_membind failed (errno %d %s)\n", errno, errmsg); + return EXIT_FAILURE; + } + if (taskset) + hwloc_bitmap_taskset_asprintf(&s, membind_set); + else + hwloc_bitmap_asprintf(&s, membind_set); + switch (policy) { + case HWLOC_MEMBIND_FIRSTTOUCH: policystr = "firsttouch"; break; + case HWLOC_MEMBIND_BIND: policystr = "bind"; break; + case HWLOC_MEMBIND_INTERLEAVE: policystr = "interleave"; break; + case HWLOC_MEMBIND_NEXTTOUCH: policystr = "nexttouch"; break; + default: fprintf(stderr, "unknown memory policy %d\n", policy); assert(0); break; + } + } + if (policystr) + printf("%s (%s)\n", s, policystr); + else + printf("%s\n", s); + free(s); + } + + if (got_membind) { + if (hwloc_bitmap_iszero(membind_set)) { + if (verbose >= 0) + fprintf(stderr, "cannot membind to empty set\n"); + if (!force) + goto failed_binding; + } + + if (best_memattr_str) { + struct hwloc_location loc; + char *s; + best_memattr_id = hwloc_utils_parse_memattr_name(topology, best_memattr_str); + if (best_memattr_id == (hwloc_memattr_id_t) -1) { + fprintf(stderr, "unrecognized memattr %s\n", best_memattr_str); + return EXIT_FAILURE; + } + + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = cpubind_set; + if (verbose > 0) { + hwloc_bitmap_asprintf(&s, membind_set); + fprintf(stderr, "memory binding set was %s before filtering by best memattr\n", s); + free(s); + } + hwloc_utils_get_best_node_in_nodeset_by_memattr(topology, best_memattr_id, membind_set, &loc); + if (verbose > 0) { + hwloc_bitmap_asprintf(&s, membind_set); + /* double-space before %s for alignment with previous verbose message */ + fprintf(stderr, "memory binding is now %s after filtering by best memattr\n", s); + free(s); + } + if (hwloc_bitmap_iszero(membind_set)) { + fprintf(stderr, "failed to find a best memory node for memory attribute `%s' among the given membind set.\n", best_memattr_str); + return EXIT_FAILURE; + } + } + + if (verbose > 0) { + char *s; + hwloc_bitmap_asprintf(&s, membind_set); + fprintf(stderr, "binding on memory set %s\n", s); + free(s); + } + if (single) + hwloc_bitmap_singlify(membind_set); + if (pid_number > 0) + ret = hwloc_set_proc_membind(topology, pid, membind_set, membind_policy, membind_flags | HWLOC_MEMBIND_BYNODESET); + else if (tid_number > 0) { + ret = -1; errno = ENOSYS; + } else + ret = hwloc_set_membind(topology, membind_set, membind_policy, membind_flags | HWLOC_MEMBIND_BYNODESET); + if (ret && verbose >= 0) { + int bind_errno = errno; + const char *errmsg = strerror(bind_errno); + char *s; + hwloc_bitmap_asprintf(&s, membind_set); + if (pid_number > 0) + fprintf(stderr, "hwloc_set_proc_membind %s (policy %d flags 0x%x) PID %d failed (errno %d %s)\n", + s, membind_policy, membind_flags, pid_number, bind_errno, errmsg); + else + fprintf(stderr, "hwloc_set_membind %s (policy %d flags 0x%x) failed (errno %d %s)\n", + s, membind_policy, membind_flags, bind_errno, errmsg); + free(s); + } + if (ret && !force) + goto failed_binding; + } else { + if (got_mempolicy) + fprintf(stderr, "--mempolicy ignored unless memory binding is also requested with --membind.\n"); + } + + if (!got_cpubind && no_smt != -1) { + hwloc_bitmap_copy(cpubind_set, hwloc_topology_get_topology_cpuset(topology)); + got_cpubind = 1; + } + + if (got_cpubind) { + if (hwloc_bitmap_iszero(cpubind_set)) { + if (verbose >= 0) + fprintf(stderr, "cannot cpubind to empty set\n"); + if (!force) + goto failed_binding; + } + if (verbose > 0) { + char *s; + hwloc_bitmap_asprintf(&s, cpubind_set); + fprintf(stderr, "binding on cpu set %s\n", s); + free(s); + } + if (got_membind && !hwloc_bitmap_isequal(membind_set, cpubind_set)) { + if (verbose) + fprintf(stderr, "Conflicting CPU and memory binding requested, adding HWLOC_CPUBIND_NOMEMBIND flag.\n"); + cpubind_flags |= HWLOC_CPUBIND_NOMEMBIND; + } + if (no_smt != -1) { + if (hwloc_get_type_depth(topology, HWLOC_OBJ_CORE) == HWLOC_TYPE_DEPTH_UNKNOWN) { + fprintf(stderr, "Topology has no Core object, ignoring --no-smt\n"); + } else { + hwloc_bitmap_singlify_per_core(topology, cpubind_set, no_smt); + } + } + if (single) + hwloc_bitmap_singlify(cpubind_set); + if (pid_number > 0) + ret = hwloc_set_proc_cpubind(topology, pid, cpubind_set, cpubind_flags); +#ifdef HWLOC_LINUX_SYS + else if (tid_number > 0) + ret = hwloc_linux_set_tid_cpubind(topology, tid_number, cpubind_set); +#endif + else + ret = hwloc_set_cpubind(topology, cpubind_set, cpubind_flags); + if (ret && verbose >= 0) { + int bind_errno = errno; + const char *errmsg = strerror(bind_errno); + char *s; + hwloc_bitmap_asprintf(&s, cpubind_set); + if (pid_number > 0) + fprintf(stderr, "hwloc_set_proc_cpubind %s (flags 0x%x) PID %d failed (errno %d %s)\n", + s, cpubind_flags, pid_number, bind_errno, errmsg); + else if (tid_number > 0) + fprintf(stderr, "hwloc_set_tid_cpubind %s (flags 0x%x) PID %d failed (errno %d %s)\n", + s, cpubind_flags, tid_number, bind_errno, errmsg); + else + fprintf(stderr, "hwloc_set_cpubind %s (flags 0x%x) failed (errno %d %s)\n", + s, cpubind_flags, bind_errno, errmsg); + free(s); + } + if (ret && !force) + goto failed_binding; + } + + hwloc_bitmap_free(cpubind_set); + hwloc_bitmap_free(membind_set); + + hwloc_topology_destroy(topology); + + if (pid_number > 0 || tid_number > 0) + return EXIT_SUCCESS; + + if (0 == argc) { + if (get_binding || get_last_cpu_location) + return EXIT_SUCCESS; + fprintf(stderr, "%s: nothing to do!\n", callname); + return EXIT_FAILURE; + } + + /* FIXME: check whether Windows execvp() passes INHERIT_PARENT_AFFINITY to CreateProcess() + * because we need to propagate processor group affinity. However process-wide affinity + * isn't supported with processor groups so far. + */ + ret = execvp(argv[0], argv); + if (ret) { + fprintf(stderr, "%s: Failed to launch executable \"%s\"\n", + callname, argv[0]); + perror("execvp"); + } + return EXIT_FAILURE; + + +failed_binding: + hwloc_bitmap_free(cpubind_set); + hwloc_bitmap_free(membind_set); + hwloc_topology_destroy(topology); + return EXIT_FAILURE; +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.1in new file mode 100644 index 0000000000..7a648425bf --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.1in @@ -0,0 +1,443 @@ +.\" -*- nroff -*- +.\" Copyright © 2010-2021 Inria. All rights reserved. +.\" Copyright © 2009-2020 Cisco Systems, Inc. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-CALC "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-calc \- Operate on cpu mask strings and objects +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.B hwloc-calc +[\fItopology options\fR] [\fIoptions\fR] \fI [ [...] ] +. +.PP +Note that hwloc(7) provides a detailed explanation of the hwloc system +and of valid formats; +it should be read before reading this man page. +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH TOPOLOGY OPTIONS +. +All topology options must be given before all other options. +. +.TP 10 +\fB\-\-no\-smt\fR, \fB\-\-no\-smt=\fR +Only keep the first PU per core in the input locations. +If \fI\fR is specified, keep the -th instead, if any. +PUs are ordered by physical index during this filtering. +.TP +\fB\-\-cpukind\fR +\fB\-\-cpukind\fR = +Only keep PUs whose CPU kind match. +Either a single CPU kind is specified as an index, +or the info name/value keypair will select matching kinds. + +When specified by index, it corresponds to hwloc ranking of CPU kinds +which returns energy-efficient cores first, and high-performance +power-hungry cores last. +The full list of CPU kinds may be seen with \fIlstopo --cpukinds\fR. +.TP +\fB\-\-restrict\fR +Restrict the topology to the given cpuset. +.TP +\fB\-\-restrict\fR nodeset= +Restrict the topology to the given nodeset, unless \fB\-\-restrict\-flags\fR specifies something different. +.TP +\fB\-\-restrict\-flags\fR +Enforce flags when restricting the topology. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_topology_restrict()\fR. +Those names may be substrings of actual flag names as long as a single one matches, +for instance \fBbynodeset,memless\fR. +The default is \fB0\fR (or \fBnone\fR). +.TP +\fB\-\-disallowed\fR +Include objects disallowed by administrative limitations. +.TP +\fB\-i\fR , \fB\-\-input\fR +Read topology from XML file (instead of discovering the +topology on the local machine). If is "\-", the standard input +is used. XML support must have been compiled in to hwloc for this +option to be usable. +.TP +\fB\-i\fR , \fB\-\-input\fR +Read topology from instead of discovering the topology +of the local machine. +On Linux, the directory may contain the topology files +gathered from another machine topology with hwloc-gather-topology. +On x86, the directory may contain a cpuid dump gathered +with hwloc-gather-cpuid. +.TP +\fB\-i\fR , \fB\-\-input\fR +Simulate a fake hierarchy (instead of discovering the topology on the +local machine). If is "node:2 pu:3", the topology will +contain two NUMA nodes with 3 processing units in each of them. +The string must end with a number of PUs. +.TP +\fB\-\-if\fR , \fB\-\-input\-format\fR +Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR, +\fBcpuid\fR and \fBsynthetic\fR. +. +.SH OPTIONS +. +All these options must be given after all topology options above. +. +.TP 10 +\fB\-p\fR \fB\-\-physical\fR +Use OS/physical indexes instead of logical indexes for both input and output. +.TP +\fB\-l\fR \fB\-\-logical\fR +Use logical indexes instead of physical/OS indexes for both input and output (default). +.TP +\fB\-\-pi\fR \fB\-\-physical\-input\fR +Use OS/physical indexes instead of logical indexes for input. +.TP +\fB\-\-li\fR \fB\-\-logical\-input\fR +Use logical indexes instead of physical/OS indexes for input (default). +.TP +\fB\-\-po\fR \fB\-\-physical\-output\fR +Use OS/physical indexes instead of logical indexes for output. +.TP +\fB\-\-lo\fR \fB\-\-logical\-output\fR +Use logical indexes instead of physical/OS indexes for output (default, except for cpusets which are always physical). +.TP +\fB\-n\fR \fB\-\-nodeset\fR +Interpret both input and output sets as nodesets instead of CPU sets. +See \fB\-\-nodeset\-output\fR and \fB\-\-nodeset\-input\fR below for details. +.TP +\fB\-\-no\fR \fB\-\-nodeset\-output\fR +Report nodesets instead of CPU sets. +This output is more precise than the default CPU set output when memory +locality matters because it properly describes CPU-less NUMA nodes, +as well as NUMA-nodes that are local to multiple CPUs. +.TP +\fB\-\-ni\fR \fB\-\-nodeset\-input\fR +Interpret input sets as nodesets instead of CPU sets. +.TP +\fB\-N \-\-number\-of \fR +Report the number of objects of the given type or depth that intersect the CPU set. +This is convenient for finding how many cores, NUMA nodes or PUs are available +in a machine. + +When combined with \fB\-\-nodeset\fR or \fB\-\-nodeset-output\fR, +the nodeset is considered instead of the CPU set for finding matching objects. +This is useful when reporting the output as a number or set of NUMA nodes. +.TP +\fB\-I \-\-intersect \fR +Find the list of objects of the given type or depth that intersect the CPU set and +report the comma-separated list of their indexes instead of the cpu mask string. +This may be used for determining the list of objects above or below the input +objects. + +When combined with \fB\-\-physical\fR, the list is convenient to pass to external +tools such as taskset or numactl \fB\-\-physcpubind\fR or \fB\-\-membind\fR. +This is different from \-\-largest since the latter requires that all reported +objects are strictly included inside the input objects. + +When combined with \fB\-\-nodeset\fR or \fB\-\-nodeset-output\fR, +the nodeset is considered instead of the CPU set for finding matching objects. +This is useful when reporting the output as a number or set of NUMA nodes. +.TP +\fB\-H \-\-hierarchical ....\fR +Find the list of objects of type that intersect the CPU set and +report the space-separated list of their hierarchical indexes with respect +to , , etc. +For instance, if \fIpackage.core\fR is given, the output would be +\fIPackage:1.Core:2 Package:2.Core:3\fR if the input contains the third +core of the second package and the fourth core of the third package. + +Only normal CPU-side object types may be used. NUMA nodes cannot. +.TP +\fB\-\-largest\fR +Report (in a human readable format) the list of largest objects which exactly +include all input objects (by looking at their CPU sets). +None of these output objects intersect each other, and the sum of them is +exactly equivalent to the input. No largest object is included in the input +This is different from \-\-intersect where reported objects may not be +strictly included in the input. +.TP +\fB\-\-local\-memory\fR +Report the list of NUMA nodes that are local to the input objects. + +This option is similar to \fB\-I numa\fR but the way nodes are selected +is different: +The selection performed by \fB\-\-local\-memory\fR may be precisely +configured with \fB\-\-local\-memory\-flags\fR, +while \fB\-I numa\fR just selects all nodes that are somehow local to +any of the input objects. +.TP +\fB\-\-local\-memory\-flags\fR +Change the flags used to select local NUMA nodes. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_get_local_numanode_objs()\fR. +Those names may be substrings of actual flag names as long as a single one matches. +The default is \fB3\fR (or \fBsmaller,larger\fR) +which means NUMA nodes are displayed +if their locality either contains or is contained +in the locality of the given object. + +This option enables \fB\-\-local\-memory\fR. +.TP +\fB\-\-best\-memattr\fR +Enable the listing of local memory nodes with \fB\-\-local\-memory\fR, +but only display the local node that has the best value for the memory +attribute given by \fI\fR (or as an index). + +If the memory attribute values depend on the initiator, the hwloc-calc +input objects are used as the initiator. + +Standard attribute names are \fICapacity\fR, \fILocality\fR, +\fIBandwidth\fR, and \fILatency\fR. +All existing attributes in the current topology may be listed with + + $ lstopo --memattrs + +.TP +\fB\-\-sep \fR +Change the field separator in the output. +By default, a space is used to separate output objects +(for instance when \fB\-\-hierarchical\fR or \fB\-\-largest\fR is given) +while a comma is used to separate indexes +(for instance when \fB\-\-intersect\fR is given). +.TP +\fB\-\-single\fR +Singlify the output to a single CPU. +.TP +\fB\-\-taskset\fR +Display CPU set strings in the format recognized by the taskset command-line +program instead of hwloc-specific CPU set string format. +This option has no impact on the format of input CPU set strings, +both formats are always accepted. +.TP +\fB\-q\fR \fB\-\-quiet\fR +Hide non-fatal error messages. +It mostly includes locations pointing to non-existing objects. +.TP +\fB\-v\fR \fB\-\-verbose\fR +Verbose output. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc-calc generates and manipulates CPU mask strings or objects. +Both input and output may be either objects (with physical or logical +indexes), CPU lists (with physical or logical indexes), or CPU mask strings +(always physically indexed). +Input location specification is described in hwloc(7). +. +.PP +If objects or CPU mask strings are given on the command-line, +they are combined and a single output is printed. +If no object or CPU mask strings are given on the command-line, +the program will read the standard input. +It will combine multiple objects or CPU mask strings that are +given on the same line of the standard input line with spaces +as separators. +Different input lines will be processed separately. +. +.PP +Command-line arguments and options are processed in order. +First topology configuration options should be given. +Then, for instance, changing the type of input indexes +with \fB\-\-li\fR or changing the input topology with \fB\-i\fR +only affects the processing the following arguments. +. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. Most of the concepts described in +hwloc(7) directly apply to the hwloc-calc utility. +. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +hwloc-calc's operation is best described through several examples. +. +.PP +To display the (physical) CPU mask corresponding to the second package: + + $ hwloc-calc package:1 + 0x000000f0 + +To display the (physical) CPU mask corresponding to the third pacakge, excluding +its even numbered logical processors: + + $ hwloc-calc package:2 ~PU:even + 0x00000c00 + +To convert a cpu mask to human-readable output, the -H option can be +used to emit a space-delimited list of locations: + + $ echo 0x000000f0 | hwloc-calc -H package.core + Package:1.Core1 Package:1.Core:1 Package:1.Core:2 Package:1.Core:3 + +To use some other character (e.g., a comma) instead of spaces in +output, use the --sep option: + + $ echo 0x000000f0 | hwloc-calc -H package.core --sep , + Package:1.Core1,Package:1.Core:1,Package:1.Core:2,Package:1.Core:3 + +To combine two (physical) CPU masks: + + $ hwloc-calc 0x0000ffff 0xff000000 + 0xff00ffff + +To display the list of logical numbers of processors included in the second +package: + + $ hwloc-calc --intersect PU package:1 + 4,5,6,7 + +To bind GNU OpenMP threads logically over the whole machine, we need to use +physical number output instead: + + $ export GOMP_CPU_AFFINITY=`hwloc-calc --physical-output --intersect PU all` + $ echo $GOMP_CPU_AFFINITY + 0,4,1,5,2,6,3,7 + +To display the list of NUMA nodes, by physical indexes, that intersect a given (physical) CPU mask: + + $ hwloc-calc --physical --intersect NUMAnode 0xf0f0f0f0 + 0,2 + +To find how many cores are in the second CPU kind +(those cores are likely higher-performance and more power-hungry than cores of the first kind): + + $ hwloc-calc --cpukind 1 -N core all + 4 + +To display the list of NUMA nodes, by physical indexes, +whose locality is exactly equal to a Package: + + $ hwloc-calc --local-memory-flags 0 pack:1 + 4,7 + +To display the best-capacity NUMA node, by physical indexe, +whose locality is exactly equal to a Package: + + $ hwloc-calc --local-memory-flags 0 --best-memattr capacity pack:1 + 4 + +Converting object logical indexes (default) from/to physical/OS indexes +may be performed with \fB--intersect\fR combined with either \fB--physical-output\fR +(logical to physical conversion) or \fB--physical-input\fR (physical to logical): + + $ hwloc-calc --physical-output PU:2 --intersect PU + 3 + $ hwloc-calc --physical-input PU:3 --intersect PU + 2 + +One should add \fB--nodeset\fR when converting indexes of memory objects +to make sure a single NUMA node index is returned on platforms +with heterogeneous memory: + + $ hwloc-calc --nodeset --physical-output node:2 --intersect node + 3 + $ hwloc-calc --nodeset --physical-input node:3 --intersect node + 2 + +To display the set of CPUs near network interface eth0: + + $ hwloc-calc os=eth0 + 0x00005555 + +To display the indexes of packages near PCI device whose bus ID is 0000:01:02.0: + + $ hwloc-calc pci=0000:01:02.0 --intersect Package + 1 + +To display the list of per-package cores that intersect the input: + + $ hwloc-calc 0x00003c00 --hierarchical package.core + Package:2.Core:1 Package:3.Core:0 + +To display the (physical) CPU mask of the entire topology except the third package: + + $ hwloc-calc all ~package:3 + 0x0000f0ff + +To combine both physical and logical indexes as input: + + $ hwloc-calc PU:2 --physical-input PU:3 + 0x0000000c + +To synthetize a set of cores into largest objects on a 2-node 2-package 2-core machine: + + $ hwloc-calc core:0 --largest + Core:0 + $ hwloc-calc core:0-1 --largest + Package:0 + $ hwloc-calc core:4-7 --largest + NUMANode:1 + $ hwloc-calc core:2-6 --largest + Package:1 Package:2 Core:6 + $ hwloc-calc pack:2 --largest + Package:2 + $ hwloc-calc package:2-3 --largest + NUMANode:1 + +To get the set of first threads of all cores: + + $ hwloc-calc core:all.pu:0 + $ hwloc-calc --no-smt all + +This can also be very useful in order to make GNU OpenMP use exactly one thread +per core, and in logical core order: + + $ export OMP_NUM_THREADS=`hwloc-calc --number-of core all` + $ echo $OMP_NUM_THREADS + 4 + $ export GOMP_CPU_AFFINITY=`hwloc-calc --physical-output --intersect PU --no-smt all` + $ echo $GOMP_CPU_AFFINITY + 0,2,1,3 + +To export bitmask in a format that is acceptable by the resctrl Linux subsystem +(for configuring cache partitioning, etc), apply a sed regexp to the output of hwloc-calc: + + $ hwloc-calc pack:all.core:7-9.pu:0 + 0x00000380,,0x00000380 + $ hwloc-calc pack:all.core:7-9.pu:0 | sed -e 's/0x//g' -e 's/,,/,0,/g' -e 's/,,/,0,/g' + 00000380,0,00000380 + # echo 00000380,0,00000380 > /sys/fs/resctrl/test/cpus + # cat /sys/fs/resctrl/test/cpus + 00000000,00000380,00000000,00000380 + +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, hwloc-calc displays the (physical) CPU mask string, +(physical or logical) object list, or (physical or logical) object number list. +The return value is 0. +. +. +.PP +hwloc-calc will return nonzero if any kind of error occurs, such as +(but not limited to): failure to parse the command line. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-info(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.c new file mode 100644 index 0000000000..39937f4b66 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-calc.c @@ -0,0 +1,735 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2011 Université Bordeaux + * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc-calc.h" +#include "hwloc.h" +#include "misc.h" + +#include +#include +#include + +void usage(const char *callname __hwloc_attribute_unused, FILE *where) +{ + fprintf(where, "Usage: hwloc-calc [topology options] [options] ...\n"); + fprintf(where, " may be a space-separated list of cpusets or objects\n"); + fprintf(where, " as supported by the hwloc-bind utility, e.g:\n"); + hwloc_calc_locations_usage(where); + fprintf(where, "Input topology options (must be at the beginning):\n"); + fprintf(where, " --no-smt Only keep a single PU per core\n"); + fprintf(where, " --cpukind Only keep PUs in the CPU kind \n"); + fprintf(where, " --cpukind = Only keep PUs whose CPU kind match info =\n"); + fprintf(where, " --restrict [nodeset=]\n"); + fprintf(where, " Restrict the topology to some processors or NUMA nodes.\n"); + fprintf(where, " --restrict-flags Set the flags to be used during restrict\n"); + fprintf(where, " --disallowed Include objects disallowed by administrative limitations\n"); + hwloc_utils_input_format_usage(where, 10); + fprintf(where, "Conversion options:\n"); + fprintf(where, " [default] Report the combined input locations as a CPU set\n"); + fprintf(where, " --number-of \n" + " -N Report the number of objects intersecting the CPU set\n"); + fprintf(where, " --intersect \n" + " -I Report the indexes of object intersecting the CPU set\n"); + fprintf(where, " --hierarchical ....\n" + " -H .... Find the list of objects intersecting the CPU set and\n" + " display them as hierarchical combinations such as\n" + " type1:index1.type2:index2...\n"); + fprintf(where, " --largest Report the list of largest objects in the CPU set\n"); + fprintf(where, " --local-memory Report the memory nodes that are local to the CPU set\n"); + fprintf(where, " --local-memory flags Change flags for selecting local memory nodes\n"); + fprintf(where, " --best-memattr Only report the best memory node among the local ones\n"); + fprintf(where, "Formatting options:\n"); + fprintf(where, " -l --logical Use logical object indexes (default)\n"); + fprintf(where, " -p --physical Use physical object indexes\n"); + fprintf(where, " --li --logical-input Use logical indexes for input (default)\n"); + fprintf(where, " --lo --logical-output Use logical indexes for output (default)\n"); + fprintf(where, " --pi --physical-input Use physical indexes for input\n"); + fprintf(where, " --po --physical-output Use physical indexes for output\n"); + fprintf(where, " -n --nodeset Manipulate nodesets instead of cpusets\n"); + fprintf(where, " --ni --nodeset-input Manipulate nodesets instead of cpusets for inputs\n"); + fprintf(where, " --no --nodeset-output Manipulate nodesets instead of cpusets for outputs\n"); + fprintf(where, " --sep Use separator in the output\n"); + fprintf(where, " --taskset Use taskset-specific format when displaying cpuset strings\n"); + fprintf(where, " --single Singlify the output to a single CPU\n"); + fprintf(where, "Miscellaneous options:\n"); + fprintf(where, " -q --quiet Hide non-fatal error messages\n"); + fprintf(where, " -v --verbose Show verbose messages\n"); + fprintf(where, " --version Report version and exit\n"); + fprintf(where, " -h --help Show this usage\n"); +} + +static int verbose = 0; +static int logicali = 1; +static int logicalo = 1; +static int nodeseti = 0; +static int nodeseto = 0; +static int numberofdepth = -1; +static int intersectdepth = -1; +static int hiernblevels = 0; +static int *hierdepth = NULL; +static int local_numanodes = 0; +static unsigned long local_numanode_flags = HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY | HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY; +static hwloc_memattr_id_t best_memattr_id = (hwloc_memattr_id_t) -1; +static int showobjs = 0; +static int no_smt = -1; +static int singlify = 0; +static int taskset = 0; +static hwloc_bitmap_t cpukind_cpuset = NULL; + +static int +hwloc_calc_intersects_set(hwloc_bitmap_t set, int use_nodeset, hwloc_obj_t obj) +{ + if (use_nodeset) + return hwloc_bitmap_intersects(set, obj->nodeset); + else + return hwloc_bitmap_intersects(set, obj->cpuset); +} + +/* generalization of hwloc_get_next_obj_covering_cpuset_by_depth() which may also use nodeset instead of cpuset */ +static hwloc_obj_t +hwloc_calc_get_next_obj_covering_set_by_depth(hwloc_topology_t topology, + hwloc_bitmap_t set, int use_nodeset, + int depth, + hwloc_obj_t prev) +{ + hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev); + if (!next) + return NULL; + while (next && !hwloc_calc_intersects_set(set, use_nodeset, next)) + next = next->next_cousin; + return next; +} + +static void +hwloc_calc_hierarch_output(hwloc_topology_t topology, const char *prefix, const char *sep, hwloc_obj_t root, hwloc_bitmap_t set, int level) +{ + hwloc_obj_t obj, prev = NULL; + unsigned logi = 0; + int first = 1; + while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, root->cpuset, hierdepth[level], prev)) != NULL) { + char string[256]; + char type[32]; + unsigned idx = logicalo ? logi : obj->os_index; + if (!hwloc_bitmap_intersects(set, obj->cpuset)) + goto next; + hwloc_obj_type_snprintf(type, sizeof(type), obj, 1); + if (idx == (unsigned)-1) + snprintf(string, sizeof(string), "%s%s%s:-1", prefix, level ? "." : "", type); + else + snprintf(string, sizeof(string), "%s%s%s:%u", prefix, level ? "." : "", type, idx); + if (!first) + printf("%s", sep); + first = 0; + if (level != hiernblevels - 1) { + hwloc_bitmap_t new = hwloc_bitmap_dup(set); + hwloc_bitmap_and(new, new, obj->cpuset); + hwloc_calc_hierarch_output(topology, string, sep, obj, new, level+1); + hwloc_bitmap_free(new); + } else { + printf("%s", string); + } +next: + prev = obj; + logi++; + } +} + +static int +hwloc_calc_output(hwloc_topology_t topology, const char *sep, hwloc_bitmap_t set) +{ + if (cpukind_cpuset) + hwloc_bitmap_and(set, set, cpukind_cpuset); + + if (no_smt != -1 && !nodeseto) { + if (hwloc_get_type_depth(topology, HWLOC_OBJ_CORE) == HWLOC_TYPE_DEPTH_UNKNOWN) { + fprintf(stderr, "Topology has no Core object, ignoring --no-smt\n"); + } else { + hwloc_bitmap_singlify_per_core(topology, set, no_smt); + } + } + + if (singlify) + hwloc_bitmap_singlify(set); + + if (showobjs) { + hwloc_bitmap_t remaining = hwloc_bitmap_dup(set); + int first = 1; + assert(!nodeseto); /* disabled for now, not very useful since the hierarchy of nodes isn't complex */ + if (!sep) + sep = " "; + while (!hwloc_bitmap_iszero(remaining)) { + char type[64]; + unsigned idx; + hwloc_obj_t obj = hwloc_get_first_largest_obj_inside_cpuset(topology, remaining); + if (!obj) { + hwloc_bitmap_free(remaining); + fprintf(stderr, "No object included in this cpuset\n"); + return EXIT_FAILURE; + } + hwloc_obj_type_snprintf(type, sizeof(type), obj, 1); + idx = logicalo ? obj->logical_index : obj->os_index; + if (idx == (unsigned) -1) + printf("%s%s", first ? (const char *) "" : sep, type); + else + printf("%s%s:%u", first ? (const char *) "" : sep, type, idx); + hwloc_bitmap_andnot(remaining, remaining, obj->cpuset); + first = 0; + } + printf("\n"); + hwloc_bitmap_free(remaining); + } else if (numberofdepth != -1) { + unsigned nb = 0; + hwloc_obj_t obj = NULL; + while ((obj = hwloc_calc_get_next_obj_covering_set_by_depth(topology, set, nodeseto, numberofdepth, obj)) != NULL) + nb++; + printf("%u\n", nb); + } else if (intersectdepth != -1) { + hwloc_obj_t proc, prev = NULL; + if (!sep) + sep = ","; + while ((proc = hwloc_calc_get_next_obj_covering_set_by_depth(topology, set, nodeseto, intersectdepth, prev)) != NULL) { + unsigned idx = logicalo ? proc->logical_index : proc->os_index; + if (prev) + printf("%s", sep); + if (idx == (unsigned)-1) + printf("-1"); + else + printf("%u", idx); + prev = proc; + } + printf("\n"); + } else if (hiernblevels) { + if (!sep) + sep = " "; + hwloc_calc_hierarch_output(topology, "", sep, hwloc_get_root_obj(topology), set, 0); + printf("\n"); + + } else if (local_numanodes) { + unsigned nrnodes; + hwloc_obj_t *nodes; + nrnodes = hwloc_bitmap_weight(hwloc_topology_get_topology_nodeset(topology)); + nodes = malloc(nrnodes * sizeof(*nodes)); + if (nodes) { + int err; + struct hwloc_location loc; + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = set; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrnodes, nodes, local_numanode_flags); + if (!err) { + unsigned i; + if (best_memattr_id != (hwloc_memattr_id_t) -1) { + int best = hwloc_utils_get_best_node_in_array_by_memattr(topology, best_memattr_id, nrnodes, nodes, &loc); + if (best == -1) { + /* no perf info found, report nothing */ + nrnodes = 0; + } else { + /* only report the best nodes */ + nodes[0] = nodes[best]; + nrnodes = 1; + } + } + if (!sep) + sep = ","; + for(i=0; ilogical_index : nodes[i]->os_index; + printf("%s%u", i==0 ? (const char *) "" : sep, idx); + } + } + free(nodes); + } + printf("\n"); + + } else { + char *string = NULL; + if (taskset) + hwloc_bitmap_taskset_asprintf(&string, set); + else + hwloc_bitmap_asprintf(&string, set); + printf("%s\n", string); + free(string); + } + return EXIT_SUCCESS; +} + +static int hwloc_calc_type_depth(hwloc_topology_t topology, const char *string, int *depthp, const char *caller) +{ + hwloc_obj_type_t type; + int depth; + + if (hwloc_type_sscanf_as_depth(string, &type, topology, &depth) < 0) { + char *endptr; + depth = strtoul(string, &endptr, 0); + if (*endptr) { + fprintf(stderr, "unrecognized %s type or depth %s\n", caller, string); + return -1; + } + + *depthp = depth; + return 0; + } + + if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) { + fprintf(stderr, "unavailable %s type %s\n", caller, hwloc_obj_type_string(type)); + return -1; + } else if (depth == HWLOC_TYPE_DEPTH_MULTIPLE) { + fprintf(stderr, "cannot use %s type %s with multiple depth, please use the relevant depth\n", caller, hwloc_obj_type_string(type)); + return -1; + } + *depthp = depth; + return 0; +} + +int main(int argc, char *argv[]) +{ + hwloc_topology_t topology; + unsigned long flags = HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT; + unsigned long restrict_flags = 0; + char *input = NULL; + enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT; + int depth = 0; + hwloc_bitmap_t set; + int cmdline_args = 0; + const char * numberoftype = NULL; + const char * intersecttype = NULL; + char *restrictstring = NULL; + char * hiertype = NULL; + char * best_memattr_str = NULL; + char *callname; + char *outsep = NULL; + int cpukind_index = -1; + char *cpukind_infoname = NULL; + char *cpukind_infovalue = NULL; + int opt; + int i; + int err; + int ret = EXIT_SUCCESS; + struct hwloc_calc_location_context_s lcontext; + struct hwloc_calc_set_context_s scontext; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + + /* skip argv[0], handle options */ + argv++; + argc--; + + hwloc_utils_check_api_version(callname); + + /* enable verbose backends */ + if (!getenv("HWLOC_XML_VERBOSE")) + putenv((char *) "HWLOC_XML_VERBOSE=1"); + if (!getenv("HWLOC_SYNTHETIC_VERBOSE")) + putenv((char *) "HWLOC_SYNTHETIC_VERBOSE=1"); + + set = hwloc_bitmap_alloc(); + + while (argc >= 1) { + opt = 0; + + if (!strcmp (argv[0], "--disallowed") || !strcmp (argv[0], "--whole-system")) { + flags |= HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED; + goto next_config; + } + if (!strcmp (argv[0], "--restrict")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + if(strncmp(argv[1], "nodeset=", 7)) + restrictstring = strdup(argv[1]); + else { + restrictstring = strdup(argv[1]+8); + restrict_flags |= HWLOC_RESTRICT_FLAG_BYNODESET; + } + opt = 1; + goto next_config; + } + if (!strcmp (argv[0], "--restrict-flags")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + restrict_flags = hwloc_utils_parse_restrict_flags(argv[1]); + opt = 1; + goto next_config; + } + if (!strcmp(argv[0], "--cpukind")) { + char *equal; + if (argc < 2) { + usage(callname, stderr); + return EXIT_FAILURE; + } + equal = strchr(argv[1], '='); + if (equal) { + cpukind_infoname = argv[1]; + cpukind_infovalue = equal+1; + *equal = 0; + } else { + cpukind_index = atoi(argv[1]); + } + opt = 1; + goto next_config; + } + if (hwloc_utils_lookup_input_option(argv, argc, &opt, + &input, &input_format, + callname)) { + opt = 1; + goto next_config; + } + + break; + + next_config: + argc -= opt+1; + argv += opt+1; + } + + hwloc_topology_init(&topology); + hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_set_flags(topology, flags); + if (input) { + err = hwloc_utils_enable_input_format(topology, flags, input, &input_format, verbose, callname); + if (err) return EXIT_FAILURE; + } + err = hwloc_topology_load(topology); + if (restrictstring) { + hwloc_bitmap_t restrictset = hwloc_bitmap_alloc(); + hwloc_bitmap_sscanf(restrictset, restrictstring); + if (hwloc_topology_restrict (topology, restrictset, restrict_flags)) { + perror("Restricting the topology"); + /* FALLTHRU */ + } + hwloc_bitmap_free(restrictset); + free(restrictstring); + } + if (cpukind_index >= 0) { + cpukind_cpuset = hwloc_bitmap_alloc(); + err = hwloc_cpukinds_get_info(topology, cpukind_index, cpukind_cpuset, NULL, NULL, NULL, 0); + if (err < 0) { + fprintf(stderr, "Couldn't find CPU kind #%d, keeping no PU.\n", cpukind_index); + /* FALLTHRU */ + } + } else if (cpukind_infoname && cpukind_infovalue) { + hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); + int nr = hwloc_cpukinds_get_nr(topology, 0); + cpukind_cpuset = hwloc_bitmap_alloc(); + for(i=0; i= 1) { + opt = 0; + + if (*argv[0] == '-') { + if (!strcmp (argv[0], "-h") || !strcmp (argv[0], "--help")) { + usage(callname, stdout); + exit(EXIT_SUCCESS); + } + if (!strcmp(argv[0], "-v") || !strcmp(argv[0], "--verbose")) { + verbose++; + goto next; + } + if (!strcmp(argv[0], "-q") || !strcmp(argv[0], "--quiet")) { + verbose--; + goto next; + } + if (!strcmp (argv[0], "--disallowed") || !strcmp (argv[0], "--whole-system")) { + fprintf(stderr, "Input option %s disallowed after options using the topology\n", argv[0]); + exit(EXIT_FAILURE); + } + if (!strcmp (argv[0], "--no-smt")) { + no_smt = 0; + goto next; + } + if (!strncmp(argv[0], "--no-smt=", 9)) { + no_smt = atoi(argv[0] + 9); + goto next; + } + if (!strcmp(argv[0], "--number-of") || !strcmp(argv[0], "-N")) { + if (argc < 2) { + usage(callname, stderr); + return EXIT_FAILURE; + } + numberoftype = argv[1]; + opt = 1; + goto next; + } + if (!strcmp(argv[0], "--intersect") || !strcmp(argv[0], "-I")) { + if (argc < 2) { + usage(callname, stderr); + return EXIT_FAILURE; + } + intersecttype = argv[1]; + opt = 1; + goto next; + } + if (!strcmp(argv[0], "--hierarchical") || !strcmp(argv[0], "-H")) { + if (argc < 2) { + usage(callname, stderr); + return EXIT_FAILURE; + } + hiertype = argv[1]; + opt = 1; + goto next; + } + if (!strcmp(argv[0], "--local-memory")) { + local_numanodes = 1; + goto next; + } + if (!strcmp(argv[0], "--local-memory-flags")) { + if (argc < 2) { + usage(callname, stderr); + return EXIT_FAILURE; + } + local_numanodes = 1; + local_numanode_flags = hwloc_utils_parse_local_numanode_flags(argv[1]); + opt = 1; + goto next; + } + if (!strcmp(argv[0], "--best-memattr")) { + if (argc < 2) { + usage(callname, stderr); + return EXIT_FAILURE; + } + local_numanodes = 1; + best_memattr_str = argv[1]; + opt = 1; + goto next; + } + if (!strcasecmp(argv[0], "--pulist") || !strcmp(argv[0], "--proclist")) { + /* backward compat with 1.0 */ + intersecttype = "pu"; + goto next; + } + if (!strcmp(argv[0], "--nodelist")) { + /* backward compat with 1.0 */ + intersecttype = "numa"; + goto next; + } + if (!strcmp(argv[0], "--largest") || !strcmp(argv[0], "--objects") /* backward compat with 1.0 */) { + showobjs = 1; + goto next; + } + if (!strcmp(argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } + if (!strcmp(argv[0], "-l") || !strcmp(argv[0], "--logical")) { + logicali = 1; + logicalo = 1; + goto next; + } + if (!strcmp(argv[0], "--li") || !strcmp(argv[0], "--logical-input")) { + logicali = 1; + goto next; + } + if (!strcmp(argv[0], "--lo") || !strcmp(argv[0], "--logical-output")) { + logicalo = 1; + goto next; + } + if (!strcmp(argv[0], "-p") || !strcmp(argv[0], "--physical")) { + logicali = 0; + logicalo = 0; + goto next; + } + if (!strcmp(argv[0], "--pi") || !strcmp(argv[0], "--physical-input")) { + logicali = 0; + goto next; + } + if (!strcmp(argv[0], "--po") || !strcmp(argv[0], "--physical-output")) { + logicalo = 0; + goto next; + } + if (!strcmp(argv[0], "-n") || !strcmp(argv[0], "--nodeset")) { + nodeseti = 1; + nodeseto = 1; + goto next; + } + if (!strcmp(argv[0], "--ni") || !strcmp(argv[0], "--nodeset-input")) { + nodeseti = 1; + goto next; + } + if (!strcmp(argv[0], "--no") || !strcmp(argv[0], "--nodeset-output")) { + nodeseto = 1; + goto next; + } + if (!strcmp(argv[0], "--sep")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + outsep = argv[1]; + opt = 1; + goto next; + } + if (!strcmp(argv[0], "--single")) { + singlify = 1; + goto next; + } + if (!strcmp(argv[0], "--taskset")) { + taskset = 1; + goto next; + } + + fprintf (stderr, "Unrecognized option: %s\n", argv[0]); + usage(callname, stderr); + return EXIT_FAILURE; + } + + cmdline_args++; + lcontext.topology = topology; + lcontext.topodepth = depth; + lcontext.only_hbm = -1; + lcontext.logical = logicali; + lcontext.verbose = verbose; + scontext.output_set = set; + scontext.nodeset_input = nodeseti; + scontext.nodeset_output = nodeseto; + if (hwloc_calc_process_location_as_set(&lcontext, &scontext, argv[0]) < 0) + fprintf(stderr, "ignored unrecognized argument %s\n", argv[0]); + + + if (showobjs && nodeseto) { + fprintf(stderr, "ignoring --nodeset-output when --largest output is enabled\n"); + nodeseto = 0; + } + + next: + argc -= opt+1; + argv += opt+1; + } + + if (numberoftype && hwloc_calc_type_depth(topology, numberoftype, &numberofdepth, "--number-of") < 0) + goto out; + + if (intersecttype && hwloc_calc_type_depth(topology, intersecttype, &intersectdepth, "--intersect") < 0) + goto out; + + if (hiertype) { + char *tmp, *next; + hiernblevels = 1; + tmp = hiertype; + while (1) { + tmp = strchr(tmp, '.'); + if (!tmp) + break; + tmp++; + hiernblevels++; + } + hierdepth = malloc(hiernblevels * sizeof(int)); + tmp = hiertype; + for(i=0; i +#include +#include +#ifdef HAVE_STRINGS_H +#include +#endif +#include +#include + +struct hwloc_calc_location_context_s { + hwloc_topology_t topology; + int topodepth; + int only_hbm; /* -1 for everything, 0 for only non-HBM, 1 for only HBM numa nodes */ + int logical; + int verbose; +}; + +typedef enum hwloc_calc_append_mode_e { + HWLOC_CALC_APPEND_ADD, + HWLOC_CALC_APPEND_CLR, + HWLOC_CALC_APPEND_AND, + HWLOC_CALC_APPEND_XOR +} hwloc_calc_append_mode_t; + +static __hwloc_inline int +hwloc_calc_append_set(hwloc_bitmap_t set, hwloc_const_bitmap_t newset, + hwloc_calc_append_mode_t mode, int verbose) +{ + char *s1, *s2; + hwloc_bitmap_asprintf(&s1, newset); + hwloc_bitmap_asprintf(&s2, set); + switch (mode) { + case HWLOC_CALC_APPEND_ADD: + if (verbose > 0) + fprintf(stderr, "adding %s to %s\n", + s1, s2); + hwloc_bitmap_or(set, set, newset); + break; + case HWLOC_CALC_APPEND_CLR: + if (verbose > 0) + fprintf(stderr, "clearing %s from %s\n", + s1, s2); + hwloc_bitmap_andnot(set, set, newset); + break; + case HWLOC_CALC_APPEND_AND: + if (verbose > 0) + fprintf(stderr, "and'ing %s from %s\n", + s1, s2); + hwloc_bitmap_and(set, set, newset); + break; + case HWLOC_CALC_APPEND_XOR: + if (verbose > 0) + fprintf(stderr, "xor'ing %s from %s\n", + s1, s2); + hwloc_bitmap_xor(set, set, newset); + break; + default: + assert(0); + } + free(s1); + free(s2); + return 0; +} + +static __hwloc_inline unsigned +hwloc_calc_get_nbobjs_inside_sets_by_depth(struct hwloc_calc_location_context_s *lcontext, + hwloc_const_bitmap_t cpuset, hwloc_const_bitmap_t nodeset, + int depth) +{ + hwloc_topology_t topology = lcontext->topology; + int only_hbm = lcontext->only_hbm; + hwloc_obj_t obj = NULL; + unsigned n = 0; + while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL) { + if (!hwloc_bitmap_isincluded(obj->cpuset, cpuset)) + continue; + if (!hwloc_bitmap_isincluded(obj->nodeset, nodeset)) + continue; + if (hwloc_bitmap_iszero(obj->cpuset) && hwloc_bitmap_iszero(obj->nodeset)) + /* ignore objects with empty sets (both can be empty when outside of cgroup) */ + continue; + if (only_hbm >= 0 && obj->type == HWLOC_OBJ_NUMANODE) { + /* filter on hbm */ + int obj_is_hbm = obj->subtype && !strcmp(obj->subtype, "MCDRAM"); + if (only_hbm != obj_is_hbm) + continue; + } + n++; + } + return n; +} + +static __hwloc_inline hwloc_obj_t +hwloc_calc_get_obj_inside_sets_by_depth(struct hwloc_calc_location_context_s *lcontext, + hwloc_const_bitmap_t cpuset, hwloc_const_bitmap_t nodeset, + int depth, unsigned ind) +{ + hwloc_topology_t topology = lcontext->topology; + int only_hbm = lcontext->only_hbm; + int logical = lcontext->logical; + hwloc_obj_t obj = NULL; + unsigned i = 0; + while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL) { + if (!hwloc_bitmap_isincluded(obj->cpuset, cpuset)) + continue; + if (!hwloc_bitmap_isincluded(obj->nodeset, nodeset)) + continue; + if (hwloc_bitmap_iszero(obj->cpuset) && hwloc_bitmap_iszero(obj->nodeset)) + /* ignore objects with empty sets (both can be empty when outside of cgroup) */ + continue; + if (only_hbm >= 0 && obj->type == HWLOC_OBJ_NUMANODE) { + /* filter on hbm */ + int obj_is_hbm = obj->subtype && !strcmp(obj->subtype, "MCDRAM"); + if (only_hbm != obj_is_hbm) + continue; + } + if (logical) { + if (i == ind) + return obj; + i++; + } else { + if (obj->os_index == ind) + return obj; + } + } + return NULL; +} + +static __hwloc_inline int +hwloc_calc_parse_depth_prefix(struct hwloc_calc_location_context_s *lcontext, + const char *string, size_t typelen, + hwloc_obj_type_t *typep) +{ + hwloc_topology_t topology = lcontext->topology; + int topodepth = lcontext->topodepth; + int verbose = lcontext->verbose; + char typestring[20+1]; /* large enough to store all type names, even with a depth attribute */ + hwloc_obj_type_t type; + int depth; + char *end; + int err; + + if (typelen >= sizeof(typestring)) { + if (verbose >= 0) + fprintf(stderr, "invalid type name %s\n", string); + return -1; + } + strncpy(typestring, string, typelen); + typestring[typelen] = '\0'; + + /* try to match a type name */ + err = hwloc_type_sscanf_as_depth(typestring, &type, topology, &depth); + if (!err) { + *typep = type; + return depth; + } + if (!strcasecmp(typestring, "HBM") || !strcasecmp(typestring, "MCDRAM")) { + if (lcontext->only_hbm == -1) + lcontext->only_hbm = 1; + *typep = HWLOC_OBJ_NUMANODE; + depth = HWLOC_TYPE_DEPTH_NUMANODE; + return depth; + } + + /* try to match a numeric depth */ + depth = strtol(string, &end, 0); + if (end != &string[typelen]) { + if (verbose >= 0) + fprintf(stderr, "invalid type name %s\n", string); + return -1; + } + if (depth >= topodepth) { + if (verbose >= 0) + fprintf(stderr, "ignoring invalid depth %d\n", depth); + return -1; + } + *typep = HWLOC_OBJ_TYPE_NONE; + return depth; +} + +static __hwloc_inline int +hwloc_calc_parse_range(const char *_string, + int *firstp, int *amountp, int *stepp, int *wrapp, + const char **dotp, + int verbose) +{ + char string[65]; + size_t len; + char *dot, *end, *end2; + long first, last, amount; + int wrap; + + dot = strchr(_string, '.'); + *dotp = dot; + if (dot) { + len = dot - _string; + } else { + len = strlen(_string); + } + if (len >= sizeof(string)) { + if (verbose >= 0) + fprintf(stderr, "invalid range `%s', too long\n", _string); + return -1; + } + memcpy(string, _string, len); + string[len] = '\0'; + + if (!isdigit(*string)) { + if (!strncmp(string, "all", 3)) { + *firstp = 0; + *amountp = -1; + *stepp = 1; + *wrapp = 0; + return 0; + } else if (!strncmp(string, "odd", 3)) { + *firstp = 1; + *amountp = -1; + *stepp = 2; + *wrapp = 0; + return 0; + } else if (!strncmp(string, "even", 4)) { + *firstp = 0; + *amountp = -1; + *stepp = 2; + *wrapp = 0; + return 0; + } else { + if (verbose >= 0) + fprintf(stderr, "unrecognized range keyword `%s'\n", string); + return -1; + } + } + + first = strtol(string, &end, 10); + amount = 1; + wrap = 0; + + if (*end == '-') { + last = strtol(end+1, &end2, 10); + if (*end2) { + if (verbose >= 0) + fprintf(stderr, "invalid character at `%s' after range at `%s'\n", end2, string); + return -1; + } else if (end2 == end+1) { + /* X- */ + amount = -1; + } else { + /* X-Y */ + amount = last-first+1; + } + + } else if (*end == ':') { + /* X:Y */ + wrap = 1; + amount = strtol(end+1, &end2, 10); + if (*end2) { + if (verbose >= 0) + fprintf(stderr, "invalid character at `%s' after range at `%s'\n", end2, string); + return -1; + } else if (end2 == end+1) { + if (verbose >= 0) + fprintf(stderr, "missing width at `%s' in range at `%s'\n", end2, string); + return -1; + } + + } else if (*end) { + if (verbose >= 0) + fprintf(stderr, "invalid character at `%s' after index at `%s'\n", end, string); + return -1; + } + + *firstp = first; + *amountp = amount; + *stepp = 1; + *wrapp = wrap; + return 0; +} + +static __hwloc_inline int +hwloc_calc_append_object_range(struct hwloc_calc_location_context_s *lcontext, + hwloc_const_bitmap_t rootcpuset, hwloc_const_bitmap_t rootnodeset, int depth, + const char *string, /* starts with indexes following the colon */ + void (*cbfunc)(struct hwloc_calc_location_context_s *, void *, hwloc_obj_t), void *cbdata) +{ + int verbose = lcontext->verbose; + hwloc_obj_t obj; + unsigned width; + const char *dot, *nextsep = NULL; + int nextdepth = -1; + int first, wrap, amount, step; + unsigned i,j; + int found = 0; + int err; + + err = hwloc_calc_parse_range(string, + &first, &amount, &step, &wrap, + &dot, + verbose); + if (err < 0) { + if (verbose >= 0) + fprintf(stderr, "Failed to parse object index range %s\n", string); + return -1; + } + assert(amount != -1 || !wrap); + + if (dot) { + /* parse the next string before calling ourself recursively */ + size_t typelen; + hwloc_obj_type_t type; + const char *nextstring = dot+1; + typelen = strspn(nextstring, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + if (!typelen || nextstring[typelen] != ':') { + if (verbose >= 0) + fprintf(stderr, "hierarchical sublocation %s contains types not followed by colon and index range\n", nextstring); + return -1; + } + nextsep = &nextstring[typelen]; + + nextdepth = hwloc_calc_parse_depth_prefix(lcontext, + nextstring, typelen, + &type); + if (nextdepth == HWLOC_TYPE_DEPTH_UNKNOWN) { + if (verbose >= 0) + fprintf(stderr, "could not find level specified by location %s\n", nextstring); + return -1; + } + if (nextdepth == HWLOC_TYPE_DEPTH_MULTIPLE) { + if (verbose >= 0) + fprintf(stderr, "found multiple levels for location %s\n", nextstring); + return -1; + } + /* we need an object with a cpuset, that's depth>=0 or memory */ + if (nextdepth < 0 && nextdepth != HWLOC_TYPE_DEPTH_NUMANODE) { + if (verbose >= 0) + fprintf(stderr, "hierarchical location %s only supported with normal object types\n", string); + return -1; + } + } + + width = hwloc_calc_get_nbobjs_inside_sets_by_depth(lcontext, rootcpuset, rootnodeset, depth); + if (amount == -1) + amount = (width-first+step-1)/step; + + for(i=first, j=0; j<(unsigned)amount; i+=step, j++) { + if (wrap && i>=width) + i = 0; + + obj = hwloc_calc_get_obj_inside_sets_by_depth(lcontext, rootcpuset, rootnodeset, depth, i); + if (verbose > 0 || (!obj && verbose >= 0)) { + char *sc, *sn; + hwloc_bitmap_asprintf(&sc, rootcpuset); + hwloc_bitmap_asprintf(&sn, rootnodeset); + if (obj) + printf("using object #%u depth %d below cpuset %s nodeset %s\n", + i, depth, sc, sn); + else + fprintf(stderr, "object #%u depth %d below cpuset %s nodeset %s does not exist\n", + i, depth, sc, sn); + free(sc); + free(sn); + } + if (obj) { + found++; + if (dot) { + hwloc_calc_append_object_range(lcontext, obj->cpuset, obj->nodeset, nextdepth, nextsep+1, cbfunc, cbdata); + } else { + /* add to the temporary cpuset + * and let the caller add/clear/and/xor for the actual final cpuset depending on cmdline options + */ + cbfunc(lcontext, cbdata, obj); + } + } + } + if (!found && verbose >= 0) + fprintf(stderr, "failed to use any single object in index range %s\n", string); + + return 0; +} + +static __hwloc_inline int +hwloc_calc_append_iodev(struct hwloc_calc_location_context_s *lcontext, + void (*cbfunc)(struct hwloc_calc_location_context_s *, void *, hwloc_obj_t), void *cbdata, + hwloc_obj_t obj) +{ + cbfunc(lcontext, cbdata, obj); + return 0; +} + +static __hwloc_inline int +hwloc_calc_append_iodev_by_index(struct hwloc_calc_location_context_s *lcontext, + hwloc_obj_type_t type, int depth, const char *string, + void (*cbfunc)(struct hwloc_calc_location_context_s *, void *, hwloc_obj_t), void *cbdata) +{ + hwloc_topology_t topology = lcontext->topology; + int verbose = lcontext->verbose; + hwloc_obj_t obj, prev = NULL; + int pcivendor = -1, pcidevice = -1; + int osdevtype = -1; + const char *current, *dot; + char *endp; + int first = 0, step = 1, amount = 1, wrap = 0; /* assume the index suffix is `:0' by default */ + int err, i, max; + + if (*string == '[') { + /* matching */ + current = string+1; + + if (type == HWLOC_OBJ_PCI_DEVICE) { + /* try to match by [vendor:device] */ + pcivendor = strtoul(current, &endp, 16); + if (*endp != ':') { + if (verbose >= 0) + fprintf(stderr, "invalid PCI vendor:device matching specification %s\n", string); + return -1; + } + if (endp == current) + pcivendor = -1; + current = endp+1; + + pcidevice = strtoul(current, &endp, 16); + if (*endp != ']') { + if (verbose >= 0) + fprintf(stderr, "invalid PCI vendor:device matching specification %s\n", string); + return -1; + } + if (endp == current) + pcidevice = -1; + current = endp+1; + + if (*current != ':' && *current != '\0') { + if (verbose >= 0) + fprintf(stderr, "invalid PCI vendor:device matching specification %s\n", string); + return -1; + } + + } else if (type == HWLOC_OBJ_OS_DEVICE) { + /* try to match by [osdevtype] */ + hwloc_obj_type_t type2; + union hwloc_obj_attr_u attr; + + endp = strchr(current, ']'); + if (!endp) { + if (verbose >= 0) + fprintf(stderr, "invalid OS device subtype specification %s\n", string); + return -1; + } + *endp = 0; + + err = hwloc_type_sscanf(current, &type2, &attr, sizeof(attr)); + *endp = ']'; + if (err < 0 || type2 != HWLOC_OBJ_OS_DEVICE) { + if (verbose >= 0) + fprintf(stderr, "invalid OS device subtype specification %s\n", string); + return -1; + } + osdevtype = attr.osdev.type; + + current = endp+1; + if (*current != ':' && *current != '\0') { + if (verbose >= 0) + fprintf(stderr, "invalid OS device subtype specification %s\n", string); + return -1; + } + + } else { + /* no matching for non-PCI devices */ + if (verbose >= 0) + fprintf(stderr, "invalid matching specification %s\n", string); + return -1; + } + + } else { + /* no matching */ + current = string; + } + + if (*current != '\0') { + current++; + err = hwloc_calc_parse_range(current, + &first, &amount, &step, &wrap, + &dot, + verbose); + if (dot) { + fprintf(stderr, "hierarchical location %s only supported with normal object types\n", string); + return -1; + } + if (err < 0) { + if (verbose >= 0) + fprintf(stderr, "Failed to parse object index range %s\n", current); + return -1; + } + } + + max = hwloc_get_nbobjs_by_depth(topology, depth); + + for(i=0; i < max*(wrap+1); i++) { + if (i == max && wrap) { + i = 0; + wrap = 0; + } + + obj = hwloc_get_obj_by_depth(topology, depth, i); + assert(obj); + + if (obj == prev) /* already used that object, stop wrapping around */ + break; + + if (type == HWLOC_OBJ_PCI_DEVICE) { + if (pcivendor != -1 && (int) obj->attr->pcidev.vendor_id != pcivendor) + continue; + if (pcidevice != -1 && (int) obj->attr->pcidev.device_id != pcidevice) + continue; + } + + if (type == HWLOC_OBJ_OS_DEVICE) { + if (osdevtype != -1 && (int) obj->attr->osdev.type != osdevtype) + continue; + } + + if (first--) + continue; + + /* ok, got one object */ + if (verbose > 0) + printf("using matching PCI object #%d bus id %04x:%02x:%02x.%01x\n", i, + obj->attr->pcidev.domain, obj->attr->pcidev.bus, obj->attr->pcidev.dev, obj->attr->pcidev.func); + hwloc_calc_append_iodev(lcontext, cbfunc, cbdata, obj); + + if (!prev) + prev = obj; + + amount--; + if (!amount) + break; + + first = step-1; + } + + return 0; +} + +static __hwloc_inline int +hwloc_calc_process_location(struct hwloc_calc_location_context_s *lcontext, + const char *arg, size_t typelen, + void (*cbfunc)(struct hwloc_calc_location_context_s *, void *, hwloc_obj_t), void *cbdata) +{ + hwloc_topology_t topology = lcontext->topology; + int verbose = lcontext->verbose; + const char *sep = &arg[typelen]; + hwloc_obj_type_t type = HWLOC_OBJ_TYPE_NONE; + int depth; + + depth = hwloc_calc_parse_depth_prefix(lcontext, + arg, typelen, + &type); + if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) { + if (verbose >= 0) + fprintf(stderr, "could not find level specified by location %s\n", arg); + return -1; + } + if (depth == HWLOC_TYPE_DEPTH_MULTIPLE) { + if (verbose >= 0) + fprintf(stderr, "found multiple levels for location %s\n", arg); + return -1; + } + + if (depth < 0 && depth != HWLOC_TYPE_DEPTH_NUMANODE) { + /* special object without cpusets */ + + /* if we didn't find a depth but found a type, handle special cases */ + hwloc_obj_t obj = NULL; + + if (*sep == ':' || *sep == '[') { + return hwloc_calc_append_iodev_by_index(lcontext, type, depth, sep, cbfunc, cbdata); + + } else if (*sep == '=' && type == HWLOC_OBJ_PCI_DEVICE) { + /* try to match a busid */ + obj = hwloc_get_pcidev_by_busidstring(topology, sep+1); + if (obj) + return hwloc_calc_append_iodev(lcontext, cbfunc, cbdata, obj); + if (verbose >= 0) + fprintf(stderr, "invalid PCI device %s\n", sep+1); + return -1; + + } else if (*sep == '=' && type == HWLOC_OBJ_OS_DEVICE) { + /* try to match a OS device name */ + while ((obj = hwloc_get_next_osdev(topology, obj)) != NULL) { + if (!strcmp(obj->name, sep+1)) + return hwloc_calc_append_iodev(lcontext, cbfunc, cbdata, obj); + } + if (verbose >= 0) + fprintf(stderr, "invalid OS device %s\n", sep+1); + return -1; + + } else if (*sep == '=' && type == HWLOC_OBJ_MISC) { + /* try to match a Misc device name */ + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_MISC, 0); + while (obj) { + if (!strcmp(obj->name, sep+1)) + return hwloc_calc_append_iodev(lcontext, cbfunc, cbdata, obj); + obj = obj->next_cousin; + } + if (verbose >= 0) + fprintf(stderr, "invalid Misc object %s\n", sep+1); + return -1; + + } else + return -1; + } + + /* look at indexes following this type/depth */ + return hwloc_calc_append_object_range(lcontext, + hwloc_topology_get_complete_cpuset(topology), + hwloc_topology_get_complete_nodeset(topology), + depth, sep+1, cbfunc, cbdata); +} + +struct hwloc_calc_set_context_s { + int nodeset_input; + int nodeset_output; + hwloc_bitmap_t output_set; +}; + +struct hwloc_calc_process_location_set_cbdata_s { + struct hwloc_calc_set_context_s *scontext; + hwloc_bitmap_t set; +}; + +static __hwloc_inline void +hwloc_calc_process_location_set_cb(struct hwloc_calc_location_context_s *lcontext, void *_data, hwloc_obj_t obj) +{ + int verbose = lcontext->verbose; + struct hwloc_calc_process_location_set_cbdata_s *cbdata = _data; + hwloc_bitmap_t set = cbdata->set; + int nodeset_output = cbdata->scontext->nodeset_output; + /* walk up out of I/O objects */ + while (obj && !obj->cpuset) + obj = obj->parent; + if (!obj) + /* do nothing */ + return; + hwloc_calc_append_set(set, + nodeset_output ? obj->nodeset : obj->cpuset, + HWLOC_CALC_APPEND_ADD, verbose); +} + +static __hwloc_inline int +hwloc_calc_process_location_as_set(struct hwloc_calc_location_context_s *lcontext, + struct hwloc_calc_set_context_s *scontext, + const char *arg) +{ + hwloc_topology_t topology = lcontext->topology; + int verbose = lcontext->verbose; + int nodeset_output = scontext->nodeset_output; + int nodeset_input = scontext->nodeset_input; + hwloc_bitmap_t output_set = scontext->output_set; + hwloc_calc_append_mode_t mode = HWLOC_CALC_APPEND_ADD; + size_t typelen; + int err; + + if (*arg == '~') { + mode = HWLOC_CALC_APPEND_CLR; + arg++; + } else if (*arg == 'x') { + mode = HWLOC_CALC_APPEND_AND; + arg++; + } else if (*arg == '^') { + mode = HWLOC_CALC_APPEND_XOR; + arg++; + } + + if (!strcmp(arg, "all") || !strcmp(arg, "root")) + return hwloc_calc_append_set(output_set, + nodeset_output ? hwloc_topology_get_topology_nodeset(topology) : hwloc_topology_get_topology_cpuset(topology), + mode, verbose); + + /* try to match a type/depth followed by a special character */ + typelen = strspn(arg, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + if (typelen && (arg[typelen] == ':' || arg[typelen] == '=' || arg[typelen] == '[')) { + /* process type/depth */ + struct hwloc_calc_process_location_set_cbdata_s cbdata; + cbdata.set = hwloc_bitmap_alloc(); + cbdata.scontext = scontext; + err = hwloc_calc_process_location(lcontext, arg, typelen, + hwloc_calc_process_location_set_cb, &cbdata); + if (!err) + err = hwloc_calc_append_set(output_set, cbdata.set, mode, verbose); + hwloc_bitmap_free(cbdata.set); + + } else { + /* try to match a cpuset */ + char *tmp = (char*) arg; + hwloc_bitmap_t newset; + int taskset = ( strchr(tmp, ',') == NULL ); + + /* check the infinite prefix */ + if (hwloc_strncasecmp(tmp, "0xf...f,", 7+!taskset) == 0) { + tmp += 7+!taskset; + if (0 == *tmp) { + err = -1; + goto out; + } + } + + if (taskset) { + /* check that the remaining is 0x followed by a huge hexadecimal number */ + if (hwloc_strncasecmp(tmp, "0x", 2) != 0) { + err = -1; + goto out; + } + tmp += 2; + if (0 == *tmp) { + err = -1; + goto out; + } + if (strlen(tmp) != strspn(tmp, "0123456789abcdefABCDEF")) { + err = -1; + goto out; + } + + } else { + /* check that the remaining is a comma-separated list of hexadecimal integer with 0x as an optional prefix */ + while (1) { + char *next = strchr(tmp, ','); + size_t len; + if (hwloc_strncasecmp(tmp, "0x", 2) == 0) { + tmp += 2; + if (',' == *tmp || 0 == *tmp) { + err = -1; + goto out; + } + } + len = next ? (size_t) (next-tmp) : strlen(tmp); + if (len != strspn(tmp, "0123456789abcdefABCDEF")) { + err = -1; + goto out; + } + if (!next) + break; + tmp = next+1; + } + } + + newset = hwloc_bitmap_alloc(); + if (taskset) + hwloc_bitmap_taskset_sscanf(newset, arg); + else + hwloc_bitmap_sscanf(newset, arg); + if (nodeset_output && !nodeset_input) { + hwloc_bitmap_t newnset = hwloc_bitmap_alloc(); + hwloc_cpuset_to_nodeset(topology, newset, newnset); + err = hwloc_calc_append_set(output_set, newnset, mode, verbose); + hwloc_bitmap_free(newnset); + } else if (nodeset_input && !nodeset_output) { + hwloc_bitmap_t newcset = hwloc_bitmap_alloc(); + hwloc_cpuset_from_nodeset(topology, newcset, newset); + err = hwloc_calc_append_set(output_set, newcset, mode, verbose); + hwloc_bitmap_free(newcset); + } else { + err = hwloc_calc_append_set(output_set, newset, mode, verbose); + } + hwloc_bitmap_free(newset); + } + + out: + return err; +} + +static __hwloc_inline void +hwloc_calc_locations_usage(FILE *where) +{ + fprintf (where, " core:2-3 for the third and fourth cores\n"); + fprintf (where, " node:1.pu:2 the third PU of the second NUMA node\n"); + fprintf (where, " 0x12345678 a CPU set given a bitmask string\n"); + fprintf (where, " os=eth0 the operating system device named eth0\n"); + fprintf (where, " pci=0000:01:02.0 the PCI device with the given bus ID\n"); + fprintf (where, " with prefix ~ to remove, ^ for xor and x for intersection\n"); + fprintf (where, " (see Location Specification in hwloc(7) for details).\n"); +} + +#endif /* HWLOC_CALC_H */ diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-compress-dir.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-compress-dir.1in new file mode 100644 index 0000000000..1add7dbce1 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-compress-dir.1in @@ -0,0 +1,91 @@ +.\" -*- nroff -*- +.\" Copyright © 2013-2021 Inria. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-COMPRESS-DIR "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-compress-dir \- Compress a directory of XML topologies +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +.B hwloc-compress-dir +[\fIoptions\fR] + + +\fR +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +.TP +\fB\-R \-\-reverse\fR +Uncompress a previously compressed directory. +.TP +\fB\-v \-\-verbose\fR +Display verbose messages. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc-compress-dir takes an input directory containing XML exports +and tries to compress it by computing topology diffs between them +(with the hwloc-diff program). +Each file is copied in the output directory either as a diff if it +could be compressed, or as its original entire file otherwise. +. +.PP +hwloc-compress-dir may recompress a directory that was previously +compressed. All input files that are already in the output directory, +either compressed or not, are ignored. New input files are compressed +as much as possible as usual. +. +.PP +For each file of the directory, the output filename is +the same as the original if not compressed, +otherwise its extension is changed to \fB.diff.xml\fR. +. +.PP +Compressed files are based on another non-compressed topology. +Its name is stored in the \fBrefname\fR topology diff attribute. +. +.PP +The generated output diff files may be used with hwloc-patch +just like any file generated by hwloc-diff. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +To compress the input files from directory in into directory out: + + $ hwloc-compress-dir in out +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, hwloc-compress-dir returns 0. +. +.PP +hwloc-compress-dir will return nonzero if any kind of error occurs, +such as (but not limited to) failure to parse the command line. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-diff(1), hwloc-patch(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-compress-dir.in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-compress-dir.in new file mode 100644 index 0000000000..948d4b05b7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-compress-dir.in @@ -0,0 +1,171 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2013-2021 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_VERSION="@HWLOC_VERSION@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +prefix="@prefix@" +exec_prefix="@exec_prefix@" +bindir="@bindir@" +# this will be changed into $bindir/... during make install +localhwlocdiff="$HWLOC_top_builddir/utils/hwloc/hwloc-diff" +localhwlocpatch="$HWLOC_top_builddir/utils/hwloc/hwloc-patch" + +verbose=0 +reverse=0 + +error() +{ + echo $@ 2>&1 +} + +usage() +{ + echo `basename $0`" [options] " + echo " Compress topologies from into " + echo "Options:" + echo " -R --reverse Uncompress instead of compressing" + echo " -v --verbose Display verbose messages" + echo " --version Report version and exit" + echo " -h --help Show this usage" +} + +while test $# -gt 0 ; do + case "$1" in + -R|--reverse) + reverse=1 + ;; + -v|--verbose) + verbose=1 + ;; + --version) + echo `basename $0`" $HWLOC_VERSION" + exit 0 + ;; + -h|--help) + usage + exit 0 + ;; + -*) + error "Unrecognized option: $1" + usage + exit 1 + ;; + *) + break + ;; + esac + shift +done + +if test $# -lt 2 ; then + usage + exit 1 +fi + +inputdir="$1" +test x`echo $inputdir | sed -e 's/^\///'` = x$inputdir && inputdir="$PWD/$inputdir" +outputdir="$2" +test x`echo $outputdir | sed -e 's/^\///'` = x$outputdir && outputdir="$PWD/$outputdir" + +if ! cd "$outputdir" ; then + echo "Cannot enter output directory $outputdir" + exit 1 +fi + +if test x$reverse = x0; then + # compress + + alreadycompressed=0 + alreadynoncompressed=0 + newlycompressed=0 + newlynoncompressed=0 + + inputs=`ls -1 "$inputdir"` + for input in $inputs ; do + name=`echo $input | sed -e 's/.xml$//'` + + if test "x${name}.xml" != "x$input"; then + test x$verbose = x1 && echo "Ignoring non-XML file $input" + continue + fi + if test -f "$outputdir/${name}.xml" ; then + test x$verbose = x1 && echo "$name already non-compressed, skipping" + alreadynoncompressed=`expr $alreadynoncompressed + 1` + continue + fi + if test -f "$outputdir/${name}.diff.xml" ; then + test x$verbose = x1 && echo "$name already compressed, skipping" + alreadycompressed=`expr $alreadycompressed + 1` + continue + fi + + found= + outputs=`ls -1 "$outputdir"` + for output in $outputs ; do + outputname=`echo $output | sed -e 's/.xml$//' | sed -e 's/.diff$//'` + test -f "${outputdir}/${outputname}.diff.xml" && continue + + if $localhwlocdiff "$outputdir/${outputname}.xml" "$inputdir/${name}.xml" "$outputdir/${name}.diff.xml" >/dev/null 2>/dev/null; then + echo "Compressed $name on top of $outputname" + newlycompressed=`expr $newlycompressed + 1` + found=1 + break + fi + done + + if test x$found = x ; then + echo "Could not compress $name, keeping non-compressed" + newlynoncompressed=`expr $newlynoncompressed + 1` + cp "$inputdir/${name}.xml" "$outputdir/${name}.xml" + fi + done + + echo "Compressed $newlycompressed new topologies ($alreadycompressed were already compressed)" + echo "Kept $newlynoncompressed new topologies non-compressed ($alreadynoncompressed were already non-compressed)" + +else + # uncompress + + newlyuncompressed=0 + newlynoncompressed=0 + alreadyuncompressed=0 + + inputs=`ls -1 "$inputdir"` + for input in $inputs ; do + + name=`echo $input | sed -e 's/.xml$//' | sed -e 's/.diff$//'` + + if test "x${name}.xml" != "x$input" -a "x${name}.diff.xml" != "x$input"; then + test x$verbose = x1 && echo "Ignoring non-XML and non-diff-XML file $input" + continue + fi + if test -f "$outputdir/${name}.xml" ; then + test x$verbose = x1 && echo "$name already uncompressed, skipping" + alreadyuncompressed=`expr $alreadyuncompressed + 1` + continue + fi + + if test "x${name}.xml" = "x$input"; then + # non-compressed + cp "$inputdir/${name}.xml" "$outputdir/${name}.xml" + echo "Copied $name, wasn't compressed" + newlynoncompressed=`expr $newlynoncompressed + 1` + else + # compressed + if (cd $outputdir && $localhwlocpatch refname "$inputdir/${name}.diff.xml" "${name}.xml"); then + echo "Uncompressed $name" + newlyuncompressed=`expr $newlyuncompressed + 1` + else + echo "Failed to uncompress $inputdir/${name}.diff.xml" 1>&2 + fi + fi + done + + echo "Uncompressed $newlyuncompressed new topologies, copied $newlynoncompressed non-compressed topologies ($alreadyuncompressed were already uncompressed)" + +fi diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-diff.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-diff.1in new file mode 100644 index 0000000000..ec1f27862e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-diff.1in @@ -0,0 +1,129 @@ +.\" -*- nroff -*- +.\" Copyright © 2013-2018 Inria. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-DIFF "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-diff \- Compute differences between two XML topologies +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.PP +.B hwloc-diff +[\fIoptions\fR] +\fI\fR +\fI\fR +.PP +.B hwloc-diff +[\fIoptions\fR] +\fI\fR +\fI\fR +\fI\fR +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP 10 +\fB\-\-refname\fR +Use as the identifier for the reference topology +in the output XML difference. +It is meant to tell which topology should be used when applying +the resulting difference. +hwloc-patch may use that name to automatically load the relevant +reference topology XML. +By default, is used without its full path. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc-diff computes the difference between two XML topologies +and stores the result into if any, or dumps it +to stdout otherwise. +. +.PP +The output difference may later be applied to another topology +with hwloc-patch. +. +.PP +hwloc-compress-dir may be used for computing the diffs between +all XML files in a directory. +. +.PP +.B NOTE: +If some application-specific userdata were been exported to the input XMLs, +they will be ignored and discarded from the output because hwloc has no way +to understand and compare them. +. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. Most of the concepts described in +hwloc(7) directly apply to the hwloc-diff utility. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +hwloc-diff's operation is best described through several examples. +. +.PP +Compute the difference between two XML topologies and output it to stdout: + + $ hwloc-diff fourmi023.xml fourmi024.xml + Found 11 differences, exporting to stdout + + ... + +Output the difference to file diff.xml instead: + + $ hwloc-diff fourmi023.xml fourmi024.xml diff.xml + Found 11 differences, exporting to diff.xml + +When the difference is too complex to be represented: + + $ hwloc-diff fourmi023.xml avakas-frontend1.xml + Found 1 differences, including 1 too complex ones. + Cannot export differences to stdout + +Directly compute the difference between two topologies and apply it +to another one: + + $ hwloc-diff fourmi023.xml fourmi024.xml | hwloc-patch fourmi025.xml - + +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, hwloc-diff outputs the difference. +The return value is 0. +. +.PP +If the difference is too complex to be represented, an error is returned +and the output is not generated. +. +.PP +hwloc-diff also returns nonzero if any kind of error occurs, such as +(but not limited to) failure to parse the command line. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-patch(1), hwloc-compress-dir(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-diff.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-diff.c new file mode 100644 index 0000000000..035bfb1b31 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-diff.c @@ -0,0 +1,176 @@ +/* + * Copyright © 2013-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/diff.h" +#include "misc.h" + +void usage(const char *callname __hwloc_attribute_unused, FILE *where) +{ + fprintf(where, "Usage: hwloc-diff [options] []\n"); + fprintf(where, "Options:\n"); + fprintf(where, " --refname Change the XML reference identifier to in the output\n"); + fprintf(where, " (default is the filename of the first topology\n"); + fprintf(where, " --version Report version and exit\n"); + fprintf(where, " -h --help Show this usage\n"); +} + +int main(int argc, char *argv[]) +{ + hwloc_topology_t topo1, topo2; + hwloc_topology_diff_t firstdiff = NULL, diff; + unsigned long flags = HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED | HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT; + char *callname, *input1, *input2, *output, *outputname, *refname = NULL; + char *xmlbuffer; + int xmlbuflen; + unsigned i, j; + int err; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + + /* skip argv[0], handle options */ + argc--; + argv++; + + hwloc_utils_check_api_version(callname); + + if (!getenv("HWLOC_XML_VERBOSE")) + putenv((char *) "HWLOC_XML_VERBOSE=1"); + + while (argc && *argv[0] == '-') { + if (!strcmp (argv[0], "--refname")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + refname = argv[1]; + argc--; + argv++; + } else if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } else if (!strcmp (argv[0], "-h") || !strcmp (argv[0], "--help")) { + usage(callname, stdout); + exit(EXIT_SUCCESS); + } else { + fprintf(stderr, "Unrecognized options: %s\n", argv[0]); + usage(callname, stderr); + exit(EXIT_FAILURE); + } + argc--; + argv++; + } + + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + input1 = argv[0]; + input2 = argv[1]; + argc -= 2; + argv += 2; + if (argc >= 1) { + output = argv[0]; + outputname = argv[0]; + argc--; + argv++; + } else { + output = NULL; + outputname = (char *) "stdout"; + } + + hwloc_topology_init(&topo1); + hwloc_topology_set_all_types_filter(topo1, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_set_flags(topo1, flags); + err = hwloc_topology_set_xml(topo1, input1); + if (err < 0) { + fprintf(stderr, "Failed to load 1st XML topology %s\n", input1); + goto out_with_topo1; + } + err = hwloc_topology_load(topo1); + if (err < 0) { + fprintf(stderr, "Failed to load 1st topology %s\n", input1); + goto out_with_topo1; + } + + hwloc_topology_init(&topo2); + hwloc_topology_set_all_types_filter(topo2, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_set_flags(topo2, flags); + err = hwloc_topology_set_xml(topo2, input2); + if (err < 0) { + fprintf(stderr, "Failed to load 2nd XML topology %s\n", input2); + goto out_with_topo2; + } + err = hwloc_topology_load(topo2); + if (err < 0) { + fprintf(stderr, "Failed to load 2nd topology %s\n", input2); + goto out_with_topo2; + } + + if (!refname) { + refname = strrchr(input1, '/'); + if (refname) + refname++; + else + refname = input1; + } + + err = hwloc_topology_diff_build(topo1, topo2, 0, &firstdiff); + if (err < 0) { + fprintf(stderr, "Failed to compute the diff (%s)\n", strerror(errno)); + goto out_with_topo2; + } + + diff = firstdiff; + i = 0, j = 0; + while (diff) { + i++; + if (diff->generic.type == HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX) + j++; + diff = diff->generic.next; + } + if (!i) { + fprintf(stderr, "Found no difference, exporting empty topology diff to %s\n", outputname); + } else if (!j) { + fprintf(stderr, "Found %u differences, exporting to %s\n", i, outputname); + } else { + fprintf(stderr, "Found %u differences, including %u too complex ones.\n", i, j); + fprintf(stderr, "Cannot export differences to %s\n", outputname); + } + if (!j) { + if (output) { + err = hwloc_topology_diff_export_xml(firstdiff, refname, output); + } else { + err = hwloc_topology_diff_export_xmlbuffer(firstdiff, refname, &xmlbuffer, &xmlbuflen); + if (!err) { + printf("%s\n", xmlbuffer); + hwloc_free_xmlbuffer(topo1, xmlbuffer); + } + } + if (err < 0) + fprintf(stderr, "Failed to export topology diff %s\n", output); + } + + hwloc_topology_diff_destroy(firstdiff); + + hwloc_topology_destroy(topo2); + hwloc_topology_destroy(topo1); + + if (j) + exit(EXIT_FAILURE); + else + exit(EXIT_SUCCESS); + +out_with_topo2: + hwloc_topology_destroy(topo2); +out_with_topo1: + hwloc_topology_destroy(topo1); + exit(EXIT_FAILURE); +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-distrib.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-distrib.1in new file mode 100644 index 0000000000..9ed11c9f5d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-distrib.1in @@ -0,0 +1,196 @@ +.\" -*- nroff -*- +.\" Copyright © 2010-2020 Inria. All rights reserved. +.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-DISTRIB "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-distrib \- Build a number of cpu masks distributed on the system +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +.B hwloc-distrib +[\fIoptions\fR] \fI\fR +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +.TP +\fB\-\-single\fR +Singlify each output to a single CPU. +.TP +\fB\-\-taskset\fR +Show CPU set strings in the format recognized by the taskset command-line +program instead of hwloc-specific CPU set string format. +.TP +\fB\-v\fR \fB\-\-verbose\fR +Verbose messages. +.TP +\fB\-i\fR , \fB\-\-input\fR +Read topology from XML file (instead of discovering the +topology on the local machine). If is "\-", the standard input +is used. XML support must have been compiled in to hwloc for this +option to be usable. +.TP +\fB\-i\fR , \fB\-\-input\fR +Read topology from instead of discovering the topology +of the local machine. +On Linux, the directory may contain the topology files +gathered from another machine topology with hwloc-gather-topology. +On x86, the directory may contain a cpuid dump gathered +with hwloc-gather-cpuid. +.TP +\fB\-i\fR , \fB\-\-input\fR +Simulate a fake hierarchy (instead of discovering the topology on the +local machine). If is "node:2 pu:3", the topology will +contain two NUMA nodes with 3 processing units in each of them. +The string must end with a number of PUs. +.TP +\fB\-\-if\fR , \fB\-\-input\-format\fR +Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR, +\fBcpuid\fR and \fBsynthetic\fR. +.TP +\fB\-\-ignore\fR +Ignore all objects of type in the topology. +.TP +\fB\-\-from\fR +Distribute starting from objects of the given type instead of from +the top of the topology hierarchy, i.e. ignoring the structure given by objects +above. + + cannot be among NUMANode, I/O or Misc types. +.TP +\fB\-\-to\fR +Distribute down to objects of the given type instead of down to the bottom of +the topology hierarchy, i.e. ignoring the structure given by objects below. +This may be useful if some latitude is desired for the binding, e.g. just bind +several processes to each package without specifying a single core for each +of them. + + cannot be among NUMANode, I/O or Misc types. +.TP +\fB\-\-at\fR +Distribute among objects of the given type. This is equivalent to specifying +both \fB\-\-from\fR and \fB\-\-to\fR at the same time. +.TP +\fB\-\-reverse\fR +Distribute by starting with the last objects first, +and singlify CPU sets by keeping the last bit (instead of the first bit). +.TP +\fB\-\-restrict\fR +Restrict the topology to the given cpuset. +.TP +\fB\-\-restrict\fR nodeset= +Restrict the topology to the given nodeset, unless \fB\-\-restrict\-flags\fR specifies something different. +.TP +\fB\-\-restrict\-flags\fR +Enforce flags when restricting the topology. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_topology_restrict()\fR. +Those names may be substrings of actual flag names as long as a single one matches, +for instance \fBbynodeset,memless\fR. +The default is \fB0\fR (or \fBnone\fR). +.TP +\fB\-\-disallowed\fR +Include objects disallowed by administrative limitations. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc-distrib generates a series of CPU masks corresponding to a distribution of +a given number of elements over the topology of the machine. The distribution +is done recursively from the top of the hierarchy (or from the level specified +by option \fB\-\-from\fR) down to the bottom of the hierarchy (or down to the +level specified by option \fB\-\-to\fR, or until only one element remains), +splitting the number of elements at each encountered hierarchy level not ignored +by options \fB\-\-ignore\fR. +. +.PP +This can e.g. be used to distribute a set of processes hierarchically according +to the topology of a machine. These masks can be used with hwloc-bind(1). +. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. Most of the concepts described in +hwloc(7) directly apply to the hwloc-bind utility. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +hwloc-distrib's operation is best described through several examples. +. +.PP +If 4 processes have to be distributed across a machine, their CPU masks +may be obtained with: + + $ hwloc-distrib 4 + 0x0000000f + 0x00000f00 + 0x000000f0 + 0x0000f000 + +To distribute only among the second package, the topology should be restricted: + + $ hwloc-distrib --restrict $(hwloc-calc package:1) 4 + 0x00000010 + 0x00000020 + 0x00000040 + 0x00000080 + +To get a single processor of each CPU masks (prevent migration in case +of binding) + + $ hwloc-distrib 4 --single + 0x00000001 + 0x00000100 + 0x00000010 + 0x00001000 + +Each output line may be converted independently with hwloc-calc: + + $ hwloc-distrib 4 --single | hwloc-calc --taskset + 0x1 + 0x100 + 0x10 + 0x1000 + +To convert the output into a list of processors that may be passed to +dplace -c inside a mpirun command line: + + $ hwloc-distrib 4 --single | xargs hwloc-calc --pulist + 0,8,4,16 +. +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, hwloc-distrib displays one or more CPU mask +strings. The return value is 0. +. +. +.PP +hwloc-distrib will return nonzero if any kind of error occurs, such as +(but not limited to) failure to parse the command line. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-distrib.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-distrib.c new file mode 100644 index 0000000000..84a2d1e73f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-distrib.c @@ -0,0 +1,302 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "misc.h" + +#ifdef HAVE_UNISTD_H +#include +#endif + +void usage(const char *callname __hwloc_attribute_unused, FILE *where) +{ + fprintf(where, "Usage: hwloc-distrib [options] number\n"); + fprintf(where, "Distribution options:\n"); + fprintf(where, " --ignore Ignore objects of the given type\n"); + fprintf(where, " --from Distribute starting from objects of the given type\n"); + fprintf(where, " --to Distribute down to objects of the given type\n"); + fprintf(where, " --at Distribute among objects of the given type\n"); + fprintf(where, " --reverse Distribute by starting from last objects\n"); + fprintf(where, "Input topology options:\n"); + fprintf(where, " --restrict [nodeset=]\n"); + fprintf(where, " Restrict the topology to some processors or NUMA nodes.\n"); + fprintf(where, " --restrict-flags Set the flags to be used during restrict\n"); + fprintf(where, " --disallowed Include objects disallowed by administrative limitations\n"); + hwloc_utils_input_format_usage(where, 0); + fprintf(where, "Formatting options:\n"); + fprintf(where, " --single Singlify each output to a single CPU\n"); + fprintf(where, " --taskset Show taskset-specific cpuset strings\n"); + fprintf(where, "Miscellaneous options:\n"); + fprintf(where, " -v --verbose Show verbose messages\n"); + fprintf(where, " --version Report version and exit\n"); + fprintf(where, " -h --help Show this usage\n"); +} + +int main(int argc, char *argv[]) +{ + long n = -1; + char *callname; + char *input = NULL; + enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT; + int taskset = 0; + int singlify = 0; + int verbose = 0; + char *restrictstring = NULL; + const char *from_type = NULL, *to_type = NULL; + hwloc_topology_t topology; + unsigned long flags = HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT; + unsigned long restrict_flags = 0; + unsigned long dflags = 0; + int opt; + int err; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + + /* skip argv[0], handle options */ + argv++; + argc--; + + hwloc_utils_check_api_version(callname); + + /* enable verbose backends */ + if (!getenv("HWLOC_XML_VERBOSE")) + putenv((char *) "HWLOC_XML_VERBOSE=1"); + if (!getenv("HWLOC_SYNTHETIC_VERBOSE")) + putenv((char *) "HWLOC_SYNTHETIC_VERBOSE=1"); + + hwloc_topology_init(&topology); + + while (argc >= 1) { + if (!strcmp(argv[0], "--")) { + argc--; + argv++; + break; + } + + opt = 0; + + if (*argv[0] == '-') { + if (!strcmp(argv[0], "--single")) { + singlify = 1; + goto next; + } + if (!strcmp(argv[0], "--taskset")) { + taskset = 1; + goto next; + } + if (!strcmp(argv[0], "-v") || !strcmp(argv[0], "--verbose")) { + verbose = 1; + goto next; + } + if (!strcmp (argv[0], "--disallowed") || !strcmp (argv[0], "--whole-system")) { + flags |= HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED; + goto next; + } + if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help")) { + usage(callname, stdout); + return EXIT_SUCCESS; + } + if (hwloc_utils_lookup_input_option(argv, argc, &opt, + &input, &input_format, + callname)) { + opt = 1; + goto next; + } + else if (!strcmp (argv[0], "--ignore")) { + hwloc_obj_type_t type; + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + if (hwloc_type_sscanf(argv[1], &type, NULL, 0) < 0) + fprintf(stderr, "Unsupported type `%s' passed to --ignore, ignoring.\n", argv[1]); + else + hwloc_topology_set_type_filter(topology, type, HWLOC_TYPE_FILTER_KEEP_NONE); + opt = 1; + goto next; + } + else if (!strcmp (argv[0], "--from")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + from_type = argv[1]; + opt = 1; + goto next; + } + else if (!strcmp (argv[0], "--to")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + to_type = argv[1]; + opt = 1; + goto next; + } + else if (!strcmp (argv[0], "--at")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + from_type = to_type = argv[1]; + opt = 1; + goto next; + } + else if (!strcmp (argv[0], "--reverse")) { + dflags |= HWLOC_DISTRIB_FLAG_REVERSE; + goto next; + } + else if (!strcmp (argv[0], "--restrict")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + if(strncmp(argv[1], "nodeset=", 8)) { + restrictstring = strdup(argv[1]); + } else { + restrictstring = strdup(argv[1]+8); + restrict_flags |= HWLOC_RESTRICT_FLAG_BYNODESET; + } + opt = 1; + goto next; + } + else if (!strcmp (argv[0], "--restrict-flags")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + restrict_flags = hwloc_utils_parse_restrict_flags(argv[1]); + opt = 1; + goto next; + } + else if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } + + fprintf (stderr, "Unrecognized option: %s\n", argv[0]); + usage(callname, stderr); + return EXIT_FAILURE; + } + + if (n != -1) { + fprintf(stderr,"duplicate number\n"); + usage(callname, stderr); + return EXIT_FAILURE; + } + n = atol(argv[0]); + + next: + argc -= opt+1; + argv += opt+1; + } + + if (n == -1) { + fprintf(stderr,"need a number\n"); + usage(callname, stderr); + return EXIT_FAILURE; + } + + if (verbose) + fprintf(stderr, "distributing %ld\n", n); + + { + unsigned i; + int from_depth, to_depth; + unsigned chunks; + hwloc_bitmap_t *cpuset; + + cpuset = malloc(n * sizeof(hwloc_bitmap_t)); + + if (input) { + err = hwloc_utils_enable_input_format(topology, flags, input, &input_format, verbose, callname); + if (err) { + free(cpuset); + return EXIT_FAILURE; + } + } + hwloc_topology_set_flags(topology, flags); + err = hwloc_topology_load(topology); + if (err < 0) { + free(cpuset); + return EXIT_FAILURE; + } + + if (restrictstring) { + hwloc_bitmap_t restrictset = hwloc_bitmap_alloc(); + hwloc_bitmap_sscanf(restrictset, restrictstring); + err = hwloc_topology_restrict (topology, restrictset, restrict_flags); + if (err) { + perror("Restricting the topology"); + /* FALLTHRU */ + } + hwloc_bitmap_free(restrictset); + free(restrictstring); + } + + from_depth = 0; + if (from_type) { + if (hwloc_type_sscanf_as_depth(from_type, NULL, topology, &from_depth) < 0 || from_depth < 0) { + fprintf(stderr, "Unsupported or unavailable type `%s' passed to --from, ignoring.\n", from_type); + return EXIT_FAILURE; + } + } + + to_depth = INT_MAX; + if (to_type) { + if (hwloc_type_sscanf_as_depth(to_type, NULL, topology, &to_depth) < 0 || to_depth < 0) { + fprintf(stderr, "Unsupported or unavailable type `%s' passed to --to, ignoring.\n", to_type); + return EXIT_FAILURE; + } + } + + chunks = hwloc_get_nbobjs_by_depth(topology, from_depth); + { + hwloc_obj_t *roots; + + roots = malloc(chunks * sizeof(hwloc_obj_t)); + + for (i = 0; i < chunks; i++) + roots[i] = hwloc_get_obj_by_depth(topology, from_depth, i); + + hwloc_distrib(topology, roots, chunks, cpuset, n, to_depth, dflags); + + for (i = 0; (long) i < n; i++) { + char *str = NULL; + if (singlify) { + if (dflags & HWLOC_DISTRIB_FLAG_REVERSE) { + unsigned last = hwloc_bitmap_last(cpuset[i]); + hwloc_bitmap_only(cpuset[i], last); + } else { + hwloc_bitmap_singlify(cpuset[i]); + } + } + if (taskset) + hwloc_bitmap_taskset_asprintf(&str, cpuset[i]); + else + hwloc_bitmap_asprintf(&str, cpuset[i]); + printf("%s\n", str); + free(str); + hwloc_bitmap_free(cpuset[i]); + } + + free(roots); + } + + free(cpuset); + } + + hwloc_topology_destroy(topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata-knl.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata-knl.c new file mode 100644 index 0000000000..ec21d85cb6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata-knl.c @@ -0,0 +1,533 @@ +/* + * Copyright © 2015-2018 Intel + * Copyright © 2015-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include + +#define KERNEL_SMBIOS_SYSFS "/sys/firmware/dmi/entries" + +/* official strings, found at least in Intel S7200AP boards (also used by Cray) and some SuperMicro boards */ +#define KNL_INTEL_GROUP_STRING "Group: Knights Landing Information" +#define KNM_INTEL_GROUP_STRING "Group: Knights Mill Information" +/* unexpected strings, found at least in Dell C6320p BIOS <=1.4.1 */ +#define KNL_DELL_GROUP_STRING "Knights Landing Association" + +static const char *allowed_group_strings[] = +{ + KNL_INTEL_GROUP_STRING, + KNM_INTEL_GROUP_STRING, + KNL_DELL_GROUP_STRING +}; + +/* Header is common part of all SMBIOS entries */ +struct smbios_header +{ + uint8_t type; + uint8_t length; + uint16_t handle; +}; + +struct smbios_group +{ + uint8_t group_name; +}; + +/* This structrures are padded by compiler + * So we hardcode size of the struct and use it + * instead of sizeof() */ +#define GROUP_ENTRY_SIZE 3 +struct smbios_group_entry +{ + uint8_t type; + uint16_t handle; +}; + +/* KNL header is similar as SMBIOS header + * decided to add it for readability */ +#define SMBIOS_KNL_HEADER_SIZE 7 +struct knl_smbios_header +{ + uint8_t type; + uint8_t length; + uint16_t handle; + uint16_t member_id; + uint8_t member_name; +}; + +/* general info data */ +#define SMBIOS_KNL_GENERAL_INFO_SIZE 5 +struct knl_general_info +{ + uint8_t supp_cluster_mode; + uint8_t cluster_mode; + uint8_t supp_memory_mode; + uint8_t memory_mode; + uint8_t cache_info; +}; + +/* memory info */ +#define SMBIOS_KNL_EDC_INFO_SIZE 9 +struct knl_edc_info +{ + uint8_t mcdram_present; + uint8_t mcdram_enabled; + uint8_t allowed_channels; + uint8_t reserved[4]; + uint8_t mcdram_info_size; + uint8_t mcdram_info_count; +}; + +/* mcdram controller structure */ +struct knl_mcdram_info { + uint32_t status; + uint8_t controller; + uint8_t channel; + uint16_t size64MB; + uint8_t product_revision; + uint8_t fwmajor_revision; + uint8_t fwminor_revision; + uint8_t fwpatch_revision; +}; + +/* internal data */ +struct parser_data +{ + uint64_t mcdram_regular; + uint64_t mcdram_cache; + int cluster_mode; + int memory_mode; + int cache_info; + int type_count; + int knl_types[64]; +}; + +enum cluster_mode +{ + QUADRANT = 1, + HEMISPHERE = 2, + SNC4 = 4, + SNC2 = 8, + ALL2ALL = 16 +}; + +enum memory_mode +{ + CACHE = 1, + FLAT = 2, + HYBRID = 4 +}; + +enum hybrid_cache +{ + H25 = 1, + H50 = 2, + H100 = 4 /* Incorrect but possible value */ +}; + +static int get_file_buffer(const char *file, char *buffer, int size) +{ + FILE *f; + + printf(" File = %s\n", file); + + if (!buffer) { + fprintf(stderr, "Unable to allocate buffer\n"); + return 0; + } + + f = fopen(file, "rb"); + if (!f) { + fprintf(stderr, "Unable to open %s (%s)\n", file, strerror(errno)); + return 0; + } + + size = fread(buffer, 1, size, f); + if (size == 0) { + fprintf(stderr, "Unable to read file\n"); + fclose(f); + return 0; + } + printf(" Read %d bytes\n", size); + + fclose(f); + return size; +} + +static int check_entry(struct smbios_header *h, const char *end, const char *query) +{ + char *group_strings = (char*)h + h->length; + do { + int len = strlen(group_strings); + /* SMBIOS string entries end with "\0\0" + * if length is 0 break and return + * */ + if (len == 0) + break; + + printf(" Looking for \"%s\" in group string \"%s\"\n", query, group_strings); + if (!strncmp(group_strings, query, len)) + return 1; + + group_strings += len; + } while(group_strings < end); + + return 0; +} + +static int is_phi_group(struct smbios_header *h, const char *end) +{ + unsigned i; + if (h->type != 14) { + fprintf(stderr, "SMBIOS table is not group table\n"); + return 0; + } + + for (i = 0; i < sizeof(allowed_group_strings)/sizeof(char*); i++) { + if (check_entry(h, end, allowed_group_strings[i])) + return 1; + } + + return 0; +} + +#define KNL_MEMBER_ID_GENERAL 0x1 +#define KNL_MEMBER_ID_EDC 0x2 + +#define PATH_SIZE 512 +#define SMBIOS_FILE_BUF_SIZE 4096 +#define KNL_MCDRAM_SIZE (16ULL*1024*1024*1024) + +static int process_smbios_group(const char *input_fsroot, char *dir_name, struct parser_data *data) +{ + char path[PATH_SIZE]; + char file_buf[SMBIOS_FILE_BUF_SIZE]; + struct smbios_header *h; + char *p; + char *end; + int size; + int i; + + snprintf(path, PATH_SIZE-1, "%s/" KERNEL_SMBIOS_SYSFS "/%s/raw", input_fsroot, dir_name); + path[PATH_SIZE-1] = 0; + + size = get_file_buffer(path, file_buf, SMBIOS_FILE_BUF_SIZE); + if (!size) { + fprintf(stderr, "Unable to read raw table file\n"); + return -1; + } + + h = (struct smbios_header*)file_buf; + end = file_buf+size; + if (!is_phi_group(h, end)) { + printf(" Failed to find Phi group\n"); + fprintf(stderr, "SMBIOS table does not contain Xeon Phi entries\n"); + return -1; + } + printf(" Found Phi group\n"); + + p = file_buf + sizeof(struct smbios_header) + sizeof(struct smbios_group); + if ((char*)p >= end) { + fprintf(stderr, "SMBIOS table does not have entries\n"); + return -1; + } + + end = file_buf+h->length; + + i = 0; + for (; p < end; i++, p+=3) { + struct smbios_group_entry *e = (struct smbios_group_entry*)p; + data->knl_types[i] = e->type; + printf(" Found Xeon Phi type = %d\n", e->type); + } + + data->type_count = i; + return 0; +} + +static int process_knl_entry(const char *input_fsroot, char *dir_name, struct parser_data *data) +{ + char path[PATH_SIZE]; + char file_buf[SMBIOS_FILE_BUF_SIZE]; + char *end; + int size; + struct knl_smbios_header *h; + + snprintf(path, PATH_SIZE-1, "%s/" KERNEL_SMBIOS_SYSFS "/%s/raw", input_fsroot, dir_name); + path[PATH_SIZE-1] = 0; + + size = get_file_buffer(path, file_buf, SMBIOS_FILE_BUF_SIZE); + if (!size) { + fprintf(stderr, "Unable to read raw table file\n"); + return -1; + } + + end = file_buf+size; + h = (struct knl_smbios_header*)file_buf; + if (h->member_id & KNL_MEMBER_ID_GENERAL) { + struct knl_general_info *info = + (struct knl_general_info*) (file_buf+SMBIOS_KNL_HEADER_SIZE); + printf(" Getting general Xeon Phi info\n"); + data->cluster_mode = info->cluster_mode; + data->memory_mode = info->memory_mode; + data->cache_info = info->cache_info; + } else if (h->member_id & KNL_MEMBER_ID_EDC) { + struct knl_edc_info *info = (struct knl_edc_info*)(file_buf+SMBIOS_KNL_HEADER_SIZE); + if (info->mcdram_present && info->mcdram_enabled) { + struct knl_mcdram_info *mi = (struct knl_mcdram_info*)(info + 1); + /* we use always smbios size not struct size + * as it can change in future.*/ + int struct_size = info->mcdram_info_size; + int i = 0; + + if (0 == struct_size) { + printf(" MCDRAM info size is set to 0, falling back to known size\n"); + struct_size = sizeof(*mi); + } + printf(" Getting Xeon Phi MCDRAM info. Count=%d struct size=%d\n", + (int)info->mcdram_info_count, struct_size); + for ( ; i < info->mcdram_info_count; i++) { + if ((char*)mi >= end) { + fprintf(stderr, "SMBIOS Xeon Phi entry is too small\n"); + return -1; + } + printf(" MCDRAM controller %d\n", mi->controller); + if (mi->status & 0x1) { + printf(" Controller fused\n"); + } else { + data->mcdram_regular += mi->size64MB; + printf(" Size = %d MB\n", (int)mi->size64MB*64); + } + mi = (struct knl_mcdram_info*)(((char*)mi)+struct_size); + } + /* convert to bytes */ + printf(" Total MCDRAM %llu MB\n", (long long unsigned int)data->mcdram_regular*64); + data->mcdram_regular *= 64*1024*1024; + /* + * BIOS can expose some MCRAM controllers as fused + * When this happens we hardcode MCDRAM size to 16 GB + */ + if (data->mcdram_regular != KNL_MCDRAM_SIZE) { + fprintf(stderr, "Not all MCDRAM is exposed in DMI. Please contact BIOS vendor\n"); + data->mcdram_regular = KNL_MCDRAM_SIZE; + } + + } else { + data->mcdram_regular = 0; + data->mcdram_cache = 0; + } + + } else { + /* We skip unknown table */ + fprintf(stderr, "Ignoring unknown SMBIOS entry type=%x\n", h->member_id); + } + + return 0; +} +static const char* get_memory_mode_str(int memory_mode, int hybrid_cache_size) +{ + switch (memory_mode) { + case CACHE: return "Cache"; + case FLAT: return "Flat"; + case HYBRID: + if (hybrid_cache_size == H25) { + return "Hybrid25"; + } else if (hybrid_cache_size == H50) { + return "Hybrid50"; + } + return "Unknown"; + default: + return "Unknown"; + } +} + +static const char* get_cluster_mode_str(int cluster_mode) +{ + switch (cluster_mode) { + case QUADRANT: return "Quadrant"; + case HEMISPHERE: return "Hemisphere"; + case ALL2ALL: return "All2All"; + case SNC2: return "SNC2"; + case SNC4: return "SNC4"; + default: + return "Unknown"; + } +} + +static int print_result(struct parser_data *data, const char *out_file) +{ + int node_count = 0; + int fd; + FILE *f; + + switch (data->cluster_mode) { + case QUADRANT: + node_count = 1; + break; + case HEMISPHERE: + node_count = 1; + break; + case ALL2ALL: + node_count = 1; + break; + case SNC2: + node_count = 2; + break; + case SNC4: + node_count = 4; + break; + default: + fprintf(stderr, "Incorrect cluster mode %d\n", data->cluster_mode); + return -1; + } + + switch (data->memory_mode) { + case CACHE: + data->mcdram_cache = data->mcdram_regular; + data->mcdram_regular = 0; + break; + case FLAT: + data->mcdram_cache = 0; + break; + case HYBRID: + if (data->cache_info == H25) { + data->mcdram_cache = data->mcdram_regular/4; + } else if (data->cache_info == H50) { + data->mcdram_cache = data->mcdram_regular/2; + } else if (data->cache_info == H100) { + data->mcdram_cache = data->mcdram_regular; + } else { + fprintf(stderr, "SMBIOS reserved cache info value %d\n", data->cache_info); + return -1; + } + data->mcdram_regular -= data->mcdram_cache; + break; + default: + fprintf(stderr, "Incorrect memory mode %d\n", data->memory_mode); + return -1; + } + + printf(" Cluster Mode: %s Memory Mode: %s\n", + get_cluster_mode_str(data->cluster_mode), + get_memory_mode_str(data->memory_mode, data->cache_info)); + printf(" MCDRAM total = %llu bytes, cache = %llu bytes\n", + (long long unsigned int)data->mcdram_regular, + (long long unsigned int)data->mcdram_cache); + data->mcdram_regular /= node_count; + data->mcdram_cache /= node_count; + printf(" MCDRAM total = %llu bytes, cache = %llu bytes per node\n", + (long long unsigned int)data->mcdram_regular, + (long long unsigned int)data->mcdram_cache); + + /* Now we can start printing stuff */ + /* use open+fdopen so that we can specify the file creation mode */ + fd = open(out_file, O_WRONLY|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); + if (fd < 0) { + fprintf(stderr, "Unable to open file `%s' (%s).\n", out_file, strerror(errno)); + return -1; + } + f = fdopen(fd, "w"); + if (!f) { + fprintf(stderr, "Unable to fdopen file `%s' (%s).\n", out_file, strerror(errno)); + close(fd); + return -1; + } + + fprintf(f, "version: 2\n"); + /* We cache is equal for node */ + fprintf(f, "cache_size: %llu\n", + (long long unsigned int)data->mcdram_cache); + fprintf(f, "associativity: 1\n");// direct-mapped cache + fprintf(f, "inclusiveness: 1\n");// inclusive cache + fprintf(f, "line_size: 64\n"); + fprintf(f, "cluster_mode: %s\n", get_cluster_mode_str(data->cluster_mode)); + fprintf(f, "memory_mode: %s\n", get_memory_mode_str(data->memory_mode, data->cache_info)); + fflush(f); + fclose(f); + close(fd); + return 0; +} + +/** +* Seeks SMBIOS sysfs for entry with type +*/ +int hwloc_dump_hwdata_knl_smbios(const char *input_fsroot, const char *outfile); + +int hwloc_dump_hwdata_knl_smbios(const char *input_fsroot, const char *outfile) +{ + DIR *d; + int i; + struct dirent *dir; + struct parser_data data; + char path[PATH_SIZE]; + int err; + + memset(&data, 0, sizeof(data)); + + printf("Dumping Xeon Phi SMBIOS Memory-Side Cache information:\n"); + + snprintf(path, PATH_SIZE-1, "%s/" KERNEL_SMBIOS_SYSFS, input_fsroot); + path[PATH_SIZE-1] = 0; + + d = opendir(path); + if (!d) { + fprintf(stderr, "Unable to open dmi-sysfs dir: %s", path); + return -1; + } + + /* process Xeon Phi entries + * start with group (type 14, dash os to omit 140 types) then find SMBIOS types for + * Knights Landing mcdram indofrmation + */ + while ((dir = readdir(d))) { + if (strncmp("14-", dir->d_name, 3) == 0) { + err = process_smbios_group(input_fsroot, dir->d_name, &data); + if (err < 0) { + closedir(d); + return err; + } + } + } + + if (!data.type_count) { + fprintf (stderr, " Couldn't find any Xeon Phi information.\n"); + closedir(d); + return -1; + } + + /* We probably have Xeon Phi type identifiers here */ + for (i = 0; i < data.type_count; i++) { + char tab[16] = {0}; + int l = snprintf(tab, sizeof(tab)-1, "%d-", data.knl_types[i]); + printf("\n"); + printf (" Seeking dir ̀`%s' %d\n", tab, l); + rewinddir(d); + while ((dir = readdir(d))) { + if (strncmp(dir->d_name, tab, l) == 0) { + err = process_knl_entry(input_fsroot, dir->d_name, &data); + if (err < 0) { + closedir(d); + return err; + } + } + } + } + + closedir(d); + + return print_result(&data, outfile); +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata.1in new file mode 100644 index 0000000000..b1b40bc4d7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata.1in @@ -0,0 +1,75 @@ +.\" -*- nroff -*- +.\" Copyright © 2015-2021 Inria. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-DUMP-HWDATA "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-dump-hwdata \- Dump topology and locality information from hardware tables +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.B hwloc-dump-hwdata +[\fIoptions\fR] +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP 10 +\fB\-o

      \fR +save output files to directory instead of the default +\fI%RUNSTATEDIR%/hwloc/\fR that was specified at configure time. + +You may want to set the HWLOC_DUMPED_HWDATA_DIR environment variable +as well so that the hwloc library looks for dumped files in that same +directory. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc may benefit from some locality and topology information from +SMBIOS or ACPI tables. +They are accessible from raw hardware files under directories such +/sys/firmware/dmi/ or /sys/firmware/acpi/ on Linux. +These files are usually only accessible to root, +and they only exist when there is \fIdmi-sysfs\fR support in the Linux kernel. +. +.PP +The hwloc-dump-hwdata tool dumps the useful contents of such files into +human-readable and world-accessible files. The intent is to run the tool +once during boot and have the main (non-privileged) hwloc library gather +information from these human-readable files. +. +.PP +\fBhwloc-dump-hwdata is currently only useful for Intel Xeon Phi processors\fR +(Knights Landing and Knights Mill). +. +.PP +The current list of dumped information is: +. +.TP 5 +\fBIntel Xeon Phi processor memory, cache and clustering configuration\fR +gathered from specific SMBIOS entries such as +\fI/sys/firmware/dmi/entries/14-*\fR and +\fI/sys/firmware/dmi/entries/160-*\fR, +and saved in file \fIknl_memoryside_cache\fR. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata.c new file mode 100644 index 0000000000..d7d29d293d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-dump-hwdata.c @@ -0,0 +1,96 @@ +/* + * Copyright © 2015 Intel, Inc. All rights reserved. + * Copyright © 2015-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include + +#define DEFAULT_DUMP_DIR RUNSTATEDIR "/hwloc" + +extern int hwloc_dump_hwdata_knl_smbios(const char *input_fsroot, const char *filename); + +static void usage(const char *name, FILE *where) +{ + fprintf (where, "Usage: %s [ options ] ...\n", name); + fprintf (where, "Options:\n"); + fprintf (where, " -o Output files to directory instead of " DEFAULT_DUMP_DIR "\n"); + fprintf (where, " --version Report version and exit\n"); + fprintf (where, " -h --help Show this usage\n"); +} + +int main(int argc, char *argv[]) +{ + const char *callname; + char *dirname = (char *) DEFAULT_DUMP_DIR; + const char *input_fsroot; + char *filename; + int err; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + + argv++; argc--; + while (argc) { + if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help")) { + usage(callname, stdout); + exit(EXIT_SUCCESS); + } else if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } else if (!strcmp(argv[0], "-o")) { + if (argc == 1) { + fprintf(stderr, "Missing output directory name.\n"); + usage(callname, stderr); + exit(EXIT_FAILURE); + } + dirname = argv[1]; + argc -= 2; + argv += 2; + } else { + fprintf(stderr, "Unknown option: %s\n", argv[0]); + usage(callname, stderr); + exit(EXIT_FAILURE); + } + } + + err = mkdir(dirname, S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH); + if (err < 0) { + if (errno == EEXIST) { + if (access(dirname, X_OK|W_OK)) { + fprintf(stderr, "Cannot enter and modify output directory `%s'.\n", dirname); + exit(EXIT_FAILURE); + } + } else { + fprintf(stderr, "Failed to create output directory `%s' (%s).\n", dirname, strerror(errno)); + exit(EXIT_FAILURE); + } + } + + input_fsroot = getenv("HWLOC_FSROOT"); + if (!input_fsroot) + input_fsroot = "/"; + + err = asprintf(&filename, "%s/knl_memoryside_cache", dirname); + assert(err >= 0); + err = hwloc_dump_hwdata_knl_smbios(input_fsroot, filename); + free(filename); + printf("\n"); + + return err ? EXIT_FAILURE : EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-cpuid.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-cpuid.1in new file mode 100644 index 0000000000..77f0247ed5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-cpuid.1in @@ -0,0 +1,110 @@ +.\" -*- nroff -*- +.\" Copyright © 2015-2021 Inria. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-GATHER-CPUID "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-gather-cpuid \- Dumps the relevant x86 cpuid values +for later (possibly offline) usage +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.B hwloc-gather-cpuid [\fIoptions\fR] [\fI\fR] +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP +\fB\-c +Only gather cpuid values for logical processor whose OS/physical index +is . +.TP +\fB\-s\fR \fB\-\-silent\fR +Do not show verbose messages. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +\fBhwloc-gather-cpuid\fR dumps all the relevant x86 cpuid values into +subdirectory \fIcpuid\fR of current directory, +or in \fB\fR if specified. +. +.PP +These files can be used later to explore the machine topology offline, +for instance by setting the environment variable \fIHWLOC_CPUID_PATH\fR +to the directory containing all output files, +and by forcing the x86 backend with \fIHWLOC_COMPONENTS=x86,stop\fR. +. +.PP +The directory contents may also be submitted to hwloc developers +to debug issues remotely. +. +.PP +If \fB-\fR is used as , the output is dumped to the standard +output, but a unique logical processor must have been given with \fB-c\fR. +. +.PP +\fBhwloc-gather-cpuid\fR is a x86 specific tool, it cannot be used +on other platforms. +. +.PP +.B NOTE: +\fBhwloc-gather-cpuid\fR gathers many hardware details about the platform. +Output files should not be posted on public lists or websites +unless it is clear that they contain no sensitive information. +. +.PP +.B NOTE: +The output of \fBhwloc-gather-cpuid\fR is included in the tarball +saved by \fBhwloc-gather-topology\fR on Linux/x86. +. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +To store cpuid information of all logical processors of the current machine: + + $ hwloc-gather-cpuid + Gathering in directory ./cpuid ... + Gathering CPUID of PU P#0 in path ./hwloc-x86-cpuid/pu0 ... + Gathering CPUID of PU P#1 in path ./hwloc-x86-cpuid/pu1 ... + Gathering CPUID of PU P#2 in path ./hwloc-x86-cpuid/pu2 ... + Gathering CPUID of PU P#3 in path ./hwloc-x86-cpuid/pu3 ... + Summary written to ./cpuid/hwloc-cpuid-info +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, \fBhwloc-gather-cpuid\fR will exit with the code 0. +. +.PP +\fBhwloc-gather-cpuid\fR will return nonzero exit status if any kind of error occurs, +such as (but not limited to) failure to create the output files. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), hwloc-gather-topology(1), lstopo(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-cpuid.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-cpuid.c new file mode 100644 index 0000000000..50861a2671 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-cpuid.c @@ -0,0 +1,613 @@ +/* + * Copyright © 2015-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "misc.h" + +#include +#include +#include +#include + +#include "private/cpuid-x86.h" + +#if defined(HWLOC_WIN_SYS) && !defined(__CYGWIN__) +#include +#define mkdir(name, mode) _mkdir(name) +#include +#define access _access +#ifndef X_OK +#define X_OK 00 /* meaningless */ +#endif +#ifndef W_OK +#define W_OK 02 +#endif +#endif + +static int verbose = 1; + +static void dump_one_cpuid(FILE *output, unsigned *regs, unsigned inregmask) +{ + unsigned i; + + /* clear unused inputs */ + for(i=0; i<4; i++) + if (!(inregmask & (1< %x %x %x %x\n", regs[0], regs[1], regs[2], regs[3]); +} + +static int dump_one_proc(hwloc_topology_t topo, hwloc_obj_t pu, const char *path) +{ + unsigned regs[4]; + unsigned highest_cpuid, highest_ext_cpuid; + unsigned i; + int has_intel_x2apic = 0; + int has_intel_pconfig = 0; + int has_intel_sgx = 0; + int has_amd_topoext = 0; + FILE *output; + int err; + + err = hwloc_set_cpubind(topo, pu->cpuset, HWLOC_CPUBIND_PROCESS); + if (err < 0) { + err = hwloc_set_cpubind(topo, pu->cpuset, HWLOC_CPUBIND_THREAD); + if (err < 0) { + fprintf(stderr, "Cannot bind to PU P#%u\n", pu->os_index); + return -1; + } + } + + if (path) { + output = fopen(path, "w"); + if (!output) { + fprintf(stderr, "Cannot open file '%s' for writing: %s\n", path, strerror(errno)); + return -1; + } + if (verbose) + printf("Gathering CPUID of PU P#%u in path %s ...\n", pu->os_index, path); + } else { + output = stdout; + if (verbose) + printf("Gathering CPUID of PU P#%u on stdout ...\n", pu->os_index); + } + + fprintf(output, "# mask e[abcd]x => e[abcd]x\n"); + + regs[0] = 0; + hwloc_x86_cpuid(®s[0], ®s[1], ®s[2], ®s[3]); + highest_cpuid = regs[0]; + regs[0] = 0x80000000; + hwloc_x86_cpuid(®s[0], ®s[1], ®s[2], ®s[3]); + highest_ext_cpuid = regs[0]; + + /* 0x0 = Highest cpuid + Vendor string */ + regs[0] = 0x0; + dump_one_cpuid(output, regs, 0x1); + + /* 0x1 = Family, Model, Stepping, Topology, Features */ + if (highest_cpuid >= 0x1) { + regs[0] = 0x1; + dump_one_cpuid(output, regs, 0x1); + if (regs[2] & (1 << 21)) + has_intel_x2apic = 1; + } + + /* 0x2 = Cache + TLB on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x2) { + regs[0] = 0x2; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x3 = Processor serial number on Intel P3, reserved otherwise ; Reserved on AMD */ + if (highest_cpuid >= 0x3) { + regs[0] = 0x3; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x4 = Caches on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x4) { + for(i=0; ; i++) { + regs[0] = 0x4; regs[2] = i; + dump_one_cpuid(output, regs, 0x5); + if (!(regs[0] & 0x1f)) + /* invalid, no more caches */ + break; + } + } + + /* 0x5 = Monitor/mwait */ + if (highest_cpuid >= 0x5) { + regs[0] = 0x5; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x6 = Thermal and Power management */ + if (highest_cpuid >= 0x6) { + regs[0] = 0x6; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x7 = Extended features */ + if (highest_cpuid >= 0x7) { + unsigned max; + regs[0] = 0x7; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + if (regs[3] & (1<<18)) + has_intel_pconfig = 1; + if (regs[1] & (1<<2)) + has_intel_sgx = 1; + max = regs[0]; + for(i=1; i<=max; i++) { + regs[0] = 0x7; regs[2] = i; + dump_one_cpuid(output, regs, 0x5); + } + } + + /* 0x9 = DCA on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x9) { + regs[0] = 0x9; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0xa = Perf monitoring on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0xa) { + regs[0] = 0xa; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0xb = Extended topology on Intel ; Reserved on AMD */ + if (has_intel_x2apic && highest_cpuid >= 0xb) { + for(i=0; ; i++) { + regs[0] = 0xb; regs[2] = i; + dump_one_cpuid(output, regs, 0x5); + if (!(regs[2] & 0xff00)) + /* invalid, no more levels */ + break; + } + } + + /* 0xd = Extended state enumeration */ + if (highest_cpuid >= 0xd) { + unsigned xcr0_l, xcr0_h, ia32xss_l, ia32xss_h; + + regs[0] = 0xd; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + xcr0_l = regs[0]; xcr0_h = regs[3]; + + regs[0] = 0xd; regs[2] = 1; + dump_one_cpuid(output, regs, 0x5); + ia32xss_l = regs[2]; ia32xss_h = regs[3]; + + for(i=2; i<32; i++) { + if ((xcr0_l | ia32xss_l) & (1<= 0xf) { + regs[0] = 0xf; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + regs[0] = 0xf; regs[2] = 1; + dump_one_cpuid(output, regs, 0x5); + } + + /* 0x10 = Platform/L3 QoS enforcement enumeration on Intel and AMD */ + if (highest_cpuid >= 0x10) { + /* Intel Resource Director Technology (Intel RDT) Allocation */ + regs[0] = 0x10; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + /* L3 Cache Allocation Technology */ + regs[0] = 0x10; regs[2] = 1; + dump_one_cpuid(output, regs, 0x5); + /* L2 Cache Allocation Technology */ + regs[0] = 0x10; regs[2] = 2; + dump_one_cpuid(output, regs, 0x5); + /* Memory Bandwidth Allocation */ + regs[0] = 0x10; regs[2] = 3; + dump_one_cpuid(output, regs, 0x5); + } + + /* 0x12 = SGX Attributes Enumeration on Intel ; Reserved on AMD */ + if (has_intel_sgx && highest_cpuid >= 0x12) { + regs[0] = 0x12; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + regs[0] = 0x12; regs[2] = 1; + dump_one_cpuid(output, regs, 0x5); + for(i=2; ; i++) { + regs[0] = 0x12; regs[2] = i; + dump_one_cpuid(output, regs, 0x5); + if (!(regs[0] & 0xf)) + /* invalid, no more subleaves */ + break; + } + } + + /* 0x14 = Processor trace enumeration on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x14) { + regs[0] = 0x14; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + regs[0] = 0x14; regs[2] = 1; + dump_one_cpuid(output, regs, 0x5); + } + + /* 0x15 = Timestamp counter/core crystal clock on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x15) { + regs[0] = 0x15; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x16 = Processor frequency on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x16) { + regs[0] = 0x16; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x17 = System-On-Chip Vendor Attribute on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x17) { + unsigned maxsocid; + regs[0] = 0x17; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + maxsocid = regs[0]; + if (maxsocid >= 3) { + for(i=1; i<=maxsocid; i++) { + regs[0] = 0x17; regs[2] = i; + dump_one_cpuid(output, regs, 0x5); + } + } + } + + /* 0x18 = Deterministic Address Translation Parameters on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x18) { + unsigned max; + regs[0] = 0x18; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + max = regs[0]; + for(i=1; i<=max; i++) { + regs[0] = 0x18; regs[2] = i; + regs[3] = 0; /* mark as invalid in case the cpuid call doesn't do anything */ + dump_one_cpuid(output, regs, 0x5); + if (!(regs[3] & 0x1f)) + /* invalid, but it doesn't mean the next subleaf will be invalid */ + continue; + } + } + + /* 0x19 = Key Locker Leaf on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x19) { + regs[0] = 0x19; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x1a = Hybrid Information Enumeration Leaf on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x1a) { + regs[0] = 0x1a; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + } + + /* 0x1b = PCONFIG Information on Intel ; Reserved on AMD */ + if (has_intel_pconfig && highest_cpuid >= 0x1b) { + for(i=0; ; i++) { + regs[0] = 0x1b; regs[2] = i; + dump_one_cpuid(output, regs, 0x5); + if (!(regs[0] & 0xfff)) + break; + } + } + + /* 0x1f = V2 Extended Topology Enumeration on Intel ; Reserved on AMD */ + if (highest_cpuid >= 0x1f) { + for(i=0; ; i++) { + regs[0] = 0x1f; regs[2] = i; + dump_one_cpuid(output, regs, 0x5); + if (!(regs[2] & 0xff00)) + /* invalid, no more levels */ + break; + } + } + + if (highest_cpuid > 0x1f) { + static int reported = 0; + if (!reported) + fprintf(stderr, "WARNING: Processor supports new CPUID leaves upto 0x%x\n", highest_cpuid); + reported = 1; + } + + /* 0x80000000 = Largest extended cpuid */ + regs[0] = 0x80000000; + dump_one_cpuid(output, regs, 0x1); + + /* 0x80000001 = Extended processor signature and features */ + if (highest_ext_cpuid >= 0x80000001) { + regs[0] = 0x80000001; + dump_one_cpuid(output, regs, 0x1); + if (regs[2] & (1 << 22)) + has_amd_topoext = 1; + } + + /* 0x80000002-4 = Processor name string */ + if (highest_ext_cpuid >= 0x80000002) { + regs[0] = 0x80000002; + dump_one_cpuid(output, regs, 0x1); + } + if (highest_ext_cpuid >= 0x80000003) { + regs[0] = 0x80000003; + dump_one_cpuid(output, regs, 0x1); + } + if (highest_ext_cpuid >= 0x80000004) { + regs[0] = 0x80000004; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x80000005 = L1 and TLB on AMD ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x80000005) { + regs[0] = 0x80000005; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x80000006 = L2, L3 and TLB on AMD ; L2 and reserved on Intel */ + if (highest_ext_cpuid >= 0x80000006) { + regs[0] = 0x80000006; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x80000007 = Advanced power management on AMD ; Almost reserved on Intel */ + if (highest_ext_cpuid >= 0x80000007) { + regs[0] = 0x80000007; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x80000008 = Long mode and topology on AMD ; Long mode on Intel */ + if (highest_ext_cpuid >= 0x80000008) { + regs[0] = 0x80000008; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x8000000a = SVM on AMD ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x8000000a) { + regs[0] = 0x8000000a; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x80000019 = TLB1G + Perf optim identifiers on AMD ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x80000019) { + regs[0] = 0x80000019; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x8000001a = Performance Optimization Identifiers on AMD ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x8000001a) { + regs[0] = 0x8000001a; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x8000001b = IBS on AMD ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x8000001b) { + regs[0] = 0x8000001b; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x8000001c = Profiling on AMD ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x8000001c) { + regs[0] = 0x8000001c; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x8000001d = Cache properties on AMD ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x8000001d) { + for(i=0; ; i++) { + regs[0] = 0x8000001d; regs[2] = i; + dump_one_cpuid(output, regs, 0x5); + if (!(regs[0] & 0x1f)) + /* no such cache, no more cache */ + break; + } + } + + /* 0x8000001e = Topoext on AMD ; Reserved on Intel */ + if (has_amd_topoext && highest_ext_cpuid >= 0x8000001e) { + regs[0] = 0x8000001e; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x8000001f = Encrypted Memory Capabilities ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x8000001f) { + regs[0] = 0x8000001f; + dump_one_cpuid(output, regs, 0x1); + } + + /* 0x80000020 = Platform QoS Enforcement for Memory Bandwidth ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x80000020) { + regs[0] = 0x80000020; regs[2] = 0; + dump_one_cpuid(output, regs, 0x5); + regs[0] = 0x80000020; regs[2] = 1; + dump_one_cpuid(output, regs, 0x5); + } + + /* 0x80000021 = Extended Feature 2 EAX ; Reserved on Intel */ + if (highest_ext_cpuid >= 0x80000021) { + regs[0] = 0x80000021; + dump_one_cpuid(output, regs, 0x1); + } + + if (highest_ext_cpuid > 0x80000021) { + static int reported = 0; + if (!reported) + fprintf(stderr, "WARNING: Processor supports new extended CPUID leaves upto 0x%x\n", highest_ext_cpuid); + reported = 1; + } + + if (path) + fclose(output); + return 0; +} + +void usage(const char *callname, FILE *where) +{ + fprintf(where, "Usage : %s [ options ] ... [ outdir ]\n", callname); + fprintf(where, " outdir is an optional output directory instead of cpuid/\n"); + fprintf(where, "Options:\n"); + fprintf(where, " -c Only gather for logical processor with logical index \n"); + fprintf(where, " -s --silent Do not show verbose messages\n"); + fprintf(where, " --version Report version and exit\n"); + fprintf(where, " -h --help Show this usage\n"); +} + +int main(int argc, const char * const argv[]) +{ + hwloc_topology_t topo; + hwloc_obj_t pu; + const char *basedir; + const char *callname; + char *path; + size_t pathlen; + unsigned idx = (unsigned) -1; + int err; + int ret = EXIT_SUCCESS; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + + argc--; argv++; + + hwloc_utils_check_api_version(callname); + + if (!hwloc_have_x86_cpuid()) { + fprintf(stderr, "CPUID not supported.\n"); + ret = EXIT_FAILURE; + goto out; + } + + while (argc > 0 && argv[0][0] == '-' && argv[0][1] != '\0') { + if (argc >= 2 && !strcmp(argv[0], "-c")) { + idx = atoi(argv[1]); + argc -= 2; + argv += 2; + } else if (argc >= 1 && (!strcmp(argv[0], "-s") || !strcmp(argv[0], "--silent"))) { + verbose--; + argc--; + argv++; + } else if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } else if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help")) { + usage(callname, stdout); + goto out; + } else { + usage(callname, stderr); + ret = EXIT_FAILURE; + goto out; + } + } + + basedir = "./cpuid"; + if (argc >= 1) + basedir = argv[0]; + + if (!getenv("HWLOC_COMPONENTS")) + putenv((char *) "HWLOC_COMPONENTS=no_os,stop"); + + hwloc_topology_init(&topo); + hwloc_topology_set_all_types_filter(topo, HWLOC_TYPE_FILTER_KEEP_NONE); + err = hwloc_topology_load(topo); + if (err < 0) { + fprintf(stderr, "Failed to load topology\n"); + ret = EXIT_FAILURE; + goto out; + } + + if (!hwloc_topology_is_thissystem(topo)) { + fprintf(stderr, "%s must run on the current system topology, while this topology doesn't come from this system.\n", callname); + ret = EXIT_FAILURE; + goto out; + } + + if (!strcmp(basedir, "-")) { + if (verbose) + printf("Gathering on stdout ...\n"); + if (idx == (unsigned) -1) { + fprintf(stderr, "Cannot gather multiple PUs on stdout.\n"); + ret = EXIT_FAILURE; + goto out; + } + path = NULL; + pathlen = 0; + } else { + err = mkdir(basedir, S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH); + if (err < 0) { + if (access(basedir, X_OK|W_OK) < 0) { + fprintf(stderr, "Could not create/open destination directory %s\n", basedir); + ret = EXIT_FAILURE; + goto out_with_topo; + } + } + if (verbose) + printf("Gathering in directory %s ...\n", basedir); + + pathlen = strlen(basedir) + 20; /* for '/pu%u' or '/hwloc-cpuid-info' */ + path = malloc(pathlen); + } + + if (idx == (unsigned) -1) { + FILE *file; + pu = NULL; + while ((pu = hwloc_get_next_obj_by_type(topo, HWLOC_OBJ_PU, pu)) != NULL) { + idx = pu->os_index; + if (path) + snprintf(path, pathlen, "%s/pu%u", basedir, idx); + dump_one_proc(topo, pu, path); + } + + snprintf(path, pathlen, "%s/hwloc-cpuid-info", basedir); + file = fopen(path, "w"); + if (file) { + fprintf(file, "Architecture: x86\n"); + fclose(file); + if (verbose) + printf("Summary written to %s\n", path); + } else { + fprintf(stderr, "Failed to open summary file '%s' for writing: %s\n", path, strerror(errno)); + } + } else { + pu = hwloc_get_pu_obj_by_os_index(topo, idx); + if (!pu) { + fprintf(stderr, "Cannot find PU P#%u\n", idx); + ret = EXIT_FAILURE; + goto out_with_path; + } else { + if (path) + snprintf(path, pathlen, "%s/pu%u", basedir, idx); + dump_one_proc(topo, pu, path); + } + } + + if (verbose) + printf("\n" + "WARNING: Do not post these files on a public list or website unless you\n" + "WARNING: are sure that no information about this platform is sensitive.\n"); + + out_with_path: + free(path); + out_with_topo: + hwloc_topology_destroy(topo); + out: + return ret; +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-topology.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-topology.1in new file mode 100644 index 0000000000..e97d2a978d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-topology.1in @@ -0,0 +1,159 @@ +.\" -*- nroff -*- +.\" Copyright © 2010 Jirka Hladky +.\" Copyright © 2010-2021 Inria. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-GATHER-TOPOLOGY "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-gather-topology \- Saves the relevant Linux and x86 topology files +and the lstopo textual and XML outputs for later (possibly offline) usage +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.B hwloc-gather-topology [\fIoptions\fR] \fI\fR +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP +\fB\-\-io\fR +Also gather I/O related files. +The gathering may be much slower, and the generated archive may be much bigger. +. +.TP +\fB\-\-dmi\fR +Also gather DMI/SMBIOS related files. +The gathering requires root access, and the dmi-sysfs kernel module should be loaded. +. +.TP +\fB\-\-no\-cpuid\fR +Do not gather x86 CPUID dump using \fIhwloc\-gather\-cpuid\fR. +. +.TP +\fB\-\-keep\fR +Keep the temporary copy of dumped files instead of destroying it. +. +.TP +\fB\-\-version\fR +Report version and exit. +. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +\fBhwloc-gather-topology\fR saves all the relevant topology files into an +archive (\fB.tar.bz2\fR), the lstopo output (\fB.output\fR), +and the lstopo XML (\fB.xml\fR). +The utility for example stores the \fB/proc/cpuinfo\fR file and the entire +\fB/sys/devices/system/node/\fR directory tree. +. +.PP +These files can be used later to explore the machine topology offline. +Once the tarball has been extracted, it may for instance be given to +some hwloc command-line utilities through their \fB\-\-input\fR option. +It is also possible to override the default topology that the hwloc +library will read by setting the extracted path in the \fBHWLOC_FSROOT\fR +environment variable. +. +.PP +The archive and the lstopo textual and XML outputs may also be submitted to hwloc developers +to debug issues remotely. +. +.PP +\fBhwloc-gather-topology\fR is a Linux specific tool, it is not installed +on other operating systems. +. +.PP +.B NOTE: +\fBhwloc-gather-topology\fR gathers many hardware details about the platform. +The outputs and tarball should not be posted on public lists or websites +unless it is clear that they contain no sensitive information. +. +.PP +.B NOTE: +The gathering may take several minutes, especially on large nodes. +. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +To store topology information to be used later (possibly on +a different host) please run: + + hwloc-gather-topology /tmp/myhost + +It will store all relevant topology files in the \fB/tmp/myhost.tar.bz2\fR +archive, the lstopo output in the \fB/tmp/myhost.output\fR file, +and the lstopo XML in the \fB/tmp/myhost.xml\fR file. +. +These files can be transferred on another host for later/offline +analysis and/or as the input to various hwloc utilities. +.PP +To use these data with hwloc utilities you have to unpack +\fBmyhost.tar.bz2\fR archive first: + + tar jxvf /tmp/myhost.tar.bz2 + +A new directory named \fBmyhost\fR now contains all topology files. +Then you ask various hwloc utilities to use this topology instead +of the one of the real machine by passing \fB\-\-input myhost\fR. +To display the topology just run: + + lstopo --input ./myhost + +It is not necessary that the topology is extracted in the current +directory, absolute or relative paths are also supported: + + lstopo --input /path/to/remote/host/extracted/topology/ + +To see how hwloc would distribute 8 parallel jobs on the original host: + + hwloc-distrib --input myhost --single 8 + +To get the corresponding physical indexes in the previous command: + + hwloc-calc --input myhost --po --li --proclist $(hwloc-distrib --input myhost --single 8) + +Any program may actually override the default topology with a given +archived one even if it does not have a \fB\-\-input\fR option. +The \fBHWLOC_FSROOT\fR environment variable should be used to do so: + + HWLOC_FSROOT=myhost hwloc-calc --po --li --proclist $(hwloc-distrib --single 8) + +All these commands will produce the same output as if executed +directly on the host on which the topology information was +originally gathered by the \fBhwloc-gather-topology\fR script. +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, \fBhwloc-gather-topology\fR will exit with the code 0. +. +.PP +\fBhwloc-gather-topology\fR will return nonzero exit status if any kind of error occurs, +such as (but not limited to) failure to create the archive or output files. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-gather-cpuid(1), hwloc-calc(1), hwloc-distrib(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-topology.in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-topology.in new file mode 100644 index 0000000000..50d4b5cc47 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-gather-topology.in @@ -0,0 +1,350 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009 CNRS +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2012 Université Bordeaux +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_VERSION="@HWLOC_VERSION@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +prefix="@prefix@" +exec_prefix="@exec_prefix@" +bindir="@bindir@" +localstatedir="@localstatedir@" +runstatedir="@HWLOC_runstatedir@" +# this will be changed into $bindir/lstopo during make install +lstopo="$HWLOC_top_builddir/utils/lstopo/lstopo-no-graphics" +hgcpuid="$HWLOC_top_builddir/utils/hwloc/hwloc-gather-cpuid" + +# make sure we use default numeric formats +LANG=C +LC_ALL=C +export LANG LC_ALL + +# don't let ls append special chars after symlinks etc +unalias -a ls + +gathercpuid=1 +gatherio=0 +gatherdmi=0 +keep=0 + +if [ ! -x "$lstopo" ] +then + error "Could not find lstopo executable in the install or build dir." + exit 1 +fi + +error() +{ + echo $@ 2>&1 +} + +usage() +{ + echo `basename $0`" [options] " + echo " Saves the Linux topology files (/sys, /proc, ...) under .tar.bz2" + echo " and the corresponding lstopo verbose output under .output" + echo "Options:" + echo " --io Gather I/O files (takes much longer and generates much larger tarball)" + echo " --dmi Gather SMBIOS files. Works only when run as root. Requires dmi-sysfs kernel module" + echo " --no-cpuid Do not gather x86 CPUID using hwloc-gather-cpuid" + echo " --keep Keep the temporary copy of dumped files" + echo " --version Report version and exit" + echo " -h --help Show this usage" + echo "Example:" + echo " $0 /tmp/\$(uname -n)" +} + +while [ x`echo "$1" | cut -c1` = x- ] ; do + case $1 in + --io) gatherio=1;; + --dmi) gatherdmi=1;; + --no-cpuid) gathercpuid=0;; + --keep) keep=1;; + --version) echo `basename $0`" $HWLOC_VERSION"; exit 0;; + -h|--help) usage; exit 0;; + *) echo "Unrecognized option: $1"; usage; exit 1;; + esac + shift +done + +if test $# -lt 1 -o x$1 = x; then + usage + exit 1 +fi +name="$1" +basename=`basename "$name"` +dirname=`dirname "$name"` + +if [ x$gatherio = x0 ]; then + echo "I/O files won't be saved (--io not given)." +fi +if [ x$gatherdmi = x0 ]; then + echo "DMI files won't be saved (--dmi not given)." +fi + +echo +echo "*** Note that this tool may be slow on large nodes or when I/O is enabled. ***" +echo + +if ! mkdir -p "$dirname" ; then + error "Failed to create directory $dirname." + exit 1 +fi + +if [ ! -w "$dirname" ] ; then + echo "$dirname is not writable." + exit 1 +fi + +destdir=`mktemp -d --tmpdir hwloc-gather-topology.XXXXXXXX` + +# Use cat so that we properly get proc/sys files even if their +# file length is wrong +_savefile() { + local dest="$1" + local file="$2" + if test -r "$file"; then + dir=`dirname "$file"` + mkdir -p "$dest/$dir" 2>/dev/null + cat "$file" > "$dest/$file" 2>/dev/null + fi +} + +_savelink() { + local dest="$1" + local file="$2" + dir=`dirname "$file"` + mkdir -p "$dest/$dir" 2>/dev/null + cp -P "$file" "$dest/$file" +} + +# Get a file +savefile() { + local dest="$1" + local file="$2" + echo " file $file" + _savefile "$dest" "$file" +} + +# Get all files from the given directory +# Ignore errors since some files may be missing, and some may be +# restricted to root (but we don't need them). +savedir() { + local dest="$1" + local path="$2" + echo " directory $path" + # gather all directories, including empty ones + find "$path" -type d 2>/dev/null | while read -r dir ; do + mkdir -p "$dest/$dir" 2>/dev/null + done + # gather all files now + find "$path" -type f 2>/dev/null | while read -r file ; do + test -e "$dest/$file" || _savefile "$dest" "$file" + done + # gather symlinks + find "$path" -type l 2>/dev/null | while read -r link ; do + test -e "$dest/$link" || _savelink "$dest" "$link" + done +} + +# Save a class directory, including symlink targets (except in /devices/pci) and their device symlinks if any +saveclassdir() { + local dest="$1" + local classname="$2" + + test -d /sys/class/$classname/ || return + + savedir "$dest" /sys/class/$classname/ + + for dev in $(ls /sys/class/$classname/); do + target=$(readlink /sys/class/$classname/$dev 2>/dev/null | grep -v /devices/pci) + if test "x$target" != x; then + savedir "$dest" "/sys/class/$classname/$target" + fi + device=$(readlink /sys/class/$classname/$target/device 2>/dev/null | grep -v /devices/pci) + if test "x$device" != x; then + savedir "$dest" "/sys/class/$classname/$target/$device" + fi + done +} + +# Save a bus devices directory, include symlinks target (except in /devices/pci) with a possible relative path, and their device symlink if any +savebusdir() { + local dest="$1" + local busname="$2" + local relpath="$3" + + test -d /sys/bus/$busname/devices/ || return + + savedir "$dest" /sys/bus/$busname/devices/ + + for dev in $(ls /sys/bus/$busname/devices/); do + target=$(readlink /sys/bus/$busname/devices/$dev 2>/dev/null | grep -v /devices/pci) + if test "x$target" != x; then + savedir "$dest" "/sys/bus/$busname/devices/$target/$relpath" + fi + device=$(readlink /sys/bus/$busname/devices/$target/$relpath/device 2>/dev/null | grep -v /devices/pci) + if test "x$device" != x; then + savedir "$dest" "/sys/bus/$busname/devices/$target/$relpath/$device" + fi + done +} + +# savedir "$destdir/$basename" /sys/bus/dax/devices/ +# readlink /sys/bus/dax/devices/* 2>/dev/null | grep -v /devices/pci | while read -r path ; do savedir "$destdir/$basename" "/sys/bus/dax/devices/$path/.." ; done + +# Get an entire mount point, after decoding its path +# we don't support path with \n since it would break in 'find ... | while read ..." above +savemntpnt() { + local encodedpath=$1 + if echo "$1" | grep "\\012" ; then + echo "Ignoring mount point whose filename contains an end of line." + return + fi + local path=$(echo "$1" | sed -e 's@\\134@\\@g' -e 's@\\040@ @g' -e 's@\\011@ @g') + savedir "$destdir/$basename" "${path}/" +} + +# +# Main stuff +# +echo "Gathering main files and directories..." + +# Gather the following list of files +savefile "$destdir/$basename" /proc/cmdline +savefile "$destdir/$basename" /proc/cpuinfo +savefile "$destdir/$basename" /proc/meminfo +savefile "$destdir/$basename" /proc/mounts +savefile "$destdir/$basename" /proc/stat +savefile "$destdir/$basename" /proc/version +savefile "$destdir/$basename" /proc/self/cpuset +savefile "$destdir/$basename" /proc/self/cgroup +savefile "$destdir/$basename" /proc/driver/nvidia + +# Gather cpu and node information +# (no need for savebusdir since we already gather the target /sys/devices/system/{cpu,node} explicitly) +savedir "$destdir/$basename" /sys/devices/system/cpu/ +savedir "$destdir/$basename" /sys/bus/cpu/devices/ +savedir "$destdir/$basename" /sys/devices/system/node/ +savedir "$destdir/$basename" /sys/bus/node/devices/ + +# Gather DMI IDs +# (no need for aveclassdir since we only want "id" and it usually points to /sys/devices/virtual/dmi/id/) +savedir "$destdir/$basename" /sys/class/dmi/id/ +savedir "$destdir/$basename" /sys/devices/virtual/dmi/id/ + +# Gather hugepage information +savedir "$destdir/$basename" /sys/kernel/mm/hugepages/ + +# Gather the default /var/run/hwloc (in case it was created by a system-wide hwloc-dump-hwdata) +if test -d /var/run/hwloc; then + savedir "$destdir/$basename" /var/run/hwloc +fi +# Then, gather what the current hwloc installation could have created in a different $runstatedir +if test "$runstatedir" != "/var/run" -a -d "$runstatedir/hwloc"; then + savedir "$destdir/$basename" "$runstatedir/hwloc/" + mkdir -p "$destdir/$basename/var/run" + ln -sr "$destdir/$basename/$runstatedir/hwloc" "$destdir/$basename/var/run/hwloc.runstatedir" +fi +# And gather what custom $HWLOC_DUMPED_HWDATA_DIR +if test "x$HWLOC_DUMPED_HWDATA_DIR" != x -a -d "$HWLOC_DUMPED_HWDATA_DIR"; then + savedir "$destdir/$basename" "$HWLOC_DUMPED_HWDATA_DIR" + mkdir -p "$destdir/$basename/var/run" + ln -sr "$destdir/$basename/$HWLOC_DUMPED_HWDATA_DIR" "$destdir/$basename/var/run/hwloc.HWLOC_DUMPED_HWDATA_DIR" +fi +# Now link to /var/run/hwloc (used by default in lstopo -i) to something sane if needed +if ! test -d "$destdir/$basename/var/run/hwloc"; then + if test -e "$destdir/$basename/var/run/hwloc.HWLOC_DUMPED_HWDATA_DIR"; then + ln -sr "$destdir/$basename/var/run/hwloc.HWLOC_DUMPED_HWDATA_DIR" "$destdir/$basename/var/run/hwloc" + else if test -e "$destdir/$basename/$runstatedir/hwloc"; then + ln -sr "$destdir/$basename/var/run/hwloc.runstatedir" "$destdir/$basename/var/run/hwloc" + fi fi +fi + +# Gather cgroup/cpuset mntpnts +cat /proc/mounts | while read -r dummy1 mntpath mnttype mntopts dummy2 ; do + [ x$mnttype = xcpuset ] && savemntpnt "$mntpath" + [ x$mnttype = xcgroup ] && echo $mntopts | grep -w cpuset >/dev/null && savemntpnt "$mntpath" + [ x$mnttype = xcgroup2 ] && savemntpnt "$mntpath" +done + +# +# Optionally gather I/O directories too +# +if [ x$gatherio = x1 ]; then + echo "Gathering I/O files..." + # gather all PCI stuff, lots of links (/sys/bus/pci/devices/* and /sys/class/foo/*) point there + savedir "$destdir/$basename" /sys/bus/pci/devices/ + savedir "$destdir/$basename" /sys/bus/pci/slots/ + ls -d /sys/devices/pci* 2>/dev/null | while read -r path ; do savedir "$destdir/$basename" "$path" ; done + # gather class and bus links, we'll parse that the target path for PCI busids + saveclassdir "$destdir/$basename" block + saveclassdir "$destdir/$basename" dax + savebusdir "$destdir/$basename" dax .. + saveclassdir "$destdir/$basename" dma + saveclassdir "$destdir/$basename" drm + saveclassdir "$destdir/$basename" infiniband + saveclassdir "$destdir/$basename" net + saveclassdir "$destdir/$basename" ve + saveclassdir "$destdir/$basename" bxi + saveclassdir "$destdir/$basename" mic + # udev block data + ls -d /run/udev/data/b* 2>/dev/null | while read -r path ; do savefile "$destdir/$basename" "$path" ; done +fi + +# +# Optionally gather DMI directories too +# +if [ x$gatherdmi = x1 ]; then + echo "Gathering DMI files..." + savedir "$destdir/$basename" /sys/firmware/dmi/ +fi + +# +# Export /proc/hwloc-nofile-info during lstopo (needs HWLOC_DUMP_NOFILE_INFO with HWLOC_THISSYSTEM=1) +# +echo "Exporting /proc/hwloc-nofile-info" +export HWLOC_DUMP_NOFILE_INFO="$destdir/$basename/proc/hwloc-nofile-info" +"$lstopo" - >/dev/null +# disable HWLOC_DUMP_NOFILE_INFO for next lstopo invocation +export HWLOC_DUMP_NOFILE_INFO= + +# +# Export cpuid if available +# +if [ x$gathercpuid = x1 -a -e "$hgcpuid" ]; then + echo + echo "Exporting x86 CPUID using hwloc-gather-cpuid" + $hgcpuid --silent "$destdir/$basename/cpuid" +fi + +# Create the archive and optionally keep the tree in /tmp for testing +echo +( cd "$destdir/" && tar cfj "$basename.tar.bz2" "$basename" ) +mv "$destdir/$basename.tar.bz2" "$dirname/$basename.tar.bz2" +if test x$keep = x1; then + echo "Topology files gathered in $dirname/$basename.tar.bz2 and kept in $destdir/$basename/" +else + echo "Topology files gathered in $dirname/$basename.tar.bz2" + rm -rf "$destdir" +fi + +# Generate the output as well +# we need "Topology not from this system" in the output so as to make test-topology.sh happy +export HWLOC_THISSYSTEM=0 +"$lstopo" - -v > "$dirname/$basename.output" +echo "Expected topology output stored in $dirname/$basename.output" +"$lstopo" -.xml --whole-io --disallowed > "$dirname/$basename.xml" +echo "XML topology stored in $dirname/$basename.xml" + +echo +echo "WARNING: Do not post these files on a public list or website unless you" +echo "WARNING: are sure that no information about this platform is sensitive." + +exit 0 diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-info.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-info.1in new file mode 100644 index 0000000000..414178957c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-info.1in @@ -0,0 +1,275 @@ +.\" -*- nroff -*- +.\" Copyright © 2009-2020 Inria. All rights reserved. +.\" Copyright © 2009-2010 Université of Bordeaux +.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-INFO "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-info \- Show some information about some objects or about a topology or about support features +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.PP +.B hwloc-info +[ \fIoptions \fR]... +\fI\fR... +.PP +.B hwloc-info +[ \fIoptions \fR]... +. +.PP +Note that hwloc(7) provides a detailed explanation of the hwloc system +and of valid formats; +it should be read before reading this man page. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP +\fB\-\-objects\fR +Report information specific objects. +This is the default if some objects are given on the command-line. +.TP +\fB\-\-topology\fR +Report a summary of the topology instead of about some specific objects. +This is the default if no object is given on the command-line. +.TP +\fB\-\-support\fR +Report the features that are supported by hwloc on the topology. +The features are those available through the \fBhwloc_topology_get_support()\fR function. +This is useful for verifying which CPU or memory binding options are supported +by the current hwloc installation. +.TP +\fB\-i\fR , \fB\-\-input\fR +Read topology from XML file (instead of discovering the +topology on the local machine). If is "\-", the standard input +is used. XML support must have been compiled in to hwloc for this +option to be usable. +.TP +\fB\-i\fR , \fB\-\-input\fR +Read topology from instead of discovering the topology +of the local machine. +On Linux, the directory may contain the topology files +gathered from another machine topology with hwloc-gather-topology. +On x86, the directory may contain a cpuid dump gathered +with hwloc-gather-cpuid. +.TP +\fB\-i\fR , \fB\-\-input\fR +Simulate a fake hierarchy (instead of discovering the topology on the +local machine). If is "node:2 pu:3", the topology will +contain two NUMA nodes with 3 processing units in each of them. +The string must end with a number of PUs. +.TP +\fB\-\-if\fR , \fB\-\-input\-format\fR +Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR, +\fBcpuid\fR and \fBsynthetic\fR. +.TP +\fB\-v\fR \fB\-\-verbose\fR +Include additional detail. +.TP +\fB\-s\fR \fB\-\-silent\fR +Reduce the amount of details to show. +A single summary line per object is displayed. +.TP +\fB\-\-ancestors\fR +Display information about the object as well as +about all its ancestors up to the root of the topology. +.TP +\fB\-\-ancestor\fR +Only display the object ancestors that match the given type. +.TP +\fB\-\-children\fR +Display information about the object children. +.TP +\fB\-\-descendants\fR +Display information about the object descendants that match the given type. +.TP +\fB\-\-local\-memory\fR +Display information about the NUMA nodes that are local to the given object. +.TP +\fB\-\-local\-memory\-flags\fR +Change the flags used to select local NUMA nodes. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_get_local_numanode_objs()\fR. +Those names may be substrings of actual flag names as long as a single one matches. +The default is \fB3\fR (or \fBsmaller,larger\fR) +which means NUMA nodes are displayed +if their locality either contains or is contained +in the locality of the given object. + +This option enables \fB\-\-local\-memory\fR. +.TP +\fB\-\-best\-memattr\fR +Enable the listing local memory nodes with \fB\-\-local\-memory\fR, +but only display the local node that has the best value for the memory +attribute given by \fI\fR (or as an index). +If the memory attribute values depend on the initiator, the object given +to hwloc-info is used as the initiator. +.TP +\fB\-n\fR +When outputting object information, prefix each line with the index +of the considered object within the input. +For instance, if three cores were given in input, the output +lines will be prefixed with "0: ", "1: " or "2: ". +If \fB\-\-ancestor\fR is also used, the prefix will be "X.Y: " +where X is the index of the considered object within the input, +and Y is the parent index (0 for the object itself, increasing +towards the root of the topology). +.TP +\fB\-\-disallowed\fR +Include objects disallowed by administrative limitations. +.TP +\fB\-\-restrict\fR +Restrict the topology to the given cpuset. +.TP +\fB\-\-restrict\fR nodeset= +Restrict the topology to the given nodeset, unless \fB\-\-restrict\-flags\fR specifies something different. +.TP +\fB\-\-restrict\fR binding +Restrict the topology to the current process binding. +This option requires the use of the actual current machine topology +(or any other topology with \fB\-\-thissystem\fR or with +HWLOC_THISSYSTEM set to 1 in the environment). +.TP +\fB\-\-restrict\-flags\fR +Enforce flags when restricting the topology. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_topology_restrict()\fR. +Those names may be substrings of actual flag names as long as a single one matches, +for instance \fBbynodeset,memless\fR. +The default is \fB0\fR (or \fBnone\fR). +.TP +\fB\-\-filter\fR :, \fB\-\-filter\fR +Filter objects of type , or of any type if is "all". +"io", "cache" and "icache" are also supported. + + specifies the filtering behavior. +If "none" or not specified, all objects of the given type are removed. +If "all", all objects are kept as usual. +If "structure", objects are kept when they bring structure to the topology. +If "important" (only applicable to I/O and Misc), only important objects are kept. +See hwloc_topology_set_type_filter() for more details. +.TP +\fB\-\-no\-icaches\fR +Do not show Instruction caches, only Data and Unified caches are considered. +This is identical to \fB-\-filter icache:none\fR. +.TP +\fB\-\-no\-io\fB +Do not show any I/O device or bridge. +This is identical to \fB\-\-filter io:none\fR. +By default, common devices (GPUs, NICs, block devices, ...) and +interesting bridges are shown. +.TP +\fB\-\-no\-bridges\fB +Do not show any I/O bridge except hostbridges. +This is identical to \fB\-\-filter bridge:none\fR. +By default, common devices (GPUs, NICs, block devices, ...) and +interesting bridges are shown. +.TP +\fB\-\-whole\-io\fB +Show all I/O devices and bridges. +This is identical to \fB\-\-filter io:all\fR. +By default, only common devices (GPUs, NICs, block devices, ...) and +interesting bridges are shown. +.TP +\fB\-\-thissystem\fR +Assume that the selected backend provides the topology for the +system on which we are running. +This is useful when using \fB\-\-restrict\fR binding and loading +a custom topology such as an XML file. +.TP +\fB\-\-pid\fR +Detect topology as seen by process , i.e. as if process did the +discovery itself. +Note that this can for instance change the set of allowed processors. +Also show this process current CPU binding by marking the corresponding +PUs (in Green in the graphical output, see the COLORS section below, +or by appending \fI(binding)\fR to the verbose text output). +If 0 is given as pid, the current binding for the lstopo process will be shown. +.TP +\fB\-p\fR \fB\-\-physical\fR +Use OS/physical indexes instead of logical indexes for input. +.TP +\fB\-l\fR \fB\-\-logical\fR +Use logical indexes instead of physical/OS indexes for input (default). +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc-info displays information about the specified object. +It is intended to be used with tools such as grep for filtering +certain attribute lines. +When no object is specified, or when \fB\-\-topology\fR is passed, +hwloc-info prints a summary of the topology. +When \fB\-\-support\fR is passed, hwloc-info lists the supported +features for the topology. +. +.PP +Objects may be specified as location tuples, as explained in hwloc(7). +However hexadecimal bitmasks are not accepted since they may correspond +to multiple objects. +. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. Most of the concepts described in +hwloc(7) directly apply to the hwloc-calc utility. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +To display information about each package: + + $ hwloc-info package:all + Package L#0 + logical index = 0 + ... + +To display information about the core whose physical index is 2: + + $ hwloc-info -p core:2 + Core L#1 + logical index = 1 + os index = 2 + ... + +To list the NUMA nodes that are local a PU: + + $ hwloc-info --local-memory pu:25 + NUMANode L#6 = local memory #0 of PU L#25 + type = NUMANode + ... + NUMANode L#7 = local memory #1 of PU L#25 + type = NUMANode + ... + +To show the best-bandwidth node among NUMA nodes local to a PU: + + $ hwloc-info --local-memory --best-memattr bandwidth pu:25 + NUMANode L#7 = local memory #1 of PU L#25 + type = NUMANode + ... + +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-calc(1), hwloc-bind(1), hwloc-ps(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-info.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-info.c new file mode 100644 index 0000000000..28ba2f9b8c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-info.c @@ -0,0 +1,888 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include +#include +#include +#include + +#include "private/debug.h" /* for HWLOC_BUILD_ASSERT() */ +#include "misc.h" +#include "hwloc-calc.h" + +static int pid_number = -1; +static hwloc_pid_t pid; +static int verbose_mode = 0; +static int logical = 1; +static int show_ancestors = 0; +static int show_ancestor_depth = HWLOC_TYPE_DEPTH_UNKNOWN; +static int show_children = 0; +static int show_descendants_depth = HWLOC_TYPE_DEPTH_UNKNOWN; +static int show_index_prefix = 0; +static int show_local_memory = 0; +static int show_local_memory_flags = HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY | HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY; +static hwloc_memattr_id_t best_memattr_id = (hwloc_memattr_id_t) -1; +static unsigned current_obj; + +void usage(const char *name, FILE *where) +{ + fprintf (where, "Usage: %s [ options ] [ locations ]\n", name); + fprintf (where, "\nOutput options:\n"); + fprintf (where, " --objects Report information about specific objects\n"); + fprintf (where, " --topology Report information the topology\n"); + fprintf (where, " --support Report information about supported features\n"); + fprintf (where, " -v --verbose Include additional details\n"); + fprintf (where, " -s --silent Reduce the amount of details to show\n"); + fprintf (where, " --ancestors Display the chain of ancestor objects up to the root\n"); + fprintf (where, " --ancestor Only display the ancestor of the given type\n"); + fprintf (where, " --children Display all children\n"); + fprintf (where, " --descendants Only display descendants of the given type\n"); + fprintf (where, " --local-memory Only display the local memory nodes\n"); + fprintf (where, " --local-memory-flags Change flags for selecting local memory nodes\n"); + fprintf (where, " --best-memattr Only display the best target among the local nodes\n"); + fprintf (where, " -n Prefix each line with the index of the considered object\n"); + fprintf (where, "Object filtering options:\n"); + fprintf (where, " --restrict [nodeset=]\n"); + fprintf (where, " Restrict the topology to some processors or NUMA nodes.\n"); + fprintf (where, " --restrict binding Restrict the topology to the current process binding\n"); + fprintf (where, " --restrict-flags Set the flags to be used during restrict\n"); + fprintf (where, " --filter : Filter objects of the given type, or all.\n"); + fprintf (where, " may be `all' (keep all), `none' (remove all), `structure' or `important'\n"); + fprintf (where, " --no-icaches Do not show instruction caches\n"); + fprintf (where, " --no-io Do not show any I/O device or bridge\n"); + fprintf (where, " --no-bridges Do not any I/O bridge except hostbridges\n"); + fprintf (where, " --whole-io Show all I/O devices and bridges\n"); + fprintf (where, "Input options:\n"); + hwloc_utils_input_format_usage(where, 6); + fprintf (where, " --thissystem Assume that the input topology provides the topology\n" + " for the system on which we are running\n"); + fprintf (where, " --pid Detect topology as seen by process \n"); + fprintf (where, " --disallowed Include objects disallowed by administrative limitations\n"); + fprintf (where, " -l --logical Use logical object indexes for input (default)\n"); + fprintf (where, " -p --physical Use physical object indexes for input\n"); + fprintf (where, "Miscellaneous options:\n"); + fprintf (where, " --version Report version and exit\n"); + fprintf (where, " -h --help Show this usage\n"); +} + +static void +hwloc_info_show_obj(hwloc_topology_t topology, hwloc_obj_t obj, const char *type, const char *prefix, int verbose) +{ + char s[128]; + unsigned i; + if (verbose < 0) + return; + printf("%s type = %s\n", prefix, hwloc_obj_type_string(obj->type)); + printf("%s full type = %s\n", prefix, type); + if (obj->subtype) + printf("%s subtype = %s\n", prefix, obj->subtype); + printf("%s logical index = %u\n", prefix, obj->logical_index); + if (obj->os_index != (unsigned) -1) + printf("%s os index = %u\n", prefix, obj->os_index); + printf("%s gp index = %llu\n", prefix, (unsigned long long) obj->gp_index); + if (obj->name) + printf("%s name = %s\n", prefix, obj->name); + printf("%s depth = %d\n", prefix, obj->depth); + printf("%s sibling rank = %u\n", prefix, obj->sibling_rank); + printf("%s children = %u\n", prefix, obj->arity); + printf("%s memory children = %u\n", prefix, obj->memory_arity); + printf("%s i/o children = %u\n", prefix, obj->io_arity); + printf("%s misc children = %u\n", prefix, obj->misc_arity); + + if (obj->type == HWLOC_OBJ_NUMANODE) { + printf("%s local memory = %llu\n", prefix, (unsigned long long) obj->attr->numanode.local_memory); + } + if (obj->total_memory) + printf("%s total memory = %llu\n", prefix, (unsigned long long) obj->total_memory); + + if (obj->cpuset) { + hwloc_bitmap_snprintf(s, sizeof(s), obj->cpuset); + printf("%s cpuset = %s\n", prefix, s); + + hwloc_bitmap_snprintf(s, sizeof(s), obj->complete_cpuset); + printf("%s complete cpuset = %s\n", prefix, s); + + { + hwloc_bitmap_t allowed_cpuset = hwloc_bitmap_dup(obj->cpuset); + hwloc_bitmap_and(allowed_cpuset, allowed_cpuset, hwloc_topology_get_allowed_cpuset(topology)); + hwloc_bitmap_snprintf(s, sizeof(s), allowed_cpuset); + hwloc_bitmap_free(allowed_cpuset); + printf("%s allowed cpuset = %s\n", prefix, s); + } + + hwloc_bitmap_snprintf(s, sizeof(s), obj->nodeset); + printf("%s nodeset = %s\n", prefix, s); + + hwloc_bitmap_snprintf(s, sizeof(s), obj->complete_nodeset); + printf("%s complete nodeset = %s\n", prefix, s); + + { + hwloc_bitmap_t allowed_nodeset = hwloc_bitmap_dup(obj->nodeset); + hwloc_bitmap_and(allowed_nodeset, allowed_nodeset, hwloc_topology_get_allowed_nodeset(topology)); + hwloc_bitmap_snprintf(s, sizeof(s), allowed_nodeset); + hwloc_bitmap_free(allowed_nodeset); + printf("%s allowed nodeset = %s\n", prefix, s); + } + } + + switch (obj->type) { + case HWLOC_OBJ_L1CACHE: + case HWLOC_OBJ_L2CACHE: + case HWLOC_OBJ_L3CACHE: + case HWLOC_OBJ_L4CACHE: + case HWLOC_OBJ_L5CACHE: + case HWLOC_OBJ_L1ICACHE: + case HWLOC_OBJ_L2ICACHE: + case HWLOC_OBJ_L3ICACHE: + case HWLOC_OBJ_MEMCACHE: + printf("%s attr cache depth = %u\n", prefix, obj->attr->cache.depth); + switch (obj->attr->cache.type) { + case HWLOC_OBJ_CACHE_UNIFIED: printf("%s attr cache type = Unified\n", prefix); break; + case HWLOC_OBJ_CACHE_DATA: printf("%s attr cache type = Data\n", prefix); break; + case HWLOC_OBJ_CACHE_INSTRUCTION: printf("%s attr cache type = Instruction\n", prefix); break; + } + printf("%s attr cache size = %llu\n", prefix, (unsigned long long) obj->attr->cache.size); + printf("%s attr cache line size = %u\n", prefix, obj->attr->cache.linesize); + if (obj->attr->cache.associativity == -1) + printf("%s attr cache ways = Fully-associative\n", prefix); + else if (obj->attr->cache.associativity != 0) + printf("%s attr cache ways = %d\n", prefix, obj->attr->cache.associativity); + break; + case HWLOC_OBJ_GROUP: + printf("%s attr group depth = %u\n", prefix, obj->attr->group.depth); + break; + case HWLOC_OBJ_BRIDGE: + switch (obj->attr->bridge.upstream_type) { + case HWLOC_OBJ_BRIDGE_HOST: + printf("%s attr bridge upstream type = Host\n", prefix); + break; + case HWLOC_OBJ_BRIDGE_PCI: + printf("%s attr bridge upstream type = PCI\n", prefix); + printf("%s attr PCI bus id = %04x:%02x:%02x.%01x\n", + prefix, obj->attr->pcidev.domain, obj->attr->pcidev.bus, obj->attr->pcidev.dev, obj->attr->pcidev.func); + printf("%s attr PCI class = %04x\n", + prefix, obj->attr->pcidev.class_id); + printf("%s attr PCI id = %04x:%04x\n", + prefix, obj->attr->pcidev.vendor_id, obj->attr->pcidev.device_id); + if (obj->attr->pcidev.linkspeed) + printf("%s attr PCI linkspeed = %f GB/s\n", prefix, obj->attr->pcidev.linkspeed); + break; + } + switch (obj->attr->bridge.downstream_type) { + case HWLOC_OBJ_BRIDGE_HOST: + assert(0); + case HWLOC_OBJ_BRIDGE_PCI: + printf("%s attr bridge downstream type = PCI\n", prefix); + printf("%s attr PCI secondary bus = %02x\n", + prefix, obj->attr->bridge.downstream.pci.secondary_bus); + printf("%s attr PCI subordinate bus = %02x\n", + prefix, obj->attr->bridge.downstream.pci.subordinate_bus); + break; + } + break; + case HWLOC_OBJ_PCI_DEVICE: + printf("%s attr PCI bus id = %04x:%02x:%02x.%01x\n", + prefix, obj->attr->pcidev.domain, obj->attr->pcidev.bus, obj->attr->pcidev.dev, obj->attr->pcidev.func); + printf("%s attr PCI class = %04x\n", + prefix, obj->attr->pcidev.class_id); + printf("%s attr PCI id = %04x:%04x\n", + prefix, obj->attr->pcidev.vendor_id, obj->attr->pcidev.device_id); + if (obj->attr->pcidev.linkspeed) + printf("%s attr PCI linkspeed = %f GB/s\n", prefix, obj->attr->pcidev.linkspeed); + break; + case HWLOC_OBJ_OS_DEVICE: + printf("%s attr osdev type = %s\n", prefix, type); + break; + default: + /* nothing to show */ + break; + } + + printf("%s symmetric subtree = %d\n", prefix, obj->symmetric_subtree); + + for(i=0; iinfos_count; i++) { + struct hwloc_info_s *info = &obj->infos[i]; + printf("%s info %s = %s\n", prefix, info->name, info->value); + } + + if (hwloc_obj_type_is_normal(obj->type)) { + unsigned nr = hwloc_cpukinds_get_nr(topology, 0); + hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); + for(i=0; icpuset, cpuset)) + partial = 0; + else if (hwloc_bitmap_intersects(obj->cpuset, cpuset)) + partial = 1; + else + continue; + printf("%s cpukind = %u%s\n", + prefix, i, partial ? " (partially)" : ""); + if (efficiency != -1) + printf("%s cpukind efficiency = %d\n", + prefix, efficiency); + for(j=0; jtype == HWLOC_OBJ_NUMANODE) { + /* FIXME display for non-NUMA too. + * but that's rare so maybe detect in advance whether it's needed? + */ + unsigned id; + for(id=0; ; id++) { + const char *name; + unsigned long flags; + int err; + + err = hwloc_memattr_get_name(topology, id, &name); + if (err < 0) + break; + err = hwloc_memattr_get_flags(topology, id, &flags); + assert(!err); + + if (!(flags & HWLOC_MEMATTR_FLAG_NEED_INITIATOR)) { + hwloc_uint64_t value; + err = hwloc_memattr_get_value(topology, id, obj, NULL, 0, &value); + if (!err) + printf("%s memory attribute %s = %llu\n", + prefix, name, (unsigned long long) value); + } else { + unsigned nr_initiators = 0; + err = hwloc_memattr_get_initiators(topology, id, obj, 0, &nr_initiators, NULL, NULL); + if (!err) { + struct hwloc_location *initiators = malloc(nr_initiators * sizeof(*initiators)); + hwloc_uint64_t *values = malloc(nr_initiators * sizeof(*values)); + if (initiators && values) { + err = hwloc_memattr_get_initiators(topology, id, obj, 0, &nr_initiators, initiators, values); + if (!err) { + unsigned j; + for(j=0; jos_index != (unsigned)-1) + snprintf(_inits, sizeof(_inits), "%s L#%u P#%u", types, initiators[j].location.object->logical_index, initiators[j].location.object->os_index); + else + snprintf(_inits, sizeof(_inits), "%s L#%u", types, initiators[j].location.object->logical_index); + inits = _inits; + } else { + assert(0); + } + printf("%s memory attribute %s from initiator %s = %llu\n", + prefix, name, inits, (unsigned long long) values[j]); + if (inits != _inits) + free(inits); + } + } + } + free(initiators); + free(values); + } + } + } + } +} + +static void +hwloc_calc_process_location_info_cb(struct hwloc_calc_location_context_s *lcontext, + void *_data __hwloc_attribute_unused, + hwloc_obj_t obj) +{ + hwloc_topology_t topology = lcontext->topology; + int verbose = lcontext->verbose; + char prefix[32]; + char objs[128]; + + prefix[0] = '\0'; + if (show_index_prefix) + snprintf(prefix, sizeof(prefix), "%u: ", current_obj); + + hwloc_obj_type_snprintf(objs, sizeof(objs), obj, 1); + + if (show_ancestors) { + char parents[128]; + unsigned level = 0; + hwloc_obj_t parent = obj; + while (parent) { + if (show_index_prefix) + snprintf(prefix, sizeof(prefix), "%u.%u: ", current_obj, level); + hwloc_obj_type_snprintf(parents, sizeof(parents), parent, 1); + if (verbose < 0) + printf("%s%s:%u\n", prefix, parents, parent->logical_index); + else if (level) + printf("%s%s L#%u = parent #%u of %s L#%u\n", + prefix, parents, parent->logical_index, level, objs, obj->logical_index); + else + printf("%s%s L#%u\n", prefix, parents, parent->logical_index); + hwloc_info_show_obj(topology, parent, parents, prefix, verbose); + parent = parent->parent; + level++; + } + } else if (show_ancestor_depth != HWLOC_TYPE_DEPTH_UNKNOWN) { + char parents[128]; + hwloc_obj_t parent = obj; + while (parent) { + if (parent->depth == show_ancestor_depth) { + hwloc_obj_type_snprintf(parents, sizeof(parents), parent, 1); + if (verbose < 0) + printf("%s%s:%u\n", prefix, parents, parent->logical_index); + else + printf("%s%s L#%u = parent of %s L#%u\n", + prefix, parents, parent->logical_index, objs, obj->logical_index); + hwloc_info_show_obj(topology, parent, parents, prefix, verbose); + break; + } + parent = parent->parent; + } + } else if (show_children) { + unsigned i = 0; + hwloc_obj_t child = NULL; + while ((child = hwloc_get_next_child(topology, obj, child)) != NULL) { + char childs[128]; + if (show_index_prefix) + snprintf(prefix, sizeof(prefix), "%u.%u: ", current_obj, i); + hwloc_obj_type_snprintf(childs, sizeof(childs), child, 1); + if (verbose < 0) + printf("%s%s:%u\n", prefix, childs, child->logical_index); + else + printf("%s%s L#%u = child #%u of %s L#%u\n", + prefix, childs, child->logical_index, i, objs, obj->logical_index); + hwloc_info_show_obj(topology, child, childs, prefix, verbose); + i++; + } + } else if (show_descendants_depth != HWLOC_TYPE_DEPTH_UNKNOWN) { + if (show_descendants_depth >= 0) { + /* normal level */ + unsigned i = 0; + unsigned n = hwloc_calc_get_nbobjs_inside_sets_by_depth(lcontext, obj->cpuset, obj->nodeset, show_descendants_depth); + for(i=0; icpuset, obj->nodeset, show_descendants_depth, i); + char childs[128]; + if (show_index_prefix) + snprintf(prefix, sizeof(prefix), "%u.%u: ", current_obj, i); + hwloc_obj_type_snprintf(childs, sizeof(childs), child, 1); + if (verbose < 0) + printf("%s%s:%u\n", prefix, childs, child->logical_index); + else + printf("%s%s L#%u = descendant #%u of %s L#%u\n", + prefix, childs, child->logical_index, i, objs, obj->logical_index); + hwloc_info_show_obj(topology, child, childs, prefix, verbose); + } + } else { + /* custom level */ + unsigned i = 0; + hwloc_obj_t child = NULL; + while ((child = hwloc_get_next_obj_by_depth(topology, show_descendants_depth, child)) != NULL) { + char childs[128]; + hwloc_obj_t parent = child->parent; + if (obj->cpuset) { + while (parent && !parent->cpuset) + parent = parent->parent; + if (!parent) + continue; + if (!hwloc_bitmap_isincluded(parent->cpuset, obj->cpuset) + || !hwloc_bitmap_isincluded(parent->nodeset, obj->nodeset)) + continue; + } else { + while (parent && parent != obj) + parent = parent->parent; + if (!parent) + continue; + } + if (show_index_prefix) + snprintf(prefix, sizeof(prefix), "%u.%u: ", current_obj, i); + hwloc_obj_type_snprintf(childs, sizeof(childs), child, 1); + if (verbose < 0) + printf("%s%s:%u\n", prefix, childs, child->logical_index); + else + printf("%s%s L#%u = descendant #%u of %s L#%u\n", + prefix, childs, child->logical_index, i, objs, obj->logical_index); + hwloc_info_show_obj(topology, child, childs, prefix, verbose); + i++; + } + } + } else if (show_local_memory) { + unsigned nrnodes; + hwloc_obj_t *nodes; + nrnodes = hwloc_bitmap_weight(hwloc_topology_get_topology_nodeset(topology)); + nodes = malloc(nrnodes * sizeof(*nodes)); + if (nodes) { + struct hwloc_location loc; + int err; + loc.type = HWLOC_LOCATION_TYPE_OBJECT; + loc.location.object = obj; + err = hwloc_get_local_numanode_objs(topology, &loc, &nrnodes, nodes, show_local_memory_flags); + if (!err) { + unsigned i; + if (best_memattr_id != (hwloc_memattr_id_t) -1) { + /* only keep the best one for that memattr */ + int best; + + /* won't work if obj is CPU-less: perf from I/O is likely different from perf from CPU objects */ + loc.type = HWLOC_LOCATION_TYPE_CPUSET; + loc.location.cpuset = obj->cpuset; + best = hwloc_utils_get_best_node_in_array_by_memattr(topology, best_memattr_id, + nrnodes, nodes, &loc); + if (best == -1) { + /* no perf info found, report nothing */ + if (verbose > 0) + fprintf(stderr, "Failed to find a best local node for memory attribute.\n"); + nrnodes = 0; + } else { + /* only report the best node, but keep the index intact */ + for(i=0; ilogical_index); + else + printf("%s%s L#%u = local memory #%u of %s L#%u\n", + prefix, nodestr, nodes[i]->logical_index, i, objs, obj->logical_index); + hwloc_info_show_obj(topology, nodes[i], nodestr, prefix, verbose); + } + } + } else { + fprintf(stderr, "Failed to allocate array of local NUMA nodes\n"); + } + free(nodes); + } else { + if (verbose < 0) + printf("%s%s:%u\n", prefix, objs, obj->logical_index); + else + printf("%s%s L#%u\n", prefix, objs, obj->logical_index); + hwloc_info_show_obj(topology, obj, objs, prefix, verbose); + } + + current_obj++; +} + +int +main (int argc, char *argv[]) +{ + int err; + hwloc_topology_t topology; + int topodepth; + unsigned long flags = HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT; + unsigned long restrict_flags = 0; + char * callname; + char * input = NULL; + enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT; + const char *show_ancestor_type = NULL; + const char *show_descendants_type = NULL; + const char *best_memattr_str = NULL; + char *restrictstring = NULL; + size_t typelen; + int opt; + enum hwloc_info_mode { HWLOC_INFO_MODE_UNKNOWN, HWLOC_INFO_MODE_TOPOLOGY, HWLOC_INFO_MODE_OBJECTS, HWLOC_INFO_MODE_SUPPORT } mode = HWLOC_INFO_MODE_UNKNOWN; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + /* skip argv[0], handle options */ + argc--; + argv++; + + hwloc_utils_check_api_version(callname); + + /* enable verbose backends */ + if (!getenv("HWLOC_XML_VERBOSE")) + putenv((char *) "HWLOC_XML_VERBOSE=1"); + if (!getenv("HWLOC_SYNTHETIC_VERBOSE")) + putenv((char *) "HWLOC_SYNTHETIC_VERBOSE=1"); + + err = hwloc_topology_init (&topology); + if (err) + return EXIT_FAILURE; + + hwloc_topology_set_all_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_IMPORTANT); + + while (argc >= 1) { + opt = 0; + if (*argv[0] == '-') { + if (!strcmp (argv[0], "--objects")) + mode = HWLOC_INFO_MODE_OBJECTS; + else if (!strcmp (argv[0], "--topology")) + mode = HWLOC_INFO_MODE_TOPOLOGY; + else if (!strcmp (argv[0], "--support")) + mode = HWLOC_INFO_MODE_SUPPORT; + else if (!strcmp (argv[0], "-v") || !strcmp (argv[0], "--verbose")) + verbose_mode++; + else if (!strcmp (argv[0], "-s") || !strcmp (argv[0], "--silent")) + verbose_mode--; + else if (!strcmp (argv[0], "-h") || !strcmp (argv[0], "--help")) { + usage(callname, stdout); + exit(EXIT_SUCCESS); + } + else if (!strcmp (argv[0], "-n")) + show_index_prefix = 1; + else if (!strcmp (argv[0], "--ancestors")) + show_ancestors = 1; + else if (!strcmp (argv[0], "--ancestor")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + show_ancestor_type = argv[1]; + opt = 1; + } + else if (!strcmp (argv[0], "--children")) + show_children = 1; + else if (!strcmp (argv[0], "--descendants")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + show_descendants_type = argv[1]; + opt = 1; + } + else if (!strcmp (argv[0], "--local-memory")) + show_local_memory = 1; + else if (!strcmp (argv[0], "--local-memory-flags")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + show_local_memory = 1; + show_local_memory_flags = hwloc_utils_parse_local_numanode_flags(argv[1]); + opt = 1; + } + else if (!strcmp (argv[0], "--best-memattr")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + show_local_memory = 1; + best_memattr_str = argv[1]; + opt = 1; + } + else if (!strcmp (argv[0], "--filter")) { + hwloc_obj_type_t type; + char *colon; + enum hwloc_type_filter_e filter = HWLOC_TYPE_FILTER_KEEP_ALL; + int all = 0; + int allio = 0; + int allcaches = 0; + int allicaches = 0; + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + colon = strchr(argv[1], ':'); + if (colon) { + *colon = '\0'; + if (!strcmp(colon+1, "none")) + filter = HWLOC_TYPE_FILTER_KEEP_NONE; + else if (!strcmp(colon+1, "all")) + filter = HWLOC_TYPE_FILTER_KEEP_ALL; + else if (!strcmp(colon+1, "structure")) + filter = HWLOC_TYPE_FILTER_KEEP_STRUCTURE; + else if (!strcmp(colon+1, "important")) + filter = HWLOC_TYPE_FILTER_KEEP_IMPORTANT; + else { + fprintf(stderr, "Unsupported filtering kind `%s' passed to --filter.\n", colon+1); + usage (callname, stderr); + exit(EXIT_FAILURE); + } + } + if (!strcmp(argv[1], "all")) + all = 1; + else if (!strcmp(argv[1], "io")) + allio = 1; + else if (!strcmp(argv[1], "cache")) + allcaches = 1; + else if (!strcmp(argv[1], "icache")) + allicaches = 1; + else if (hwloc_type_sscanf(argv[1], &type, NULL, 0) < 0) { + fprintf(stderr, "Unsupported type `%s' passed to --filter.\n", argv[1]); + usage (callname, stderr); + exit(EXIT_FAILURE); + } + if (all) + hwloc_topology_set_all_types_filter(topology, filter); + else if (allio) + hwloc_topology_set_io_types_filter(topology, filter); + else if (allcaches) { + hwloc_topology_set_cache_types_filter(topology, filter); + hwloc_topology_set_type_filter(topology, HWLOC_OBJ_MEMCACHE, filter); + } else if (allicaches) + hwloc_topology_set_icache_types_filter(topology, filter); + else + hwloc_topology_set_type_filter(topology, type, filter); + opt = 1; + } + else if (!strcmp (argv[0], "--no-icaches")) { + hwloc_topology_set_icache_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_NONE); + } else if (!strcmp (argv[0], "--disallowed") || !strcmp (argv[0], "--whole-system")) + flags |= HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED; + else if (!strcmp (argv[0], "--no-io")) { + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_NONE); + } else if (!strcmp (argv[0], "--no-bridges")) { + hwloc_topology_set_type_filter(topology, HWLOC_OBJ_BRIDGE, HWLOC_TYPE_FILTER_KEEP_NONE); + } else if (!strcmp (argv[0], "--whole-io")) { + hwloc_topology_set_io_types_filter(topology, HWLOC_TYPE_FILTER_KEEP_ALL); + } else if (!strcmp (argv[0], "--thissystem")) + flags |= HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM; + else if (!strcmp (argv[0], "--restrict")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + if(strncmp(argv[1], "nodeset=", 8)) { + restrictstring = strdup(argv[1]); + } else { + restrictstring = strdup(argv[1]+8); + restrict_flags |= HWLOC_RESTRICT_FLAG_BYNODESET; + } + opt = 1; + } + else if (!strcmp (argv[0], "--restrict-flags")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + restrict_flags = hwloc_utils_parse_restrict_flags(argv[1]); + opt = 1; + } + + else if (hwloc_utils_lookup_input_option(argv, argc, &opt, + &input, &input_format, + callname)) { + /* we'll enable later */ + } + else if (!strcmp (argv[0], "--pid")) { + if (argc < 2) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + pid_number = atoi(argv[1]); opt = 1; + } + else if (!strcmp(argv[0], "-l") || !strcmp(argv[0], "--logical")) + logical = 1; + else if (!strcmp(argv[0], "-p") || !strcmp(argv[0], "--physical")) + logical = 0; + else if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } + else { + fprintf (stderr, "Unrecognized option: %s\n", argv[0]); + usage(callname, stderr); + return EXIT_FAILURE; + } + argc -= opt+1; + argv += opt+1; + } else { + /* not an option */ + break; + } + } + + hwloc_topology_set_flags(topology, flags); + + if (input) { + err = hwloc_utils_enable_input_format(topology, flags, input, &input_format, verbose_mode, callname); + if (err) + return err; + } + + if (pid_number > 0) { + if (hwloc_pid_from_number(&pid, pid_number, 0, 1 /* verbose */) < 0 + || hwloc_topology_set_pid(topology, pid)) { + perror("Setting target pid"); + return EXIT_FAILURE; + } + } + + err = hwloc_topology_load (topology); + if (err) { + perror("hwloc_topology_load"); + return EXIT_FAILURE; + } + + topodepth = hwloc_topology_get_depth(topology); + + if (show_ancestor_type) { + err = hwloc_type_sscanf_as_depth(show_ancestor_type, NULL, topology, &show_ancestor_depth); + if (err < 0) { + fprintf(stderr, "unrecognized --ancestor type %s\n", show_ancestor_type); + usage(callname, stderr); + return EXIT_FAILURE; + } + if (show_ancestor_depth == HWLOC_TYPE_DEPTH_UNKNOWN) { + fprintf(stderr, "unavailable --ancestor type %s\n", show_ancestor_type); + return EXIT_FAILURE; + } + if (show_ancestor_depth == HWLOC_TYPE_DEPTH_MULTIPLE) { + fprintf(stderr, "multiple --ancestor type %s\n", show_ancestor_type); + return EXIT_FAILURE; + } + } + if (show_descendants_type) { + err = hwloc_type_sscanf_as_depth(show_descendants_type, NULL, topology, &show_descendants_depth); + if (err < 0) { + fprintf(stderr, "unrecognized --descendants type %s\n", show_descendants_type); + usage(callname, stderr); + return EXIT_FAILURE; + } + if (show_descendants_depth == HWLOC_TYPE_DEPTH_UNKNOWN) { + fprintf(stderr, "unavailable --descendants type %s\n", show_descendants_type); + return EXIT_FAILURE; + } + if (show_descendants_depth == HWLOC_TYPE_DEPTH_MULTIPLE) { + fprintf(stderr, "multiple --descendants type %s\n", show_descendants_type); + return EXIT_FAILURE; + } + } + + if (restrictstring) { + hwloc_bitmap_t restrictset = hwloc_bitmap_alloc(); + if (!strcmp (restrictstring, "binding")) { + if (pid_number > 0) + hwloc_get_proc_cpubind(topology, pid, restrictset, HWLOC_CPUBIND_PROCESS); + else + hwloc_get_cpubind(topology, restrictset, HWLOC_CPUBIND_PROCESS); + } else { + hwloc_bitmap_sscanf(restrictset, restrictstring); + } + err = hwloc_topology_restrict (topology, restrictset, restrict_flags); + if (err) { + perror("Restricting the topology"); + /* FALLTHRU */ + } + hwloc_bitmap_free(restrictset); + free(restrictstring); + } + + if (best_memattr_str) { + if (!show_local_memory) + fprintf(stderr, "--best-memattr is ignored without --local-memory.\n"); + best_memattr_id = hwloc_utils_parse_memattr_name(topology, best_memattr_str); + if (best_memattr_id == (hwloc_memattr_id_t) -1) { + fprintf(stderr, "unrecognized memattr %s\n", best_memattr_str); + return EXIT_FAILURE; + } + } + + if (mode == HWLOC_INFO_MODE_UNKNOWN) { + if (argc) + mode = HWLOC_INFO_MODE_OBJECTS; + else + mode = HWLOC_INFO_MODE_TOPOLOGY; + } + + if (mode == HWLOC_INFO_MODE_TOPOLOGY) { + hwloc_lstopo_show_summary(stdout, topology); + + } else if (mode == HWLOC_INFO_MODE_SUPPORT) { + const struct hwloc_topology_support *support = hwloc_topology_get_support(topology); + +#ifdef HWLOC_DEBUG + HWLOC_BUILD_ASSERT(sizeof(struct hwloc_topology_support) == 4*sizeof(void*)); + HWLOC_BUILD_ASSERT(sizeof(struct hwloc_topology_discovery_support) == 6); + HWLOC_BUILD_ASSERT(sizeof(struct hwloc_topology_cpubind_support) == 11); + HWLOC_BUILD_ASSERT(sizeof(struct hwloc_topology_membind_support) == 15); + HWLOC_BUILD_ASSERT(sizeof(struct hwloc_topology_misc_support) == 1); +#endif + +#define DO(x,y) printf(#x ":" #y " = %u\n", (unsigned char) support->x->y); + DO(discovery, pu); + DO(discovery, disallowed_pu); + DO(discovery, numa); + DO(discovery, numa_memory); + DO(discovery, disallowed_numa); + DO(discovery, cpukind_efficiency); + + DO(cpubind, set_thisproc_cpubind); + DO(cpubind, get_thisproc_cpubind); + DO(cpubind, set_proc_cpubind); + DO(cpubind, get_proc_cpubind); + DO(cpubind, set_thisthread_cpubind); + DO(cpubind, get_thisthread_cpubind); + DO(cpubind, set_thread_cpubind); + DO(cpubind, get_thread_cpubind); + DO(cpubind, get_thisproc_last_cpu_location); + DO(cpubind, get_proc_last_cpu_location); + DO(cpubind, get_thisthread_last_cpu_location); + + DO(membind, set_thisproc_membind); + DO(membind, get_thisproc_membind); + DO(membind, set_proc_membind); + DO(membind, get_proc_membind); + DO(membind, set_thisthread_membind); + DO(membind, get_thisthread_membind); + DO(membind, set_area_membind); + DO(membind, get_area_membind); + DO(membind, alloc_membind); + DO(membind, firsttouch_membind); + DO(membind, bind_membind); + DO(membind, interleave_membind); + DO(membind, nexttouch_membind); + DO(membind, migrate_membind); + DO(membind, get_area_memlocation); + + DO(misc, imported_support); +#undef DO + + } else if (mode == HWLOC_INFO_MODE_OBJECTS) { + struct hwloc_calc_location_context_s lcontext; + lcontext.topology = topology; + lcontext.topodepth = topodepth; + lcontext.only_hbm = -1; + lcontext.logical = logical; + lcontext.verbose = verbose_mode; + current_obj = 0; + while (argc >= 1) { + if (!strcmp(argv[0], "all") || !strcmp(argv[0], "root")) { + hwloc_calc_process_location_info_cb(&lcontext, NULL, hwloc_get_root_obj(topology)); + } else if (*argv[0] == '-') { + fprintf(stderr, "Cannot handle command-line option %s after some locations.\n", argv[0]); + return EXIT_FAILURE; + } else { + /* try to match a type/depth followed by a special character */ + typelen = strspn(argv[0], "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + if (typelen && (argv[0][typelen] == ':' || argv[0][typelen] == '=' || argv[0][typelen] == '[')) { + err = hwloc_calc_process_location(&lcontext, argv[0], typelen, + hwloc_calc_process_location_info_cb, NULL); + } + } + argc--; argv++; + } + + } else assert(0); + + hwloc_topology_destroy (topology); + + return EXIT_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-patch.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-patch.1in new file mode 100644 index 0000000000..e56587cada --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-patch.1in @@ -0,0 +1,123 @@ +.\" -*- nroff -*- +.\" Copyright © 2013-2018 Inria. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-PATCH "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-patch \- Apply a topology difference to an existing XML topology +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.PP +.B hwloc-patch +[\fIoptions\fR] +\fI[ | refname]\fR +\fI[ | -]\fR +\fI\fR +.PP +.B hwloc-patch +[\fIoptions\fR] +\fI[ | refname]\fR +\fI[ | -]\fR +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP 10 +\fB\-R \-\-reverse\fR +Reverse the sense the difference file. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc-patch loads the difference between two topologies from a XML file +(or from the standard input) and applies it to an +existing topology, generating a new, modified one. +. +.PP +The XML difference may have been computed earlier with hwloc-diff +or hwloc-compress-dir. +. +.PP +If is given, the new, modified topology is stored in that +new file. Otherwise, is modified in place. +. +.PP +If \fBrefname\fR is given instead of , the input topology filename +is automatically guessed by reading the refname field of the XML diff file. +By default hwloc-diff generates XML diffs with the right reference topology +filename (without any path prefix). +. +.PP +If \fB-\fR is given instead of , the topology difference is read from +the standard input. +. +.PP +.B NOTE: +If some application-specific userdata were been exported to the input XMLs, +they will be ignored and discarded from the output because hwloc has no way +to understand and patch them. +. +.PP +.B NOTE: +It is highly recommended that you read the hwloc(7) overview page +before reading this man page. Most of the concepts described in +hwloc(7) directly apply to the hwloc-patch utility. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +hwloc-patch's operation is best described through several examples. +. +.PP +Apply a XML topology difference file to an existing topology: + + $ hwloc-patch fourmi023.xml diff.xml fourmi023-new.xml + +Apply a XML topology difference file whole refname field contains the right input topology: + + $ hwloc-patch refname diff.xml fourmi023-new.xml + +Apply a XML topology from the standard intput: + + $ cat diff.xml | hwloc-patch fourmi023.xml - fourmi023-new.xml + +Directly compute the difference between two topologies and apply it +to another one, in place: + + $ hwloc-diff fourmi023.xml fourmi024.xml | hwloc-patch fourmi025.xml - + +. +.\" ************************** +.\" Return value section +.\" ************************** +.SH RETURN VALUE +Upon successful execution, hwloc-patch outputs the modified topology. +The return value is 0. +. +.PP +hwloc-patch also returns nonzero if any kind of error occurs, such as +(but not limited to) failure to parse the command line. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-diff(1), hwloc-compress-dir(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-patch.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-patch.c new file mode 100644 index 0000000000..bf19965ec2 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-patch.c @@ -0,0 +1,183 @@ +/* + * Copyright © 2013-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "hwloc/diff.h" +#include "misc.h" + +void usage(const char *callname __hwloc_attribute_unused, FILE *where) +{ + fprintf(where, "Usage: hwloc-patch [options] [ | refname] [ | -] []\n"); + fprintf(where, "Options:\n"); + fprintf(where, " -R --reverse Reverse the sense of the difference\n"); + fprintf(where, " --version Report version and exit\n"); + fprintf(where, " -h --help Show this usage\n"); +} + +static int hwloc_diff_read(const char *inputdiff, + hwloc_topology_diff_t *firstdiffp, char **refnamep) +{ + size_t buflen, offset, readlen; + char *buffer, *tmp; + size_t ret; + int err; + + if (strcmp(inputdiff, "-")) + return hwloc_topology_diff_load_xml(inputdiff, firstdiffp, refnamep); + + buflen = 4096; + buffer = malloc(buflen+1); /* one more byte for the ending \0 */ + if (!buffer) + goto out; + + offset = 0; readlen = buflen; + while (1) { + ret = fread(buffer+offset, 1, readlen, stdin); + + offset += ret; + buffer[offset] = 0; + + if (ret != readlen) + break; + + buflen *= 2; + tmp = realloc(buffer, buflen+1); + if (!tmp) { + fprintf(stderr, "Failed to realloc buffer for reading diff.\n"); + goto out_with_buffer; + } + buffer = tmp; + readlen = buflen/2; + } + + err = hwloc_topology_diff_load_xmlbuffer(buffer, (int)(offset+1), firstdiffp, refnamep); + free(buffer); + return err; + +out_with_buffer: + free(buffer); +out: + return -1; +} + +int main(int argc, char *argv[]) +{ + hwloc_topology_t topo; + hwloc_topology_diff_t firstdiff = NULL; + unsigned long flags = HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED | HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT; + unsigned long patchflags = 0; + char *callname, *input, *inputdiff, *output = NULL, *refname = NULL; + int err; + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + + /* skip argv[0], handle options */ + argc--; + argv++; + + hwloc_utils_check_api_version(callname); + + if (!getenv("HWLOC_XML_VERBOSE")) + putenv((char *) "HWLOC_XML_VERBOSE=1"); + + while (argc && *argv[0] == '-') { + if (!strcmp (argv[0], "-R") || !strcmp (argv[0], "--reverse")) { + patchflags ^= HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE; + } else if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + } else if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help")) { + usage(callname, stdout); + exit(EXIT_SUCCESS); + } else { + fprintf(stderr, "Unrecognized options: %s\n", argv[0]); + usage(callname, stderr); + exit(EXIT_FAILURE); + } + argc--; + argv++; + } + + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + input = argv[0]; + inputdiff = argv[1]; + argc -= 2; + argv += 2; + if (argc >= 1) { + output = argv[0]; + argc--; + argv++; + } + + /* load the diff and get the refname */ + err = hwloc_diff_read(inputdiff, &firstdiff, &refname); + if (err < 0) { + fprintf(stderr, "Failed to load XML topology diff %s\n", inputdiff); + goto out; + } + + /* load the input topology */ + hwloc_topology_init(&topo); + hwloc_topology_set_all_types_filter(topo, HWLOC_TYPE_FILTER_KEEP_ALL); + hwloc_topology_set_flags(topo, flags); + if (!strcmp(input, "refname")) { + /* use the diff refname as input */ + if (!refname) { + fprintf(stderr, "Couldn't find the reference topology name from the input diff %s\n", inputdiff); + goto out_with_topo; + } + err = hwloc_topology_set_xml(topo, refname); + if (err < 0) { + fprintf(stderr, "Failed to load XML topology %s (from input diff %s refname)\n", refname, inputdiff); + goto out_with_topo; + } + } else { + /* use the given input */ + err = hwloc_topology_set_xml(topo, input); + if (err < 0) { + fprintf(stderr, "Failed to load XML topology %s\n", input); + goto out_with_topo; + } + } + + err = hwloc_topology_load(topo); + if (err < 0) { + fprintf(stderr, "Failed to load topology\n"); + goto out_with_topo; + } + + err = hwloc_topology_diff_apply(topo, firstdiff, patchflags); + if (err < 0) { + fprintf(stderr, "Failed to%s apply topology diff %s, failed for hunk #%d hunk\n", + (patchflags & HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE) ? " reverse" : "", + inputdiff, -err); + goto out_with_topo; + } + + err = hwloc_topology_export_xml(topo, output ? output : input, 0); + if (err < 0) { + fprintf(stderr, "Failed to export patched topology %s\n", output); + goto out_with_topo; + } + + hwloc_topology_destroy(topo); + hwloc_topology_diff_destroy(firstdiff); + + exit(EXIT_SUCCESS); + +out_with_topo: + hwloc_topology_destroy(topo); + hwloc_topology_diff_destroy(firstdiff); +out: + exit(EXIT_FAILURE); +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.1in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.1in new file mode 100644 index 0000000000..dde0a62fbf --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.1in @@ -0,0 +1,216 @@ +.\" -*- nroff -*- +.\" Copyright © 2010-2021 Inria. All rights reserved. +.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC-PS "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc-ps \- List currently-running processes or threads that are bound +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.B hwloc-ps +[\fIoptions\fR] +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP 10 +\fB\-a\fR +List all processes, even those that are not bound to any +specific part of the machine. +.TP +\fB\-\-pid \fR +Only show process of PID \fI\fR, +even if it is not bound to any specific part of the machine. +.TP +\fB\-\-name \fR +Only show processes whose name contains \fI\fR, +even if they are not bound to any specific part of the machine. +This is not supported on all operating systems. +.TP +\fB\-\-uid \fR +Only show processes of the user whose UID is \fI\fR, +or processes of all users if \fIall\fR is given. +By default, only processes of the current user are displayed. +This is currently only supported on Linux. +.TP +\fB\-p\fR \fB\-\-physical\fR +Report OS/physical indexes instead of logical indexes +.TP +\fB\-l\fR \fB\-\-logical\fR +Report logical indexes instead of physical/OS indexes (default) +.TP +\fB\-c\fR \fB\-\-cpuset\fR +Show process bindings as cpusets instead of objects. +.TP +\fB\-t\fR \fB\-\-threads\fR +Show threads inside processes. +If \fB\-a\fR is given as well, list all threads within each process. +Otherwise, show all threads inside each process where at least one +thread is bound. +This is currently only supported on Linux. +.TP +\fB\-\-single\-ancestor\fR +When the object is bound to different objects, +report their common ancestor (even if it may be larger than the actual binding). +.TP +\fB\-e\fR \fB\-\-get\-last\-cpu\-location\fR +Report the last processors where the process/thread ran. +Note that the result may already be outdated when reported +since the operating system may move the tasks to other processors +at any time according to the binding. +.TP +\fB\-\-disallowed\fR +Include objects disallowed by administrative limitations. +.TP +\fB\-\-pid\-cmd \fR +Append the output of the given command to each PID line. +For each displayed process ID, execute the command \fI \fR +and append \fBthe first line\fR of its output to the regular hwloc-ps +line. +.TP +\fB\-\-pid\-cmd env=\fR +On Linux, try to read the value of environment variable \fIname\fR +in each process and display it at the end of the line. +.TP +\fB\-\-pid\-cmd mpirank\fR +On Linux, try to find the process MPI rank (by querying some widespread +environment variables) and display it at the end of the line. + +.TP +\fB\-\-json\-server\fR +Run the tool as a JSON server that waits for other process' requests +on a port and sends back binding information. +See contrib/hwloc-ps.www/ for details. +.TP +\fB\-\-json\-port \fR +Use the given port number instead of the default 8888. +.TP +\fB\-v\fR \fB\-\-verbose\fR +Increase verbosity of the JSON server. +.TP +\fB\-\-short\-name\fR +Show only the process short name instead of the path. +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +By default, hwloc-ps lists only those currently-running processes that +are bound. If \fB-t\fR is given, processes that are not bound but contain +at least one bound thread are also displayed, as well as all their threads. +. +.PP +hwloc-ps displays process identifier, command-line and +binding. The binding may be reported as objects or cpusets. +. +.PP +By default, process bindings are restricted to the currently available +topology. If some processes are bound to processors that are not available +to the current process, they are ignored unless \fB\-\-disallowed\fR +is given. +. +.PP +The output is a plain list. If you wish to annotate the hierarchical +topology with processes so as to see how they are actual distributed +on the machine, you might want to use lstopo --ps instead (which also +only shows processes that are bound). +. +.PP +The +.I -a +switch can be used to show +.I all +processes, if desired. +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +.PP +If a process is bound, it appears in the default output: + + $ hwloc-ps + 4759 Core:0 myprogram + +If a process is bound on two cores of a larger package, +the output will show these cores. +Option \-\-single\-ancestor will rather return the package +even if it is actually larger than the binding here +(the process is not bound to Core:0 of Package:0): + + $ hwloc-ps + 4863 Core:1 Core:2 myprogram + $ hwloc-ps --single-ancestor + 4863 Package:0 myprogram + +If a process is not bound but 3 of his 4 threads are bound, +it only appears in the thread-aware output (or if explicitly selected): + + $ hwloc-ps + + $ hwloc-ps -t + 4759 Machine:0 myprogram + 4759 Machine:0 + 4761 PU:0 + 4762 PU:2 + 4765 PU:1 + + $ hwloc-ps --pid 4759 + 4759 Machine:0 myprogram + +On Linux, hwloc-ps may also display some process specific environment +variable at the end of the line. This is for instance useful +for identify MPI ranks among processes: + + $ hwloc-ps --pid-cmd env=OMPI_COMM_WORLD_RANK + 29093 PU:0 myprogram OMPI_COMM_WORLD_RANK=0 + 29094 PU:2 myprogram OMPI_COMM_WORLD_RANK=1 + 29095 PU:1 myprogram OMPI_COMM_WORLD_RANK=2 + 29096 PU:3 myprogram OMPI_COMM_WORLD_RANK=3 + +Some widespread MPI specific environment variables +(OMPI_COMM_WORLD_RANK, PMIX_RANK, PMI_RANK and SLURM_PROCID) +are actually directly recognized by hwloc-ps when requesting the \fImpirank\fR command: + + $ hwloc-ps --pid-cmd mpirank + 29093 PU:0 myprogram PMIX_RANK=0 + 29094 PU:2 myprogram PMIX_RANK=1 + 29095 PU:1 myprogram PMIX_RANK=2 + 29096 PU:3 myprogram PMIX_RANK=3 + +Beside reading environment variables, hwloc-ps may also append +the output of a custom program. Again, for reading the Open MPI +process rank: + + $ hwloc-ps --pid-cmd myscript + 29093 PU:0 myprogram OMPI_COMM_WORLD_RANK=0 + 29094 PU:2 myprogram OMPI_COMM_WORLD_RANK=1 + 29095 PU:1 myprogram OMPI_COMM_WORLD_RANK=2 + 29096 PU:3 myprogram OMPI_COMM_WORLD_RANK=3 + +where \fBmyscript\fR is a shell script doing: + + #!/bin/sh + cat /proc/$1/environ 2>/dev/null | xargs --null --max-args=1 echo | grep OMPI_COMM_WORLD_RANK + +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), lstopo(1), hwloc-calc(1), hwloc-distrib(1), and hwloc-ps.www/README +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.c b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.c new file mode 100644 index 0000000000..3de5733861 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc-ps.c @@ -0,0 +1,526 @@ +/* + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include +#include +#ifdef HAVE_DIRENT_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include "common-ps.h" +#include "misc.h" + +#define JSON_PORT 8888 + +static int show_all = 0; +static int show_threads = 0; +static char *only_name = NULL; +static int show_cpuset = 0; +static int logical = 1; +static int single_ancestor = 0; +#define NO_ONLY_PID -1 +static long only_pid = NO_ONLY_PID; +static long only_uid; +static int json_server = 0; +static int json_port = JSON_PORT; +static FILE *json_output = NULL; +static int verbose = 0; + +void usage(const char *name, FILE *where) +{ + fprintf (where, "Usage: %s [ options ] ...\n", name); + fprintf (where, "Options:\n"); + fprintf (where, " -a Show all processes, including those that are not bound\n"); + fprintf (where, " --pid Only show process of pid number \n"); + fprintf (where, " --name Only show processes whose name contains \n"); +#ifdef HWLOC_LINUX_SYS + fprintf (where, " --uid Only show processes of the user with the given uid\n"); + fprintf (where, " --uid all Show processes of all users\n"); +#endif + fprintf (where, " -l --logical Use logical object indexes (default)\n"); + fprintf (where, " -p --physical Use physical object indexes\n"); + fprintf (where, " -c --cpuset Show cpuset instead of objects\n"); + fprintf (where, " --single-ancestor Show a single ancestor containing the binding\n"); +#ifdef HWLOC_LINUX_SYS + fprintf (where, " -t --threads Show threads\n"); +#endif + fprintf (where, " -e --get-last-cpu-location\n"); + fprintf (where, " Retrieve the last processors where the tasks ran\n"); + fprintf (where, " --pid-cmd Append the output of to each PID line\n"); + fprintf (where, " --short-name Show only the process short name instead of the path\n"); + fprintf (where, " --disallowed Include objects disallowed by administrative limitations\n"); + fprintf (where, " --json-server Run as a JSON server\n"); + fprintf (where, " --json-port Use port for JSON server (default is %d)\n", JSON_PORT); + fprintf (where, " -v --verbose Increase verbosity\n"); + fprintf (where, " --version Report version and exit\n"); + fprintf (where, " -h --help Show this usage\n"); +} + +static void print_task(hwloc_topology_t topology, + long pid, const char *name, hwloc_bitmap_t cpuset, + char *pidoutput, + int thread) +{ + printf("%s%ld\t", thread ? " " : "", pid); + + if (show_cpuset) { + char *cpuset_str = NULL; + hwloc_bitmap_asprintf(&cpuset_str, cpuset); + printf("%s", cpuset_str); + free(cpuset_str); + } else { + hwloc_bitmap_t remaining = hwloc_bitmap_dup(cpuset); + int first = 1; + char type[64]; + unsigned idx; + if (single_ancestor) { + hwloc_obj_t obj = hwloc_get_obj_covering_cpuset(topology, cpuset); + while (obj->parent && hwloc_bitmap_isequal(obj->cpuset, obj->parent->cpuset) && !hwloc_obj_type_is_cache(obj->parent->type) ) + obj = obj->parent; + + hwloc_obj_type_snprintf(type, sizeof(type), obj, 1); + idx = logical ? obj->logical_index : obj->os_index; + if (idx == (unsigned) -1) + printf("%s", type); + else + printf("%s:%u", type, idx); + } else { + while (!hwloc_bitmap_iszero(remaining)) { + hwloc_obj_t obj = hwloc_get_first_largest_obj_inside_cpuset(topology, remaining); + /* don't show a cache if there's something equivalent and nicer */ + while (hwloc_obj_type_is_cache(obj->type) && obj->arity == 1) + obj = obj->first_child; + hwloc_obj_type_snprintf(type, sizeof(type), obj, 1); + idx = logical ? obj->logical_index : obj->os_index; + if (idx == (unsigned) -1) + printf("%s%s", first ? "" : " ", type); + else + printf("%s%s:%u", first ? "" : " ", type, idx); + hwloc_bitmap_andnot(remaining, remaining, obj->cpuset); + first = 0; + } + } + hwloc_bitmap_free(remaining); + } + + printf("\t\t%s%s%s\n", name, pidoutput ? "\t" : "", pidoutput ? pidoutput : ""); +} + +static void print_process(hwloc_topology_t topology, + struct hwloc_ps_process *proc) +{ + unsigned i; + + print_task(topology, proc->pid, proc->name, proc->cpuset, proc->string[0] == '\0' ? NULL : proc->string, 0); + if (proc->nthreads) + for(i=0; inthreads; i++) + if (proc->threads[i].cpuset) + print_task(topology, proc->threads[i].tid, proc->threads[i].name, proc->threads[i].cpuset, NULL, 1); +} + +static void print_process_json(hwloc_topology_t topology, + struct hwloc_ps_process *proc) +{ + hwloc_obj_t obj; + char type[64]; + + assert(json_output); + + if (verbose > 1) + printf(" sending process PID %ld name %s\n", proc->pid, proc->name); + + /* process */ + obj = hwloc_get_obj_covering_cpuset(topology, proc->cpuset); + while (obj->parent && hwloc_bitmap_isequal(obj->cpuset, obj->parent->cpuset)) + obj = obj->parent; + hwloc_obj_type_snprintf(type, sizeof(type), obj, 0); + fprintf(json_output, + "{\n" + " \"PID\": %ld,\n" + " \"name\": \"%s\",\n" + " \"object\": \"%s:%u\"%s\n", + proc->pid, + proc->name, + type, obj->logical_index, + proc->nthreads ? "," : ""); + + /* threads */ + if (proc->nthreads) { + unsigned i; + fprintf(json_output, " \"threads\": [\n"); + for(i=0; inthreads; i++) { + struct hwloc_ps_thread *thread = &proc->threads[i]; + if (thread->cpuset) { + obj = hwloc_get_obj_covering_cpuset(topology, thread->cpuset); + while (obj->parent && hwloc_bitmap_isequal(obj->cpuset, obj->parent->cpuset)) + obj = obj->parent; + hwloc_obj_type_snprintf(type, sizeof(type), obj, 0); + + fprintf(json_output, + " {\n" + " \"PID\": %ld,\n" + " \"name\": \"%s\",\n" + " \"object\": \"%s:%u\"\n" + " }%s\n", + thread->tid, + thread->name, + type, obj->logical_index, + i < proc->nthreads-1 ? "," : ""); + } + } + fprintf(json_output, " ]\n"); + } + + /* close the process */ + fprintf(json_output, "},\n"); +} + +static void foreach_process_cb(hwloc_topology_t topology, + struct hwloc_ps_process *proc, + void *cbdata) +{ + const char *pidcmd = cbdata; + + /* don't print anything if the process isn't bound and if no threads are bound and if not showing all */ + if (!proc->bound && (!proc->nthreads || !proc->nboundthreads) && !show_all && !only_name) + return; + + if (pidcmd) + hwloc_ps_pidcmd(proc, pidcmd); + + if (json_output) + print_process_json(topology, proc); + else + print_process(topology, proc); +} + +static int run(hwloc_topology_t topology, hwloc_const_bitmap_t topocpuset, + unsigned long psflags, char *pidcmd) +{ + if (only_pid == NO_ONLY_PID) { + /* show all */ + return hwloc_ps_foreach_process(topology, topocpuset, foreach_process_cb, pidcmd, psflags, only_name, only_uid); + + } else { + /* show only one */ + struct hwloc_ps_process proc; + int ret; + + proc.pid = only_pid; + proc.uid = only_uid; + proc.cpuset = NULL; + proc.nthreads = 0; + proc.nboundthreads = 0; + proc.threads = NULL; + ret = hwloc_ps_read_process(topology, topocpuset, &proc, psflags); + if (ret >= 0) { + + if (pidcmd) + hwloc_ps_pidcmd(&proc, pidcmd); + + if (json_output) + print_process_json(topology, &proc); + else + print_process(topology, &proc); + } + hwloc_ps_free_process(&proc); + return ret; + } +} + +#define JSON_REQLENMAX 100 + +static int +run_json_server(hwloc_topology_t topology, hwloc_const_bitmap_t topocpuset) +{ + int server_socket; + struct sockaddr_in server_addr; + int err; + + /* open the socket */ + server_socket = socket(AF_INET, SOCK_STREAM, 0); + if (server_socket < 0) { + perror("json-server: socket"); + return -1; + } + + /* bind it to port */ + server_addr.sin_family = AF_INET; + server_addr.sin_addr.s_addr = INADDR_ANY; + server_addr.sin_port = htons(json_port); + err = bind(server_socket, (struct sockaddr *)&server_addr , sizeof server_addr); + if (err < 0) { + perror("json-server: bind"); + close(server_socket); + return -1; + } + + /* listen to connections, up to 1 awaiting */ + err = listen(server_socket, 1); + if (err < 0) { + perror("json-server: listen"); + close(server_socket); + return -1; + } + + printf("server running on port %d...\n", json_port); + + while (1) { + int client_socket; + int ret; + + /* wait for a new client connection */ + client_socket = accept(server_socket, NULL, NULL); + if (client_socket < 0) { + perror("json-server: accept"); + continue; + } + printf("client connected\n"); + json_output = fdopen(client_socket, "r+"); + if (!json_output) { + perror("json-server: fdopen"); + close(client_socket); + continue; + } + + while (1) { + char req[JSON_REQLENMAX+1]; + char *end, *current; + unsigned long psflags = HWLOC_PS_FLAG_SHORTNAME; + + /* read the client request */ + ret = read(client_socket, req, sizeof(req)-1); + if (ret <= 0) + break; + req[ret] = '\0'; + end = strchr(req, '\n'); + if (end) + *end = '\0'; + + if (verbose > 0) + printf(" received request `%s'\n", req); + + only_name = NULL; + only_pid = NO_ONLY_PID; + current = req; + while (*current) { + if (!strncmp(current, "lastcpulocation ", 16)) { + psflags |= HWLOC_PS_FLAG_LASTCPULOCATION; + current += 16; + continue; + } else if (!strncmp(current, "threads ", 8)) { + psflags |= HWLOC_PS_FLAG_THREADS; + current += 8; + continue; + } else if (!strcmp(current, "all")) { + show_all = 1; + break; + } else if (!strcmp(current, "bound")) { + show_all = 0; + break; + } else if (!strncmp(current, "pid=", 4)) { + only_pid = atoi(current+4); + psflags |= HWLOC_PS_FLAG_THREADS; + show_all = 1; + break; + } else if (!strncmp(current, "name=", 5)) { + only_name = current+5; + show_all = 1; + break; + } + } + + fprintf(json_output, "[ "); + run(topology, topocpuset, psflags, NULL); + fprintf(json_output, "{ } ]\n"); + fflush(json_output); + } + + if (ret == 0) { + printf("disconnected\n"); + } else if (ret < -1) { + perror("json-server: read"); + } + fclose(json_output); + json_output = NULL; + close(client_socket); + } + + close(server_socket); + return 0; +} + +int main(int argc, char *argv[]) +{ + const struct hwloc_topology_support *support; + hwloc_topology_t topology; + hwloc_const_bitmap_t topocpuset; + unsigned long flags = 0; + unsigned long psflags = 0; + int get_last_cpu_location = 0; + char *pidcmd = NULL; + char *callname; + int err; + int opt; + + only_uid = getuid(); + + callname = strrchr(argv[0], '/'); + if (!callname) + callname = argv[0]; + else + callname++; + /* skip argv[0], handle options */ + argc--; + argv++; + + hwloc_utils_check_api_version(callname); + + while (argc >= 1) { + opt = 0; + if (!strcmp(argv[0], "-a")) + show_all = 1; + else if (!strcmp(argv[0], "-l") || !strcmp(argv[0], "--logical")) { + logical = 1; + } else if (!strcmp(argv[0], "-p") || !strcmp(argv[0], "--physical")) { + logical = 0; + } else if (!strcmp(argv[0], "-c") || !strcmp(argv[0], "--cpuset")) { + show_cpuset = 1; + } else if (!strcmp(argv[0], "-e") || !strncmp(argv[0], "--get-last-cpu-location", 10)) { + get_last_cpu_location = 1; + } else if (!strcmp(argv[0], "-t") || !strcmp(argv[0], "--threads")) { +#ifdef HWLOC_LINUX_SYS + show_threads = 1; +#else + fprintf (stderr, "Listing threads is currently only supported on Linux\n"); +#endif + } else if (!strcmp(argv[0], "--single-ancestor")) { + single_ancestor = 1; + } else if (!strcmp(argv[0], "--pid")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + only_pid = strtol(argv[1], NULL, 10); + opt = 1; + } else if (!strcmp(argv[0], "--name")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + only_name = argv[1]; + opt = 1; + } else if (!strcmp(argv[0], "--uid")) { +#ifdef HWLOC_LINUX_SYS + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + if (!strcmp(argv[1], "all")) + only_uid = HWLOC_PS_ALL_UIDS; + else + only_uid = atoi(argv[1]); + opt = 1; +#else + fprintf (stderr, "Filtering by UID is currently only supported on Linux\n"); +#endif + } else if (!strcmp (argv[0], "--disallowed") || !strcmp (argv[0], "--whole-system")) { + flags |= HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED; + } else if (!strcmp (argv[0], "--pid-cmd")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + pidcmd = argv[1]; + opt = 1; + + } else if (!strcmp (argv[0], "--json-server")) { + json_server = 1; + } else if (!strcmp (argv[0], "--json-port")) { + if (argc < 2) { + usage(callname, stderr); + exit(EXIT_FAILURE); + } + json_port = atoi(argv[1]); + opt = 1; + + } else if (!strcmp(argv[0], "-v") || !strcmp(argv[0], "--verbose")) { + verbose++; + + } else if (!strcmp (argv[0], "--short-name")) { + psflags |= HWLOC_PS_FLAG_SHORTNAME; + + } else if (!strcmp (argv[0], "--version")) { + printf("%s %s\n", callname, HWLOC_VERSION); + exit(EXIT_SUCCESS); + + } else if (!strcmp (argv[0], "-h") || !strcmp (argv[0], "--help")) { + usage (callname, stderr); + exit(EXIT_SUCCESS); + } else { + fprintf (stderr, "Unrecognized option: %s\n", argv[0]); + usage (callname, stderr); + exit(EXIT_FAILURE); + } + argc -= opt+1; + argv += opt+1; + } + + err = hwloc_topology_init(&topology); + if (err) + goto out; + + hwloc_topology_set_flags(topology, flags); + + err = hwloc_topology_load(topology); + if (err) + goto out_with_topology; + + support = hwloc_topology_get_support(topology); + + if (get_last_cpu_location) { + if (!support->cpubind->get_proc_last_cpu_location) + goto out_with_topology; + } else { + if (!support->cpubind->get_proc_cpubind) + goto out_with_topology; + } + + topocpuset = hwloc_topology_get_topology_cpuset(topology); + + if (show_threads) + psflags |= HWLOC_PS_FLAG_THREADS; + if (get_last_cpu_location) + psflags |= HWLOC_PS_FLAG_LASTCPULOCATION; + if (only_uid != HWLOC_PS_ALL_UIDS) + psflags |= HWLOC_PS_FLAG_UID; + + if (json_server) { + run_json_server(topology, topocpuset); + } else { + if (run(topology, topocpuset, psflags, pidcmd)) + goto out_with_topology; + } + + err = 0; + + out_with_topology: + hwloc_topology_destroy(topology); + out: + return err; +} diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc.7in b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc.7in new file mode 100644 index 0000000000..16a29927c6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/hwloc.7in @@ -0,0 +1,359 @@ +.\" -*- nroff -*- +.\" Copyright © 2010-2020 Inria. All rights reserved. +.\" Copyright © 2010 Université of Bordeaux +.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. +.\" See COPYING in top-level directory. +.TH HWLOC "7" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +hwloc - General information about hwloc ("hardware locality"). +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +hwloc provides command line tools and a C API to obtain the +hierarchical map of key computing elements, such as: NUMA memory +nodes, shared caches, processor packages, processor cores, and +processor "threads". hwloc also gathers various attributes such as +cache and memory information, and is portable across a variety of +different operating systems and platforms. +. +. +.SS Definitions +hwloc has some specific definitions for terms that are used in this +man page and other hwloc documentation. +. +.TP 5 +.B hwloc CPU set: +A set of processors included in an hwloc object, expressed as a bitmask +indexed by the physical numbers of the CPUs (as announced by the OS). +The hwloc definition +of "CPU set" does not carry any of the same connotations as Linux's "CPU +set" (e.g., process affinity, cgroup, etc.). +. +.TP +.B hwloc node set: +A set of NUMA memory nodes near an hwloc object, expressed as a bitmask +indexed by the physical numbers of the NUMA nodes (as announced by the OS). +. +.TP +.B Linux CPU set: +See http://www.mjmwired.net/kernel/Documentation/cpusets.txt for a +discussion of Linux CPU sets. A +super-short-ignoring-many-details description (taken from that page) +is: +.br + +.br + "Cpusets provide a mechanism for assigning a set of CPUs and Memory +Nodes to a set of tasks." +. +.TP +.B Linux Cgroup: +See http://www.mjmwired.net/kernel/Documentation/cgroups.txt for a +discussion of Linux control groups. A +super-short-ignoring-many-details description (taken from that page) +is: +.br + +.br + "Control Groups provide a mechanism for aggregating/partitioning sets +of tasks, and all their future children, into hierarchical groups +with specialized behaviour." +. +.PP +To be clear, hwloc supports all of the above concepts. It is simply +worth noting that they are different things. +. +.SS Location Specification +. +Locations refer to specific regions within a topology. Before reading +the rest of this man page, it may be useful to read lstopo(1) and/or +run lstopo on your machine to see the reported topology tree. Seeing +and understanding a topology tree will definitely help in +understanding the concepts that are discussed below. +. +.PP +Locations can be specified in multiple ways: +. +.TP 10 +.B Tuples: +Tuples of hwloc "objects" and associated indexes can be specified in +the form +.IR object:index . +hwloc objects represent types of mapped items (e.g., packages, cores, +etc.) in a topology tree; indexes are non-negative integers that +specify a unique physical object in a topology tree. Both concepts +are described in detail, below. +.br + +.br +Indexes may also be specified as ranges. +\fIx-y\fR enumerates from index \fIx\fR to \fIy\fR. +\fIx:y\fR enumerates \fIy\fR objects starting from index \fIx\fR +(wrapping around the end of the index range if needed). +\fIx-\fR enumerates all objects starting from index \fIx\fR. +\fIall\fR, \fIodd\fR, and \fIeven\fR are also supported for listing +all objects, or only those with odd or even indexes. +.br + +.br +Chaining multiple tuples together in the more general form +.I object1:index[.object2:index2[...]] +is permissable. While the first tuple's object may appear anywhere in +the topology, the Nth tuple's object must have a shallower topology +depth than the (N+1)th tuple's object. Put simply: as you move right +in a tuple chain, objects must go deeper in the topology tree. +When using logical indexes (which is the default), +indexes specified in chained tuples are relative to the scope of the +parent object. For example, "package:0.core:1" refers to the second +core in the first package. +.br + +.br +When using OS/physical indexes, the first object matching the given +index is used. +.br + +.br +PCI and OS devices may also be designed using their identifier. +For example, "\fBpci=02:03.1\fR" is the PCI device with bus ID "02:03.1". +. +"\fBos=eth0\fR" is the network interface whose software name is "eth0". +. +PCI devices may also be filtered based on their vendor and/or device IDs, +for instance "\fBpci[15b3:]:2\fR" for the third Mellanox PCI device (vendor ID 0x15b3). +. +OS devices may also be filtered based on their subtype, +for instance "\fBos[gpu]:all\fR" for all GPU OS devices. +. +.TP +.B Hex: +For tools that manipulate object as sets (e.g. hwloc-calc and hwloc-bind), +locations can also be specified as hexidecimal bitmasks prefixed +. +with "0x". Commas must be used to separate the hex digits into blocks +of 8, such as "0xffc0140,0x00020110". +. +Leading zeros in each block do not need to be specified. +. +For example, "0xffc0140,0x20110" is equivalent to the prior example, +and "0x0000000f" is exactly equivalent to "0xf". Intermediate blocks +of 8 digits that are all zeoro can be left empty; "0xff0,,0x13" is +equivalent to "0xff0,0x00000000,0x13". +. +If the location is prefixed with the special string "0xf...f", then +all unspecified bits are set (as if the set were infinite). For +example, "0xf...f,0x1" sets both the first bit and all bits starting +with the 33rd. The string "0xf...f" -- with no other specified values +-- sets all bits. +. +.PP +"all" and "root" are special locations consisting in the root +object in tree. It contains the entire current topology. +. +.PP +Some tools directly operate on these objects (e.g. hwloc-info and hwloc-annotate). +They do not support hexadecimal locations because each location may +correspond to multiple objects. +For instance, there can be exactly one L3 cache per package and NUMA node, +which means it's the same location. +. +If multiple locations are given on the command-line, +these tools will operation on each location individually and consecutively. +. +.PP +Some other tools internally manipulate objects as sets (e.g. hwloc-calc and hwloc-bind). +They translate each input location into a hexidecimal location. +When I/O or Misc objects are used, they are translated into the set +of processors (or NUMA nodes) that are close to the given object +(because I/O or Misc objects do not contain processors or NUMA nodes). +. +.PP +If multiple locations are specified on the command-line (delimited by whitespace), +they are combined (the overall location is wider). +. +If prefixed with "~", the given location +will be cleared instead of added to the current list of locations. If +prefixed with "x", the given location will be and'ed instead of added +to the current list. If prefixed with "^", the given location will be +xor'ed. +. +.PP +More complex operations may be performed by using +.IR hwloc-calc +to compute intermediate values. +. +.SS hwloc Objects +. +.PP +Objects in tuples can be any of the following strings +. +(listed from "biggest" to "smallest"): +. +.TP 10 +.B machine +A set of processors and memory. +. +.TP +.B numanode +A NUMA node; a set of processors around memory which the processors +can directly access. +. +If \fBhbm\fR is used instead of \fBnumanode\fR in locations, +command-line tools only consider high-bandwidth memory nodes such as Intel Xeon Phi MCDRAM. +. +.TP +.B package +Typically a physical package or chip, that goes into a package, +it is a grouping of one or more processors. +. +.TP +.B l1cache ... l5cache +A data (or unified) cache. +. +.TP +.B l1icache ... l3icache +An instruction cache. +. +.TP +.B core +A single, physical processing unit which may still contain multiple +logical processors, such as hardware threads. +. +.TP +.B pu +Short for +.I processor unit +(not +.IR process !). +The smallest physical execution unit that hwloc recognizes. For +example, there may be multiple PUs on a core (e.g., +hardware threads). +.PP +\fBosdev\fR, \fBpcidev\fR, \fBbridge\fR, and \fBmisc\fR may also be used +to specify special devices although some of them have dedicated identification +ways as explained in \fBLocation Specification\fR. +. +.PP +Finally, note that an object can be denoted by its numeric "depth" in +the topology graph. +. +.SS hwloc Indexes +Indexes are integer values that uniquely specify a given object of a +specific type. Indexes can be expressed either as +.I logical +values or +.I physical +values. Most hwloc utilities accept logical indexes by default. +Passing +.B --physical +switches to physical/OS indexes. +Both logical and physical indexes are described on this man page. +. +.PP +.I Logical +indexes are relative to the object order in the output from the +lstopo command. They always start with 0 and increment by 1 for each +successive object. +. +.PP +.I Physical +indexes are how the operating system refers to objects. Note that +while physical indexes are non-negative integer values, the hardware +and/or operating system may choose arbitrary values -- they may not +start with 0, and successive objects may not have consecutive values. +. +.PP +For example, if the first few lines of lstopo -p output are the +following: +. + + Machine (47GB) + NUMANode P#0 (24GB) + Package P#0 + L3 (12MB) + L2 (256KB) + L1 (32KB) + Core P#0 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#1 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#2 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#8 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#9 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#10 + PU P#0 + NUMANode P#1 (24GB) + Package P#1 + L3 (12MB) + L2 (256KB) + L1 (32KB) + Core P#0 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#1 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#2 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#8 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#9 + PU P#0 + L2 (256KB) + L1 (32KB) + Core P#10 + PU P#0 + +In this example, the first core on the second package is logically +number 6 (i.e., logically the 7th core, starting from 0). Its +physical index is 0, but note that another core +.I also +has a physical index of 0. Hence, physical indexes may only be +relevant within the scope of their parent (or set of ancestors). +In this example, to uniquely identify logical core 6 with +physical indexes, you must specify (at a minimum) both a package and a +core: package 1, core 0. +.PP +Index values, regardless of whether they are logical or physical, can +be expressed in several different forms (where X, Y, and N are +positive integers): +. +.TP 10 +.B X +The object with index value X. +. +.TP +.B X-Y +All the objects with index values >= X and <= Y. +. +.TP +.B X- +All the objects with index values >= X. +. +.TP +.B X:N +N objects starting with index X, possibly wrapping around the end of +the level. +. +.TP +.B all +A special index value indicating all valid index values. +. +.TP +.B odd +A special index value indicating all valid odd index values. +. +.TP +.B even +A special index value indicating all valid even index values. +. +.PP +.IR REMEMBER : +hwloc's command line tools accept +.I logical +indexes for location values by default. +Use +.BR --physical " and " --logical +to switch from one mode to another. +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +hwloc's command line tool documentation: lstopo(1), hwloc-bind(1), +hwloc-calc(1), hwloc-distrib(1), hwloc-ps(1). +. +.PP +hwloc has many C API functions, each of which have their own man page. +Some top-level man pages are also provided, grouping similar functions +together. A few good places to start might include: +hwlocality_objects(3), hwlocality_types(3), hwlocality_creation(3), +hwlocality_cpuset(3), hwlocality_information(3), and +hwlocality_binding(3). +. +.PP +For a listing of all available hwloc man pages, look at all "hwloc*" +files in the man1 and man3 directories. diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/misc.h b/3rd-party/hwloc-2.7.1/utils/hwloc/misc.h new file mode 100644 index 0000000000..8131e7cc01 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/misc.h @@ -0,0 +1,912 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#ifndef HWLOC_UTILS_MISC_H +#define HWLOC_UTILS_MISC_H + +#include "private/autogen/config.h" +#include "hwloc.h" +#include "private/misc.h" /* for hwloc_strncasecmp() */ + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_STDINT_H +#include +#endif +#include + +extern void usage(const char *name, FILE *where); + +static __hwloc_inline void +hwloc_utils_check_api_version(const char *callname) +{ + unsigned version = hwloc_get_api_version(); + if ((version >> 16) != (HWLOC_API_VERSION >> 16)) { + fprintf(stderr, + "%s compiled for hwloc API 0x%x but running on library API 0x%x.\n" + "You may need to point LD_LIBRARY_PATH to the right hwloc library.\n" + "Aborting since the new ABI is not backward compatible.\n", + callname, (unsigned) HWLOC_API_VERSION, version); + exit(EXIT_FAILURE); + } +} + +static __hwloc_inline void +hwloc_utils_input_format_usage(FILE *where, int addspaces) +{ + fprintf (where, " --input \n"); + fprintf (where, " -i %*sRead topology from XML file \n", + addspaces, " "); +#ifdef HWLOC_LINUX_SYS + fprintf (where, " --input \n"); + fprintf (where, " -i %*sRead topology from chroot containing the /proc and /sys\n", + addspaces, " "); + fprintf (where, " %*sof another system\n", + addspaces, " "); +#endif +#ifdef HWLOC_HAVE_X86_CPUID + fprintf (where, " --input \n"); + fprintf (where, " -i %*sRead topology from directory containing a CPUID dump\n", + addspaces, " "); +#endif + fprintf (where, " --input \"node:2 2\"\n"); + fprintf (where, " -i \"node:2 2\" %*sSimulate a fake hierarchy, here with 2 NUMA nodes of 2\n", + addspaces, " "); + fprintf (where, " %*sprocessors\n", + addspaces, " "); + fprintf (where, " --input-format \n"); + fprintf (where, " --if %*sEnforce input format among " + "xml, " +#ifdef HWLOC_LINUX_SYS + "fsroot, " +#endif +#ifdef HWLOC_HAVE_X86_CPUID + "cpuid, " +#endif + "synthetic\n", + addspaces, " "); +} + +enum hwloc_utils_input_format { + HWLOC_UTILS_INPUT_DEFAULT, + HWLOC_UTILS_INPUT_XML, + HWLOC_UTILS_INPUT_FSROOT, + HWLOC_UTILS_INPUT_SYNTHETIC, + HWLOC_UTILS_INPUT_CPUID, + HWLOC_UTILS_INPUT_SHMEM +}; + +static __hwloc_inline enum hwloc_utils_input_format +hwloc_utils_parse_input_format(const char *name, const char *callname) +{ + if (!hwloc_strncasecmp(name, "default", 3)) + return HWLOC_UTILS_INPUT_DEFAULT; + else if (!hwloc_strncasecmp(name, "xml", 1)) + return HWLOC_UTILS_INPUT_XML; + else if (!hwloc_strncasecmp(name, "fsroot", 1)) + return HWLOC_UTILS_INPUT_FSROOT; + else if (!hwloc_strncasecmp(name, "shmem", 5)) + return HWLOC_UTILS_INPUT_SHMEM; + else if (!hwloc_strncasecmp(name, "synthetic", 1)) + return HWLOC_UTILS_INPUT_SYNTHETIC; + else if (!hwloc_strncasecmp(name, "cpuid", 1)) + return HWLOC_UTILS_INPUT_CPUID; + + fprintf(stderr, "input format `%s' not supported\n", name); + usage(callname, stderr); + exit(EXIT_FAILURE); +} + +static __hwloc_inline int +hwloc_utils_lookup_input_option(char *argv[], int argc, int *consumed_opts, + char **inputp, enum hwloc_utils_input_format *input_formatp, + const char *callname) +{ + if (!strcmp (argv[0], "--input") + || !strcmp (argv[0], "-i")) { + if (argc <= 1) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + if (strlen(argv[1])) + *inputp = argv[1]; + else + *inputp = NULL; + *consumed_opts = 1; + return 1; + } + else if (!strcmp (argv[0], "--input-format") + || !strcmp (argv[0], "--if")) { + if (argc <= 1) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + *input_formatp = hwloc_utils_parse_input_format (argv[1], callname); + *consumed_opts = 1; + return 1; + } + + /* backward compat with 1.0 */ + else if (!strcmp (argv[0], "--synthetic")) { + if (argc <= 1) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + *inputp = argv[1]; + *input_formatp = HWLOC_UTILS_INPUT_SYNTHETIC; + *consumed_opts = 1; + return 1; + } else if (!strcmp (argv[0], "--xml")) { + if (argc <= 1) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + *inputp = argv[1]; + *input_formatp = HWLOC_UTILS_INPUT_XML; + *consumed_opts = 1; + return 1; + } else if (!strcmp (argv[0], "--fsys-root")) { + if (argc <= 1) { + usage (callname, stderr); + exit(EXIT_FAILURE); + } + *inputp = argv[1]; + *input_formatp = HWLOC_UTILS_INPUT_FSROOT; + *consumed_opts = 1; + return 1; + } + + return 0; +} + +static __hwloc_inline enum hwloc_utils_input_format +hwloc_utils_autodetect_input_format(const char *input, int verbose) +{ + struct stat inputst; + int err; + err = stat(input, &inputst); + if (err < 0) { + if (verbose > 0) + printf("assuming `%s' is a synthetic topology description\n", input); + return HWLOC_UTILS_INPUT_SYNTHETIC; + } + if (S_ISREG(inputst.st_mode)) { + size_t len = strlen(input); + if (len >= 6 && !strcmp(input+len-6, ".shmem")) { + if (verbose > 0) + printf("assuming `%s' is a shmem topology file\n", input); + return HWLOC_UTILS_INPUT_SHMEM; + } + if (verbose > 0) + printf("assuming `%s' is a XML file\n", input); + return HWLOC_UTILS_INPUT_XML; + } + if (S_ISDIR(inputst.st_mode)) { + char *childpath; + struct stat childst; + childpath = malloc(strlen(input) + 10); /* enough for appending /sys, /proc or /pu0 */ + if (childpath) { + snprintf(childpath, strlen(input) + 10, "%s/pu0", input); + if (stat(childpath, &childst) == 0 && S_ISREG(childst.st_mode)) { + if (verbose > 0) + printf("assuming `%s' is a cpuid dump\n", input); + free(childpath); + return HWLOC_UTILS_INPUT_CPUID; + } + snprintf(childpath, strlen(input) + 10, "%s/proc", input); + if (stat(childpath, &childst) == 0 && S_ISDIR(childst.st_mode)) { + if (verbose > 0) + printf("assuming `%s' is a file-system root\n", input); + free(childpath); + return HWLOC_UTILS_INPUT_FSROOT; + } + } + free(childpath); + } + fprintf (stderr, "Unrecognized input file: %s\n", input); + return HWLOC_UTILS_INPUT_DEFAULT; +} + +static __hwloc_inline int +hwloc_utils_enable_input_format(struct hwloc_topology *topology, unsigned long flags, + const char *input, + enum hwloc_utils_input_format *input_format, + int verbose, const char *callname) +{ + if (*input_format == HWLOC_UTILS_INPUT_DEFAULT && !strcmp(input, "-.xml")) { + *input_format = HWLOC_UTILS_INPUT_XML; + input = "-"; + } + + if (*input_format == HWLOC_UTILS_INPUT_DEFAULT) { + *input_format = hwloc_utils_autodetect_input_format(input, verbose); + if (*input_format == HWLOC_UTILS_INPUT_DEFAULT) { + usage (callname, stderr); + return EXIT_FAILURE; + } + } + + switch (*input_format) { + case HWLOC_UTILS_INPUT_XML: + if (!strcmp(input, "-")) + input = "/dev/stdin"; + if (hwloc_topology_set_xml(topology, input)) { + perror("Setting source XML file"); + return EXIT_FAILURE; + } + break; + + case HWLOC_UTILS_INPUT_FSROOT: { +#ifdef HWLOC_LINUX_SYS + char *env; + if (asprintf(&env, "HWLOC_FSROOT=%s", input) < 0) + fprintf(stderr, "Failed to pass input filesystem root directory to HWLOC_FSROOT environment variable\n"); + else + putenv(env); + putenv((char *) "HWLOC_DUMPED_HWDATA_DIR=/var/run/hwloc"); + env = getenv("HWLOC_COMPONENTS"); + if (env) + fprintf(stderr, "Cannot force linux component first because HWLOC_COMPONENTS environment variable is already set to %s.\n", env); + else + putenv((char *) "HWLOC_COMPONENTS=linux,pci,stop"); + /* normally-set flags are overriden by envvar-forced backends */ + if (flags & HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM) + putenv((char *) "HWLOC_THISSYSTEM=1"); +#else /* HWLOC_LINUX_SYS */ + fprintf(stderr, "This installation of hwloc does not support changing the file-system root, sorry.\n"); + exit(EXIT_FAILURE); +#endif /* HWLOC_LINUX_SYS */ + break; + } + + case HWLOC_UTILS_INPUT_CPUID: { +#ifdef HWLOC_HAVE_X86_CPUID + size_t len = strlen("HWLOC_CPUID_PATH=")+strlen(input)+1; + char *env = malloc(len); + if (!env) { + fprintf(stderr, "Failed to pass input cpuid dump path to HWLOC_CPUID_PATH environment variable\n"); + } else { + snprintf(env, len, "HWLOC_CPUID_PATH=%s", input); + putenv(env); + } + env = getenv("HWLOC_COMPONENTS"); + if (env) + fprintf(stderr, "Cannot force x86 component first because HWLOC_COMPONENTS environment variable is already set to %s.\n", env); + else + putenv((char *) "HWLOC_COMPONENTS=x86,stop"); + /* normally-set flags are overriden by envvar-forced backends */ + if (flags & HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM) + putenv((char *) "HWLOC_THISSYSTEM=1"); +#else + fprintf(stderr, "This installation of hwloc does not support loading from a cpuid dump, sorry.\n"); + exit(EXIT_FAILURE); +#endif + break; + } + + case HWLOC_UTILS_INPUT_SYNTHETIC: + if (hwloc_topology_set_synthetic(topology, input)) { + perror("Setting synthetic topology description"); + return EXIT_FAILURE; + } + break; + + case HWLOC_UTILS_INPUT_SHMEM: + break; + + case HWLOC_UTILS_INPUT_DEFAULT: + assert(0); + } + + return 0; +} + +static __hwloc_inline void +hwloc_utils_print_distance_matrix(FILE *output, unsigned nbobjs, hwloc_obj_t *objs, hwloc_uint64_t *matrix, int logical, int show_types) +{ + unsigned i, j; +#define MATRIX_ITEM_SIZE_MAX 17 /* 16 + ending \0 */ + char *headers; + char *values; + char *buf; + size_t len, max; + + headers = malloc((nbobjs+1)*MATRIX_ITEM_SIZE_MAX); + values = malloc(nbobjs*nbobjs*MATRIX_ITEM_SIZE_MAX); + if (!headers || !values) { + free(headers); + free(values); + return; + } + + snprintf(headers, MATRIX_ITEM_SIZE_MAX, " index" /* 16 */); + max = 5; + /* prepare column headers */ + for(i=0, buf = headers + MATRIX_ITEM_SIZE_MAX; + ilogical_index : obj->os_index; + if (obj->type == HWLOC_OBJ_OS_DEVICE) + len = snprintf(tmp, MATRIX_ITEM_SIZE_MAX, + "%s", obj->name); + else if (obj->type == HWLOC_OBJ_PCI_DEVICE) + len = snprintf(tmp, MATRIX_ITEM_SIZE_MAX, + "%04x:%02x:%02x.%01x", + obj->attr->pcidev.domain, obj->attr->pcidev.bus, obj->attr->pcidev.dev, obj->attr->pcidev.func); + else if (show_types) + len = snprintf(tmp, MATRIX_ITEM_SIZE_MAX, + "%s:%d", hwloc_obj_type_string(obj->type), (int) index); + else + len = snprintf(tmp, MATRIX_ITEM_SIZE_MAX, + "%d", (int) index); + if (len >= max) + max = len; + /* store it at the end of the slot in headers */ + memcpy(buf + (MATRIX_ITEM_SIZE_MAX - len - 1), tmp, len+1); + /* and pad with spaces at the begining */ + memset(buf, ' ', MATRIX_ITEM_SIZE_MAX - len - 1); + } + /* prepare values */ + for(i=0, buf = values; + i= max) + max = len; + /* store it at the end of the slot in values */ + memcpy(buf + (MATRIX_ITEM_SIZE_MAX - len - 1), tmp, len+1); + /* and pad with spaces at the begining */ + memset(buf, ' ', MATRIX_ITEM_SIZE_MAX - len - 1); + } + } + + /* now display everything */ + for(i=0; iuserdata; + while (*up) + up = &((*up)->next); + *up = u = malloc(sizeof(struct hwloc_utils_userdata)); + u->name = strdup(name); + u->length = length; + u->buffer = strdup(buffer); + u->next = NULL; +} + +static __hwloc_inline void +hwloc_utils_userdata_export_cb(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj) +{ + struct hwloc_utils_userdata *u = obj->userdata; + while (u) { + if (u->buffer) /* not meant to be exported to XML (added by somebody else) */ + hwloc_export_obj_userdata(reserved, topology, obj, u->name, u->buffer, u->length); + u = u->next; + } +} + +/* to be called when importing from shmem with non-NULL userdata pointing to stuff in the other process */ +static __hwloc_inline void +hwloc_utils_userdata_clear_recursive(hwloc_obj_t obj) +{ + hwloc_obj_t child; + obj->userdata= NULL; + for_each_child(child, obj) + hwloc_utils_userdata_clear_recursive(child); + for_each_memory_child(child, obj) + hwloc_utils_userdata_clear_recursive(child); + for_each_io_child(child, obj) + hwloc_utils_userdata_clear_recursive(child); + for_each_misc_child(child, obj) + hwloc_utils_userdata_clear_recursive(child); +} + +/* must be called once the caller has removed its own userdata */ +static __hwloc_inline void +hwloc_utils_userdata_free(hwloc_obj_t obj) +{ + struct hwloc_utils_userdata *u = obj->userdata, *next; + while (u) { + next = u->next; + assert(u->buffer); + free(u->name); + free(u->buffer); + free(u); + u = next; + } + obj->userdata = NULL; +} + +/* must be called once the caller has removed its own userdata */ +static __hwloc_inline void +hwloc_utils_userdata_free_recursive(hwloc_obj_t obj) +{ + hwloc_obj_t child; + hwloc_utils_userdata_free(obj); + for_each_child(child, obj) + hwloc_utils_userdata_free_recursive(child); + for_each_memory_child(child, obj) + hwloc_utils_userdata_free_recursive(child); + for_each_io_child(child, obj) + hwloc_utils_userdata_free_recursive(child); + for_each_misc_child(child, obj) + hwloc_utils_userdata_free_recursive(child); +} + +struct hwloc_utils_parsing_flag +{ + unsigned long ulong_flag; + const char *str_flag; +}; + +#define HWLOC_UTILS_PARSING_FLAG(flag){ flag, #flag } + +static __hwloc_inline void +hwloc_utils_parsing_flag_error(const char *err_message, struct hwloc_utils_parsing_flag possible_flags[], int len_possible_flags) { + int i; + fprintf(stderr, "Supported %s flags are substrings of:\n", err_message); + for(i = 0; i < len_possible_flags; i++) { + fprintf(stderr, " "); + fprintf(stderr, "%s", possible_flags[i].str_flag); + fprintf(stderr, "\n"); + } +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_flags(char * str, struct hwloc_utils_parsing_flag possible_flags[], int len_possible_flags, const char * kind) { + char *ptr; + char *end; + int ul_flag; + int i; + size_t j; + unsigned long ul_flags = 0; + + ul_flag = strtoul(str, &end, 0); + if(end != str && *end == '\0') + return ul_flag; + + for(j=0; str[j]; j++) + str[j] = toupper(str[j]); + + if(strcmp(str, "NONE") == 0) + return 0; + + ptr = str; + while (ptr) { + int count = 0; + unsigned long prv_flags = ul_flags; + char *pch; + int nosuffix = 0; + + /* skip separators at the beginning */ + ptr += strspn(ptr, ",|+"); + + /* find separator after next token */ + j = strcspn(ptr, " ,|+"); + if (!j) + break; + + if (ptr[j]) { + /* mark the end of the token */ + ptr[j] = '\0'; + /* mark beginning of next token */ + end = ptr + j + 1; + } else { + /* no next token */ + end = NULL; + } + + /* '$' means matching the end of a flag */ + pch = strchr(ptr, '$'); + if(pch) { + nosuffix = 1; + *pch = '\0'; + } + + for(i = 0; i < len_possible_flags; i++) { + if(nosuffix == 1) { + /* match the end */ + if(strcmp(ptr, possible_flags[i].str_flag + strlen(possible_flags[i].str_flag) - strlen(ptr))) + continue; + } else { + /* match anywhere */ + if(!strstr(possible_flags[i].str_flag, ptr)) + continue; + } + + if(count){ + fprintf(stderr, "Duplicate match for %s flag `%s'.\n", kind, ptr); + hwloc_utils_parsing_flag_error(kind, possible_flags, len_possible_flags); + return (unsigned long) - 1; + } + + ul_flags |= possible_flags[i].ulong_flag; + count++; + } + + if(prv_flags == ul_flags) { + fprintf(stderr, "Failed to parse %s flag `%s'.\n", kind, ptr); + hwloc_utils_parsing_flag_error(kind, possible_flags, len_possible_flags); + return (unsigned long) - 1; + } + + ptr = end; + } + + return ul_flags; +} + +static __hwloc_inline hwloc_memattr_id_t +hwloc_utils_parse_memattr_name(hwloc_topology_t topo, const char *str) +{ + const char *name; + hwloc_memattr_id_t id; + int err; + /* try by name, case insensitive */ + for(id=0; ; id++) { + err = hwloc_memattr_get_name(topo, id, &name); + if (err < 0) + break; + if (!strcasecmp(name, str)) + return id; + } + /* try by id */ + if (*str < '0' || *str > '9') + return (hwloc_memattr_id_t) -1; + id = atoi(str); + err = hwloc_memattr_get_name(topo, id, &name); + if (err < 0) + return (hwloc_memattr_id_t) -1; + else + return id; +} + +static __hwloc_inline int +hwloc_utils_get_best_node_in_array_by_memattr(hwloc_topology_t topology, hwloc_memattr_id_t id, + unsigned nbnodes, hwloc_obj_t *nodes, + struct hwloc_location *initiator) +{ + unsigned nbtgs, i, j; + hwloc_obj_t *tgs; + int best; + hwloc_uint64_t *values, bestvalue; + unsigned long mflags; + int err; + + err = hwloc_memattr_get_flags(topology, id, &mflags); + if (err < 0) + goto out; + + nbtgs = 0; + err = hwloc_memattr_get_targets(topology, id, initiator, 0, &nbtgs, NULL, NULL); + if (err < 0) + goto out; + + tgs = malloc(nbtgs * sizeof(*tgs)); + values = malloc(nbtgs * sizeof(*values)); + if (!tgs || !values) + goto out_with_arrays; + + err = hwloc_memattr_get_targets(topology, id, initiator, 0, &nbtgs, tgs, values); + if (err < 0) + goto out_with_arrays; + + best = -1; + bestvalue = 0; + for(i=0; i bestvalue) { + best = i; + bestvalue = values[j]; + } + } else { + assert(mflags & HWLOC_MEMATTR_FLAG_LOWER_FIRST); + if (values[j] < bestvalue) { + best = i; + bestvalue = values[j]; + } + } + } + + free(tgs); + free(values); + return best; + + out_with_arrays: + free(tgs); + free(values); + out: + return -1; +} + +static __hwloc_inline int +hwloc_utils_get_best_node_in_nodeset_by_memattr(hwloc_topology_t topology, hwloc_memattr_id_t id, + hwloc_nodeset_t nodeset, + struct hwloc_location *initiator) +{ + unsigned nbtgs, i, j; + hwloc_obj_t *tgs; + int best; + hwloc_uint64_t *values, bestvalue; + unsigned long mflags; + int err; + + err = hwloc_memattr_get_flags(topology, id, &mflags); + if (err < 0) + goto out; + + nbtgs = 0; + err = hwloc_memattr_get_targets(topology, id, initiator, 0, &nbtgs, NULL, NULL); + if (err < 0) + goto out; + + tgs = malloc(nbtgs * sizeof(*tgs)); + values = malloc(nbtgs * sizeof(*values)); + if (!tgs || !values) + goto out_with_arrays; + + err = hwloc_memattr_get_targets(topology, id, initiator, 0, &nbtgs, tgs, values); + if (err < 0) + goto out_with_arrays; + + best = -1; + bestvalue = 0; + hwloc_bitmap_foreach_begin(i, nodeset) { + for(j=0; jos_index == i) + break; + if (j==nbtgs) + /* no target info for this node */ + continue; + if (best == -1) { + best = i; + bestvalue = values[j]; + } else if (mflags & HWLOC_MEMATTR_FLAG_HIGHER_FIRST) { + if (values[j] > bestvalue) { + best = i; + bestvalue = values[j]; + } + } else { + assert(mflags & HWLOC_MEMATTR_FLAG_LOWER_FIRST); + if (values[j] < bestvalue) { + best = i; + bestvalue = values[j]; + } + } + } hwloc_bitmap_foreach_end(); + + if (best == -1) + hwloc_bitmap_zero(nodeset); + else + hwloc_bitmap_only(nodeset, best); + + free(tgs); + free(values); + return 0; + + out_with_arrays: + free(tgs); + free(values); + out: + return -1; +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_restrict_flags(char * str){ + struct hwloc_utils_parsing_flag possible_flags[] = { + HWLOC_UTILS_PARSING_FLAG(HWLOC_RESTRICT_FLAG_REMOVE_CPULESS), + HWLOC_UTILS_PARSING_FLAG(HWLOC_RESTRICT_FLAG_BYNODESET), + HWLOC_UTILS_PARSING_FLAG(HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS), + HWLOC_UTILS_PARSING_FLAG(HWLOC_RESTRICT_FLAG_ADAPT_MISC), + HWLOC_UTILS_PARSING_FLAG(HWLOC_RESTRICT_FLAG_ADAPT_IO) + }; + + return hwloc_utils_parse_flags(str, possible_flags, (int) sizeof(possible_flags) / sizeof(possible_flags[0]), "restrict"); +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_topology_flags(char * str) { + struct hwloc_utils_parsing_flag possible_flags[] = { + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING) + }; + + return hwloc_utils_parse_flags(str, possible_flags, (int) sizeof(possible_flags) / sizeof(possible_flags[0]), "topology"); +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_allow_flags(char * str) { + struct hwloc_utils_parsing_flag possible_flags[] = { + HWLOC_UTILS_PARSING_FLAG(HWLOC_ALLOW_FLAG_ALL), + HWLOC_UTILS_PARSING_FLAG(HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS), + HWLOC_UTILS_PARSING_FLAG(HWLOC_ALLOW_FLAG_CUSTOM) + }; + + return hwloc_utils_parse_flags(str, possible_flags, (int) sizeof(possible_flags) / sizeof(possible_flags[0]), "allow"); +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_export_synthetic_flags(char * str) { + struct hwloc_utils_parsing_flag possible_flags[] = { + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1), + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_IGNORE_MEMORY) + }; + + return hwloc_utils_parse_flags(str, possible_flags, (int) sizeof(possible_flags) / sizeof(possible_flags[0]), "synthetic"); +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_export_xml_flags(char * str) { + struct hwloc_utils_parsing_flag possible_flags[] = { + HWLOC_UTILS_PARSING_FLAG(HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1) + }; + + return hwloc_utils_parse_flags(str, possible_flags, (int) sizeof(possible_flags) / sizeof(possible_flags[0]), "xml"); +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_distances_add_flags(char * str) { + struct hwloc_utils_parsing_flag possible_flags[] = { + HWLOC_UTILS_PARSING_FLAG(HWLOC_DISTANCES_ADD_FLAG_GROUP), + HWLOC_UTILS_PARSING_FLAG(HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE) + }; + + return hwloc_utils_parse_flags(str, possible_flags, (int) sizeof(possible_flags) / sizeof(possible_flags[0]), "distances_add"); +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_memattr_flags(char *str) { + struct hwloc_utils_parsing_flag possible_flags[] = { + HWLOC_UTILS_PARSING_FLAG(HWLOC_MEMATTR_FLAG_HIGHER_FIRST), + HWLOC_UTILS_PARSING_FLAG(HWLOC_MEMATTR_FLAG_LOWER_FIRST), + HWLOC_UTILS_PARSING_FLAG(HWLOC_MEMATTR_FLAG_NEED_INITIATOR) + }; + + return hwloc_utils_parse_flags(str, possible_flags, (int) sizeof(possible_flags) / sizeof(possible_flags[0]), "memattr"); +} + +static __hwloc_inline unsigned long +hwloc_utils_parse_local_numanode_flags(char *str) { + struct hwloc_utils_parsing_flag possible_flags[] = { + HWLOC_UTILS_PARSING_FLAG(HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITY), + HWLOC_UTILS_PARSING_FLAG(HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITY), + HWLOC_UTILS_PARSING_FLAG(HWLOC_LOCAL_NUMANODE_FLAG_ALL) + }; + + return hwloc_utils_parse_flags(str, possible_flags, (int) sizeof(possible_flags) / sizeof(possible_flags[0]), "local_numanode"); +} + +#endif /* HWLOC_UTILS_MISC_H */ diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-build-custom-topology.output b/3rd-party/hwloc-2.7.1/utils/hwloc/test-build-custom-topology.output new file mode 100644 index 0000000000..c4225f2963 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-build-custom-topology.output @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-build-custom-topology.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-build-custom-topology.sh.in new file mode 100644 index 0000000000..9bc39a1b00 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-build-custom-topology.sh.in @@ -0,0 +1,81 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009-2021 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +# +# This test builds an asymmetric and heterogeneous topology. +# First package has 4 SMT "Big" cores with 200 GB of DRAM. +# Second package has 8 "Little" cores (no HT) with 100GB of DRAM and 10GB of HBM. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/hwloc" +builddir="$HWLOC_top_builddir/utils/hwloc" +calc="$builddir/hwloc-calc" +lstopo="$builddir/../lstopo/lstopo-no-graphics" +annotate="$builddir/hwloc-annotate" + +HWLOC_DONT_ADD_VERSION_INFO=1 +export HWLOC_DONT_ADD_VERSION_INFO + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +file="$tmp/custom-topology.xml" +filetmp="$tmp/custom-topology.tmp.xml" + +set -e + +echo "creating symmetric topology ..." +$lstopo -i "pack:2 [numa(memory=100GB)] [numa(memory=10GB)] core:8 pu:2" --of xml $file + +echo "listing PUs to keep ..." +cpuset=`$calc -i $file pack:0.core:0-3.pu:0-1 pack:1.core:0-7.pu:0` + +echo "filtering PUs by $cpuset ..." +$lstopo --if xml -i $file --restrict $cpuset --of xml $filetmp +mv -f $filetmp $file + +echo "listing NUMAs to keep ..." +nodeset=`$calc -i $file --nodeset node:all ~pack:0.node:1` + +echo "filtering NUMAs by $nodeset ..." +$lstopo --if xml -i $file --restrict nodeset=$nodeset --of xml $filetmp +mv -f $filetmp $file + +echo "marking cores of first package as more power hungry ..." +$annotate $file $file -- none -- cpukind `$calc -i $file pack:0` 1 0 CoreType Big +$annotate $file $file -- none -- cpukind `$calc -i $file pack:1` 0 0 CoreType Little + +echo "marking 1st node of 2nd pack as HBM and others as DRAM ..." +$annotate $file $file -- pack:1.numa:1 -- subtype HBM +$annotate $file $file -- pack:0.numa:0 pack:1.numa:0 -- subtype DRAM + +echo "making the first DRAM bigger ..." +$annotate $file $file -- pack:0.numa:0 -- size 200GB + +echo "adding bandwidth for memory nodes ..." +$annotate $file $file -- pack:0.node:0 -- memattr Bandwidth pack:0 50000 +$annotate $file $file -- pack:1.node:0 -- memattr Bandwidth pack:1 50000 +$annotate $file $file -- pack:1.node:1 -- memattr Bandwidth pack:1 200000 + +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-build-custom-topology.output "$file" +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-fake-plugin.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-fake-plugin.sh.in new file mode 100644 index 0000000000..b813006f51 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-fake-plugin.sh.in @@ -0,0 +1,53 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009-2019 Inria. All rights reserved. +# Copyright © 2009, 2011 Université Bordeaux +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_builddir="@HWLOC_top_builddir@" +builddir="$HWLOC_top_builddir" +lstopo="$builddir/utils/lstopo/lstopo-no-graphics" +hcalc="$builddir/utils/hwloc/hwloc-calc" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +file="$tmp/test-fake-plugin.output" + +set -e + +echo "Checking that the tweak phase restricts to a single PU and single NUMA" +HWLOC_DEBUG_FAKE_COMPONENT_TWEAK=1 +export HWLOC_DEBUG_FAKE_COMPONENT_TWEAK + +test `$hcalc -N pu root` = 1 +test `$hcalc -N numa root` = 1 + +echo "Checking that the init/instantiate/finalize callbacks are invoked" +HWLOC_DEBUG_FAKE_COMPONENT=1 +export HWLOC_DEBUG_FAKE_COMPONENT + +$lstopo > $file + +grep "fake component initialized" $file || false +grep "fake component instantiated" $file || false +grep "fake component finalized" $file || false + +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.input b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.input new file mode 100644 index 0000000000..e981d98dc9 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.input @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + + + + + 0000000000000001 + + + + rg== + ZH8= + f+B/ + 4H8AAA== + eK5kf+B/AAB4rmR/4H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtmR/4H8AAP////8AAAAA////fwAAAAA= + rmR/4H8AAHiuZH/gfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC2ZH/gfwAA/////wAAAAD///9/AAAAAA== + + + rmR/4H8AAHiuZH/gfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC2ZH/gfwAA/////wAAAAD///9/AAAA + + + + + + + + + + ZH/gfwAAeK5kf+B/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQLZkf+B/AAD/////AAAAAP///38AAAA= + ZH/gfwAAeK5kf+B/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQLZkf+B/AAD/////AAAAAP///38AAA== + f+B/AAB4rmR/4H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtmR/4H8AAP////8AAAAA////fwAA + f+B/AAB4rmR/4H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtmR/4H8AAP////8AAAAA////fwA= + 4H8AAHiuZH/gfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC2ZH/gfwAA/////wAAAAD///9/AA== + + + + + + + + + + + + 4H8AAHiuZH/gfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC2ZH/gfwAA/////wAAAAD///9/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.output b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.output new file mode 100644 index 0000000000..798875caa5 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.output @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + + + + + + 0000000000000001 + + + + + rg== + ZH8= + f+B/ + 4H8AAA== + eK5kf+B/AAB4rmR/4H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtmR/4H8AAP////8AAAAA////fwAAAAA= + rmR/4H8AAHiuZH/gfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC2ZH/gfwAA/////wAAAAD///9/AAAAAA== + + + + + + + + + + + + + + + + + + + + + + + + + + + ZH/gfwAAeK5kf+B/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQLZkf+B/AAD/////AAAAAP///38AAAA= + ZH/gfwAAeK5kf+B/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQLZkf+B/AAD/////AAAAAP///38AAA== + f+B/AAB4rmR/4H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtmR/4H8AAP////8AAAAA////fwAA + f+B/AAB4rmR/4H8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAtmR/4H8AAP////8AAAAA////fwA= + 4H8AAHiuZH/gfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC2ZH/gfwAA/////wAAAAD///9/AA== + + + + + + + + + + + + + + + + + + + + 4H8AAHiuZH/gfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC2ZH/gfwAA/////wAAAAD///9/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 0 2 + 10 80 80 80 10 80 80 80 10 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.output2 b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.output2 new file mode 100644 index 0000000000..0edc807a75 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.output2 @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 40 40 10 + + + OSDev:324 OSDev:325 OSDev:326 OSDev:327 NUMANode:264 NUMANode:265 + 1000000 40000 0 0 40000 0 40000 1000000 0 0 + 40000 0 0 0 1000000 40000 0 40000 0 0 + 40000 1000000 0 40000 40000 40000 0 0 1000000 0 + 0 0 40000 40000 0 1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.sh.in new file mode 100644 index 0000000000..4a32086a10 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-annotate.sh.in @@ -0,0 +1,92 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/hwloc" +builddir="$HWLOC_top_builddir/utils/hwloc" +annotate="$builddir/hwloc-annotate" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +if test x@HWLOC_XML_LOCALIZED@ = x1; then + # make sure we use default numeric formats + LANG=C + LC_ALL=C + export LANG LC_ALL +fi + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +file="$tmp/test-hwloc-annotate.output" +file2="$tmp/test-hwloc-annotate.output2" +distances="$tmp/test-hwloc-annotate.distances" + +set -e + +$annotate $srcdir/test-hwloc-annotate.input $file pu:0 misc pumisc +$annotate $file $file root misc rootmisc +$annotate $file $file misc:0 misc miscmisc1 +$annotate $file $file all info Foo Bar +$annotate --ci $file $file -- Core:all L3:all -- info Foo2 Bar2 +$annotate --ci $file $file L2Cache:0 none +$annotate --ri $file $file pack:all info Foo +$annotate $file $file pack:0 info Foo2 Bar +$annotate $file $file pack:0 info Foo2 Bar2 +$annotate --ri $file $file pack:0 info Foo2 Bar3 +$annotate $file $file os:2-3 info myosdev byindex +$annotate $file $file pci:4:2 info mypcidev byindex +$annotate $file $file pci=0000:02:00.0 info mypcidev bybusid +$annotate $file $file 'pci[8086:0046]:all' info mypcidev bymatch +$annotate $file $file bridge:all info mybridges all +$annotate --cu $file $file L1iCache:0 none +$annotate --cd $file $file dummy none +$annotate $file $file -- dummy -- memattr DummyMemattr higher +$annotate $file $file -- pu:0 -- memattr dummymemattr dummy 1234 +$annotate $file $file -- dummy -- memattr DummyMemattr2 lower,need_init +$annotate $file $file -- pu:2 -- memattr dummymemattr2 0xf 123 +$annotate $file $file -- dummy -- cpukind 0x5 -1 0 +$annotate $file $file -- dummy -- cpukind 0xa -1 0 foo bar +$annotate $file $file -- dummy -- cpukind 0x3 4 0 foo2 bar2 +$annotate $file $file -- dummy -- cpukind 0xc 7 0 foo2 bar3 +cat > $distances << EOF +name=mynewdistances +5 +4 +pu:2 +pu:3 +pu:0 +pu:1 +4*1 +EOF +$annotate $file $file dummy distances $distances group\$ +$annotate $file $file dummy distances-transform mynewdistances remove-obj pu:3 + +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-hwloc-annotate.output "$file" + + +$annotate $srcdir/../../tests/hwloc/xml/power8gpudistances.xml $file2 -- dummy -- distances-transform NVLinkBandwidth replace-objs nvml opencl +$annotate $file2 $file2 -- dummy -- distances-transform NVLinkBandwidth replace-objs package numa + +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-hwloc-annotate.output2 "$file2" + + +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-calc.output b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-calc.output new file mode 100644 index 0000000000..a3dd638bb3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-calc.output @@ -0,0 +1,203 @@ +# root +0xffffffff,0xffffffff + +# all --taskset +0xffffffffffffffff + +# hex +0x0000000f + +# hex combination +0x00000f0c + +# object combination +0x0000800a + +# --no-smt NUMA Node range +0x11111111,0x0 + +# --no-smt hex +0x00000112 + +# --no-smt=1 hex +0x00000024 + +# --no-smt=2 hex +0x00000048 + +# --no-smt=3 hex +0x00000080 + +# --no-smt=4 hex +0x0 + +# --no-smt=-1 hex +0x000001fe + +# even PUs +0x55555555,0x55555555 + +# NUMA Nodes 2+ +0xffffffff,0x0 + +# cores 12+ +0xffff0000,0x0 + +# PU wrapping range +0xc0000000,0x000000ff + +# some PUs in all Cores +0x66666666,0x66666666 + +# one PU in odd Cores +0x10101010,0x10101010 + +# combination of different ranges, hierarchical or not +0x8000c000,0x000ee0c0 + +# Number of NUMA Nodes +4 + +# Number of Cores in a NUMA Node +4 + +# Number of objects at depth 3 in a NUMA Node +16 + +# List of Machine objects +0 + +# List of NUMA Nodes in a range of Cores +1 + +# List of NUMA Nodes in a range of Cores (again) +2,3 + +# Hierarchical spec for a range of PUs +Group0:0.PU:2 Group0:0.PU:3 + +# Hierarchical spec for a range of PUs, with different separator +Group0:0.Core:0fooGroup0:0.Core:1 + +# Hierarchical spec for a range of PUs (again) +Core:0.PU:3 Core:1.PU:0 Core:1.PU:1 Core:1.PU:2 + +# List of PUs from another invocation with hierarchical output +3,4,5,6 + +# Hierarchical spec for a range of PUs (3 levels) +Group0:0.Core:2.PU:3 Group0:0.Core:3.PU:0 Group0:0.Core:3.PU:1 Group0:0.Core:3.PU:2 + +# List of PUs from another invocation with hierarchical output (again) +11,12,13,14 + +# --largest +Core:3 Group0:1 Core:8 PU:36 PU:37 + +# --largest, with different separator +PU:22_PU:23_Core:6_Core:7_Group0:2 + +# Singlified output +0x00400000 + +# Singlified PU list +22 + +# PU list with physical output +33,34,35,36,37 + +# NUMA Node list of physical output and different separator +1foo2 + +# Manipulating NUMA Nodes with nodesets +0x00000006 + +# Nodeset output of PUs +0x00000008 + +# Converting NUMA Nodes from logical to physical +0,2 + +# Physical output of NUMA Nodes when out-of-order in the topology +2,1 + +# Converting physical to logical PU indexes when complexly ordered in the topology +4,20,32,48 + +# 4 local nodes near a Package (node:3-4@Die + node:5@Package + node:6@Machine) +3,4,5,6 + +# 2 local nodes larger or equal to a Package (node:2@Package + node:6@Machine), with space separator +2 6 + +# Best-locality local node near a PU (node:1@Die) +1 + +# Best-capacity local node near a PU (node:6@Machine) +6 + +# CPU kind by index +0x000000ff + +# CPU kind by wrong index +0x0 + +# CPU kind by info attr +0x00000fff + +# Caches with attributes +0x0000000b + +# Groups with attributes +0x0000ff0f + +# Caches without attributes +0x0000e03f + +# OS devices by name +0xffffffff,0xffff0000,0x0 + +# OS devices by name (again) +0xffffff00,,0x0 + +# OS devices by range +0x000000ff,0xffff0000,0x0 + +# PCI devices by range +0xffffffff,0xffff0000,0x0 + +# PCI devices by vendors/device IDs and range wrapping around +0xffffff00,,0x00ffffff + +# PCI devices by vendors/device IDs and index +0x00ffffff + +# PCI devices by vendors/device IDs and range +0x000000ff,0xffffffff,0xff000000 + +# PCI devices added +0x000000ff,0xffff0000,0x00ffffff + +# PCI devices intersection +0x0 + +# PCI devices intersection (again) +0x00ffffff + +# Restrict +4 +1 +8 +8 +1,2 + +# Reading from stdin +Waiting for locations to process on stdin... +0x00000001 +0xf0000000,0x0000000f +0xffff0000,0x0000ffff +0x0000000f +0x00000001 +0x00000001,,0x0 +0xffffffff,0xffffffff + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-calc.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-calc.sh.in new file mode 100644 index 0000000000..1653d7c919 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-calc.sh.in @@ -0,0 +1,262 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009 CNRS +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2009, 2011 Université Bordeaux +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/hwloc" +builddir="$HWLOC_top_builddir/utils/hwloc" +calc="$builddir/hwloc-calc" +xmldir="$HWLOC_top_srcdir/tests/hwloc/xml" +linuxdir="$HWLOC_top_srcdir/tests/hwloc/linux" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +file="$tmp/test-hwloc-calc.output" + +set -e +( + echo "# root" + $calc --if synthetic --input "node:4 core:4 pu:4" root + echo + echo "# all --taskset" + $calc --if synthetic --input "node:4 core:4 pu:4" all --taskset + echo + + echo "# hex" + $calc --if synthetic --input "node:4 core:4 pu:4" 0xf + echo + echo "# hex combination" + $calc --if synthetic --input "node:4 core:4 pu:4" 0xf ~0x3 0xff0 '^0xf0' + echo + echo "# object combination" + $calc --if synthetic --input "node:4 core:4 pu:4" core:0 pu:15 ~pu:0 '^pu:2' + echo + + echo "# --no-smt NUMA Node range" + $calc --if synthetic --input "node:4 core:4 pu:4" --no-smt node:2-3 + echo + echo "# --no-smt hex" + $calc --if synthetic --input "node:4 core:4 pu:4" --no-smt 0x1fe + echo + echo "# --no-smt=1 hex" + $calc --if synthetic --input "node:4 core:4 pu:4" --no-smt=1 0x1fe + echo + echo "# --no-smt=2 hex" + $calc --if synthetic --input "node:4 core:4 pu:4" --no-smt=2 0x1fe + echo + echo "# --no-smt=3 hex" + $calc --if synthetic --input "node:4 core:4 pu:4" --no-smt=3 0x1fe + echo + echo "# --no-smt=4 hex" + $calc --if synthetic --input "node:4 core:4 pu:4" --no-smt=4 0x1fe + echo + echo "# --no-smt=-1 hex" + $calc --if synthetic --input "node:4 core:4 pu:4" --no-smt=-1 0x1fe + echo + + echo "# even PUs" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:even + echo + echo "# NUMA Nodes 2+" + $calc --if synthetic --input "node:4 core:4 pu:4" node:2- + echo + echo "# cores 12+" + $calc --if synthetic --input "node:4 core:4 pu:4" core:12- + echo + echo "# PU wrapping range" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:62:10 + echo + echo "# some PUs in all Cores" + $calc --if synthetic --input "node:4 core:4 pu:4" core:all.pu:1:2 + echo + echo "# one PU in odd Cores" + $calc --if synthetic --input "node:4 core:4 pu:4" core:odd.pu:0 + echo + echo "# combination of different ranges, hierarchical or not" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:6:2 core:3-4.pu:1-3 node:2.pu:14:2 node:3.core:3.pu:3 + echo + + echo "# Number of NUMA Nodes" + $calc --if synthetic --input "node:4 core:4 pu:4" root --number-of node + echo + echo "# Number of Cores in a NUMA Node" + $calc --if synthetic --input "node:4 core:4 pu:4" node:2 -N core + echo + echo "# Number of objects at depth 3 in a NUMA Node" + $calc --if synthetic --input "node:4 core:4 pu:4" node:2 -N 3 + echo + + echo "# List of Machine objects" + $calc --if synthetic --input "node:4 core:4 pu:4" root --intersect Machine + echo + echo "# List of NUMA Nodes in a range of Cores" + $calc --if synthetic --input "node:4 core:4 pu:4" core:4-7 -I NUMANode + echo + echo "# List of NUMA Nodes in a range of Cores (again)" + $calc --if synthetic --input "node:4 core:4 pu:4" core:10-15 -I NUMANode + echo + + echo "# Hierarchical spec for a range of PUs" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:2-3 --hierarchical group.pu + echo + echo "# Hierarchical spec for a range of PUs, with different separator" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:3-6 -H group.core --sep foo + echo + echo "# Hierarchical spec for a range of PUs (again)" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:3-6 -H core.pu + echo + echo "# List of PUs from another invocation with hierarchical output" + $calc --if synthetic --input "node:4 core:4 pu:4" -I pu `$calc --if synthetic --input "node:4 core:4 pu:4" pu:3-6 -H core.pu` + echo + echo "# Hierarchical spec for a range of PUs (3 levels)" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:11:4 -H group.core.pu + echo + echo "# List of PUs from another invocation with hierarchical output (again)" + $calc --if synthetic --input "node:4 core:4 pu:4" -I pu `$calc --if synthetic --input "node:4 core:4 pu:4" pu:11:4 -H group.core.pu` + echo + + echo "# --largest" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:12-37 --largest + echo + echo "# --largest, with different separator" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:22-47 --largest --sep "_" + echo + + echo "# Singlified output" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:22-47 --single + echo + echo "# Singlified PU list" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:22-47 --single --pulist + echo + + echo "# PU list with physical output" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:33-37 --pulist --po + echo + echo "# NUMA Node list of physical output and different separator" + $calc --if synthetic --input "node:4 core:4 pu:4" pu:30-37 --nodelist --po --sep foo + echo + + echo "# Manipulating NUMA Nodes with nodesets" + $calc --if synthetic --input "node:4 core:4 pu:4" -n node:1-2 + echo + echo "# Nodeset output of PUs" + $calc --if synthetic --input "node:4 core:4 pu:4" --no pu:63 + echo + echo "# Converting NUMA Nodes from logical to physical" + $calc --if synthetic --input "node:4 core:4 pu:4" --ni 0x5 --nodelist --po + echo + + echo "# Physical output of NUMA Nodes when out-of-order in the topology" + $calc --if synthetic --input "node:4(indexes=3,2,1,0) pu:2" node:1-2 --po -I node + echo + echo "# Converting physical to logical PU indexes when complexly ordered in the topology" + $calc --if synthetic --input "node:4 core:4 pu:4(indexes=node:core)" --pi pu:2-5 -I pu + echo + + echo "# 4 local nodes near a Package (node:3-4@Die + node:5@Package + node:6@Machine)" + $calc --if synthetic --input "[numa] pack:2 [numa] die:2 [numa] pu:2" --local-memory package:1 + echo + echo "# 2 local nodes larger or equal to a Package (node:2@Package + node:6@Machine), with space separator" + $calc --if synthetic --input "[numa] pack:2 [numa] die:2 [numa] pu:2" --local-memory-flags 1 --sep " " pack:0 + echo + echo "# Best-locality local node near a PU (node:1@Die)" + $calc --if synthetic --input "[numa] pack:2 [numa] die:2 [numa] pu:2" --best-memattr locality pu:3 + echo + echo "# Best-capacity local node near a PU (node:6@Machine)" + $calc --if synthetic --input "[numa(memory=1000000)] pack:2 [numa(memory=100000)] die:2 [numa(memory=1000)] pu:2" --best-memattr capacity pu:4 + echo + + echo "# CPU kind by index" + $calc --if xml --input $linuxdir/fakeheterocpunuma.output --cpukind 1 all + echo + echo "# CPU kind by wrong index" + $calc --if xml --input $linuxdir/fakeheterocpunuma.output --cpukind 3 all + echo + echo "# CPU kind by info attr" + $calc --if xml --input $linuxdir/fakeheterocpunuma.output --cpukind FrequencyMaxMHz=3000 all + echo + + echo "# Caches with attributes" + $calc --if synthetic --input "numa:2 l3:2 pu:1" numa:0 l3u:3 + echo + echo "# Groups with attributes" + $calc --if synthetic --input "group:2 numa:2 l2:2 l1d:2 pu:1" Group0:1 NUMA:0 + echo + echo "# Caches without attributes" + $calc --if synthetic --input "group:2 numa:2 l2:2 l1d:2 pu:1" l2:0-2 L1cache:13:3 + echo + + echo "# OS devices by name" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml os=eth6 os=eth4 + echo + echo "# OS devices by name (again)" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml os=sdc os=sr0 ~os=sda + echo + echo "# OS devices by range" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml os:7-8 + echo + echo "# PCI devices by range" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml pci:10-11 + echo + echo "# PCI devices by vendors/device IDs and range wrapping around" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml pci'[1000:0062]':3:2 + echo + echo "# PCI devices by vendors/device IDs and index" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml pci'[14e4:1639]':1 + echo + echo "# PCI devices by vendors/device IDs and range" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml pci'[14e4:1639]':2-5 + echo + echo "# PCI devices added" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml pci=0000:62:00.1 pci=0000:02:00.1 + echo + echo "# PCI devices intersection" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml pci=0000:62:00.1 xpci=0000:02:00.0 + echo + echo "# PCI devices intersection (again)" + $calc --if xml --input $xmldir/96em64t-4n4d3ca2co-pci.xml pci=0000:02:00.0 xpci=0000:02:00.1 + echo + echo "# Restrict" + $calc -i "node:4 pu:4" --restrict 0xf0 --restrict-flags cpuless all -N pu + $calc -i "node:4 pu:4" --restrict 0xf0 --restrict-flags cpuless all -N numa + $calc -i "node:4 pu:4" --restrict-flags bynode,memless --restrict 0x3 all -N pu + $calc -i "node:4 pu:4" --restrict 0xff0 --restrict-flags none all -N pu + $calc -i "node:4 pu:4" --restrict-flags cpuless --restrict 0xff0 all -I numa --po + echo + + echo "# Reading from stdin" + cat << EOF | $calc --if synthetic --input "node:4 core:4 pu:4" +pu:0 +core:0 core:15 +node:0 node:3 +0x0001 0x00002 0x000004 0x000000000008 +0x0000000000000000000000000000000000000000000000000000000000000000000000000000001 +0x1,0x0,0x0 +root +EOF + echo +) > "$file" +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-hwloc-calc.output "$file" +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.input.tar.gz b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.input.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d5943989f35509b2e868012cb63824fe4f150e67 GIT binary patch literal 38216 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�?3id#5^P)XzCEq^-1m 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 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.output.tar.gz b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.output.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..3a14392fa1c318bd7ec137c48cdb4999c6ed1d94 GIT binary patch literal 21394 zcma&NV_;-m(=HrMY-eKInb=Mywr$(CC$=-OZ9AFRb~3SzK7HTkdCzmsukZVFb@$q} z)~Z$2UAyY4-GtH5Abo7iS|H#Ty4KDc?8{dtU$9-T$miJOw#LSP zFN~W|MK!dikk^WmJNkdZDRJoa!HEh7vG01IN_FL&;O*WJ!(>z591ETAO?sTQY@Qx0 z{K=Zp7V%%sWe6%2b9mE5gENUX&D;Zwu^4^;9`Ep3m`GOpR*iZ|t#C%%`)m#`$R~{m zI9Wk@a5v?zN59D2I~yJ)Iv|E`0T(k^vo`*|cq^O|*ap&)av$_T$S?;;k%2P7zG2u( zCcaPx##C^r_Pk#LpV7mZK2K)O{@kyx5Y2lqHxyScf90?I`90mA3r+Jr&eN{_-+Cvr zqB{lbY6Y2mGvi91XYv6OfUC3b*`l#ft>OJQA-1iW-CSg5;U7odAby#MUkB}=(7AbC zdGa;*&;5BGlm^^@L;0}nl|1>?jIGk)O}N$3TEj`~`q0mj%%fGfF8QvMX%F7deT4RN ziiHBK_XK+J3yaO>^Fc@TZGmcfF%%-m@w}K4gMD5W!L*g`jWw4xhhUD2cbJ!p7_5sE zZMUwqrJHSVEOcWJC#|NF_u?6Lo)a5iepj=>=WP?t99#D8hY{o1thUQSU)0oob^k7p z+lCi(Dd%Y-n)MHxX&twdP5TyqXRp-8&*5O!ymx0I_{#1p4e<4g;MfLbGUnuUvVi?A z_XR8jk*1&XWXmV(s|>4q^Dst+jdBUTQN#mW-Vb@9A6{2&{`FHFxV=x5(Y0L&MHpDm zji>vTjklIeIiK!(IZ7L3t9An1_kCH-Tca&JdLe|KqwS}ZnTA)dc5n9G^(TLf>+Kd= z0=27fn-iAAZS7??^ljfFQNO+{B>>=oUyt-{+8(>>o{(b@V`n7m@pSin3d6t6 z*SLi-P^UHjIGyv(p3e2>FJN!Bm98K6+FiFZdqsnrD4n%qdIp${psg0{X=0+eS%}M9 zhP%bkD@_w%yV05KPsuSIr!5p4zxa9C>eN{mwc5`hw^({?%fsAj283-Z-ypXnE_sOu zbse$0G$KuAE3deN0U8N;!+C1e>4^K=tdk5J5m!S_yHc9_GO6p5w|wFeROmpKrX@1_ zqY#5qDC)nj7Cu4JtmD&23r+<+A_XlchG3S?mfY&en44zEGC1%U8ysuhU*$u(?Vl#* zLErmNeT}>p8=3WsQ8~&cLsz6|9R`V29AUOQ)RT;VyTorNPS<_1Csriyjwea~%^)+J z9<5V1p@`M)pt{H4aXltBKKVtj64t#c#&p@yIvQ1v)ozet%;>aNF`yUIO^Rj8_};33 z@r1h7bJ!2Bz8qYR>74+t_Tz~Jr-tSt^a8(~%6qLhw4x462Lf#+)Us??k1SXmNe15&z*B<7{JO+lH%2`X);bhsLY%$2Ij97eI&&+zYdNpX`&*o^|*tjHZ`9 zB1rUzH|TOeZVBu1M+w@jJH?=R9WU75N4vgDF(e(|SjgDm)&)xtyV6FGe4z<5^hO*< z+Y$N*fn1QMh0=bbD3f}PRh%_zTVjU z@49XTFHQd>aWS#a#s*5pru`w3XOCZ;PTMx$*@}Cry!yTHQPst3!z;~xwkw)l^}+cF zj~0~n)y;YXelr5sBV+Dgk3fOu7G%L|GBT6S#f0~Yf6p4`aAa;`H1rWe)Ux6yj`69p zuwdH50G`ROF)+&UIX29kwr-u~)ejDzBk;g~a&g3RM^4;^jHg?zA%@#oS^hVNw0Z?$a4~9d$iOy>@L* zJT(7X-Sr*5n^F$2NCO*-2g1Dfv>}mmdM>J)~+Mak@!`ZZM#Gf zh;#>V8D}sX>GMw6P>)`r8e}u0P|`>vLv|z-vm{(I9?CyWaJHU?b~Ll^h^`pR=zK+y z-?G%8-NJ(qZDUE{n9B|JAC2%{sw3EwA#*l;{XQQ&=?3u-YxAa%0b zpBhRGh_hv`mkY9jhHYWx;JCX=W=~1RWedhf9R40F`0e1!LCLU3Of?3Nd;9<8iR`RM zV^r|i@Hv?pMQj_H4eGrQIy8B&1a-vzT`)TT;_%@3xz@63KDtUQX=*s3m3RHSfyvSE zq%-?{ta*R^?#r68b_4&%`!x||O5>OI(6B3j-Ud1Q%X;9(iXe*&=KOgl@T!;Rap%L; z)7qrxbIR=3VmA-Hho9Ry#C^Y!Ti)}m{!4wvN)YLnG3((mKf8zsg!1oPg0Fhba{G|n z)QnUiRO%eN+|-;$``Q|YM$OME|L}O2!TZ)AOIkK#U!DF^!=mgm56_s5KyeOU_cKEZ zyT6tih(`5LMz2@YKISey0yPNM`U|3^dEl4qC#f@&q z7$*Hox8)_=BA}2oE+Q#^mUm ze#)W)CCk{*pJ`Q$wdP2O@Ny;}}x*luXz;<{w+NQ0d zF3rXfb8Sp)4Q>LJZjFLQSpR|~-3=%+hqY#aQN-A=S0Sw5u%u~1idD==HCbnpRR-yA z`0V-0ltz2ruM*ii2Dzaa-76Vh3F|+eY@QIOliq7WmFj}Fw9D8AO<@O8BK;x8tre#im>H*nd`Em-RJjm_G1nVlJ4mqrcIH9S)+=Vg}8cp?3(BsSBHF;*!$TGu?G;)Q$^;bfmVw*{tbaxKcCVB>vHw zQ1fb-=sSQd;{fjhWCi9_129@C@K#^%bg!Lg?O{kIQ3|0IaB{!yyPp4UuJB6##aKkz z7tZQxFgWGY8=ZN@DE{ep^W5IEdZldmp4R=dZO!m-ZE`62r4-!;Z6))i_3|W7ZY8R> z*T>(2-ncu0QT3sBj`*P$p&HQrOYGc#bj9k^z8X;d*z3Lspx8w_W$3UNTIo%_=&ivo4{9|Hn6b;13wrQeC(b|B9NV81Vp76EMYS$Kgio%}T) z|K(ot8_u3^{B4J~4yYO9N3kftdv`~`>({IW(&wCoI?hd9%JI2>qc@MV$fvz1)6W6S zcYM-GmgcW#eqdPb9fVAn2eB86B_oF*u;sWHpNwg-l20i7P{QEV>h0-|0!x%;U>$`Um;+Q++n8eiLHHZgq4drC3 z`@GDOrNw55USY5pmgit&goV%hwg=OciI0CJ8j*H6TJzQ!{(?iF@;o!Ha4sp zPqlttBuFjMta|9vGw_HE`V;Qm6OEi^v(i-B!^R6^ke8Gyez z^&TMa^A&7f>!LRqfD1W(K2{>!}e0HG6HePBz} zwdK3fL}2o^9o4W3bBmXQ^UqZp*l1VhQyQ&FFn0UtE1%}R9Mvb?c8&X`ik~n5IDPlQ zql1pE8O1*UnHYH5L;rZ}F*f84L=h|OOu(h_S_YuFO+WL=76~Wy`B#I?KKXw00sl)< zVg*#u9F_mPOw&BhuTuRkVs~A)vM@!?_`y|zxK5U*0p~|K)~}kYyAF4rEJUoUsP5{- zq+W-??yu@^SCtLjFznmB3n-(_jw;p!9jAt_JIfiZ5*&X0;B76n^Td`eP zQvSDM+lgit#3rhYmRt$h-M>RT^mOqaY^mvQ?=rh<;mfM88eMm;OSf&6UrU!v$`;mN zV}pqeV#BGfD(%%MnqF~xHBg#_*i|=ZDj?Umvc8UY>{!QQr-wy(FIDbd#~OBn>K{VJ zJss{b;i34^gl)JmlH)MDfY{uF%r}m&tD~5}YRGMGN?&Jn`Z+ONk-1r`(-d3&nV6(y zT*eg%EQl2Ace-)QqL%HAW;uXz|0#h~WzW@FbgCqs#xV=xV|7%{-2s@=%Wu`WdXgwI zN?0XEf5aFxj>@8S+A18c+S%hwSnAU|Di^kGwv*6! zT$>d;{aL~u<^o5)kY;w2v^z$BBi_`YRve#hGh3inc}3Vb?p?cHUtp+7a;?e}k^YXM zn0S?e&dB``t*Vp^BWc@YIbJrX7epQ`yY#{HLaxD}Gp{k%d%ROEEuM=AeKL^L24+6- zAk~UYJ8*Le%s*_?!<0^eN)&2%CBV1VJNZxb>ZZhG!al;nYe|iIhTMGDRbxDEB$SwKps>D=0+Am;qZXI$x9|4v|9#)yixqeKxvpn6PwV1)#cW;s^K_G>g zqIfVtH%P@ahofZB&`n9G5PRu=U@`8jp^?$kMzNgdEw{f>(+bx4RO4o)Lfw;^hSx^* z{{(E~ynuQfeA6#!>|Mo7g5eQii{&{mOU58EXoaEWApPqmOblicYDY0GfgGpC*)%Ug zJpmRNE~D#bO?tfh4atx%7wkt62|d{HPnpie%ed?sb9bn6N4)*TkPXzTkkhu;)PSD7 zRD&TcFsmB!^g?cH+cw+eIk{lt~?l zGuK|I)B(EEe830iP3is8^Ot6xt1u6*ueI+RR&*Vi#QED3gU;5#?hMxSYL1*o&&l6E zL>8gzER#+K9$V$qqWGXW8AjJ9`zWXnC_xO13#aS1_XSB8e_`qqI`CPQIwEtHtxC+b z2KbVih{jJd)D&kP;#$qMNchkc2Pq;I)|$z4i4w?en=1R1S?}abfixkZV#VcRQ$x~{ zE069dtx7Y^tn2>vHAZkVhf0^ue0fK{azqifczd?;D|1BzSBfOpUR6k9e4Mf@1|@+w z&LNGXwp|g)w5f7}$!Whkj)Vij=Pm1KES++EGH&b*Bor6jJ4#_ZE z4L3pf(txL|XEJK4=$@G4I453A5_13z+fkH(Gvti5R9lh0^ckQ*PP6sRUh`95T0=`_ z1wbyj0@#{#N`Ca0s62u`18g@OOw|Z)ZMR}hSLS6YgK9K=*efco*?jK6-G$$(Redos ztn(^Ush7>$)Ryf6ebGX!+zE<7B&2QpLes2U|7I#|jtoQp20!jCPH=T!@bLeoxL> zzO}i)E!Vpu`i(tQwRxRILTQmBR1NF#GmrX=w)HJfE7TOo=Tz6ln6$-Wq?Tvsc#u0E zkziHRHUcWLcEmM#hoj!4fs~HxKa|eZz-d=v0K zkD2A;&LLvH?ipSFO=7;L{|zZl;Qxe_pR8i6adlVTBgnuDq#<62aE zLjoKe%@5W}-L=A=BV#QzQmsL+#(gx|a6;!D%@o-mKiC@?8-n59r%hhEzO%!6b!TvHeb@-Mma-yts#H!w93^Um8O z=%3grZ+aTM{gR)8_=B~5-XY|4?13uL{@;L5uZnK6D`l6>$dp<4)`smJ4CcJSHcn30YU-G(d#?PO?$mvGA%iRiP&cDj#4Bb zV+Z46mwtol>ih8b-dW#li?z*~IZ?kM(>FU4X8{SCnP_+Z{OgvzA?LlGD^;STOD$b! zqgq)_ASKs%UE50}#s>{XB!oJ96{D#eX`48&hue1y7SXM4Qf2sNm6`j!RES9=LEjI| zn|q3NHEqlQax=SpJpy*ag3Pk$cS-C^+IMc-MSWV!Cgmm7LitMVlACySt%WM>GRf^9H#F69@$ z`HP;2^$xP!!l3o5guh64<_3h{q;4QkYRHNCK2#-Lque~-HUFYgn-zo&niNO7~=hO~(cV2J|NqplFOv zTDQvcVpa<>kkYOk#_uy?4C@y*W(?aCHe>{|Gr;sLo74k4#{@HE3>$V5QMedp(=Y&n z4%J0*=Ct+qb_VZy1|@vpbfnFHNB1aHyrJ5 z=&U7A4F+4alkJjyvt}Oh!Y#;JEl*b09$DPLMkcql6pT4~#4h1|neQc5g4ZolOOx3t zvEwa5V`395ysi#s#nYKS(rERp{rINstTGg`SBliRFf}U+ylBBcnl*Xg9)v7Mb$+h~ zEU`UG3d|;fVl3I^d-|o4%r4Zj&)&~_H3#ww)@a+6E37Ml$-_#s_+X3^%`t?Z9@xYH zT*irV>ul_UP2w}hNaY}5m~YGVRRb>qhy1okEPlM{uepF0Sa4>@mR6hgH58Dp0E~*V zATz$ON(CvQXq9hJ8J zWJSc~>%Bg4UbBC<)mXD1_v+qsod48^_%7Dz9R2#cP+e5>8tpFzzK_9MMklpkM4}*t z(;{U|_kKKx$eut!`LITHqs6XuR+I4ySoA7s>Px*qT&Yxc*lh%?Ev@d+=(fg!^k!p< z9w{wlrdkJn^#ut6{lLQAeIh4G=9ne;;X6)JU0}uC=spFFei}A&Gw%;@`zt?jN|qmJ zjhO3C7e>k>HYI*w)|t}!(eQRo_Ita0pA-50B?c0F-){wW_yI*G!My-V zO68G1Iy8V(SUI}hOXe$lzbOt7YZSEqx9sDWrsgPsUCodD!yY|cGNN?rMAo58*My4z zfGb7hxFTDJqTKwt<2Y4);Gf9+D#IK9A%FY_^4SjmV*v1-AohjOQugysWD39=w3Q7Y zJ~NsbzTgh>N$a^0z?HE68g&%NeYzB2@s3S_%9uZoJ2&}Y@~)C<&Xy~^n__q!H{sX! zk)s@NUaDrOaUzZB1aR(+gG<%zhr&_z_%-Ut}a5Y(*Hy z>j~uqY250^!SH!40YH*)Lt4r@^iEDH}T?{SXmRu&tU$R?Ui~VRm zdsxTvF0+$U|3@pCU? zt`YWn`R#H|0~|MrVcCAhXoSnWz>*HZ`Gl2O-g6p!d++s+M)QYaf@5fujWHB5obSd9k#idc;f1rAt3 zwkU&RuH(_ZaQ$^ypRlsrjmE$jMyKHbgnt5AMY8Qbf$X%DB{MEmVHHj-MWKHH&jdfc zZZ+DlZWah_3adYxox&{-J1&Z~K8KosQa_`?9Jp&)4eGH54GMtZP*8_Or@{FHUN^1h zLD^GrRCw^A*nB+fRAVpp!=zN2w#NTqrQ(U%yYRU}F=CTw*0c7z;n}O(PG#m3{AhIC zr%_4;3Fu`^YNdzkp+ucwUCEhlvoAze=ubs`hj;&0D{QVEq97>wQcKG;y|+9O~EWy|KA@7x@oXk<=D2(itr3V4CAfDd%;T`sa#ZGfyHStc(b*(2TF8iL)IUi@C(@W#p zC!?haG6jOIZ5#vOWJ->LRv1uG15S?DHu7e{iHrCXij{EQ=Uk_vPl6SxPupF~^pOkF z+BARkFnH1$-%Z%Gc?3$&XQGdw+=dTG-ysc;?8%Uw4HiNMrm$m+Wd49cWn@|2Z41fL z`r}p==tV0ja(62U@%CxEmz;-J{f-l!7b5?wK!58xADap7E!s zRZHp7!6&2+pwzZzJU@Fv8P~m(l!KHcTZm6nQx>~BJdZuBkt0KLRM{u#my-E8#!mQkX-dNCPhaS8*huWz1|4dFf#Mar_G%bZ1dcAaIA!H;F>%oHNF+ewY zQ| zrR0cM&G8C(j~CBYK%7;^`xQbDy~L3QVIf3`K}O-yu{B0&P`b-IeUA( z?hc2m`P)HbJ^tJGF5ztDk58uzAFuRS90{tBY#KY0gdit7mqr*wIgMoE_H#G1?A`9* ztoHip1k^@Xqecir>k^W5E%9P5(X!e5Kibcwv?q+}Cjv$)t9R<+qgQe{3xt|Qji)PK z?dda(Mtg-dy!fbbzuvS*5|EYbz#$4~IUs1)cmb|I^}F$Q7MB6|Q&$2dgd9P#)xD(W zbMtS#tD~T|?Qgv?JROXW{xU7-s@?*k|x}=Dd~aT=A^DghN%EMyFwH)_Vs>Dg%cVS84td zROv0cohMZ$2Mg?cy17(%Y8vwOJ2?xD{ugXLhu0773&>=T)uM>hbLBE+2i=wX)yuVU@Br<^Ij+6&oAo*aH`4L>%kfY+=I zEqUOk-IDaRxH&Fe9&ihL?o~vd`RXjo4uJ(auZh>#;dXt8!fkX7e|hVZ_{AQ!_oP-- z(&}K0T?a?84V~zQU|hNmI_kB>cp(JGX^RTu3IbllQL-0wz)=D^NX+^9`}WLW#hmk# z?CuQxd&r1G1HQ3RUslo<$eYNU8LyObrZYC1ZAxNcj*b(LgV@Wvfx|~0XavATA83HUhacP& zt$}&?CW^$nk_shcBap%DZjIXofF|JKItT$FU@smIPXnrU#tFLFmMnD030Bgm@BJTj z47t>Hg^jq>K){W-3S4jKHR60ph3c~h`mWc0%|BLte%lHFH{xM83^w9p4;(ZUz^ku2 zh495Zj4~0Z#y%G^5()J!gM4`kvg_NcBdM$-t|zSoz9S=vuWvYn@NGGSMHisMv5x&= zS#qw11_`m3rF0CYg$JwdxT5MSoI*fLZtmUh$O@U?){j*T-)4B&&PIi_@|FxLt?QJW z99ZNLcVa&}gENaIu+l%dq{Yt-!vxpbt2OyK_45zdh%YF6BD(=*=h#SQ3d%Wq$F3P6 z{o)@N5M=|gW-$wTa3q45<9kcNg;cuQyIQrr_ z=IZ*V8Tl^{>DHC1SXn^}TvUcm`*4gqvAvWeJV*BT+@l;@m)2iV-07VB=!OI z^w4fs7(=bImx$*+_jBdm9igg|hnO^58mwKR)Fv7B;;)g0GV&4F?%uAXrDw)k`F02S zAIPJEP)2Bkma#&5jCkhSJg}z)M<1%HNH5wh%-_DHxnN&n&T{1pmhNnMJrt?8~L{=?V}vhdHhZ z>J4*38?#KPL~b$3jW83a%2@uuLU}@Ojp^rDQNH;pzvjio`IowFCYQx>Mfrgc;zODL z;)Cd>nGoU%q&*QTu+|G%re_`a`b^Xp5`yO&7ZYRud?clSN-P9*koCaTQ(BS>p{X7@ zK~&dXb9YCz+WDDZ*~aIF5oF5;%USF#b0*r?DY+%_dKXAv?p?&JPwuWSV4y27V45oL zMhD>5WW<``*?Jbf{(8GxY&S8c{~UfjI{wJ?lH46F>&UF1>yW5&CY~Wb+KWug4J(~B znX+`n&>wxZuioaP(391#wdzwoQGTMDDc-GR(8H(d=h-oIoT;JNIiSyyg5KAHke*o< ztNHsGRM(zWT9qnUe^#J(b?8UyTPjM`1;^YJ)K+pkP#I$VojDt|jYP`~yUXuX zyI&7;P&^0~go=q88SR$Ah<>QAEzYrP7YIWRZF0@7#J5=jjsg;pZys8JSQ!!t-;@cH~WOUpN%h`}-ymL-}KI-@5vMFyt_XI73Po zU|(N{w%Uq{xiQW>jtq>uqVSQIt9@|Mm#c#C;g>gJhBo>31(y-k+NZ&VJh(EbL!C+Z zDBy)WYBxbZKprgM!Aq(O>Iv;DGT)Jw^eOEl69@i?QJC?1jG-9GfWS=DgSIZQ6Lc-Q zTn#UHn=>%bv5qF1x=|g9hkRWhg^LcTkHSMlLRE{XKMci0jY}~#_g)s>7Yhw^ZKjN9 zdJ4gG;`|t6u#@B+XK>>5ky0TZNyXAC)4xAoc&b9EzAc^p-WWtg5cUVk(2>e#SXbRu zy39qBi=$K};R|{k(%>Ti06z{n>WDvc7?)?0KM>ae9;U`H&8FvJx-UZ-rc5B0Y-51! z6J6o(6dR)clS2h1TS3yU30Z`;&>EYOZVH4pVh?=^gA6wvvR0o~ooSBAmaGl6y}+u- znMyBlSr|U%9D5Wl?i~AHt0y7E1ltpXYR1NnRELPWVN-DJPmRY#7$)E^c))NLgWN~# z#pg)31bW`kyAaVv_Z?S5jJUDLC=Cq*rG)D7;XDF?5V2Q>&%e!nXbhcoEfiW&>VMFa7P$qKw!q}7&OJz z5ZV!be}h&N-sky7!My(oTxIVDpVkBB|8kD-Gs;FQD*6sJUDd`Y-oz7(6*1J1chx@R zuzwXv_+W6z8f0qMtdaRIgX?;FYvS9&fxZskKLsv?jsH4_=1O|)>|m5qdu;E9T(KpP zp0R0Hc4^&zxvF_2uj6cPzhO&7{a0!s=%ed{MPqz;-g(LQtYljvR0sjovfzZ?6Def-=7Hvc<`Ez;s^Q6OHhawH% zWzygo?_=dHpZx!HIllldV$M5Xa4%3rbuZe}bw?>;7+yz&)^`^7 zJ+!KmiVu8PJM=dj+bFwhu0GVgK5jUc3#SQBorVd*=wMCdqaPf*(*F=#15P&lH@gW! zcD`a=YXChS-hR)uS?bd*NnEXfj&5()OP?%v0+#G5O1iF(I-c%#NtR7so{5C>%z6{? zQjB)?g^&1~vCIF%#i&A_(!3V`OT`2uB#II7#UNv?sB=sXA6j;OWqkI)p>bT?r`BRq zJ8i#uV3`bYd^sO9Y;`AA&R~u^4e&WI&cAm3mZ0n?HNp0Z_4^!G_ZM5sR*q3k%d1Hr zy-IxNzMmmn&9-crhfvsb9p#?6%Kb#GxS;+1+St}n{%NjmZ|~Zjx1+=!matP$C1A3m zkH-&!!tZzsBQ%d`@JkOrYdY~3%I)=PpQCZK)O;?~-u`EfxZ_r*OD;ua@CeSENE&=y z^cs>!`t;|X^IyP~^6h1pchBJT8t)EWS#KABB zfJi%T-3E;&v-(rZ_TB{67KWnijnu27a54{Dd9@;VHOR7gQ78H1hx?J|(b`->56w5u z^Ee@D-!6VnytOcy7c$5FZ+_?`9MB(wr}Zo%o0KRedQ!z&lzcjTuUI8vS?=)9!r#ys z$=V;RqS0?Yb3@NEO^aN$bl7!W8qhSZ=%dP)*2JwFOX{DVwtt(6wXAtnSvGa6c9!dg zF3G&HBk)$~QZO)fMm5YIK^9&?iVrlaEsY#Wv*0)<`6vQ&zNAPEw%}{WrB=g-BB~i9 zOVD_?kH^aNux>akTJ9fFn*vB|^SkQ2`nB2(yrY4jpSpIkay= z4!i<3uqhn*uLyMD+Pwm7Bj*}|83-jrCKRqPY~b;pxS%i*p+O8O>ORjf1xY;1t6{CpniV1l z=WuyBx=4d+0P6V}H|OM2t|G6f5#d#@&~>f!LtO%caYAGln6KiB;fC3S_kBcC1-J99 zAy8zi6Jz!Xdtn)YG9;%FV{3-jymN#{#6xz}Jy!a+g>4-CAu`A^9qzK3sYFeLP}%3@3CP5o6G zP4i0@cA-PB8d?nL^P{;uTcuiEHxz&{lNY7_1GIj6swg_pSoa3D)RgT1`0T0W=kF6+ zwBv+mGE~)Dv9jYb=)fHMhv9~Z3goe$m4~n^u#9eqfjv~Z%U;lbawC+|ft3LhOg6Fw zfsK8q6woXG*BaiL#C3#66!>u8aFwlv4Fp1GTy4;8F6#)u?kNl5kAdb-Cr(GU0R3mC z_dhcsyDw2s-8VwM9WJ37pS>tmYm)=NGDZak##U3fB09H)ybyNsZjFj{&4a+*^CDQ% zH-O)o0Z)7*P`ckM#F)Fnp7;aTQgtA@@4k|cp%I&+i_wwmjG|tsg|qc@H*g8Z8x$3x zp9<8L*r%ANq80&&urSNZ^bbGv!{5t^B3x;qNq7Y{6oi=G!&NaL2A#h3Uu^nU$tG+s zMLrO#FLS`h#F*cqo^o6vAdRq|+VetvN_Z`^N@Ktdj_J&JL_X|@|IIgV`+STUbNM~m zhAvo`E9sk$e|8F@C{>1}Qo#S|CE}ZpcD80PvAQm#jN+*rIuu=~ZjLA(4E*bsudl1q z``fX@cQm0F0MaEzxXaFYZC1KJ^sJM~Y2>xUIufXT z0Pna6krFQi)0-C|Si-bO0MYl<<&Q%AJ^N~yz%Iy4WY1SG@k19j;&mF~haxCN4mEd` z9yRzvf9eQJn)x0$=m4N)}vdO2m2%)%R8JT?Q? zPLTbIWAB5DCsXU#_i^!vnpymGK4kerB}XB4&aR{}lkDiP>i6|6bw0&c@2yOfwC94$ z6AMIo0slt|Jgssc3&n{kcT#AP^I0Tro3OW#RKA|9Djmx6qy4pZ9f~{xvxBAQcBepR zU(Yk01|0FX==;g3*B_7ZeZhXNj;m8Ezmaj6TMiQMGSQ{IaM*-{n;~T|w9k9!J?_yQ z=cEe&Eih^3Sst(I;hcF5Hy++z?q@o>T@z*!@Mk``48vRQ++;dK1D%xM{n_`#E<551 z#h+TpwQl#NOQ=!@DO@n6auTs$3l?qw=Ff;R2bL^3?MMM%yr}L4Eijs5^?yh5ZsmIAgu7}I_c7ZLoDV$;X1@#q44^8Y2mmk`QqCfO8#!! z`$+yyuUVVc>ACU6_zh)p(Q^7aExJ@5>ICy%iurBruh!Q)HQ%l8uQrbtX3gq_BZm)1 z&RhXg0RlgRH%%8blueg;j+pMSSdhWxKw<6HqUPz6Kz$Zi4kjxOG|W}>5N7YiIEi}P zk#Wuu(gMd#RhQqEl} z7`Y{i<~a-U>enm|f)A5SB^Lj3j!IgRiWSzE)u|thnvrQ44QuP28zYO;s9A@qv7i#F zV&ahG4F`1{X$d*?oy(UihVaLSzy{q^iCxZLe|&(u?)RIIouVr^K&zw1F(B*9#pX?3 z^LpVo05q!)%JJLt$Be`JD(we+)CK@TZ(a!xX!St>#%f>YcfFQn zGc&)20VM?}%CfftBF8O9{<+L7UUXlrt~YQ1YY#SWfV{SI?}fshz{SA@-hqEa$Eq{) z)C(bO7uJ{gfyESn^J;XV=Tjna&&*oh6L-p$#V?(&f_99QEywRyZs~AAnZl@U+Mko? znbY4_4OZmw1Q#$g?5y}#;vH>09hwXj@&`d%7($m}zT0<8hy1SFV%`Ye zx3PfD7Z>;1!?Q-QhHQtd5(Z#K+9ViT*b<$1x-Udsyj zAl9rlqm>02)^)FPzq}&0+frw{Gk0`VexIq?-ahjZ=q-+;J2u{37JI; zs;l~jT{KsJN{8cbkaqnHZSG7v7g{W(Zd!P>Pn9^8F_Cxw)Ux>cd*}J-NtatbX-S9_ z>9gP`{+O{|8$MOO>oSQY~M{epnE+^^Fxm%|Ld44}nf@pm`N2&qf^Tj_jJSRBSrKwCH zuK(eygZ|~KpR<0rrsUp9@S7d)?JM-{)|{7wk+12k%YdByZ^ByUH4;czQw!Y6AzKQ7 z-Udy=2^$`g>=aSu8)~}BR>O$#UZ9=bl3TNx6r3gLhR!RDI^pSyAt^HwX?_X9byE$b zq$;Z+pidS%j6}=11zAhcq0`nMZE>tWjh+YJvL8|x1 zTN0&PhC@yzO8)HDv>X`ehpem!HZ~j3xMMY1AV3to#onwCfkMohq(^d zYE{hlci9Xu))>J1f0*kof<#Xs2^x+?$81L$2qdmQyr_4lfCQ%@Gmzjc07AeXQ}%=b zdz^0G-mbI?n;jWbRFY647=s*;l8)L>4~L7{PltjJ-@j4fKCVAk&d$Eo{?VY-cvgl& z8BPY?1xzHF$l{Da8R&q(gcmpX%M5P!Q3_FLITk|9i9Mbyz@4%a6jId5rth1WlMP6i zh!dxj8Sd_*CSpNL?C*FDIZ!Eh4}Typ%Sks1t0M^n13@~Aw&bdeqs&O!XzPOqjG-XmJZvY9EBl`!BzH?q{up!A5Lm2Kx0`~}j#QlgT)!=2V8 z#;^nSA$t>9b|DuLNN0+LJliUiA$3;nsa(eul_2BxxpI5)11+Y+@OZT7sL^N840s;?&y}!Pz|tsdk0Ia>XJVz|!qvhfSX3;|uI!LtX^Ka0YdO z4z7Y<29Ty}W4ADeU^sxm@eKgqY$>`#eL=r)_frSJ%>S#R(unAEQf{i%3hXzF#utLcdqQQZRKE5WH z2(q066hR)Z2jKwwkMG)sKyi1qyDIOhabY5l(Bp>!o`LQS8+5Ab1GXWmKp=;lgwKJ_ zjf<|rg^4;shg`P(S<=w$&)o-Fj~`vfAr_NAMAQl7O$ZIo0>~Nvq7gqwEDIZn0@*L^ zq;ePQ1|Y$*_z(Mq_YeDJB9$y)FbPMmq1>#N_rtn+jf8n$}G3@7RF_q`_hni00tT&~0;2#FlgX_WTN_opn-&uzR z>WTMhqe1WrSoNJ4Ml&XFN2Y|5 zJF`PF0yJ;7$8*2M>gb)gP=onBRBY9TP5P^h@7dcs`xCyU*?e|pnkczcO1+I2Op9IOkMajVDlo5uQX9HJW__~sMy$(UVjVar<%*3OvdZ+EI=23r0DdrX z5--l{dl(6_7ik@i(N@A=+wSZdLIqDMwRUBx0Sj7ft#qsqW}M*z#fvaUw%BgP;bb*u z6hnE(No*fyzHhw`$<=AW!MQ>27t~2^d}08hK7pgbX(TZHccERxcv?^7mkOxbLdP z5}-#E-$a?Ip`{`m2sT^tig50Wd|n07?;UAkUqj}b@a~IBwk8bz)V>JQwsiW1Ow#3D zXneUg=rQExOq$-E8nWy8=Fui_ucVbuljB;SGEOscoUAO0fC-2%Ex~gT=0>pUa1jYF7_#za}G$yh5Vj)xzK;c8wJ>wZ&`NEE=VX^yozStbNKu zPE#*+$LA#%B~s7uM^{}JL@s%9PzuL(R*_OI-smSZYdm^57___Yl1d@OKxo-ul(9tF zJJ<-)US7e?|LWvCgPQu*HI9D)>4HG$y#%FeXi}mmP3gUNj3^N4K?J0R4pL0$iZoFn z6lv0t-a$ZwP=Yk+Efj&Ajpu*noO9>S{cyiL`@@=9d(U1oYu5XFo_F=?SuXFgU5&Rn zRte|uzC!isJj1zuo1!UAm8uYzQFIhzw=K#azs^QpDki4akSf?JGh!b3mhr0;!2Ja* z0q&pD%s70rZSLUVECs%tS^8QE(Vbw8V05G}-BTXY4)53nl1}efzKAyOVkg_!(23>S zFF317fP*GSgho8TY543-Ejtyg9|K}9Ygt&{{Y~KrloVg$E&O)ua8N>njtMN!ORC}{ zGDo87Bf=eV&j-P2cj-k;cvf>`D(1U(yha4VADBhmrIXa!6cBq^7o<3a!{q=2+Iroqmm!x;BPi8&R2{|{;`kKozikdM5ylQpDt0(t>1 zcXJ|&-eLfak7aY0PrHf!e2GXfntpSXVD$4DA`zn;DsP{OUk$6YKQHd<(-n{T;U9o|3 zes52$Tz>Svnz}U6!j)5)y0mQk8bZ+b)bTQ-&o>Tf%<^MKY*3lggo3E2xxGn33<cw@OEsQjUAZfl)^2+<{S!os+*$8UxrZ^8UpB39e?8QA~`a z;~Ne%`M=SCXF9KD>~7Ly%mr1NRHi|SN0n2%_`M~87muG;Jo+Sc{>>->gxV;mdtS*v zT~zu`EraA^c|ET?BQLkAl=FM}H@qZ}lUxl8>!Yp;&;zZi(W}S5RfnW1p08MDWs!>U z49tqp$eARJPA;sA_+`pMvvVjiMQ9b-_@K!>22aBz?qmUVb`8m>^9nn76_ijN?Yba|?N zFLB;c(QbYbiCx74Wz*86UcBW*tiY|?pZY$hmEY^(lL03mzu1w>A{#Vf$@}mVwRye} z2EHn-4hr6vD6q7&!HO^?7w(+E@V~_{)0jbvM*F-jxx8IAe1JId%eY30#m@=if6)iUV3c}c4xRWJfqB0nDN zbGVMubF$Iv(0!Ur8eQ?By1K4E5y1FSakcY-pH-fHr^**?ykY!#*@@W7T#x@UX)I?w0RLxblyB&Wd4wnMpjVekCW!ZU@SoBBC1Mu9;El`UpwXi*__SUGJokY@@F%L` zm6v|s7$w=rzDGs&yiJcwA3RMpzA?4LUpjy(oYA%-Ijh+NZm;=iTRMQ?$nX@tW&On1 zo2|+7X7spWJ9|q~un(?AZ_aK*-_vh(ye{~at@g}9vCCeUvZ0WMTFU9t4+kWu!q(p( zK4Rh`NjYIydj~r=l2DgNv-@krP74>}O?f?KTiHm$*#zB;jxoc`6#+4I-I|9|bkh(I zt6lq9Wr=lxiyXUl0uVj~BAb9*BoG68j8?gUh$3DztkoLxWPt|c_G37hJf?w}lrjzo zAyS4nkVzl0s+ROxuUn9XH&p8KP58aK^k3s2g4tC5HLlC3`GZC9Khy6x3$=d@Rtmw3 z_x|Dp`AbrPSOEdT>#K#2OKCi;@W2PQt*gjbk)_7&c~ykde)((Fk%s@i=zcBZ-zGK8OF?w1zpkG7oB4 z<+7i=RV}B780@h7ag`6ic5|3|udau5s^LkF1G}PgG^BJQxebq4{E3?eJtEX=4sLB; z*D2~4{oJiAb?4w_#EO`=pcT}smpRv6HttL)Tid=T@NvqNK@PL%I-@nY@;Cp|XM{HY za3sxhlFbT}M4yJ-_(o&C7jk7oZCQK@8kKzY@^>6G!oa(bA<0}D*D#p2{(VG?Cpr<6 zg3EN}6mvoBeeguZb8+r{OW)dSI34K!V3Rde7<{j-CF7^$*^K*@V^<{Wfp@^1)I3sYe?)3b=l1V!xlY>B>Y;W5eq^NOmMmJeKhcH!z+sD-y8x zrj{4IAoD8BLprbxwKFw))IZ|)@cw`rwiCX4GteT==2(txZ2H%`D>A-^jB7BN?&ng^ z&1ZT+XP;61BbU;nQT^MdbuJNLX7{`q=y|!>CwQfCZ+&xqJ{Z$vAu8X{;CJvVmvu}B zz9oUz#h-;9*e9lyomuveVczE%>9Z_oC$hn2`$Zq&joh?COyPGmH#rxdm`K%}pkKqf z8!cub$Ft(7?n2}wV)36$nwT>?+Fs;_f~H3)sFYuUz0p^F&*Yloam`Gxa-Ql8F>D#_pg><;i)}KsfsjQ7c2`c7T!7BRlsF(T!>adFFP!(I{yy-h+`nLK!M#P0Z z!hAv1H!1=AETfv=>eav2YGhtzE?to1E}wOSm_i2pL7p$tWA?r?&H7fanMEm^1J_3z zQFi*dNYcQ$liT4AA>0PxWoEJ+HBVc2XA1aC;#+P=*-mqO%E!(1`>e8%vVAWmn|X%H zcCIOq7Vr`0bYS%hc)PnR)-Y5T9^x_E`JGtPP(s5O{kl>wJsgNZyOQTZsKg8A(;vKF zu~zDUc)Z$;x>0ZFM51XSbmKul*q;r}7yafU9nK?xw`T>KY4k-0>@Py(Ek+?uKkjqy z|Jl^qh*fMfLrGL^G~2?JZHmXtH2Eg-#cO&nni*uFO&Gsy_N67jqDnl9amLVzoZGXD zF`VmPAGBw$l@5BZE3zQiIwyXgBzd2R{#uYE4G07X6GhPbZ!pPt%Zw&Nq1W#8cH2zF zAsYTK$)lRkq+k5_h``N2JSV)x@IfUSS)yfkL!`GpPC{0*sFejDOn)s(G64jNkxXEs zhdKT=Ho0;CP+~m?|sg-jLv^)5|2`s|fzw{q$2-C!RS8F5r zW$MfCN%jfT&~}eI`^KJ@R^ysYOABI`uZg*`EMS-L0(ic!s;_A&D{#w*^Hav{kEou5rdMkt+@pk!6bv^zrip&N4BD^~WFc$5 z76ela871QS*$_tm*I=nd!6@&Sn_D`vYY*7;womtcd{!|8~SEF?hW%fDcGhkX_rK9HkTfPP_6P4#{beR2X?Jh;M23<6&n8SvfC#0R# zw247woisZRLF_uoveXN7j6aO)dJ;y<3Q}ue!VRj%+K^9P^5&CC`zr296g!o_>!aA< zi(PDdh17{#wb_{99)7{3JGhdJ8dXivvB>1V#1-(56|%UU=+50`Tp;LW8O%#ubK1dfU6+vi}GAvhVU5?-Ccf3+LXe{CivWIR{Z zlxinXrA@si&|#er+o$lgKT{RW2X%9GBORsCVoV8Z`|ir-bS2%(C0KO$2l1dd_eTUik$PJ!mFfZY6f5k0R+dk(jy~$&K-!a3(ez=KtyT$b-!}`>^ z%;v#cp zzFX6NLhC`{U3UCo2{d|GHhbmf$eT+Z93@a{{=^3pPF1XuMyNHe$!XS-1gq}*VOcE& zeXFhb{LPOIzFRn^s@anw;6f12M@1Z~P}wI(O=?28i6E=}a>8hjT^a#)w)*`GR1x=U z^SsZEcYfF;$a9OFy1(=NqS=Em99{g5EPaIvL=b1RI${*4Fzz&N1-o9KimPRS=Wn)} zPMA@^^N)B2ES&uV(yR5Snf!#kXAv^Q#@|eL;aIvNxz_8a@{?5e_pIjc9Wl z5fqqOZhu+lCNlWrg;j*&Z@&JUuy&e*_J-jJENXHnbFJRzY-61e)fTgSV)v3)#BH3G zKIaL1+PRhIceY@7S#Jpg{JHC%-})@1;Jx53=F;xcXdYEEvHogZpD|y-FRkQwH#aOK zO4D(a-@Y#sKgu62|8&cB5m$6c@Dua8-Oj_JQ0|Q;%|+{Y)WRY{4tTT;><}(>U`fb{ IbV-Q*0mP+dRR910 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.sh.in new file mode 100644 index 0000000000..a51141b3c0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-compress-dir.sh.in @@ -0,0 +1,58 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2013-2020 Inria. All rights reserved. +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/hwloc" +builddir="$HWLOC_top_builddir/utils/hwloc" +compress="$builddir/hwloc-compress-dir" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +HWLOC_XML_EXPORT_SUPPORT=0 +export HWLOC_XML_EXPORT_SUPPORT + +if test x@HWLOC_XML_LOCALIZED@ = x1; then + # make sure we use default numeric formats + LANG=C + LC_ALL=C + export LANG LC_ALL +fi + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? + +set -e + +(cd "$tmp" && gunzip -c $srcdir/test-hwloc-compress-dir.input.tar.gz | tar xf -) +(cd "$tmp" && gunzip -c $srcdir/test-hwloc-compress-dir.output.tar.gz | tar xf -) +(cd "$tmp" && mkdir test-hwloc-compress-dir.newoutput) +(cd "$tmp" && mkdir test-hwloc-compress-dir.newoutput2) + +$compress "$tmp/test-hwloc-compress-dir.input" "$tmp/test-hwloc-compress-dir.newoutput" + +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ -r "$tmp/test-hwloc-compress-dir.output" "$tmp/test-hwloc-compress-dir.newoutput" + +$compress -R "$tmp/test-hwloc-compress-dir.newoutput" "$tmp/test-hwloc-compress-dir.newoutput2" + +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ -r "$tmp/test-hwloc-compress-dir.input" "$tmp/test-hwloc-compress-dir.newoutput2" + +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.input1 b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.input1 new file mode 100644 index 0000000000..83069aa9f4 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.input1 @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 20 20 10 + + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.input2 b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.input2 new file mode 100644 index 0000000000..94d180d7e0 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.input2 @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 + 10 20 20 10 + + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.sh.in new file mode 100644 index 0000000000..2de12b52f7 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-diffpatch.sh.in @@ -0,0 +1,62 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/hwloc" +builddir="$HWLOC_top_builddir/utils/hwloc" +diff="$builddir/hwloc-diff" +patch="$builddir/hwloc-patch" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +HWLOC_XML_EXPORT_SUPPORT=0 +export HWLOC_XML_EXPORT_SUPPORT + +if test x@HWLOC_XML_LOCALIZED@ = x1; then + # make sure we use default numeric formats + LANG=C + LC_ALL=C + export LANG LC_ALL +fi + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? + +cd "$tmp" +diffoutput="test-hwloc-diffpatch.diff.xml" +output1="test-hwloc-diffpatch.output1" +output2="test-hwloc-diffpatch.output2" + +set -e + +$diff $srcdir/test-hwloc-diffpatch.input1 \ + $srcdir/test-hwloc-diffpatch.input2 > $diffoutput +cp $srcdir/test-hwloc-diffpatch.input1 . +#cat $diffoutput | $patch $srcdir/test-hwloc-diffpatch.input1 - $output1 +cat $diffoutput | $patch refname - $output1 +$patch -R $srcdir/test-hwloc-diffpatch.input2 $diffoutput $output2 + +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-hwloc-diffpatch.input1 "$output2" +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-hwloc-diffpatch.input2 "$output1" + +cd .. +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-distrib.output b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-distrib.output new file mode 100644 index 0000000000..c064942c01 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-distrib.output @@ -0,0 +1,143 @@ +# 2 sets out of 2 2 2 +0x0000000f +0x000000f0 + +# 4 sets out of 2 2 2 +0x00000003 +0x0000000c +0x00000030 +0x000000c0 + +# 8 sets out of 2 2 2 +0x00000001 +0x00000002 +0x00000004 +0x00000008 +0x00000010 +0x00000020 +0x00000040 +0x00000080 + +# 13 sets out of 2 2 2 +0x00000001 +0x00000001 +0x00000002 +0x00000002 +0x00000004 +0x00000004 +0x00000008 +0x00000010 +0x00000010 +0x00000020 +0x00000040 +0x00000040 +0x00000080 + +# 16 sets out of 2 2 2 +0x00000001 +0x00000001 +0x00000002 +0x00000002 +0x00000004 +0x00000004 +0x00000008 +0x00000008 +0x00000010 +0x00000010 +0x00000020 +0x00000020 +0x00000040 +0x00000040 +0x00000080 +0x00000080 + +# 4 sets out of 3 3 3 +0x00000007 +0x000001f8 +0x0003fe00 +0x07fc0000 + +# 4 singlified sets out of 3 3 3 +0x00000001 +0x00000008 +0x00000200 +0x00040000 + +# 4 sets out of 3 3 3, reversed +0x07000000 +0x00fc0000 +0x0003fe00 +0x000001ff + +# 4 singlified sets out of 3 3 3, reversed +0x04000000 +0x00800000 +0x00020000 +0x00000100 + +# 2 sets out of 4 4 +0x000000ff +0x0000ff00 + +# 2 singlified sets out of 4 4 +0x00000001 +0x00000100 + +# 2 singlified sets out of 4 4, reversed +0x00008000 +0x00000080 + +# 19 sets out of 4 4 +0x000000ff +0x0000ff00 +0xffff0000 +0x0000ffff,0x0 +0xffff0000,0x0 +0x000000ff,,0x0 +0x0000ff00,,0x0 +0xffff0000,,0x0 +0x0000ffff,,,0x0 +0xffff0000,,,0x0 +0x000000ff,,,,0x0 +0x0000ff00,,,,0x0 +0xffff0000,,,,0x0 +0x0000ffff,,,,,0x0 +0xffff0000,,,,,0x0 +0x0000ffff,,,,,,0x0 +0xffff0000,,,,,,0x0 +0x0000ffff,,,,,,,0x0 +0xffff0000,,,,,,,0x0 + +# 9 sets out of 2 2 2 2 +0x00000001 +0x00000002 +0x0000000c +0x00000030 +0x000000c0 +0x00000300 +0x00000c00 +0x00003000 +0x0000c000 + +# 9 sets out of 2 2 2 2, starting at PU level +0x00000001 +0x00000006 +0x00000018 +0x00000060 +0x00000080 +0x00000300 +0x00000c00 +0x00003000 +0x0000c000 + +# 9 sets out of 2 2 2 2, stopping at Core level +0x00000003 +0x00000003 +0x0000000c +0x00000030 +0x000000c0 +0x00000300 +0x00000c00 +0x00003000 +0x0000c000 + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-distrib.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-distrib.sh.in new file mode 100644 index 0000000000..a42a174646 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-distrib.sh.in @@ -0,0 +1,91 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009 CNRS +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2009 Université Bordeaux +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/hwloc" +builddir="$HWLOC_top_builddir/utils/hwloc" +distrib="$builddir/hwloc-distrib" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +file="$tmp/test-hwloc-distrib.output" + +set -e +( + echo "# 2 sets out of 2 2 2" + $distrib --if synthetic --input "2 2 2" 2 + echo + echo "# 4 sets out of 2 2 2" + $distrib --if synthetic --input "2 2 2" 4 + echo + echo "# 8 sets out of 2 2 2" + $distrib --if synthetic --input "2 2 2" 8 + echo + echo "# 13 sets out of 2 2 2" + $distrib --if synthetic --input "2 2 2" 13 + echo + echo "# 16 sets out of 2 2 2" + $distrib --if synthetic --input "2 2 2" 16 + echo + + echo "# 4 sets out of 3 3 3" + $distrib --if synthetic --input "3 3 3" 4 + echo + echo "# 4 singlified sets out of 3 3 3" + $distrib --if synthetic --input "3 3 3" 4 --single + echo + echo "# 4 sets out of 3 3 3, reversed" + $distrib --if synthetic --input "3 3 3" 4 --reverse + echo + echo "# 4 singlified sets out of 3 3 3, reversed" + $distrib --if synthetic --input "3 3 3" 4 --reverse --single + echo + + echo "# 2 sets out of 4 4" + $distrib --if synthetic --input "4 4" 2 + echo + echo "# 2 singlified sets out of 4 4" + $distrib --if synthetic --input "4 4" 2 --single + echo + echo "# 2 singlified sets out of 4 4, reversed" + $distrib --if synthetic --input "4 4" 2 --reverse --single + echo + echo "# 19 sets out of 4 4" + $distrib --if synthetic --input "4 4 4 4" 19 + echo + + echo "# 9 sets out of 2 2 2 2" + $distrib --if synthetic --input "2 2 2 2" 9 + echo + echo "# 9 sets out of 2 2 2 2, starting at PU level" + $distrib --if synthetic --input "2 2 2 2" --from pu 9 + echo + echo "# 9 sets out of 2 2 2 2, stopping at Core level" + $distrib --if synthetic --input "2 2 2 2" --to core 9 + echo +) > "$file" +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-hwloc-distrib.output "$file" +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/Makefile.am b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/Makefile.am new file mode 100644 index 0000000000..573cab0fb3 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/Makefile.am @@ -0,0 +1,17 @@ +# Copyright © 2016 Inria. All rights reserved. +# See COPYING in top-level directory. + +AM_CFLAGS = $(HWLOC_CFLAGS) +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +dumps = \ + knl-snc4h50.tar.bz2 + +if HWLOC_HAVE_BUNZIPP +TESTS = $(dumps) +endif HWLOC_HAVE_BUNZIPP + +EXTRA_DIST = $(dumps) + +LOG_COMPILER = $(builddir)/test-hwloc-dump-hwdata.sh diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/knl-snc4h50.tar.bz2 b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/knl-snc4h50.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..52cdcab7973eefce85ca4207a671e84d20dccf94 GIT binary patch literal 664 zcmV;J0%!d~T4*^jL0KkKS&5yQi~s{l|Mvgg0sz1Q|JW|?Tmb*?-|!Fs0svqD00ck) z00_VWwIT=<5lBT(N2!`LhAFi@H8dMg$TVm&8Z^@hnu0`tf}W#OO#^8(XaLYOXa}g! z13>1P84Q>qqX~jE(W4MF$&r8nhcw8@WWfy>OcADy7=flti~t0D5$-~KpGCZb`_tBe zsIy?3)ez9`2o2m)l8N04IY7UFiGpK^PYx@w+HddOJrtITR81V(7YI!U41%`3A|iWX zHdV>d+)_eew!k+KoB+fx^ZCAZgHt-}Fzn)UfjAh@S2i22j6`{JYsE(HynM*W-2X zh2xW-C<$PSptQU_$z#W%IEtS&*YTLU>QBpce zbUKmeL!YhUt&w>j!aG^f{oei^l%1uJP?a7aJ(tk$F|(_HxZf^4|LYg9uJtdhs!|3{ z0UE@8sOC9a0G2IKyAE+3$i~{&+J+fU52N7^jy1!#y?k6kI53!9;(Itif@Kih5#0+> zm5fw&vU{HKXtm@p2-X{{%QlX$4Q5i*c7t(}8R)k=NH{GbYB-ph4Npw;HX%~E&`W4T yCWX`-!e(XQZNa~-81oY;qBb0eU@_gU(Iw(IQ1@)gAqTpD@pmLsg$W3m*_gl>P%be5 literal 0 HcmV?d00001 diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/test-hwloc-dump-hwdata.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/test-hwloc-dump-hwdata.sh.in new file mode 100644 index 0000000000..bf34a5ffa2 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-dump-hwdata/test-hwloc-dump-hwdata.sh.in @@ -0,0 +1,38 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2015-2018 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/hwloc" +builddir="$HWLOC_top_builddir/utils/hwloc" +hdhd="$builddir/hwloc-dump-hwdata" + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? + +set -e + +tarball="$srcdir/test-hwloc-dump-hwdata/"`basename $1` +(cd "$tmp" && tar xfj $tarball) + +HWLOC_FSROOT="`echo "$tmp"/*`" +export HWLOC_FSROOT + +$hdhd -o $tmp/output + +@DIFF@ @HWLOC_DIFF_U@ -r "$HWLOC_FSROOT/expected_output" "$tmp/output" + +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-info.output b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-info.output new file mode 100644 index 0000000000..cb6ee29709 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-info.output @@ -0,0 +1,522 @@ +# (default) +depth 0: 1 Machine (type #0) + depth 1: 2 Group0 (type #12) + depth 2: 6 Core (type #2) + depth 3: 24 PU (type #3) +Special depth -3: 2 NUMANode (type #13) + +# --topology +depth 0: 1 Machine (type #0) + depth 1: 2 Group0 (type #12) + depth 2: 6 Core (type #2) + depth 3: 24 PU (type #3) +Special depth -3: 2 NUMANode (type #13) + +# --support +discovery:pu = 1 +discovery:disallowed_pu = 0 +discovery:numa = 1 +discovery:numa_memory = 1 +discovery:disallowed_numa = 0 +discovery:cpukind_efficiency = 0 +cpubind:set_thisproc_cpubind = 0 +cpubind:get_thisproc_cpubind = 0 +cpubind:set_proc_cpubind = 0 +cpubind:get_proc_cpubind = 0 +cpubind:set_thisthread_cpubind = 0 +cpubind:get_thisthread_cpubind = 0 +cpubind:set_thread_cpubind = 0 +cpubind:get_thread_cpubind = 0 +cpubind:get_thisproc_last_cpu_location = 0 +cpubind:get_proc_last_cpu_location = 0 +cpubind:get_thisthread_last_cpu_location = 0 +membind:set_thisproc_membind = 0 +membind:get_thisproc_membind = 0 +membind:set_proc_membind = 0 +membind:get_proc_membind = 0 +membind:set_thisthread_membind = 0 +membind:get_thisthread_membind = 0 +membind:set_area_membind = 0 +membind:get_area_membind = 0 +membind:alloc_membind = 0 +membind:firsttouch_membind = 0 +membind:bind_membind = 0 +membind:interleave_membind = 0 +membind:nexttouch_membind = 0 +membind:migrate_membind = 0 +membind:get_area_memlocation = 0 +misc:imported_support = 0 + +# --objects + +# Core range +Core L#2 + type = Core + full type = Core + logical index = 2 + os index = 2 + gp index = 16 + depth = 2 + sibling rank = 2 + children = 4 + memory children = 0 + i/o children = 0 + misc children = 0 + cpuset = 0x00000f00 + complete cpuset = 0x00000f00 + allowed cpuset = 0x00000f00 + nodeset = 0x00000001 + complete nodeset = 0x00000001 + allowed nodeset = 0x00000001 + symmetric subtree = 1 +Core L#3 + type = Core + full type = Core + logical index = 3 + os index = 3 + gp index = 23 + depth = 2 + sibling rank = 0 + children = 4 + memory children = 0 + i/o children = 0 + misc children = 0 + cpuset = 0x0000f000 + complete cpuset = 0x0000f000 + allowed cpuset = 0x0000f000 + nodeset = 0x00000002 + complete nodeset = 0x00000002 + allowed nodeset = 0x00000002 + symmetric subtree = 1 +Core L#4 + type = Core + full type = Core + logical index = 4 + os index = 4 + gp index = 28 + depth = 2 + sibling rank = 1 + children = 4 + memory children = 0 + i/o children = 0 + misc children = 0 + cpuset = 0x000f0000 + complete cpuset = 0x000f0000 + allowed cpuset = 0x000f0000 + nodeset = 0x00000002 + complete nodeset = 0x00000002 + allowed nodeset = 0x00000002 + symmetric subtree = 1 + +# all ancestors of PU range +0.0: PU L#10 +0.0: type = PU +0.0: full type = PU +0.0: logical index = 10 +0.0: os index = 10 +0.0: gp index = 14 +0.0: depth = 3 +0.0: sibling rank = 2 +0.0: children = 0 +0.0: memory children = 0 +0.0: i/o children = 0 +0.0: misc children = 0 +0.0: cpuset = 0x00000400 +0.0: complete cpuset = 0x00000400 +0.0: allowed cpuset = 0x00000400 +0.0: nodeset = 0x00000001 +0.0: complete nodeset = 0x00000001 +0.0: allowed nodeset = 0x00000001 +0.0: symmetric subtree = 1 +0.1: Core L#2 = parent #1 of PU L#10 +0.1: type = Core +0.1: full type = Core +0.1: logical index = 2 +0.1: os index = 2 +0.1: gp index = 16 +0.1: depth = 2 +0.1: sibling rank = 2 +0.1: children = 4 +0.1: memory children = 0 +0.1: i/o children = 0 +0.1: misc children = 0 +0.1: cpuset = 0x00000f00 +0.1: complete cpuset = 0x00000f00 +0.1: allowed cpuset = 0x00000f00 +0.1: nodeset = 0x00000001 +0.1: complete nodeset = 0x00000001 +0.1: allowed nodeset = 0x00000001 +0.1: symmetric subtree = 1 +0.2: Group0 L#0 = parent #2 of PU L#10 +0.2: type = Group +0.2: full type = Group0 +0.2: logical index = 0 +0.2: gp index = 18 +0.2: depth = 1 +0.2: sibling rank = 0 +0.2: children = 3 +0.2: memory children = 1 +0.2: i/o children = 0 +0.2: misc children = 0 +0.2: total memory = 1073741824 +0.2: cpuset = 0x00000fff +0.2: complete cpuset = 0x00000fff +0.2: allowed cpuset = 0x00000fff +0.2: nodeset = 0x00000001 +0.2: complete nodeset = 0x00000001 +0.2: allowed nodeset = 0x00000001 +0.2: attr group depth = 0 +0.2: symmetric subtree = 1 +0.3: Machine L#0 = parent #3 of PU L#10 +0.3: type = Machine +0.3: full type = Machine +0.3: logical index = 0 +0.3: os index = 0 +0.3: gp index = 1 +0.3: depth = 0 +0.3: sibling rank = 0 +0.3: children = 2 +0.3: memory children = 0 +0.3: i/o children = 0 +0.3: misc children = 0 +0.3: total memory = 2147483648 +0.3: cpuset = 0x00ffffff +0.3: complete cpuset = 0x00ffffff +0.3: allowed cpuset = 0x00ffffff +0.3: nodeset = 0x00000003 +0.3: complete nodeset = 0x00000003 +0.3: allowed nodeset = 0x00000003 +0.3: symmetric subtree = 1 +0.3: info Backend = Synthetic +0.3: info SyntheticDescription = node:2 core:3 pu:4 +1.0: PU L#11 +1.0: type = PU +1.0: full type = PU +1.0: logical index = 11 +1.0: os index = 11 +1.0: gp index = 15 +1.0: depth = 3 +1.0: sibling rank = 3 +1.0: children = 0 +1.0: memory children = 0 +1.0: i/o children = 0 +1.0: misc children = 0 +1.0: cpuset = 0x00000800 +1.0: complete cpuset = 0x00000800 +1.0: allowed cpuset = 0x00000800 +1.0: nodeset = 0x00000001 +1.0: complete nodeset = 0x00000001 +1.0: allowed nodeset = 0x00000001 +1.0: symmetric subtree = 1 +1.1: Core L#2 = parent #1 of PU L#11 +1.1: type = Core +1.1: full type = Core +1.1: logical index = 2 +1.1: os index = 2 +1.1: gp index = 16 +1.1: depth = 2 +1.1: sibling rank = 2 +1.1: children = 4 +1.1: memory children = 0 +1.1: i/o children = 0 +1.1: misc children = 0 +1.1: cpuset = 0x00000f00 +1.1: complete cpuset = 0x00000f00 +1.1: allowed cpuset = 0x00000f00 +1.1: nodeset = 0x00000001 +1.1: complete nodeset = 0x00000001 +1.1: allowed nodeset = 0x00000001 +1.1: symmetric subtree = 1 +1.2: Group0 L#0 = parent #2 of PU L#11 +1.2: type = Group +1.2: full type = Group0 +1.2: logical index = 0 +1.2: gp index = 18 +1.2: depth = 1 +1.2: sibling rank = 0 +1.2: children = 3 +1.2: memory children = 1 +1.2: i/o children = 0 +1.2: misc children = 0 +1.2: total memory = 1073741824 +1.2: cpuset = 0x00000fff +1.2: complete cpuset = 0x00000fff +1.2: allowed cpuset = 0x00000fff +1.2: nodeset = 0x00000001 +1.2: complete nodeset = 0x00000001 +1.2: allowed nodeset = 0x00000001 +1.2: attr group depth = 0 +1.2: symmetric subtree = 1 +1.3: Machine L#0 = parent #3 of PU L#11 +1.3: type = Machine +1.3: full type = Machine +1.3: logical index = 0 +1.3: os index = 0 +1.3: gp index = 1 +1.3: depth = 0 +1.3: sibling rank = 0 +1.3: children = 2 +1.3: memory children = 0 +1.3: i/o children = 0 +1.3: misc children = 0 +1.3: total memory = 2147483648 +1.3: cpuset = 0x00ffffff +1.3: complete cpuset = 0x00ffffff +1.3: allowed cpuset = 0x00ffffff +1.3: nodeset = 0x00000003 +1.3: complete nodeset = 0x00000003 +1.3: allowed nodeset = 0x00000003 +1.3: symmetric subtree = 1 +1.3: info Backend = Synthetic +1.3: info SyntheticDescription = node:2 core:3 pu:4 + +# Core ancestors of PU range +Core L#1 = parent of PU L#7 + type = Core + full type = Core + logical index = 1 + os index = 1 + gp index = 11 + depth = 2 + sibling rank = 1 + children = 4 + memory children = 0 + i/o children = 0 + misc children = 0 + cpuset = 0x000000f0 + complete cpuset = 0x000000f0 + allowed cpuset = 0x000000f0 + nodeset = 0x00000001 + complete nodeset = 0x00000001 + allowed nodeset = 0x00000001 + symmetric subtree = 1 +Core L#2 = parent of PU L#8 + type = Core + full type = Core + logical index = 2 + os index = 2 + gp index = 16 + depth = 2 + sibling rank = 2 + children = 4 + memory children = 0 + i/o children = 0 + misc children = 0 + cpuset = 0x00000f00 + complete cpuset = 0x00000f00 + allowed cpuset = 0x00000f00 + nodeset = 0x00000001 + complete nodeset = 0x00000001 + allowed nodeset = 0x00000001 + symmetric subtree = 1 +Core L#2 = parent of PU L#9 + type = Core + full type = Core + logical index = 2 + os index = 2 + gp index = 16 + depth = 2 + sibling rank = 2 + children = 4 + memory children = 0 + i/o children = 0 + misc children = 0 + cpuset = 0x00000f00 + complete cpuset = 0x00000f00 + allowed cpuset = 0x00000f00 + nodeset = 0x00000001 + complete nodeset = 0x00000001 + allowed nodeset = 0x00000001 + symmetric subtree = 1 + +# L2 ancestor of PU +L2Cache L#3 = parent of PU L#12 + type = L2Cache + full type = L2Cache + logical index = 3 + gp index = 30 + depth = 3 + sibling rank = 1 + children = 2 + memory children = 0 + i/o children = 0 + misc children = 0 + cpuset = 0x0000f000 + complete cpuset = 0x0000f000 + allowed cpuset = 0x0000f000 + nodeset = 0x00000001 + complete nodeset = 0x00000001 + allowed nodeset = 0x00000001 + attr cache depth = 2 + attr cache type = Unified + attr cache size = 4194304 + attr cache line size = 64 + symmetric subtree = 1 + +# L1 ancestor of PU range +L1dCache:3 +L1dCache:4 +L1dCache:4 +L1dCache:5 + +# Children of L2 and Core of Node, silent +L1dCache:2 +L1dCache:3 +L2Cache:6 +L2Cache:7 + +# L1d descendants of Core range, silent +L1dCache:4 +L1dCache:5 +L1dCache:6 +L1dCache:7 +L1dCache:8 +L1dCache:9 +L1dCache:10 +L1dCache:11 + +# 2 local memory for one PU +NUMANode L#1 = local memory #0 of PU L#8 + type = NUMANode + full type = NUMANode + logical index = 1 + os index = 1 + gp index = 29 + depth = -3 + sibling rank = 0 + children = 0 + memory children = 0 + i/o children = 0 + misc children = 0 + local memory = 0 + cpuset = 0x0000ff00 + complete cpuset = 0x0000ff00 + allowed cpuset = 0x0000ff00 + nodeset = 0x00000002 + complete nodeset = 0x00000002 + allowed nodeset = 0x00000002 + symmetric subtree = 0 + memory attribute Capacity = 0 + memory attribute Locality = 8 +NUMANode L#2 = local memory #1 of PU L#8 + type = NUMANode + full type = NUMANode + logical index = 2 + os index = 2 + gp index = 31 + depth = -3 + sibling rank = 0 + children = 0 + memory children = 0 + i/o children = 0 + misc children = 0 + local memory = 0 + cpuset = 0x0000ffff + complete cpuset = 0x0000ffff + allowed cpuset = 0x0000ffff + nodeset = 0x00000004 + complete nodeset = 0x00000004 + allowed nodeset = 0x00000004 + symmetric subtree = 0 + memory attribute Capacity = 0 + memory attribute Locality = 16 + +# 2 local-or-larger memories for one PU, silent +NUMANode:1 +NUMANode:2 + +# no local-or-larger memory for root, silent + +# no local-or-smaller memory for one PU, silent + +# 3 local-or-smaller memories for on Package, silent +NUMANode:3 +NUMANode:4 +NUMANode:5 + +# no strict-local memory for one PU, silent + +# 1 strict-local memory for one NUMANode, silent +NUMANode:1 + +# 12 local-all memories for one PU, silent +NUMANode:0 +NUMANode:1 +NUMANode:2 +NUMANode:3 +NUMANode:4 +NUMANode:5 +NUMANode:6 +NUMANode:7 +NUMANode:8 +NUMANode:9 +NUMANode:10 +NUMANode:11 + +# only the smallest locality among 2 local-or-larger memories for one PU, silent +NUMANode:10 + +# only the highest capacity among 2 local-or-larger memories for one PU, silent +NUMANode:11 + + +# cpukinds for the entire machine +Machine L#0 + type = Machine + full type = Machine + logical index = 0 + os index = 0 + gp index = 1 + depth = 0 + sibling rank = 0 + children = 2 + memory children = 0 + i/o children = 0 + misc children = 0 + total memory = 6442450944 + cpuset = 0x00ffffff + complete cpuset = 0x00ffffff + allowed cpuset = 0x00ffffff + nodeset = 0x0000003f + complete nodeset = 0x0000003f + allowed nodeset = 0x0000003f + symmetric subtree = 0 + info Backend = Linux + cpukind = 0 (partially) + cpukind info FrequencyMaxMHz = 2000 + cpukind info FrequencyBaseMHz = 1200 + cpukind info LinuxCapacity = 1025 + cpukind = 1 (partially) + cpukind info FrequencyMaxMHz = 3000 + cpukind info FrequencyBaseMHz = 2500 + cpukind info LinuxCapacity = 234 + cpukind = 2 (partially) + cpukind info FrequencyMaxMHz = 3000 + cpukind info FrequencyBaseMHz = 1200 + cpukind info LinuxCapacity = 234 + +# cpukind for a single PU +PU L#15 + type = PU + full type = PU + logical index = 15 + os index = 15 + gp index = 34 + depth = 5 + sibling rank = 1 + children = 0 + memory children = 0 + i/o children = 0 + misc children = 0 + cpuset = 0x00008000 + complete cpuset = 0x00008000 + allowed cpuset = 0x00008000 + nodeset = 0x00000020 + complete nodeset = 0x00000020 + allowed nodeset = 0x00000020 + symmetric subtree = 1 + cpukind = 0 + cpukind info FrequencyMaxMHz = 2000 + cpukind info FrequencyBaseMHz = 1200 + cpukind info LinuxCapacity = 1025 + diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-info.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-info.sh.in new file mode 100644 index 0000000000..931eaa7812 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-hwloc-info.sh.in @@ -0,0 +1,120 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009 CNRS +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2009 Université Bordeaux +# Copyright © 2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/hwloc" +builddir="$HWLOC_top_builddir/utils/hwloc" +info="$builddir/hwloc-info" +linuxdir="$HWLOC_top_srcdir/tests/hwloc/linux" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +HWLOC_DONT_ADD_VERSION_INFO=1 +export HWLOC_DONT_ADD_VERSION_INFO + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +file="$tmp/test-hwloc-info.output" + +set -e +( + echo "# (default)" + $info --if synthetic --input "node:2 core:3 pu:4" + echo + echo "# --topology" + $info --if synthetic --input "node:2 core:3 pu:4" --topology + echo + echo "# --support" + $info --if synthetic --input "node:2 core:3 pu:4" --support + echo + echo "# --objects" + $info --if synthetic --input "node:2 core:3 pu:4" --objects + echo + + echo "# Core range" + $info --if synthetic --input "node:2 core:3 pu:4" core:2-4 + echo + + echo "# all ancestors of PU range" + $info --if synthetic --input "node:2 core:3 pu:4" -n --ancestors pu:10-11 + echo + echo "# Core ancestors of PU range" + $info --if synthetic --input "node:2 core:3 pu:4" --ancestor core pu:7-9 + echo + echo "# L2 ancestor of PU" + $info --if synthetic --input "node:2 core:2 l2:2 l1d:2 pu:2" --ancestor l2 pu:12 + echo + echo "# L1 ancestor of PU range" + $info --if synthetic --input "node:2 core:2 l2:2 l1d:2 pu:2" --ancestor l1 -s pu:7-10 + echo + + echo "# Children of L2 and Core of Node, silent" + $info --if synthetic --input "node:2 core:2 l2:2 l1d:2 pu:2" --children -s l2:1 node:1.core:1 + echo + echo "# L1d descendants of Core range, silent" + $info --if synthetic --input "node:2 core:2 l2:2 l1d:2 pu:2" --descendants l1d -s core:1-2 + echo + + echo "# 2 local memory for one PU" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory pu:8 + echo + echo "# 2 local-or-larger memories for one PU, silent" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags larger -s pu:8 + echo + echo "# no local-or-larger memory for root, silent" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags larger -s root + echo + echo "# no local-or-smaller memory for one PU, silent" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags smaller -s pu:8 + echo + echo "# 3 local-or-smaller memories for on Package, silent" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags smaller -s pack:1 + echo + echo "# no strict-local memory for one PU, silent" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags none -s pu:8 + echo + echo "# 1 strict-local memory for one NUMANode, silent" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags none -s node:1 + echo + echo "# 12 local-all memories for one PU, silent" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags all\$ -s pu:3 + echo + echo "# only the smallest locality among 2 local-or-larger memories for one PU, silent" + $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags larger --best-memattr locality -s pu:63 + echo + echo "# only the highest capacity among 2 local-or-larger memories for one PU, silent" + $info --if synthetic --input "pack:4 [numa(memory=1000000)] l3:2 [numa(memory=1000)] core:4 pu:2" --local-memory-flags larger --best-memattr capacity -s pu:63 + echo + + echo + echo "# cpukinds for the entire machine" + $info --if xml --input $linuxdir/fakeheterocpunuma.output all + echo + echo "# cpukind for a single PU" + $info --if xml --input $linuxdir/fakeheterocpunuma.output pu:15 + echo + +) > "$file" +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-hwloc-info.output "$file" +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/hwloc/test-parsing-flags.sh.in b/3rd-party/hwloc-2.7.1/utils/hwloc/test-parsing-flags.sh.in new file mode 100644 index 0000000000..eb9f8af19a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/hwloc/test-parsing-flags.sh.in @@ -0,0 +1,24 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009-2020 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +include="$HWLOC_top_srcdir/include" +misch="$HWLOC_top_srcdir/utils/hwloc/misc.h" + +flags_def=`grep -h _FLAG_ ${include}/hwloc.h ${include}/hwloc/*.h | grep '<<' | grep -v HWLOC_DISTRIB_FLAG \ + | grep -v HWLOC_DISC_STATUS_FLAG | grep -v HWLOC_TOPOLOGY_COMPONENTS_FLAG | cut -d= -f1` + +IFS=' ' flags=${flags_def} +for flag in $flags +do + if ! grep -q "HWLOC_UTILS_PARSING_FLAG($flag)" "$misch"; then + echo "Could not find any implementation for $flag." + exit 1 + fi +done +exit 0 diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/Makefile.am b/3rd-party/hwloc-2.7.1/utils/lstopo/Makefile.am new file mode 100644 index 0000000000..365bd1f50a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/Makefile.am @@ -0,0 +1,118 @@ +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2009-2012, 2014 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# Copyright © 2020 Hewlett Packard Enterprise. All rights reserved. +# +# See COPYING in top-level directory. + +# This makefile is only reached when building in standalone mode + +AM_CFLAGS = $(HWLOC_CFLAGS) +# Add -I of utils/hwloc for misc.h +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) -I$(top_srcdir)/utils/hwloc +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +LDADD = $(HWLOC_top_builddir)/hwloc/libhwloc.la \ + $(HWLOC_top_builddir)/utils/hwloc/libutils_common.la + +bin_PROGRAMS = \ + lstopo-no-graphics + +EXTRA_DIST = \ + lstopo-android.c \ + test-lstopo.output + +lstopo_no_graphics_SOURCES = \ + lstopo.h \ + lstopo.c \ + lstopo-draw.c \ + lstopo-tikz.c \ + lstopo-fig.c \ + lstopo-svg.c \ + lstopo-ascii.c \ + lstopo-text.c \ + lstopo-xml.c + +if !HWLOC_HAVE_WINDOWS +lstopo_no_graphics_SOURCES += lstopo-shmem.c +endif + +lstopo_no_graphics_CFLAGS = $(AM_CFLAGS) +lstopo_no_graphics_LDADD = $(LDADD) -lm $(HWLOC_TERMCAP_LIBS) + +lstopo_SOURCES = $(lstopo_no_graphics_SOURCES) +lstopo_CPPFLAGS = $(AM_CPPFLAGS) +lstopo_LDADD = $(lstopo_no_graphics_LDADD) +if HWLOC_HAVE_CAIRO +bin_PROGRAMS += lstopo +lstopo_SOURCES += lstopo-cairo.c +lstopo_CPPFLAGS += -DLSTOPO_HAVE_GRAPHICS $(HWLOC_X11_CPPFLAGS) +lstopo_CFLAGS = $(lstopo_no_graphics_CFLAGS) $(HWLOC_CAIRO_CFLAGS) +lstopo_LDADD += $(HWLOC_CAIRO_LIBS) $(HWLOC_X11_LIBS) +endif +if HWLOC_HAVE_WINDOWS +bin_PROGRAMS += lstopo lstopo-win +lstopo_SOURCES += lstopo-windows.c +lstopo_CPPFLAGS += -DLSTOPO_HAVE_GRAPHICS +if HWLOC_HAVE_USER32 +lstopo_LDADD += -luser32 +endif +lstopo_win_SOURCES = $(lstopo_SOURCES) +lstopo_win_CPPFLAGS = $(lstopo_CPPFLAGS) +lstopo_win_CFLAGS = $(lstopo_CFLAGS) -mwindows +lstopo_win_LDADD = $(lstopo_LDADD) +endif + +man1_pages = lstopo-no-graphics.1 +EXTRA_DIST += $(man1_pages:.1=.1in) +nodist_man_MANS = $(man1_pages) + +TESTS = \ + test-lstopo.sh +if HWLOC_HAVE_LINUX +TESTS += test-lstopo-shmem.sh +endif HWLOC_HAVE_LINUX + +if HWLOC_HAVE_CAIRO +# only installed when lstopo is built with Cairo/X11 support +# so that no terminal is required +APPLICATIONSdir = @datarootdir@/applications +dist_APPLICATIONS_DATA = lstopo.desktop +endif + +SEDMAN = $(SED) -e 's/%PACKAGE_NAME%/@PACKAGE_NAME@/g' \ + -e 's/%PACKAGE_VERSION%/@PACKAGE_VERSION@/g' \ + -e 's/%HWLOC_DATE%/@HWLOC_RELEASE_DATE@/g' + +.1in.1: + @ echo Creating $@ man page... + @ $(SEDMAN) \ + > $@ < $< + +install-exec-hook: + rm -f $(DESTDIR)$(bindir)/hwloc-ls$(EXEEXT) + cd $(DESTDIR)$(bindir) && $(LN_S) lstopo-no-graphics$(EXEEXT) hwloc-ls$(EXEEXT) +if !HWLOC_HAVE_WINDOWS +if !HWLOC_HAVE_CAIRO + rm -f $(DESTDIR)$(bindir)/lstopo + cd $(DESTDIR)$(bindir) && $(LN_S) lstopo-no-graphics$(EXEEXT) lstopo$(EXEEXT) || true +endif +endif + +install-data-hook: + rm -f $(DESTDIR)$(man1dir)/hwloc-ls.1 + cd $(DESTDIR)$(man1dir) && $(LN_S) lstopo-no-graphics.1 hwloc-ls.1 + rm -f $(DESTDIR)$(man1dir)/lstopo.1 + cd $(DESTDIR)$(man1dir) && $(LN_S) lstopo-no-graphics.1 lstopo.1 + +uninstall-local: + rm -f $(DESTDIR)$(bindir)/hwloc-ls$(EXEEXT) +if !HWLOC_HAVE_WINDOWS +if !HWLOC_HAVE_CAIRO + rm -f $(DESTDIR)$(bindir)/lstopo$(EXEEXT) +endif +endif + rm -f $(DESTDIR)$(man1dir)/hwloc-ls.1 $(DESTDIR)$(man1dir)/lstopo.1 + +distclean-local: + rm -f $(nodist_man_MANS) diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-android.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-android.c new file mode 100644 index 0000000000..797aaaa570 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-android.c @@ -0,0 +1,104 @@ +/* + * Copyright © 2019-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include + +#include +#include +#include +#include + +#include "lstopo.h" + +extern void JNIbox(int r, int g, int b, int x, int y, int width, int height, unsigned style, int gp_index, char *info); +extern void JNItext(char *text, int gp_index, int x, int y, int fontsize, int bold); +extern void JNIline(unsigned x1, unsigned y1, unsigned x2, unsigned y2); +extern void JNIprepare(int width, int height, int fontsize); + +#define ANDROID_TEXT_WIDTH(length, fontsize) (((length) * (fontsize))/2) +#define ANDROID_FONTSIZE_SCALE(size) (((size) * 11) / 9) + +static void native_android_box(struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height, hwloc_obj_t obj, unsigned box_id __hwloc_attribute_unused) +{ + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + int gp_index = -1; + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + char * info = malloc(1096); + const char * sep = " "; + unsigned style = 0; + + if(obj){ + gp_index = obj->gp_index; + hwloc_obj_attr_snprintf(info, 1096, obj, sep, 1); + } + + if (cpukind_style) + style = cpukind_style; + + JNIbox(r, g, b, x, y, width, height, style, gp_index, info); + //Creating a usable java string from char * may trigger an UTF-8 error + //This code creates a byte array from the char * variable before creating the java string +} + + +static void +native_android_line(struct lstopo_output *loutput __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2, hwloc_obj_t obj __hwloc_attribute_unused, unsigned line_id __hwloc_attribute_unused) +{ + JNIline(x1, y1, x2, y2); +} + +static void +native_android_textsize(struct lstopo_output *loutput __hwloc_attribute_unused, const char *text __hwloc_attribute_unused, unsigned textlength, unsigned fontsize, unsigned *width) +{ + fontsize = ANDROID_FONTSIZE_SCALE(fontsize); + *width = ANDROID_TEXT_WIDTH(textlength, fontsize); +} + + +static void +native_android_text(struct lstopo_output *loutput, const struct lstopo_color *lcolor __hwloc_attribute_unused, int size __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text, hwloc_obj_t obj, unsigned text_id __hwloc_attribute_unused) +{ + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + int gp_index = -1; + int bold = 0; + + if(obj) + gp_index = obj->gp_index; + + if (cpukind_style % 2) + bold = 1; + + JNItext((char *)text, gp_index, x, y, loutput->fontsize, bold); +} + +static struct draw_methods native_android_draw_methods = { + NULL, + NULL, + native_android_box, + native_android_line, + native_android_text, + native_android_textsize, +}; + +int output_android(struct lstopo_output * loutput, const char *filename __hwloc_attribute_unused) +{ + loutput->methods = &native_android_draw_methods; + loutput->backend_flags |= LSTOPO_BACKEND_FLAG_APPROXIMATIVE_TEXTWIDTH; + + /* recurse once for preparing sizes and positions */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + output_draw(loutput); + loutput->drawing = LSTOPO_DRAWING_DRAW; + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + JNIprepare(loutput->height, loutput->width, loutput->fontsize); + + output_draw(loutput); + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-ascii.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-ascii.c new file mode 100644 index 0000000000..84c6465687 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-ascii.c @@ -0,0 +1,575 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012, 2020 Université Bordeaux + * Copyright © 2009-2018 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +/* + * Pretty text output + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#ifdef HAVE_NL_LANGINFO +#include +#endif /* HAVE_NL_LANGINFO */ + +#ifdef HAVE_PUTWC +#include +#endif /* HAVE_PUTWC */ + +#ifdef HWLOC_HAVE_LIBTERMCAP +#ifdef HWLOC_USE_NCURSES +# include +#else +# include +#endif +#include +#endif /* HWLOC_HAVE_LIBTERMCAP */ + +#include "lstopo.h" + +#define TERM_COLOR_START 16 + +/* Uses unicode bars if available */ +#ifdef HAVE_PUTWC +typedef wchar_t character; +#define PRIchar "lc" +#define putcharacter(c,f) putwc(c,f) +#else /* HAVE_PUTWC */ +typedef unsigned char character; +#define PRIchar "c" +#define putcharacter(c,f) putc(c,f) +#endif /* HAVE_PUTWC */ + +#ifdef HWLOC_HAVE_LIBTERMCAP +static int myputchar(int c) { + return putcharacter(c, stdout); +} +#endif /* HWLOC_HAVE_LIBTERMCAP */ + +/* Off-screen rendering buffer */ +struct cell { + character c; +#ifdef HWLOC_HAVE_LIBTERMCAP + const struct lstopo_color *fcolor, *bcolor; +#endif /* HWLOC_HAVE_LIBTERMCAP */ +}; + +struct lstopo_ascii_output { + struct lstopo_output *loutput; + struct cell **cells; + int utf8; + /* loutput->width and ->height converted to array of chars to simplify internal management below*/ + int width; + int height; +}; + +#ifdef HWLOC_HAVE_LIBTERMCAP +/* Standard terminfo strings */ +static char *initc = NULL, *initp = NULL; + +/* Set text color to bright white or black according to the background */ +static int set_textcolor(int rr, int gg, int bb) +{ + if (!initc && !initp && rr + gg + bb < 2) { + if (enter_bold_mode) + tputs(enter_bold_mode, 1, myputchar); + return 7; + } else { + if (exit_attribute_mode) + tputs(exit_attribute_mode, 1, myputchar); + return 0; + } +} + +static void +set_color(const struct lstopo_color *fcolor, const struct lstopo_color *bcolor) +{ + char *toput; + int color, textcolor; + + if (initc || initp) { + /* Can set rgb color, easy */ + textcolor = fcolor->private.ascii.color; + color = bcolor->private.ascii.color; + } else { + /* Magic trigger: it seems to separate colors quite well */ + int brr = bcolor->r >= 0xe0; + int bgg = bcolor->g >= 0xe0; + int bbb = bcolor->b >= 0xe0; + + if (set_a_background) + /* ANSI colors */ + color = (brr << 0) | (bgg << 1) | (bbb << 2); + else + /* Legacy colors */ + color = (brr << 2) | (bgg << 1) | (bbb << 0); + textcolor = set_textcolor(brr, bgg, bbb); + } + + /* And now output magic string to TTY */ + if (set_a_foreground) { + /* foreground */ + if ((toput = tparm(set_a_foreground, textcolor, 0, 0, 0, 0, 0, 0, 0, 0))) + tputs(toput, 1, myputchar); + /* background */ + if ((toput = tparm(set_a_background, color, 0, 0, 0, 0, 0, 0, 0, 0))) + tputs(toput, 1, myputchar); + } else if (set_foreground) { + /* foreground */ + if ((toput = tparm(set_foreground, textcolor, 0, 0, 0, 0, 0, 0, 0, 0))) + tputs(toput, 1, myputchar); + /* background */ + if ((toput = tparm(set_background, color, 0, 0, 0, 0, 0, 0, 0, 0))) + tputs(toput, 1, myputchar); + } else if (set_color_pair) { + /* pair */ + if ((toput = tparm(set_color_pair, color, 0, 0, 0, 0, 0, 0, 0, 0))) + tputs(toput, 1, myputchar); + } +} +#endif /* HWLOC_HAVE_LIBTERMCAP */ + +#ifdef HWLOC_HAVE_LIBTERMCAP +static int ascii_color_index = TERM_COLOR_START, ascii_color_index_step = 1; +#endif +static struct lstopo_color *default_color = NULL; + +/* When we can, allocate rgb colors */ +static int +ascii_declare_color(struct lstopo_output *loutput __hwloc_attribute_unused, struct lstopo_color *lcolor) +{ + int r = lcolor->r, g = lcolor->g, b = lcolor->b; +#ifdef HWLOC_HAVE_LIBTERMCAP + int rr, gg, bb; + char *toput; + + lcolor->private.ascii.color = ascii_color_index; + ascii_color_index += ascii_color_index_step; + + /* Yes, values seem to range from 0 to 1000 inclusive */ + rr = (r * 1001) / 256; + gg = (g * 1001) / 256; + bb = (b * 1001) / 256; + + if (initc) { + if ((toput = tparm(initc, lcolor->private.ascii.color, rr, gg, bb, 0, 0, 0, 0, 0))) + tputs(toput, 1, myputchar); + } else if (initp) { + if ((toput = tparm(initp, lcolor->private.ascii.color, 0, 0, 0, rr, gg, bb, 0, 0))) + tputs(toput, 1, myputchar); + } +#endif /* HWLOC_HAVE_LIBTERMCAP */ + + if (!default_color && !r && !g && !b) + default_color = lcolor; + + return 0; +} + +/* output text, erasing any previous content */ +static void +put(struct lstopo_ascii_output *disp, int x, int y, character c, const struct lstopo_color *fcolor __hwloc_attribute_unused, const struct lstopo_color *bcolor __hwloc_attribute_unused) +{ + if (x >= disp->width || y >= disp->height) { + /* fprintf(stderr, "%"PRIchar" overflowed to (%d,%d)\n", c, x, y); */ + return; + } + disp->cells[y][x].c = c; +#ifdef HWLOC_HAVE_LIBTERMCAP + if (fcolor) + disp->cells[y][x].fcolor = fcolor; + if (bcolor) + disp->cells[y][x].bcolor = bcolor; +#endif /* HWLOC_HAVE_LIBTERMCAP */ +} + +/* Where bars of a character go to */ +enum { + up = (1<<0), + down = (1<<1), + left = (1<<2), + right = (1<<3) +}; + +/* Convert a bar character into its directions */ +static int +to_directions(struct lstopo_ascii_output *disp, character c) +{ +#ifdef HAVE_PUTWC + if (disp->utf8) { + switch (c) { + case L'\x250c': return down|right; + case L'\x2510': return down|left; + case L'\x2514': return up|right; + case L'\x2518': return up|left; + case L'\x2500': return left|right; + case L'\x2502': return down|up; + case L'\x2577': return down; + case L'\x2575': return up; + case L'\x2576': return right; + case L'\x2574': return left; + case L'\x251c': return down|up|right; + case L'\x2524': return down|up|left; + case L'\x252c': return down|left|right; + case L'\x2534': return up|left|right; + case L'\x253c': return down|up|left|right; + default: return 0; + } + } else +#endif /* HAVE_PUTWC */ + { + switch (c) { + case L'-': return left|right; + case L'|': return down|up; + case L'/': + case L'\\': + case L'+': return down|up|left|right; + default: return 0; + } + } +} + +/* Produce a bar character given the wanted directions */ +static character +from_directions(struct lstopo_ascii_output *disp, int direction) +{ +#ifdef HAVE_PUTWC + if (disp->utf8) { + switch (direction) { + case down|right: return L'\x250c'; + case down|left: return L'\x2510'; + case up|right: return L'\x2514'; + case up|left: return L'\x2518'; + case left|right: return L'\x2500'; + case down|up: return L'\x2502'; + case down: return L'\x2577'; + case up: return L'\x2575'; + case right: return L'\x2576'; + case left: return L'\x2574'; + case down|up|right: return L'\x251c'; + case down|up|left: return L'\x2524'; + case down|left|right: return L'\x252c'; + case up|left|right: return L'\x2534'; + case down|up|left|right: return L'\x253c'; + default: return L' '; + }; + } else +#endif /* HAVE_PUTWC */ + { + switch (direction) { + case down|right: return '/'; + case down|left: return '\\'; + case up|right: return '\\'; + case up|left: return '/'; + case left|right: return '-'; + case down|up: return '|'; + case down: return '|'; + case up: return '|'; + case right: return '-'; + case left: return '-'; + case down|up|right: return '+'; + case down|up|left: return '+'; + case down|left|right: return '+'; + case up|left|right: return '+'; + case down|up|left|right: return '+'; + default: return ' '; + }; + } +} + +/* output bars, merging with existing bars: `andnot' are removed, `or' are added */ +static void +merge(struct lstopo_ascii_output *disp, int x, int y, int or, int andnot, const struct lstopo_color *color) +{ + character current; + int directions; + if (x >= disp->width || y >= disp->height) { + /* fprintf(stderr, "|%x &~%x overflowed to (%d,%d)\n", or, andnot, x, y); */ + return; + } + current = disp->cells[y][x].c; + directions = (to_directions(disp, current) & ~andnot) | or; + put(disp, x, y, from_directions(disp, directions), NULL, color); +} + +/* 10 is the only allowed gridsize/fontsize/linespacing (enforced in output_ascii()). + * vertically, it's a line of text. + * horizontally, it's 2 chars (so that we get a space between text and boxes + */ +#define SCALE 10 +/* convert generic coordinates to ASCII coordinates */ +#define XSCALE(x) ((x)*2/SCALE) +#define YSCALE(y) ((y)/SCALE) +/* reverse conversion from text to generic x coordinate */ +#define XSCALE_REVERSE(x) ((x)*SCALE/2) + +/* Now we can implement the standard drawing helpers */ +static void +ascii_box(struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned width, unsigned y1, unsigned height, hwloc_obj_t obj __hwloc_attribute_unused, unsigned box_id __hwloc_attribute_unused) +{ + struct lstopo_ascii_output *disp = loutput->backend_data; + unsigned i, j; + unsigned x2, y2; + + x1 = XSCALE(x1); + width = XSCALE(width); + y1 = YSCALE(y1); + height = YSCALE(height); + x2 = x1 + width - 1; + y2 = y1 + height - 1; + + /* Corners */ + merge(disp, x1, y1, down|right, 0, lcolor); + merge(disp, x2, y1, down|left, 0, lcolor); + merge(disp, x1, y2, up|right, 0, lcolor); + merge(disp, x2, y2, up|left, 0, lcolor); + + for (i = 1; i < width - 1; i++) { + /* upper line */ + merge(disp, x1 + i, y1, left|right, down, lcolor); + /* lower line */ + merge(disp, x1 + i, y2, left|right, up, lcolor); + } + for (j = 1; j < height - 1; j++) { + /* left line */ + merge(disp, x1, y1 + j, up|down, right, lcolor); + /* right line */ + merge(disp, x2, y1 + j, up|down, left, lcolor); + } + for (j = y1 + 1; j < y2; j++) { + for (i = x1 + 1; i < x2; i++) { + put(disp, i, j, ' ', NULL, lcolor); + } + } +} + +static void +ascii_line(struct lstopo_output *loutput, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2, hwloc_obj_t obj __hwloc_attribute_unused, unsigned line_id __hwloc_attribute_unused) +{ + struct lstopo_ascii_output *disp = loutput->backend_data; + unsigned i, j, z; + + x1 = XSCALE(x1); + y1 = YSCALE(y1); + x2 = XSCALE(x2); + y2 = YSCALE(y2); + + /* Canonicalize coordinates */ + if (x1 > x2) { + z = x1; + x1 = x2; + x2 = z; + } + if (y1 > y2) { + z = y1; + y1 = y2; + y2 = z; + } + + /* vertical/horizontal should be enough, but should mix with existing + * characters for better output ! */ + + if (x1 == x2) { + /* Vertical */ + if (y1 == y2) { + /* Hu ?! That's a point, let's do nothing... */ + } else { + /* top */ + merge(disp, x1, y1, down, 0, NULL); + /* bottom */ + merge(disp, x1, y2, up, 0, NULL); + } + for (j = y1 + 1; j < y2; j++) + merge(disp, x1, j, down|up, 0, NULL); + } else if (y1 == y2) { + /* Horizontal */ + /* left */ + merge(disp, x1, y1, right, 0, NULL); + /* right */ + merge(disp, x2, y1, left, 0, NULL); + for (i = x1 + 1; i < x2; i++) + merge(disp, i, y1, left|right, 0, NULL); + } else { + /* Unsupported, sorry */ + } +} + +static void +ascii_text(struct lstopo_output *loutput, const struct lstopo_color *lcolor, int size __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text, hwloc_obj_t obj __hwloc_attribute_unused, unsigned text_id __hwloc_attribute_unused) +{ + struct lstopo_ascii_output *disp = loutput->backend_data; + + x = XSCALE(x); + y = YSCALE(y); + +#if defined(HAVE_PUTWC) && !defined(__MINGW32__) && !defined(_MSC_VER) + { + size_t len = strlen(text) + 1; + wchar_t *wbuf = malloc(len * sizeof(wchar_t)), *wtext; + swprintf(wbuf, len, L"%s", text); + for (wtext = wbuf ; *wtext; wtext++) + put(disp, x++, y, *wtext, lcolor, NULL); + free(wbuf); + } +#else + for ( ; *text; text++) + put(disp, x++, y, *text, lcolor, NULL); +#endif +} + +static void +ascii_textsize(struct lstopo_output *loutput __hwloc_attribute_unused, const char *text __hwloc_attribute_unused, unsigned textlength, unsigned fontsize __hwloc_attribute_unused, unsigned *width) +{ + *width = XSCALE_REVERSE(textlength); +} + +static struct draw_methods ascii_draw_methods = { + ascii_declare_color, + NULL, + ascii_box, + ascii_line, + ascii_text, + ascii_textsize, +}; + +int +output_ascii(struct lstopo_output *loutput, const char *filename) +{ + FILE *output; + struct lstopo_ascii_output disp; + int i, j; +#ifdef HWLOC_HAVE_LIBTERMCAP + const struct lstopo_color *lfcolor = NULL; /* Last foreground color */ + const struct lstopo_color *lbcolor = NULL; /* Last background color */ + int term = 0; + char *tmp; +#endif + int width, height; + + output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + + loutput->gridsize = 10; + loutput->fontsize = 10; + loutput->linespacing = 10; + + /* cannot write between lines of the terminal */ + loutput->backend_flags |= LSTOPO_BACKEND_FLAG_NO_HALF_LINES; + +#ifdef HWLOC_HAVE_LIBTERMCAP + /* If we are outputing to a tty, use colors */ + if (output == stdout && isatty(STDOUT_FILENO)) { + term = !setupterm(NULL, STDOUT_FILENO, NULL); + + if (term) { + /* reset colors */ + if (orig_colors) + tputs(orig_colors, 1, myputchar); + + /* Get terminfo(5) strings */ + initp = initialize_pair; + if (max_pairs <= TERM_COLOR_START || !initp || !set_color_pair) { + /* Can't use max_pairs to define our own colors */ + initp = NULL; + if (max_colors > TERM_COLOR_START) { + /* Better start overwriting last colors */ + ascii_color_index = max_colors-1; + ascii_color_index_step = -1; + if (can_change) + initc = initialize_color; + } + } + /* Prevent a trivial compiler warning because the param of + tgetflag is (char*), not (const char*). */ + tmp = strdup("lhs"); + if (tgetflag(tmp)) { + /* Sorry, I'm lazy to convert colors and I don't know any terminal + * using LHS anyway */ + initc = initp = 0; + } + free(tmp); + } + } +#endif /* HWLOC_HAVE_LIBTERMCAP */ + + disp.loutput = loutput; + loutput->backend_data = &disp; + loutput->methods = &ascii_draw_methods; + + /* recurse once for preparing sizes and positions */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + output_draw(loutput); + width = disp.width = XSCALE(loutput->width + 1); + height = disp.height = YSCALE(loutput->height + 1); + loutput->drawing = LSTOPO_DRAWING_DRAW; + + /* prepare colors */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + /* terminals usually have narrow characters, so let's make them wider */ + disp.cells = malloc(height * sizeof(*disp.cells)); + for (j = 0; j < height; j++) { + disp.cells[j] = calloc(width, sizeof(**disp.cells)); + for (i = 0; i < width; i++) { + disp.cells[j][i].c = ' '; +#ifdef HWLOC_HAVE_LIBTERMCAP + disp.cells[j][i].fcolor = default_color; + disp.cells[j][i].bcolor = default_color; +#endif + } + } +#ifdef HAVE_NL_LANGINFO + disp.utf8 = !strcmp(nl_langinfo(CODESET), "UTF-8"); +#endif /* HAVE_NL_LANGINFO */ + + /* ready */ + output_draw(loutput); + + for (j = 0; j < disp.height; j++) { + for (i = 0; i < disp.width; i++) { +#ifdef HWLOC_HAVE_LIBTERMCAP + if (term) { + /* TTY output, use colors */ + const struct lstopo_color *fcolor = disp.cells[j][i].fcolor; + const struct lstopo_color *bcolor = disp.cells[j][i].bcolor; + + /* Avoid too much work for the TTY */ + if (fcolor != lfcolor || bcolor != lbcolor) { + set_color(fcolor, bcolor); + lfcolor = fcolor; + lbcolor = bcolor; + } + } +#endif /* HWLOC_HAVE_LIBTERMCAP */ + putcharacter(disp.cells[j][i].c, output); + } +#ifdef HWLOC_HAVE_LIBTERMCAP + /* Keep the rest of the line as default */ + if (term && orig_pair) { + lfcolor = NULL; + lbcolor = NULL; + tputs(orig_pair, 1, myputchar); + } +#endif /* HWLOC_HAVE_LIBTERMCAP */ + putcharacter('\n', output); + } + + for (j = 0; j < disp.height; j++) + free(disp.cells[j]); + free(disp.cells); + + if (output != stdout) + fclose(output); + + destroy_colors(loutput); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-cairo.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-cairo.c new file mode 100644 index 0000000000..cb495f1c5c --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-cairo.c @@ -0,0 +1,932 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2010, 2014, 2017, 2020 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" + +#include + +#ifdef CAIRO_HAS_PDF_SURFACE +#include +#endif /* CAIRO_HAS_PDF_SURFACE */ + +#ifdef CAIRO_HAS_PS_SURFACE +#include +#endif /* CAIRO_HAS_PS_SURFACE */ + +#ifdef CAIRO_HAS_SVG_SURFACE +#include +#endif /* CAIRO_HAS_SVG_SURFACE */ + +#ifdef LSTOPO_HAVE_X11 +/* configure should enable X11 only if Cairo has XLIB SURFACE and there are X11 headers */ +# ifndef HWLOC_HAVE_X11_KEYSYM +# error LSTOPO_HAVE_X11 enabled without HWLOC_HAVE_X11_KEYSYM?! +# endif +# ifndef CAIRO_HAS_XLIB_SURFACE +# error LSTOPO_HAVE_X11 enabled without CAIRO_HAS_XLIB_SURFACE?! +# endif +# include +# include +# include +# include +# include +# include +/* Avoid Xwindow's definition conflict with Windows' use for fields names. */ +# undef Status +#else /* LSTOPO_HAVE_X11 */ +# if (defined HWLOC_HAVE_X11_KEYSYM) && (defined CAIRO_HAS_XLIB_SURFACE) +# error HWLOC_HAVE_X11_KEYSYM and CAIRO_HAS_XLIB_SURFACE defined but LSTOPO_HAVE_X11 not enabled?! +# endif +#endif /* LSTOPO_HAVE_X11 */ + +#include +#include +#include +#include +#include + +#include "lstopo.h" + +#if (defined LSTOPO_HAVE_X11) + (defined CAIRO_HAS_PNG_FUNCTIONS) + (defined CAIRO_HAS_PDF_SURFACE) + (defined CAIRO_HAS_PS_SURFACE) + (defined CAIRO_HAS_SVG_SURFACE) +struct lstopo_cairo_output { + struct lstopo_output *loutput; + cairo_surface_t *surface; + cairo_t *context; +}; + +/* Cairo methods */ +static void +topo_cairo_box(struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height, hwloc_obj_t obj, unsigned box_id __hwloc_attribute_unused) +{ + struct lstopo_cairo_output *coutput = loutput->backend_data; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + cairo_t *c = coutput->context; + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + + cairo_rectangle(c, x, y, width, height); + cairo_set_source_rgb(c, (float)r / 255, (float) g / 255, (float) b / 255); + cairo_fill(c); + + cairo_rectangle(c, x, y, width, height); + cairo_set_source_rgb(c, 0, 0, 0); + + if (cpukind_style) { + double dash = (double)(1U << cpukind_style); + cairo_set_dash(c, &dash, 1, 0); + cairo_set_line_width(c, loutput->thickness * (1 + cpukind_style)); + } + + cairo_stroke(c); + + if (cpukind_style) { + cairo_set_dash(c, NULL, 0, 0); + cairo_set_line_width(c, loutput->thickness); + } +} + +static void +topo_cairo_line(struct lstopo_output *loutput, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2, hwloc_obj_t obj __hwloc_attribute_unused, unsigned line_id __hwloc_attribute_unused) +{ + struct lstopo_cairo_output *coutput = loutput->backend_data; + cairo_t *c = coutput->context; + + cairo_move_to(c, x1, y1); + cairo_set_source_rgb(c, 0, 0, 0); + cairo_line_to(c, x2, y2); + cairo_stroke(c); +} + +static void +topo_cairo_text(struct lstopo_output *loutput, const struct lstopo_color *lcolor, int fontsize, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text, hwloc_obj_t obj __hwloc_attribute_unused, unsigned text_id __hwloc_attribute_unused) +{ + struct lstopo_cairo_output *coutput = loutput->backend_data; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + cairo_t *c = coutput->context; + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + + cairo_move_to(c, x, y + fontsize); + cairo_set_source_rgb(c, (float)r / 255, (float) g / 255, (float) b / 255); + + if (cpukind_style % 2) + cairo_select_font_face(c, "default", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); + + cairo_show_text(c, text); + + if (cpukind_style % 2) + cairo_select_font_face(c, "default", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); +} + +static void +topo_cairo_textsize(struct lstopo_output *loutput, const char *text, unsigned textlength __hwloc_attribute_unused, unsigned fontsize __hwloc_attribute_unused, unsigned *width) +{ + struct lstopo_cairo_output *coutput = loutput->backend_data; + cairo_t *c = coutput->context; + cairo_text_extents_t extents; + cairo_text_extents(c, text, &extents); + *width = extents.width; +} + +#if (defined CAIRO_HAS_PNG_FUNCTIONS) + (defined CAIRO_HAS_PDF_SURFACE) + (defined CAIRO_HAS_PS_SURFACE) + (defined CAIRO_HAS_SVG_SURFACE) +static cairo_status_t +topo_cairo_write(void *closure, const unsigned char *data, unsigned int length) +{ + if (fwrite(data, length, 1, closure) < 1) + return CAIRO_STATUS_WRITE_ERROR; + return CAIRO_STATUS_SUCCESS; +} +#endif /* (CAIRO_HAS_PNG_FUNCTIONS + CAIRO_HAS_PDF_SURFACE + CAIRO_HAS_PS_SURFACE + CAIRO_HAS_SVG_SURFACE) */ + +static void +topo_cairo_paint(struct lstopo_cairo_output *coutput) +{ + unsigned fontsize = coutput->loutput->fontsize; + cairo_surface_t *cs = coutput->surface; + cairo_t *c = cairo_create(cs); + coutput->context = c; + cairo_set_font_size(c, fontsize); + cairo_set_line_width(c, coutput->loutput->thickness); + output_draw(coutput->loutput); + cairo_show_page(c); + cairo_destroy(c); + coutput->context = NULL; +} + + + +#endif /* (LSTOPO_HAVE_X11 + CAIRO_HAS_PNG_FUNCTIONS + CAIRO_HAS_PDF_SURFACE + CAIRO_HAS_PS_SURFACE + CAIRO_HAS_SVG_SURFACE) */ + + +#ifdef LSTOPO_HAVE_X11 +/* X11 back-end */ + +struct lstopo_x11_output { + struct lstopo_cairo_output coutput; /* must be at the beginning */ + Display *dpy; + int scr; + Window top, win; + Cursor hand; + unsigned int orig_fontsize, orig_gridsize; + int screen_width, screen_height; /** visible part size */ + int last_screen_width, last_screen_height; /** last visible part size */ + int width, height; /** total normal display size */ + int x, y; /** top left corner of the visible part */ + float scale, last_scale; + int needs_redraw; + int needs_resize; + int auto_resize; + int maximized; +}; + +static void +x11_create(struct lstopo_x11_output *disp, int width, int height) +{ + disp->win = XCreateSimpleWindow(disp->dpy, disp->top, 0, 0, width, height, 0, WhitePixel(disp->dpy, disp->scr), WhitePixel(disp->dpy, disp->scr)); + disp->hand = XCreateFontCursor(disp->dpy, XC_fleur); + XDefineCursor(disp->dpy, disp->win, disp->hand); + XSelectInput(disp->dpy, disp->win, + KeyPressMask | + ButtonPressMask | ButtonReleaseMask | + PointerMotionMask | + ExposureMask); + XMapWindow(disp->dpy, disp->win); + disp->coutput.surface = cairo_xlib_surface_create(disp->dpy, disp->win, DefaultVisual(disp->dpy, disp->scr), width, height); +} + +static void +x11_destroy(struct lstopo_x11_output *disp) +{ + cairo_surface_destroy(disp->coutput.surface); + XDestroyWindow(disp->dpy, disp->win); +} + +static int +x11_is_maximized(struct lstopo_x11_output *disp) +{ + Atom type, state, maxed_h, maxed_v; + int format; + unsigned char *props; + unsigned long i, nr, bytesAfter; + int got_maxed_h = 0, got_maxed_v = 0; + + state = XInternAtom(disp->dpy, "_NET_WM_STATE", True); + props = NULL; + if (Success == XGetWindowProperty(disp->dpy, disp->top, state, 0, (~0L), False, AnyPropertyType, &type, &format, &nr, &bytesAfter, &props)) { + maxed_h = XInternAtom(disp->dpy, "_NET_WM_STATE_MAXIMIZED_VERT", True); + maxed_v = XInternAtom(disp->dpy, "_NET_WM_STATE_MAXIMIZED_HORZ", True); + for(i=0; icoutput; + struct lstopo_output *loutput = coutput->loutput; + + if (disp->scale != disp->last_scale) { + disp->x = disp->scale / disp->last_scale * (float)disp->x; + disp->y = disp->scale / disp->last_scale * (float)disp->y; + } + + if (disp->needs_redraw + || disp->screen_width != disp->last_screen_width + || disp->screen_height != disp->last_screen_height + || disp->scale != disp->last_scale) { + disp->last_screen_width = disp->screen_width; + disp->last_screen_height = disp->screen_height; + disp->last_scale = disp->scale; + loutput->fontsize = disp->orig_fontsize * disp->scale; + loutput->gridsize = disp->orig_gridsize * disp->scale; + + x11_destroy(disp); + + x11_create(disp, disp->width, disp->height); + /* recompute new sizes and positions */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + topo_cairo_paint(coutput); + if (loutput->width > (unsigned) disp->width || loutput->height > (unsigned) disp->height) { + /* need to extend the window before actual redraw */ + x11_destroy(disp); + x11_create(disp, loutput->width, loutput->height); + } + loutput->drawing = LSTOPO_DRAWING_DRAW; + topo_cairo_paint(coutput); + disp->width = loutput->width; + disp->height = loutput->height; + disp->needs_redraw = 0; + } + + if (disp->width <= disp->screen_width) { + disp->x = 0; + } else { + if (disp->x < 0) + disp->x = 0; + if (disp->x >= disp->width - disp->screen_width) + disp->x = disp->width - disp->screen_width; + } + + if (disp->height <= disp->screen_height) { + disp->y = 0; + } else { + if (disp->y < 0) + disp->y = 0; + if (disp->y >= disp->height - disp->screen_height) + disp->y = disp->height - disp->screen_height; + } + + if (disp->needs_resize >= 1 && !disp->maximized) { + if (disp->auto_resize || disp->needs_resize >= 2) { + disp->last_screen_width = disp->screen_width = disp->width; + disp->last_screen_height = disp->screen_height = disp->height; + disp->x = 0; + disp->y = 0; + XResizeWindow(disp->dpy, disp->top, disp->screen_width, disp->screen_height); + } + disp->needs_resize = 0; + } +} + +static struct draw_methods x11_draw_methods = { + NULL, + NULL, + topo_cairo_box, + topo_cairo_line, + topo_cairo_text, + topo_cairo_textsize, +}; + +int +output_x11(struct lstopo_output *loutput, const char *dummy __hwloc_attribute_unused) +{ + struct lstopo_x11_output _disp, *disp = &_disp; + struct lstopo_cairo_output *coutput; + Display *dpy; + Window root, top; + int scr; + Screen *screen; + int screen_width, screen_height; + unsigned int dpi_x, dpi_y, dpi = 0; + int finish = 0; + int state = 0; + int x = 0, y = 0; /* shut warning down */ + int lastx, lasty; + char *resources; + + coutput = &disp->coutput; + memset(coutput, 0, sizeof(*coutput)); + coutput->loutput = loutput; + loutput->backend_data = coutput; + loutput->methods = &x11_draw_methods; + + /* create the toplevel window */ + if (!(dpy = XOpenDisplay(NULL))) { + fprintf(stderr, "couldn't connect to X\n"); + return -1; + } + + XrmInitialize(); + + disp->dpy = dpy; + disp->scr = scr = DefaultScreen(dpy); + screen = ScreenOfDisplay(dpy, scr); + + /* Get DPI from xft, most often configured properly by users */ + resources = XResourceManagerString(dpy); + if (resources) { + XrmDatabase database = XrmGetStringDatabase(resources); + char *type; + XrmValue value; + + if (XrmGetResource(database, "Xft.dpi", "Xft.dpi", &type, &value)) + if (type && strcmp(type, "String") == 0) + dpi = atoi(value.addr); + + XrmDestroyDatabase(database); + } + + if (dpi == 0) { + /* Fallback to value set by X server, but very often hardwired to 96dpi :/ */ + /* 25.4mm per inch */ + dpi_x = ((double) DisplayWidth(dpy, scr) * 25.4) / DisplayWidthMM(dpy, scr); + dpi_y = ((double) DisplayHeight(dpy, scr) * 25.4) / DisplayHeightMM(dpy, scr); + dpi = (dpi_x + dpi_y) / 2; + } + + /* Original values for fontsize/gridsize were tuned for 96dpi */ + coutput->loutput->fontsize = (coutput->loutput->fontsize * dpi) / 96; + coutput->loutput->gridsize = (coutput->loutput->gridsize * dpi) / 96; + + /* recurse once for preparing sizes and positions using the root window surface */ + root = RootWindow(dpy, scr); + disp->top = root; + loutput->drawing = LSTOPO_DRAWING_PREPARE; + x11_create(disp, 1, 1); + topo_cairo_paint(coutput); + x11_destroy(disp); + loutput->drawing = LSTOPO_DRAWING_DRAW; + + /* now create the actual window with the computed max size */ + screen_width = loutput->width; + screen_height = loutput->height; + + disp->top = top = XCreateSimpleWindow(dpy, root, 0, 0, screen_width, screen_height, 0, WhitePixel(dpy, scr), WhitePixel(dpy, scr)); + XStoreName(dpy, top, loutput->title); + XSetIconName(dpy, top, "lstopo"); + XSelectInput(dpy,top, StructureNotifyMask | KeyPressMask); + + if (screen_width >= screen->width) + screen_width = screen->width; + if (screen_height >= screen->height) + screen_height = screen->height; + disp->last_screen_width = 0; + disp->last_screen_height = 0; + disp->screen_width = screen_width; + disp->screen_height = screen_height; + disp->width = loutput->width; + disp->height = loutput->height; + disp->orig_fontsize = loutput->fontsize; + disp->orig_gridsize = loutput->gridsize; + disp->x = 0; + disp->y = 0; + disp->scale = disp->last_scale = 1.0f; + /* TODO: if window got truncated, scale down? */ + disp->needs_redraw = 0; + disp->needs_resize = 0; + disp->auto_resize = 1; + disp->maximized = 0; + + x11_create(disp, loutput->width, loutput->height); + + XMapWindow(dpy, top); + + if (!loutput->refreshing) + lstopo_show_interactive_help(); + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + lastx = disp->x; + lasty = disp->y; + + topo_cairo_paint(coutput); + + while (!finish && !loutput->needs_topology_refresh) { + XEvent e; + if (!XEventsQueued(disp->dpy, QueuedAfterFlush)) { + /* No pending event, flush moving windows before waiting for next event */ + if (disp->x != lastx || disp->y != lasty) { + XMoveWindow(disp->dpy, disp->win, -disp->x, -disp->y); + lastx = disp->x; + lasty = disp->y; + } + } + XNextEvent(disp->dpy, &e); + switch (e.type) { + case Expose: + if (e.xexpose.count < 1) + topo_cairo_paint(coutput); + break; + case MotionNotify: + if (state) { + disp->x -= e.xmotion.x_root - x; + disp->y -= e.xmotion.y_root - y; + x = e.xmotion.x_root; + y = e.xmotion.y_root; + move_x11(disp); + } + break; + case ConfigureNotify: { + float wscale, hscale; + disp->screen_width = e.xconfigure.width; + disp->screen_height = e.xconfigure.height; + if (disp->screen_width != disp->last_screen_width + || disp->screen_height != disp->last_screen_height) { + wscale = disp->screen_width / (float)disp->width; + hscale = disp->screen_height / (float)disp->height; + disp->scale *= wscale > hscale ? hscale : wscale; + if (disp->scale < 1.0f) + disp->scale = 1.0f; + move_x11(disp); + } + if (disp->x != lastx || disp->y != lasty) + XMoveWindow(disp->dpy, disp->win, -disp->x, -disp->y); + disp->maximized = x11_is_maximized(disp); + break; + } + case ButtonPress: + if (e.xbutton.button == Button1) { + state = 1; + x = e.xbutton.x_root; + y = e.xbutton.y_root; + } + break; + case ButtonRelease: + if (e.xbutton.button == Button1) + state = 0; + break; + case MappingNotify: + XRefreshKeyboardMapping(&e.xmapping); + break; + case KeyPress: { + KeySym keysym; + XLookupString(&e.xkey, NULL, 0, &keysym, NULL); + switch (keysym) { + case XK_q: + case XK_Q: + case XK_Escape: + finish = 1; + break; + case XK_F5: + loutput->needs_topology_refresh = 1; + break; + case XK_Left: + disp->x -= disp->screen_width/10; + move_x11(disp); + break; + case XK_Right: + disp->x += disp->screen_width/10; + move_x11(disp); + break; + case XK_Up: + disp->y -= disp->screen_height/10; + move_x11(disp); + break; + case XK_Down: + disp->y += disp->screen_height/10; + move_x11(disp); + break; + case XK_Page_Up: + if (e.xkey.state & ControlMask) { + disp->x -= disp->screen_width; + move_x11(disp); + } else { + disp->y -= disp->screen_height; + move_x11(disp); + } + break; + case XK_Page_Down: + if (e.xkey.state & ControlMask) { + disp->x += disp->screen_width; + move_x11(disp); + } else { + disp->y += disp->screen_height; + move_x11(disp); + } + break; + case XK_Home: + disp->x = 0; + disp->y = 0; + move_x11(disp); + break; + case XK_End: + disp->x = INT_MAX; + disp->y = INT_MAX; + move_x11(disp); + break; + case XK_F: { + /* fit drawing to window, dont't resize the window */ + float wscale = disp->screen_width / (float)disp->width; + float hscale = disp->screen_height / (float)disp->height; + disp->scale *= wscale > hscale ? hscale : wscale; + move_x11(disp); + break; + } + case XK_plus: + case XK_KP_Add: + disp->scale *= 1.2f; + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_minus: + case XK_KP_Subtract: + disp->scale /= 1.2f; + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_1: + case XK_KP_1: + disp->scale = 1.0f; + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_r: + disp->needs_resize = 2; + move_x11(disp); + break; + case XK_R: + disp->auto_resize ^= 1; + printf("%s window autoresizing\n", disp->auto_resize ? "enabled" : "disabled"); + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_h: + case XK_H: + case XK_question: + lstopo_show_interactive_help(); + break; + case XK_a: + loutput->show_attrs_enabled ^= 1; + printf("%s object attributes\n", loutput->show_attrs_enabled ? "enabled" : "disabled"); + disp->needs_redraw = 1; + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_t: + loutput->show_text_enabled ^= 1; + printf("%s object text\n", loutput->show_text_enabled ? "enabled" : "disabled"); + disp->needs_redraw = 1; + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_i: + if (loutput->index_type == LSTOPO_INDEX_TYPE_DEFAULT) { + loutput->index_type = LSTOPO_INDEX_TYPE_PHYSICAL; + printf("switched to physical indexes\n"); + } else if (loutput->index_type == LSTOPO_INDEX_TYPE_PHYSICAL) { + loutput->index_type = LSTOPO_INDEX_TYPE_LOGICAL; + printf("switched to logical indexes\n"); + } else if (loutput->index_type == LSTOPO_INDEX_TYPE_LOGICAL) { + loutput->index_type = LSTOPO_INDEX_TYPE_NONE; + printf("switched to no indexes\n"); + } else if (loutput->index_type == LSTOPO_INDEX_TYPE_NONE) { + loutput->index_type = LSTOPO_INDEX_TYPE_DEFAULT; + printf("switched to default indexes\n"); + } else { + abort(); + } + disp->needs_redraw = 1; + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_b: + loutput->show_binding ^= 1; + printf("%s coloring of binding resources\n", loutput->show_binding ? "enabled" : "disabled"); + disp->needs_redraw = 1; + move_x11(disp); + break; + case XK_d: + loutput->show_disallowed ^= 1; + printf("%s coloring of disallowed resources\n", loutput->show_disallowed ? "enabled" : "disabled"); + disp->needs_redraw = 1; + move_x11(disp); + break; + case XK_k: + loutput->show_cpukinds ^= 1; + printf("%s displaying of CPU kinds\n", loutput->show_cpukinds ? "enabled" : "disabled"); + disp->needs_redraw = 1; + move_x11(disp); + break; + case XK_f: + /* alternate between factorize+collapse, collapse only, and none */ + if (loutput->factorize_enabled && loutput->pci_collapse_enabled) { + loutput->factorize_enabled = 0; + printf("factorizing disabled, PCI collapsing still enabled\n"); + } else if (!loutput->factorize_enabled && loutput->pci_collapse_enabled) { + loutput->pci_collapse_enabled = 0; + printf("factorizing and PCI collapsing disabled\n"); + } else { + loutput->factorize_enabled = 1; + loutput->pci_collapse_enabled = 1; + printf("factorizing and PCI collapsing enabled\n"); + } + disp->needs_redraw = 1; + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_l: + if (loutput->show_legend == LSTOPO_SHOW_LEGEND_ALL) { + loutput->show_legend = LSTOPO_SHOW_LEGEND_NONE; + printf("switched to no legend lines\n"); + } else if (loutput->show_legend == LSTOPO_SHOW_LEGEND_NONE) { + loutput->show_legend = LSTOPO_SHOW_LEGEND_NO_DEFAULT; + printf("switched to no default legend lines\n"); + } else if (loutput->show_legend == LSTOPO_SHOW_LEGEND_NO_DEFAULT) { + loutput->show_legend = LSTOPO_SHOW_LEGEND_ALL; + printf("switched to all legend lines\n"); + } else { + abort(); + } + disp->needs_redraw = 1; + disp->needs_resize = 1; + move_x11(disp); + break; + case XK_E: + lstopo_show_interactive_cli_options(loutput); + break; + } + } + } + } + x11_destroy(disp); + XDestroyWindow(disp->dpy, disp->top); + XFreeCursor(disp->dpy, disp->hand); + XCloseDisplay(disp->dpy); + + destroy_colors(loutput); + return 0; +} +#endif /* LSTOPO_HAVE_X11 */ + + +#ifdef CAIRO_HAS_PNG_FUNCTIONS +/* PNG back-end */ + +static struct draw_methods png_draw_methods = { + NULL, + NULL, + topo_cairo_box, + topo_cairo_line, + topo_cairo_text, + topo_cairo_textsize, +}; + +int +output_png(struct lstopo_output *loutput, const char *filename) +{ + struct lstopo_cairo_output coutput; + FILE *output; + cairo_surface_t *fakecs, *cs; + + output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + + memset(&coutput, 0, sizeof(coutput)); + coutput.loutput = loutput; + loutput->backend_data = &coutput; + loutput->methods = &png_draw_methods; + loutput->file = output; + + /* create a fake surface */ + fakecs = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1); + coutput.surface = fakecs; + + /* recurse once for preparing sizes and positions using the fake surface */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + topo_cairo_paint(&coutput); + loutput->drawing = LSTOPO_DRAWING_DRAW; + cairo_surface_destroy(fakecs); + + /* create the actual surface with the right size */ + cs = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, loutput->width, loutput->height); + coutput.surface = cs; + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + topo_cairo_paint(&coutput); + cairo_surface_write_to_png_stream(coutput.surface, topo_cairo_write, output); + cairo_surface_destroy(coutput.surface); + + if (output != stdout) + fclose(output); + + destroy_colors(loutput); + return 0; +} +#endif /* CAIRO_HAS_PNG_FUNCTIONS */ + + +#ifdef CAIRO_HAS_PDF_SURFACE +/* PDF back-end */ + +static struct draw_methods pdf_draw_methods = { + NULL, + NULL, + topo_cairo_box, + topo_cairo_line, + topo_cairo_text, + topo_cairo_textsize, +}; + +int +output_pdf(struct lstopo_output *loutput, const char *filename) +{ + struct lstopo_cairo_output coutput; + FILE *output; + cairo_surface_t *fakecs, *cs; + + output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + + memset(&coutput, 0, sizeof(coutput)); + coutput.loutput = loutput; + loutput->backend_data = &coutput; + loutput->methods = &pdf_draw_methods; + loutput->file = output; + + /* create a fake surface */ + fakecs = cairo_pdf_surface_create_for_stream(NULL, NULL, 1, 1); + coutput.surface = fakecs; + + /* recurse once for preparing sizes and positions using the fake surface */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + topo_cairo_paint(&coutput); + loutput->drawing = LSTOPO_DRAWING_DRAW; + cairo_surface_destroy(fakecs); + + /* create the actual surface with the right size */ + cs = cairo_pdf_surface_create_for_stream(topo_cairo_write, loutput->file, loutput->width, loutput->height); + coutput.surface = cs; + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + topo_cairo_paint(&coutput); + cairo_surface_flush(coutput.surface); + cairo_surface_destroy(coutput.surface); + + if (output != stdout) + fclose(output); + + destroy_colors(loutput); + return 0; +} +#endif /* CAIRO_HAS_PDF_SURFACE */ + + +#ifdef CAIRO_HAS_PS_SURFACE +/* PS back-end */ + +static struct draw_methods ps_draw_methods = { + NULL, + NULL, + topo_cairo_box, + topo_cairo_line, + topo_cairo_text, + topo_cairo_textsize, +}; + +int +output_ps(struct lstopo_output *loutput, const char *filename) +{ + struct lstopo_cairo_output coutput; + FILE *output; + cairo_surface_t *fakecs, *cs; + + output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + + memset(&coutput, 0, sizeof(coutput)); + coutput.loutput = loutput; + loutput->backend_data = &coutput; + loutput->methods = &ps_draw_methods; + loutput->file = output; + + /* create a fake surface */ + fakecs = cairo_ps_surface_create_for_stream(NULL, NULL, 1, 1); + coutput.surface = fakecs; + + /* recurse once for preparing sizes and positions using the fake surface */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + topo_cairo_paint(&coutput); + loutput->drawing = LSTOPO_DRAWING_DRAW; + cairo_surface_destroy(fakecs); + + /* create the actual surface with the right size */ + cs = cairo_ps_surface_create_for_stream(topo_cairo_write, loutput->file, loutput->width, loutput->height); + coutput.surface = cs; + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + topo_cairo_paint(&coutput); + cairo_surface_flush(coutput.surface); + cairo_surface_destroy(coutput.surface); + + if (output != stdout) + fclose(output); + + destroy_colors(loutput); + return 0; +} +#endif /* CAIRO_HAS_PS_SURFACE */ + + +#ifdef CAIRO_HAS_SVG_SURFACE +/* SVG back-end */ + +static struct draw_methods svg_draw_methods = { + NULL, + NULL, + topo_cairo_box, + topo_cairo_line, + topo_cairo_text, + topo_cairo_textsize, +}; + +int +output_cairosvg(struct lstopo_output *loutput, const char *filename) +{ + struct lstopo_cairo_output coutput; + FILE *output; + cairo_surface_t *fakecs, *cs; + + output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + + memset(&coutput, 0, sizeof(coutput)); + coutput.loutput = loutput; + loutput->backend_data = &coutput; + loutput->methods = &svg_draw_methods; + loutput->file = output; + + /* create a fake surface */ + fakecs = cairo_svg_surface_create_for_stream(NULL, NULL, 1, 1); + coutput.surface = fakecs; + + /* recurse once for preparing sizes and positions using the fake surface */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + topo_cairo_paint(&coutput); + loutput->drawing = LSTOPO_DRAWING_DRAW; + cairo_surface_destroy(fakecs); + + /* create the actual surface with the right size */ + cs = cairo_svg_surface_create_for_stream(topo_cairo_write, loutput->file, loutput->width, loutput->height); + coutput.surface = cs; + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + topo_cairo_paint(&coutput); + cairo_surface_flush(coutput.surface); + cairo_surface_destroy(coutput.surface); + + if (output != stdout) + fclose(output); + + destroy_colors(loutput); + return 0; +} +#endif /* CAIRO_HAS_SVG_SURFACE */ diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-draw.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-draw.c new file mode 100644 index 0000000000..1c2359b26b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-draw.c @@ -0,0 +1,1910 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2013, 2015 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include +#include +#include +#include + +#include "lstopo.h" + +#define LSTOPO_COLOR(r,g,b) (struct lstopo_color) { r, g, b, 0 } +#define LSTOPO_COLOR_GREY(x) (struct lstopo_color) { x, x, x, 0 } +#define LSTOPO_COLOR_WHITE LSTOPO_COLOR_GREY(0xff) +#define LSTOPO_COLOR_BLACK LSTOPO_COLOR_GREY(0) + +#define EPOXY_R_COLOR 0xe7 +#define EPOXY_G_COLOR 0xff +#define EPOXY_B_COLOR 0xb5 +#define LSTOPO_COLOR_EPOXY LSTOPO_COLOR(EPOXY_R_COLOR, EPOXY_G_COLOR, EPOXY_B_COLOR) + +#define EPOXY_GREY_COLOR ((EPOXY_R_COLOR+EPOXY_G_COLOR+EPOXY_B_COLOR)/3) +#define LSTOPO_COLOR_GREY_EPOXY LSTOPO_COLOR_GREY(EPOXY_GREY_COLOR) + +#define DARK_EPOXY_R_COLOR ((EPOXY_R_COLOR * 100) / 110) +#define DARK_EPOXY_G_COLOR ((EPOXY_G_COLOR * 100) / 110) +#define DARK_EPOXY_B_COLOR ((EPOXY_B_COLOR * 100) / 110) +#define LSTOPO_COLOR_DARK_EPOXY LSTOPO_COLOR(DARK_EPOXY_R_COLOR, DARK_EPOXY_G_COLOR, DARK_EPOXY_B_COLOR) + +#define DARK_EPOXY_GREY_COLOR ((EPOXY_GREY_COLOR * 100) / 110) +#define LSTOPO_COLOR_GREY_DARK_EPOXY LSTOPO_COLOR_GREY(DARK_EPOXY_GREY_COLOR) + +#define DARKER_EPOXY_R_COLOR ((DARK_EPOXY_R_COLOR * 100) / 110) +#define DARKER_EPOXY_G_COLOR ((DARK_EPOXY_G_COLOR * 100) / 110) +#define DARKER_EPOXY_B_COLOR ((DARK_EPOXY_B_COLOR * 100) / 110) +#define LSTOPO_COLOR_DARKER_EPOXY LSTOPO_COLOR(DARKER_EPOXY_R_COLOR, DARKER_EPOXY_G_COLOR, DARKER_EPOXY_B_COLOR) + +#define DARKER_EPOXY_GREY_COLOR ((DARK_EPOXY_GREY_COLOR * 100) / 110) +#define LSTOPO_COLOR_GREY_DARKER_EPOXY LSTOPO_COLOR_GREY(DARKER_EPOXY_GREY_COLOR) + +struct lstopo_color_palette lstopo_main_palette, lstopo_grey_palette, lstopo_white_palette; + +void +lstopo_palette_init(struct lstopo_output *loutput) +{ +#ifdef HWLOC_HAVE_GCC_W_MISSING_FIELD_INITIALIZERS +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + /* each of these colors must be declared in declare_colors() */ + lstopo_main_palette.white = LSTOPO_COLOR_WHITE; + lstopo_main_palette.black = LSTOPO_COLOR_BLACK; + lstopo_main_palette.machine = LSTOPO_COLOR_WHITE; + lstopo_main_palette.group = LSTOPO_COLOR_WHITE; + lstopo_main_palette.package = LSTOPO_COLOR_DARK_EPOXY; + lstopo_main_palette.group_in_package = LSTOPO_COLOR_EPOXY; + lstopo_main_palette.die = LSTOPO_COLOR_EPOXY; + lstopo_main_palette.core = LSTOPO_COLOR_GREY(0xbe); + lstopo_main_palette.pu = LSTOPO_COLOR_WHITE; + lstopo_main_palette.numanode = LSTOPO_COLOR(0xef, 0xdf, 0xde); + lstopo_main_palette.memories = LSTOPO_COLOR(0xf2, 0xe8, 0xe8); /* slightly lighter than numanode */ + lstopo_main_palette.cache = LSTOPO_COLOR_WHITE; + lstopo_main_palette.pcidev = LSTOPO_COLOR_DARKER_EPOXY; + lstopo_main_palette.osdev = LSTOPO_COLOR_GREY(0xde); + lstopo_main_palette.bridge = LSTOPO_COLOR_WHITE; + lstopo_main_palette.misc = LSTOPO_COLOR_WHITE; + lstopo_main_palette.binding = LSTOPO_COLOR(0, 0xff, 0); /* green */ + lstopo_main_palette.disallowed = LSTOPO_COLOR(0xff, 0, 0); /* red */ + lstopo_main_palette.process = LSTOPO_COLOR(0xff, 0xff, 0); /* yellow */ + + memcpy(&lstopo_grey_palette, &lstopo_main_palette, sizeof(lstopo_main_palette)); + /* replace non-grey colors by some grey */ + lstopo_grey_palette.package = LSTOPO_COLOR_GREY_DARK_EPOXY; + lstopo_grey_palette.group_in_package = LSTOPO_COLOR_GREY_EPOXY; + lstopo_grey_palette.die = LSTOPO_COLOR_GREY_EPOXY; + lstopo_grey_palette.numanode = LSTOPO_COLOR_GREY(0xe4); + lstopo_grey_palette.memories = LSTOPO_COLOR_GREY(0xe8); /* slightly lighter than numanode */ + lstopo_grey_palette.pcidev = LSTOPO_COLOR_GREY_DARKER_EPOXY; + lstopo_grey_palette.binding = LSTOPO_COLOR_GREY(0xbb); + lstopo_grey_palette.disallowed = LSTOPO_COLOR_GREY(0x77); + lstopo_grey_palette.process = LSTOPO_COLOR_GREY(0x99); + + memcpy(&lstopo_white_palette, &lstopo_main_palette, sizeof(lstopo_main_palette)); + /* replace everything but white/black with white */ + lstopo_white_palette.machine = LSTOPO_COLOR_WHITE; + lstopo_white_palette.group = LSTOPO_COLOR_WHITE; + lstopo_white_palette.package = LSTOPO_COLOR_WHITE; + lstopo_white_palette.group_in_package = LSTOPO_COLOR_WHITE; + lstopo_white_palette.die = LSTOPO_COLOR_WHITE; + lstopo_white_palette.core = LSTOPO_COLOR_WHITE; + lstopo_white_palette.pu = LSTOPO_COLOR_WHITE; + lstopo_white_palette.numanode = LSTOPO_COLOR_WHITE; + lstopo_white_palette.memories = LSTOPO_COLOR_WHITE; + lstopo_white_palette.cache = LSTOPO_COLOR_WHITE; + lstopo_white_palette.pcidev = LSTOPO_COLOR_WHITE; + lstopo_white_palette.osdev = LSTOPO_COLOR_WHITE; + lstopo_white_palette.bridge = LSTOPO_COLOR_WHITE; + lstopo_white_palette.misc = LSTOPO_COLOR_WHITE; + lstopo_white_palette.binding = LSTOPO_COLOR_WHITE; + lstopo_white_palette.disallowed = LSTOPO_COLOR_WHITE; + lstopo_white_palette.process = LSTOPO_COLOR_WHITE; + +#ifdef HWLOC_HAVE_GCC_W_MISSING_FIELD_INITIALIZERS +#pragma GCC diagnostic warning "-Wmissing-field-initializers" +#endif + + /* use the color palette by default */ + loutput->palette = &lstopo_main_palette; +} + +void +lstopo_palette_select(struct lstopo_output *loutput, const char *name) +{ + if (!strcmp(name, "grey") || !strcmp(name, "greyscale")) + loutput->palette = &lstopo_grey_palette; + else if (!strcmp(name, "colors") || !strcmp(name, "default")) + loutput->palette = &lstopo_main_palette; + else if (!strcmp(name, "white") || !strcmp(name, "none")) + loutput->palette = &lstopo_white_palette; + else + fprintf(stderr, "Unrecognized palette name `%s', ignoring\n", name); +} + +void +lstopo_palette_set_color(struct lstopo_color *color, unsigned rrggbb) +{ + color->r = (rrggbb >> 16) & 0xff; + color->g = (rrggbb >> 8) & 0xff; + color->b = (rrggbb >> 0) & 0xff; +} + +void +lstopo_palette_set_color_by_name(struct lstopo_output *loutput, const char *name, unsigned rrggbb) +{ + if (!strcasecmp(name, "machine")) + lstopo_palette_set_color(&loutput->palette->machine, rrggbb); + else if (!strcasecmp(name, "group")) + lstopo_palette_set_color(&loutput->palette->group, rrggbb); + else if (!strcasecmp(name, "package")) + lstopo_palette_set_color(&loutput->palette->package, rrggbb); + else if (!strcasecmp(name, "group_in_package")) + lstopo_palette_set_color(&loutput->palette->group_in_package, rrggbb); + else if (!strcasecmp(name, "die")) + lstopo_palette_set_color(&loutput->palette->die, rrggbb); + else if (!strcasecmp(name, "core")) + lstopo_palette_set_color(&loutput->palette->core, rrggbb); + else if (!strcasecmp(name, "pu")) + lstopo_palette_set_color(&loutput->palette->pu, rrggbb); + else if (!strcasecmp(name, "numanode")) + lstopo_palette_set_color(&loutput->palette->numanode, rrggbb); + else if (!strcasecmp(name, "memories")) + lstopo_palette_set_color(&loutput->palette->memories, rrggbb); + else if (!strcasecmp(name, "cache")) + lstopo_palette_set_color(&loutput->palette->cache, rrggbb); + else if (!strcasecmp(name, "pcidev")) + lstopo_palette_set_color(&loutput->palette->pcidev, rrggbb); + else if (!strcasecmp(name, "osdev")) + lstopo_palette_set_color(&loutput->palette->osdev, rrggbb); + else if (!strcasecmp(name, "bridge")) + lstopo_palette_set_color(&loutput->palette->bridge, rrggbb); + else if (!strcasecmp(name, "misc")) + lstopo_palette_set_color(&loutput->palette->misc, rrggbb); + else + fprintf(stderr, "Unrecognized palette color name `%s', ignoring\n", name); + /* binding/disallowed/process are handled by --binding/disallowed/top-color */ +} + +static struct lstopo_color *color_list = NULL; + +static struct lstopo_color * +declare_color(struct lstopo_output *loutput, struct lstopo_color *color) +{ + memset(&color->private, 0, sizeof(color->private)); + + /* call the backend callback if any */ + if (loutput->methods->declare_color) { + int ret = loutput->methods->declare_color(loutput, color); + if (ret < 0) + return NULL; + } + + /* insert */ + color->next = color_list; + color_list = color; + + return color; +} + +void +declare_colors(struct lstopo_output *output) +{ + /* don't bother looking for duplicate colors here, + * we want to be able to use those structs so always queue them + */ + declare_color(output, &output->palette->white); + declare_color(output, &output->palette->black); + declare_color(output, &output->palette->machine); + declare_color(output, &output->palette->group); + declare_color(output, &output->palette->package); + declare_color(output, &output->palette->group_in_package); + declare_color(output, &output->palette->die); + declare_color(output, &output->palette->core); + declare_color(output, &output->palette->pu); + declare_color(output, &output->palette->numanode); + declare_color(output, &output->palette->memories); + declare_color(output, &output->palette->cache); + declare_color(output, &output->palette->pcidev); + declare_color(output, &output->palette->osdev); + declare_color(output, &output->palette->bridge); + declare_color(output, &output->palette->misc); + declare_color(output, &output->palette->binding); + declare_color(output, &output->palette->disallowed); + declare_color(output, &output->palette->process); +} + +void +destroy_colors(struct lstopo_output *loutput) +{ + struct lstopo_color *tmp = color_list; + + while (tmp) { + struct lstopo_color *next = tmp->next; + + if (loutput->methods->destroy_color) + loutput->methods->destroy_color(loutput, tmp); + if (tmp->free) + free(tmp); + tmp = next; + } + + color_list = NULL; /* so that it works after refresh */ +} + +static struct lstopo_color * +find_or_declare_rgb_color(struct lstopo_output *loutput, int r, int g, int b) +{ + struct lstopo_color *color, *tmp; + + for(tmp = color_list; tmp; tmp = tmp->next) + if (tmp->r == r && tmp->g == g && tmp->b == b) + return tmp; + + color = malloc(sizeof(*color)); + if (!color) + return NULL; + + color->r = r & 255; + color->g = g & 255; + color->b = b & 255; + color->free = 1; + tmp = declare_color(loutput, color); + if (!tmp) + free(color); + return tmp; +} + +static unsigned +get_textwidth(void *output, + const char *text, unsigned length, + unsigned fontsize) +{ + struct lstopo_output *loutput = output; + unsigned width; + +#ifdef HWLOC_DEBUG + assert(loutput->methods->textsize); +#endif + loutput->methods->textsize(output, text, length, fontsize, &width); + width = (unsigned)(loutput->text_xscale * ((float)width)); + return width; +} + +/* + * foo_draw functions take a OBJ, computes which size it needs, recurse into + * sublevels with drawing=PREPARE to recursively compute the needed size + * without actually drawing anything, then draw things about OBJ (chip draw, + * cache size information etc) at (X,Y), recurse into sublevels again to + * actually draw things, and return in RETWIDTH and RETHEIGHT the amount of + * space that the drawing took. + * + * For generic detailed comments, see the node_draw function. + * + * border is added around the objects + * separator is added between objects + */ + +typedef void (*foo_draw)(struct lstopo_output *loutput, hwloc_obj_t obj, unsigned depth, unsigned x, unsigned y); + +static foo_draw get_type_fun(hwloc_obj_type_t type); + +/* next child, in all children list, with memory before CPU, ignoring PU if needed. + * similar to hwloc_get_next_child() but returns memory children first. + */ +#define NEXT_CHILD_INIT_STATE -1 +static hwloc_obj_t next_child(struct lstopo_output *loutput, hwloc_obj_t parent, unsigned kind, hwloc_obj_t prev, int *statep) +{ + int state; + hwloc_obj_t obj; + if (prev) { + obj = prev->next_sibling; + state = *statep; + } else { + obj = NULL; + state = NEXT_CHILD_INIT_STATE; + } + + again: + if (!obj && state <= -1 && (kind & LSTOPO_CHILD_KIND_MEMORY)) { + obj = parent->memory_first_child; + state = 0; + } + if (!obj && state <= 0 && (kind & LSTOPO_CHILD_KIND_NORMAL)) { + obj = parent->first_child; + state = 1; + } + if (!obj && state <= 1 && (kind & LSTOPO_CHILD_KIND_IO)) { + obj = parent->io_first_child; + state = 2; + } + if (!obj && state <= 2 && (kind & LSTOPO_CHILD_KIND_MISC)) { + obj = parent->misc_first_child; + state = 3; + } + if (!obj) + return NULL; + + if (loutput->factorize_enabled && parent->arity > loutput->factorize_min[obj->type]) { + if (((struct lstopo_obj_userdata *)obj->userdata)->factorized < 0) { + obj = obj->next_sibling; + goto again; + } + } + + if (obj->type == HWLOC_OBJ_PU && loutput->ignore_pus) { + obj = obj->next_sibling; + goto again; + } + if (obj->type == HWLOC_OBJ_NUMANODE && loutput->ignore_numanodes) { + obj = obj->next_sibling; + goto again; + } + if (loutput->pci_collapse_enabled && obj->type == HWLOC_OBJ_PCI_DEVICE) { + struct lstopo_obj_userdata *lud = obj->userdata; + if (lud->pci_collapsed == -1) { + obj = obj->next_sibling; + goto again; + } + } + *statep = state; + return obj; +} + +static float pci_link_speed(hwloc_obj_t obj) +{ + if (obj->type == HWLOC_OBJ_PCI_DEVICE) + return obj->attr->pcidev.linkspeed; + if (obj->type == HWLOC_OBJ_BRIDGE && obj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI) + return obj->attr->bridge.upstream.pci.linkspeed; + return 0.; +} + +/******************************** + * Placing children in rectangle + */ + +/* preferred width/height compromise */ +#define RATIO (4.f/3.f) + +/* returns a score <= 1. close to 1 is better */ +static __hwloc_inline +float rectangle_score(unsigned width, unsigned height, float ratio) +{ + float score = ((float) width)/height/ratio; + if (score > 1) + score = 1/score; + return score; +} + +static void find_children_rectangle(struct lstopo_output *loutput, hwloc_obj_t parent, + unsigned kind, unsigned separator, + unsigned *rowsp, unsigned *columnsp, + float ratio) +{ + unsigned rows = 0, columns = 0, n; + unsigned numsubobjs = 0, obj_totwidth = 0, obj_totheight = 0; + unsigned obj_avgwidth, obj_avgheight; + unsigned area = 0; + float idealtotheight, under_score, over_score, best_score = 0.f; + hwloc_obj_t child; + int ncstate; + + /* Total area for subobjects */ + child = NULL; + while ((child=next_child(loutput, parent, kind, child, &ncstate)) != NULL) { + struct lstopo_obj_userdata *clud = child->userdata; + numsubobjs++; + obj_totwidth += clud->width + separator; + obj_totheight += clud->height + separator; + area += (clud->width + separator) * (clud->height + separator); + } + + /* Average object size */ + obj_avgwidth = obj_totwidth / numsubobjs; + obj_avgheight = obj_totheight / numsubobjs; + + /* Try to find a rectangle fitting exactly */ + for (n = (unsigned) (float) floor(sqrt(numsubobjs)); + rows >= (unsigned) (float) ceil(pow(numsubobjs, 0.33)) && n > 1; + n--) { + float old_best_score = best_score; + unsigned p = numsubobjs / n; + float np_score; /* n rows x p columns */ + float pn_score; /* p rows x n columns */ + if (p <= 1 || p * n != numsubobjs) + continue; + /* Try both n*p and n*p rectangles */ + np_score = rectangle_score(p * obj_avgwidth, obj_avgheight * n, ratio); + pn_score = rectangle_score(n * obj_avgwidth, obj_avgheight * p, ratio); + if (np_score > pn_score) { + if (np_score > best_score) { + rows = n; + columns = p; + best_score = np_score; + } + } else { + if (pn_score > best_score) { + rows = p; + columns = n; + best_score = pn_score; + } + } + if (old_best_score == best_score) + /* Score didn't improve, no need to try further. + * The graph score(n) is an inverted U, with np_score on the left and pn_score on the right. + * Se start somewhere in the middle and walk to both ends simultaneously, + * Only one side can improve towards the maximum, we stop once once it stops improving. + * The other side can just decrease for ever. + */ + goto done; + } + if (best_score) + /* We got a rectangle fitting exactly, it may not be perfect but it's good looking */ + goto done; + + /* Try to find a rectangle with an incomplete last row */ + + /* Ideal total height for spreading that area with ratio */ + idealtotheight = (float) sqrt(area/ratio); + /* approximation of number of rows */ + rows = (unsigned) (idealtotheight / obj_avgheight); + columns = rows ? (numsubobjs + rows - 1) / rows : 1; + /* Score obtained by underestimation */ + under_score = rectangle_score(columns * obj_avgwidth, rows * obj_avgheight, ratio); + /* try to overestimate too */ + rows++; + columns = (numsubobjs + rows - 1) / rows; + /* Score obtained by overestimation */ + over_score = rectangle_score(columns * obj_avgwidth, rows * obj_avgheight, ratio); + /* Revert back to under estimation if it was better */ + if (rows > 1 && under_score > over_score) { + rows--; + columns = (numsubobjs + rows - 1) / rows; + } + + done: + *rowsp = rows; + *columnsp = columns; +} + +/************************** + * Placing children + */ + +static void +place_children_horiz(struct lstopo_output *loutput, hwloc_obj_t parent, + unsigned kind, unsigned border, unsigned separator, + unsigned *width, unsigned *height) +{ + unsigned curx = 0; + unsigned maxh = 0; + hwloc_obj_t child; + int ncstate; + for(child = next_child(loutput, parent, kind, NULL, &ncstate); + child; + child = next_child(loutput, parent, kind, child, &ncstate)) { + struct lstopo_obj_userdata *clud = child->userdata; + clud->xrel = curx + border; + clud->yrel = border; + if (clud->height > maxh) + maxh = clud->height; + curx += separator + clud->width; + } + *width = curx - separator + 2*border; + *height = maxh + 2*border; +} + +/* bridge object height: small empty box */ +#define BRIDGE_HEIGHT (gridsize) + +static void +place_children_vert(struct lstopo_output *loutput, hwloc_obj_t parent, + unsigned kind, unsigned border, unsigned separator, + unsigned *width, unsigned *height) +{ + unsigned cury = 0; + unsigned maxw = 0; + unsigned gridsize = loutput->gridsize; + unsigned fontsize = loutput->fontsize; + int bridge_parent_with_pcilinkspeed = parent->type == HWLOC_OBJ_BRIDGE + && loutput->show_text_enabled && loutput->show_text[HWLOC_OBJ_BRIDGE]; + hwloc_obj_t child; + int ncstate; + for(child = next_child(loutput, parent, kind, NULL, &ncstate); + child; + child = next_child(loutput, parent, kind, child, &ncstate)) { + struct lstopo_obj_userdata *clud = child->userdata; + unsigned child_height = clud->height; + clud->xrel = border; + clud->yrel = cury + border; + if (clud->width > maxw) + maxw = clud->width; + + if (bridge_parent_with_pcilinkspeed && pci_link_speed(child) != 0.) + /* make sure padding between children is enough to display pci link speed */ + if (child_height <= BRIDGE_HEIGHT + fontsize) + child_height = BRIDGE_HEIGHT + fontsize; + + cury += separator + child_height; + } + *width = maxw + 2*border; + *height = cury - separator + 2*border; +} + +static void +place_children_rect(struct lstopo_output *loutput, hwloc_obj_t parent, + unsigned kind, unsigned border, unsigned separator, + unsigned *width, unsigned *height) +{ + unsigned rows, columns; + unsigned totwidth, totheight; /* total children array size, without borders */ + unsigned rowwidth; /* current row width */ + unsigned maxheight; /* max height for current row */ + hwloc_obj_t child; + int ncstate; + float ratio; + int i; + + if (parent->type == HWLOC_OBJ_CORE) + ratio = 1/RATIO; + else + ratio = RATIO; + find_children_rectangle(loutput, parent, kind, separator, &rows, &columns, ratio); + + rowwidth = 0; + maxheight = 0; + totwidth = 0; + totheight = 0; + for(i = 0, child = next_child(loutput, parent, kind, NULL, &ncstate); + child; + i++, child = next_child(loutput, parent, kind, child, &ncstate)) { + struct lstopo_obj_userdata *clud = child->userdata; + /* Newline? */ + if (i && i%columns == 0) { + /* Update total width using new row */ + if (rowwidth > totwidth) + totwidth = rowwidth; + rowwidth = 0; + /* Update total height */ + totheight += maxheight + separator; + maxheight = 0; + } + /* Add new child */ + clud->xrel = rowwidth + border; + clud->yrel = totheight + border; + rowwidth += clud->width + separator; + if (clud->height > maxheight) + maxheight = clud->height; + } + /* Update total width using last row */ + if (rowwidth > totwidth) + totwidth = rowwidth; + /* Remove spurious separator on the right */ + totwidth -= separator; + /* Update total height using last row */ + totheight += maxheight; /* no separator */ + + *width = totwidth + 2*border; + *height = totheight + 2*border; +} + +static void +place__children(struct lstopo_output *loutput, hwloc_obj_t parent, + unsigned kind, + enum lstopo_orient_e *orientp, + unsigned border, unsigned separator, + unsigned *widthp, unsigned *heightp) +{ + if (*orientp == LSTOPO_ORIENT_HORIZ) { + /* force horizontal */ + place_children_horiz(loutput, parent, kind, border, separator, widthp, heightp); + + } else if (*orientp == LSTOPO_ORIENT_VERT) { + /* force vertical */ + place_children_vert(loutput, parent, kind, border, separator, widthp, heightp); + + } else { + /* NONE or forced RECT, do a rectangular placement */ + place_children_rect(loutput, parent, kind, border, separator, widthp, heightp); + } +} + +/* Recurse into children to get their size. + * Place them. + * Save their position and the parent total size for later. + */ +static void +place_children(struct lstopo_output *loutput, hwloc_obj_t parent, + unsigned xrel, unsigned yrel /* position of children within parent */) +{ + struct lstopo_obj_userdata *plud = parent->userdata; + enum lstopo_orient_e main_orient, right_orient, below_orient; + unsigned border = loutput->gridsize; + unsigned separator = loutput->gridsize; + unsigned separator_below_cache = loutput->gridsize; + unsigned normal_children_separator = loutput->gridsize; + unsigned totwidth = plud->width, totheight = plud->height; + + /* Children placement is divided in 4 zones: + * + * +-------------------------------------------------------------------+ + * | Above = Memory Children (by default) | + * +-----------------------------------+-------------------------------+ + * | Main = CPU (always), | Right = I/O+Misc (by default) | + * | Memory+I/O+Misc (optional) | | + * +-----------------------------------+-------------------------------+ + * | Below = I/O+Misc (optional) | + * +-----------------------------------+ + * + * All these children are placed inside the parent box, except: + * - Cache parent are between Above and Main. + * - Bridges have a special drawing for PCI buses and links + * + * I/O and Misc parents only have the Main section because + * their children are either I/O or Misc, no CPU or Memory. + * + * Memory parents may have Main (for Memory children) + * and below/right for Misc. + */ + unsigned children_width = 0, children_height = 0; /* Main children size */ + unsigned above_children_width = 0, above_children_height = 0; /* Above children size */ + unsigned right_children_width = 0, right_children_height = 0; /* Right children size */ + unsigned below_children_width = 0, below_children_height = 0; /* Below children size */ + unsigned mrb_children_width = 0, mrb_children_height = 0; /* sum of Main+Right+Below sizes */ + unsigned existing_kinds; + int normal_children_are_PUs; + hwloc_obj_t child; + int ncstate; + unsigned i; + + /* place main children according to the parent type if specified, or to the main layout */ + main_orient = loutput->force_orient[parent->type]; + /* place right/below children according to right/below first, or fallback to the parent type */ + right_orient = loutput->right_force_orient; + if (right_orient == LSTOPO_ORIENT_NONE) + right_orient = loutput->force_orient[parent->type]; + below_orient = loutput->below_force_orient; + if (below_orient == LSTOPO_ORIENT_NONE) + below_orient = loutput->force_orient[parent->type]; + + /* defaults */ + plud->children.box = 0; + plud->above_children.box = 0; + plud->right_children.box = 0; + plud->below_children.box = 0; + + /* list the kinds of children that exist in that parent */ + existing_kinds = (parent->arity ? LSTOPO_CHILD_KIND_NORMAL : 0) + | (parent->memory_arity ? LSTOPO_CHILD_KIND_MEMORY : 0) + | (parent->io_arity ? LSTOPO_CHILD_KIND_IO : 0) + | (parent->misc_arity ? LSTOPO_CHILD_KIND_MISC : 0); + /* all children together by default */ + plud->children.kinds = existing_kinds; + plud->above_children.kinds = 0; + plud->right_children.kinds = 0; + plud->below_children.kinds = 0; + /* if we're not inside a memory object, put memory children above if requested */ + if (!hwloc_obj_type_is_memory(parent->type) + && (loutput->children_order & LSTOPO_ORDER_MEMORY_ABOVE)) { + plud->children.kinds &= ~LSTOPO_CHILD_KIND_MEMORY; + plud->above_children.kinds |= existing_kinds & LSTOPO_CHILD_KIND_MEMORY; + } + /* if we're not inside a I/O, put I/O on the right if requested */ + if (!hwloc_obj_type_is_io(parent->type) + && (loutput->children_order & LSTOPO_ORDER_IO_RIGHT)) { + plud->children.kinds &= ~LSTOPO_CHILD_KIND_IO; + plud->right_children.kinds |= existing_kinds & LSTOPO_CHILD_KIND_IO; + } + /* if we're not inside a I/O, put I/O below if requested */ + if (!hwloc_obj_type_is_io(parent->type) + && (loutput->children_order & LSTOPO_ORDER_IO_BELOW)) { + plud->children.kinds &= ~LSTOPO_CHILD_KIND_IO; + plud->below_children.kinds |= existing_kinds & LSTOPO_CHILD_KIND_IO; + } + /* if we're not inside a Misc, put Misc on the right if requested */ + if (parent->type != HWLOC_OBJ_MISC + && (loutput->children_order & LSTOPO_ORDER_MISC_RIGHT)) { + plud->children.kinds &= ~LSTOPO_CHILD_KIND_MISC; + plud->right_children.kinds |= existing_kinds & LSTOPO_CHILD_KIND_MISC; + } + /* if we're not inside a Misc, put Misc below if requested */ + if (parent->type != HWLOC_OBJ_MISC + && (loutput->children_order & LSTOPO_ORDER_MISC_BELOW)) { + plud->children.kinds &= ~LSTOPO_CHILD_KIND_MISC; + plud->below_children.kinds |= existing_kinds & LSTOPO_CHILD_KIND_MISC; + } + + /* bridge children always vertical */ + if (parent->type == HWLOC_OBJ_BRIDGE) + main_orient = LSTOPO_ORIENT_VERT; + + /* if factorizing children, use horizontal by default */ + if (main_orient == LSTOPO_ORIENT_NONE + && parent->symmetric_subtree + && parent->first_child + && loutput->factorize_enabled + && parent->arity > loutput->factorize_min[parent->first_child->type]) { + main_orient = LSTOPO_ORIENT_HORIZ; + } + + /* if there are memory children and using plain children layout, use horizontal by default */ + if (main_orient == LSTOPO_ORIENT_NONE + && parent->memory_arity + && !(loutput->children_order & LSTOPO_ORDER_MEMORY_ABOVE)) + main_orient = LSTOPO_ORIENT_HORIZ; + + /* recurse into children to prepare their sizes, + * and check whether all normal children are PUs. */ + normal_children_are_PUs = (parent->arity > 0); + for(i = 0, child = next_child(loutput, parent, LSTOPO_CHILD_KIND_ALL, NULL, &ncstate); + child; + i++, child = next_child(loutput, parent, LSTOPO_CHILD_KIND_ALL, child, &ncstate)) { + get_type_fun(child->type)(loutput, child, 0, 0, 0); + if (hwloc_obj_type_is_normal(child->type) && child->type != HWLOC_OBJ_PU) + normal_children_are_PUs = 0; + } + if (!i) + return; + + + /* no separator between PUs */ + if (normal_children_are_PUs) + normal_children_separator = 0; + + /* add separator between a cache parent and its children */ + if (hwloc_obj_type_is_cache(parent->type) || parent->type == HWLOC_OBJ_MEMCACHE) { + if (normal_children_are_PUs || parent->type == HWLOC_OBJ_MEMCACHE) + /* except between cache parent and PU children */ + separator_below_cache = 0; + /* update children placement */ + yrel += separator_below_cache; + } + + /* compute the size of the main children section */ + if (plud->children.kinds) + place__children(loutput, parent, plud->children.kinds, &main_orient, 0, normal_children_separator, &children_width, &children_height); + + /* compute the size of the right children section (I/O and Misc), if any */ + if (plud->right_children.kinds) { + place__children(loutput, parent, plud->right_children.kinds, &right_orient, 0, separator, &right_children_width, &right_children_height); + } + + /* compute the size of the below children section (I/O and Misc), if any */ + if (plud->below_children.kinds) { + place__children(loutput, parent, plud->below_children.kinds, &below_orient, 0, separator, &below_children_width, &below_children_height); + } + + /* compute the width of the MRB children sections, it may be need for the above children section below */ + mrb_children_width = children_width + right_children_width + (children_width && right_children_width ? separator : 0); + if (mrb_children_width < below_children_width) + mrb_children_width = below_children_width; + /* MRB height will be computed later, it's more difficult because of possible overlaps */ + + /* compute the size of the above children section (Memory), if any */ + if (plud->above_children.kinds) { + enum lstopo_orient_e morient = LSTOPO_ORIENT_HORIZ; + int need_box; + + assert(plud->above_children.kinds == LSTOPO_CHILD_KIND_MEMORY); + + /* we need a memory children box if parent isn't a memory object + * and if there are multiple objects in the box + */ + need_box = !hwloc_obj_type_is_memory(parent->type) + && (parent->memory_arity + parent->memory_first_child->memory_arity > 1); + + place__children(loutput, parent, plud->above_children.kinds, &morient, need_box ? border : 0, separator, &above_children_width, &above_children_height); + if (parent->type == HWLOC_OBJ_MEMCACHE) + above_children_height -= separator; + + if (need_box) { + /* if there are multiple memory children, add a box, as large as the parent */ + if (above_children_width < children_width) { + above_children_width = mrb_children_width; + } + plud->above_children.boxcolor = &loutput->palette->memories; + plud->above_children.box = 1; + + } else { + /* if there's a single memory child without wide memory box, enlarge that child */ + struct lstopo_obj_userdata *clud = parent->memory_first_child->userdata; + if (clud->width < children_width) { + clud->width = mrb_children_width; + above_children_width = mrb_children_width; + } + } + } + + /* place the main section, assuming there's no above yet */ + plud->children.width = children_width; + plud->children.height = children_height; + plud->children.xrel = xrel; + plud->children.yrel = yrel; + /* now place the above section and update main */ + if (plud->above_children.kinds) { + plud->above_children.width = above_children_width; + plud->above_children.height = above_children_height; + plud->above_children.xrel = xrel; + plud->above_children.yrel = yrel; + plud->children.yrel += above_children_height + separator; + } + /* place the right section */ + if (plud->right_children.kinds) { + plud->right_children.width = right_children_width; + plud->right_children.height = right_children_height; + plud->right_children.xrel = plud->children.xrel + children_width + (children_width ? separator : 0); + plud->right_children.yrel = plud->children.yrel; + } + /* place the below section */ + if (plud->below_children.kinds) { + plud->below_children.width = below_children_width; + plud->below_children.height = below_children_height; + plud->below_children.xrel = plud->children.xrel; + + if (plud->right_children.kinds + && below_children_width > children_width + && right_children_height > children_height) { + /* below section is larger than CPU section, and right section is higher than CPU section. + * right and below would overlap. + * move the below section below right instead of below main + */ + plud->below_children.yrel = plud->children.yrel + right_children_height + separator; + mrb_children_height = right_children_height + below_children_height + separator; + } else { + plud->below_children.yrel = plud->children.yrel + children_height + (children_height ? separator : 0); + mrb_children_height = children_height + below_children_height + (children_height ? separator : 0); + } + } else { + mrb_children_height = children_height > right_children_height ? children_height : right_children_height; + } + + /* adjust parent size */ + if (hwloc_obj_type_is_cache(parent->type) || parent->type == HWLOC_OBJ_MEMCACHE) { + /* cache children are below */ + if (mrb_children_width > totwidth) + totwidth = mrb_children_width; + if (mrb_children_height) + totheight += mrb_children_height + separator_below_cache; + if (plud->above_children.kinds) { + totheight += above_children_height + separator; + if (above_children_width > totwidth) + totwidth = above_children_width; + } + + } else if (parent->type == HWLOC_OBJ_BRIDGE) { + /* bridge children are on the right, within any space between bridge and children */ + if (children_width) + totwidth += children_width; + if (children_height > totheight) + totheight = children_height; + /* no right or below sections here */ + + } else { + /* normal objects have children inside their box, with space around them */ + if (mrb_children_width + 2*border > totwidth) + totwidth = mrb_children_width + 2*border; + if (mrb_children_height) + totheight += mrb_children_height + border; + if (plud->above_children.kinds) { + totheight += above_children_height + separator; + if (above_children_width + 2*border > totwidth) + totwidth = above_children_width + 2*border; + } + } + + /* save config for draw_children() later */ + plud->width = totwidth; + plud->height = totheight; +} + +/*********************** + * Drawing children + */ + +static void +draw__children(struct lstopo_output *loutput, hwloc_obj_t parent, + struct lstopo_children_position *children, + unsigned depth, + unsigned x, unsigned y) +{ + hwloc_obj_t child; + int ncstate; + + if (children->box) + loutput->methods->box(loutput, children->boxcolor, depth, x, children->width, y, children->height, parent, 1); + + for(child = next_child(loutput, parent, children->kinds, NULL, &ncstate); + child; + child = next_child(loutput, parent, children->kinds, child, &ncstate)) { + struct lstopo_obj_userdata *clud = child->userdata; + get_type_fun(child->type)(loutput, child, depth-1, x + clud->xrel, y + clud->yrel); + } +} + +static void +draw_children(struct lstopo_output *loutput, hwloc_obj_t parent, unsigned depth, + unsigned x, unsigned y) +{ + struct lstopo_obj_userdata *plud = parent->userdata; + + if (plud->children.kinds) + draw__children(loutput, parent, &plud->children, depth, x + plud->children.xrel, y + plud->children.yrel); + + if (plud->above_children.kinds) + draw__children(loutput, parent, &plud->above_children, depth, x + plud->above_children.xrel, y + plud->above_children.yrel); + + if (plud->right_children.kinds) + draw__children(loutput, parent, &plud->right_children, depth, x + plud->right_children.xrel, y + plud->right_children.yrel); + + if (plud->below_children.kinds) + draw__children(loutput, parent, &plud->below_children, depth, x + plud->below_children.xrel, y + plud->below_children.yrel); +} + +/******* + * Misc + */ + +static int +lstopo_obj_snprintf(struct lstopo_output *loutput, char *text, size_t textlen, hwloc_obj_t obj) +{ + enum lstopo_index_type_e index_type = loutput->index_type; + unsigned idx; + const char *indexprefix; + char typestr[32]; + char indexstr[32]= ""; + char index2str[32] = ""; + char attrstr[256]; + char totmemstr[64] = ""; + int attrlen; + + /* For Misc and Group, name replaces type+index+attrs */ + if (obj->name && (obj->type == HWLOC_OBJ_MISC || obj->type == HWLOC_OBJ_GROUP)) { + return snprintf(text, textlen, "%s", obj->name); + } + /* For OSDev, OSDev-type+name replaces type+index+attrs */ + if (obj->type == HWLOC_OBJ_OS_DEVICE) { + /* consider the name as an index and remove it if LSTOPO_INDEX_TYPE_NONE */ + if (index_type != LSTOPO_INDEX_TYPE_NONE) { + hwloc_obj_type_snprintf(typestr, sizeof(typestr), obj, 0); + return snprintf(text, textlen, "%s %s", typestr, obj->name); + } else { + return hwloc_obj_type_snprintf(text, textlen, obj, 0); + } + } + + /* subtype replaces the basic type name */ + if (obj->subtype) { + snprintf(typestr, sizeof(typestr), "%s", obj->subtype); + } else { + hwloc_obj_type_snprintf(typestr, sizeof(typestr), obj, 0); + } + + if (index_type == LSTOPO_INDEX_TYPE_DEFAULT) { + if (obj->type == HWLOC_OBJ_PU || obj->type == HWLOC_OBJ_NUMANODE) { + /* by default we show logical+physical for PU/NUMA */ + idx = obj->logical_index; + indexprefix = " L#"; + } else if (obj->type == HWLOC_OBJ_PACKAGE || obj->type == HWLOC_OBJ_DIE || obj->type == HWLOC_OBJ_CORE) { + /* logical only for package+core (so that we see easily how many packages/cores there are */ + idx = obj->logical_index; + indexprefix = " L#"; + } else { + /* nothing for others */ + idx = HWLOC_UNKNOWN_INDEX; + indexprefix = ""; + } + } else if (index_type == LSTOPO_INDEX_TYPE_LOGICAL) { + idx = obj->logical_index; + indexprefix = " L#"; + } else if (index_type == LSTOPO_INDEX_TYPE_PHYSICAL) { + idx = obj->os_index; + indexprefix = " P#"; + } else { + /* shutup the compiler */ + idx = 0; + indexprefix = ""; + } + + if (loutput->show_indexes[obj->type] + && index_type != LSTOPO_INDEX_TYPE_NONE + && idx != (unsigned)-1 && obj->depth != 0 + && obj->type != HWLOC_OBJ_PCI_DEVICE + && (obj->type != HWLOC_OBJ_BRIDGE || obj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_HOST)) + snprintf(indexstr, sizeof(indexstr), "%s%u", indexprefix, idx); + + if (index_type == LSTOPO_INDEX_TYPE_DEFAULT && obj->type == HWLOC_OBJ_NUMANODE && loutput->show_indexes[obj->type]) + /* NUMA have both P# and L# on the same line (PU is split on 2 lines) */ + snprintf(index2str, sizeof(index2str), " P#%u", obj->os_index); + + if (loutput->show_attrs_enabled && loutput->show_attrs[obj->type]) { + attrlen = hwloc_obj_attr_snprintf(attrstr, sizeof(attrstr), obj, " ", 0); + /* display the root total_memory (cannot be local_memory since root cannot be a NUMA node) */ + if (!obj->parent && obj->total_memory) + snprintf(totmemstr, sizeof(totmemstr), " (%lu%s total)", + (unsigned long) hwloc_memory_size_printf_value(obj->total_memory, 0), + hwloc_memory_size_printf_unit(obj->total_memory, 0)); + } else + attrlen = 0; + + if (attrlen > 0) + return snprintf(text, textlen, "%s%s%s (%s)%s", typestr, indexstr, index2str, attrstr, totmemstr); + else + return snprintf(text, textlen, "%s%s%s%s", typestr, indexstr, index2str, totmemstr); +} + +static void +lstopo__prepare_custom_styles(struct lstopo_output *loutput, hwloc_obj_t obj) +{ + struct lstopo_obj_userdata *lud = obj->userdata; + struct lstopo_style *s = &lud->style; + hwloc_obj_t child; + unsigned forcer, forceg, forceb; + const char *stylestr; + struct lstopo_color *lcolor; + + lud->style_set = 0; + + stylestr = hwloc_obj_get_info_by_name(obj, "lstopoStyle"); + if (stylestr) { + while (*stylestr != '\0') { + if (sscanf(stylestr, "%02x%02x%02x", &forcer, &forceg, &forceb) == 3 + || sscanf(stylestr, "Background=#%02x%02x%02x", &forcer, &forceg, &forceb) == 3) { + lcolor = find_or_declare_rgb_color(loutput, forcer, forceg, forceb); + if (lcolor) { + s->bg = lcolor; + lud->style_set |= LSTOPO_STYLE_BG; + if (!(lud->style_set & LSTOPO_STYLE_T)) { + s->t = (lcolor->r + lcolor->g + lcolor->b < 0xff) ? &loutput->palette->white : &loutput->palette->black; + lud->style_set |= LSTOPO_STYLE_T; + } + } + } else if (sscanf(stylestr, "Text=#%02x%02x%02x", &forcer, &forceg, &forceb) == 3) { + lcolor = find_or_declare_rgb_color(loutput, forcer, forceg, forceb); + if (lcolor) { + s->t = lcolor; + lud->style_set |= LSTOPO_STYLE_T; + } + } else if (sscanf(stylestr, "Text2=#%02x%02x%02x", &forcer, &forceg, &forceb) == 3) { + lcolor = find_or_declare_rgb_color(loutput, forcer, forceg, forceb); + if (lcolor) { + s->t2 = lcolor; + lud->style_set |= LSTOPO_STYLE_T2; + } + } + stylestr = strchr(stylestr, ';'); + if (!stylestr) + break; + stylestr++; + } + } + + for_each_child(child, obj) + lstopo__prepare_custom_styles(loutput, child); + for_each_memory_child(child, obj) + lstopo__prepare_custom_styles(loutput, child); + for_each_io_child(child, obj) + lstopo__prepare_custom_styles(loutput, child); + for_each_misc_child(child, obj) + lstopo__prepare_custom_styles(loutput, child); +} + +void +lstopo_prepare_custom_styles(struct lstopo_output *loutput) +{ + lstopo__prepare_custom_styles(loutput, hwloc_get_root_obj(loutput->topology)); +} + +static void +lstopo_set_object_color(struct lstopo_output *loutput, + hwloc_obj_t obj, + struct lstopo_style *s) +{ + struct lstopo_obj_userdata *lud = obj->userdata; + + /* defaults */ + s->bg = &loutput->palette->white; /* always overwritten below */ + s->t = &loutput->palette->black; + s->t2 = &loutput->palette->black; + + switch (obj->type) { + + case HWLOC_OBJ_MACHINE: + s->bg = &loutput->palette->machine; + break; + + case HWLOC_OBJ_GROUP: { + hwloc_obj_t parent; + s->bg = &loutput->palette->group; + parent = obj->parent; + while (parent) { + if (parent->type == HWLOC_OBJ_PACKAGE) { + s->bg = &loutput->palette->group_in_package; + break; + } + parent = parent->parent; + } + break; + } + + case HWLOC_OBJ_MISC: + if (loutput->show_process_color && obj->subtype && !strcmp(obj->subtype, "Process")) + s->bg = &loutput->palette->process; + else + s->bg = &loutput->palette->misc; + break; + + case HWLOC_OBJ_NUMANODE: + if (loutput->show_disallowed && lstopo_numa_disallowed(loutput, obj)) { + s->bg = &loutput->palette->disallowed; + } else if (loutput->show_binding && lstopo_numa_binding(loutput, obj)) { + s->bg = &loutput->palette->binding; + } else { + s->bg = &loutput->palette->numanode; + } + break; + + case HWLOC_OBJ_PACKAGE: + s->bg = &loutput->palette->package; + break; + + case HWLOC_OBJ_DIE: + s->bg = &loutput->palette->die; + break; + + case HWLOC_OBJ_CORE: + s->bg = &loutput->palette->core; + break; + + case HWLOC_OBJ_L1CACHE: + case HWLOC_OBJ_L2CACHE: + case HWLOC_OBJ_L3CACHE: + case HWLOC_OBJ_L4CACHE: + case HWLOC_OBJ_L5CACHE: + case HWLOC_OBJ_L1ICACHE: + case HWLOC_OBJ_L2ICACHE: + case HWLOC_OBJ_L3ICACHE: + case HWLOC_OBJ_MEMCACHE: + s->bg = &loutput->palette->cache; + break; + + case HWLOC_OBJ_PU: + if (loutput->show_disallowed && lstopo_pu_disallowed(loutput, obj)) { + s->bg = &loutput->palette->disallowed; + } else if (loutput->show_binding && lstopo_pu_binding(loutput, obj)) { + s->bg = &loutput->palette->binding; + } else { + s->bg = &loutput->palette->pu; + } + break; + + case HWLOC_OBJ_BRIDGE: + s->bg = &loutput->palette->bridge; + break; + + case HWLOC_OBJ_PCI_DEVICE: + s->bg = &loutput->palette->pcidev; + break; + + case HWLOC_OBJ_OS_DEVICE: + s->bg = &loutput->palette->osdev; + break; + + default: + assert(0); + } + + if (lud->style_set & LSTOPO_STYLE_BG) + s->bg = lud->style.bg; + if (lud->style_set & LSTOPO_STYLE_T) + s->t = lud->style.t; + if (lud->style_set & LSTOPO_STYLE_T2) + s->t2 = lud->style.t2; +} + +static void +prepare_text(struct lstopo_output *loutput, hwloc_obj_t obj) +{ + struct lstopo_obj_userdata *lud = obj->userdata; + unsigned fontsize = loutput->fontsize; + unsigned i; + int n; + + /* sane defaults */ + lud->ntext = 0; + lud->textwidth = 0; + + if (!loutput->show_text_enabled || !loutput->show_text[obj->type]) + return; + + /* main object identifier line */ + if (obj->type == HWLOC_OBJ_PCI_DEVICE && loutput->show_attrs_enabled && loutput->show_attrs[HWLOC_OBJ_PCI_DEVICE]) { + /* PCI text collapsing */ + char busid[32]; + char _text[64]; + lstopo_obj_snprintf(loutput, _text, sizeof(_text), obj); + lstopo_busid_snprintf(loutput, busid, sizeof(busid), obj, lud->pci_collapsed, loutput->need_pci_domain); + if (loutput->pci_collapse_enabled && lud->pci_collapsed > 1) { + n = snprintf(lud->text[0].text, sizeof(lud->text[0].text), "%d x { %s %s }", lud->pci_collapsed, _text, busid); + } else { + n = snprintf(lud->text[0].text, sizeof(lud->text[0].text), "%s %s", _text, busid); + } + } else { + /* normal object text */ + n = lstopo_obj_snprintf(loutput, lud->text[0].text, sizeof(lud->text[0].text), obj); + } + lud->ntext = 1; + + /* additional lines of text */ + + if (HWLOC_OBJ_PU == obj->type && loutput->index_type == LSTOPO_INDEX_TYPE_DEFAULT && loutput->show_indexes[obj->type]) { + /* PU P# is on second line */ + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), "P#%u", obj->os_index); + } + + if (loutput->show_attrs_enabled && loutput->show_attrs[obj->type]) { + if (HWLOC_OBJ_OS_DEVICE == obj->type) { + if (HWLOC_OBJ_OSDEV_COPROC == obj->attr->osdev.type && obj->subtype) { + /* Coprocessor */ + if (!strcmp(obj->subtype, "CUDA")) { + /* CUDA */ + const char *value, *value2, *value3; + value = hwloc_obj_get_info_by_name(obj, "CUDAGlobalMemorySize"); + if (value) { + unsigned long long mb = strtoull(value, NULL, 10) / 1024; + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + mb >= 10240 ? "%llu GB" : "%llu MB", + mb >= 10240 ? mb/1024 : mb); + } + value = hwloc_obj_get_info_by_name(obj, "CUDAL2CacheSize"); + if (value) { + unsigned long long kb = strtoull(value, NULL, 10); + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + kb >= 10240 ? "L2 (%llu MB)" : "L2 (%llu kB)", + kb >= 10240 ? kb/1024 : kb); + } + value = hwloc_obj_get_info_by_name(obj, "CUDAMultiProcessors"); + value2 = hwloc_obj_get_info_by_name(obj, "CUDACoresPerMP"); + value3 = hwloc_obj_get_info_by_name(obj, "CUDASharedMemorySizePerMP"); + if (value && value2 && value3) { + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + "%s MP x (%s cores + %s kB)", value, value2, value3); + } + + } else if (!strcmp(obj->subtype, "OpenCL")) { + /* OpenCL */ + const char *value; + value = hwloc_obj_get_info_by_name(obj, "OpenCLComputeUnits"); + if (value) { + unsigned long long cu = strtoull(value, NULL, 10); + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + "%llu compute units", cu); + } + value = hwloc_obj_get_info_by_name(obj, "OpenCLGlobalMemorySize"); + if (value) { + unsigned long long mb = strtoull(value, NULL, 10) / 1024; + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + mb >= 10240 ? "%llu GB" : "%llu MB", + mb >= 10240 ? mb/1024 : mb); + } + } else if (!strcmp(obj->subtype, "VectorEngine")) { + /* NEC Vector Engine */ + const char *value; + value = hwloc_obj_get_info_by_name(obj, "VectorEngineCores"); + if (value) { + unsigned long long cu = strtoull(value, NULL, 10); + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + "%llu cores", cu); + } + value = hwloc_obj_get_info_by_name(obj, "VectorEngineMemorySize"); + if (value) { + unsigned long long mb = strtoull(value, NULL, 10) / 1024; + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + mb >= 10240 ? "%llu GB" : "%llu MB", + mb >= 10240 ? mb/1024 : mb); + } + } else if (!strcmp(obj->subtype, "LevelZero")) { + /* LevelZero */ + const char *valueSl, *valueSS, *valueEU, *valueTh, *valueHBM, *valueMem; + valueHBM = hwloc_obj_get_info_by_name(obj, "LevelZeroHBMSize"); + if (valueHBM) { + unsigned long long mb = strtoull(valueHBM, NULL, 10) / 1024; + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + mb >= 10240 ? "%llu GB (HBM)" : "%llu MB (HBM)", + mb >= 10240 ? mb/1024 : mb); + } + valueMem = hwloc_obj_get_info_by_name(obj, "LevelZeroDDRSize"); + if (!valueMem) + valueMem = hwloc_obj_get_info_by_name(obj, "LevelZeroMemorySize"); + if (valueMem) { + unsigned long long mb = strtoull(valueMem, NULL, 10) / 1024; + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + mb >= 10240 ? "%llu GB HBM" : "%llu MB", + mb >= 10240 ? mb/1024 : mb); + } + valueSl = hwloc_obj_get_info_by_name(obj, "LevelZeroNumSlices"); + valueSS = hwloc_obj_get_info_by_name(obj, "LevelZeroNumSubslicesPerSlice"); + valueEU = hwloc_obj_get_info_by_name(obj, "LevelZeroNumEUsPerSubslice"); + valueTh = hwloc_obj_get_info_by_name(obj, "LevelZeroNumThreadsPerEU"); + if (valueSl && valueSS && valueEU && valueTh) { + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + "%s Slice%s x %s x %s x %s Threads", + valueSl, atoi(valueSl) > 1 ? "s" : "", valueSS, valueEU, valueTh); + } + } + + } else if (HWLOC_OBJ_OSDEV_BLOCK == obj->attr->osdev.type) { + /* Block */ + const char *value; + value = hwloc_obj_get_info_by_name(obj, "Size"); + if (value) { + unsigned long long mb = strtoull(value, NULL, 10) / 1024; + snprintf(lud->text[lud->ntext++].text, sizeof(lud->text[0].text), + mb >= 10485760 ? "%llu TB" : mb >= 10240 ? "%llu GB" : "%llu MB", + mb >= 10485760 ? mb/1048576 : mb >= 10240 ? mb/1024 : mb); + } + } + } + } + + lud->textwidth = 0; + for(i=0; intext; i++) { + unsigned textwidth; + if (i) /* already computed above for n=0 */ + n = (unsigned)strlen(lud->text[i].text); + textwidth = get_textwidth(loutput, lud->text[i].text, n, fontsize); + lud->text[i].width = textwidth; + lud->text[i].xoffset = 0; /* only used for PU in output_compute_pu_min_textwidth() */ + if (textwidth > lud->textwidth) + lud->textwidth = textwidth; + } +} + +static void +draw_text(struct lstopo_output *loutput, hwloc_obj_t obj, struct lstopo_color *lcolor, unsigned depth, unsigned x, unsigned y) +{ + struct draw_methods *methods = loutput->methods; + struct lstopo_obj_userdata *lud = obj->userdata; + unsigned fontsize = loutput->fontsize; + unsigned linespacing = loutput->linespacing; + unsigned i; + + if (!loutput->show_text_enabled || !loutput->show_text[obj->type]) + return; + + for(i=0; intext; i++) + methods->text(loutput, lcolor, fontsize, depth, x + lud->text[i].xoffset, y + i*(linespacing + fontsize), lud->text[i].text, obj, i); +} + +static void +pci_device_draw(struct lstopo_output *loutput, hwloc_obj_t level, unsigned depth, unsigned x, unsigned y) +{ + struct lstopo_obj_userdata *lud = level->userdata; + unsigned gridsize = loutput->gridsize; + unsigned fontsize = loutput->fontsize; + unsigned overlaidoffset = 0; + + if (loutput->pci_collapse_enabled && lud->pci_collapsed > 1) { + /* additional depths and height for overlaid boxes */ + depth -= 2; + if (lud->pci_collapsed > 2) { + overlaidoffset = gridsize; + } else { + overlaidoffset = gridsize/2; + } + if (loutput->backend_flags & LSTOPO_BACKEND_FLAG_NO_HALF_LINES) + overlaidoffset *= 2; + } + + if (loutput->drawing == LSTOPO_DRAWING_PREPARE) { + /* compute children size and position, our size, and save it */ + prepare_text(loutput, level); + lud->width = gridsize + overlaidoffset; + lud->height = gridsize + overlaidoffset; + if (lud->ntext > 0) { + lud->width += lud->textwidth + gridsize; + lud->height += fontsize + gridsize; + } + place_children(loutput, level, + gridsize, lud->height); + + } else { /* LSTOPO_DRAWING_DRAW */ + struct draw_methods *methods = loutput->methods; + struct lstopo_style style; + unsigned totwidth, totheight; + + /* restore our size that was computed during prepare */ + totwidth = lud->width; + totheight = lud->height; + + lstopo_set_object_color(loutput, level, &style); + + if (loutput->pci_collapse_enabled && lud->pci_collapsed > 1) { + methods->box(loutput, style.bg, depth+2, x + overlaidoffset, totwidth - overlaidoffset, y + overlaidoffset, totheight - overlaidoffset, level, 2); + if (lud->pci_collapsed > 2) + methods->box(loutput, style.bg, depth+1, x + overlaidoffset/2, totwidth - overlaidoffset, y + overlaidoffset/2, totheight - overlaidoffset, level, 1); + methods->box(loutput, style.bg, depth, x, totwidth - overlaidoffset, y, totheight - overlaidoffset, level, 0); + } else { + methods->box(loutput, style.bg, depth, x, totwidth, y, totheight, level, 0); + } + + draw_text(loutput, level, style.t, depth-1, x + gridsize, y + gridsize); + + /* Draw sublevels for real */ + draw_children(loutput, level, depth-1, x, y); + } +} + +static void +bridge_draw(struct lstopo_output *loutput, hwloc_obj_t level, unsigned depth, unsigned x, unsigned y) +{ + struct lstopo_obj_userdata *lud = level->userdata; + unsigned gridsize = loutput->gridsize; + unsigned fontsize = loutput->fontsize; + /* align all children even if only some of them have a linkspeed */ + unsigned speedwidth = (loutput->show_text_enabled && loutput->show_text[HWLOC_OBJ_BRIDGE]) ? fontsize + gridsize : 0; + + if (loutput->drawing == LSTOPO_DRAWING_PREPARE) { + /* compute children size and position, our size, and save it */ + lud->width = 2*gridsize + gridsize + speedwidth; + lud->height = BRIDGE_HEIGHT; + place_children(loutput, level, + 3*gridsize + speedwidth, 0); + + } else { /* LSTOPO_DRAWING_DRAW */ + struct draw_methods *methods = loutput->methods; + struct lstopo_style style; + + /* Square and left link */ + lstopo_set_object_color(loutput, level, &style); + methods->box(loutput, style.bg, depth, x, gridsize, y + BRIDGE_HEIGHT/2 - gridsize/2, gridsize, level, 0); + methods->line(loutput, depth, x + gridsize, y + BRIDGE_HEIGHT/2, x + 2*gridsize, y + BRIDGE_HEIGHT/2, level, 0); + + if (level->io_arity > 0) { + hwloc_obj_t child = NULL; + unsigned ymax = -1; + unsigned ymin = (unsigned) -1; + int ncstate; + int i = 0; + while ((child=next_child(loutput, level, LSTOPO_CHILD_KIND_ALL, child, &ncstate)) != NULL) { + struct lstopo_obj_userdata *clud = child->userdata; + unsigned ymid = y + clud->yrel + BRIDGE_HEIGHT/2; + /* Line to PCI device */ + methods->line(loutput, depth-1, x+2*gridsize, ymid, x+3*gridsize+speedwidth, ymid, level, i+2); + if (ymin == (unsigned) -1) + ymin = ymid; + ymax = ymid; + /* Negotiated link speed */ + if (loutput->show_text_enabled && loutput->show_text[HWLOC_OBJ_BRIDGE]) { + float speed = pci_link_speed(child); + if (loutput->show_attrs_enabled && loutput->show_attrs[HWLOC_OBJ_BRIDGE] && speed != 0.) { + char text[4]; + if (speed >= 10.) + snprintf(text, sizeof(text), "%.0f", child->attr->pcidev.linkspeed); + else + snprintf(text, sizeof(text), "%0.1f", child->attr->pcidev.linkspeed); + methods->text(loutput, style.t2, fontsize, depth-1, x + (5*gridsize/2), ymid + BRIDGE_HEIGHT/2, text, level, i+2); + } + } + i++; + } + methods->line(loutput, depth-1, x+2*gridsize, ymin, x+2*gridsize, ymax, level, 1); + + /* Draw sublevels for real */ + draw_children(loutput, level, depth-1, x, y); + } + } +} + +static void +factorized_draw(struct lstopo_output *loutput, hwloc_obj_t level, unsigned depth, unsigned x, unsigned y) +{ + struct lstopo_obj_userdata *lud = level->userdata; + unsigned gridsize = loutput->gridsize; + unsigned fontsize = loutput->fontsize; + unsigned linespacing = loutput->linespacing; + unsigned missingseparator; + + /* we need a separator even between PUs */ + if ((unsigned)level->depth == loutput->depth-1) + missingseparator = gridsize; + else + missingseparator = 0; + + if (loutput->drawing == LSTOPO_DRAWING_PREPARE) { + /* compute children size and position, our size, and save it */ + unsigned n, textwidth; + lud->width = gridsize*5; /* space, box, space, box, space */ + lud->height = gridsize*2 + linespacing + fontsize + gridsize; /* space, box, linespace, text, gridsize */ + sprintf(lud->text[0].text, "%ux total", level->parent->arity); + n = (unsigned)strlen(lud->text[0].text); + textwidth = get_textwidth(loutput, lud->text[0].text, n, fontsize); + lud->text[0].width = textwidth; + if (textwidth > lud->width) + lud->width = textwidth; + + lud->text[0].xoffset = 0; + lud->internal_xoffset = 0; + /* We want to center-align the 3 little boxes and the text. + * But they can get severely misplaced if the backend cannot tell us the textwidth precisely. + * Only left-align them by default. + */ + if (!(loutput->backend_flags & LSTOPO_BACKEND_FLAG_APPROXIMATIVE_TEXTWIDTH)) { + /* Backends can give the textwidth precisely, center-align them */ + if (lud->width > textwidth) { + lud->text[0].xoffset = (lud->width - textwidth)/2; + } else { + lud->internal_xoffset = (textwidth - lud->width)/2; + } + } + + lud->ntext = 1; + + lud->width += 2*missingseparator; + + } else { /* LSTOPO_DRAWING_DRAW */ + struct draw_methods *methods = loutput->methods; + struct lstopo_style boxstyle, textstyle; + unsigned boxoffset = lud->internal_xoffset; + unsigned textoffset = lud->text[0].xoffset; + + /* boxes use object style, but the text outside uses the parent style */ + lstopo_set_object_color(loutput, level, &boxstyle); + lstopo_set_object_color(loutput, level->parent, &textstyle); + methods->box(loutput, boxstyle.bg, depth, x + missingseparator + boxoffset, gridsize, y + gridsize, gridsize, level, 0); + methods->box(loutput, boxstyle.bg, depth, x + missingseparator + boxoffset + 2*gridsize, gridsize, y + gridsize, gridsize, level, 0); + methods->box(loutput, boxstyle.bg, depth, x + missingseparator + boxoffset + 4*gridsize, gridsize, y + gridsize, gridsize, level, 0); + methods->text(loutput, textstyle.t, fontsize, depth, x + missingseparator + textoffset, y + 2 * gridsize + linespacing, lud->text[0].text, level, 0); + } +} + +static void +cache_draw(struct lstopo_output *loutput, hwloc_obj_t level, unsigned depth, unsigned x, unsigned y) +{ + struct lstopo_obj_userdata *lud = level->userdata; + unsigned gridsize = loutput->gridsize; + unsigned fontsize = loutput->fontsize; + + if (loutput->factorize_enabled + && lud->factorized == 1 + && level->parent->arity > loutput->factorize_min[level->type]) { + factorized_draw(loutput, level, depth, x, y); + return; + } + + if (loutput->drawing == LSTOPO_DRAWING_PREPARE) { + /* compute children size and position, our size, and save it */ + prepare_text(loutput, level); + lud->width = gridsize; + lud->height = gridsize; + if (lud->ntext > 0) { + lud->width += lud->textwidth + gridsize; + lud->height += fontsize + gridsize; + } + place_children(loutput, level, + 0, lud->height /* the callee with add vertical space if needed */); + + } else { /* LSTOPO_DRAWING_DRAW */ + struct draw_methods *methods = loutput->methods; + struct lstopo_style style; + unsigned totwidth; + unsigned myoff = 0; + unsigned myheight; + + /* restore our size that was computed during prepare */ + totwidth = lud->width; + + /* totheight also contains children outside of this actual cache box, + * recompute our height without outside children (just like above) + */ + myheight = gridsize; + if (lud->ntext > 0) + myheight += fontsize + gridsize; + + if (lud->above_children.kinds) { + /* display above_children even above the cache itself */ + myoff = lud->above_children.height + gridsize; + lud->above_children.yrel = 0; + } + + lstopo_set_object_color(loutput, level, &style); + methods->box(loutput, style.bg, depth, x, totwidth, y + myoff, myheight, level, 0); + + draw_text(loutput, level, style.t, depth-1, x + gridsize, y + gridsize + myoff); + + /* Draw sublevels for real */ + draw_children(loutput, level, depth-1, x, y); + } +} + +static void +normal_draw(struct lstopo_output *loutput, hwloc_obj_t level, unsigned depth, unsigned x, unsigned y) +{ + struct lstopo_obj_userdata *lud = level->userdata; + unsigned gridsize = loutput->gridsize; + unsigned fontsize = loutput->fontsize; + unsigned linespacing = loutput->linespacing; + + if (loutput->factorize_enabled + && lud->factorized == 1 + && level->parent->arity > loutput->factorize_min[level->type]) { + factorized_draw(loutput, level, depth, x, y); + return; + } + + if (loutput->drawing == LSTOPO_DRAWING_PREPARE) { + /* compute children size and position, our size, and save it */ + if (level->type != HWLOC_OBJ_PU) /* PU already computed in output_compute_pu_min_textwidth() earlier */ + prepare_text(loutput, level); + lud->width = gridsize; + lud->height = gridsize; + if (lud->ntext > 0) { + lud->width += lud->textwidth + gridsize; + lud->height += fontsize + (fontsize + linespacing) * (lud->ntext - 1) + gridsize; + } + place_children(loutput, level, + gridsize, lud->height); + + } else { /* LSTOPO_DRAWING_DRAW */ + struct draw_methods *methods = loutput->methods; + struct lstopo_style style; + unsigned totwidth, totheight; + + /* restore our size that was computed during prepare */ + totwidth = lud->width; + totheight = lud->height; + + lstopo_set_object_color(loutput, level, &style); + methods->box(loutput, style.bg, depth, x, totwidth, y, totheight, level, 0); + draw_text(loutput, level, style.t, depth-1, x + gridsize, y + gridsize); + + /* Draw sublevels for real */ + draw_children(loutput, level, depth-1, x, y); + } +} + +static void +output_align_PU_textwidth(struct lstopo_output *loutput) +{ + hwloc_topology_t topology = loutput->topology; + unsigned textwidth_max = 0; + hwloc_obj_t pu; + unsigned i; + + /* compute the max PU textwidth */ + pu = NULL; + while ((pu = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_PU, pu)) != NULL) { + struct lstopo_obj_userdata *lud = pu->userdata; + prepare_text(loutput, pu); + if (lud->textwidth > textwidth_max) + textwidth_max = lud->textwidth; + } + + /* update text placement to match the max textwidth */ + pu = NULL; + while ((pu = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_PU, pu)) != NULL) { + struct lstopo_obj_userdata *lud = pu->userdata; + for(i=0; intext; i++) + if (lud->text[i].width < textwidth_max) { + lud->text[i].xoffset = (textwidth_max-lud->text[i].width)/2; + lud->text[i].width = textwidth_max; + } + lud->textwidth = textwidth_max; + } +} + +void +output_draw(struct lstopo_output *loutput) +{ + hwloc_topology_t topology = loutput->topology; + struct draw_methods *methods = loutput->methods; + unsigned gridsize = loutput->gridsize; + unsigned fontsize = loutput->fontsize; + unsigned linespacing = loutput->linespacing; + hwloc_obj_t root = hwloc_get_root_obj(topology); + struct lstopo_obj_userdata *rlud = root->userdata; + unsigned depth = 100; + unsigned totwidth, totheight, offset, i, j; + + if (loutput->drawing == LSTOPO_DRAWING_PREPARE) { + unsigned maxtextwidth = 0, textwidth; + unsigned ndl = 0; + char hostname[122] = ""; + unsigned long hostname_size = sizeof(hostname); + unsigned infocount = 0; + + /* prepare legend lines and compute the width */ + if (loutput->show_legend == LSTOPO_SHOW_LEGEND_ALL) { + time_t t; + const char *forcedhostname = NULL; + + /* build the default legend lines */ + forcedhostname = hwloc_obj_get_info_by_name(hwloc_get_root_obj(topology), "HostName"); + if (!forcedhostname && hwloc_topology_is_thissystem(topology)) { +#if defined(HWLOC_WIN_SYS) && !defined(__CYGWIN__) + GetComputerName(hostname, &hostname_size); +#else + gethostname(hostname, hostname_size); +#endif + } + if (forcedhostname || *hostname) { + snprintf(loutput->legend_default_lines[ndl], + sizeof(loutput->legend_default_lines[ndl]), + "Host: %s", + forcedhostname ? forcedhostname : hostname); + textwidth = get_textwidth(loutput, + loutput->legend_default_lines[ndl], + (unsigned) strlen(loutput->legend_default_lines[ndl]), + fontsize); + if (textwidth > maxtextwidth) + maxtextwidth = textwidth; + ndl++; + } + + /* Display whether we're showing physical or logical IDs */ + if (loutput->index_type != LSTOPO_INDEX_TYPE_DEFAULT) { + snprintf(loutput->legend_default_lines[ndl], + sizeof(loutput->legend_default_lines[ndl]), + "Indexes: %s", + (loutput->index_type == LSTOPO_INDEX_TYPE_LOGICAL ? "logical" : "physical")); + textwidth = get_textwidth(loutput, + loutput->legend_default_lines[ndl], + (unsigned) strlen(loutput->legend_default_lines[ndl]), + fontsize); + if (textwidth > maxtextwidth) + maxtextwidth = textwidth; + ndl++; + } + + /* Display timestamp */ + t = time(NULL); +#ifdef HAVE_STRFTIME + { + struct tm *tmp; + tmp = localtime(&t); + strftime(loutput->legend_default_lines[ndl], + sizeof(loutput->legend_default_lines[ndl]), + "Date: %c", + tmp); + } +#else /* HAVE_STRFTIME */ + { + char *date; + unsigned n; + date = ctime(&t); + n = (unsigned) strlen(date); + if (n && date[n-1] == '\n') { + date[n-1] = 0; + } + snprintf(loutput->legend_default_lines[ndl], + sizeof(loutput->legend_default_lines[ndl]), + "Date: %s", + date); + } +#endif /* HAVE_STRFTIME */ + textwidth = get_textwidth(loutput, + loutput->legend_default_lines[ndl], + (unsigned) strlen(loutput->legend_default_lines[ndl]), + fontsize); + if (textwidth > maxtextwidth) + maxtextwidth = textwidth; + ndl++; + } + + if (loutput->show_legend != LSTOPO_SHOW_LEGEND_NONE) { + /* look at custom legend lines in root info attr and --append-legend */ + for(i=0; iinfos_count; i++) { + if (!strcmp(root->infos[i].name, "lstopoLegend")) { + infocount++; + textwidth = get_textwidth(loutput, root->infos[i].value, (unsigned) strlen(root->infos[i].value), fontsize); + if (textwidth > maxtextwidth) + maxtextwidth = textwidth; + } + } + for(i=0; ilegend_append_nr; i++) { + textwidth = get_textwidth(loutput, loutput->legend_append[i], (unsigned) strlen(loutput->legend_append[i]), fontsize); + if (textwidth > maxtextwidth) + maxtextwidth = textwidth; + } + } + + /* save legend info for later */ + loutput->legend_maxtextwidth = maxtextwidth; + loutput->legend_default_lines_nr = ndl; + loutput->legend_info_lines_nr = infocount; + + /* compute root size, our size, and save it */ + + output_align_PU_textwidth(loutput); + + get_type_fun(root->type)(loutput, root, depth, 0, 0); + + /* loutput width is max(root, legend) */ + totwidth = rlud->width; + if (loutput->legend_maxtextwidth + 2*gridsize > totwidth) + totwidth = loutput->legend_maxtextwidth + 2*gridsize; + loutput->width = totwidth; + + /* loutput height is sum(root, legend) */ + totheight = rlud->height; + if (loutput->show_legend != LSTOPO_SHOW_LEGEND_NONE + && (ndl + infocount + loutput->legend_append_nr)) + totheight += gridsize + + (ndl + infocount + loutput->legend_append_nr - 1) * (linespacing + fontsize) + + fontsize + gridsize; + loutput->height = totheight; + + } else { /* LSTOPO_DRAWING_DRAW */ + /* restore our size that was computed during prepare */ + totwidth = rlud->width; + totheight = rlud->height; + + /* Draw root for real */ + get_type_fun(root->type)(loutput, root, depth, 0, 0); + + /* Draw legend */ + if (loutput->show_legend != LSTOPO_SHOW_LEGEND_NONE + && (loutput->legend_default_lines_nr + loutput->legend_info_lines_nr + loutput->legend_append_nr)) { + offset = rlud->height + gridsize; + methods->box(loutput, &loutput->palette->white, depth, + 0, + loutput->width, + totheight, + gridsize + + (loutput->legend_default_lines_nr + loutput->legend_info_lines_nr + loutput->legend_append_nr - 1) * (linespacing + fontsize) + + fontsize + gridsize, + NULL, 0); + for(i=0; ilegend_default_lines_nr; i++, offset += linespacing + fontsize) + methods->text(loutput, &loutput->palette->black, fontsize, depth, gridsize, offset, loutput->legend_default_lines[i], NULL, i); + for(i=0, j=0; iinfos_count; i++) { + if (!strcmp(root->infos[i].name, "lstopoLegend")) { + methods->text(loutput, &loutput->palette->black, fontsize, depth, gridsize, offset, root->infos[i].value, NULL, j+loutput->legend_default_lines_nr); + j++; + offset += linespacing + fontsize; + } + } + for(i=0; ilegend_append_nr; i++, offset += linespacing + fontsize) + methods->text(loutput, &loutput->palette->black, fontsize, depth, gridsize, offset, loutput->legend_append[i], NULL, i+loutput->legend_default_lines_nr+loutput->legend_info_lines_nr); + } + } +} + +/* + * given a type, return a pointer FUN to the function that draws it. + */ +static foo_draw +get_type_fun(hwloc_obj_type_t type) +{ + switch (type) { + case HWLOC_OBJ_MACHINE: + case HWLOC_OBJ_NUMANODE: + case HWLOC_OBJ_PACKAGE: + case HWLOC_OBJ_DIE: + case HWLOC_OBJ_CORE: + case HWLOC_OBJ_PU: + case HWLOC_OBJ_GROUP: + case HWLOC_OBJ_OS_DEVICE: + case HWLOC_OBJ_MISC: return normal_draw; + case HWLOC_OBJ_L1CACHE: return cache_draw; + case HWLOC_OBJ_L2CACHE: return cache_draw; + case HWLOC_OBJ_L3CACHE: return cache_draw; + case HWLOC_OBJ_L4CACHE: return cache_draw; + case HWLOC_OBJ_L5CACHE: return cache_draw; + case HWLOC_OBJ_L1ICACHE: return cache_draw; + case HWLOC_OBJ_L2ICACHE: return cache_draw; + case HWLOC_OBJ_L3ICACHE: return cache_draw; + case HWLOC_OBJ_MEMCACHE: return cache_draw; + case HWLOC_OBJ_PCI_DEVICE: return pci_device_draw; + case HWLOC_OBJ_BRIDGE: return bridge_draw; + default: + case HWLOC_OBJ_TYPE_MAX: assert(0); + } + /* for dumb compilers */ + return normal_draw; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-fig.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-fig.c new file mode 100644 index 0000000000..7d20d8537d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-fig.c @@ -0,0 +1,175 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2010 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include +#include +#include + +#include "lstopo.h" + +/* .fig back-end. */ + +#define FIG_FACTOR 20 + +static int fig_color_index = 32; + +static int +fig_declare_color(struct lstopo_output *loutput, struct lstopo_color *lcolor) +{ + FILE *file = loutput->file; + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + + if (r == 0xff && g == 0xff && b == 0xff) { + lcolor->private.fig.color = 7; + return 0; + } else if (!r && !g && !b) { + lcolor->private.fig.color = 0; + return 0; + } else { + lcolor->private.fig.color = fig_color_index++; + } + + fprintf(file, "0 %d #%02x%02x%02x\n", lcolor->private.fig.color, (unsigned) r, (unsigned) g, (unsigned) b); + return 0; +} + +static void +fig_box(struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth, unsigned x, unsigned width, unsigned y, unsigned height, hwloc_obj_t obj __hwloc_attribute_unused, unsigned box_id __hwloc_attribute_unused) +{ + FILE *file = loutput->file; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + unsigned linestyle = 0; /* solid */ + unsigned dashspace = 0; /* no dash */ + unsigned thickness = loutput->thickness; + + if (!width || !height) + return; + + if (cpukind_style) { + linestyle = 1; /* dash */ + dashspace = 1U << cpukind_style; + thickness *= (1 + cpukind_style); + } + + x *= FIG_FACTOR; + y *= FIG_FACTOR; + width *= FIG_FACTOR; + height *= FIG_FACTOR; + fprintf(file, "2 2 %u %u 0 %d %u -1 20 %u.0 0 0 -1 0 0 5\n\t", + linestyle, thickness, lcolor->private.fig.color, depth, dashspace); + fprintf(file, " %u %u", x, y); + fprintf(file, " %u %u", x + width, y); + fprintf(file, " %u %u", x + width, y + height); + fprintf(file, " %u %u", x, y + height); + fprintf(file, " %u %u", x, y); + fprintf(file, "\n"); +} + +static void +fig_line(struct lstopo_output *loutput, unsigned depth, unsigned x1, unsigned y1, unsigned x2, unsigned y2, hwloc_obj_t obj __hwloc_attribute_unused, unsigned line_id __hwloc_attribute_unused) +{ + FILE *file = loutput->file; + + x1 *= FIG_FACTOR; + y1 *= FIG_FACTOR; + x2 *= FIG_FACTOR; + y2 *= FIG_FACTOR; + fprintf(file, "2 1 0 %u 0 0 %u -1 -1 0.0 0 0 -1 0 0 2\n\t", loutput->thickness, depth); + fprintf(file, " %u %u", x1, y1); + fprintf(file, " %u %u", x2, y2); + fprintf(file, "\n"); +} + +#define FIG_FONTSIZE_SCALE(size) (((size) * 11) / 10) +/* assume character width is half their height on average */ +#define FIG_TEXT_WIDTH(length, fontsize) (((length) * (fontsize))/2) + +static void +fig_text(struct lstopo_output *loutput, const struct lstopo_color *lcolor, int size, unsigned depth, unsigned x, unsigned y, const char *text, hwloc_obj_t obj __hwloc_attribute_unused, unsigned text_id __hwloc_attribute_unused) +{ + FILE *file = loutput->file; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + unsigned fontflags = 0; /* normal */ + int len = (int)strlen(text); + int color; + + if (cpukind_style % 2) + fontflags = 2; /* bold for odd styles */ + + color = lcolor->private.fig.color; + x *= FIG_FACTOR; + y *= FIG_FACTOR; + /* move the origin of the text away from the box corner */ + x += (size * FIG_FACTOR * 2) / 10; + y += (size * FIG_FACTOR * 4) / 10; + + size = FIG_FONTSIZE_SCALE(size); + fprintf(file, "4 0 %d %u -1 %u %d 0.0 4 %d %d %u %u %s\\001\n", + color, depth, fontflags, size, size * FIG_FACTOR, FIG_TEXT_WIDTH(len, size) * FIG_FACTOR, x, y + size * 10, text); +} + +static void +fig_textsize(struct lstopo_output *loutput __hwloc_attribute_unused, const char *text __hwloc_attribute_unused, unsigned textlength, unsigned fontsize, unsigned *width) +{ + fontsize = FIG_FONTSIZE_SCALE(fontsize); + *width = FIG_TEXT_WIDTH(textlength, fontsize); +} + +static struct draw_methods fig_draw_methods = { + fig_declare_color, + NULL, + fig_box, + fig_line, + fig_text, + fig_textsize, +}; + +int +output_fig (struct lstopo_output *loutput, const char *filename) +{ + FILE *output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + + loutput->file = output; + loutput->methods = &fig_draw_methods; + loutput->backend_flags |= LSTOPO_BACKEND_FLAG_APPROXIMATIVE_TEXTWIDTH; + + /* recurse once for preparing sizes and positions */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + output_draw(loutput); + loutput->drawing = LSTOPO_DRAWING_DRAW; + + fprintf(output, "#FIG 3.2 Produced by hwloc's lstopo\n"); + fprintf(output, "Landscape\n"); + fprintf(output, "Center\n"); + fprintf(output, "Inches\n"); + fprintf(output, "letter\n"); + fprintf(output, "100.00\n"); /* magnification */ + fprintf(output, "Single\n"); /* single page */ + fprintf(output, "-2\n"); /* no transparent color */ + fprintf(output, "1200 2\n"); /* 1200 ppi resolution, upper left origin */ + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + output_draw(loutput); + + if (output != stdout) + fclose(output); + + destroy_colors(loutput); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-no-graphics.1in b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-no-graphics.1in new file mode 100644 index 0000000000..077c187316 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-no-graphics.1in @@ -0,0 +1,857 @@ +.\" -*- nroff -*- +.\" Copyright © 2009-2022 Inria. All rights reserved. +.\" Copyright © 2009-2010 Université of Bordeaux +.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. +.\" Copyright © 2020 Hewlett Packard Enterprise. All rights reserved. +.\" See COPYING in top-level directory. +.TH LSTOPO "1" "%HWLOC_DATE%" "%PACKAGE_VERSION%" "%PACKAGE_NAME%" +.SH NAME +lstopo, lstopo-no-graphics, hwloc-ls \- Show the topology of the system +. +.\" ************************** +.\" Synopsis Section +.\" ************************** +.SH SYNOPSIS +. +.B lstopo +[ \fIoptions \fR]... [ \fIfilename \fR] +. +.PP +.B lstopo-no-graphics +[ \fIoptions \fR]... [ \fIfilename \fR] +. +.PP +.B hwloc-ls +[ \fIoptions \fR]... [ \fIfilename \fR] +. +.PP +Note that hwloc(7) provides a detailed explanation of the hwloc system; it +should be read before reading this man page +. +.\" ************************** +.\" Options Section +.\" ************************** +.SH OPTIONS +. +.TP +\fB\-\-of\fR , \fB\-\-output\-format\fR +Enforce the output in the given format. +See the OUTPUT FORMATS section below. +.TP +\fB\-i\fR , \fB\-\-input\fR +Read topology from XML file (instead of discovering the +topology on the local machine). If is "\-", the standard input +is used. XML support must have been compiled in to hwloc for this +option to be usable. +.TP +\fB\-i\fR , \fB\-\-input\fR +Read topology from instead of discovering the topology +of the local machine. +On Linux, the directory may contain the topology files +gathered from another machine topology with hwloc-gather-topology. +On x86, the directory may contain a cpuid dump gathered +with hwloc-gather-cpuid. +.TP +\fB\-i\fR , \fB\-\-input\fR +Simulate a fake hierarchy (instead of discovering the topology on the +local machine). If is "node:2 pu:3", the topology will +contain two NUMA nodes with 3 processing units in each of them. +The string must end with a number of PUs. +.TP +\fB\-\-if\fR , \fB\-\-input\-format\fR +Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR, +\fBcpuid\fR and \fBsynthetic\fR. +.TP +\fB\-\-export\-xml\-flags\fR +Enforce flags when exporting to the XML format. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_topology_export_xml()\fR. +Those names may be substrings of actual flag names as long as a single one matches. +A value of \fB1\fR (or \fBv1\fR) reverts to the format of hwloc v1.x. +The default is \fB0\fR (or \fBnone\fR). +.TP +\fB\-\-export\-synthetic\-flags\fR +Enforce flags when exporting to the synthetic format. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_topology_export_synthetic()\fR. +Those names may be substrings of actual flag names as long as a single one matches. +A value of \fB2\fR (or \fBno_attr\fR) reverts to the format of hwloc v1.9. +A value of \fB3\fR (or \fBno_ext,no_attr\fR) reverts to the original minimalistic format (before v1.9). +The default is \fB0\fR (or \fBnone\fR). +.TP +\fB\-v\fR \fB\-\-verbose\fR +Include additional detail. +The hwloc-info tool may be used to display even more information +about specific objects. +.TP +\fB\-s\fR \fB\-\-silent\fR +Reduce the amount of details to show. +.TP +\fB\-\-distances\fR +Only display distance matrices. +.TP +\fB\-\-distances-transform\fR +Try applying a transformation to distances structures before displaying them. +See hwloc_distances_transform() for details. +More transformations may be applied using hwloc-annotate(1) +(and it may save their output to XML). +.TP +\fB\-\-memattrs\fR +Only display memory attributes. +All of them are displayed (while the default textual output selects +memory attribute details depending on the verbosity level). +.TP +\fB\-\-cpukinds\fR +Only display CPU kinds. +CPU kinds are displayed in order, starting from the most energy efficient +ones up to the rather higher performance and power hungry ones. +.TP +\fB\-\-windows\-processor\-groups\fR +On Windows, only show information about processor groups. +All of them are displayed, while the default verbose output +only shows them if there are more than one. +.TP +\fB\-f\fR \fB\-\-force\fR +If the destination file already exists, overwrite it. +.TP +\fB\-l\fR \fB\-\-logical\fR +Display hwloc logical indexes of all objects, with prefix "L#". +. +By default, both logical and physical/OS indexes are displayed for PUs and NUMA nodes, +logical only for cores, dies and packages, and no index for other types. +.TP +\fB\-p\fR \fB\-\-physical\fR +Display OS/physical indexes of all objects, with prefix "P#". +. +By default, both logical and physical/OS indexes are displayed for PUs and NUMA nodes, +logical only for cores, dies and packages, and no index for other types. +.TP +\fB\-c\fR \fB\-\-cpuset\fR +Display the cpuset of each object. +.TP +\fB\-C\fR \fB\-\-cpuset\-only\fR +Only display the cpuset of each object; do not display anything else +about the object. +.TP +\fB\-\-taskset\fR +Show CPU set strings in the format recognized by the taskset command-line +program instead of hwloc-specific CPU set string format. +This option should be combined with \fB\-\-cpuset\fR or \fB\-\-cpuset\-only\fR, +otherwise it will imply \fB\-\-cpuset\fR. +.TP +\fB\-\-only\fR +Only show objects of the given type in the textual output. +.TP +\fB\-\-filter\fR :, \fB\-\-filter\fR +Filter objects of type , or of any type if is "all". +"io", "cache" and "icache" are also supported. + + specifies the filtering behavior. +If "none" or not specified, all objects of the given type are removed. +If "all", all objects are kept as usual. +If "structure", objects are kept when they bring structure to the topology. +If "important" (only applicable to I/O), only important objects are kept. +See hwloc_topology_set_type_filter() for more details. + +hwloc supports filtering any type except PUs and NUMA nodes. +lstopo also offers PU and NUMA node filtering by hiding them in the graphical and textual outputs, +but any object included in them (for instance Misc) will be hidden as well. +Note that PUs and NUMA nodes may not be ignored in the XML output. +Note also that the top-level object type cannot be ignored (usually Machine or System). +.TP +\fB\-\-ignore\fR +This is the old way to specify \fB-\-filter :none\fR. +.TP +\fB\-\-no\-smt\fR +Ignore PUs. +This is identical to \fB-\-filter PU:none\fR. +.TP +\fB\-\-no\-caches\fR +Do not show caches. +This is identical to \fB-\-filter cache:none\fR. +.TP +\fB\-\-no\-useless\-caches\fR +This is identical to \fB-\-filter cache:structure\fR. +.TP +\fB\-\-no\-icaches\fR +This is identical to \fB-\-filter icache:none\fR. +.TP +\fB\-\-disallowed\fR +Include objects disallowed by administrative limitations (e.g Cgroups on Linux). +Offline PUs and NUMA nodes are still ignored. +.TP +\fB\-\-allow\fR +Include objects disallowed by administrative limitations (implies \fB\-\-disallowed\fR) +and also change the set of allowed ones. + +If \fBlocal\fR is given, only objects available to the current process are allowed +(default behavior when loading from the native operating system backend). +It may be useful if the topology was created by another process (with different +administrative restrictions such as Linux Cgroups) and loaded here loaded from XML +or synthetic. +This case implies \fB\-\-thissystem\fR. + +If \fBall\fR, all objects are allowed. + +If a bitmap is given as a hexadecimal string, it is used as the set of allowed PUs. + +If a bitmap is given after prefix \fBnodeset=\fR, it is the set of allowed NUMA nodes. +.TP +\fB\-\-flags\fR +Enforce topology flags. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_topology_set_flags()\fR. +Those names may be substrings of actual flag names as long as a single one matches, +for instance \fBdisallowed,thissystem_allowed\fR. +The default is \fB8\fR (or \fBimport\fR). +.TP +\fB\-\-merge\fR +Do not show levels that do not have a hierarchical impact. +This sets HWLOC_TYPE_FILTER_KEEP_STRUCTURE for all object types. +This is identical to \fB\-\-filter all:structure\fR. +.TP +\fB\-\-no\-factorize\fR \fB\-\-no\-factorize\fR= +Never factorize identical objects in the graphical output. + +If an object type is given, only factorizing of these objects is disabled. +This only applies to normal CPU-side objects, it is independent from PCI collapsing. +.TP +\fB\-\-factorize\fR \fB\-\-factorize\fR=[,][,[,] +Factorize identical children in the graphical output (enabled by default). + +If is specified (4 by default), factorizing only occurs when there are strictly +more than N identical children. +If and are specified, they set the numbers of first and last children to keep +after factorizing. + +If an object type is given, only factorizing of these objects is configured. +This only applies to normal CPU-side object, it is independent from PCI collapsing. +.TP +\fB\-\-no\-collapse\fR +Do not collapse identical PCI devices. +By default, identical sibling PCI devices (such as many virtual functions +inside a single physical device) are collapsed. +.TP +\fB\-\-no\-cpukinds\fR +Do not show different kinds of CPUs in the graphical output. +By default, when supported, different types of lines, thickness +and bold font may be used to display PU boxes of different kinds. +.TP +\fB\-\-restrict\fR +Restrict the topology to the given cpuset. +.TP +\fB\-\-restrict\fR nodeset= +Restrict the topology to the given nodeset, unless --restrict-flags specifies something different. +.TP +\fB\-\-restrict\fR binding +Restrict the topology to the current process binding. +This option requires the use of the actual current machine topology +(or any other topology with \fB\-\-thissystem\fR or with +HWLOC_THISSYSTEM set to 1 in the environment). +.TP +\fB\-\-restrict\-flags\fR +Enforce flags when restricting the topology. +Flags may be given as numeric values or as a comma-separated list of flag names +that are passed to \fIhwloc_topology_restrict()\fR. +Those names may be substrings of actual flag names as long as a single one matches, +for instance \fBbynodeset,memless\fR. +The default is \fB0\fR (or \fBnone\fR). +.TP +\fB\-\-no\-io\fB +Do not show any I/O device or bridge. +This is identical to \fB\-\-filter io:none\fR. +By default, common devices (GPUs, NICs, block devices, ...) and +interesting bridges/switches are shown. +.TP +\fB\-\-no\-bridges\fB +Do not show any I/O bridge except hostbridges. +This is identical to \fB\-\-filter bridge:none\fR. +By default, common devices (GPUs, NICs, block devices, ...) and +interesting bridges/switches are shown. +.TP +\fB\-\-whole\-io\fB +Show all I/O devices and bridges. +This is identical to \fB\-\-filter io:all\fR. +By default, only common devices (GPUs, NICs, block devices, ...) and +interesting bridges/switches are shown. +.TP +\fB\-\-thissystem\fR +Assume that the selected backend provides the topology for the +system on which we are running. +This is useful when loading a custom topology such as an XML file +and using \fB\-\-restrict binding\fR or \fB\-\-allow all\fR. +.TP +\fB\-\-pid\fR +Detect topology as seen by process , i.e. as if process did the +discovery itself. +Note that this can for instance change the set of allowed processors. +Also show this process current CPU and Memory binding by marking the corresponding +PUs and NUMA nodes (in Green in the graphical output, see the COLORS section below, +or by appending \fI(binding)\fR to the verbose text output). +If 0 is given as pid, the current binding for the lstopo process will be shown. +.TP +\fB\-\-ps\fR \fB\-\-top\fR +Show existing processes as misc objects in the output. To avoid uselessly +cluttering the output, only processes that are restricted to some part of the +machine are shown. On Linux, kernel threads are not shown. +If many processes appear, the output may become hard to read anyway, +making the hwloc-ps program more practical. +.TP +\fB\-\-children\-order\fR +Change the order of the different kinds of children with respect to +their parent in the graphical output. +\fI\fR may be a comma-separated list of keywords among: + +\fImemory:above\fR displays memory children above other children +(and above the parent if it is a cache). +PUs are therefore below their local NUMA nodes, like hwloc 1.x did. + +\fIio:right\fR and \fImisc:right\fR place I/O or Misc children +on the right of CPU children. + +\fIio:below\fR and \fImisc:below\fR place I/O or Misc children +below CPU children. + +\fIplain\fR places everything not specified together with +normal CPU children. + +If only \fIplain\fR is specified, lstopo displays the topology +in a basic manner that strictly matches the actual tree: +Memory, I/O and Misc children are listed below their parent just like any other child. +PUs are therefore on the side of their local NUMA nodes, +below a common ancestor. +This output may result in strange layouts since the size of Memory, +CPU and I/O children may be very different, causing the placement +algorithm to poorly arrange them in rows. + +The default order is \fImemory:above,io:right,misc:right\fR which means +Memory children are above CPU children while I/O and Misc are together +on the right. + +Up to hwloc 2.5, the default was rather to \fImemory:above,plain\fR. + +Additionally, \fIio:right\fR, \fIio:below\fR, \fImisc:right\fR +and \fImisc:below\fR may be suffixed with +\fI:horiz\fR, \fI:vert\fR or \fI:rect\fR to force the horizontal, +vertical or rectangular layout of children inside these sections. + +See also the GRAPHICAL OUTPUT and LAYOUT sections below. +.TP +\fB\-\-fontsize\fR +Set the size of text font in the graphical output. + +The default is 10. + +Boxes are scaled according to the text size. +The \fILSTOPO_TEXT_XSCALE\fR environment variable may be used +to further scale the width of boxes (its default value is 1.0). + +The \fB\-\-fontsize\fR option is ignored in the ASCII backend. +.TP +\fB\-\-gridsize\fR +Set the margin between elements in the graphical output. + +The default is 7. It was 10 prior to hwloc 2.1. + +This option is ignored in the ASCII backend. +.TP +\fB\-\-linespacing\fR +Set the spacing between lines of text in the graphical output. + +The default is 4. + +The option was included in \fB\-\-gridsize\fR prior to hwloc 2.1 (and its default was 10). + +This option is ignored in the ASCII backend. +.TP +\fB\-\-thickness\fR +Set the thickness of lines and boxes in the graphical output. + +The default is 1. + +This option is ignored in the ASCII backend. +.TP +\fB\-\-horiz\fR, \fB\-\-horiz\fR= +Force a horizontal graphical layout instead of nearly 4/3 ratio in the graphical output. +If a comma-separated list of object types is given, the layout only +applies to the corresponding \fIcontainer\fR objects. +Ignored for bridges since their children are always vertically aligned. +.TP +\fB\-\-vert\fR, \fB\-\-vert\fR= +Force a vertical graphical layout instead of nearly 4/3 ratio in the graphical output. +If a comma-separated list of object types is given, the layout only +applies to the corresponding \fIcontainer\fR objects. +.TP +\fB\-\-rect\fR, \fB\-\-rect\fR= +Force a rectangular graphical layout with nearly 4/3 ratio in the graphical output. +If a comma-separated list of object types is given, the layout only +applies to the corresponding \fIcontainer\fR objects. +Ignored for bridges since their children are always vertically aligned. +.TP +\fB\-\-no\-text\fR, \fB\-\-no\-text\fR= +Do not display any text in boxes in the graphical output. +If a comma-separated list of object types is given, text is disabled for the corresponding objects. +This is mostly useful for removing text from Group objects. +.TP +\fB\-\-text\fR, \fB\-\-text\fR= +Display text in boxes in the graphical output (default). +If a comma-separated list of object types is given, text is reenabled for the corresponding objects +(if it was previously disabled with \fB\-\-no\-text\fR). +.TP +\fB\-\-no\-index\fR, \fB\-\-no\-index\fR= +Do not show object indexes in the graphical output. +If a comma-separated list of object types is given, indexes are disabled for the corresponding objects. +.TP +\fB\-\-index\fR, \fB\-\-index=\fR +Show object indexes in the graphical output (default). +If a comma-separated list of object types is given, indexes are reenabled for the corresponding objects +(if they were previously disabled with \fB\-\-no\-index\fR). +.TP +\fB\-\-no\-attrs\fR, \fB\-\-no\-attrs\fR= +Do not show object attributes (such as memory size, cache size, PCI bus ID, PCI link speed, etc.) +in the graphical output. +If a comma-separated list of object types is given, attributes are disabled for the corresponding objects. +.TP +\fB\-\-attrs\fR, \fB\-\-attrs=\fR +Show object attributes (such as memory size, cache size, PCI bus ID, PCI link speed, etc.) +in the graphical output (default). +If a comma-separated list of object types is given, attributes are reenabled for the corresponding objects +(if they were previously disabled with \fB\-\-no\-attrs\fR). +.TP +\fB\-\-no\-legend\fR +Remove all text legend lines at the bottom of the graphical output. +.TP +\fB\-\-no\-default\-legend\fR +Remove default text legend lines at the bottom of the graphical output. +User-added legend lines with \fB\-\-append\-legend\fB or the "lstopoLegend" info +are still displayed if any. +.TP +\fB\-\-append\-legend\fR +Append the line of text to the bottom of the legend in the graphical output. +If adding multiple lines, each line should be given separately by +passing this option multiple times. +Additional legend lines may also be specified inside the topology using the +"lstopoLegend" info attributes on the topology root object. +.TP +\fB\-\-grey\fR, \fB\-\-greyscale\fR +Use greyscale instead of colors in the graphical output. +.TP +\fB\-\-palette\fR +Change the color palette. +Passing \fIgrey\fR or \fIgreyscale\fR is identical to passing \fB\-\-grey\fR or \fB\-\-greyscale\fR. +Passing \fIwhite\fR or \fInone\fR uses white instead of colors for all box backgrounds. +Passing \fIdefault\fR or \fIcolors\fR reverts back to the default color palette. +.TP +\fB\-\-palette\fR type=#rrggbb +Replace the color of the given box type with the given 3x8bit hexadecimal RGB combination (e.g. \fI#ff0000\fR is red). +Existing types are \fImachine\fR, \fIgroup\fR, \fIpackage\fR, \fIgroup_in_package\fR, \fIdie\fR, \fIcore\fR, \fIpu\fR, \fInumanode\fR, \fImemories\fR (box containing multiple memory children), \fIcache\fR, \fIpcidev\fR, \fIosdev\fR, \fIbridge\fR, and \fImisc\fR. + +See also CUSTOM COLOR below for customizing individual objects. +.TP +\fB\-\-binding\-color\fR +Do not colorize PUs and NUMA nodes according to the binding in the graphical output. +Or change the color to the given 3x8bit hexadecimal RGB combination (e.g. \fI#ff0000\fR is red). +.TP +\fB\-\-disallowed\-color\fR +Do not colorize disallowed PUs and NUMA nodes in the graphical output. +Or change the color to the given 3x8bit hexadecimal RGB combination (e.g. \fI#00ff00\fR is green). +.TP +\fB\-\-top\-color\fR +Do not colorize task objects in the graphical output when \-\-top is given. +Or change the color to the given 3x8bit hexadecimal RGB combination (e.g. \fI#0000ff\fR is blue). +.TP +\fB\-\-version\fR +Report version and exit. +.TP +\fB\-h\fR \fB\-\-help\fR +Display help message and exit. +. +.\" --shmem-output-addr is undocumented on purpose +. +.\" ************************** +.\" Description Section +.\" ************************** +.SH DESCRIPTION +. +lstopo and lstopo-no-graphics are capable of displaying a topological map of +the system in a variety of different output formats. The only difference +between lstopo and lstopo-no-graphics is that graphical outputs are only +supported by lstopo, to reduce dependencies on external libraries. +hwloc-ls is identical to lstopo-no-graphics. +. +.PP +The filename specified directly implies the output format that will be +used; see the OUTPUT FORMATS section, below. Output formats that +support color will indicate specific characteristics about individual +CPUs by their color; see the COLORS section, below. +. +.\" ************************** +.\" Output Formats Section +.\" ************************** +.SH OUTPUT FORMATS +. +.PP +By default, if no output filename is specific, the output is sent +to a graphical window if possible in the current environment +(DISPLAY environment variable set on Unix, etc.). +Otherwise, a text summary is displayed in the console. +. +.PP +The filename on the command line usually determines the format of the output. +There are a few filenames that indicate specific output formats and +devices (e.g., a filename of "-" will output a text summary to +stdout), but most filenames indicate the desired output format by +their suffix (e.g., "topo.png" will output a PNG-format file). +.PP +The format of the output may also be changed with "\-\-of". +For instance, "\-\-of pdf" will generate a PDF-format file on the standard +output, while "\-\-of fig toto" will output a Xfig-format file named "toto". +. +.PP +The list of currently supported formats is given below. Any of them may +be used with "\-\-of" or as a filename suffix. +.TP +.B default +Send the output to a window or to the console depending on the environment. +. +.TP +.B console +Send a text summary to stdout. +Binding or unallowed processors are only annotated in this mode +if verbose; see the COLORS section, below. +. +.TP +.B ascii +Output an ASCII art representation of the map +(formerly called \fBtxt\fR). +If outputting to stdout and if colors are supported on the terminal, +the output will be colorized. +. +.TP +\fBtikz\fR or \fBtex\fR +Output a LaTeX tikzpicture representation of the map that can be +compiled with a LaTeX compiler. +. +.TP +.B fig +Output a representation of the map that can be loaded in Xfig. +. +.TP +.B svg +Output a SVG representation of the map, +using Cairo (by default, if supported) +or a native SVG backend (fallback, always supported). +See \fBcairosvg\fR and \fBnativesvg\fR below. +. +.TP +\fBcairosvg\fR or \fBsvg(cairo)\fR +If lstopo was compiled with the proper support, +output a SVG representation of the map using Cairo. +. +.TP +\fBnativesvg\fR or \fBsvg(native)\fR +Output a SVG representation of the map using the native SVG backend. +It may be less pretty than the Cairo output, but it is always supported, +and SVG objects have attributes for identifying and manipulating them. +See dynamic_SVG_example.html for an example. +. +.TP +.B pdf +If lstopo was compiled with the proper +support, lstopo outputs a PDF representation of the map. +. +.TP +.B ps +If lstopo was compiled with the proper +support, lstopo outputs a Postscript representation of the map. +. +.TP +.B png +If lstopo was compiled with the proper +support, lstopo outputs a PNG representation of the map. +. +.TP +.B synthetic +If the topology is symmetric +(which requires that the root object has its symmetric_subtree field set), +lstopo outputs a synthetic description string. +This output may be reused as an input synthetic topology +description later. +See also the Synthetic topologies section in the documentation. +Note that Misc and I/O devices are ignored during this export. +. +.TP +.B xml +If lstopo was compiled with the proper +support, lstopo outputs an XML representation of the map. +It may be reused later, even on another machine, with lstopo \-\-input, +the HWLOC_XMLFILE environment variable, or the hwloc_topology_set_xml() +function. + +.PP +The following special names may be used: +.TP +.B \- +Send a text summary to stdout. +. +.TP +.B /dev/stdout +Send a text summary to stdout. It is effectively the same as +specifying "\-". +. +.TP +.B \-. +If the entire filename is "\-.", lstopo behaves as if +"\-\-of -" was given, which means a file of the given format +is sent to the standard output. + +.PP +See the output of "lstopo \-\-help" for a specific list of what +graphical output formats are supported in your hwloc installation. +. +.\" ************************** +.\" Graphical Section +.\" ************************** +. +.SH GRAPHICAL OUTPUT +The graphical output is made of nested boxes representing +the inclusion of objects in the hierarchy of resources. +Usually a Machine box contains one or several Package boxes, +that contain multiple Core boxes, with one or several PUs each. + +.SS Caches +Caches are displayed in a slightly different manner because +they do not actually include computing resources such as cores. +For instance, a L2 Cache shared by a pair of Cores is drawn +as a Cache box on top of two Core boxes +(instead of having Core boxes inside the Cache box). + +.SS NUMA nodes and Memory-side Caches +By default, NUMA nodes boxes are drawn on top of their local +computing resources. +For instance, a processor Package containing one NUMA node +and four Cores is displayed as a Package box containing +the NUMA node box above four Core boxes. +If a NUMA node is local to the L3 Cache, the NUMA node is displayed +above that Cache box. +All this specific drawing strategy for memory objects may be disabled +by passing command-line option \fB\-\-children\-order plain\fR. + +If multiple NUMA nodes are attached to the same parent object, +they are displayed inside an additional unnamed memory box. + +If some Memory-side Caches exist in front of some NUMA nodes, +they are drawn as boxes immediately above them. + +.SS PCI bridges, PCI devices and OS devices +The PCI hierarchy is not drawn as a set of included boxes but rather +as a tree of bridges (that may actually be switches) with links between them. +The tree starts with a small square on the left for the +hostbridge or root complex. +It ends with PCI device boxes on the right. +Intermediate PCI bridges/switches may appear as additional small +squares in the middle. + +PCI devices on the right of the tree are boxes containing +their PCI bus ID (such as 00:02.3). +They may also contain sub-boxes for OS device objects +such as a network interface \fIeth0\fR or a CUDA GPU \fIcuda0\fR. + +The datarate of a PCI link may be written (in GB/s) right below +its drawn line (if the operating system and/or libraries are able +to report that information). +This datarate is the currently configured PCI datarate. +It may change during execution since some devices are able to +slow their PCI links down when idle. + +When there is a single link (horizontal line) on the right of a +PCI bridge, it means that a single device or bridge is connected +on the secondary PCI bus behind that bridge. +When there is a vertical line, it means that multiple devices +and/or bridges are connected to the same secondary PCI bus. +. +.\" ************************** +.\" Layout Section +.\" ************************** +.SH LAYOUT +In its graphical output, lstopo uses simple rectangular heuristics +to try to achieve a 4/3 ratio between width and height. +Although the hierarchy of resources is properly reflected, +the exact physical organization (NUMA distances, rings, +complete graphs, etc.) is currently ignored. + +The layout of a level may be changed with \fB\-\-vert\fR, \fB\-\-horiz\fR, +and \fB\-\-rect\fR to force a parent object to arrange its children +in vertical, horizontal or rectangular manners respectively. + +The position of Memory, I/O and Misc children with respect to other +children objects may be changed using \fB\-\-children\-order\fR. +This effectivement divides children into multiple sections. +The layout of children is first computed inside each section, +before sections are placed inside (or below) the parent box. + +The vertical/horizontal/rectangular layout of these additional +sections may also be configured through \fB\-\-children\-order\fR. +. +.\" ************************** +.\" Colors Section +.\" ************************** +.SH COLORS +Individual CPUs and NUMA nodes are colored in the graphical output +formats to indicate different characteristics: +.TP +Green +The topology is reported as seen by a specific process (see \fB\-\-pid\fR), +and the given CPU or NUMA node is in this process CPU or Memory binding mask. +.TP +White +The CPU or NUMA node is in the allowed set (see below). +If the topology is reported as seen by a specific process (see \fB\-\-pid\fR), +the object is also not in this process binding mask. +.TP +Red +The CPU or NUMA node is not in the allowed set (see below). +. +.PP +The "allowed set" is the set of CPUs or NUMA nodes to which the current process is +allowed to bind. The allowed set is usually either inherited from the +parent process or set by administrative qpolicies on the system. Linux +cpusets are one example of limiting the allowed set for a process and +its children to be less than the full set of CPUs or NUMA nodes on the system. +.PP +Different processes may therefore have different CPUs or NUMA nodes in the allowed +set. Hence, invoking lstopo in different contexts and/or as different +users may display different colors for the same individual CPUs (e.g., +running lstopo in one context may show a specific CPU as red, but +running lstopo in a different context may show the same CPU as white). +.PP +Some lstopo output modes, e.g. the console mode (default non-graphical output), +do not support colors at all. +The console mode displays the above characteristics by appending text +to each PU line if verbose messages are enabled. +. +.SH CUSTOM COLORS +The colors of different kinds of boxes may be configured with \fB\-\-palette\fR. + +The color of each object in the graphical output may also be enforced by +specifying a "lstopoStyle" info attribute in that object. +Its value should be a semi-colon separated list of "=#rrggbb" +where rr, gg and bb are the RGB components of a color, +each between 0 and 255, in hexadecimal (00 to ff). +. + may be +.TP +\fBBackground\fR +Sets the background color of the main object box. +.TP +\fBText\fR +Sets the color of the text showing the object name, type, index, etc. +.TP +\fBText2\fB +Sets the color of the additional text near the object, +for instance the link speed behind a PCI bridge. +.PP +The "lstopoStyle" info may be added to a temporarily-saved XML topologies +with hwloc-annotate, or with hwloc_obj_add_info(). +. +For instance, to display all core objects in blue (with white names): + + lstopo save.xml + hwloc-annotate save.xml save.xml core:all info lstopoStyle "Background=#0000ff;Text=#ffffff" + lstopo -i save.xml +. +.\" ************************** +.\" Examples Section +.\" ************************** +.SH EXAMPLES +. +To display the machine topology in textual mode: + + lstopo-no-graphics + +To display the machine topology in ascii-art mode: + + lstopo-no-graphics -.ascii + +To display in graphical mode (assuming that the DISPLAY environment +variable is set to a relevant value): + + lstopo + +To export the topology to a PNG file: + + lstopo file.png + +To export an XML file on a machine and later display the corresponding +graphical output on another machine: + + machine1$ lstopo file.xml + + machine2$ lstopo --input file.xml + +To save the current machine topology to XML and later reload it faster +while still considering it as the current machine: + + $ lstopo file.xml + <...> + $ lstopo --input file.xml --thissystem + +To restrict an XML topology to only physical processors 0, 1, 4 and 5: + + lstopo --input file.xml --restrict 0x33 newfile.xml + +To restrict an XML topology to only numa node whose logical index is 1: + + lstopo --input file.xml --restrict $(hwloc-calc --input file.xml node:1) newfile.xml + +To display a summary of the topology: + + lstopo -s + +To get more details about the topology: + + lstopo -v + +To only show cores: + + lstopo --only core + +To show cpusets: + + lstopo --cpuset + +To only show the cpusets of package: + + lstopo --only package --cpuset-only + +Simulate a fake hierarchy; this example shows with 2 NUMA nodes of 2 +processor units: + + lstopo --input "node:2 2" + +To count the number of logical processors in the system + + lstopo --only pu | wc -l + +To append the kernel release and version to the graphical legend: + + lstopo --append-legend "Kernel release: $(uname -r)" --append-legend "Kernel version: $(uname -v)" +. +.\" ************************** +.\" Notes Section +.\" ************************** +.SH NOTES +. +lstopo displays memory and cache sizes with units such as +\fBkB\fR (1 kilobyte = 1000 bytes) or \fBGB\fR (1 gigabyte = 1000*1000*1000 bytes) +while it actually means +\fBKiB\fR (1 kibibyte = 1024 bytes) or \fBGiB\fR (1 gibibytes = 1024*1024*1024 bytes) . +. +.\" ************************** +.\" See also section +.\" ************************** +.SH SEE ALSO +. +.ft R +hwloc(7), hwloc-info(1), hwloc-bind(1), hwloc-annotate(1), hwloc-ps(1), hwloc-gather-topology(1), hwloc-gather-cpuid(1) +.sp diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-shmem.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-shmem.c new file mode 100644 index 0000000000..f7a5a178ee --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-shmem.c @@ -0,0 +1,185 @@ +/* + * Copyright © 2018-2020 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "lstopo.h" + +struct lstopo_shmem_header { +#define LSTOPO_SHMEM_HEADER_VERSION 1U + uint32_t header_version; + uint32_t header_length; + uint64_t mmap_address; + uint64_t mmap_length; + uint64_t file_offset; +}; + +extern uint64_t shmem_output_addr; + +#ifndef MAP_ANONYMOUS /* for Mac OS X 9 */ +#define MAP_ANONYMOUS MAP_ANON +#endif + +static unsigned long +find_mmap_addr(unsigned long length) +{ + unsigned long addr; + void *tmp_mmap; + int err; + + /* try to find a good address starting from something in the middle of the entire/full address space */ +#if SIZEOF_VOID_P == 8 + addr = 0x8000000000000000UL; +#else + addr = 0x80000000UL; +#endif + printf("Testing mmaps to find room for length %lu\n", length); + +again: + tmp_mmap = mmap((void*)(uintptr_t)addr, length, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_SHARED, -1, 0); + if (tmp_mmap != MAP_FAILED) { + err = munmap((void*)(uintptr_t)tmp_mmap, length); + assert(!err); + if (tmp_mmap == (void*)(uintptr_t) addr) { + /* worked! */ + printf(" test mmap at 0x%lx succeeded, let's use that!\n", addr); + return addr; + } + printf(" test mmap at 0x%lx returned another address\n", addr); + } else + printf(" test mmap at 0x%lx failed (errno %d)\n", addr, errno); + /* couldn't map there, try again with a smaller address */ + addr >>= 1; + if (addr) + goto again; + + return 0; +} + +int +output_shmem(struct lstopo_output *loutput, const char *filename) +{ + struct lstopo_shmem_header header; + size_t shmem_length; + struct stat st; + int fd, err; + + if (!filename || !strcasecmp(filename, "-.shmem")) { + fprintf(stderr, "Cannot export shmem topology to stdout.\n"); + return -1; + } + + if (!stat(filename, &st) && !loutput->overwrite) { + fprintf(stderr, "Failed to export shmem topology to %s (%s)\n", filename, strerror(EEXIST)); + return -1; + } + + err = hwloc_shmem_topology_get_length(loutput->topology, &shmem_length, 0); + if (err < 0) { + if (errno == ENOSYS) + fprintf(stderr, "shmem topology not supported\n"); /* this line must match the grep line in test-lstopo-shmem */ + else + fprintf(stderr, "Failed to compute shmem topology export length\n"); + return -1; + } + + fd = open(filename, O_RDWR|O_TRUNC|O_CREAT, S_IRUSR|S_IWUSR); + if (fd < 0) { + fprintf(stderr, "Failed to open shmem topology file %s (%s)\n", filename, strerror(errno)); + return -1; + } + + if (!loutput->shmem_output_addr) + loutput->shmem_output_addr = find_mmap_addr(shmem_length); + if (!loutput->shmem_output_addr) { + fprintf(stderr, "Failed to find a shmem topology mmap address\n"); /* this line must match the grep line in test-lstopo-shmem */ + close(fd); + unlink(filename); + return -1; + } + + header.header_version = LSTOPO_SHMEM_HEADER_VERSION; + header.header_length = sizeof(header); + header.mmap_address = loutput->shmem_output_addr; + header.mmap_length = shmem_length; + header.file_offset = hwloc_getpagesize(); + err = write(fd, &header, sizeof(header)); + if (err != sizeof(header)) { + fprintf(stderr, "Failed to write shmem topology header\n"); + close(fd); + unlink(filename); + return -1; + } + + if (hwloc_shmem_topology_write(loutput->topology, fd, header.file_offset, (void*)(uintptr_t)loutput->shmem_output_addr, shmem_length, 0) < 0) { + if (errno == EBUSY) + fprintf(stderr, "Failed to export shmem topology, memory range is busy\n"); /* this line must match the grep line in test-lstopo-shmem */ + else + fprintf(stderr, "Failed to export shmem topology to %s (%s)\n", filename, strerror(errno)); + close(fd); + unlink(filename); + return -1; + } + + close(fd); + + printf("Exported shmem topology to %s for mmap address 0x%llx length %lu\n", filename, (unsigned long long) loutput->shmem_output_addr, (unsigned long) shmem_length); + + return 0; +} + +int lstopo_shmem_adopt(const char *input, hwloc_topology_t *topologyp) +{ + hwloc_topology_t adopted; + struct lstopo_shmem_header header; + int fd, err; + + fd = open(input, O_RDONLY); + if (fd < 0) + return -1; + + err = read(fd, &header, sizeof(header)); + if (err < (int) sizeof(header)) { + fprintf(stderr, "Failed to read shmem topology header\n"); + close(fd); + return -1; + } + + if (header.header_version != LSTOPO_SHMEM_HEADER_VERSION + || header.header_length != sizeof(header)) { + fprintf(stderr, "Unexpected shmem topology header version %u length %u (instead of %u %u)\n", + header.header_version, header.header_length, + LSTOPO_SHMEM_HEADER_VERSION, (unsigned) sizeof(header)); + close(fd); + return -1; + } + + err = hwloc_shmem_topology_adopt(&adopted, fd, header.file_offset, (void*)(uintptr_t)header.mmap_address, header.mmap_length, 0); + close(fd); + if (err < 0) { + if (errno == EBUSY) + fprintf(stderr, "Failed to adopt shmem topology, memory range is busy\n"); /* this line must match the grep line in test-lstopo-shmem */ + else + fprintf(stderr, "Failed to adopt shmem topology (%s)\n", strerror(errno)); + return -1; + } + + err = hwloc_topology_dup(topologyp, adopted); + hwloc_topology_destroy(adopted); + if (err < 0) { + fprintf(stderr, "Failed to duplicate adopted shmem topology (%s)\n", strerror(errno)); + return -1; + } + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-svg.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-svg.c new file mode 100644 index 0000000000..6b2d163b2d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-svg.c @@ -0,0 +1,158 @@ +/* + * Copyright © 2019-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include +#include +#include + +#include "lstopo.h" + +#define SVG_TEXT_WIDTH(length, fontsize) (((length) * (fontsize))/2) +#define SVG_FONTSIZE_SCALE(size) (((size) * 11) / 9) + +static void +native_svg_box(struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height, hwloc_obj_t obj, unsigned box_id) +{ + FILE *file = loutput->file; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + unsigned thickness = loutput->thickness; + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + char id[128] = ""; + char class[128] = ""; + char complement[12] = ""; + char dash[32] = ""; + + if (box_id) + snprintf(complement, sizeof complement, "_%u", box_id); + + if (obj) { + char type[64]; + hwloc_obj_type_snprintf(type, sizeof(type), obj, 0); + snprintf(id, sizeof id, " id='%s_%u_rect%s'", type, obj->logical_index, complement); + snprintf(class, sizeof class, " class='%s'", type); + } else { + snprintf(id, sizeof id, " id='anon_rect%s'", complement); + } + + if (cpukind_style) { + snprintf(dash, sizeof(dash), " stroke-dasharray=\"%u\"", 1U << cpukind_style); + thickness *= cpukind_style; + } + + fprintf(file,"\t\n", + id, class, x, y, width, height, r, g, b, thickness, dash); +} + + +static void +native_svg_line(struct lstopo_output *loutput, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2, hwloc_obj_t obj, unsigned line_id) +{ + FILE *file = loutput->file; + char id[128] = ""; + char class[128] = ""; + char complement[12] = ""; + if (line_id) + snprintf(complement, sizeof complement, "_%u", line_id); + + if (obj) { + char type[64]; + hwloc_obj_type_snprintf(type, sizeof(type), obj, 0); + snprintf(id, sizeof id, " id='%s_%u_line%s'", type, obj->logical_index, complement); + snprintf(class, sizeof class, " class='%s'", type); + } else { + snprintf(id, sizeof id, " id='anon_line%s'", complement); + } + + fprintf(file,"\t\n", + id, class, x1, y1, x2, y2, loutput->thickness); +} + +static void +native_svg_textsize(struct lstopo_output *loutput __hwloc_attribute_unused, const char *text __hwloc_attribute_unused, unsigned textlength, unsigned fontsize, unsigned *width) +{ + fontsize = SVG_FONTSIZE_SCALE(fontsize); + *width = SVG_TEXT_WIDTH(textlength, fontsize); +} + + +static void +native_svg_text(struct lstopo_output *loutput, const struct lstopo_color *lcolor, int size, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text, hwloc_obj_t obj, unsigned text_id) +{ + FILE *file = loutput->file; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + char id[128] = ""; + char class[128] = ""; + char complement[12] = ""; + const char *fontweight = ""; + + if (text_id) + snprintf(complement, sizeof complement, "_%u", text_id); + + if (obj) { + char type[64]; + hwloc_obj_type_snprintf(type, sizeof(type), obj, 0); + snprintf(id, sizeof id, " id='%s_%u_text%s'", type, obj->logical_index, complement); + snprintf(class, sizeof class, " class='%s'", type); + } else { + snprintf(id, sizeof id, " id='anon_text%s'", complement); + } + + if (cpukind_style % 2) + fontweight = " font-weight='bold'"; + + fprintf(file,"\t%s\n", + id, class, + fontweight, + x, y+size, r, g, b, size, text); +} + +static struct draw_methods native_svg_draw_methods = { + NULL, + NULL, + native_svg_box, + native_svg_line, + native_svg_text, + native_svg_textsize, +}; + +int output_nativesvg(struct lstopo_output * loutput, const char *filename) +{ + FILE *output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + + loutput->file = output; + loutput->methods = &native_svg_draw_methods; + loutput->backend_flags |= LSTOPO_BACKEND_FLAG_APPROXIMATIVE_TEXTWIDTH; + + /* recurse once for preparing sizes and positions */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + output_draw(loutput); + loutput->drawing = LSTOPO_DRAWING_DRAW; + + fprintf(output, "\n"); + fprintf(output, "\n", + loutput->width, loutput->height, loutput->width, loutput->height); + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + output_draw(loutput); + fprintf(output,"\n"); + + if (output != stdout) + fclose(output); + + destroy_colors(loutput); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-text.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-text.c new file mode 100644 index 0000000000..7f8fd6f747 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-text.c @@ -0,0 +1,605 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include +#include +#include + +#ifdef HWLOC_WIN_SYS +#include +#endif + +#include "lstopo.h" +#include "misc.h" + +#define indent(output, i) \ + fprintf (output, "%*s", (int) i, ""); + +/* + * Console fashion text output + */ + +static void +output_console_obj (struct lstopo_output *loutput, hwloc_obj_t l, int collapse) +{ + FILE *output = loutput->file; + enum lstopo_index_type_e index_type = loutput->index_type; + int verbose_mode = loutput->verbose_mode; + char pidxstr[16]; + char lidxstr[32]; + char busidstr[32]; + + if (collapse > 1 && l->type == HWLOC_OBJ_PCI_DEVICE) { + strcpy(pidxstr, "P#[collapsed]"); /* shouldn't be used, os_index should be -1 except if importing old XMLs */ + snprintf(lidxstr, sizeof(lidxstr), "L#%u-%u", l->logical_index, l->logical_index+collapse-1); + } else { + snprintf(pidxstr, sizeof(pidxstr), "P#%u", l->os_index); + snprintf(lidxstr, sizeof(lidxstr), "L#%u", l->logical_index); + } + if (l->type == HWLOC_OBJ_PCI_DEVICE) + lstopo_busid_snprintf(loutput, busidstr, sizeof(busidstr), l, collapse, loutput->need_pci_domain); + + if (loutput->show_cpuset < 2) { + char type[64], *attr, phys[32] = ""; + int len; + hwloc_obj_type_snprintf (type, sizeof(type), l, verbose_mode-1); + if (l->subtype) + fprintf(output, "%s(%s)", type, l->subtype); + else + fprintf(output, "%s", type); + if (l->depth != 0 && (verbose_mode >= 2 || (hwloc_obj_type_is_normal(l->type) || hwloc_obj_type_is_memory(l->type)))) { + if (index_type != LSTOPO_INDEX_TYPE_PHYSICAL) + /* print logical index in logical and default case */ + fprintf(output, " %s", lidxstr); + else if (index_type == LSTOPO_INDEX_TYPE_PHYSICAL && l->os_index != HWLOC_UNKNOWN_INDEX) + /* print physical index in physical case */ + fprintf(output, " %s", pidxstr); + } + if (l->name && (l->type == HWLOC_OBJ_MISC || l->type == HWLOC_OBJ_GROUP)) + fprintf(output, " %s", l->name); + if (index_type == LSTOPO_INDEX_TYPE_DEFAULT + && l->os_index != HWLOC_UNKNOWN_INDEX + && (verbose_mode >= 2 || l->type == HWLOC_OBJ_PU || l->type == HWLOC_OBJ_NUMANODE)) + /* print physical index too if default index */ + snprintf(phys, sizeof(phys), "%s", pidxstr); + if (l->type == HWLOC_OBJ_PCI_DEVICE && verbose_mode <= 1) + fprintf(output, " %s (%s)", + busidstr, hwloc_pci_class_string(l->attr->pcidev.class_id)); + /* display attributes */ + len = hwloc_obj_attr_snprintf (NULL, 0, l, " ", verbose_mode-1); + attr = malloc(len+1); + *attr = '\0'; + hwloc_obj_attr_snprintf (attr, len+1, l, " ", verbose_mode-1); + if (*phys || *attr) { + fprintf(output, " ("); + if (*phys) + fprintf(output, "%s", phys); + if (*phys && *attr) + fprintf(output, " "); + if (*attr) { + if (collapse > 1 && l->type == HWLOC_OBJ_PCI_DEVICE) { + assert(!strncmp(attr, "busid=", 6)); + assert(!strncmp(attr+18, " id=", 4)); + fprintf(output, "busid=%s%s", busidstr, attr+18); + } else + fprintf(output, "%s", attr); + } + fprintf(output, ")"); + } + free(attr); + /* display the root total_memory if not verbose (already shown) + * (cannot be local_memory since root cannot be a NUMA node) */ + if (verbose_mode == 1 && !l->parent && l->total_memory) + fprintf(output, " (%lu%s total)", + (unsigned long) hwloc_memory_size_printf_value(l->total_memory, 0), + hwloc_memory_size_printf_unit(l->total_memory, 0)); + /* append the name */ + if (l->name && (l->type == HWLOC_OBJ_OS_DEVICE || verbose_mode >= 2) + && l->type != HWLOC_OBJ_MISC && l->type != HWLOC_OBJ_GROUP) + fprintf(output, " \"%s\"", l->name); + } + if (!l->cpuset) + return; + if (loutput->show_cpuset == 1) + fprintf(output, " cpuset="); + if (loutput->show_cpuset) { + char *cpusetstr; + if (loutput->show_taskset) + hwloc_bitmap_taskset_asprintf(&cpusetstr, l->cpuset); + else + hwloc_bitmap_asprintf(&cpusetstr, l->cpuset); + fprintf(output, "%s", cpusetstr); + free(cpusetstr); + } + + /* annotate if the PU/NUMA is disallowed/binding */ + if (verbose_mode >= 2) { + if (l->type == HWLOC_OBJ_PU) { + if (lstopo_pu_disallowed(loutput, l)) + fprintf(output, " (disallowed)"); + else if (lstopo_pu_binding(loutput, l)) + fprintf(output, " (binding)"); + } else if (l->type == HWLOC_OBJ_NUMANODE) { + if (lstopo_numa_disallowed(loutput, l)) + fprintf(output, " (disallowed)"); + else if (lstopo_numa_binding(loutput, l)) + fprintf(output, " (binding)"); + } + } +} + +/* Recursively output topology in a console fashion */ +static void +output_topology (struct lstopo_output *loutput, hwloc_obj_t l, hwloc_obj_t parent, int i) +{ + FILE *output = loutput->file; + int verbose_mode = loutput->verbose_mode; + hwloc_obj_t child; + int group_identical = (verbose_mode <= 1) && !loutput->show_cpuset; + int collapse = loutput->pci_collapse_enabled ? ((struct lstopo_obj_userdata *) l->userdata)->pci_collapsed : 0; + + if (l->type == HWLOC_OBJ_PCI_DEVICE && collapse == -1) + return; + + if (group_identical + && parent && parent->arity == 1 + && !parent->memory_arity && !parent->io_arity && !parent->misc_arity + && l->cpuset && parent->cpuset && hwloc_bitmap_isequal(l->cpuset, parent->cpuset)) { + /* in non-verbose mode, merge objects with their parent is they are exactly identical */ + fprintf(output, " + "); + } else { + if (parent) + fprintf(output, "\n"); + indent (output, 2*i); + i++; + } + + if (collapse > 1) + fprintf(output, "%d x { ", collapse); + output_console_obj(loutput, l, collapse); + if (collapse > 1) + fprintf(output, " }"); + + for_each_memory_child(child, l) + if (child->type != HWLOC_OBJ_PU || !loutput->ignore_numanodes) + output_topology (loutput, child, l, i); + for_each_child(child, l) + if (child->type != HWLOC_OBJ_PU || !loutput->ignore_pus) + output_topology (loutput, child, l, i); + for_each_io_child(child, l) + output_topology (loutput, child, l, i); + for_each_misc_child(child, l) + output_topology (loutput, child, l, i); +} + +/* Recursive so that multiple depth types are properly shown */ +static void +output_only (struct lstopo_output *loutput, hwloc_obj_t l) +{ + FILE *output = loutput->file; + hwloc_obj_t child; + if (loutput->show_only == l->type) { + output_console_obj (loutput, l, 0); + fprintf (output, "\n"); + } + /* there can be anything below normal children */ + for_each_child(child, l) + output_only (loutput, child); + /* there can be only memory or Misc below memory children */ + if (hwloc_obj_type_is_memory(loutput->show_only) || loutput->show_only == HWLOC_OBJ_MISC) { + for(child = l->memory_first_child; child; child = child->next_sibling) + output_only (loutput, child); + } + /* there can be only I/O or Misc below I/O children */ + if (hwloc_obj_type_is_io(loutput->show_only) || loutput->show_only == HWLOC_OBJ_MISC) { + for_each_io_child(child, l) + output_only (loutput, child); + } + /* there can be only Misc below Misc children */ + if (loutput->show_only == HWLOC_OBJ_MISC) { + /* Misc can only contain other Misc, no need to recurse otherwise */ + for_each_misc_child(child, l) + output_only (loutput, child); + } +} + +static void output_distances(struct lstopo_output *loutput) +{ + hwloc_topology_t topology = loutput->topology; + enum lstopo_index_type_e index_type = loutput->index_type; + FILE *output = loutput->file; + struct hwloc_distances_s **dist; + unsigned nr = 0, j; + int err = hwloc_distances_get(topology, &nr, NULL, 0, 0); + if (err < 0 || !nr) + return; + dist = malloc(nr * sizeof(*dist)); + if (!dist) + return; + err = hwloc_distances_get(topology, &nr, dist, 0, 0); + if (!err) { + for(j=0; jkind & HWLOC_DISTANCES_KIND_MEANS_LATENCY) ? "latency" : (dist[j]->kind & HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH) ? "bandwidth" : "distance"; + const char *name = hwloc_distances_get_name(topology, dist[j]); + if (!name) + name = "(null)"; + if (loutput->transform_distances != -1) + hwloc_distances_transform(topology, dist[j], loutput->transform_distances, NULL, 0); + if (dist[j]->kind & HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES) { + fprintf(output, "Relative %s matrix (name %s kind %lu) between %u heterogeneous objects by %s indexes:\n", + kindmeans, name, dist[j]->kind, + dist[j]->nbobjs, + index_type != LSTOPO_INDEX_TYPE_PHYSICAL ? "logical" : "physical"); + } else { + fprintf(output, "Relative %s matrix (name %s kind %lu) between %u %ss (depth %d) by %s indexes:\n", + kindmeans, name, dist[j]->kind, + dist[j]->nbobjs, + hwloc_obj_type_string(dist[j]->objs[0]->type), + dist[j]->objs[0]->depth, + index_type != LSTOPO_INDEX_TYPE_PHYSICAL ? "logical" : "physical"); + } + hwloc_utils_print_distance_matrix(output, dist[j]->nbobjs, dist[j]->objs, dist[j]->values, index_type != LSTOPO_INDEX_TYPE_PHYSICAL, dist[j]->kind & HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES); + hwloc_distances_release(topology, dist[j]); + } + } + free(dist); +} + +static void output_memattr_obj(struct lstopo_output *loutput, + hwloc_obj_t obj) +{ + enum lstopo_index_type_e index_type = loutput->index_type; + unsigned idx = (index_type == LSTOPO_INDEX_TYPE_PHYSICAL ? obj->os_index : obj->logical_index); + char objtype[16]; + + hwloc_obj_type_snprintf(objtype, sizeof(objtype), obj, 0); + if (idx == (unsigned) -1) + printf("%s %c#-1", objtype, + index_type == LSTOPO_INDEX_TYPE_PHYSICAL ? 'P' : 'L'); + else + printf("%s %c#%u", objtype, + index_type == LSTOPO_INDEX_TYPE_PHYSICAL ? 'P' : 'L', + idx); + + if (obj->name) + printf(" \"%s\"", obj->name); +} + +static void output_memattr_initiator(struct lstopo_output *loutput, + struct hwloc_location *initiator) +{ + hwloc_topology_t topology = loutput->topology; + + if (initiator->type == HWLOC_LOCATION_TYPE_CPUSET) { + hwloc_obj_t obj; + char *c; + + assert(initiator->location.cpuset); + hwloc_bitmap_asprintf(&c, initiator->location.cpuset); + printf(" from cpuset %s", c); + free(c); + + obj = hwloc_get_obj_covering_cpuset(topology, initiator->location.cpuset); + if (obj && !hwloc_bitmap_isequal(obj->cpuset, initiator->location.cpuset)) + obj = NULL; + if (obj) { + while (obj->parent && hwloc_bitmap_isequal(obj->cpuset, obj->parent->cpuset)) + obj = obj->parent; + printf(" ("); + output_memattr_obj(loutput, obj); + printf(")"); + } + + } else if (initiator->type == HWLOC_LOCATION_TYPE_OBJECT) { + printf(" from "); + output_memattr_obj(loutput, initiator->location.object); + + } else { + printf(" from initiator with unexpected type %d", + (int) initiator->type); + } + +} + +static void output_memattrs(struct lstopo_output *loutput) +{ + hwloc_topology_t topology = loutput->topology; + int verbose_mode = loutput->verbose_mode; + int show_all = (loutput->show_memattrs_only || (verbose_mode >= 3)); + unsigned id; + + for(id=0; ; id++) { + const char *name; + unsigned long flags; + unsigned nr_targets; + hwloc_obj_t *targets; + unsigned i; + int err; + + if (!show_all + && (id == HWLOC_MEMATTR_ID_CAPACITY || id == HWLOC_MEMATTR_ID_LOCALITY)) + continue; + + err = hwloc_memattr_get_name(topology, id, &name); + if (err < 0) + break; + err = hwloc_memattr_get_flags(topology, id, &flags); + assert(!err); + + nr_targets = 0; + err = hwloc_memattr_get_targets(topology, id, NULL, 0, &nr_targets, NULL, NULL); + assert(!err); + + if (!show_all && !nr_targets) + continue; + + printf("Memory attribute #%u name `%s' flags %lu\n", id, name, flags); + + targets = malloc(nr_targets * sizeof(*targets)); + if (!targets) + continue; + + err = hwloc_memattr_get_targets(topology, id, NULL, 0, &nr_targets, targets, NULL); + assert(!err); + + for(i=0; itopology; + int err = hwloc_windows_get_nr_processor_groups(topology, 0); + if (err > 0) { + unsigned nr = (unsigned) err; + if (nr > 1 || force) { + hwloc_bitmap_t set = hwloc_bitmap_alloc(); + if (set) { + unsigned i; + for(i=0; itopology; + unsigned i, j, nr; + hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); + + nr = hwloc_cpukinds_get_nr(topology, 0); + + for(i=0; itopology; + int verbose_mode = loutput->verbose_mode; + FILE *output; + + output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + loutput->file = output; + + if (loutput->show_distances_only) { + output_distances(loutput); + return 0; + } + if (loutput->show_memattrs_only) { + output_memattrs(loutput); + return 0; + } + if (loutput->show_cpukinds_only) { + output_cpukinds(loutput); + return 0; + } + if (loutput->show_windows_processor_groups_only) { + output_windows_processor_groups(loutput, 1); + return 0; + } + + /* + * if verbose_mode == 0, only print the summary. + * if verbose_mode == 1, only print the topology tree. + * if verbose_mode > 1, print both. + */ + + if (loutput->show_only != HWLOC_OBJ_TYPE_NONE) { + if (verbose_mode > 1) + fprintf(output, "Only showing %s objects\n", hwloc_obj_type_string(loutput->show_only)); + output_only (loutput, hwloc_get_root_obj(topology)); + } else if (verbose_mode >= 1) { + output_topology (loutput, hwloc_get_root_obj(topology), NULL, 0); + fprintf(output, "\n"); + } + + if ((verbose_mode > 1 || !verbose_mode) && loutput->show_only == HWLOC_OBJ_TYPE_NONE) { + hwloc_lstopo_show_summary(output, topology); + } + + if (verbose_mode > 1 && loutput->show_only == HWLOC_OBJ_TYPE_NONE) { + output_distances(loutput); + output_memattrs(loutput); + output_cpukinds(loutput); + output_windows_processor_groups(loutput, verbose_mode > 2); + } + + if (verbose_mode > 1 && loutput->show_only == HWLOC_OBJ_TYPE_NONE) { + hwloc_const_bitmap_t complete = hwloc_topology_get_complete_cpuset(topology); + hwloc_const_bitmap_t topo = hwloc_topology_get_topology_cpuset(topology); + hwloc_const_bitmap_t allowed = hwloc_topology_get_allowed_cpuset(topology); + + if (!hwloc_bitmap_isequal(topo, complete)) { + hwloc_bitmap_t unknown = hwloc_bitmap_alloc(); + char *unknownstr; + hwloc_bitmap_copy(unknown, complete); + hwloc_bitmap_andnot(unknown, unknown, topo); + hwloc_bitmap_asprintf(&unknownstr, unknown); + fprintf (output, "%d processors not represented in topology: %s\n", hwloc_bitmap_weight(unknown), unknownstr); + free(unknownstr); + hwloc_bitmap_free(unknown); + } + if (!hwloc_bitmap_isequal(topo, allowed)) { + hwloc_bitmap_t disallowed = hwloc_bitmap_alloc(); + char *disallowedstr; + hwloc_bitmap_copy(disallowed, topo); + hwloc_bitmap_andnot(disallowed, disallowed, allowed); + hwloc_bitmap_asprintf(&disallowedstr, disallowed); + fprintf(output, "%d processors represented but not allowed: %s\n", hwloc_bitmap_weight(disallowed), disallowedstr); + free(disallowedstr); + hwloc_bitmap_free(disallowed); + } + if (!hwloc_topology_is_thissystem(topology)) + fprintf (output, "Topology not from this system\n"); + } + + if (output != stdout) + fclose(output); + + return 0; +} + +int +output_synthetic(struct lstopo_output *loutput, const char *filename) +{ + hwloc_topology_t topology = loutput->topology; + FILE *output; + int length; + char sbuffer[1024]; + char * dbuffer = NULL; + unsigned nb1, nb2, nb3; + + if (!hwloc_get_root_obj(topology)->symmetric_subtree) { + fprintf(stderr, "Cannot output assymetric topology in synthetic format.\n"); + goto out; + } + + nb1 = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_MISC); + if (nb1) { + fprintf(stderr, "# Ignoring %u Misc objects.\n", nb1); + fprintf(stderr, "# (pass --filter Misc:none to hide this message).\n"); + } + nb1 = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_BRIDGE); + nb2 = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PCI_DEVICE); + nb3 = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_OS_DEVICE); + if (nb1 || nb2 || nb3) { + fprintf(stderr, "# Ignoring %u Bridge, %u PCI device and %u OS device objects\n", nb1, nb2, nb3); + fprintf(stderr, "# (pass --no-io to hide this message).\n"); + } + + length = hwloc_topology_export_synthetic(topology, sbuffer, sizeof(sbuffer), loutput->export_synthetic_flags); + if (length < 0) { + fprintf(stderr, "Failed to export a synthetic description (%s)\n", strerror(errno)); + goto out; + } + + if (length >= (int) sizeof(sbuffer)) { + dbuffer = malloc(length+1 /* \0 */); + if (!dbuffer) + goto out; + + length = hwloc_topology_export_synthetic(topology, dbuffer, length+1, loutput->export_synthetic_flags); + if (length < 0) + goto out_with_dbuffer; + } + + output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + goto out_with_dbuffer; + } + + fprintf(output, "%s\n", dbuffer ? dbuffer : sbuffer); + + if (output != stdout) + fclose(output); + + free(dbuffer); + return 0; + + out_with_dbuffer: + free(dbuffer); + out: + return -1; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-tikz.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-tikz.c new file mode 100644 index 0000000000..0da3983644 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-tikz.c @@ -0,0 +1,194 @@ +/* + * Copyright © 2020 Hewlett Packard Enterprise. All rights reserved. + * Copyright © 2020-2021 Inria. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include +#include +#include + +#include "lstopo.h" + +#define TIKZ_TEXT_WIDTH(length, fontsize) (((length) * (fontsize) * 10) / 22) +#define TIKZ_FONTSIZE_SCALE(size) (((size) * 13) / 9) + +#define TIKZ_FONTFAMILY_ENV "LSTOPO_TIKZ_FONTFAMILY" + +static const char * +tikz_get_font_family(void) +{ + /* Authorized values (case insensitive): sf, rm, tt */ + char *font_request = getenv(TIKZ_FONTFAMILY_ENV); + if (!font_request || !(*font_request)) + return ""; /* use latex default font family */ + else if (!strcasecmp(font_request, "sf")) + return "\\sffamily"; + else if (!strcasecmp(font_request, "rm")) + return "\\rmfamily"; + else if (!strcasecmp(font_request, "tt")) + return "\\ttfamily"; + else + return NULL; +} + +static int +tikz_declare_color(struct lstopo_output *loutput, struct lstopo_color *lcolor) +{ + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + FILE *file = loutput->backend_data; + + /* TODO: add random seed in name to avoid collisions + * name format proposed: hwloc-color---- + */ + fprintf(file, "\\definecolor{hwloc-color-%d-%d-%d}{RGB}{%d,%d,%d}\n", + r, g, b, r, g, b); + return 0; +} + +static void +tikz_box(struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height, hwloc_obj_t obj, unsigned box_id __hwloc_attribute_unused) +{ + FILE *file = loutput->file; + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + char linestyle[64] = "solid"; + unsigned thickness = loutput->thickness; + float dashspace = 1.15f; /* default dash size: 1.15pt */ + + if (cpukind_style) { + char dashsize[20], *comma = NULL; + thickness *= cpukind_style; + dashspace *= 1U << cpukind_style; + snprintf(dashsize, 20, "%.4f", dashspace); + comma = strchr(dashsize, ','); + if (comma) + *comma = '.'; /* Use decimal dot despite the locale's opinion. */ + snprintf(linestyle, sizeof(linestyle), "dash pattern=on %spt off %spt", + dashsize, dashsize); + } + + fprintf(file, "\t\\filldraw [fill=hwloc-color-%d-%d-%d,draw=black,line width=%upt,%s] (%u,%u) rectangle ++(%u,%u);\n", + r, g, b, thickness, linestyle, x, y, width, height); +} + + +static void +tikz_line(struct lstopo_output *loutput, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2, hwloc_obj_t obj __hwloc_attribute_unused, unsigned line_id __hwloc_attribute_unused) +{ + FILE *file = loutput->file; + + fprintf(file, "\t\\draw [draw=black,line width=%upt] (%u,%u) -- (%u,%u);\n", + loutput->thickness, x1, y1, x2, y2); +} + +static void +tikz_textsize(struct lstopo_output *loutput __hwloc_attribute_unused, const char *text __hwloc_attribute_unused, unsigned textlength, unsigned fontsize, unsigned *width) +{ + fontsize = TIKZ_FONTSIZE_SCALE(fontsize); + *width = TIKZ_TEXT_WIDTH(textlength, fontsize); +} + + +static void +tikz_text(struct lstopo_output *loutput, const struct lstopo_color *lcolor, int size __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text, hwloc_obj_t obj, unsigned text_id __hwloc_attribute_unused) +{ + FILE *file = loutput->file; + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + const char *bf_style = ""; + + const char *tikzdelim = "{}%&#"; + + if (cpukind_style % 2) + bf_style = "-bold"; + + fprintf(file, "\t\\node [hwloc-label%s,text=hwloc-color-%d-%d-%d] at (%u,%u) {", + bf_style, r, g, b, x, y); + while (*text) { + size_t chunksize = strcspn(text, tikzdelim), n_delim; + fprintf(file, "%.*s", (int) chunksize, text); + text += chunksize; + for (n_delim = strspn(text, tikzdelim); *text && n_delim; ++text, --n_delim) + fprintf(file, "\\%c", *text); + } + fprintf(file, "};\n"); +} + +static struct draw_methods tikz_draw_methods = { + tikz_declare_color, + NULL, + tikz_box, + tikz_line, + tikz_text, + tikz_textsize, +}; + +int output_tikz(struct lstopo_output * loutput, const char *filename) +{ + const char *font_family; + FILE *output = open_output(filename, loutput->overwrite); + if (!output) { + fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno)); + return -1; + } + + font_family = tikz_get_font_family(); + if (!font_family) { + fprintf(stderr, "Invalid value for %s. The only accepted values are \"rm\", \"sf\" and \"tt\".\n", + TIKZ_FONTFAMILY_ENV); + if (output != stdout) + fclose(output); + return -1; + } + + loutput->file = output; + loutput->methods = &tikz_draw_methods; + loutput->backend_data = output; + loutput->backend_flags |= LSTOPO_BACKEND_FLAG_APPROXIMATIVE_TEXTWIDTH; + + /* recurse once for preparing sizes and positions */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + output_draw(loutput); + loutput->drawing = LSTOPO_DRAWING_DRAW; + + /* ready */ + + /* Write LaTeX header */ + fprintf(output, "\\documentclass{standalone}\n"); + + /* Write required LaTeX preambule */ + fprintf(output, "\n%%%%%%%%%% If inserting in another document, the following lines below must be copied before \\begin{document} %%%%%%%%%%\n\n"); + fprintf(output, "\\usepackage{tikz}\n\\usepackage{xcolor}\n"); + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); /* Add custom colors to the preambule */ + fprintf(output, "\n%%%%%%%%%% End of lines needed before \\begin{document} %%%%%%%%%%\n\n"); + + fprintf(output, "\\begin{document}\n"); + + /* Write actual image code */ + fprintf(output, "\n%%%%%%%%%% If inserting in another document, this is the actual source code of the picture %%%%%%%%%%\n\n"); + fprintf(output, "\\begin{tikzpicture}[x=1pt,y=1pt,yscale=-1," + "hwloc-label/.style={fill=none,draw=none,text=black,align=left,anchor=north west," + "outer sep=0pt,inner sep=0pt,font=\\fontsize{%u}{%u}\\selectfont%s}," + "hwloc-label-bold/.style={hwloc-label,font=\\fontsize{%u}{%u}\\selectfont%s\\bfseries}]\n", + loutput->fontsize, loutput->fontsize + loutput->linespacing, font_family, + loutput->fontsize, loutput->fontsize + loutput->linespacing, font_family); + fprintf(output, "\t\\clip (0,0) rectangle (%u,%u);\n", loutput->width, loutput->height); + output_draw(loutput); + fprintf(output,"\\end{tikzpicture}\n"); + fprintf(output, "\n%%%%%%%%%% End of actual source code of the picture to insert in another document %%%%%%%%%%\n\n"); + + /* Write LaTeX footer */ + fprintf(output, "\\end{document}\n"); + + if (output != stdout) + fclose(output); + + destroy_colors(loutput); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-windows.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-windows.c new file mode 100644 index 0000000000..a8b8e0de0b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-windows.c @@ -0,0 +1,575 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2010, 2012 Université Bordeaux + * Copyright © 2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +#include "private/windows.h" /* must be before windows.h */ + +#include +#include + +#include "lstopo.h" + +/* windows back-end. */ + +struct lstopo_windows_output { + struct lstopo_output *loutput; + PAINTSTRUCT ps; +}; + +static HFONT font_default; +static HFONT font_bold; +static HPEN pen_default; +static HPEN pen_style[4]; + +static struct lstopo_windows_output the_output; +static int state, control; +static int the_x, the_y, x_delta, y_delta; +static int finish; +static int the_width, the_height; +static int win_width, win_height; +static unsigned int the_fontsize, the_gridsize; +static float the_scale; +static int auto_resize; +static int needs_resize; +static int ignore_wm_size; + +static void +windows_box(struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height, hwloc_obj_t obj __hwloc_attribute_unused, unsigned box_id __hwloc_attribute_unused); + +static LRESULT CALLBACK +WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) +{ + struct lstopo_output *loutput = the_output.loutput; + int redraw = 0; + + switch (message) { + case WM_CHAR: { + switch (wparam) { + case '+': + the_scale *= 1.2f; + redraw = 1; + if (auto_resize) + needs_resize = 1; + break; + case '-': + the_scale /= 1.2f; + redraw = 1; + if (auto_resize) + needs_resize = 1; + break; + case 'F': { + /* fit drawing to window, don't resize the window */ + float wscale, hscale; + wscale = win_width / (float)the_width; + hscale = win_height / (float)the_height; + the_scale *= wscale > hscale ? hscale : wscale; + redraw = 1; + break; + } + case '1': + the_scale = 1.0; + redraw = 1; + if (auto_resize) + needs_resize = 1; + break; + case 'r': + needs_resize = 1; /* forced */ + break; + case 'R': + auto_resize ^= 1; + if (auto_resize) + needs_resize = 1; + printf("%s window autoresizing\n", auto_resize ? "enabled" : "disabled"); + break; + case 'a': + loutput->show_attrs_enabled ^= 1; + printf("%s object attributes\n", loutput->show_attrs_enabled ? "enabled" : "disabled"); + redraw = 1; + if (auto_resize) + needs_resize = 1; + break; + case 't': + loutput->show_text_enabled ^= 1; + printf("%s object text\n", loutput->show_text_enabled ? "enabled" : "disabled"); + redraw = 1; + if (auto_resize) + needs_resize = 1; + break; + case 'i': + if (loutput->index_type == LSTOPO_INDEX_TYPE_DEFAULT) { + loutput->index_type = LSTOPO_INDEX_TYPE_PHYSICAL; + printf("switched to physical indexes\n"); + } else if (loutput->index_type == LSTOPO_INDEX_TYPE_PHYSICAL) { + loutput->index_type = LSTOPO_INDEX_TYPE_LOGICAL; + printf("switched to logical indexes\n"); + } else if (loutput->index_type == LSTOPO_INDEX_TYPE_LOGICAL) { + loutput->index_type = LSTOPO_INDEX_TYPE_NONE; + printf("switched to no indexes\n"); + } else if (loutput->index_type == LSTOPO_INDEX_TYPE_NONE) { + loutput->index_type = LSTOPO_INDEX_TYPE_DEFAULT; + printf("switched to default indexes\n"); + } else { + abort(); + } + redraw = 1; + if (auto_resize) + needs_resize = 1; + break; + case 'k': + loutput->show_cpukinds ^= 1; + printf("%s displaying of CPU kinds\n", loutput->show_cpukinds ? "enabled" : "disabled"); + redraw = 1; + break; + case 'd': + loutput->show_disallowed ^= 1; + printf("%s coloring of disallowed resources\n", loutput->show_disallowed ? "enabled" : "disabled"); + redraw = 1; + break; + case 'b': + loutput->show_binding ^= 1; + printf("%s coloring of binding resources\n", loutput->show_binding ? "enabled" : "disabled"); + redraw = 1; + break; + case 'l': + if (loutput->show_legend == LSTOPO_SHOW_LEGEND_ALL) { + loutput->show_legend = LSTOPO_SHOW_LEGEND_NONE; + printf("switched to no legend lines\n"); + } else if (loutput->show_legend == LSTOPO_SHOW_LEGEND_NONE) { + loutput->show_legend = LSTOPO_SHOW_LEGEND_NO_DEFAULT; + printf("switched to no default legend lines\n"); + } else if (loutput->show_legend == LSTOPO_SHOW_LEGEND_NO_DEFAULT) { + loutput->show_legend = LSTOPO_SHOW_LEGEND_ALL; + printf("switched to all legend lines\n"); + } else { + abort(); + } + redraw = 1; + if (auto_resize) + needs_resize = 1; + break; + case 'f': + /* alternate between factorize+collapse, collapse only, and none */ + if (loutput->factorize_enabled && loutput->pci_collapse_enabled) { + loutput->factorize_enabled = 0; + printf("factorizing disabled, PCI collapsing still enabled\n"); + } else if (!loutput->factorize_enabled && loutput->pci_collapse_enabled) { + loutput->pci_collapse_enabled = 0; + printf("factorizing and PCI collapsing disabled\n"); + } else { + loutput->factorize_enabled = 1; + loutput->pci_collapse_enabled = 1; + printf("factorizing and PCI collapsing enabled\n"); + } + redraw = 1; + if (auto_resize) + needs_resize = 1; + break; + case 'E': + lstopo_show_interactive_cli_options(loutput); + fflush(stdout); + break; + case 'h': + case 'H': + case '?': + lstopo_show_interactive_help(); + break; + case 'q': + case 'Q': + finish = 1; + break; + } + break; + } + + case WM_PAINT: { +#ifdef HWLOC_HAVE_GCC_W_MISSING_FIELD_INITIALIZERS +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + struct lstopo_color white = {0xff, 0xff, 0xff}; +#ifdef HWLOC_HAVE_GCC_W_MISSING_FIELD_INITIALIZERS +#pragma GCC diagnostic warning "-Wmissing-field-initializers" +#endif + BeginPaint(hwnd, &the_output.ps); + font_default = CreateFont(loutput->fontsize, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, NULL); + SelectObject(the_output.ps.hdc, (HGDIOBJ) font_default); + pen_default = CreatePen(PS_SOLID, loutput->thickness, RGB(0,0,0)); + SelectObject(the_output.ps.hdc, pen_default); + if (loutput->nr_cpukind_styles > 1) { + font_bold = CreateFont(loutput->fontsize, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, NULL); + /* only 1-pixel width is supported for dash and dots */ + pen_style[0] = CreatePen(PS_DASH, 1, RGB(0,0,0)); + pen_style[1] = CreatePen(PS_DOT, 1, RGB(0,0,0)); + pen_style[2] = CreatePen(PS_DASHDOT, 1, RGB(0,0,0)); + pen_style[3] = CreatePen(PS_DASHDOTDOT, 1, RGB(0,0,0)); + } + SetBkMode(the_output.ps.hdc, TRANSPARENT); + loutput->drawing = LSTOPO_DRAWING_PREPARE; + output_draw(loutput); + the_width = loutput->width; + the_height = loutput->height; + + /* now that we computed the new drawing size, resize the window if needed */ + if (needs_resize) { + RECT rect; + x_delta = 0; + y_delta = 0; + rect.top = 0; + rect.left = 0; + rect.right = the_width; + rect.bottom = the_height; + AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE); + + /* SetWindowPos() generates a WM_SIZE event, we don't want to scale the drawing there */ + ignore_wm_size = 1; + SetWindowPos(hwnd, HWND_TOP, 0, 0, rect.right - rect.left, rect.bottom - rect.top, SWP_NOCOPYBITS|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER); + ignore_wm_size = 0; + + needs_resize = 0; + } + + loutput->drawing = LSTOPO_DRAWING_DRAW; + windows_box(loutput, &white, 0, 0, win_width, 0, win_height, NULL, 0); + output_draw(loutput); + DeleteObject(pen_default); + DeleteObject(font_default); + if (loutput->nr_cpukind_styles > 1) { + DeleteObject(font_bold); + DeleteObject(pen_style[0]); + DeleteObject(pen_style[1]); + DeleteObject(pen_style[2]); + DeleteObject(pen_style[3]); + } + EndPaint(hwnd, &the_output.ps); + break; + } + case WM_LBUTTONDOWN: + state = 1; + the_x = GET_X_LPARAM(lparam); + the_y = GET_Y_LPARAM(lparam); + break; + case WM_LBUTTONUP: + state = 0; + break; + case WM_MOUSEMOVE: + if (!(wparam & MK_LBUTTON)) + state = 0; + if (state) { + int new_x = GET_X_LPARAM(lparam); + int new_y = GET_Y_LPARAM(lparam); + x_delta -= new_x - the_x; + y_delta -= new_y - the_y; + the_x = new_x; + the_y = new_y; + redraw = 1; + } + break; + case WM_KEYDOWN: + switch (wparam) { + case VK_ESCAPE: + finish = 1; + break; + case VK_LEFT: + x_delta -= win_width/10; + redraw = 1; + break; + case VK_RIGHT: + x_delta += win_width/10; + redraw = 1; + break; + case VK_UP: + y_delta -= win_height/10; + redraw = 1; + break; + case VK_DOWN: + y_delta += win_height/10; + redraw = 1; + break; + case VK_PRIOR: + if (control) { + x_delta -= win_width; + redraw = 1; + } else { + y_delta -= win_height; + redraw = 1; + } + break; + case VK_NEXT: + if (control) { + x_delta += win_width; + redraw = 1; + } else { + y_delta += win_height; + redraw = 1; + } + break; + case VK_HOME: + x_delta = 0; + y_delta = 0; + redraw = 1; + break; + case VK_END: + x_delta = INT_MAX; + y_delta = INT_MAX; + redraw = 1; + break; + case VK_CONTROL: + control = 1; + break; + case VK_F5: + loutput->needs_topology_refresh = 1; + break; + } + break; + case WM_KEYUP: + switch (wparam) { + case VK_CONTROL: + control = 0; + break; + } + break; + case WM_DESTROY: + PostQuitMessage(0); + return 0; + case WM_SIZE: { + win_width = LOWORD(lparam); + win_height = HIWORD(lparam); + if (!ignore_wm_size) { + float wscale, hscale; + wscale = win_width / (float)the_width; + hscale = win_height / (float)the_height; + the_scale *= wscale > hscale ? hscale : wscale; + if (the_scale < 1.0f) + the_scale = 1.0f; + redraw = 1; + } + break; + } + } + if (needs_resize) { + /* force a redraw since resizing occurs during redraw */ + redraw = 1; + } + if (redraw) { + if (x_delta > the_width - win_width) + x_delta = the_width - win_width; + if (y_delta > the_height - win_height) + y_delta = the_height - win_height; + if (x_delta < 0) + x_delta = 0; + if (y_delta < 0) + y_delta = 0; + loutput->fontsize = (unsigned)(the_fontsize * the_scale); + loutput->gridsize = (unsigned)(the_gridsize * the_scale); + RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE); + } + return DefWindowProc(hwnd, message, wparam, lparam); +} + +static int +windows_declare_color(struct lstopo_output *loutput __hwloc_attribute_unused, struct lstopo_color *lcolor) +{ + int r = lcolor->r, g = lcolor->g, b = lcolor->b; + HBRUSH brush; + COLORREF color; + + color = RGB(r, g, b); + brush = CreateSolidBrush(color); + if (!brush) { + fprintf(stderr,"Could not allocate color %02x%02x%02x\n", r, g, b); + exit(EXIT_FAILURE); + } + + lcolor->private.windows.brush = (HGDIOBJ) brush; + lcolor->private.windows.color = color; + return 0; +} + +static void +windows_destroy_color(struct lstopo_output *loutput __hwloc_attribute_unused, struct lstopo_color *lcolor) +{ + DeleteObject(lcolor->private.windows.brush); +} + +static void +windows_box(struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height, hwloc_obj_t obj __hwloc_attribute_unused, unsigned box_id __hwloc_attribute_unused) +{ + struct lstopo_windows_output *woutput = loutput->backend_data; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + PAINTSTRUCT *ps = &woutput->ps; + + SelectObject(ps->hdc, lcolor->private.windows.brush); + SetBkColor(ps->hdc, lcolor->private.windows.color); + if (cpukind_style) + SelectObject(ps->hdc, pen_style[(cpukind_style-1)%4]); + Rectangle(ps->hdc, x - x_delta, y - y_delta, x + width - x_delta, y + height - y_delta); + if (cpukind_style) + SelectObject(ps->hdc, pen_default); +} + +static void +windows_line(struct lstopo_output *loutput, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2, hwloc_obj_t obj __hwloc_attribute_unused, unsigned line_id __hwloc_attribute_unused) +{ + struct lstopo_windows_output *woutput = loutput->backend_data; + PAINTSTRUCT *ps = &woutput->ps; + + MoveToEx(ps->hdc, x1 - x_delta, y1 - y_delta, NULL); + LineTo(ps->hdc, x2 - x_delta, y2 - y_delta); +} + +static void +windows_text(struct lstopo_output *loutput, const struct lstopo_color *lcolor, int size __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text, hwloc_obj_t obj __hwloc_attribute_unused, unsigned text_id __hwloc_attribute_unused) +{ + struct lstopo_windows_output *woutput = loutput->backend_data; + unsigned cpukind_style = lstopo_obj_cpukind_style(loutput, obj); + PAINTSTRUCT *ps = &woutput->ps; + + SetTextColor(ps->hdc, lcolor->private.windows.color); + if (cpukind_style % 2) + SelectObject(ps->hdc, font_bold); + TextOut(ps->hdc, x - x_delta, y - y_delta, text, (int)strlen(text)); + if (cpukind_style % 2) + SelectObject(ps->hdc, font_default); +} + +static void +windows_textsize(struct lstopo_output *loutput, const char *text, unsigned textlength, unsigned fontsize __hwloc_attribute_unused, unsigned *width) +{ + struct lstopo_windows_output *woutput = loutput->backend_data; + PAINTSTRUCT *ps = &woutput->ps; + SIZE size; + + GetTextExtentPoint32(ps->hdc, text, textlength, &size); + *width = size.cx; +} + +struct draw_methods windows_draw_methods = { + windows_declare_color, + windows_destroy_color, + windows_box, + windows_line, + windows_text, + windows_textsize, +}; + +static HWND toplevel = NULL; + +int +output_windows (struct lstopo_output *loutput, const char *dummy __hwloc_attribute_unused) +{ + unsigned width, height; + MSG msg; + RECT rect; + + memset(&the_output, 0, sizeof(the_output)); + the_output.loutput = loutput; + loutput->methods = &windows_draw_methods; + loutput->backend_data = &the_output; + + if (!toplevel) { + /* create the toplevel window, with random size for now */ + WNDCLASS wndclass; + memset(&wndclass, 0, sizeof(wndclass)); + wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); + wndclass.hCursor = LoadCursor(NULL, IDC_SIZEALL); + wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); + wndclass.lpfnWndProc = WndProc; + wndclass.lpszClassName = "lstopo"; + + RegisterClass(&wndclass); + + toplevel = CreateWindow("lstopo", loutput->title, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, + 10, 10, NULL, NULL, NULL, NULL); + assert(!loutput->refreshing); + } else { + assert(loutput->refreshing); + } + + /* recurse once for preparing sizes and positions using a fake top level window */ + loutput->drawing = LSTOPO_DRAWING_PREPARE; + BeginPaint(toplevel, &the_output.ps); + + font_default = CreateFont(loutput->fontsize, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, NULL); + if (loutput->nr_cpukind_styles > 1) + font_bold = CreateFont(loutput->fontsize, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, NULL); + SelectObject(the_output.ps.hdc, (HGDIOBJ) font_default); + + output_draw(loutput); + + DeleteObject(font_default); + if (loutput->nr_cpukind_styles > 1) + DeleteObject(font_bold); + + EndPaint(toplevel, &the_output.ps); + loutput->drawing = LSTOPO_DRAWING_DRAW; + + /* now create the actual toplevel with the sizes */ + width = loutput->width; + height = loutput->height; + + /* compute the window dimensions with borders/title/... */ + rect.top = 0; + rect.left = 0; + rect.right = width; + rect.bottom = height; + AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE); + win_width = rect.right - rect.left; + win_height = rect.bottom - rect.top; + + /* don't make it bigger than the screen */ + if (win_width > GetSystemMetrics(SM_CXFULLSCREEN)) + win_width = GetSystemMetrics(SM_CXFULLSCREEN); + if (win_height > GetSystemMetrics(SM_CYFULLSCREEN)) + win_height = GetSystemMetrics(SM_CYFULLSCREEN); + + ignore_wm_size = 1; + SetWindowPos(toplevel, HWND_TOP, 0, 0, win_width, win_height, SWP_NOCOPYBITS|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER); + ignore_wm_size = 0; + + the_width = width; + the_height = height; + + the_scale = 1.0f; + + the_fontsize = loutput->fontsize; + the_gridsize = loutput->gridsize; + + auto_resize = 1; + needs_resize = 0; + ignore_wm_size = 0; + + /* ready */ + declare_colors(loutput); + lstopo_prepare_custom_styles(loutput); + + if (!loutput->refreshing) + lstopo_show_interactive_help(); + + ShowWindow(toplevel, SW_SHOWDEFAULT); + InvalidateRect(toplevel, NULL, 1); /* make sure UpdateWindow() will update something when refreshing the topology */ + UpdateWindow(toplevel); + + while (!finish && !loutput->needs_topology_refresh && GetMessage(&msg, NULL, 0, 0)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + if (!loutput->needs_topology_refresh) + DestroyWindow(toplevel); + destroy_colors(loutput); + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-xml.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-xml.c new file mode 100644 index 0000000000..856a6ee41f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo-xml.c @@ -0,0 +1,37 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2017 Inria. All rights reserved. + * Copyright © 2009 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" + +#include +#include + +#include "lstopo.h" + +int +output_xml(struct lstopo_output *loutput, const char *filename) +{ + struct stat st; + + if (!filename || !strcasecmp(filename, "-.xml")) + filename = "-"; + /* hwloc_topology_export_xml() writes to stdout if "-" is given */ + + if (strcmp(filename, "-") && !stat(filename, &st) && !loutput->overwrite) { + fprintf(stderr, "Failed to export XML to %s (%s)\n", filename, strerror(EEXIST)); + return -1; + } + + if (hwloc_topology_export_xml(loutput->topology, filename, loutput->export_xml_flags) < 0) { + fprintf(stderr, "Failed to export XML to %s (%s)\n", filename, strerror(errno)); + return -1; + } + + return 0; +} diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo.c b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo.c new file mode 100644 index 0000000000..4477126f4a --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/lstopo.c @@ -0,0 +1,1754 @@ +/* + * Copyright © 2009 CNRS + * Copyright © 2009-2021 Inria. All rights reserved. + * Copyright © 2009-2012, 2015, 2017 Université Bordeaux + * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. + * Copyright © 2020 Hewlett Packard Enterprise. All rights reserved. + * See COPYING in top-level directory. + */ + +#include "private/autogen/config.h" +#include "hwloc.h" +#ifdef HWLOC_LINUX_SYS +#include "hwloc/linux.h" +#endif /* HWLOC_LINUX_SYS */ +#include "hwloc/shmem.h" + +#include "private/debug.h" /* for HWLOC_BUILD_ASSERT() */ + +#include +#include +#include +#ifdef HAVE_DIRENT_H +#include +#endif +#include +#include +#include +#ifdef HAVE_TIME_H +#include +#endif + +#ifdef LSTOPO_HAVE_GRAPHICS +#ifdef HWLOC_HAVE_CAIRO +#include +#endif +#endif + +#ifdef HAVE_SETLOCALE +#include +#endif + +#include "lstopo.h" +#include "common-ps.h" +#include "misc.h" + +#ifdef __MINGW32__ +# ifdef HAVE_CLOCK_GETTIME +# undef HAVE_CLOCK_GETTIME +# endif +#endif + +#ifdef HAVE_CLOCK_GETTIME +# ifndef CLOCK_MONOTONIC /* HP-UX doesn't have CLOCK_MONOTONIC */ +# define CLOCK_MONOTONIC CLOCK_REALTIME +# endif +#endif + +#ifdef ANDROID +extern void setJNIEnv(); +#endif + +FILE *open_output(const char *filename, int overwrite) +{ + const char *extn; + struct stat st; + + if (!filename || !strcmp(filename, "-")) + return stdout; + + extn = strrchr(filename, '.'); + if (filename[0] == '-' && extn == filename + 1) + return stdout; + + if (!stat(filename, &st) && !overwrite) { + errno = EEXIST; + return NULL; + } + + return fopen(filename, "w"); +} + +static hwloc_obj_t insert_task(hwloc_topology_t topology, hwloc_cpuset_t cpuset, const char * name, int thread) +{ + hwloc_obj_t group, obj; + + hwloc_bitmap_and(cpuset, cpuset, hwloc_topology_get_topology_cpuset(topology)); + if (hwloc_bitmap_iszero(cpuset)) + return NULL; + + /* try to insert a group at exact position */ + group = hwloc_topology_alloc_group_object(topology); + if (!group) + return NULL; + group->cpuset = hwloc_bitmap_dup(cpuset); + group->attr->group.kind = (unsigned) -1; + group = hwloc_topology_insert_group_object(topology, group); + if (!group) { + /* try to insert in a larger parent */ + char *s, *gs; + hwloc_bitmap_asprintf(&s, cpuset); + group = hwloc_get_obj_covering_cpuset(topology, cpuset); + hwloc_bitmap_asprintf(&gs, group->cpuset); + fprintf(stderr, "%s `%s' binding %s doesn't match any object, extended to %s before inserting the %s in the topology.\n", + thread ? "Thread" : "Process", name, s, gs, thread ? "thread" : "process"); + free(s); + free(gs); + } + obj = hwloc_topology_insert_misc_object(topology, group, name); + if (!obj) + fprintf(stderr, "Failed to insert process `%s'\n", name); + else + obj->subtype = strdup("Process"); + + return obj; +} + +static void foreach_process_cb(hwloc_topology_t topology, + struct hwloc_ps_process *proc, + void *cbdata __hwloc_attribute_unused) +{ + char name[100]; + unsigned i; + + snprintf(name, sizeof(name), "%ld", proc->pid); + if (*proc->name) + snprintf(name, sizeof(name), "%ld %s", proc->pid, proc->name); + + if (proc->bound) + insert_task(topology, proc->cpuset, name, 0); + + if (proc->nthreads) + for(i=0; inthreads; i++) + if (proc->threads[i].cpuset + && !hwloc_bitmap_isequal(proc->threads[i].cpuset, proc->cpuset)) { + char task_name[150]; + if (*proc->threads[i].name) + snprintf(task_name, sizeof(task_name), "%s %li %s", name, proc->threads[i].tid, proc->threads[i].name); + else + snprintf(task_name, sizeof(task_name), "%s %li", name, proc->threads[i].tid); + + insert_task(topology, proc->threads[i].cpuset, task_name, 1); + } +} + +static void add_process_objects(hwloc_topology_t topology) +{ + const struct hwloc_topology_support *support = hwloc_topology_get_support(topology); + hwloc_obj_t root = hwloc_get_root_obj(topology); + + if (!support->cpubind->get_proc_cpubind) + return; + + hwloc_ps_foreach_process(topology, root->cpuset, + foreach_process_cb, NULL, + HWLOC_PS_FLAG_THREADS | HWLOC_PS_FLAG_SHORTNAME, NULL, HWLOC_PS_ALL_UIDS); +} + +static __hwloc_inline void lstopo_update_factorize_bounds(unsigned min, unsigned *first, unsigned *last) +{ + switch (min) { + case 0: + case 1: + case 2: + *first = 1; + *last = 0; + break; + case 3: + *first = 1; + *last = 1; + break; + default: + *first = 2; + *last = 1; + break; + } +} + +static __hwloc_inline void lstopo_update_factorize_alltypes_bounds(struct lstopo_output *loutput) +{ + hwloc_obj_type_t type; + for(type = 0; type < HWLOC_OBJ_TYPE_MAX; type++) + lstopo_update_factorize_bounds(loutput->factorize_min[type], &loutput->factorize_first[type], &loutput->factorize_last[type]); +} + +static void +lstopo_add_factorized_attributes(struct lstopo_output *loutput, hwloc_topology_t topology, hwloc_obj_t obj) +{ + hwloc_obj_t child; + + if (!obj->first_child) + return; + + if (obj->symmetric_subtree && obj->arity > loutput->factorize_min[obj->first_child->type]){ + int may_factorize = 1; + /* check that the object is in a single cpukind */ + if (loutput->nr_cpukind_styles) { + int err = hwloc_cpukinds_get_by_cpuset(topology, obj->cpuset, 0); + if (err < 0 && errno == EXDEV) + may_factorize = 0; + } + if (may_factorize) { + /* factorize those children */ + for_each_child(child, obj) { + unsigned factorized; + if (child->sibling_rank < loutput->factorize_first[child->type] + || child->sibling_rank >= obj->arity - loutput->factorize_last[child->type]) + factorized = 0; /* keep first and last */ + else if (child->sibling_rank == loutput->factorize_first[child->type]) + factorized = 1; /* replace with dots */ + else + factorized = -1; /* remove that one */ + ((struct lstopo_obj_userdata *)child->userdata)->factorized = factorized; + } + } + } + /* recurse */ + for_each_child(child, obj) + lstopo_add_factorized_attributes(loutput, topology, child); +} + +static void +lstopo_add_collapse_attributes(hwloc_topology_t topology) +{ + hwloc_obj_t obj, collapser = NULL; + unsigned collapsed = 0; + /* collapse identical PCI devs */ + for(obj = hwloc_get_next_pcidev(topology, NULL); obj; obj = hwloc_get_next_pcidev(topology, obj)) { + if (collapser) { + if (!obj->io_arity && !obj->misc_arity + && obj->parent == collapser->parent + && obj->attr->pcidev.vendor_id == collapser->attr->pcidev.vendor_id + && obj->attr->pcidev.device_id == collapser->attr->pcidev.device_id + && obj->attr->pcidev.subvendor_id == collapser->attr->pcidev.subvendor_id + && obj->attr->pcidev.subdevice_id == collapser->attr->pcidev.subdevice_id) { + /* collapse another one */ + ((struct lstopo_obj_userdata *)obj->userdata)->pci_collapsed = -1; + collapsed++; + continue; + } else if (collapsed > 1) { + /* end this collapsing */ + ((struct lstopo_obj_userdata *)collapser->userdata)->pci_collapsed = collapsed; + collapser = NULL; + collapsed = 0; + } + } + if (!obj->io_arity && !obj->misc_arity) { + /* start a new collapsing */ + collapser = obj; + collapsed = 1; + } + } + if (collapsed > 1) { + /* end this collapsing */ + ((struct lstopo_obj_userdata *)collapser->userdata)->pci_collapsed = collapsed; + } +} + +static void +lstopo_add_cpukind_style(struct lstopo_output *loutput, hwloc_topology_t topology) +{ + unsigned i, nr; + hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); + if (!cpuset) + return; + nr = hwloc_cpukinds_get_nr(topology, 0); + for(i=0; iuserdata)->cpukind_style = i; + } + hwloc_bitmap_free(cpuset); + + loutput->nr_cpukind_styles = nr; +} + +static int +lstopo_check_pci_domains(hwloc_topology_t topology) +{ + hwloc_obj_t obj; + + /* check PCI devices for domains. + * they are listed by depth-first search, the order doesn't guarantee a domain at the end. + */ + obj = NULL; + while ((obj = hwloc_get_next_pcidev(topology, obj)) != NULL) { + if (obj->attr->pcidev.domain) + return 1; + } + + /* check PCI Bridges for domains. + * they are listed by depth-first search, the order doesn't guarantee a domain at the end. + */ + obj = NULL; + while ((obj = hwloc_get_next_bridge(topology, obj)) != NULL) { + if (obj->attr->bridge.upstream_type != HWLOC_OBJ_BRIDGE_PCI) + break; + if (obj->attr->pcidev.domain) + return 1; + } + + return 0; +} + +static void +lstopo_parse_children_order(char *s, unsigned *children_order_p, + enum lstopo_orient_e *right_force_orient_p, + enum lstopo_orient_e *below_force_orient_p) +{ + char *tmp, *next; + unsigned children_order; + enum lstopo_orient_e right_force_orient = LSTOPO_ORIENT_NONE; + enum lstopo_orient_e below_force_orient= LSTOPO_ORIENT_NONE; + + if (!strcmp(s, "plain")) { + *children_order_p = LSTOPO_ORDER_PLAIN; + return; + } + + tmp = s; + children_order = LSTOPO_ORDER_PLAIN; + while (tmp && *tmp) { + next = strchr(tmp, ','); + if (next) { + *next = 0; + next++; + } + + if (!strcmp(tmp, "memory:above") || !strcmp(tmp, "memoryabove") /* backward compat with 2.5 */) { + children_order |= LSTOPO_ORDER_MEMORY_ABOVE; + + } else if (!strcmp(tmp, "io:right")) { + children_order |= LSTOPO_ORDER_IO_RIGHT; + } else if (!strcmp(tmp, "io:right:horiz")) { + children_order |= LSTOPO_ORDER_IO_RIGHT; + right_force_orient = LSTOPO_ORIENT_HORIZ; + } else if (!strcmp(tmp, "io:right:vert")) { + children_order |= LSTOPO_ORDER_IO_RIGHT; + right_force_orient = LSTOPO_ORIENT_VERT; + } else if (!strcmp(tmp, "io:right:rect")) { + children_order |= LSTOPO_ORDER_IO_RIGHT; + right_force_orient = LSTOPO_ORIENT_RECT; + + } else if (!strcmp(tmp, "io:below")) { + children_order |= LSTOPO_ORDER_IO_BELOW; + } else if (!strcmp(tmp, "io:below:horiz")) { + children_order |= LSTOPO_ORDER_IO_BELOW; + below_force_orient = LSTOPO_ORIENT_HORIZ; + } else if (!strcmp(tmp, "io:below:vert")) { + children_order |= LSTOPO_ORDER_IO_BELOW; + below_force_orient = LSTOPO_ORIENT_VERT; + } else if (!strcmp(tmp, "io:below:rect")) { + children_order |= LSTOPO_ORDER_IO_BELOW; + below_force_orient = LSTOPO_ORIENT_RECT; + + } else if (!strcmp(tmp, "misc:right")) { + children_order |= LSTOPO_ORDER_MISC_RIGHT; + } else if (!strcmp(tmp, "misc:right:horiz")) { + children_order |= LSTOPO_ORDER_MISC_RIGHT; + right_force_orient = LSTOPO_ORIENT_HORIZ; + } else if (!strcmp(tmp, "misc:right:vert")) { + children_order |= LSTOPO_ORDER_MISC_RIGHT; + right_force_orient = LSTOPO_ORIENT_VERT; + } else if (!strcmp(tmp, "misc:right:rect")) { + children_order |= LSTOPO_ORDER_MISC_RIGHT; + right_force_orient = LSTOPO_ORIENT_RECT; + + } else if (!strcmp(tmp, "misc:below")) { + children_order |= LSTOPO_ORDER_MISC_BELOW; + } else if (!strcmp(tmp, "misc:below:horiz")) { + children_order |= LSTOPO_ORDER_MISC_BELOW; + below_force_orient = LSTOPO_ORIENT_HORIZ; + } else if (!strcmp(tmp, "misc:below:vert")) { + children_order |= LSTOPO_ORDER_MISC_BELOW; + below_force_orient = LSTOPO_ORIENT_VERT; + } else if (!strcmp(tmp, "misc:below:rect")) { + children_order |= LSTOPO_ORDER_MISC_BELOW; + below_force_orient = LSTOPO_ORIENT_RECT; + + } else if (strcmp(tmp, "plain")) { + fprintf(stderr, "Unsupported children order `%s', ignoring.\n", tmp); + } + + tmp = next; + } + + *children_order_p = children_order; + *right_force_orient_p = right_force_orient; + *below_force_orient_p = below_force_orient; +} + +static void +lstopo_populate_userdata(hwloc_obj_t parent) +{ + hwloc_obj_t child; + struct lstopo_obj_userdata *save = malloc(sizeof(*save)); + + save->common.buffer = NULL; /* so that it is ignored on XML export */ + save->common.next = parent->userdata; + save->factorized = 0; + save->pci_collapsed = 0; + save->cpukind_style = 0; + parent->userdata = save; + + for_each_child(child, parent) + lstopo_populate_userdata(child); + for_each_memory_child(child, parent) + lstopo_populate_userdata(child); + for_each_io_child(child, parent) + lstopo_populate_userdata(child); + for_each_misc_child(child, parent) + lstopo_populate_userdata(child); +} + +static void +lstopo_destroy_userdata(hwloc_obj_t parent) +{ + hwloc_obj_t child; + struct lstopo_obj_userdata *save = parent->userdata; + + if (save) { + parent->userdata = save->common.next; + free(save); + } + + for_each_child(child, parent) + lstopo_destroy_userdata(child); + for_each_memory_child(child, parent) + lstopo_destroy_userdata(child); + for_each_io_child(child, parent) + lstopo_destroy_userdata(child); + for_each_misc_child(child, parent) + lstopo_destroy_userdata(child); +} + +void usage(const char *name, FILE *where) +{ + fprintf (where, "Usage: %s [ options ] ... [ filename.format ]\n\n", name); + fprintf (where, "See lstopo(1) for more details.\n"); + + fprintf (where, "\nDefault output is " +#ifdef LSTOPO_HAVE_GRAPHICS +#ifdef HWLOC_WIN_SYS + "graphical" +#elif (defined LSTOPO_HAVE_X11) + "graphical (X11) if DISPLAY is set, console otherwise" +#else + "console" +#endif +#else + "console" +#endif + ".\n"); + + fprintf (where, "Supported output file formats: console, ascii, tikz, fig" +#ifdef LSTOPO_HAVE_GRAPHICS +#ifdef CAIRO_HAS_PDF_SURFACE + ", pdf" +#endif /* CAIRO_HAS_PDF_SURFACE */ +#ifdef CAIRO_HAS_PS_SURFACE + ", ps" +#endif /* CAIRO_HAS_PS_SURFACE */ +#ifdef CAIRO_HAS_PNG_FUNCTIONS + ", png" +#endif /* CAIRO_HAS_PNG_FUNCTIONS */ +#ifdef CAIRO_HAS_SVG_SURFACE + ", svg(cairo,native)" +#endif /* CAIRO_HAS_SVG_SURFACE */ +#endif /* LSTOPO_HAVE_GRAPHICS */ +#if !(defined LSTOPO_HAVE_GRAPHICS) || !(defined CAIRO_HAS_SVG_SURFACE) + ", svg(native)" +#endif + ", xml, synthetic" + "\n"); + fprintf (where, "\nFormatting options:\n"); + fprintf (where, " -l --logical Display hwloc logical object indexes\n"); + fprintf (where, " -p --physical Display OS/physical object indexes\n"); + fprintf (where, "Output options:\n"); + fprintf (where, " --output-format \n"); + fprintf (where, " --of Force the output to use the given format\n"); + fprintf (where, " -f --force Overwrite the output file if it exists\n"); + fprintf (where, "Textual output options:\n"); + fprintf (where, " --only Only show objects of the given type in the textual output\n"); + fprintf (where, " -v --verbose Include additional details\n"); + fprintf (where, " -s --silent Reduce the amount of details to show\n"); + fprintf (where, " --distances Only show distance matrices\n"); + fprintf (where, " --distances-transform \n"); + fprintf (where, " Transform distances before displaying them\n"); + fprintf (where, " --memattrs Only show memory attributes\n"); + fprintf (where, " --cpukinds Only show CPU kinds\n"); +#ifdef HWLOC_WIN_SYS + fprintf (where, " --windows-processor-groups Only show Windows processor groups\n"); +#endif + fprintf (where, " -c --cpuset Show the cpuset of each object\n"); + fprintf (where, " -C --cpuset-only Only show the cpuset of each object\n"); + fprintf (where, " --taskset Show taskset-specific cpuset strings\n"); + fprintf (where, "Object filtering options:\n"); + fprintf (where, " --filter : Filter objects of the given type, or all.\n"); + fprintf (where, " may be `all' (keep all), `none' (remove all), `structure' or `important'\n"); + fprintf (where, " --ignore Ignore objects of the given type\n"); + fprintf (where, " --no-smt Ignore PUs\n"); + fprintf (where, " --no-caches Do not show caches\n"); + fprintf (where, " --no-useless-caches Do not show caches which do not have a hierarchical\n" + " impact\n"); + fprintf (where, " --no-icaches Do not show instruction caches\n"); + fprintf (where, " --merge Do not show levels that do not have a hierarchical\n" + " impact\n"); + fprintf (where, " --no-collapse Do not collapse identical PCI devices\n"); + fprintf (where, " --restrict [nodeset=]\n"); + fprintf (where, " Restrict the topology to some processors or NUMA nodes.\n"); + fprintf (where, " --restrict binding Restrict the topology to the current process binding\n"); + fprintf (where, " --restrict-flags Set the flags to be used during restrict\n"); + fprintf (where, " --no-io Do not show any I/O device or bridge\n"); + fprintf (where, " --no-bridges Do not any I/O bridge except hostbridges\n"); + fprintf (where, " --whole-io Show all I/O devices and bridges\n"); + fprintf (where, "Input options:\n"); + hwloc_utils_input_format_usage(where, 6); + fprintf (where, " --thissystem Assume that the input topology provides the topology\n" + " for the system on which we are running\n"); + fprintf (where, " --pid Detect topology as seen by process \n"); + fprintf (where, " --disallowed Include objects disallowed by administrative limitations\n"); + fprintf (where, " --allow Change the set of objects marked as allowed\n"); + fprintf (where, " --flags Set the topology flags\n"); + fprintf (where, "Graphical output options:\n"); + fprintf (where, " --children-order \n" + " Change the layout of Memory, I/O or Misc children\n"); + fprintf (where, " --no-factorize Do not factorize identical objects\n"); + fprintf (where, " --no-factorize= Do not factorize identical objects of type \n"); + fprintf (where, " --factorize Factorize identical objects (default)\n"); + fprintf (where, " --factorize=[,][,[,]]\n"); + fprintf (where, " Set the minimum number of objects to factorize,\n"); + fprintf (where, " the numbers of first and last to keep,\n"); + fprintf (where, " for all or only the given object type \n"); + fprintf (where, " --no-cpukinds Do not show CPU kinds\n"); + fprintf (where, " --fontsize 10 Set size of text font\n"); + fprintf (where, " --gridsize 7 Set size of margin between elements\n"); + fprintf (where, " --linespacing 4 Set spacing between lines of text\n"); + fprintf (where, " --thickness 1 Set thickness of lines and boxes\n"); + fprintf (where, " --horiz[=] Horizontal graphical layout instead of nearly 4/3 ratio\n"); + fprintf (where, " --vert[=] Vertical graphical layout instead of nearly 4/3 ratio\n"); + fprintf (where, " --rect[=] Rectangular graphical layout with nearly 4/3 ratio\n"); + fprintf (where, " --text[=] Display text for the given object types\n"); + fprintf (where, " --no-text[=] Do not display text for the given object types\n"); + fprintf (where, " --index=[] Display indexes for the given object types\n"); + fprintf (where, " --no-index=[] Do not display indexes for the given object types\n"); + fprintf (where, " --attrs=[] Display attributes for the given object types\n"); + fprintf (where, " --no-attrs=[] Do not display attributes for the given object types\n"); + fprintf (where, " --no-legend Remove all text legend lines at the bottom\n"); + fprintf (where, " --no-default-legend Remove default text legend lines at the bottom\n"); + fprintf (where, " --append-legend Append a new line of text at the bottom of the legend\n"); + fprintf (where, " --grey --palette grey Use greyscale instead of colors\n"); + fprintf (where, " --palette white Use white instead of colors for background\n"); + fprintf (where, " --palette =<#xxyyzz>\n" + " Replace the color for object of the given type\n"); + fprintf (where, " --binding-color \n" + " Disable or change binding PU and NUMA nodes color\n"); + fprintf (where, " --disallowed-color \n" + " Disable or change disallowed PU and NUMA nodes color\n"); + fprintf (where, " --top-color \n" + " Disable or change task background color for --top\n"); + fprintf (where, "Miscellaneous options:\n"); + fprintf (where, " --export-xml-flags \n" + " Set flags during the XML topology export\n"); + fprintf (where, " --export-synthetic-flags \n" + " Set flags during the synthetic topology export\n"); + /* --shmem-output-addr is undocumented on purpose */ + fprintf (where, " --ps --top Display processes within the hierarchy\n"); + fprintf (where, " --version Report version and exit\n"); + fprintf (where, " -h --help Show this usage\n"); +} + +void lstopo_show_interactive_help(void) +{ + printf("\n"); + printf("Keyboard shortcuts:\n"); + printf(" Zooming, scrolling and closing:\n"); + printf(" Zoom-in or out ...................... + -\n"); + printf(" Reset scale to default .............. 1\n"); + printf(" Try to fit scale to window .......... F\n"); + printf(" Resize window to the drawing ........ r\n"); + printf(" Toggle auto-resizing of the window .. R\n"); + printf(" Scroll vertically ................... Up Down PageUp PageDown\n"); + printf(" Scroll horizontally ................. Left Right Ctrl+PageUp/Down\n"); + printf(" Scroll to the top-left corner ....... Home\n"); + printf(" Scroll to the bottom-right corner ... End\n"); + printf(" Refresh the topology ................ F5\n"); + printf(" Show this help ...................... h H ?\n"); + printf(" Exit ................................ q Q Esc\n"); + printf(" Configuration tweaks:\n"); + printf(" Toggle factorizing or collapsing .... f\n"); + printf(" Switch display mode for indexes ..... i\n"); + printf(" Toggle displaying of object text .... t\n"); + printf(" Toggle displaying of obj attributes . a\n"); + printf(" Toggle displaying of CPU kinds ...... k\n"); + printf(" Toggle color for disallowed objects . d\n"); + printf(" Toggle color for binding objects .... b\n"); + printf(" Toggle displaying of legend lines ... l\n"); + printf(" Export to file with current config .. E\n"); + printf("\n\n"); + fflush(stdout); +} + +static void lstopo__show_interactive_cli_options(const struct lstopo_output *loutput) +{ + if (loutput->index_type == LSTOPO_INDEX_TYPE_PHYSICAL) + printf(" -p"); + else if (loutput->index_type == LSTOPO_INDEX_TYPE_LOGICAL) + printf(" -l"); + else if (loutput->index_type == LSTOPO_INDEX_TYPE_NONE) + printf(" --no-index"); + + if (!loutput->show_attrs_enabled) + printf(" --no-attrs"); + if (!loutput->show_text_enabled) + printf(" --no-text"); + + if(!loutput->factorize_enabled) + printf(" --no-factorize"); + if (!loutput->pci_collapse_enabled) + printf(" --no-collapse"); + if (!loutput->show_cpukinds) + printf(" --no-cpukinds"); + if (!loutput->show_binding) + printf(" --binding-color none"); + if (!loutput->show_disallowed) + printf(" --disallowed-color none"); + if (loutput->show_legend == LSTOPO_SHOW_LEGEND_NONE) + printf(" --no-legend"); + else if (loutput->show_legend == LSTOPO_SHOW_LEGEND_NO_DEFAULT) + printf(" --no-default-legend"); +} + +void lstopo_show_interactive_cli_options(const struct lstopo_output *loutput) +{ +#if (defined LSTOPO_HAVE_GRAPHICS) && (defined CAIRO_HAS_PDF_SURFACE) + const char *format = "PDF"; + const char *extension = "pdf"; +#else + const char *format = "SVG"; + const char *extension = "svg"; +#endif + printf("\nCommand-line options for the current configuration tweaks:\n"); + lstopo__show_interactive_cli_options(loutput); + printf("\n\nTo export to %s:\n", format); + printf(" lstopo "); + lstopo__show_interactive_cli_options(loutput); + printf(" topology.%s\n\n", extension); +} + +enum output_format { + LSTOPO_OUTPUT_DEFAULT, + LSTOPO_OUTPUT_CONSOLE, + LSTOPO_OUTPUT_SYNTHETIC, + LSTOPO_OUTPUT_ASCII, + LSTOPO_OUTPUT_TIKZ, + LSTOPO_OUTPUT_FIG, + LSTOPO_OUTPUT_PNG, + LSTOPO_OUTPUT_PDF, + LSTOPO_OUTPUT_PS, + LSTOPO_OUTPUT_SVG, + LSTOPO_OUTPUT_CAIROSVG, + LSTOPO_OUTPUT_NATIVESVG, + LSTOPO_OUTPUT_XML, + LSTOPO_OUTPUT_SHMEM, + LSTOPO_OUTPUT_ERROR +}; + +static enum output_format +parse_output_format(const char *name, char *callname __hwloc_attribute_unused) +{ + if (!hwloc_strncasecmp(name, "default", 3)) + return LSTOPO_OUTPUT_DEFAULT; + else if (!hwloc_strncasecmp(name, "console", 3)) + return LSTOPO_OUTPUT_CONSOLE; + else if (!strcasecmp(name, "synthetic")) + return LSTOPO_OUTPUT_SYNTHETIC; + else if (!strcasecmp(name, "ascii") + || !strcasecmp(name, "txt") /* backward compat with 1.10 */) + return LSTOPO_OUTPUT_ASCII; + else if (!strcasecmp(name, "tikz") || !strcasecmp(name, "tex")) + return LSTOPO_OUTPUT_TIKZ; + else if (!strcasecmp(name, "fig")) + return LSTOPO_OUTPUT_FIG; + else if (!strcasecmp(name, "png")) + return LSTOPO_OUTPUT_PNG; + else if (!strcasecmp(name, "pdf")) + return LSTOPO_OUTPUT_PDF; + else if (!strcasecmp(name, "ps")) + return LSTOPO_OUTPUT_PS; + else if (!strcasecmp(name, "svg")) + return LSTOPO_OUTPUT_SVG; + else if (!strcasecmp(name, "cairosvg") || !strcasecmp(name, "svg(cairo)")) + return LSTOPO_OUTPUT_CAIROSVG; + else if (!strcasecmp(name, "nativesvg") || !strcasecmp(name, "svg(native)")) + return LSTOPO_OUTPUT_NATIVESVG; + else if (!strcasecmp(name, "xml")) + return LSTOPO_OUTPUT_XML; + else if (!strcasecmp(name, "shmem")) + return LSTOPO_OUTPUT_SHMEM; + else + return LSTOPO_OUTPUT_ERROR; +} + +/**************************************************** + * Store filters during parsing and apply them later + */ + +struct lstopo_type_filter { enum hwloc_type_filter_e filter; int changed; }; + +/* if these assert fails, some types were added, + * assumptions in macros below must be rechecked + */ +#define init_type_filters() do { \ + unsigned _i; \ + HWLOC_BUILD_ASSERT(HWLOC_OBJ_TYPE_MIN == 0); \ + HWLOC_BUILD_ASSERT(HWLOC_OBJ_TYPE_MAX == 20); \ + for(_i=HWLOC_OBJ_TYPE_MIN; _i= 1) + { + opt = 0; + if (!strcmp (argv[0], "-v") || !strcmp (argv[0], "--verbose")) { + loutput.verbose_mode++; + } else if (!strcmp (argv[0], "-s") || !strcmp (argv[0], "--silent")) { + loutput.verbose_mode--; + } else if (!strcmp (argv[0], "--distances")) { + loutput.show_distances_only = 1; + } else if (!strcmp (argv[0], "--distances-transform")) { + if (argc < 2) + goto out_usagefailure; + if (!strcmp (argv[1], "links")) + loutput.transform_distances = HWLOC_DISTANCES_TRANSFORM_LINKS; + else if (!strcmp (argv[1], "merge-switch-ports")) + loutput.transform_distances = HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS; + else if (!strcmp (argv[1], "transitive-closure")) + loutput.transform_distances = HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE; + else { + fprintf(stderr, "Unrecognized argument `%s' passed to --distances-transform\n", argv[1]); + goto out_usagefailure; + } + opt = 1; + } else if (!strcmp (argv[0], "--memattrs")) { + loutput.show_memattrs_only = 1; + } else if (!strcmp (argv[0], "--cpukinds")) { + loutput.show_cpukinds_only = 1; +#ifdef HWLOC_WIN_SYS + } else if (!strcmp (argv[0], "--windows-processor-groups")) { + loutput.show_windows_processor_groups_only = 1; +#endif + } else if (!strcmp (argv[0], "-h") || !strcmp (argv[0], "--help")) { + usage(callname, stdout); + exit(EXIT_SUCCESS); + } else if (!strcmp (argv[0], "-f") || !strcmp (argv[0], "--force")) + loutput.overwrite = 1; + else if (!strcmp (argv[0], "-l") || !strcmp (argv[0], "--logical")) + loutput.index_type = LSTOPO_INDEX_TYPE_LOGICAL; + else if (!strcmp (argv[0], "-p") || !strcmp (argv[0], "--physical")) + loutput.index_type = LSTOPO_INDEX_TYPE_PHYSICAL; + else if (!strcmp (argv[0], "-c") || !strcmp (argv[0], "--cpuset")) + loutput.show_cpuset = 1; + else if (!strcmp (argv[0], "-C") || !strcmp (argv[0], "--cpuset-only")) + loutput.show_cpuset = 2; + else if (!strcmp (argv[0], "--taskset")) { + loutput.show_taskset = 1; + if (!loutput.show_cpuset) + loutput.show_cpuset = 1; + } else if (!strcmp (argv[0], "--only")) { + if (argc < 2) + goto out_usagefailure; + if (hwloc_type_sscanf(argv[1], &loutput.show_only, NULL, 0) < 0) + fprintf(stderr, "Unsupported type `%s' passed to --only, ignoring.\n", argv[1]); + opt = 1; + } + else if (!strcmp (argv[0], "--filter")) { + hwloc_obj_type_t type = HWLOC_OBJ_TYPE_NONE; + char *colon; + enum hwloc_type_filter_e filter = HWLOC_TYPE_FILTER_KEEP_ALL; + int all = 0; + int allio = 0; + int allcaches = 0; + int allicaches = 0; + if (argc < 2) + goto out_usagefailure; + colon = strchr(argv[1], ':'); + if (colon) { + *colon = '\0'; + if (!strcmp(colon+1, "none")) + filter = HWLOC_TYPE_FILTER_KEEP_NONE; + else if (!strcmp(colon+1, "all")) + filter = HWLOC_TYPE_FILTER_KEEP_ALL; + else if (!strcmp(colon+1, "structure")) + filter = HWLOC_TYPE_FILTER_KEEP_STRUCTURE; + else if (!strcmp(colon+1, "important")) + filter = HWLOC_TYPE_FILTER_KEEP_IMPORTANT; + else { + fprintf(stderr, "Unsupported filtering kind `%s' passed to --filter.\n", colon+1); + goto out_usagefailure; + } + } + if (!strcmp(argv[1], "all")) + all = 1; + else if (!strcmp(argv[1], "io")) + allio = 1; + else if (!strcmp(argv[1], "cache")) + allcaches = 1; + else if (!strcmp(argv[1], "icache")) + allicaches = 1; + else if (hwloc_type_sscanf(argv[1], &type, NULL, 0) < 0) { + fprintf(stderr, "Unsupported type `%s' passed to --filter.\n", argv[1]); + goto out_usagefailure; + } + if (type == HWLOC_OBJ_PU) { + if (filter == HWLOC_TYPE_FILTER_KEEP_NONE) + loutput.ignore_pus = 1; + } + else if (type == HWLOC_OBJ_NUMANODE) { + if (filter == HWLOC_TYPE_FILTER_KEEP_NONE) + loutput.ignore_numanodes = 1; + } + else if (all) + set_all_types_filter(filter); + else if (allio) + set_io_types_filter(filter); + else if (allcaches) { + set_cache_types_filter(filter); + set_type_filter(HWLOC_OBJ_MEMCACHE, filter); + } else if (allicaches) + set_icache_types_filter(filter); + else + set_type_filter(type, filter); + opt = 1; + } + else if (!strcmp (argv[0], "--ignore")) { + hwloc_obj_type_t type; + if (argc < 2) + goto out_usagefailure; + if (!strcasecmp(argv[1], "cache")) { + fprintf(stderr, "--ignore Cache not supported anymore, use --no-caches instead.\n"); + goto out_usagefailure; + } + if (hwloc_type_sscanf(argv[1], &type, NULL, 0) < 0) + fprintf(stderr, "Unsupported type `%s' passed to --ignore, ignoring.\n", argv[1]); + else if (type == HWLOC_OBJ_PU) + loutput.ignore_pus = 1; + else if (type == HWLOC_OBJ_NUMANODE) + loutput.ignore_numanodes = 1; + else + set_type_filter(type, HWLOC_TYPE_FILTER_KEEP_NONE); + opt = 1; + } + else if (!strcmp (argv[0], "--no-smt")) { + loutput.ignore_pus = 1; + } + else if (!strcmp (argv[0], "--no-caches")) { + set_cache_types_filter(HWLOC_TYPE_FILTER_KEEP_NONE); + set_type_filter(HWLOC_OBJ_MEMCACHE, HWLOC_TYPE_FILTER_KEEP_NONE); + } + else if (!strcmp (argv[0], "--no-useless-caches")) { + set_cache_types_filter(HWLOC_TYPE_FILTER_KEEP_STRUCTURE); + set_type_filter(HWLOC_OBJ_MEMCACHE, HWLOC_TYPE_FILTER_KEEP_STRUCTURE); + } + else if (!strcmp (argv[0], "--no-icaches")) { + set_icache_types_filter(HWLOC_TYPE_FILTER_KEEP_NONE); + } + else if (!strcmp (argv[0], "--disallowed") || !strcmp (argv[0], "--whole-system")) + flags |= HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED; + else if (!strcmp (argv[0], "--allow")) { + if (argc < 2) + goto out_usagefailure; + if (!strcmp(argv[1], "all")) { + allow_flags = HWLOC_ALLOW_FLAG_ALL; + } else if (!strcmp(argv[1], "local")) { + allow_flags = HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS; + flags |= HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM; + } else { + hwloc_bitmap_t set = hwloc_bitmap_alloc(); + const char *begin = argv[1]; + if (!strncmp(begin, "nodeset=", 8)) + begin += 8; + hwloc_bitmap_sscanf(set, begin); + if (begin == argv[1]) + allow_cpuset = set; + else + allow_nodeset = set; + allow_flags = HWLOC_ALLOW_FLAG_CUSTOM; + } + opt = 1; + flags |= HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED; + + } else if (!strcmp (argv[0], "--no-io")) { + set_io_types_filter(HWLOC_TYPE_FILTER_KEEP_NONE); + } else if (!strcmp (argv[0], "--no-bridges")) { + set_type_filter(HWLOC_OBJ_BRIDGE, HWLOC_TYPE_FILTER_KEEP_NONE); + } else if (!strcmp (argv[0], "--whole-io")) { + set_io_types_filter(HWLOC_TYPE_FILTER_KEEP_ALL); + } else if (!strcmp (argv[0], "--merge")) { + set_all_types_filter(HWLOC_TYPE_FILTER_KEEP_STRUCTURE); + } + else if (!strcmp (argv[0], "--no-collapse")) + loutput.pci_collapse_enabled = 0; + + else if (!strcmp (argv[0], "--no-factorize")) { + for(i=HWLOC_OBJ_TYPE_MIN; ibinding, strtoul(argv[1]+1, NULL, 16)); + else + fprintf(stderr, "Unsupported color `%s' passed to %s, ignoring.\n", argv[1], argv[0]); + opt = 1; + } + else if (!strcmp (argv[0], "--disallowed-color")) { + if (argc < 2) + goto out_usagefailure; + if (!strcmp(argv[1], "none")) + loutput.show_disallowed = 0; + else if (*argv[1] == '#') + lstopo_palette_set_color(&loutput.palette->disallowed, strtoul(argv[1]+1, NULL, 16)); + else + fprintf(stderr, "Unsupported color `%s' passed to %s, ignoring.\n", argv[1], argv[0]); + opt = 1; + } + else if (!strcmp (argv[0], "--top-color")) { + if (argc < 2) + goto out_usagefailure; + if (!strcmp(argv[1], "none")) + loutput.show_process_color = 0; + else if (*argv[1] == '#') + lstopo_palette_set_color(&loutput.palette->process, strtoul(argv[1]+1, NULL, 16)); + else + fprintf(stderr, "Unsupported color `%s' passed to %s, ignoring.\n", argv[1], argv[0]); + opt = 1; + } + else if (!strncmp (argv[0], "--no-text", 9) + || !strncmp (argv[0], "--text", 6) + || !strncmp (argv[0], "--no-index", 10) + || !strncmp (argv[0], "--index", 7) + || !strncmp (argv[0], "--no-attrs", 10) + || !strncmp (argv[0], "--attrs", 7)) { + int enable = argv[0][2] != 'n'; + const char *kind = enable ? argv[0]+2 : argv[0]+5; + const char *end; + int *array; + if (*kind == 't') { + array = loutput.show_text; + end = kind+4; + } else if (*kind == 'a') { + array = loutput.show_attrs; + end = kind+5; + } else if (*kind == 'i') { + array = loutput.show_indexes; + end = kind+5; + } else { + abort(); + } + if (!*end) { + for(i=HWLOC_OBJ_TYPE_MIN; i 1, callname); + if (err) + goto out_with_topology; + + if (input_format != HWLOC_UTILS_INPUT_DEFAULT) { + /* add the input path to the window title */ + snprintf(loutput.title, sizeof(loutput.title), "lstopo - %s", input); + +#ifndef HWLOC_WIN_SYS + /* try to only add the last part of the input path to the window title. + * disabled on windows because it requires to deal with / or \ in both cygwin and native paths. + * looks like _fullpath() is good way to replace realpath() on !cygwin. + */ + /* sanitize the path to avoid / ./ or ../ at the end */ + char *fullpath = realpath(input, NULL); + if (fullpath) { + char *pos = strrchr(fullpath, '/'); + /* now only keep the last part */ + if (pos) + pos++; + else + pos = fullpath; + snprintf(loutput.title, sizeof(loutput.title), "lstopo - %s", pos); + free(fullpath); + } +#endif + } + } + + if (loutput.pid_number > 0) { + if (hwloc_pid_from_number(&loutput.pid, loutput.pid_number, 0, 1 /* verbose */) < 0 + || hwloc_topology_set_pid(topology, loutput.pid)) { + perror("Setting target pid"); + goto out_with_topology; + } + } + + if (input_format == HWLOC_UTILS_INPUT_XML + && output_format == LSTOPO_OUTPUT_XML) { + /* must be after parsing output format and before loading the topology */ + putenv((char *) "HWLOC_XML_USERDATA_NOT_DECODED=1"); + hwloc_topology_set_userdata_import_callback(topology, hwloc_utils_userdata_import_cb); + hwloc_topology_set_userdata_export_callback(topology, hwloc_utils_userdata_export_cb); + } + + apply_type_filters(topology); + + /********************* + * Build the topology + */ + +#ifdef HAVE_CLOCK_GETTIME + if (measure_load_time) + clock_gettime(CLOCK_MONOTONIC, &ts1); +#endif + + if (input_format == HWLOC_UTILS_INPUT_SHMEM) { +#ifdef HWLOC_WIN_SYS + fprintf(stderr, "shmem topology not supported\n"); /* this line must match the grep line in test-lstopo-shmem */ + goto out_with_topology; +#else /* !HWLOC_WIN_SYS */ + /* load from shmem, and duplicate onto topology, so that we may modify it */ + hwloc_topology_destroy(topology); + err = lstopo_shmem_adopt(input, &topology); + if (err < 0) + goto out; + hwloc_utils_userdata_clear_recursive(hwloc_get_root_obj(topology)); +#endif /* !HWLOC_WIN_SYS */ + + } else { + /* normal load */ + err = hwloc_topology_load (topology); + if (err) { + fprintf(stderr, "hwloc_topology_load() failed (%s).\n", strerror(errno)); + goto out_with_topology; + } + } + +#ifdef HAVE_CLOCK_GETTIME + if (measure_load_time) { + clock_gettime(CLOCK_MONOTONIC, &ts2); + ms = (ts2.tv_nsec-ts1.tv_nsec)/1000000+(ts2.tv_sec-ts1.tv_sec)*1000UL; + printf("hwloc_topology_load() took %lu ms\n", ms); + } +#endif + + /******************************** + * Tweak the topology and output + */ + + if (allow_flags) { + if (allow_flags == HWLOC_ALLOW_FLAG_CUSTOM) { + err = hwloc_topology_allow(topology, allow_cpuset, allow_nodeset, HWLOC_ALLOW_FLAG_CUSTOM); + } else { + err = hwloc_topology_allow(topology, NULL, NULL, allow_flags); + } + if (err < 0) { + fprintf(stderr, "hwloc_topology_allow() failed (%s)\n", strerror(errno)); + goto out_with_topology; + } + } + + hwloc_bitmap_fill(loutput.cpubind_set); + if (loutput.pid_number != -1 && loutput.pid_number != 0) + hwloc_get_proc_cpubind(topology, loutput.pid, loutput.cpubind_set, 0); + else + /* get our binding even if --pid not given, it may be used by --restrict */ + hwloc_get_cpubind(topology, loutput.cpubind_set, 0); + + hwloc_bitmap_fill(loutput.membind_set); + if (loutput.pid_number != -1 && loutput.pid_number != 0) + hwloc_get_proc_membind(topology, loutput.pid, loutput.membind_set, &policy, HWLOC_MEMBIND_BYNODESET); + else + /* get our binding even if --pid not given, it may be used by --restrict */ + hwloc_get_membind(topology, loutput.membind_set, &policy, HWLOC_MEMBIND_BYNODESET); + + loutput.need_pci_domain = lstopo_check_pci_domains(topology); + + if (top) + add_process_objects(topology); + + if (restrictstring) { + hwloc_bitmap_t restrictset = hwloc_bitmap_alloc(); + if (!strcmp (restrictstring, "binding")) { + hwloc_bitmap_copy(restrictset, loutput.cpubind_set); + } else { + hwloc_bitmap_sscanf(restrictset, restrictstring); + } + err = hwloc_topology_restrict (topology, restrictset, restrict_flags); + if (err) { + perror("Restricting the topology"); + /* FALLTHRU */ + } + hwloc_bitmap_free(restrictset); + free(restrictstring); + } + + loutput.topology = topology; + loutput.depth = hwloc_topology_get_depth(topology); + loutput.file = NULL; + + if (output_format != LSTOPO_OUTPUT_XML) { + /* there might be some xml-imported userdata in objects, add lstopo-specific userdata in front of them */ + lstopo_populate_userdata(hwloc_get_root_obj(topology)); + lstopo_add_cpukind_style(&loutput, topology); + /* cpukinds must be before factorizing */ + lstopo_add_factorized_attributes(&loutput, topology, hwloc_get_root_obj(topology)); + lstopo_add_collapse_attributes(topology); + } + + /****************** + * Output for real + */ + err = output_func(&loutput, filename); + + if (output_format != LSTOPO_OUTPUT_XML) { + /* remove lstopo-specific userdata in front of the list of userdata */ + lstopo_destroy_userdata(hwloc_get_root_obj(topology)); + } + /* remove the remaining lists of xml-imported userdata */ + hwloc_utils_userdata_free_recursive(hwloc_get_root_obj(topology)); + + hwloc_topology_destroy (topology); + + if (loutput.needs_topology_refresh) { + loutput.refreshing = 1; + goto refresh; + } + + for(i=0; iarity must be strictly higher) */ +#define FACTORIZE_MIN_DEFAULT 4 +#define FACTORIZE_MIN_DISABLED UINT_MAX + unsigned factorize_first[HWLOC_OBJ_TYPE_MAX]; /* number of first children to keep before factorizing */ + unsigned factorize_last[HWLOC_OBJ_TYPE_MAX]; /* number of last children to keep after factorizing */ + struct lstopo_color_palette *palette; + + /* draw internal data */ + void *backend_data; +#define LSTOPO_BACKEND_FLAG_NO_HALF_LINES (1UL<<0) /* ASCII backend cannot draw lines between grid lines */ +#define LSTOPO_BACKEND_FLAG_APPROXIMATIVE_TEXTWIDTH (1UL<<1) /* Tikz and fig backends cannot measure text width precisely */ + unsigned long backend_flags; + struct draw_methods *methods; + enum lstopo_drawing_e drawing; + unsigned width, height; /* total output size */ +}; + +struct lstopo_color { + /* these variables must be initialized before passing the structure to declare_color() */ + int r, g, b; + int free; /* 1 if lstopo should free() this structure at exit */ + + /* these variable are initialized by declare_color() */ + /* backend specific private data */ + union lstopo_color_private_u { + struct lstopo_color_private_ascii_s { + int color; + } ascii; + struct lstopo_color_private_fig_s { + int color; + } fig; +#ifdef HWLOC_WIN_SYS + struct lstopo_color_private_windows_s { + HGDIOBJ brush; + COLORREF color; + } windows; +#endif + } private; + /* list of colors */ + struct lstopo_color *next; +}; + +struct lstopo_color_palette { + struct lstopo_color + white, /* used for legend background, and text on dark background */ + black, /* used for text on light background, and legend text */ + /* all colors below are box backgrounds */ + machine, + group, + package, + group_in_package, + die, + core, + pu, + numanode, + memories, + cache, + pcidev, + osdev, + bridge, + misc, + binding, + disallowed, + process; +}; + +extern void lstopo_palette_init(struct lstopo_output *loutput); +extern void lstopo_palette_select(struct lstopo_output *loutput, const char *name); +extern void lstopo_palette_set_color(struct lstopo_color *color, unsigned rrggbb); +extern void lstopo_palette_set_color_by_name(struct lstopo_output *output, const char *name, unsigned rrggbb); + +struct lstopo_style { + struct lstopo_color + *bg, /* main box background color */ + *t, /* main text color */ + *t2; /* other text color */ +}; + +#define LSTOPO_CHILD_KIND_NORMAL 0x1 +#define LSTOPO_CHILD_KIND_MEMORY 0x2 +#define LSTOPO_CHILD_KIND_IO 0x4 +#define LSTOPO_CHILD_KIND_MISC 0x8 +#define LSTOPO_CHILD_KIND_ALL 0xf + +struct lstopo_obj_userdata { + /* original common userdata (we replace the first one with this extended structure) */ + struct hwloc_utils_userdata common; + + /* PCI collapsing */ + int pci_collapsed; /* 0 if no collapsing, -1 if collapsed with a previous one, >1 if collapsed with several next */ + int factorized; /* 0 if no factorizing, -1 if hidden, 1 if replaced with dots */ + + /* custom style */ + struct lstopo_style style; +#define LSTOPO_STYLE_BG 0x1 +#define LSTOPO_STYLE_T 0x2 +#define LSTOPO_STYLE_T2 0x4 + unsigned style_set; /* OR'ed LSTOPO_STYLE_* */ + + /* PU style for CPU kind, 0 for normal style */ + unsigned cpukind_style; + + /* object size (including children if they are outside of it, not including borders) */ + unsigned width; + unsigned height; + + /* a child position is: its parent position + parent->children_*rel + child->*rel */ + /* relative position of first child with respect to top-left corner of this object */ + struct lstopo_children_position { + unsigned kinds; + unsigned width; + unsigned height; + unsigned xrel; + unsigned yrel; + unsigned box; + struct lstopo_color *boxcolor; + } children; + /* if memory is displayed separately above normal children */ + struct lstopo_children_position above_children; + /* if I/O and/or Misc are displayed separately on the right */ + struct lstopo_children_position right_children; + /* if I/O and/or Misc are displayed separately below */ + struct lstopo_children_position below_children; + + /* relative position of this object within its parent children zone */ + unsigned xrel; + unsigned yrel; + + /* internal offset for factorized_draw */ + unsigned internal_xoffset; + + /* text lines within object */ +#define LSTOPO_OBJ_TEXT_MAX 4 /* current max number of lines is osdev name + 3 cuda attributes */ + struct lstopo_text_line { + char text[128]; + unsigned width; + unsigned xoffset; + } text[LSTOPO_OBJ_TEXT_MAX]; + unsigned ntext; + unsigned textwidth; /* required width for all lines of text, + * max of above text[].width + optional padding + */ +}; + +static __hwloc_inline unsigned +lstopo_obj_cpukind_style(struct lstopo_output *loutput, hwloc_obj_t obj) +{ + if (loutput->show_cpukinds) { + if (obj && obj->userdata) { + struct lstopo_obj_userdata *ou = obj->userdata; + return ou->cpukind_style; + } + } + return 0; +} + +#define CPUKIND_STYLE(_loutput, _obj) (((_loutput)->show_cpukinds && (_obj != NULL)) ? (_obj)->cpukind_style : 0) + +typedef int output_method (struct lstopo_output *output, const char *filename); +extern output_method output_console, output_synthetic, output_ascii, output_tikz, output_fig, output_png, output_pdf, output_ps, output_nativesvg, output_cairosvg, output_x11, output_windows, output_xml, output_android, output_shmem; + +extern int lstopo_shmem_adopt(const char *input, hwloc_topology_t *topologyp); + +struct draw_methods { + int (*declare_color) (struct lstopo_output *loutput, struct lstopo_color *lcolor); + void (*destroy_color) (struct lstopo_output *loutput, struct lstopo_color *lcolor); + /* only called when loutput->draw_methods == LSTOPO_DRAWING_DRAW */ + void (*box) (struct lstopo_output *loutput, const struct lstopo_color *lcolor, unsigned depth, unsigned x, unsigned width, unsigned y, unsigned height, hwloc_obj_t obj, unsigned box_id); + void (*line) (struct lstopo_output *loutput, unsigned depth, unsigned x1, unsigned y1, unsigned x2, unsigned y2, hwloc_obj_t obj, unsigned line_id); + void (*text) (struct lstopo_output *loutput, const struct lstopo_color *lcolor, int size, unsigned depth, unsigned x, unsigned y, const char *text, hwloc_obj_t obj, unsigned text_id); + /* may be called when loutput->drawing == LSTOPO_DRAWING_PREPARE */ + void (*textsize) (struct lstopo_output *loutput, const char *text, unsigned textlength, unsigned fontsize, unsigned *width); +}; + +extern void output_draw(struct lstopo_output *output); + +extern void lstopo_prepare_custom_styles(struct lstopo_output *loutput); +extern void declare_colors(struct lstopo_output *output); +extern void destroy_colors(struct lstopo_output *output); + +static __hwloc_inline int lstopo_pu_disallowed(struct lstopo_output *loutput, hwloc_obj_t l) +{ + hwloc_topology_t topology = loutput->topology; + return !hwloc_bitmap_isset(hwloc_topology_get_allowed_cpuset(topology), l->os_index); +} + +static __hwloc_inline int lstopo_pu_binding(struct lstopo_output *loutput, hwloc_obj_t l) +{ + return loutput->pid_number != -1 && hwloc_bitmap_isset(loutput->cpubind_set, l->os_index); +} + +static __hwloc_inline int lstopo_numa_disallowed(struct lstopo_output *loutput, hwloc_obj_t l) +{ + hwloc_topology_t topology = loutput->topology; + return !hwloc_bitmap_isset(hwloc_topology_get_allowed_nodeset(topology), l->os_index); +} + +static __hwloc_inline int lstopo_numa_binding(struct lstopo_output *loutput, hwloc_obj_t l) +{ + return loutput->pid_number != -1 && hwloc_bitmap_isset(loutput->membind_set, l->os_index); +} + +static __hwloc_inline int lstopo_busid_snprintf(struct lstopo_output *loutput, char *text, size_t textlen, hwloc_obj_t firstobj, int collapse, unsigned needdomain) +{ + hwloc_obj_t lastobj; + char domain[10] = ""; + unsigned i; + + if (needdomain) + snprintf(domain, sizeof(domain), "%04x:", firstobj->attr->pcidev.domain); + + /* single busid */ + if (!loutput->pci_collapse_enabled || collapse <= 1) { + return snprintf(text, textlen, "%s%02x:%02x.%01x", + domain, + firstobj->attr->pcidev.bus, + firstobj->attr->pcidev.dev, + firstobj->attr->pcidev.func); + } + + assert(collapse >= 0); /* should be called on the first object of a collapsed range */ + + for(lastobj=firstobj, i=1; i<(unsigned)collapse; i++) + lastobj = lastobj->next_cousin; + + /* multiple busid functions for same busid device */ + if (firstobj->attr->pcidev.dev == lastobj->attr->pcidev.dev) + return snprintf(text, textlen, "%s%02x:%02x.%01x-%01x", + domain, + firstobj->attr->pcidev.bus, + firstobj->attr->pcidev.dev, + firstobj->attr->pcidev.func, + lastobj->attr->pcidev.func); + + /* multiple busid devices */ + return snprintf(text, textlen, "%s%02x:%02x.%01x-%02x.%01x", + domain, + firstobj->attr->pcidev.bus, + firstobj->attr->pcidev.dev, + firstobj->attr->pcidev.func, + lastobj->attr->pcidev.dev, + lastobj->attr->pcidev.func); +} + +extern void lstopo_show_interactive_cli_options(const struct lstopo_output *loutput); +extern void lstopo_show_interactive_help(void); + +#endif /* UTILS_LSTOPO_H */ diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo-shmem.sh.in b/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo-shmem.sh.in new file mode 100644 index 0000000000..afdf723b1e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo-shmem.sh.in @@ -0,0 +1,60 @@ +#!/bin/sh +#-*-sh-*- + +# Copyright © 2009-2020 Inria. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_builddir="@HWLOC_top_builddir@" +builddir="$HWLOC_top_builddir/utils/lstopo" +ls="$builddir/lstopo-no-graphics" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +echo "Outputs will be sent to $tmp" + +unset DISPLAY + +echo "Exporting to $tmp/test.shmem ..." +$ls $tmp/test.shmem > $tmp/test.shmem.out 2> $tmp/test.shmem.err +return=$? +cat $tmp/test.shmem.out $tmp/test.shmem.err +if test $return != 0; then + if grep "shmem topology not supported" $tmp/test.shmem.err >/dev/null \ + || grep "Failed to find a shmem topology mmap address" $tmp/test.shmem.err >/dev/null \ + || grep "Failed to export shmem topology, memory range is busy" $tmp/test.shmem.err >/dev/null; then + echo "Expected error during export, skipping this test" + exit 77 + fi + echo "Failed" + exit 1 +fi + +echo "Importing from $tmp/test.shmem ..." +$ls -i $tmp/test.shmem - > $tmp/test.shmem.out2 2> $tmp/test.shmem.err2 +return=$? +cat $tmp/test.shmem.out2 $tmp/test.shmem.err2 +if test $return != 0; then + if grep "Failed to adopt shmem topology, memory range is busy" $tmp/test.shmem.err2 >/dev/null; then + echo "Expected error during import, skipping this test" + exit 77 + fi + echo "Failed" + exit 1 +fi + +rm -rf "$tmp" diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo.output b/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo.output new file mode 100644 index 0000000000..d317c9431d --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo.output @@ -0,0 +1,227 @@ +** Default output... +Machine (2048MB total) + Package L#0 + Core L#0 + NUMANode L#0 (P#0 1024MB) + L2 L#0 (4096KB) + PU L#0 (P#0) + PU L#1 (P#1) + L2 L#1 (4096KB) + PU L#2 (P#2) + PU L#3 (P#3) + Core L#1 + NUMANode L#1 (P#1 1024MB) + L2 L#2 (4096KB) + PU L#4 (P#4) + PU L#5 (P#5) + L2 L#3 (4096KB) + PU L#6 (P#6) + PU L#7 (P#7) +** OS-index output merged... +Machine (2048MB total) + Core P#0 + NUMANode P#0 (1024MB) + L2 (4096KB) + PU P#0 + PU P#1 + L2 (4096KB) + PU P#2 + PU P#3 + Core P#1 + NUMANode P#1 (1024MB) + L2 (4096KB) + PU P#4 + PU P#5 + L2 (4096KB) + PU P#6 + PU P#7 +** Logical-index verbose output... +assuming `pa:1 no:2 co:1 l2:2 2' is a synthetic topology description +Machine (total=2097152KB Backend=Synthetic SyntheticDescription="pa:1 no:2 co:1 l2:2 2") + Package L#0 (total=2097152KB) + Core L#0 (total=1048576KB) + NUMANode L#0 (local=1048576KB total=1048576KB) + L2Cache L#0 (size=4096KB linesize=64) + PU L#0 + PU L#1 + L2Cache L#1 (size=4096KB linesize=64) + PU L#2 + PU L#3 + Core L#1 (total=1048576KB) + NUMANode L#1 (local=1048576KB total=1048576KB) + L2Cache L#2 (size=4096KB linesize=64) + PU L#4 + PU L#5 + L2Cache L#3 (size=4096KB linesize=64) + PU L#6 + PU L#7 +depth 0: 1 Machine (type #0) + depth 1: 1 Package (type #1) + depth 2: 2 Core (type #2) + depth 3: 4 L2Cache (type #5) + depth 4: 8 PU (type #3) +Special depth -3: 2 NUMANode (type #13) +Memory attribute #0 name `Capacity' flags 1 + NUMANode L#0 = 1073741824 + NUMANode L#1 = 1073741824 +Memory attribute #1 name `Locality' flags 2 + NUMANode L#0 = 4 + NUMANode L#1 = 4 +Memory attribute #2 name `Bandwidth' flags 5 +Memory attribute #3 name `Latency' flags 6 +Topology not from this system +** Export to synthetic... +Package:1 Core:2 [NUMANode(memory=1073741824)] L2Cache:2(size=4194304) PU:2 +** Export to XML after changing disallowed... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +** Restrict flag cpuless... +Machine (1024MB total) + NUMANode L#0 (P#1 1024MB) + PU L#0 (P#4) + PU L#1 (P#5) + PU L#2 (P#6) + PU L#3 (P#7) +** Restrict flag t$,memless... +Machine (2048MB total) + Group0 L#0 + NUMANode L#0 (P#0 1024MB) + PU L#0 (P#0) + PU L#1 (P#1) + PU L#2 (P#2) + PU L#3 (P#3) + Group0 L#1 + NUMANode L#1 (P#1 1024MB) + PU L#4 (P#4) + PU L#5 (P#5) + PU L#6 (P#6) + PU L#7 (P#7) +** Restrict flag none... +Machine (4096MB total) + Group0 L#0 + NUMANode L#0 (P#0 1024MB) + PU L#0 (P#0) + PU L#1 (P#1) + Group0 L#1 + NUMANode L#1 (P#3 1024MB) + Group0 L#2 + NUMANode L#2 (P#2 1024MB) + Group0 L#3 + NUMANode L#3 (P#1 1024MB) +** Export synthetic flag extended,attrs,v1... +Group:4 NUMANode:1 PU:4 +** Export XML flag v1... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +** Topology flag disallowed... +assuming `node:4 pu:4' is a synthetic topology description +Machine (P#0 total=4194304KB Backend=Synthetic SyntheticDescription="node:4 pu:4") + Group0 L#0 (total=1048576KB) + NUMANode L#0 (P#0 local=1048576KB total=1048576KB) + PU L#0 (P#0) + PU L#1 (P#1) + PU L#2 (P#2) + PU L#3 (P#3) + Group0 L#1 (total=1048576KB) + NUMANode L#1 (P#1 local=1048576KB total=1048576KB) + PU L#4 (P#4) (disallowed) + PU L#5 (P#5) (disallowed) + PU L#6 (P#6) (disallowed) + PU L#7 (P#7) (disallowed) + Group0 L#2 (total=1048576KB) + NUMANode L#2 (P#2 local=1048576KB total=1048576KB) + PU L#8 (P#8) (disallowed) + PU L#9 (P#9) (disallowed) + PU L#10 (P#10) (disallowed) + PU L#11 (P#11) (disallowed) + Group0 L#3 (total=1048576KB) + NUMANode L#3 (P#3 local=1048576KB total=1048576KB) + PU L#12 (P#12) (disallowed) + PU L#13 (P#13) (disallowed) + PU L#14 (P#14) (disallowed) + PU L#15 (P#15) (disallowed) +depth 0: 1 Machine (type #0) + depth 1: 4 Group0 (type #12) + depth 2: 16 PU (type #3) +Special depth -3: 4 NUMANode (type #13) +12 processors represented but not allowed: 0x0000fff0 +Topology not from this system diff --git a/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo.sh.in b/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo.sh.in new file mode 100644 index 0000000000..5c85dc0519 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/lstopo/test-lstopo.sh.in @@ -0,0 +1,132 @@ +#!/bin/sh +#-*-sh-*- + +# +# Copyright © 2009 CNRS +# Copyright © 2009-2020 Inria. All rights reserved. +# Copyright © 2009, 2011 Université Bordeaux +# Copyright © 2020 Hewlett Packard Enterprise. All rights reserved. +# See COPYING in top-level directory. +# + +HWLOC_top_srcdir="@HWLOC_top_srcdir@" +HWLOC_top_builddir="@HWLOC_top_builddir@" +srcdir="$HWLOC_top_srcdir/utils/lstopo" +builddir="$HWLOC_top_builddir/utils/lstopo" +ls="$builddir/lstopo-no-graphics" + +HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs +export HWLOC_PLUGINS_PATH + +HWLOC_DEBUG_CHECK=1 +export HWLOC_DEBUG_CHECK + +HWLOC_DONT_ADD_VERSION_INFO=1 +export HWLOC_DONT_ADD_VERSION_INFO + +: ${TMPDIR=/tmp} +{ + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +} || { + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || exit $? +echo "Outputs will be sent to $tmp" + +unset DISPLAY + +set -e + +echo "**** Export once here to see what the platform looks like:" +$ls - + +echo "**** Check that we don't crash for the local topology (we can't check the exact output):" +echo "** Textual output in $tmp/test.console ..." +$ls - > $tmp/test.console +echo "** Verbose in $tmp/test.console_verbose ..." +$ls -v > $tmp/test.console_verbose +echo "** Verbose with cpusets in $tmp/test.cpuset_verbose ..." +$ls -c -v > $tmp/test.cpuset_verbose +echo "** Verbose with taskset sets in $tmp/test.taskset ..." +$ls --taskset -v > $tmp/test.taskset + +echo "** Merged topology in $tmp/test.merge ..." +$ls --merge > $tmp/test.merge +echo "** Without any filtering in $tmp/test.filternone ..." +$ls --filter all:none > $tmp/test.filternone +echo "** With everything filtered out in $tmp/test.filterall ..." +$ls --filter all:all > $tmp/test.filterall + +echo "** Without I/O in $tmp/test.no-io ..." +$ls --no-io > $tmp/test.no-io +echo "** Without bridges in $tmp/test.no-bridges ..." +$ls --no-bridges > $tmp/test.no-bridges +echo "** With all I/Os in $tmp/test.whole-io ..." +$ls --whole-io > $tmp/test.whole-io +echo "** Verbose with all I/Os in $tmp/test.wholeio_verbose ..." +$ls -v --whole-io > $tmp/test.wholeio_verbose + +echo "** With disallowed objects in $tmp/test.disallowed ..." +$ls --disallowed > $tmp/test.disallowed +echo "** With --top in $tmp/test.top ..." +$ls --top > $tmp/test.top + +echo "** ASCII output in $tmp/test.ascii ..." +$ls $tmp/test.ascii + +echo "** LaTeX Tikzpicture output in $tmp/test.tikz ..." +$ls $tmp/test.tikz +echo "** LaTeX Tikzpicture output in $tmp/test.tex ..." +$ls $tmp/test.tex +if [ -n "$PDFLATEX" ]; then + echo "** Test validity of the generated LaTeX output from $tmp/test.tikz ..." + (cd $tmp && $PDFLATEX test.tikz && $PDFLATEX test.tex) +fi + +echo "** FIG output in $tmp/test.fig ..." +$ls $tmp/test.fig +echo "** Native SVG output in $tmp/test.nativesvg ..." +$ls $tmp/test.nativesvg +echo "** (Native by default) SVG output in $tmp/test.svg ..." +$ls $tmp/test.svg + +echo "** XML output in $tmp/test.xml ..." +$ls $tmp/test.xml +echo "** Minimalistic XML output in $tmp/test.mini.xml ..." +HWLOC_LIBXML_EXPORT=0 $ls $tmp/test.mini.xml +echo "** XMLv1 output in $tmp/test.v1.xml ..." +$ls --export-xml-flags 1 $tmp/test.v1.xml + +file="$tmp/test-lstopo.output" +echo "**** Import from synthetic so that we can check some exact outputs in $file ..." +( + SI="pa:1 no:2 co:1 l2:2 2" + echo "** Default output..." + $ls -i "$SI" - + echo "** OS-index output merged..." + $ls -i "$SI" - -p --merge + echo "** Logical-index verbose output..." + $ls -i "$SI" - -l --verbose --verbose + echo "** Export to synthetic..." + $ls -i "$SI" -.synthetic + echo "** Export to XML after changing disallowed..." + $ls -i "$SI" -.xml --allow 0x30 --allow nodeset=0x2 + echo "** Restrict flag cpuless..." + $ls -i "node:4 pu:4" --restrict 0xf0 --restrict-flags cpuless + echo "** Restrict flag t\$,memless..." + $ls -i "node:4 pu:4" --restrict 0x3 --restrict-flags t\$,memless + echo "** Restrict flag none..." + $ls -i "node:4 pu:4" --restrict 0x3 --restrict-flags none + echo "** Export synthetic flag extended,attrs,v1..." + $ls -i "node:4 pu:4" -.synthetic --export-synthetic-flags extended,attrs,v1 + echo "** Export XML flag v1..." + $ls -i "node:4 pu:4" -.xml --export-xml-flags v1 + echo "** Topology flag disallowed..." + $ls -i "node:4 pu:4" - --allow 0xf --flags disallowed -v +) > "$file" +@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-lstopo.output "$file" +rm -rf "$tmp" + diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/draw/Makefile.am b/3rd-party/hwloc-2.7.1/utils/netloc/draw/Makefile.am new file mode 100644 index 0000000000..b60790172f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/draw/Makefile.am @@ -0,0 +1,29 @@ +# Copyright © 2013-2014 Cisco Systems, Inc. All rights reserved. +# Copyright © 2013-2014 University of Wisconsin-La Crosse. +# All rights reserved. +# Copyright © 2016-2018 Inria. All rights reserved. +# +# See COPYING in top-level directory. +# +# $HEADER$ +# + +AM_CPPFLAGS = \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/include + +bin_PROGRAMS = \ + netloc_draw_to_json + +netloc_draw_to_json_SOURCES = \ + netloc_draw_to_json.c + +netloc_draw_to_json_LDADD = \ + $(top_builddir)/netloc/libnetloc.la \ + $(top_builddir)/hwloc/libhwloc.la + +dist_pkgdata_DATA = \ + netloc_draw.html \ + netloc_draw.js \ + visdist/vis.min.js \ + visdist/vis.min.css diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw.html b/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw.html new file mode 100644 index 0000000000..9beb32f40f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw.html @@ -0,0 +1,72 @@ + + + + + + + + + + + Network topology + + + + + + + + + + + + + + + +
      + +
      
      +
      +    
      +    
      +  
      +
      diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw.js b/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw.js
      new file mode 100644
      index 0000000000..a649b55481
      --- /dev/null
      +++ b/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw.js
      @@ -0,0 +1,1049 @@
      +var edges;
      +var nodes;
      +var links;
      +var shownNodes;
      +var shownEdges;
      +var partitions;
      +var mydata;
      +var topos;
      +const normalSwitchColor = {background: "grey"};
      +const normalHostColor = {background: "red"};
      +const normalEdgeColor = {color: "grey", highlight: "blue"};
      +const paletteNone = ["red"];
      +const palette9 = ["blue", "orange", "green", "pink", "brown", "purple", "yellow", "red", "gray"];
      +const palette11 = ["#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f",
      +                   "#ff7f00", "#cab2d6", "#6a3d9a", "#ffff99"];
      +var nodesWithPhysics;
      +var edgesWithPhysics;
      +var nodeBandwidthList;
      +var edgeBandwidthList;
      +var network;
      +var description = "";
      +const lastColorMode = "bandwidth";
      +
      +function filterEdge(e) {
      +    return (shownNodes.get(e.to) && shownNodes.get(e.from));
      +}
      +
      +function updateDescription() {
      +    /* update the desciption of the graph */
      +    var num_hosts = shownNodes.get({filter: function(n) {
      +        return n.type == "host";
      +    }}).length;
      +    var num_switches = shownNodes.length-num_hosts;
      +    var enabledTopos = shownNodes.distinct("topo");
      +    var shownTopos = enabledTopos.reduce(function(a, e) {
      +        if (e != -1)
      +            a.push(topos[e]);
      +        return a;
      +    }, []);
      +
      +    description =
      +        '

      Stats

      ' + + shownNodes.length + ' nodes\n' + + shownEdges.length + ' edges\n' + + num_hosts + ' hosts\n' + + num_switches + ' switches\n' + + '

      Partitions

      ' + + '
      • ' + partitions.join('
      • ') + '
      ' + + '

      Hwloc topologies

      ' + + '
      • ' + shownTopos.sort().join('
      • ') + '
      ' + + '
      '; + document.getElementById('description').innerHTML = description; +} + +function printWithTime(msg) { + if (typeof printWithTime.lastTime == 'undefined' ) { + printWithTime.lastTime = Math.floor(new Date().getTime()/1000); + } + + var time = Math.floor(new Date().getTime()/1000); + var duration = time-printWithTime.lastTime; + printWithTime.lastTime = time; + console.log(msg); + console.log(duration + "s elapsed"); +} + +function handleFileSelect(evt) { + var files = evt.target.files; + var fr = new FileReader(); + fr.onload = function(e) { + printWithTime("Starting..."); + data = e.target.result; + loadFile(data); + }; + fr.readAsText(files[0]); +} + +function renameKey(obj, newkey, oldkey) +{ + return obj.map(function(d) { d[newkey] = d[oldkey]; delete d[oldkey]; return d; }); +} + +function getNeighbours(node) +{ + return node.edges.map(function(e) { + return edges.get(e).to; + }).filter(function(n) { + return shownNodes.get(n); + }); +} + +function palette(size) { + var palette = []; + + if (!size) + return paletteNone; + + if (size <= 9) + return palette9.slice(0, size+1); + + if (size <= 11) + return palette11.slice(0, size+1); + + var v = Math.ceil(Math.pow(size+1, 1/3)); + var value = 255/v; + for( var rStep = 0, r = 0; rStep < v; rStep++) { + for( var gStep = 0, g = 0; gStep < v; gStep++ ) { + for( var bStep = 0, b = 0; bStep < v; bStep++ ) { + if (!r && !g && !b) + continue; + palette.push('rgb(' + Math.round(r) + ', ' + Math.round(g) + ', ' + + Math.round(b) + ')'); + b += value; + } + g += value; + } + r += value; + } + return palette; +} + +function loadFile(data) +{ + printWithTime("File loaded"); + mydata = JSON.parse(data); + printWithTime("JSON parsed"); + partitions = mydata.partitions; + topos = mydata.hwloctopos; + + /* Prepare UI */ + /***********************************************************************/ + /* Add elements to selectColors */ + var selectColors = document.getElementById("selectColors"); + while (selectColors.length > 1) { + selectColors.removeChild(selectColors.lastChild); + } + { + var el = document.createElement("option"); + el.textContent = "normal"; + el.value = "normal"; + selectColors.appendChild(el); + } + if (partitions.length) { + var el = document.createElement("option"); + el.textContent = "partition"; + el.value = "partition"; + selectColors.appendChild(el); + } + if (topos.length) { + var el = document.createElement("option"); + el.textContent = "hwloc"; + el.value = "hwloc"; + selectColors.appendChild(el); + } + { + var el = document.createElement("option"); + el.textContent = "bandwidth"; + el.value = "bandwidth"; + selectColors.appendChild(el); + } + { + var el = document.createElement("option"); + el.textContent = "bandwidth_check"; + el.value = "bandwidth_check"; + selectColors.appendChild(el); + } + + /* Add elements to selectPartition */ + var selectPartition = document.getElementById("selectPartition"); + while (selectPartition.length > 1) { + selectPartition.removeChild(selectPartition.lastChild); + } + var partitionOptions = partitions.slice(); + partitionOptions.unshift("All"); + partitionOptions.forEach(function(partition, i) { + var el = document.createElement("option"); + el.textContent = partition; + el.value = i-1; // because of "All" + selectPartition.appendChild(el); + }); + /***********************************************************************/ + + /* Set edges */ + /***********************************************************************/ + mydata.edges.map( + function(e) {e["label"] = Math.round(parseFloat(e["gbits"]));}); + var gbits_min = Math.min.apply(null, mydata.edges.map(function(e) { return e["gbits"];})); + mydata.edges.map( + function(e) {e["width"] = e["gbits"]/gbits_min; e["physics"] = false;}); + edges = new vis.DataSet({}); + edges.add(mydata.edges); + printWithTime("Dataset edges created"); + /***********************************************************************/ + + /* Set nodes */ + /***********************************************************************/ + mydata.nodes = renameKey(mydata.nodes, "title", "desc"); + mydata.nodes.forEach( function(n) { + n["color"] = n["type"] == "host" ? normalHostColor : normalSwitchColor; + n["bandwidth"] = + edges.get(n["edges"]).map(function(e) { if (!e) return 8; else return e.gbits; }) + .reduce(function(a, b) { return a + b; }, 0); + n["size"] = 10*Math.log(n["bandwidth"]); + n["x"] = n["y"] = 0; + if (mydata.type === "tree") { + n["fixed"] = true; + n["physics"] = true; + } + }); + nodes = new vis.DataSet({}); + nodes.add(mydata.nodes); + printWithTime("Dataset nodes created"); + /***********************************************************************/ + + /* Set links */ + /***********************************************************************/ + links = new vis.DataSet({}); + links.add(mydata.links); + printWithTime("Dataset links created"); + /***********************************************************************/ + + /* Build list of width for nodes */ + nodeBandwidthList = []; + nodes.forEach(function(n) { + if (nodeBandwidthList.indexOf(n.size) == -1) { + nodeBandwidthList.push(n.size); + } + }); + /* Build list of width for edges */ + edgeBandwidthList = []; + edges.forEach(function(e) { + if (edgeBandwidthList.indexOf(e.gbits) == -1) { + edgeBandwidthList.push(e.gbits); + } + }); +} + +function nodeColors() +{ + var e = document.getElementById("selectColors"); + var colorMode = e.options[e.selectedIndex].value; + + if (colorMode == "normal") { + shownNodes.forEach(function(n) { + if (n.type == "host") + shownNodes.update({id: n.id, color: normalHostColor}); + else + shownNodes.update({id: n.id, color: normalSwitchColor}); + }); + + if (lastColorMode == "bandwidth" || lastColorMode == "bandwidth_check") { + shownEdges.forEach(function(n) { + shownEdges.update({id: n.id, color: normalEdgeColor}); + }); + } + + } else if (colorMode == "partition") { + var nodeColors = palette(partitions.length); + shownNodes.forEach(function(n) { + if (n.type == "host") { + var colorIdx = n.part[0]; + shownNodes.update({id: n.id, color: {background: nodeColors[colorIdx]}}); + + } else + shownNodes.update({id: n.id, color: normalSwitchColor}); + }); + + if (lastColorMode == "bandwidth" || lastColorMode == "bandwidth_check") { + shownEdges.forEach(function(n) { + shownEdges.update({id: n.id, color: normalEdgeColor}); + }); + } + + } else if (colorMode == "hwloc") { + var nodeColors = palette(topos.length); + shownNodes.forEach(function(n) { + if (n.type == "host") { + var colorIdx = n.topo; + if (colorIdx != -1) { + shownNodes.update({id: n.id, color: {background: nodeColors[colorIdx]}}); + } + + } else + shownNodes.update({id: n.id, color: normalSwitchColor}); + }); + + if (lastColorMode == "bandwidth" || lastColorMode == "bandwidth_check") { + shownEdges.forEach(function(n) { + shownEdges.update({id: n.id, color: normalEdgeColor}); + }); + } + + } else if (colorMode == "bandwidth") { + var nodeColors = palette(nodeBandwidthList.length); + shownNodes.forEach(function(n) { + var colorIdx = nodeBandwidthList.indexOf(n.size); + if (colorIdx != -1) { + shownNodes.update({id: n.id, color: {background: nodeColors[colorIdx]}}); + } + }); + var edgeColors = palette(edgeBandwidthList.length); + shownEdges.forEach(function(n) { + var colorIdx = edgeBandwidthList.indexOf(n.gbits); + if (colorIdx != -1) { + shownEdges.update({id: n.id, color: {color: edgeColors[colorIdx]}}); + } + }); + + } else if (colorMode == "bandwidth_check") { + var edgeColors = palette(edgeBandwidthList.length); + shownEdges.forEach(function(n) { + var colorIdx = edgeBandwidthList.indexOf(n.gbits); + if (colorIdx != -1) { + shownEdges.update({id: n.id, color: {color: edgeColors[colorIdx]}}); + } + }); + shownNodes.forEach(function(n) { + /* Quick check about in bw = out bd */ + if (n.edges.length == 1) { + var colorIdx = edgeBandwidthList.indexOf(n.bandwidth); + shownNodes.update({id: n.id, color: {background: edgeColors[colorIdx]}}); + + } else { + var colorIdx = edgeBandwidthList.indexOf(n.bandwidth/2); + if (colorIdx != -1) { + shownNodes.update({id: n.id, color: {background: edgeColors[colorIdx]}}); + } else { + shownNodes.update({id: n.id, color: {background: "black"}}); + } + } + }); + } + lastcolorMode = colorMode; +} + +function selectNodesAndEdges(field, value) +{ + var regexp = new RegExp(value, "g"); + var nodeIds; + var nodeSet; + var edgeIds; + var edgeSet; + + switch (field) { + case "part": + var strings = partitions; + matchingStrings = strings.reduce(function(a, e, i) { + if (e.match(regexp)) + a.push(i); + return a; + }, []); + nodeSet = shownNodes.get({filter: function(n) { + for (var e = 0; e < n[field].length; e++) { + var elem = n[field][e]; + for (var f = 0; f < matchingStrings.length; f++) { + if (elem == matchingStrings[f]) + return true; + } + } + return false; + }}); + edgeSet = shownEdges.get({filter: function(n) { + for (var e = 0; e < n[field].length; e++) { + var elem = n[field][e]; + for (var f = 0; f < matchingStrings.length; f++) { + if (elem == matchingStrings[f]) + return true; + } + } + return false; + }}); + break; + case "topo": + var strings = topos; + matchingStrings = strings.reduce(function(a, e, i) { + if (e.match(regexp)) + a.push(i); + return a; + }, []); + nodeSet = shownNodes.get({filter: function(n) { + var elem = n[field]; + for (var f = 0; f < matchingStrings.length; f++) { + if (elem == matchingStrings[f]) + return true; + } + return false; + }}); + edgeSet = []; + break; + default: + nodeSet = shownNodes.get({filter: function(n) { + return n[field] ? n[field].toString().match(regexp): false; + }}); + edgeSet = shownEdges.get({filter: function(e) { + return e[field] ? e[field].toString().match(regexp): false; + }}); + } + nodeIds = nodeSet.map(function(n) { return n.id; }); + edgeIds = edgeSet.map(function(e) { return e.id; }); + + network.setSelection({edges: edgeIds, nodes: nodeIds}, {highlightEdges: false}); + showSelectedNodes(); +} + +function showSelectedEdges() +{ + var infos = ""; + + var edgeIds = network.getSelectedEdges(); + var nodeIds = network.getSelectedNodes(); + + infos += '

      ' + edgeIds.length + ' edges selected

      '; + if (!nodeIds.length) { + var neighbours = []; + edgeIds.forEach(function(edgeId, id) { + var edge = edges.get(edgeId); + var dest = nodes.get(edge.to); + var src = nodes.get(edge.from); + + infos += '

      edge #' + (id+1) + '

      ' + + 'ID: ' + edge.id + '\n' + + 'Partitions: ' + edge.part.map(function(p){return partitions[p]}) + .join(', ') + '\n' + + '\t' + src.title + '(' + src.id + ') - ' + + dest.title + '(' + dest.id + '): ' + + edge.label + 'Gb\n'; + + var edgeLinks = edge.links; + edgeLinks.forEach(function(linkId) { + var link = links.get(linkId); + infos += '\t\tlink ' + linkId + ' (' + + link.src_port + '->' + link.dst_port + '):' + + link.gbits + 'Gb\n'; + }); + }); + } + document.getElementById('desc_selected').innerHTML += infos; +} + +function showSelectedNodes() +{ + document.getElementById('desc_selected').innerHTML = ''; + var infos = ""; + + var edgeIds = network.getSelectedEdges(); + var nodeIds = network.getSelectedNodes(); + + var neighbourLists = []; + var similarNeighbours = null; + if (nodeIds.length) { + infos += '

      ' + nodeIds.length + ' nodes selected

      '; + + var inputNodes = shownNodes.get(nodeIds); + inputNodes.forEach(function(node) { + var nodeEdges = node.edges; + var neighbourText = []; + var neighbours = []; + + nodeEdges.forEach(function(edgeId) { + var edge = edges.get(edgeId); + var dest = nodes.get(edge.to); + + var s = '\t' + dest.title + ' (' + dest.id + ') - edgeId ' + + edgeId + ': ' + edge.label + 'Gb\n'; + + var edgeLinks = edge.links; + edgeLinks.forEach(function(linkId) { + var link = links.get(linkId); + s += '\t\tlink ' + linkId + ' (' + + link.src_port + '->' + link.dst_port + '):' + + link.gbits + 'Gb\n'; + }); + neighbourText.push(s); + neighbours.push(dest.id); + }); + + sub = node.sub.map(function(s) { + return nodes.get(s).title; + }); + + infos += + '

      ' + node.title + '

      ' + + 'ID: ' + node.id + ' Hostname: ' + node.hostname + '\n' + + 'Partitions: ' + node.part.map(function(p){return partitions[p]}) + .join(', ') + '\n' + + 'Subnodes: ' + sub.join(', ') + '\n' + + neighbourText.length + ' neighbours:\n' + neighbourText.sort().join('') + + 'Total bandwidth: ' + node.bandwidth + '\n' + + ((node.topo != -1) ? ('Hwloc topology: ' + topos[node.topo]): ''); + + if (!similarNeighbours) { + similarNeighbours = neighbours; + } else { + similarNeighbours = similarNeighbours.filter(function(n) { + return neighbours.indexOf(n) != -1; + }); + } + neighbourLists.push(neighbours); + }); + } + + if (nodeIds.length > 1) { + var s = []; + similarNeighbours.forEach(function(n) { + s.push('\t' + nodes.get(n).title + '\n'); + }); + infos += + '

      Similar neighbours

      ' + + similarNeighbours.length + ' similar neighbours:\n' + s.sort().join(''); + infos += + '

      Specific neighbours

      '; + nodeIds.forEach(function(n, idx) { + infos += '\t' + shownNodes.get(n).title + ": " + + neighbourLists[idx] + .filter(function(n) + {return similarNeighbours.indexOf(n) < 0;}) + .map(function(n) + {return shownNodes.get(n).title;}) + .sort().join(', ') + + '\n'; + }); + } + + document.getElementById('desc_selected').innerHTML += infos; +} + +function search() +{ + var selectSearch = document.getElementById("selectSearch"); + var field = selectSearch.options[selectSearch.selectedIndex].value; + + if (field == "") { + + } else { + var searchValue = document.getElementById("searchValue"); + var value = searchValue.value; + selectNodesAndEdges(field, value); + } +} + +function draw() +{ + printWithTime("Draw"); + var selectPartition = document.getElementById("selectPartition"); + var partition = parseInt( + selectPartition.options[selectPartition.selectedIndex].value); + + var subNodes = new vis.DataSet(nodes.get({filter: function (n) { return n.merged == 0 }})); + printWithTime("Nodes filtered"); + + var subEdges; + if (partition == -1) { // for "All" + shownNodes = subNodes; + subEdges = new vis.DataSet(edges.get({filter: filterEdge})); + } else { + shownNodes = new vis.DataSet(subNodes.get({filter: function (n) { + return n.part.indexOf(partition) > -1; + }})); + subEdges = new vis.DataSet(edges.get({filter: function (e) { + return shownNodes.get(e.to) && shownNodes.get(e.from) + && e.part.indexOf(partition) > -1; + }})); + } + printWithTime("subdatasets created"); + + /* Keep edges in only one way */ + shownEdges = new vis.DataSet(subEdges.get({filter: function (e) { + //return (subNodes.get(e.from) && subNodes.get(e.from).type != "host"); // DEBUG XXX + /* We'd rather keep the edge where e.from > e.to, so we would keep the + ones from virtual nodes which would ease the expansion. + */ + if (e.from > e.to) { + if (!subEdges.get(e.reverse)) { + e.arrows = {to: true}; + } + return true; + + } else if (!subEdges.get(e.reverse)) { + e.arrows = {to: true}; + return true; + + } else + return false; + }})); + printWithTime("Edges filtered (keep one way)"); + + var physicsEnabled = true; + var selectColor = document.getElementById("selectColors"); + var colorMode = + selectColor.options[selectColor.selectedIndex].value; + if (colorMode != "") + nodeColors(); + else + selectColor.selectedIndex = 1; + + updateDescription(); + printWithTime("Description updated"); + + /* Set nodes positions */ + if (mydata.type === "tree"){ + physicsEnabled = false; + var stack = []; + var current_ring; + var node_pool = new vis.DataSet(shownNodes.get().map( function (n) { + n.crt_nedges = getNeighbours(n).length; + n.subtreeSize = n.size * Math.PI * 2; + n.initAngle = 0; + return n; + })); + while (0 < node_pool.length) { + current_ring = node_pool.get({filter: function (n) { return 1 >= n.crt_nedges }}); + if (current_ring.length > 0) { + node_pool.remove(current_ring); + current_ring.forEach( function (node) { + node_pool.get( + getNeighbours(node), + {returnType: 'Array', filter: function (nbg) { return null !== nbg }} + ).forEach( function (nbg) { + nbg.subtreeSize += node.subtreeSize / 2 / Math.PI * 2.3; + nbg.crt_nedges--; + node_pool.update(nbg); + }); + }); + } else { + /* tree "root" is made of multiple nodes */ + /* Step 1: Extract any node not connected to the last + * saved stack level. + */ + var substack = []; + current_ring = node_pool.get({filter: function (n) { + return 0 === stack[stack.length-1].get( + getNeighbours(n), + {returnType: 'Array', + filter: function (nbg) { return null !== nbg } + }).length}}); + node_pool.remove(current_ring); + substack.push(new vis.DataSet(current_ring)); + current_ring.forEach( function (n) { + node_pool.get(getNeighbours(n),{ + returnType:'Array', + filter: function (nbg) { return null !== nbg } + }).forEach( function (nbg) { + nbg.crt_nedges--; + node_pool.update(nbg); + }); + }); + while (current_ring.length > 0) { + current_ring = substack[substack.length-1].get({ + filter: function (n) { + return 0 === substack[substack.length-1].get( + getNeighbours(n), + {returnType: 'Array', + filter: function (nbg) { return null !== nbg } + }).length}}); + if (current_ring.length > 0) { + substack[substack.length-1].remove(current_ring); + substack.push(new vis.DataSet(current_ring)); + } + } + /* Step 2: Consider nodes with highest neighbors in + * remaining pool to be closer to the root. + */ + var max_nedges = node_pool.get() + .reduce(function (r, n) { + return Math.max(r, n.crt_nedges) + }, -Infinity); + while(max_nedges > 0) { + current_ring = node_pool.get({ + filter: function(n){ return max_nedges <= n.crt_nedges } + }); + node_pool.remove(current_ring); + substack.push(new vis.DataSet(current_ring)); + current_ring.forEach( function (n) { + node_pool.get(getNeighbours(n),{ + returnType:'Array', + filter: function (nbg) { return null !== nbg } + }).forEach( function (nbg) { + nbg.crt_nedges--; + node_pool.update(nbg); + }); + }); + max_nedges = node_pool.get() + .reduce( function (r,n) { + return Math.max(r,n.crt_nedges) + }, -Infinity); + } + + if (node_pool.length > 0) { /* Add remaining nodes */ + current_ring = node_pool.get({returnType: 'Array'}); + node_pool.remove(current_ring); + substack.push(new vis.DataSet(current_ring)); + } + /* Propagate subtree sizes */ + while(substack.length > 1) { + var sons = substack.pop(); + sons.get({returnType: 'Array'}).forEach( function (n) { + substack[substack.length-1].get(getNeighbours(n), { + returnType:'Array', + filter: function (nbg) { return null !== nbg } + }).forEach( function (nbg) { + nbg.subtreeSize += n.subtreeSize / 2 / Math.PI * 2.3; + substack[substack.length-1].update(nbg); + }); + }); + stack.push(sons); + } + current_ring = substack.pop().get({returnType: 'Array'}); + } + stack.push(new vis.DataSet(current_ring)); + } + printWithTime("Tree built"); + /* If root is made of multiple nodes, separate them around 0 */ + if (stack[stack.length-1].length > 1) { + /* Step 3: Display multiple root around 0, and + * corresponding subtrees around as a single circle. + */ + var ds = stack.pop(); + var subtreeSize = ds.get().reduce( function (r, n) { + return r + n.size * 2 + }, 0) / 2 / Math.PI; + var subsubtreeSize = Math.max(ds.get().reduce( function (r, n) { + return r + n.subtreeSize / 2 / Math.PI + }, 0) / 3 / Math.PI,stack[stack.length-1].get().reduce( function (r, n) { + return r + n.size + }, 0) / Math.PI, subtreeSize * 2 * Math.PI); + if (stack.length == 1) { + var arrBig = ds.get().map(function (n) { + return {id: n.id, nb_neighbours: stack[stack.length-1].get(getNeighbours(n), { + returnType: 'Array', + filter: function(nbg) { return null !== nbg && nbg.x === 0 && nbg.y === 0} + }).length} + }).sort(function (a,b) { + return a.nb_neighbours < b.nb_neighbours ? -1 + : a.nb_neighbours > b.nb_neighbours ? 1 : 0; + }); + var arrSmall = arrBig.splice(ds.length/2,ds.length/2).reverse(); + var arrOrdered = []; + for (var i=0, l=arrSmall.length; i= node.edges.length) { + nodesWithPhysics.push(edge.to); + shownNodes.update({id: edge.to, physics: true, fixed: false}); + } + var node = shownNodes.get(edge.from); + if (1 >= node.edges.length) { + nodesWithPhysics.push(edge.from); + shownNodes.update({id: edge.from, physics: true, fixed: false}); + } + }); + }); + network.on("dragEnd", function (params) { + edgesWithPhysics.forEach(function(edgeWithPhysic) { + shownEdges.update({id: edgeWithPhysic, physics: false, fixed: true}); + }); + nodesWithPhysics.forEach(function(nodeWithPhysic) { + shownNodes.update({id: nodeWithPhysic, physics: false, fixed: true}); + }); + }); + } + + network.on("stabilizationIterationsDone", function () { + //network.setOptions({ + // nodes: {physics: false}, + // edges: {physics: false}, + // layout: {improvedLayout: false}, + //}); + shownEdges.getIds().forEach(function(e) { + shownEdges.update({id: e, physics: false}); + }); + shownNodes.getIds().forEach(function(n) { + shownNodes.update({id: n, physics: false}); + }); + }); +} + +function expandSelected() +{ + nodeIds = network.getSelectedNodes(); + nodeIds.forEach(function(n) { + // TODO + node = shownNodes.get(n); + neighbours = getNeighbours(node); + + /* Physics enabled for neighbours */ + neighbours.forEach(function(nbg) { + printWithTime(nbg + " -> physics"); + shownNodes.update({id: nbg, physics: true, fixed: true}); + }); + + /* The selected nodes are removed (then replaced) */ + shownEdges.remove(node.edges); + printWithTime(shownNodes.remove(node) + " -> removed"); + var selectedNodes = []; + node.sub.forEach(function(s) { + subnode = nodes.get(s); + subnode.physics = false; + shownNodes.add(subnode); + shownEdges.add(edges.get(subnode.edges), {filter: filterEdge}); + selectedNodes.push(subnode.id); + }); + network.selectNodes(selectedNodes); + showSelectedNodes(); + }); + updateDescription(); +} + +function mergeNode(node) +{ + // TODO +} + +function prepareImage() +{ + function export_SVG() { + + function Node (x, y, r, c) { + var cx, cy, radius, fill; + this.node = document.createElementNS('http://www.w3.org/2000/svg','circle'); + this.attribute = function (key,val) { + if (val === undefined) return this.node.getAttribute(key); + this.node.setAttribute(key,val); + return val; + } + this.getCoord = function () {return {cx: cx, cy: cy}} + this.setCoord = function (obj) { + if (undefined === obj) return; + cx = this.attribute('cx', obj.cx); + cy = this.attribute('cy', obj.cy); + } + this.getSize = function () {return r} + this.setSize = function (r) {radius = this.attribute('r', r)} + this.getColor = function () {return fill} + this.setColor = function (c) {fill = this.attribute('fill', c)} + // Init + cx = this.attribute.apply(this, ['cx', x]); + cy = this.attribute.apply(this, ['cy', y]); + radius = this.attribute.apply(this, ['r', r]); + fill = this.attribute.apply(this, ['fill', c]); + } + + function Edge (x1, y1, x2, y2, w, c, l) { + var from, to, width, label, color; + this.edge = document.createElementNS('http://www.w3.org/2000/svg','line'); + this.attribute = function (key,val) { + if (val === undefined) return this.edge.getAttribute(key); + this.edge.setAttribute(key,val); + return val; + } + this.style = function (key,val) { + if (undefined === val) return this.edge.style[key]; + this.edge.style[key] = val; + return val; + } + this.getCoords = function () {return {from: from, to: to}} + this.setCoords = function (obj) { + if (undefined === obj) return; + from.x = this.attribute('x1', obj.from === undefined ? undefined : obj.from.x); + from.y = this.attribute('y1', obj.from === undefined ? undefined : obj.from.y); + to.x = this.attribute('x2', obj.to === undefined ? undefined : obj.to.x); + to.y = this.attribute('y2', obj.to === undefined ? undefined : obj.to.y); + } + this.getWidth = function () {return width} + this.setWidth = function (w) {width = this.style('stroke-width', w)} + this.getColor = function () {return color} + this.setColor = function (color) {fill = this.style('stroke', color)} + // TO BE ADDED: label + // Init + from = {x: this.attribute.apply(this, ['x1', x1]), + y: this.attribute.apply(this, ['y1', y1])}; + to = {x: this.attribute.apply(this, ['x2', x2]), + y: this.attribute.apply(this, ['y2', y2])}; + width = this.style.apply(this, ['stroke-width', w]); + color = this.style.apply(this, ['stroke', c]); + label = l + } + + var nodeArr = shownNodes.get(); + var bounds = nodeArr.reduce( function (bounds, node) { + return {minx: Math.min(bounds.minx, node.x), maxx: Math.max(bounds.maxx, node.x), + miny: Math.min(bounds.miny, node.y), maxy: Math.max(bounds.maxy, node.y), + maxr: Math.max(bounds.maxr, node.size)}; + }, {minx: Infinity, miny: Infinity, maxx: -Infinity, maxy: -Infinity, maxr: -Infinity}); + var SVGCanvas = document.createElementNS('http://www.w3.org/2000/svg','svg'); + SVGCanvas.setAttribute('version', '1.1'); + SVGCanvas.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); + SVGCanvas.setAttribute('width', bounds.maxx - bounds.minx + 2 * bounds.maxr); + SVGCanvas.setAttribute('height', bounds.maxy - bounds.miny + 2 * bounds.maxr); + shownEdges.get().map( function (edge) { + return {from: shownNodes.get(edge.from), to: shownNodes.get(edge.to), + width: edge.width, color: edge.color.color, label: edge.label}; + }).forEach( function (obj) { + SVGCanvas.appendChild(new Edge(obj.from.x - bounds.minx + bounds.maxr, + obj.from.y - bounds.miny + bounds.maxr, + obj.to.x - bounds.minx + bounds.maxr, + obj.to.y - bounds.miny + bounds.maxr, + obj.width, obj.color, obj.label ).edge); + }); + nodeArr.forEach( function (node) { + SVGCanvas.appendChild(new Node(node.x - bounds.minx + bounds.maxr, + node.y - bounds.miny + bounds.maxr, + node.size, node.color.background).node); + }); + // Return text version of complete SVG image + return document.createElement('div').appendChild(SVGCanvas).parentNode.innerHTML; + } + + var img = btoa(export_SVG()); + var link = document.createElement('a'); + link.setAttribute('href-lang', 'image/svg+xml'); + link.setAttribute('href', 'data:image/svg+xml;base64,\n'+img); + link.setAttribute('title', 'netloc_draw.svg'); + link.appendChild(document.createTextNode("image")); + document.getElementById('imageLink').appendChild(link); +} diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw_to_json.c b/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw_to_json.c new file mode 100644 index 0000000000..060a567dc6 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/draw/netloc_draw_to_json.c @@ -0,0 +1,628 @@ +/* + * Copyright © 2016-2017 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include +#include +#include +#include +#include +#include + +#include "private/netloc.h" +#include "netloc.h" + +#define JSON_DRAW_FILE_LINK_ID "id" +#define JSON_DRAW_FILE_LINK_SRC "from" +#define JSON_DRAW_FILE_LINK_SRC_PORT "src_port" +#define JSON_DRAW_FILE_LINK_DST "to" +#define JSON_DRAW_FILE_LINK_DST_PORT "dst_port" +#define JSON_DRAW_FILE_LINK_WIDTH "width" +#define JSON_DRAW_FILE_LINK_SPEED "speed" +#define JSON_DRAW_FILE_LINK_GBITS "gbits" +#define JSON_DRAW_FILE_LINK_OTHER_WAY "reverse" +#define JSON_DRAW_FILE_LINK_PARTITIONS "part" +#define JSON_DRAW_FILE_EDGE_ID "id" +#define JSON_DRAW_FILE_EDGE_SRC "from" +#define JSON_DRAW_FILE_EDGE_DST "to" +#define JSON_DRAW_FILE_EDGE_GBITS "gbits" +#define JSON_DRAW_FILE_EDGE_LINKS "links" +#define JSON_DRAW_FILE_EDGE_PARTITIONS "part" +#define JSON_DRAW_FILE_EDGE_SUBEDGES "subedges" +#define JSON_DRAW_FILE_EDGE_OTHER_WAY "reverse" +#define JSON_DRAW_FILE_NODE_ID "id" +#define JSON_DRAW_FILE_NODE_EDGES "edges" +#define JSON_DRAW_FILE_NODE_MERGED "merged" +#define JSON_DRAW_FILE_NODE_SUBNODES "sub" +#define JSON_DRAW_FILE_NODE_PARTITIONS "part" +#define JSON_DRAW_FILE_NODE_DESC "desc" +#define JSON_DRAW_FILE_NODE_HOSTNAME "hostname" +#define JSON_DRAW_FILE_NODE_HWLOCTOPO "topo" +#define JSON_DRAW_FILE_NODE_EDGES "edges" +#define JSON_DRAW_FILE_NODE_TYPE "type" +#define JSON_DRAW_FILE_EDGES_LIST "list" +#define JSON_DRAW_FILE_PATH_ID "id" +#define JSON_DRAW_FILE_PATH_LINKS "links" +#define JSON_DRAW_FILE_PATHS "paths" + +#define JSON_DRAW_FILE_GRAPH_TYPE "type" +#define JSON_DRAW_FILE_NODES "nodes" +#define JSON_DRAW_FILE_EDGES "edges" +#define JSON_DRAW_FILE_LINKS "links" +#define JSON_DRAW_FILE_PARTITIONS "partitions" +#define JSON_DRAW_FILE_HWLOCTOPOS "hwloctopos" + +/******************************************************************************/ +/* Functions to handle JSON */ +/******************************************************************************/ +typedef enum { + JSON_STRING, + JSON_INT, + JSON_FLOAT, + JSON_ARRAY, + JSON_DICT +} json_type; + +typedef struct { + int num; + int allocated; + char **strings; +} contents_t; + +typedef struct { + json_type type; + contents_t *contents; +} json_t; + +static contents_t *contents_new(int allocated) +{ + contents_t *contents = (contents_t *)malloc(sizeof(contents_t)); + contents->strings = (char **)malloc(sizeof(char *[allocated])); + contents->allocated = allocated; + contents->num = 0; + return contents; +} + +static void contents_add(contents_t *contents, char *string) +{ + if (contents->num == contents->allocated) { + if (contents->allocated) + { + char **new_strings = (char **) + realloc(contents->strings, sizeof(char *[2*contents->allocated])); + if (!new_strings) + return; + contents->strings = new_strings; + contents->allocated *= 2; + } else { + contents->strings = (char **) malloc(sizeof(char *[1])); + if (!contents->strings) + return; + contents->allocated = 1; + } + } + contents->strings[contents->num] = string; + contents->num++; +} + +static void contents_destruct(contents_t *contents) +{ + free(contents->strings); + free(contents); +} + +static void contents_cat(contents_t *dest, contents_t *src) +{ + int size = src->num; + if (dest->num+size > dest->allocated) { + if (dest->allocated) + { + dest->strings = (char **) + realloc(dest->strings, sizeof(char *[dest->allocated+size])); + dest->allocated += size; + } else { + dest->strings = (char **) + realloc(dest->strings, sizeof(char *[size])); + dest->allocated = size; + } + } + memcpy(&dest->strings[dest->num], src->strings, sizeof(char *[src->num])); + dest->num += src->num; +} + +static void json_close_object(json_t *object) +{ + switch (object->type) { + case JSON_ARRAY: + contents_add(object->contents, strdup("]")); + break; + case JSON_DICT: + contents_add(object->contents, strdup("}")); + break; + default: + ; + } +} +static contents_t *get_content_and_destroy(json_t *object) +{ + contents_t *contents = object->contents; + json_close_object(object); + free(object); + return contents; +} + +json_t *json_dict_new() +{ + json_t *dict = (json_t *)malloc(sizeof(json_t)); + dict->type = JSON_DICT; + dict->contents = contents_new(3); + contents_add(dict->contents, strdup("{")); + return dict; +} + +void json_dict_add(json_t *dict, char *field, json_t *child) +{ + assert(dict->type == JSON_DICT); + + if (dict->contents->num > 1) { + contents_add(dict->contents, strdup(",")); + } + char *field_string; + asprintf(&field_string, "\"%s\":", field); + contents_add(dict->contents, field_string); + contents_t *child_contents = get_content_and_destroy(child); + contents_cat(dict->contents, child_contents); + contents_destruct(child_contents); +} + +json_t *json_array_new() +{ + json_t *array = (json_t *)malloc(sizeof(json_t)); + array->type = JSON_ARRAY; + array->contents = contents_new(3); + contents_add(array->contents, strdup("[")); + return array; +} + +void json_array_add(json_t *array, json_t *child) +{ + assert(array->type == JSON_ARRAY); + + if (array->contents->num > 1) { + contents_add(array->contents, strdup(",")); + } + contents_t *child_contents = get_content_and_destroy(child); + contents_cat(array->contents, child_contents); + contents_destruct(child_contents); +} + +json_t *json_string_new(char *value) +{ + json_t *string = (json_t *)malloc(sizeof(json_t)); + string->type = JSON_STRING; + string->contents = contents_new(1); + + char *new_value; + asprintf(&new_value, "\"%s\"", value); + contents_add(string->contents, new_value); + return string; +} + +json_t *json_int_new(int value) +{ + json_t *integer = (json_t *)malloc(sizeof(json_t)); + integer->type = JSON_INT; + integer->contents = contents_new(1); + + char *new_value; + asprintf(&new_value, "%d", value); + contents_add(integer->contents, new_value); + return integer; +} + +json_t *json_float_new(float value) +{ + json_t *real = (json_t *)malloc(sizeof(json_t)); + real->type = JSON_FLOAT; + real->contents = contents_new(1); + + char *new_value; + asprintf(&new_value, "%f", value); + contents_add(real->contents, new_value); + return real; +} + +void json_write(FILE *file, json_t *object) +{ + json_close_object(object);; + for (int i = 0; i < object->contents->num; i++) { + fprintf(file, "%s", object->contents->strings[i]); + } +} + +void json_free(json_t *object) +{ + for (int i = 0; i < object->contents->num; i++) { + free(object->contents->strings[i]); + } + free(object->contents->strings); + free(object->contents); + free(object); +} + +/* End of JSON functions */ +/******************************************************************************/ + +static char *remove_quote(char *string) +{ + if (string[0] == '\'') + return strndup(string+1, strlen(string)-2); + else + return strndup(string, strlen(string)); +} + +static int handle_link(netloc_physical_link_t *link, json_t *json_links) +{ + //netloc_node_t *src, *dest; + char *src = link->src->physical_id; + char *dest = link->dest->physical_id; + + json_t *json_link = json_dict_new(); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_ID, json_int_new(link->id)); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_SRC, json_string_new(src)); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_SRC_PORT, json_int_new(link->ports[0])); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_DST, json_string_new(dest)); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_DST_PORT, json_int_new(link->ports[1])); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_WIDTH, json_string_new(link->width)); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_SPEED, json_string_new(link->speed)); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_GBITS, json_float_new(link->gbits)); + json_dict_add(json_link, + JSON_DRAW_FILE_LINK_OTHER_WAY, json_int_new(link->other_way_id)); + + json_t *json_partitions = json_array_new(); + + for (unsigned int p = 0; p < netloc_get_num_partitions(link); p++) + { + int partition = netloc_get_partition(link, p); + json_array_add(json_partitions, json_int_new(partition)); + } + json_dict_add(json_link, JSON_DRAW_FILE_LINK_PARTITIONS, json_partitions); + + json_array_add(json_links, json_link); + + return 0; +} + +static int handle_edge(netloc_edge_t *edge, json_t *json_edges) +{ + //netloc_node_t *src, *dest; + char *src = edge->node->physical_id; + char *dest = edge->dest->physical_id; + + json_t *json_edge = json_dict_new(); + + json_dict_add(json_edge, JSON_DRAW_FILE_EDGE_ID, json_int_new(edge->id)); + json_dict_add(json_edge, JSON_DRAW_FILE_EDGE_SRC, json_string_new(src)); + json_dict_add(json_edge, JSON_DRAW_FILE_EDGE_DST, json_string_new(dest)); + json_dict_add(json_edge, JSON_DRAW_FILE_EDGE_GBITS, json_float_new(edge->total_gbits)); + json_dict_add(json_edge, JSON_DRAW_FILE_EDGE_OTHER_WAY, json_int_new(edge->other_way->id)); + + /* Links */ + json_t *json_links = json_array_new(); + for (unsigned int l = 0; l < netloc_edge_get_num_links(edge); l++) + { + netloc_physical_link_t *link = netloc_edge_get_link(edge, l); + json_array_add(json_links, json_int_new(link->id)); + } + json_dict_add(json_edge, JSON_DRAW_FILE_EDGE_LINKS, json_links); + + /* Partition list */ + json_t *json_partitions = json_array_new(); + for (unsigned int p = 0; p < netloc_get_num_partitions(edge); p++) + { + int partition = netloc_get_partition(edge, p); + json_array_add(json_partitions, json_int_new(partition)); + } + json_dict_add(json_edge, JSON_DRAW_FILE_EDGE_PARTITIONS, json_partitions); + + /* Subnode edges */ + json_t *json_subedges = json_array_new(); + for (unsigned int s = 0; s < netloc_edge_get_num_subedges(edge); s++) + { + netloc_edge_t *subedge = netloc_edge_get_subedge(edge, s); + json_array_add(json_subedges, json_int_new(subedge->id)); + handle_edge(subedge, json_edges); + } + json_dict_add(json_edge, JSON_DRAW_FILE_EDGE_SUBEDGES, json_subedges); + + json_array_add(json_edges, json_edge); + + return 0; +} + +static int handle_node(netloc_node_t *node, json_t *json_nodes, + json_t *json_edges, int merged) +{ + char *id = node->physical_id; + char *desc = remove_quote(node->description); + char *hostname = node->hostname; + int topoIdx = node->hwlocTopoIdx; + + json_t *json_node = json_dict_new(); + json_dict_add(json_node, JSON_DRAW_FILE_NODE_ID, json_string_new(id)); + json_dict_add(json_node, JSON_DRAW_FILE_NODE_DESC, json_string_new(desc)); + json_dict_add(json_node, JSON_DRAW_FILE_NODE_HOSTNAME, json_string_new(hostname)); + json_dict_add(json_node, JSON_DRAW_FILE_NODE_HWLOCTOPO, json_int_new(topoIdx)); + json_dict_add(json_node, JSON_DRAW_FILE_NODE_MERGED, json_int_new(merged)); + + /* Subnodes */ + json_t *json_subnodes = json_array_new(); + for (unsigned int s = 0; s < netloc_node_get_num_subnodes(node); s++) + { + netloc_node_t *subnode = netloc_node_get_subnode(node, s); + handle_node(subnode, json_nodes, json_edges, 1); + json_array_add(json_subnodes, json_string_new(subnode->physical_id)); + } + json_dict_add(json_node, JSON_DRAW_FILE_NODE_SUBNODES, json_subnodes); + + /* Edges */ + json_t *json_edge_ids = json_array_new(); + netloc_edge_t *edge, *edge_tmp; + netloc_node_iter_edges(node, edge, edge_tmp) { + json_array_add(json_edge_ids, json_int_new(edge->id)); + handle_edge(edge, json_edges); + } + json_dict_add(json_node, JSON_DRAW_FILE_NODE_EDGES, json_edge_ids); + + /* Partitions */ + json_t *json_partitions = json_array_new(); + for (unsigned int p = 0; p < netloc_get_num_partitions(node); p++) + { + int partition = netloc_get_partition(node, p); + json_array_add(json_partitions, json_int_new(partition)); + } + json_dict_add(json_node, JSON_DRAW_FILE_NODE_PARTITIONS, json_partitions); + + if (netloc_node_is_host(node)) { + json_dict_add(json_node, JSON_DRAW_FILE_NODE_TYPE, json_string_new("host")); + } + else if (netloc_node_is_switch(node)) { + json_dict_add(json_node, JSON_DRAW_FILE_NODE_TYPE, json_string_new("switch")); + } + else { + json_dict_add(json_node, JSON_DRAW_FILE_NODE_TYPE, json_string_new("unknown")); + } + + json_array_add(json_nodes, json_node); + + free(desc); + return 0; +} + +static int handle_path(netloc_node_t *node, json_t *json_paths) +{ + char *id = node->physical_id; + + json_t *json_node_paths = json_dict_new(); + json_dict_add(json_node_paths, JSON_DRAW_FILE_PATH_ID, json_string_new(id)); + + /* Paths */ + json_t *json_path_list = json_array_new(); + netloc_path_t *path, *path_tmp; + netloc_node_iter_paths(node, path, path_tmp) { + json_t *json_node_path = json_dict_new(); + json_dict_add(json_node_path, JSON_DRAW_FILE_PATH_ID, + json_string_new(path->dest_id)); + + json_t *json_links = json_array_new(); + netloc_physical_link_t **plink; + netloc_path_iter_links(path,plink) { + json_array_add(json_links, json_int_new((*plink)->id)); + } + json_dict_add(json_node_path, JSON_DRAW_FILE_PATH_LINKS, + json_links); + json_array_add(json_path_list, json_node_path); + } + json_dict_add(json_node_paths, JSON_DRAW_FILE_PATHS, json_path_list); + + json_array_add(json_paths, json_node_paths); + + return 0; +} + +static int handle_partitions(netloc_topology_t *topology, json_t *json_partitions) +{ + char **ppartition; + netloc_topology_iter_partitions(topology, ppartition) { + json_array_add(json_partitions, json_string_new(*ppartition)); + } + return 0; +} + +static int handle_topos(netloc_topology_t *topology, json_t *json_topos) +{ + char **ptopo; + netloc_topology_iter_hwloctopos(topology, ptopo) { + json_array_add(json_topos, json_string_new(*ptopo)); + } + return 0; +} + +static int write_json(netloc_topology_t *topology, FILE *output) +{ + json_t *json_root = json_dict_new(); + + /* Graph type */ + json_dict_add(json_root, JSON_DRAW_FILE_GRAPH_TYPE, json_string_new("tree")); + + /* Nodes */ + json_t *json_nodes = json_array_new(); + json_t *json_edges = json_array_new(); + netloc_node_t *node, *node_tmp; + HASH_ITER(hh, topology->nodes, node, node_tmp) { + handle_node(node, json_nodes, json_edges, 0); + } + json_dict_add(json_root, JSON_DRAW_FILE_NODES, json_nodes); + json_dict_add(json_root, JSON_DRAW_FILE_EDGES, json_edges); + + /* Physical links */ + json_t *json_links = json_array_new(); + netloc_physical_link_t *link, *link_tmp; + HASH_ITER(hh, topology->physical_links, link, link_tmp) { + handle_link(link, json_links); + } + json_dict_add(json_root, JSON_DRAW_FILE_LINKS, json_links); + + /* Paths */ + json_t *json_paths = json_array_new(); + HASH_ITER(hh, topology->nodes, node, node_tmp) { + handle_path(node, json_paths); + } + json_dict_add(json_root, JSON_DRAW_FILE_PATHS, json_paths); + + /* Partitions */ + json_t *json_partitions = json_array_new(); + handle_partitions(topology, json_partitions); + json_dict_add(json_root, JSON_DRAW_FILE_PARTITIONS, json_partitions); + + /* Hwloc topologies */ + json_t *json_topos = json_array_new(); + handle_topos(topology, json_topos); + json_dict_add(json_root, JSON_DRAW_FILE_HWLOCTOPOS, json_topos); + + json_write(output, json_root); + json_free(json_root); + + return 0; +} + +static int netloc_to_json_draw(netloc_topology_t *topology) +{ + int ret; + static FILE *output; + char *node_uri = topology->topopath; + int basename_len = strlen(node_uri)-10; + char *basename = (char *)malloc((basename_len+1)*sizeof(char)); + char *draw; + + netloc_topology_read_hwloc(topology, 0, NULL); + + strncpy(basename, node_uri, basename_len); + basename[basename_len] = '\0'; + + asprintf(&draw, "%s-%s.json", basename, "draw"); + output = fopen(draw, "w"); + free(draw); + if (output == NULL) { + perror("fopen: "); + ret = NETLOC_ERROR; + goto ERROR; + } + + write_json(topology, output); + + ret = NETLOC_SUCCESS; + fclose(output); +ERROR: + free(basename); + + return ret; +} + +static char *read_param(int *argc, char ***argv) +{ + if (!*argc) + return NULL; + + char *ret = **argv; + (*argv)++; + (*argc)--; + + return ret; +} + +void help(char *name, FILE *f) +{ + fprintf(f, "Usage: %s \n", name); +} + +int main(int argc, char **argv) +{ + char *prog_name = basename(argv[0]); + + if (argc != 2) { + help(prog_name, stderr); + return -1; + } + read_param(&argc, &argv); + + char *param; + param = read_param(&argc, &argv); + + char *netlocpath; + if (!strcmp(param, "--help")) { + help(prog_name, stdout); + return 0; + } else { + netlocpath = param; + } + + DIR *netlocdir = opendir(netlocpath); + if (!netlocdir) { + fprintf(stderr, "Error: Cannot open the directory <%s>.\n", netlocpath); + return NETLOC_ERROR; + } + + struct dirent *dir_entry = NULL; + while ((dir_entry = readdir(netlocdir)) != NULL) { + char *topopath; +#ifdef _DIRENT_HAVE_D_TYPE + /* Skip directories if the filesystem returns a useful d_type. + * Otherwise, continue and let the actual opening will fail later. + */ + if( DT_DIR == dir_entry->d_type ) { + continue; + } +#endif + + /* Skip if does not end in .txt extension */ + if( NULL == strstr(dir_entry->d_name, "-nodes.txt") ) { + continue; + } + + asprintf(&topopath, "%s/%s", netlocpath, dir_entry->d_name); + + netloc_topology_t *topology; + topology = netloc_topology_construct(topopath); + if (topology == NULL) { + fprintf(stderr, "Error: netloc_topology_construct failed\n"); + return NETLOC_ERROR; + } + + netloc_edge_reset_uid(); + + netloc_to_json_draw(topology); + + netloc_topology_destruct(topology); + } + closedir(netlocdir); + + return 0; +} + diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/draw/visdist/vis.min.css b/3rd-party/hwloc-2.7.1/utils/netloc/draw/visdist/vis.min.css new file mode 100644 index 0000000000..f345ff5325 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/draw/visdist/vis.min.css @@ -0,0 +1 @@ +.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper::after{clear:both;content:"";display:block}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;padding:1px;margin:0;pointer-events:none}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%)}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}div.vis-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none;z-index:5}div.vis-color-picker{position:absolute;top:0;left:30px;margin-top:-140px;margin-left:30px;width:310px;height:444px;z-index:1;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow::after,div.vis-color-picker div.vis-arrow::before{right:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}div.vis-color-picker div.vis-new-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,.1);border-radius:5px;top:380px;left:159px;text-align:right;padding-right:2px;font-size:10px;color:rgba(0,0,0,.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-initial-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,.1);border-radius:5px;top:380px;left:10px;text-align:left;padding-left:2px;font-size:10px;color:rgba(0,0,0,.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px}div.vis-network div.vis-manipulation{box-sizing:content-box;border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{float:left;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin-left:10px;cursor:pointer;padding:0 8px 0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(img/network/backIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:700}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(img/network/addNodeIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit,div.vis-network div.vis-manipulation div.vis-button.vis-edit{background-image:url(img/network/editIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(img/network/connectIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(img/network/deleteIcon.png)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{float:left;display:inline-block;width:1px;height:21px;background-color:#bdbdbd;margin:0 7px 0 15px}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}.vis-current-time{background-color:#ff7f6e;width:2px;z-index:1;pointer-events:none}.vis-rolling-mode-btn{height:40px;width:40px;position:absolute;top:7px;right:20px;border-radius:50%;font-size:28px;cursor:pointer;opacity:.8;color:#fff;font-weight:700;text-align:center;background:#3876c2}.vis-rolling-mode-btn:before{content:"\26F6"}.vis-rolling-mode-btn:hover{opacity:1}.vis-custom-time{background-color:#6e94ff;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-item{position:absolute;color:#1a1a1a;border-color:#97b0f8;border-width:1px;background-color:#d5ddf6;display:inline-block;z-index:1}.vis-item.vis-selected{border-color:#ffc200;background-color:#fff785;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-point.vis-selected{background-color:#fff785}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item-visible-frame{white-space:nowrap}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-onUpdateTime-tooltip{position:absolute;background:#4f81bd;color:#fff;width:200px;text-align:center;white-space:nowrap;padding:5px;border-radius:1px;transition:.4s;-o-transition:.4s;-moz-transition:.4s;-webkit-transition:.4s}.vis-item .vis-delete,.vis-item .vis-delete-rtl{position:absolute;top:0;width:24px;height:24px;box-sizing:border-box;padding:0 5px;cursor:pointer;-webkit-transition:background .2s linear;-moz-transition:background .2s linear;-ms-transition:background .2s linear;-o-transition:background .2s linear;transition:background .2s linear}.vis-item .vis-delete{right:-24px}.vis-item .vis-delete-rtl{left:-24px}.vis-item .vis-delete-rtl:after,.vis-item .vis-delete:after{content:"\00D7";color:red;font-family:arial,sans-serif;font-size:22px;font-weight:700;-webkit-transition:color .2s linear;-moz-transition:color .2s linear;-ms-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.vis-item .vis-delete-rtl:hover,.vis-item .vis-delete:hover{background:red}.vis-item .vis-delete-rtl:hover:after,.vis-item .vis-delete:hover:after{color:#fff}.vis-item .vis-drag-center{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-range.vis-item.vis-readonly .vis-drag-left,.vis-range.vis-item.vis-readonly .vis-drag-right{cursor:auto}.vis-itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-nesting-group{cursor:pointer}.vis-nested-group{background:#f5f5f5}.vis-label.vis-nesting-group.expanded:before{content:"\25BC"}.vis-label.vis-nesting-group.collapsed-rtl:before{content:"\25C0"}.vis-label.vis-nesting-group.collapsed:before{content:"\25B6"}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis-labelset .vis-label{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box}.vis-labelset .vis-label{border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-panel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-left.vis-panel.vis-vertical-scroll,.vis-right.vis-panel.vis-vertical-scroll{height:100%;overflow-x:hidden;overflow-y:scroll}.vis-left.vis-panel.vis-vertical-scroll{direction:rtl}.vis-left.vis-panel.vis-vertical-scroll .vis-content{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll .vis-content{direction:rtl}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-background{overflow:hidden}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-timeline{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box} \ No newline at end of file diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/draw/visdist/vis.min.js b/3rd-party/hwloc-2.7.1/utils/netloc/draw/visdist/vis.min.js new file mode 100644 index 0000000000..1136c8a151 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/draw/visdist/vis.min.js @@ -0,0 +1,47 @@ +/** + * vis.js + * https://github.com/almende/vis + * + * A dynamic, browser-based visualization library. + * + * @version 4.21.0 + * @date 2017-10-12 + * + * @license + * Copyright (C) 2011-2017 Almende B.V, http://almende.com + * + * Vis.js is dual licensed under both + * + * * The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * * The MIT License + * http://opensource.org/licenses/MIT + * + * Vis.js may be distributed under either license. + */ +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}var i={};return e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=123)}([function(t,e,i){e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,i){e.__esModule=!0;var o=i(169),n=function(t){return t&&t.__esModule?t:{default:t}}(o);e.default=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2]&&arguments[2];for(var s in t)void 0!==i[s]&&(null===i[s]||"object"!==(0,c.default)(i[s])?n(t,i,s,o):"object"===(0,c.default)(t[s])&&e.fillIfDefined(t[s],i[s],o))},e.extend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var r=0;r3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var r in o)if(o.hasOwnProperty(r)&&-1===t.indexOf(r))if(o[r]&&o[r].constructor===Object)void 0===i[r]&&(i[r]={}),i[r].constructor===Object?e.deepExtend(i[r],o[r]):n(i,o,r,s);else if(Array.isArray(o[r])){i[r]=[];for(var a=0;a2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];for(var r in i)if(i.hasOwnProperty(r)||!0===o)if(i[r]&&i[r].constructor===Object)void 0===t[r]&&(t[r]={}),t[r].constructor===Object?e.deepExtend(t[r],i[r],o):n(t,i,r,s);else if(Array.isArray(i[r])){t[r]=[];for(var a=0;a=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){var o;return-1!=t.indexOf("rgba")?t:-1!=t.indexOf("rgb")?(o=t.substr(t.indexOf("(")+1).replace(")","").split(","),"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"):(o=e.hexToRGB(t),null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")")},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(!0===e.isString(t)){if(!0===e.isValidRGB(t)){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(!0===e.isValidHex(t)){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t;return{h:60*((t==o?3:i==o?1:5)-s/(n-o))/360,s:(n-o)/n,v:n}};var v={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,l.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=v.split(t.style.cssText),n=v.split(i),s=e.extend(o,n);t.style.cssText=v.join(s)},e.removeCssText=function(t,e){var i=v.split(t.style.cssText),o=v.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=v.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)},e.isValidRGB=function(t){return t=t.replace(" ",""),/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t)},e.isValidRGBA=function(t){return t=t.replace(" ",""),/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t)},e.selectiveBridgeObject=function(t,i){if(null!==i&&"object"===(void 0===i?"undefined":(0,c.default)(i))){for(var o=(0,h.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=function(t){return null!==t&&void 0!==t},s=function(t){return null!==t&&"object"===(void 0===t?"undefined":(0,c.default)(t))};if(!s(t))throw new Error("Parameter mergeTarget must be an object");if(!s(e))throw new Error("Parameter options must be an object");if(!n(i))throw new Error("Parameter option must have a value");if(!s(o))throw new Error("Parameter globalOptions must be an object");var r=e[i],a=s(o)&&!function(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}(o),d=a?o[i]:void 0,l=d?d.enabled:void 0;if(void 0!==r){if("boolean"==typeof r)return s(t[i])||(t[i]={}),void(t[i].enabled=r);if(null===r&&!s(t[i])){if(!n(d))return;t[i]=(0,h.default)(d)}if(s(r)){var u=!0;void 0!==r.enabled?u=r.enabled:void 0!==l&&(u=d.enabled),function(t,e,i){s(t[i])||(t[i]={});var o=e[i],n=t[i];for(var r in o)o.hasOwnProperty(r)&&(n[r]=o[r])}(t,e,i),t[i].enabled=u}}},e.binarySearchCustom=function(t,e,i,o){for(var n=0,s=0,r=t.length-1;s<=r&&n<1e4;){var a=Math.floor((s+r)/2),h=t[a],d=void 0===o?h[i]:h[i][o],l=e(d);if(0==l)return a;-1==l?s=a+1:r=a-1,n++}return-1},e.binarySearchValue=function(t,e,i,o,n){var s,r,a,h,d=0,l=0,u=t.length-1;for(n=void 0!=n?n:function(t,e){return t==e?0:t0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?l=h+1:u=h-1,d++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:(4-2*t)*t-1},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,s=void 0;try{for(var a,h=(0,r.default)(t);!(o=(a=h.next()).done);o=!0){var d=a.value;if(d){i=d[e[0]];for(var l=1;ln?1:or)&&(s=h,r=d)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;e0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){n<0&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.printStyle=void 0;var n=i(19),s=o(n),r=i(6),a=o(r),h=i(8),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=i(2),m=!1,v=void 0,g="background: #FFeeee; color: #dd0000",y=function(){function t(){(0,u.default)(this,t)}return(0,p.default)(t,null,[{key:"validate",value:function(e,i,o){m=!1,v=i;var n=i;return void 0!==o&&(n=i[o]),t.parse(e,n,[]),m}},{key:"parse",value:function(e,i,o){for(var n in e)e.hasOwnProperty(n)&&t.check(n,e,i,o)}},{key:"check",value:function(e,i,o,n){if(void 0===o[e]&&void 0===o.__any__)return void t.getSuggestion(e,o,n);var s=e,r=!0;void 0===o[e]&&void 0!==o.__any__&&(s="__any__",r="object"===t.getType(i[e]));var a=o[s];r&&void 0!==a.__type__&&(a=a.__type__),t.checkFields(e,i,o,s,a,n)}},{key:"checkFields",value:function(e,i,o,n,s,r){var a=function(i){console.log("%c"+i+t.printLocation(r,e),g)},h=t.getType(i[e]),l=s[h];void 0!==l?"array"===t.getType(l)&&-1===l.indexOf(i[e])?(a('Invalid option detected in "'+e+'". Allowed values are:'+t.print(l)+' not "'+i[e]+'". '),m=!0):"object"===h&&"__any__"!==n&&(r=f.copyAndExtendArray(r,e),t.parse(i[e],o[n],r)):void 0===s.any&&(a('Invalid type received for "'+e+'". Expected: '+t.print((0,d.default)(s))+". Received ["+h+'] "'+i[e]+'"'),m=!0)}},{key:"getType",value:function(t){var e=void 0===t?"undefined":(0,a.default)(t);return"object"===e?null===t?"null":t instanceof Boolean?"boolean":t instanceof Number?"number":t instanceof String?"string":Array.isArray(t)?"array":t instanceof Date?"date":void 0!==t.nodeType?"dom":!0===t._isAMomentObject?"moment":"object":"number"===e?"number":"boolean"===e?"boolean":"string"===e?"string":void 0===e?"undefined":e}},{key:"getSuggestion",value:function(e,i,o){var n=t.findInOptions(e,i,o,!1),s=t.findInOptions(e,v,[],!0),r=void 0 +;r=void 0!==n.indexMatch?" in "+t.printLocation(n.path,e,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n':s.distance<=4&&n.distance>s.distance?" in "+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""):n.distance<=8?'. Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e):". Did you mean one of these: "+t.print((0,d.default)(i))+t.printLocation(o,e),console.log('%cUnknown option detected: "'+e+'"'+r,g),m=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],h=e.toLowerCase(),d=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&!0===n){var c=t.findInOptions(e,i[l],f.copyAndExtendArray(o,l));s>c.distance&&(r=c.closestMatch,a=c.path,s=c.distance,d=c.indexMatch)}else-1!==l.toLowerCase().indexOf(h)&&(d=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=f.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:d}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n0&&(this.enableBorderDashes(t,e),t.stroke(),this.disableBorderDashes(t,e)),t.restore()}},{key:"performFill",value:function(t,e){this.enableShadow(t,e),t.fill(),this.disableShadow(t,e),this.performStroke(t,e)}},{key:"_addBoundingBoxMargin",value:function(t){this.boundingBox.left-=t,this.boundingBox.top-=t,this.boundingBox.bottom+=t,this.boundingBox.right+=t}},{key:"_updateBoundingBox",value:function(t,e,i,o,n){void 0!==i&&this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this._updateBoundingBox(t,e,i,o,n)}},{key:"getDimensionsFromLabel",value:function(t,e,i){this.textSize=this.labelModule.getTextSize(t,e,i);var o=this.textSize.width,n=this.textSize.height;return 0===o&&(o=14,n=14),{width:o,height:n}}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(this.needsRefresh(e,i)){this.labelModule.getTextSize(t,e,i);var n=2*o.size;this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r,a){if(this.resize(t,s,r,a),this.left=o-this.width/2,this.top=n-this.height/2,this.initContextForDraw(t,a),t[e](o,n,a.size),this.performFill(t,a),void 0!==this.options.label){this.labelModule.calculateLabelSize(t,s,r,o,n,"hanging");var h=n+.5*this.height+.5*this.labelModule.size.height;this.labelModule.draw(t,o,h,s,r,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height))}}]),e}(m.default);e.default=v},function(t,e,i){var o=i(78),n=i(51);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(20),n=i(39);t.exports=i(21)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(32);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){t.exports={default:i(138),__esModule:!0}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(188),s=o(n),r=i(77),a=o(r);e.default=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,h=(0,a.default)(t);!(o=(r=h.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(t){n=!0,s=t}finally{try{!o&&h.return&&h.return()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if((0,s.default)(Object(e)))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e){t.exports={}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){var o=i(84),n=i(58);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){function o(t,e,i){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0,this.z=void 0!==i?i:0}o.subtract=function(t,e){var i=new o;return i.x=t.x-e.x,i.y=t.y-e.y,i.z=t.z-e.z,i},o.add=function(t,e){var i=new o;return i.x=t.x+e.x,i.y=t.y+e.y,i.z=t.z+e.z,i},o.avg=function(t,e){return new o((t.x+e.x)/2,(t.y+e.y)/2,(t.z+e.z)/2)},o.crossProduct=function(t,e){var i=new o;return i.x=t.y*e.z-t.z*e.y,i.y=t.z*e.x-t.x*e.z,i.z=t.x*e.y-t.y*e.x,i},o.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.exports=o},function(t,e,i){var o,n,s;!function(i,r){n=[],o=r,void 0!==(s="function"==typeof o?o.apply(e,n):o)&&(t.exports=s)}(0,function(){function t(t){var e,i=t&&t.preventDefault||!1,o=t&&t.container||window,n={},s={keydown:{},keyup:{}},r={};for(e=97;e<=122;e++)r[String.fromCharCode(e)]={code:e-97+65,shift:!1};for(e=65;e<=90;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;e<=9;e++)r[""+e]={code:48+e,shift:!1};for(e=1;e<=12;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;e<=9;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r.delete={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;n=4*a){var c=0,p=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;d=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(o=0;o=r&&nt.range.end){var h={start:t.range.start,end:i};return i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,h,i),n=t.range.conversion(o,r),(i.valueOf()-n.offset)*n.scale}return i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i),n=t.range.conversion(o,r),(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a);return new Date(h+a+t.range.start)},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n=e&&r=e&&r<=i&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s=i.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?o<0?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&t0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=(0,h.default)(this.data)}for(var i=0;ithis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},o.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=o},function(t,e){function i(t){if(t)return o(t)}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;n=.4*v}if(this.options.showMinorLabels&&m){var k=this._repaintMinorText(c,y,t,b);k.style.width=_+"px"}f&&this.options.showMajorLabels?(c>0&&(void 0==w&&(w=c),k=this._repaintMajorText(c,s.getLabelMajor(),t,b)),g=this._repaintMajorLine(c,_,t,b)):m?g=this._repaintMinorLine(c,_,t,b):g&&(g.style.width=parseInt(g.style.width)+_+"px")}if(1e3!==x||u||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to 1000 lines."),u=!0),this.options.showMajorLabels){var S=this.body.util.toTime(0),D=s.getLabelMajor(S),M=D.length*(this.props.majorCharWidth||10)+10;(void 0==w||Mt.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"updateGroupOptions",value:function(t,e,i){if(void 0!==i){var o=t.group;if(void 0!==e&&void 0!==e.group&&o!==e.group)throw new Error("updateGroupOptions: group values in options don't match.");if("number"==typeof o||"string"==typeof o&&""!=o){var n=i.get(o);h.selectiveNotDeepExtend(["font"],t,n),t.color=h.parseColor(t.color)}}}},{key:"parseOptions",value:function(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=arguments[4],r=["color","fixed","shadow"];if(h.selectiveNotDeepExtend(r,e,i,o),t.checkMass(i),h.mergeOptions(e,i,"shadow",n),void 0!==i.color&&null!==i.color){var a=h.parseColor(i.color);h.fillIfDefined(e.color,a)}else!0===o&&null===i.color&&(e.color=h.bridgeObject(n.color));void 0!==i.fixed&&null!==i.fixed&&("boolean"==typeof i.fixed?(e.fixed.x=i.fixed,e.fixed.y=i.fixed):(void 0!==i.fixed.x&&"boolean"==typeof i.fixed.x&&(e.fixed.x=i.fixed.x),void 0!==i.fixed.y&&"boolean"==typeof i.fixed.y&&(e.fixed.y=i.fixed.y))),!0===o&&null===i.font&&(e.font=h.bridgeObject(n.font)),t.updateGroupOptions(e,i,s),void 0!==i.scaling&&h.mergeOptions(e.scaling,i.scaling,"label",n.scaling)}},{key:"checkMass",value:function(t,e){if(void 0!==t.mass&&t.mass<=0){var i="";void 0!==e&&(i=" in node id: "+e),console.log("%cNegative or zero mass disallowed"+i+", setting mass to 1.",C),t.mass=1}}}]),t}();e.default=O},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(6),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(2),u=function(){function t(){(0,a.default)(this,t)}return(0,d.default)(t,null,[{key:"choosify",value:function(t,e){var i=["node","edge","label"],o=!0,n=l.topMost(e,"chosen");if("boolean"==typeof n)o=n;else if("object"===(void 0===n?"undefined":(0,s.default)(n))){if(-1===i.indexOf(t))throw new Error("choosify: subOption '"+t+"' should be one of '"+i.join("', '")+"'");var r=l.topMost(e,["chosen",t]);"boolean"!=typeof r&&"function"!=typeof r||(o=r)}return o}},{key:"pointInRect",value:function(t,e,i){if(t.width<=0||t.height<=0)return!1;if(void 0!==i){var o={x:e.x-i.x,y:e.y-i.y};if(0!==i.angle){var n=-i.angle;e={x:Math.cos(n)*o.x-Math.sin(n)*o.y,y:Math.sin(n)*o.x+Math.cos(n)*o.y}}else e=o}var s=t.x+t.width,r=t.y+t.width;return t.lefte.x&&t.tope.y}},{key:"isValidLabel",value:function(t){return"string"==typeof t&&""!==t}}]),t}();e.default=u},function(t,e,i){i(125);for(var o=i(18),n=i(26),s=i(31),r=i(13)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),h=0;hdocument.F=Object<\/script>"),t.close(),h=t.F;o--;)delete h.prototype[s[o]];return h()};t.exports=Object.create||function(t,e){var i;return null!==t?(a.prototype=o(t),i=new a,a.prototype=null,i[r]=t):i=h(),void 0===e?i:n(i,e)}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(57)("keys"),n=i(40);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(18),n=o["__core-js_shared__"]||(o["__core-js_shared__"]={});t.exports=function(t){return n[t]||(n[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){var o=i(20).f,n=i(22),s=i(13)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(135)(!0);i(79)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){e.f=i(13)},function(t,e,i){var o=i(18),n=i(7),s=i(52),r=i(61),a=i(20).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){var i=p().hours(0).minutes(0).seconds(0).milliseconds(0),o=i.clone().add(-3,"days").valueOf(),n=i.clone().add(3,"days").valueOf();this.millisecondsPerPixelCache=void 0,void 0===e?(this.start=o,this.end=n):(this.start=e.start||o,this.end=e.end||n),this.rolling=!1,this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={rtl:!1,start:null,end:null,moment:p,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10,rollingMode:{follow:!1,offset:.5}},this.options=c.extend({},this.defaultOptions),this.props={touch:{}},this.animationTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.body.dom.rollingModeBtn.addEventListener("click",this.startRolling.bind(this)),this.setOptions(e)}function s(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}var r=i(8),a=o(r),h=i(19),d=o(h),l=i(6),u=o(l),c=i(2),p=i(9),f=i(16),m=i(36);n.prototype=new f,n.prototype.setOptions=function(t){if(t){var e=["animation","direction","min","max","zoomMin","zoomMax","moveable","zoomable","moment","activate","hiddenDates","zoomKey","rtl","showCurrentTime","rollingMode","horizontalScroll"];c.selectiveExtend(e,this.options,t),t.rollingMode&&t.rollingMode.follow&&this.startRolling(),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},n.prototype.startRolling=function(){function t(){e.stopRolling(),e.rolling=!0;var i=e.end-e.start,o=c.convert(new Date,"Date").valueOf(),n=o-i*e.options.rollingMode.offset,s=o+i*(1-e.options.rollingMode.offset),r={animation:!1};e.setRange(n,s,r),i=1/e.conversion(e.body.domProps.center.width).scale/10,i<30&&(i=30),i>1e3&&(i=1e3),e.body.dom.rollingModeBtn.style.visibility="hidden",e.currentTimeTimer=setTimeout(t,i)}var e=this;t()},n.prototype.stopRolling=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),this.rolling=!1,this.body.dom.rollingModeBtn.style.visibility="visible")},n.prototype.setRange=function(t,e,i,o,n){i||(i={}),!0!==i.byUser&&(i.byUser=!1);var s=this,r=void 0!=t?c.convert(t,"Date").valueOf():null,h=void 0!=e?c.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),this.millisecondsPerPixelCache=void 0,i.animation){var l=this.start,p=this.end,f="object"===(0,u.default)(i.animation)&&"duration"in i.animation?i.animation.duration:500,v="object"===(0,u.default)(i.animation)&&"easingFunction"in i.animation?i.animation.easingFunction:"easeInOutQuad",g=c.easingFunctions[v];if(!g)throw new Error("Unknown easing function "+(0,d.default)(v)+". Choose from: "+(0,a.default)(c.easingFunctions).join(", "));var y=(new Date).valueOf(),b=!1;return function t(){if(!s.props.touch.dragging){var e=(new Date).valueOf(),a=e-y,d=g(a/f),u=a>f,c=u||null===r?r:l+(r-l)*d,v=u||null===h?h:p+(h-p)*d;_=s._applyRange(c,v),m.updateHiddenDates(s.options.moment,s.body,s.options.hiddenDates),b=b||_;var w={start:new Date(s.start),end:new Date(s.end),byUser:i.byUser,event:i.event};if(n&&n(d,_,u),_&&s.body.emitter.emit("rangechange",w),u){if(b&&(s.body.emitter.emit("rangechanged",w),o))return o()}else s.animationTimer=setTimeout(t,20)}}()}var _=this._applyRange(r,h);if(m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),_){var w={start:new Date(this.start),end:new Date(this.end),byUser:i.byUser,event:i.event};if(this.body.emitter.emit("rangechange",w),clearTimeout(s.timeoutID),s.timeoutID=setTimeout(function(){s.body.emitter.emit("rangechanged",w)},200),o)return o()}},n.prototype.getMillisecondsPerPixel=function(){return void 0===this.millisecondsPerPixelCache&&(this.millisecondsPerPixelCache=(this.end-this.start)/this.body.dom.center.clientWidth),this.millisecondsPerPixelCache},n.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},n.prototype._applyRange=function(t,e){var i,o=null!=t?c.convert(t,"Date").valueOf():this.start,n=null!=e?c.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?c.convert(this.options.max,"Date").valueOf():null,r=null!=this.options.min?c.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(ns&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=r&&o=this.start-.5&&n<=this.end?(o=this.start,n=this.end):(i=a-(n-o),o-=i/2,n+=i/2)}}if(null!==this.options.zoomMax){var h=parseFloat(this.options.zoomMax);h<0&&(h=0),n-o>h&&(this.end-this.start===h&&othis.end?(o=this.start,n=this.end):(i=n-o-h,o+=i/2,n-=i/2))}var d=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,d},n.prototype.getRange=function(){return{start:this.start,end:this.end}},n.prototype.conversion=function(t,e){return n.conversion(this.start,this.end,t,e)},n.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},n.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.stopRolling(),this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},n.prototype._onDrag=function(t){if(t&&this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;s(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start;o-=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);var n,r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;n=this.options.rtl?i/r*o:-i/r*o;var a=this.props.touch.start+n,h=this.props.touch.end+n,d=m.snapAwayFromHidden(this.body.hiddenDates,a,this.previousDelta-i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0);if(d!=a||l!=h)return this.deltaDifference+=i,this.props.touch.start=d,this.props.touch.end=l,void this._onDrag(t);this.previousDelta=i,this._applyRange(a,h);var u=new Date(this.start),c=new Date(this.end);this.body.emitter.emit("rangechange",{start:u,end:c,byUser:!0,event:t}),this.body.emitter.emit("panmove")}},n.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0,event:t}))},n.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),!(this.options.zoomKey&&!t[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable)&&this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&e){var i;i=e<0?1-e/5:1/(1+e/5);var o;if(this.rolling)o=this.start+(this.end-this.start)*this.options.rollingMode.offset;else{var n=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center);o=this._pointerToDate(n)}this.zoom(i,o,e,t),t.preventDefault()}},n.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0,c.preventDefault(t)},n.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){c.preventDefault(t),this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center)),this.stopRolling();var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e<=0,this.endToFront=e-1<=0;var h=m.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),d=m.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&d==a||(this.props.touch.start=h,this.props.touch.end=d,this.scaleOffset=1-t.scale,r=h,a=d);var l={animation:!1,byUser:!0,event:t};this.setRange(r,a,l),this.startToFront=!1,this.endToFront=!0}},n.prototype._isInsideRange=function(t){var e,i=t.center?t.center.x:t.clientX;e=this.options.rtl?i-c.getAbsoluteLeft(this.body.dom.centerContainer):c.getAbsoluteRight(this.body.dom.centerContainer)-i;var o=this.body.util.toTime(e);return o>=this.start&&o<=this.end},n.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(s(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},n.prototype.getPointer=function(t,e){return this.options.rtl?{x:c.getAbsoluteRight(e)-t.x,y:t.y-c.getAbsoluteTop(e)}:{x:t.x-c.getAbsoluteLeft(e),y:t.y-c.getAbsoluteTop(e)}},n.prototype.zoom=function(t,e,i,o){null==e&&(e=(this.start+this.end)/2);var n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),s=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),r=n-s,a=e-s+(this.start-(e-s))*t,h=e+r+(this.end-(e+r))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0) +;var d=m.snapAwayFromHidden(this.body.hiddenDates,a,i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,-i,!0);d==a&&l==h||(a=d,h=l);var u={animation:!1,byUser:!0,event:o};this.setRange(a,h,u),this.startToFront=!1,this.endToFront=!0},n.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},n.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i,s={animation:!1,byUser:!0,event:null};this.setRange(o,n,s)},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(){}var s=i(19),r=o(s),a=i(6),h=o(a),d=i(44),l=i(10),u=i(37),c=i(2),p=i(45),f=i(97),m=i(36),v=i(46);d(n.prototype),n.prototype._create=function(t){function e(t){this.isActive()&&this.emit("mousewheel",t);var e=0,i=0;if("detail"in t&&(i=-1*t.detail),"wheelDelta"in t&&(i=t.wheelDelta),"wheelDeltaY"in t&&(i=t.wheelDeltaY),"wheelDeltaX"in t&&(e=-1*t.wheelDeltaX),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(e=-1*i,i=0),"deltaY"in t&&(i=-1*t.deltaY),"deltaX"in t&&(e=t.deltaX),this.options.zoomKey&&!t[this.options.zoomKey])if(t.preventDefault(),this.options.verticalScroll&&Math.abs(i)>=Math.abs(e)){var o=this.props.scrollTop,n=o+i;this.isActive()&&(this._setScrollTop(n),this._redraw(),this.emit("scroll",t))}else if(this.options.horizontalScroll){var s=Math.abs(e)>=Math.abs(i)?e:i,r=s/120*(this.range.end-this.range.start)/20,a=this.range.start+r,h=this.range.end+r,d={animation:!1,byUser:!0,event:t};this.range.setRange(a,h,d)}}function i(t){if(s.options.verticalScroll&&(t.preventDefault(),s.isActive())){var e=-t.target.scrollTop;s._setScrollTop(e),s._redraw(),s.emit("scrollSide",t)}}function o(t){if(t.preventDefault&&t.preventDefault(),!(!t.target.className.indexOf("vis")>-1||a))return t.dataTransfer.dropEffect="move",a=!0,!1}function n(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation();try{var e=JSON.parse(t.dataTransfer.getData("text"));if(!e||!e.content)return}catch(t){return!1}return a=!1,t.center={x:t.clientX,y:t.clientY},"item"!==e.target?s.itemSet._onAddItem(t):s.itemSet._onDropObjectOnItem(t),s.emit("drop",s.getEventProperties(t)),!1}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.rollingModeBtn=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.rollingModeBtn.className="vis-rolling-mode-btn",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.rollingModeBtn),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.on("rangechange",function(){!0===this.initialDrawDone&&this._redraw()}.bind(this)),this.on("rangechanged",function(){this.initialRangeChangeDone||(this.initialRangeChangeDone=!0)}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("panmove",this._onDrag.bind(this));var s=this;this._origRedraw=this._redraw.bind(this),this._redraw=c.throttle(this._origRedraw),this.on("_change",function(t){s.itemSet&&s.itemSet.initialItemSetDrawn&&t&&1==t.queue?s._redraw():s._origRedraw()}),this.hammer=new l(this.dom.root);var r=this.hammer.get("pinch").set({enable:!0});u.disablePreventDefaultVertically(r),this.hammer.get("pan").set({threshold:5,direction:l.DIRECTION_HORIZONTAL}),this.listeners={},["tap","doubletap","press","pinch","pan","panstart","panmove","panend"].forEach(function(t){var e=function(e){s.isActive()&&s.emit(t,e)};s.hammer.on(t,e),s.listeners[t]=e}),u.onTouch(this.hammer,function(t){s.emit("touch",t)}.bind(this)),u.onRelease(this.hammer,function(t){s.emit("release",t)}.bind(this)),this.dom.centerContainer.addEventListener?(this.dom.centerContainer.addEventListener("mousewheel",e.bind(this),!1),this.dom.centerContainer.addEventListener("DOMMouseScroll",e.bind(this),!1)):this.dom.centerContainer.attachEvent("onmousewheel",e.bind(this)),this.dom.left.parentNode.addEventListener("scroll",i.bind(this)),this.dom.right.parentNode.addEventListener("scroll",i.bind(this));var a=!1;if(this.dom.center.addEventListener("dragover",o.bind(this),!1),this.dom.center.addEventListener("drop",n.bind(this),!1),this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,this.initialRangeChangeDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},n.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","zoomKey","horizontalScroll","verticalScroll"];if(c.selectiveExtend(e,this.options,t),this.dom.rollingModeBtn.style.visibility="hidden",this.options.rtl&&(this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"),this.options.verticalScroll&&(this.options.rtl?this.dom.rightContainer.className="vis-panel vis-right vis-vertical-scroll":this.dom.leftContainer.className="vis-panel vis-left vis-vertical-scroll"),"object"!==(0,h.default)(this.options.orientation)&&(this.options.orientation={item:void 0,axis:void 0}),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===(0,h.default)(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new p(this.body);i.setOptions=function(t){var e=t?c.extend({},t):{};e.orientation="top",p.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);-1!==o&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&m.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new f(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var n=c.deepExtend({},this.options);this.components.forEach(function(t){c.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},n.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));i.length>0&&i[0].setCustomTime(t)},n.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));return e[0].getCustomTime()},n.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));if(i.length>0)return i[0].setCustomTitle(t)},n.prototype.getEventProperties=function(t){return{event:t}},n.prototype.addCustomTime=function(t,e){var i=void 0!==t?c.convert(t,"Date").valueOf():new Date;if(this.customTimes.some(function(t){return t.options.id===e}))throw new Error("A custom time with id "+(0,r.default)(e)+" already exists");var o=new v(this.body,c.extend({},this.options,{time:i,id:e}));return this.customTimes.push(o),this.components.push(o),this._redraw(),e},n.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},n.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},n.prototype.fit=function(t,e){var i=this.getDataRange();if(null!==i.min||null!==i.max){var o=i.max-i.min,n=new Date(i.min.valueOf()-.01*o),s=new Date(i.max.valueOf()+.01*o),r=!t||void 0===t.animation||t.animation;this.range.setRange(n,s,{animation:r},e)}},n.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},n.prototype.setWindow=function(t,e,i,o){"function"==typeof arguments[2]&&(o=arguments[2],i={});var n,s;1==arguments.length?(s=arguments[0],n=void 0===s.animation||s.animation,this.range.setRange(s.start,s.end,{animation:n})):2==arguments.length&&"function"==typeof arguments[1]?(s=arguments[0],o=arguments[1],n=void 0===s.animation||s.animation,this.range.setRange(s.start,s.end,{animation:n},o)):(n=!i||void 0===i.animation||i.animation,this.range.setRange(t,e,{animation:n},o))},n.prototype.moveTo=function(t,e,i){"function"==typeof arguments[1]&&(i=arguments[1],e={});var o=this.range.end-this.range.start,n=c.convert(t,"Date").valueOf(),s=n-o/2,r=n+o/2,a=!e||void 0===e.animation||e.animation;this.range.setRange(s,r,{animation:a},i)},n.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},n.prototype.zoomIn=function(t,e,i){if(!(!t||t<0||t>1)){"function"==typeof arguments[1]&&(i=arguments[1],e={});var o=this.getWindow(),n=o.start.valueOf(),s=o.end.valueOf(),r=s-n,a=r/(1+t),h=(r-a)/2,d=n+h,l=s-h;this.setWindow(d,l,e,i)}},n.prototype.zoomOut=function(t,e,i){if(!(!t||t<0||t>1)){"function"==typeof arguments[1]&&(i=arguments[1],e={});var o=this.getWindow(),n=o.start.valueOf(),s=o.end.valueOf(),r=s-n,a=n-r*t/2,h=s+r*t/2;this.setWindow(a,h,e,i)}},n.prototype.redraw=function(){this._redraw()},n.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(c.addClassName(o.root,"vis-top"),c.removeClassName(o.root,"vis-bottom")):(c.removeClassName(o.root,"vis-top"),c.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=c.option.asSize(e.maxHeight,""),o.root.style.minHeight=c.option.asSize(e.minHeight,""),o.root.style.width=c.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top,i.borderRootHeight=o.root.offsetHeight-o.root.clientHeight,i.borderRootWidth=o.root.offsetWidth-o.root.clientWidth,0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(i.borderRootWidth=i.borderRootHeight),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var n=Math.max(i.left.height,i.center.height,i.right.height),s=i.top.height+n+i.bottom.height+i.borderRootHeight+i.border.top+i.border.bottom;o.root.style.height=c.option.asSize(e.height,s+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-i.borderRootHeight;var r=i.root.height-i.top.height-i.bottom.height-i.borderRootHeight;i.centerContainer.height=r,i.leftContainer.height=r,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-i.borderRootWidth,this.initialDrawDone||(i.scrollbarWidth=c.getScrollBarWidth()),e.verticalScroll?e.rtl?(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth+i.scrollbarWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth+i.scrollbarWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right),this._setDOM();var a=this._updateScrollTop();"top"!=e.orientation.item&&(a+=Math.max(i.centerContainer.height-i.center.height-i.border.top-i.border.bottom,0)),o.center.style.top=a+"px";var h=0==i.scrollTop?"hidden":"",d=i.scrollTop==i.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=h,o.shadowBottom.style.visibility=d,o.shadowTopLeft.style.visibility=h,o.shadowBottomLeft.style.visibility=d,o.shadowTopRight.style.visibility=h,o.shadowBottomRight.style.visibility=d,e.verticalScroll&&(o.rightContainer.className="vis-panel vis-right vis-vertical-scroll",o.leftContainer.className="vis-panel vis-left vis-vertical-scroll",o.shadowTopRight.style.visibility="hidden",o.shadowBottomRight.style.visibility="hidden",o.shadowTopLeft.style.visibility="hidden",o.shadowBottomLeft.style.visibility="hidden",o.left.style.top="0px",o.right.style.top="0px"),(!e.verticalScroll||i.center.heighti.centerContainer.height;this.hammer.get("pan").set({direction:u?l.DIRECTION_ALL:l.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});if(t){if(this.redrawCount<5)return void this.body.emitter.emit("_change");console.log("WARNING: infinite loop in redraw?")}else this.redrawCount=0;this.body.emitter.emit("changed")}},n.prototype._setDOM=function(){var t=this.props,e=this.dom;t.leftContainer.width=t.left.width,t.rightContainer.width=t.right.width;var i=t.root.width-t.left.width-t.right.width-t.borderRootWidth;t.center.width=i,t.centerContainer.width=i,t.top.width=i,t.bottom.width=i,e.background.style.height=t.background.height+"px",e.backgroundVertical.style.height=t.background.height+"px",e.backgroundHorizontal.style.height=t.centerContainer.height+"px",e.centerContainer.style.height=t.centerContainer.height+"px",e.leftContainer.style.height=t.leftContainer.height+"px",e.rightContainer.style.height=t.rightContainer.height+"px",e.background.style.width=t.background.width+"px",e.backgroundVertical.style.width=t.centerContainer.width+"px",e.backgroundHorizontal.style.width=t.background.width+"px",e.centerContainer.style.width=t.center.width+"px",e.top.style.width=t.top.width+"px",e.bottom.style.width=t.bottom.width+"px",e.background.style.left="0",e.background.style.top="0",e.backgroundVertical.style.left=t.left.width+t.border.left+"px",e.backgroundVertical.style.top="0",e.backgroundHorizontal.style.left="0",e.backgroundHorizontal.style.top=t.top.height+"px",e.centerContainer.style.left=t.left.width+"px",e.centerContainer.style.top=t.top.height+"px",e.leftContainer.style.left="0",e.leftContainer.style.top=t.top.height+"px",e.rightContainer.style.left=t.left.width+t.center.width+"px",e.rightContainer.style.top=t.top.height+"px",e.top.style.left=t.left.width+"px",e.top.style.top="0",e.bottom.style.left=t.left.width+"px",e.bottom.style.top=t.top.height+t.centerContainer.height+"px",e.center.style.left="0",e.left.style.left="0",e.right.style.left="0"},n.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},n.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},n.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},n.prototype._toTime=function(t){return m.toTime(this,t,this.props.center.width)},n.prototype._toGlobalTime=function(t){return m.toTime(this,t,this.props.root.width)},n.prototype._toScreen=function(t){return m.toScreen(this,t,this.props.center.width)},n.prototype._toGlobalScreen=function(t){return m.toScreen(this,t,this.props.root.width)},n.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},n.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){if(1!=t.options.autoResize)return void t._stopAutoResize();t.dom.root&&(t.dom.root.offsetWidth==t.props.lastWidth&&t.dom.root.offsetHeight==t.props.lastHeight||(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.props.scrollbarWidth=c.getScrollBarWidth(),t.body.emitter.emit("_change")))},c.addEventListener(window,"resize",this._onResize),t.dom.root&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight),this.watchTimer=setInterval(this._onResize,1e3)},n.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),this._onResize&&(c.removeEventListener(window,"resize",this._onResize),this._onResize=null)},n.prototype._onTouch=function(t){this.touch.allowDragging=!0,this.touch.initialScrollTop=this.props.scrollTop},n.prototype._onPinch=function(t){this.touch.allowDragging=!1},n.prototype._onDrag=function(t){if(t&&this.touch.allowDragging){var e=t.deltaY,i=this._getScrollTop(),o=this._setScrollTop(this.touch.initialScrollTop+e);this.options.verticalScroll&&(this.dom.left.parentNode.scrollTop=-this.props.scrollTop,this.dom.right.parentNode.scrollTop=-this.props.scrollTop),o!=i&&this.emit("verticalDrag")}},n.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},n.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("top"!=this.options.orientation.item&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop0&&this.current.milliseconds()0&&this.current.seconds()0&&this.current.minutes()0&&this.current.hours()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){31104e9>t&&(this.scale="year",this.step=1e3),15552e9>t&&(this.scale="year",this.step=500),31104e8>t&&(this.scale="year",this.step=100),15552e8>t&&(this.scale="year",this.step=50),31104e7>t&&(this.scale="year",this.step=10),15552e7>t&&(this.scale="year",this.step=5),31104e6>t&&(this.scale="year",this.step=1),7776e6>t&&(this.scale="month",this.step=3),2592e6>t&&(this.scale="month",this.step=1),432e6>t&&(this.scale="day",this.step=5),1728e5>t&&(this.scale="day",this.step=2),864e5>t&&(this.scale="day",this.step=1),432e5>t&&(this.scale="weekday",this.step=1),144e5>t&&(this.scale="hour",this.step=4),36e5>t&&(this.scale="hour",this.step=1),9e5>t&&(this.scale="minute",this.step=15),6e5>t&&(this.scale="minute",this.step=10),3e5>t&&(this.scale="minute",this.step=5),6e4>t&&(this.scale="minute",this.step=1),15e3>t&&(this.scale="second",this.step=15),1e4>t&&(this.scale="second",this.step=10),5e3>t&&(this.scale="second",this.step=5),1e3>t&&(this.scale="second",this.step=1),200>t&&(this.scale="millisecond",this.step=200),100>t&&(this.scale="millisecond",this.step=100),50>t&&(this.scale="millisecond",this.step=50),10>t&&(this.scale="millisecond",this.step=10),5>t&&(this.scale="millisecond",this.step=5),1>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("week"==e)o.weekday()>2?(o.weekday(0),o.add(1,"week")):o.weekday(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.scale){case"year":case"month":case"week":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.scale){case"week":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":case"week":return 1==t.date();case"month":return 0==t.month();case"year":default:return!1}},o.prototype.getLabelMinor=function(t){if(void 0==t&&(t=this.current),t instanceof Date&&(t=this.moment(t)),"function"==typeof this.format.minorLabels)return this.format.minorLabels(t,this.scale,this.step);var e=this.format.minorLabels[this.scale];switch(this.scale){case"week":if(this.isMajor()&&0!==t.weekday())return"";default:return e&&e.length>0?this.moment(t).format(e):""}},o.prototype.getLabelMajor=function(t){if(void 0==t&&(t=this.current),t instanceof Date&&(t=this.moment(t)),"function"==typeof this.format.majorLabels)return this.format.majorLabels(t,this.scale,this.step);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/a%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(n().add(1,"day"),"day")?" vis-tomorrow":t.isSame(n().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}var n=this.moment,s=this.moment(this.current),r=s.locale?s.locale("en"):s.lang("en"),a=this.step,h=[];switch(this.scale){case"millisecond":h.push(e(r)),h.push(t(r.milliseconds()));break;case"second":h.push(e(r)),h.push(t(r.seconds()));break;case"minute":h.push(e(r)),h.push(t(r.minutes()));break;case"hour":h.push("vis-h"+r.hours()+(4==this.step?"-h"+(r.hours()+4):"")),h.push(e(r)),h.push(t(r.hours()));break;case"weekday":h.push("vis-"+r.format("dddd").toLowerCase()),h.push(e(r)),h.push(i(r)),h.push(t(r.date()));break;case"day":h.push("vis-day"+r.date()),h.push("vis-"+r.format("MMMM").toLowerCase()),h.push(e(r)),h.push(o(r)),h.push(this.step<=2?e(r):""),h.push(this.step<=2?"vis-"+r.format("dddd").toLowerCase():""), +h.push(t(r.date()-1));break;case"week":h.push("vis-week"+r.format("w")),h.push(i(r)),h.push(t(r.week()));break;case"month":h.push("vis-"+r.format("MMMM").toLowerCase()),h.push(o(r)),h.push(t(r.month()));break;case"year":h.push("vis-year"+r.year()),h.push(function(t){return t.isSame(new Date,"year")?" vis-current-year":""}(r)),h.push(t(r.year()))}return h.filter(String).join(" ")},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={rtl:!1,showCurrentTime:!0,moment:r,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(2),s=i(16),r=i(9),a=i(98);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["rtl","showCurrentTime","moment","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=this.options.moment((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline/#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+e.format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.options.rtl?this.bar.style.right=i+"px":this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;o<30&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e,i){function o(t,e,i){if(this.groupId=t,this.subgroups={},this.subgroupStack={},this.subgroupStackAll=!1,this.doInnerStack=!1,this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.isVisible=null,this.stackDirty=!0,e&&e.nestedGroups&&(this.nestedGroups=e.nestedGroups,0==e.showNested?this.showNested=!1:this.showNested=!0),e&&e.subgroupStack)if("boolean"==typeof e.subgroupStack)this.doInnerStack=e.subgroupStack,this.subgroupStackAll=e.subgroupStack;else for(var o in e.subgroupStack)this.subgroupStack[o]=e.subgroupStack[o],this.doInnerStack=this.doInnerStack||e.subgroupStack[o];this.nestedInGroup=null,this.dom={},this.props={label:{width:0,height:0}},this.className=null,this.items={},this.visibleItems=[],this.itemsInRange=[],this.orderedItems={byStart:[],byEnd:[]},this.checkRangedItems=!1;var n=this;this.itemSet.body.emitter.on("checkRangedItems",function(){n.checkRangedItems=!0}),this._create(),this.setData(e)}var n=i(8),s=function(t){return t&&t.__esModule?t:{default:t}}(n),r=i(2),a=i(100);o.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-group"]=this,this.dom.foreground=i,this.dom.background=document.createElement("div"),this.dom.background.className="vis-group",this.dom.axis=document.createElement("div"),this.dom.axis.className="vis-group",this.dom.marker=document.createElement("div"),this.dom.marker.style.visibility="hidden",this.dom.marker.style.position="absolute",this.dom.marker.innerHTML="",this.dom.background.appendChild(this.dom.marker)},o.prototype.setData=function(t){var e,i;if(this.itemSet.options&&this.itemSet.options.groupTemplate?(i=this.itemSet.options.groupTemplate.bind(this),e=i(t,this.dom.inner)):e=t&&t.content,e instanceof Element){for(this.dom.inner.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else e instanceof Object?i(t,this.dom.inner):this.dom.inner.innerHTML=void 0!==e&&null!==e?e:this.groupId||"";if(this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?r.removeClassName(this.dom.inner,"vis-hidden"):r.addClassName(this.dom.inner,"vis-hidden"),t&&t.nestedGroups){this.nestedGroups&&this.nestedGroups==t.nestedGroups||(this.nestedGroups=t.nestedGroups),void 0===t.showNested&&void 0!==this.showNested||(0==t.showNested?this.showNested=!1:this.showNested=!0),r.addClassName(this.dom.label,"vis-nesting-group");var o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed";this.showNested?(r.removeClassName(this.dom.label,o),r.addClassName(this.dom.label,"expanded")):(r.removeClassName(this.dom.label,"expanded"),r.addClassName(this.dom.label,o))}else this.nestedGroups&&(this.nestedGroups=null,o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed",r.removeClassName(this.dom.label,o),r.removeClassName(this.dom.label,"expanded"),r.removeClassName(this.dom.label,"vis-nesting-group"));t&&t.nestedInGroup&&(r.addClassName(this.dom.label,"vis-nested-group"),this.itemSet.options&&this.itemSet.options.rtl?this.dom.inner.style.paddingRight="30px":this.dom.inner.style.paddingLeft="30px");var n=t&&t.className||null;n!=this.className&&(this.className&&(r.removeClassName(this.dom.label,this.className),r.removeClassName(this.dom.foreground,this.className),r.removeClassName(this.dom.background,this.className),r.removeClassName(this.dom.axis,this.className)),r.addClassName(this.dom.label,n),r.addClassName(this.dom.foreground,n),r.addClassName(this.dom.background,n),r.addClassName(this.dom.axis,n),this.className=n),this.style&&(r.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(r.addCssText(this.dom.label,t.style),this.style=t.style)},o.prototype.getLabelWidth=function(){return this.props.label.width},o.prototype._didMarkerHeightChange=function(){var t=this.dom.marker.clientHeight;if(t!=this.lastMarkerHeight){this.lastMarkerHeight=t;var e={},i=0;r.forEach(this.items,function(t,o){if(t.dirty=!0,t.displayed){e[o]=t.redraw(!0),i=e[o].length}});if(i>0)for(var o=0;o0)for(var u=0;u0){var e=this;this.resetSubgroups(),r.forEach(this.visibleItems,function(i){void 0!==i.data.subgroup&&(e.subgroups[i.data.subgroup].height=Math.max(e.subgroups[i.data.subgroup].height,i.height+t.item.vertical),e.subgroups[i.data.subgroup].visible=!0)})}},o.prototype._isGroupVisible=function(t,e){return this.top<=t.body.domProps.centerContainer.height-t.body.domProps.scrollTop+e.axis&&this.top+this.height+e.axis>=-t.body.domProps.scrollTop},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,n=i[0].top+i[0].height;if(r.forEach(i,function(t){o=Math.min(o,t.top),n=Math.max(n,t.top+t.height)}),o>t.axis){var s=o-t.axis;n-=s,r.forEach(i,function(t){t.top-=s})}e=n+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),this.stackDirty=!0,void 0!==t.data.subgroup&&(this._addToSubgroup(t),this.orderSubgroups()),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},o.prototype._addToSubgroup=function(t,e){e=e||t.data.subgroup,void 0!=e&&void 0===this.subgroups[e]&&(this.subgroups[e]={height:0,top:0,start:t.data.start,end:t.data.end||t.data.start,visible:!1,index:this.subgroupIndex,items:[],stack:this.subgroupStackAll||this.subgroupStack[e]||!1},this.subgroupIndex++),new Date(t.data.start)new Date(this.subgroups[e].end)&&(this.subgroups[e].end=i),this.subgroups[e].items.push(t)},o.prototype._updateSubgroupsSizes=function(){var t=this;if(t.subgroups)for(var e in t.subgroups){var i=t.subgroups[e].items[0].data.end||t.subgroups[e].items[0].data.start,o=t.subgroups[e].items[0].data.start,n=i-1;t.subgroups[e].items.forEach(function(t){new Date(t.data.start)new Date(n)&&(n=e)}),t.subgroups[e].start=o,t.subgroups[e].end=new Date(n-1)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t,e=[];if("string"==typeof this.subgroupOrderer){for(t in this.subgroups)e.push({subgroup:t,sortField:this.subgroups[t].items[0].data[this.subgroupOrderer]});e.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(t in this.subgroups)e.push(this.subgroups[t].items[0].data);e.sort(this.subgroupOrderer)}if(e.length>0)for(var i=0;i=0&&(i.items.splice(o,1),i.items.length?this._updateSubgroupsSizes():delete this.subgroups[e])}}},o.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},o.prototype.order=function(){for(var t=r.toArray(this.items),e=[],i=[],o=0;o0)for(var l=0;lh}),1==this.checkRangedItems)for(this.checkRangedItems=!1,l=0;lh})}var p={},f=0;for(l=0;l0)for(var v=0;v=0&&(r=e[s],!n(r));s--)void 0===o[r.id]&&(o[r.id]=!0,i.push(r));for(s=t+1;st.start},o.prototype._createDomElement=function(){this.dom||(this.dom={},this.dom.box=document.createElement("div"),this.dom.frame=document.createElement("div"),this.dom.frame.className="vis-item-overflow",this.dom.box.appendChild(this.dom.frame),this.dom.visibleFrame=document.createElement("div"),this.dom.visibleFrame.className="vis-item-visible-frame",this.dom.box.appendChild(this.dom.visibleFrame),this.dom.content=document.createElement("div"),this.dom.content.className="vis-item-content",this.dom.frame.appendChild(this.dom.content),this.dom.box["timeline-item"]=this,this.dirty=!0)},o.prototype._appendDomElement=function(){if(!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!this.dom.box.parentNode){var t=this.parent.dom.foreground;if(!t)throw new Error("Cannot redraw item: parent has no foreground container element");t.appendChild(this.dom.box)}this.displayed=!0},o.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var t=this.editable.updateTime||this.editable.updateGroup,e=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(t?" vis-editable":" vis-readonly");this.dom.box.className=this.baseClassName+e,this.dom.content.style.maxWidth="none"}},o.prototype._getDomComponentsSizes=function(){return this.overflow="hidden"!==window.getComputedStyle(this.dom.frame).overflow,{content:{width:this.dom.content.offsetWidth},box:{height:this.dom.box.offsetHeight}}},o.prototype._updateDomComponentsSizes=function(t){this.props.content.width=t.content.width,this.height=t.box.height,this.dom.content.style.maxWidth="",this.dirty=!1},o.prototype._repaintDomAdditionals=function(){this._repaintOnItemUpdateTimeTooltip(this.dom.box),this._repaintDeleteButton(this.dom.box),this._repaintDragCenter(),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.redraw=function(t){var e,i=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){this.dirty&&(e=this._getDomComponentsSizes.bind(this)())}.bind(this),function(){this.dirty&&this._updateDomComponentsSizes.bind(this)(e)}.bind(this),this._repaintDomAdditionals.bind(this)];if(t)return i;var o;return i.forEach(function(t){o=t()}),o},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end),r=void 0===this.data.align?this.options.align:this.data.align;!1===this.data.limitSize||void 0!==t&&!0!==t||(n<-o&&(n=-o),s>2*o&&(s=2*o));var a=Math.max(s-n+.5,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=a+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=a,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=a+"px",r){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(a-i,0)+"px":this.dom.content.style.left=Math.max(a-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((a-i)/2,0)+"px":this.dom.content.style.left=Math.max((a-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:n<0?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":(this.dom.content.style.left=e+"px",this.dom.content.style.width="calc(100% - "+e+"px)")}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if((this.selected||this.options.itemsAlwaysDraggable.range)&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else this.selected||this.options.itemsAlwaysDraggable.range||!this.dom.dragLeft||(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if((this.selected||this.options.itemsAlwaysDraggable.range)&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else this.selected||this.options.itemsAlwaysDraggable.range||!this.dom.dragRight||(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(19),s=o(n),r=i(6),a=o(r),h=i(0),d=o(h),l=i(1),u=o(l),c=i(2),p=i(179).default,f=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,d.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},c.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new p(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===(void 0===t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),!1===this.options.filter&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,!0===this.options.enabled&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):!0!==e&&-1===e.indexOf(n)||(o=!0),!1!==o&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);if(!0===this.options.showButton){var s=document.createElement("div");s.className="vis-configuration vis-config-button",s.innerHTML="generate options",s.onclick=function(){t._printOptions()},s.onmouseover=function(){s.className="vis-configuration vis-config-button hover"},s.onmouseout=function(){s.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(s)}this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?i-1:0),n=1;n2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,o.innerHTML=!0===i?""+t+":":t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(1.2*e),d=a.max,h="range increased"),a.value=e}else a.value=o;var l=document.createElement("input");l.className="vis-configuration vis-config-rangeinput",l.value=a.value;var u=this;a.onchange=function(){l.value=this.value,u._update(Number(this.value),i)},a.oninput=function(){l.value=this.value};var c=this._makeLabel(i[i.length-1],i),p=this._makeItem(i,c,a,l);""!==h&&this.popupHistory[p]!==d&&(this.popupHistory[p]=d,this._setupPopup(h,p))}},{key:"_setupPopup",value:function(t,e){var i=this;if(!0===this.initialized&&!0===this.allowCreation&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=c.copyAndExtendArray(e,r);if("function"==typeof n&&!1===(o=n(r,e))&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=!1===i),!1!==o){s=!0;var d=this._getValue(h);if(a instanceof Array)this._handleArray(a,d,h);else if("string"==typeof a)this._makeTextInput(a,d,h);else if("boolean"==typeof a)this._makeCheckbox(a,d,h);else if(a instanceof Object){var l=!0;if(-1!==e.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(l=!1),!0===l)if(void 0!==a.enabled){var u=c.copyAndExtendArray(h,"enabled"),p=this._getValue(u);if(!0===p){var f=this._makeLabel(r,h,!0);this._makeItem(h,f),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,p,h)}else{var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;ethis.imageObj.height?i=this.imageObj.width/this.imageObj.height:o=this.imageObj.height/this.imageObj.width),t=2*this.options.size*i,e=2*this.options.size*o}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.radius=.5*this.width}},{key:"_drawRawCircle",value:function(t,e,i,o){this.initContextForDraw(t,o),t.circle(e,i,o.size),this.performFill(t,o)}},{key:"_drawImageAtPosition",value:function(t,e){if(0!=this.imageObj.width){t.globalAlpha=1,this.enableShadow(t,e);var i=1;!0===this.options.shapeProperties.interpolation&&(i=this.imageObj.width/this.width/this.body.view.scale),this.imageObj.drawImageAtPosition(t,i,this.left,this.top,this.width,this.height),this.disableShadow(t,e)}}},{key:"_drawImageLabel",value:function(t,e,i,o,n){var s,r=0;if(void 0!==this.height){r=.5*this.height;var a=this.labelModule.getTextSize(t,o,n);a.lineCount>=1&&(r+=a.height/2)}s=i+r,this.options.label&&(this.labelOffset=r),this.labelModule.draw(t,e,s,o,n,"hanging")}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(19),s=o(n),r=i(6),a=o(r),h=i(29),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=i(2),m=i(117).default,v=i(48).default,g=i(215).default,y=i(217).default,b=i(218).default,_=i(219).default,w=function(){function t(e,i,o,n){if((0,u.default)(this,t),void 0===i)throw new Error("No body provided");this.options=f.bridgeObject(o),this.globalOptions=o,this.defaultOptions=n,this.body=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new m(this.body,this.options,!0),this.setOptions(e)}return(0,p.default)(t,[{key:"setOptions",value:function(e){if(e){t.parseOptions(this.options,e,!0,this.globalOptions),void 0!==e.id&&(this.id=e.id),void 0!==e.from&&(this.fromId=e.from),void 0!==e.to&&(this.toId=e.to),void 0!==e.title&&(this.title=e.title),void 0!==e.value&&(e.value=parseFloat(e.value));var i=[e,this.options,this.defaultOptions];this.chooser=v.choosify("edge",i),this.updateLabelModule(e);var o=this.updateEdgeType();return this._setInteractionWidths(),this.connect(),void 0===e.hidden&&void 0===e.physics||(o=!0),o}}},{key:"getFormattingValues",value:function(){var t=!0===this.options.arrows.to||!0===this.options.arrows.to.enabled,e=!0===this.options.arrows.from||!0===this.options.arrows.from.enabled,i=!0===this.options.arrows.middle||!0===this.options.arrows.middle.enabled,o=this.options.color.inherit,n={toArrow:t,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,middleArrow:i,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,fromArrow:e,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,arrowStrikethrough:this.options.arrowStrikethrough,color:o?void 0:this.options.color.color,inheritsColor:o,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width};if(this.selected||this.hover)if(!0===this.chooser){if(this.selected){var s=this.options.selectionWidth;"function"==typeof s?n.width=s(n.width):"number"==typeof s&&(n.width+=s),n.width=Math.max(n.width,.3/this.body.view.scale),n.color=this.options.color.highlight,n.shadow=this.options.shadow.enabled}else if(this.hover){var r=this.options.hoverWidth;"function"==typeof r?n.width=r(n.width):"number"==typeof r&&(n.width+=r),n.width=Math.max(n.width,.3/this.body.view.scale),n.color=this.options.color.hover,n.shadow=this.options.shadow.enabled}}else"function"==typeof this.chooser&&(this.chooser(n,this.options.id,this.selected,this.hover),void 0!==n.color&&(n.inheritsColor=!1),!1===n.shadow&&(n.shadowColor===this.options.shadow.color&&n.shadowSize===this.options.shadow.size&&n.shadowX===this.options.shadow.x&&n.shadowY===this.options.shadow.y||(n.shadow=!0)));else n.shadow=this.options.shadow.enabled,n.width=Math.max(n.width,.3/this.body.view.scale);return n}},{key:"updateLabelModule",value:function(t){var e=[t,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,e),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateEdgeType",value:function(){var t=this.options.smooth,e=!1,i=!0;return void 0!==this.edgeType&&((this.edgeType instanceof y&&!0===t.enabled&&"dynamic"===t.type||this.edgeType instanceof g&&!0===t.enabled&&"cubicBezier"===t.type||this.edgeType instanceof b&&!0===t.enabled&&"dynamic"!==t.type&&"cubicBezier"!==t.type||this.edgeType instanceof _&&!1===t.type.enabled)&&(i=!1),!0===i&&(e=this.cleanup())),!0===i?!0===t.enabled?"dynamic"===t.type?(e=!0,this.edgeType=new y(this.options,this.body,this.labelModule)):"cubicBezier"===t.type?this.edgeType=new g(this.options,this.body,this.labelModule):this.edgeType=new b(this.options,this.body,this.labelModule):this.edgeType=new _(this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),e}},{key:"connect",value:function(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=void 0!==this.from&&void 0!==this.to,!0===this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}},{key:"disconnect",value:function(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}},{key:"getTitle",value:function(){return this.title}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(t,e,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(t,e,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(!0===this.options.scaling.label.enabled){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.width=this.options.scaling.min+o*n}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}},{key:"_setInteractionWidths",value:function(){"function"==typeof this.options.hoverWidth?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,"function"==typeof this.options.selectionWidth?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}},{key:"draw",value:function(t){var e=this.getFormattingValues();if(!e.hidden){var i=this.edgeType.getViaNode(),o={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,e.fromArrow&&(o.from=this.edgeType.getArrowData(t,"from",i,this.selected,this.hover,e),!1===e.arrowStrikethrough&&(this.edgeType.fromPoint=o.from.core)),e.toArrow&&(o.to=this.edgeType.getArrowData(t,"to",i,this.selected,this.hover,e),!1===e.arrowStrikethrough&&(this.edgeType.toPoint=o.to.core)),e.middleArrow&&(o.middle=this.edgeType.getArrowData(t,"middle",i,this.selected,this.hover,e)),this.edgeType.drawLine(t,e,this.selected,this.hover,i),this.drawArrows(t,o,e),this.drawLabel(t,i)}}},{key:"drawArrows",value:function(t,e,i){i.fromArrow&&this.edgeType.drawArrowHead(t,i,this.selected,this.hover,e.from),i.middleArrow&&this.edgeType.drawArrowHead(t,i,this.selected,this.hover,e.middle),i.toArrow&&this.edgeType.drawArrowHead(t,i,this.selected,this.hover,e.to)}},{key:"drawLabel",value:function(t,e){if(void 0!==this.options.label){var i=this.from,o=this.to;if(this.labelModule.differentState(this.selected,this.hover)&&this.labelModule.getTextSize(t,this.selected,this.hover),i.id!=o.id){this.labelModule.pointToSelf=!1;var n=this.edgeType.getPoint(.5,e);t.save();var s=this._getRotation(t);0!=s.angle&&(t.translate(s.x,s.y),t.rotate(s.angle)),this.labelModule.draw(t,n.x,n.y,this.selected,this.hover),t.restore()}else{this.labelModule.pointToSelf=!0;var r,a,h=this.options.selfReferenceSize;i.shape.width>i.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),n=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,n.x,n.y,this.selected,this.hover)}}}},{key:"getItemsOnPoint",value:function(t){var e=[];if(this.labelModule.visible()){var i=this._getRotation();v.pointInRect(this.labelModule.getSize(),t,i)&&e.push({edgeId:this.id,labelId:0})}var o={left:t.x,top:t.y};return this.isOverlappingWith(o)&&e.push({edgeId:this.id}),e}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=this.from.x,i=this.from.y,o=this.to.x,n=this.to.y,s=t.left,r=t.top;return this.edgeType.getDistanceToEdge(e,i,o,n,s,r)<10}return!1}},{key:"_getRotation",value:function(t){var e=this.edgeType.getViaNode(),i=this.edgeType.getPoint(.5,e);void 0!==t&&this.labelModule.calculateLabelSize(t,this.selected,this.hover,i.x,i.y);var o={x:i.x,y:this.labelModule.size.yLine,angle:0};if(!this.labelModule.visible())return o;if("horizontal"===this.options.font.align)return o;var n=this.from.y-this.to.y,s=this.from.x-this.to.x,r=Math.atan2(n,s);return(r<-1&&s<0||r>0&&s<0)&&(r+=Math.PI),o.angle=r,o}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}},{key:"remove",value:function(){this.cleanup(),this.disconnect(),delete this.body.edges[this.id]}},{key:"endPointsValid",value:function(){return void 0!==this.body.nodes[this.fromId]&&void 0!==this.body.nodes[this.toId]}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=["arrowStrikethrough","id","from","hidden","hoverWidth","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width","font","chosen","widthConstraint"];if(f.selectiveDeepExtend(r,t,e,i),v.isValidLabel(e.label)?t.label=e.label:t.label=void 0,f.mergeOptions(t,e,"smooth",o),f.mergeOptions(t,e,"shadow",o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:!0===i&&null===e.dashes&&(t.dashes=(0,d.default)(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),f.mergeOptions(t.scaling,e.scaling,"label",o.scaling)):!0===i&&null===e.scaling&&(t.scaling=(0,d.default)(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var h=e.arrows.toLowerCase();t.arrows.to.enabled=-1!=h.indexOf("to"),t.arrows.middle.enabled=-1!=h.indexOf("middle"),t.arrows.from.enabled=-1!=h.indexOf("from")}else{if("object"!==(0,a.default)(e.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+(0,s.default)(e.arrows));f.mergeOptions(t.arrows,e.arrows,"to",o.arrows),f.mergeOptions(t.arrows,e.arrows,"middle",o.arrows),f.mergeOptions(t.arrows,e.arrows,"from",o.arrows)}else!0===i&&null===e.arrows&&(t.arrows=(0,d.default)(o.arrows));if(void 0!==e.color&&null!==e.color){var l=e.color,u=t.color;if(n)f.deepExtend(u,o.color,!1,i);else for(var c in u)u.hasOwnProperty(c)&&delete u[c];if(f.isString(u))u.color=u,u.highlight=u,u.hover=u,u.inherit=!1,void 0===l.opacity&&(u.opacity=1);else{var p=!1;void 0!==l.color&&(u.color=l.color,p=!0),void 0!==l.highlight&&(u.highlight=l.highlight,p=!0),void 0!==l.hover&&(u.hover=l.hover,p=!0),void 0!==l.inherit&&(u.inherit=l.inherit),void 0!==l.opacity&&(u.opacity=Math.min(1,Math.max(0,l.opacity))),!0===p?u.inherit=!1:void 0===u.inherit&&(u.inherit="from")}}else!0===i&&null===e.color&&(t.color=f.bridgeObject(o.color));!0===i&&null===e.font&&(t.font=f.bridgeObject(o.font))}}]),t}();e.default=w},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(118),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_findBorderPositionBezier",value:function(t,e){var i,o,n,s,r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),h=0,d=0,l=1,u=this.to,c=!1;for(t.id===this.from.id&&(u=this.from,c=!0);d<=l&&h<10;){var p=.5*(d+l);if(i=this.getPoint(p,a),o=Math.atan2(u.y-i.y,u.x-i.x),n=u.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-u.x,2)+Math.pow(i.y-u.y,2)),r=n-s,Math.abs(r)<.2)break;r<0?!1===c?d=p:l=p:!1===c?l=p:d=p,h++}return i.t=p,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){var a=1e9,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=t,f=e;for(d=1;d<10;d++)l=.1*d,u=Math.pow(1-l,2)*t+2*l*(1-l)*r.x+Math.pow(l,2)*i,c=Math.pow(1-l,2)*e+2*l*(1-l)*r.y+Math.pow(l,2)*o,d>0&&(h=this._getDistanceToLine(p,f,u,c,n,s),a=h1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.shape.boundingBox.left&&(s=e.shape.boundingBox.left),re.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.x&&(s=e.x),re.y&&(o=e.y),nh;)o(a,i=e[h++])&&(~s(d,i)||d.push(i));return d}},function(t,e,i){var o=i(22),n=i(41),s=i(56)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(50),n=i(13)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){var o=i(17),n=i(7),s=i(28);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){var o=i(84),n=i(58).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(42),n=i(39),s=i(25),r=i(53),a=i(22),h=i(81),d=Object.getOwnPropertyDescriptor;e.f=i(21)?d:function(t,e){if(t=s(t),e=r(e,!0),h)try{return d(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e,i){t.exports={default:i(162),__esModule:!0}},function(t,e,i){function o(t,e){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0}t.exports=o},function(t,e,i){function o(t,e){if(void 0===t)throw new Error("No container element defined");if(this.container=t,this.visible=!e||void 0==e.visible||e.visible,this.visible){this.frame=document.createElement("DIV"),this.frame.style.width="100%",this.frame.style.position="relative",this.container.appendChild(this.frame),this.frame.prev=document.createElement("INPUT"),this.frame.prev.type="BUTTON",this.frame.prev.value="Prev",this.frame.appendChild(this.frame.prev),this.frame.play=document.createElement("INPUT"),this.frame.play.type="BUTTON",this.frame.play.value="Play",this.frame.appendChild(this.frame.play),this.frame.next=document.createElement("INPUT"),this.frame.next.type="BUTTON",this.frame.next.value="Next",this.frame.appendChild(this.frame.next),this.frame.bar=document.createElement("INPUT"),this.frame.bar.type="BUTTON",this.frame.bar.style.position="absolute",this.frame.bar.style.border="1px solid red",this.frame.bar.style.width="100px",this.frame.bar.style.height="6px",this.frame.bar.style.borderRadius="2px",this.frame.bar.style.MozBorderRadius="2px",this.frame.bar.style.border="1px solid #7F7F7F",this.frame.bar.style.backgroundColor="#E5E5E5",this.frame.appendChild(this.frame.bar),this.frame.slide=document.createElement("INPUT"),this.frame.slide.type="BUTTON",this.frame.slide.style.margin="0px",this.frame.slide.value=" ",this.frame.slide.style.position="relative",this.frame.slide.style.left="-100px",this.frame.appendChild(this.frame.slide);var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.frame.prev.onclick=function(t){i.prev(t)},this.frame.play.onclick=function(t){i.togglePlay(t)},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var n=i(2);o.prototype.prev=function(){var t=this.getIndex();t>0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(tthis.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10;return t/(this.values.length-1)*e+3},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e,i){function o(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}o.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.prototype.setRange=function(t,e,i,o){if(!this.isNumeric(t))throw new Error("Parameter 'start' is not numeric; value: "+t);if(!this.isNumeric(e))throw new Error("Parameter 'end' is not numeric; value: "+t);if(!this.isNumeric(i))throw new Error("Parameter 'step' is not numeric; value: "+t);this._start=t||0,this._end=e||0,this.setStep(i,o)},o.prototype.setStep=function(t,e){void 0===t||t<=0||(void 0!==e&&(this.prettyStep=e),!0===this.prettyStep?this._step=o.calculatePrettyStep(t):this._step=t)},o.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),s<=0&&(s=1),s},o.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},o.prototype.getStep=function(){return this._step},o.prototype.start=function(t){void 0===t&&(t=!1),this._current=this._start-this._start%this._step,t&&this.getCurrent()this._end},t.exports=o},function(t,e,i){function o(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function n(t){return void 0===t||""===t||"string"!=typeof t?t:t.charAt(0).toUpperCase()+t.slice(1)}function s(t,e){return void 0===t||""===t?e:t+n(e)}function r(t,e,i,o){for(var n,r,a=0;ar&&(t=o(t)*r),i(e)>r&&(e=o(e)*r),this.cameraOffset.x=t,this.cameraOffset.y=e,this.calculateCameraOrientation()},o.prototype.getOffset=function(){return this.cameraOffset},o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.setOffset(this.cameraOffset.x,this.cameraOffset.y),this.calculateCameraOrientation())}, +o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal;var t=this.cameraRotation.x,e=this.cameraRotation.z,i=this.cameraOffset.x,o=this.cameraOffset.y,n=Math.sin,s=Math.cos;this.cameraLocation.x=this.cameraLocation.x+i*s(e)+o*-n(e)*s(t),this.cameraLocation.y=this.cameraLocation.y+i*n(e)+o*s(e)*s(t),this.cameraLocation.z=this.cameraLocation.z+o*n(t)},t.exports=o},function(t,e,i){function o(t,e,i){this.dataGroup=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=t.getDistinctValues(this.column),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(12);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){if(void 0!==this.index)return this.values[this.index]},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.dataGroup.getDataSet(),{filter:function(t){return t[i.column]==i.value}}).get();e=this.dataGroup._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0){var n=i.groupsData.getDataSet();n.get().forEach(function(t){if(t.nestedGroups){0!=t.showNested&&(t.showNested=!0);var e=[];t.nestedGroups.forEach(function(i){var o=n.get(i);o&&(o.nestedInGroup=t.id,0==t.showNested&&(o.visible=!1),e=e.concat(o))}),n.update(e,o)}})}},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.popup=null,this.touchParams={},this.groupTouchParams={},this._create(),this.setOptions(e)}var s=i(29),r=o(s),a=i(6),h=o(a),d=i(10),l=i(2),u=i(11),c=i(12),p=i(66),f=i(16),m=i(68),v=i(69),g=i(101),y=i(102),b=i(70),_=i(103),w=i(104).default,x="__ungrouped__",k="__background__";n.prototype=new f,n.types={background:_,box:g,range:b,point:y},n.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var n=document.createElement("div");n.className="vis-labelset",this.dom.labelSet=n,this._updateUngrouped();var s=new v(k,null,this);s.show(),this.groups[k]=s,this.hammer=new d(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:d.DIRECTION_HORIZONTAL}),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.options.rtl?this.groupHammer=new d(this.body.dom.rightContainer):this.groupHammer=new d(this.body.dom.leftContainer),this.groupHammer.on("tap",this._onGroupClick.bind(this)),this.groupHammer.on("panstart",this._onGroupDragStart.bind(this)),this.groupHammer.on("panmove",this._onGroupDrag.bind(this)),this.groupHammer.on("panend",this._onGroupDragEnd.bind(this)),this.groupHammer.get("pan").set({threshold:5,direction:d.DIRECTION_VERTICAL}),this.body.dom.centerContainer.addEventListener("mouseover",this._onMouseOver.bind(this)),this.body.dom.centerContainer.addEventListener("mouseout",this._onMouseOut.bind(this)),this.body.dom.centerContainer.addEventListener("mousemove",this._onMouseMove.bind(this)),this.body.dom.centerContainer.addEventListener("contextmenu",this._onDragEnd.bind(this)),this.body.dom.centerContainer.addEventListener("mousewheel",this._onMouseWheel.bind(this)),this.show()},n.prototype.setOptions=function(t){if(t){var e=["type","rtl","align","order","stack","stackSubgroups","selectable","multiselect","multiselectPerGroup","groupOrder","dataAttributes","template","groupTemplate","visibleFrameTemplate","hide","snap","groupOrderSwap","showTooltips","tooltip","tooltipOnItemUpdateTime"];l.selectiveExtend(e,this.options,t),"itemsAlwaysDraggable"in t&&("boolean"==typeof t.itemsAlwaysDraggable?(this.options.itemsAlwaysDraggable.item=t.itemsAlwaysDraggable,this.options.itemsAlwaysDraggable.range=!1):"object"===(0,h.default)(t.itemsAlwaysDraggable)&&(l.selectiveExtend(["item","range"],this.options.itemsAlwaysDraggable,t.itemsAlwaysDraggable),this.options.itemsAlwaysDraggable.item||(this.options.itemsAlwaysDraggable.range=!1))),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.item="top"===t.orientation?"top":"bottom":"object"===(0,h.default)(t.orientation)&&"item"in t.orientation&&(this.options.orientation.item=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"===(0,h.default)(t.margin)&&(l.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"===(0,h.default)(t.margin.item)&&l.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable,this.options.editable.overrideItems=!1):"object"===(0,h.default)(t.editable)&&l.selectiveExtend(["updateTime","updateGroup","add","remove","overrideItems"],this.options.editable,t.editable)),"groupEditable"in t&&("boolean"==typeof t.groupEditable?(this.options.groupEditable.order=t.groupEditable,this.options.groupEditable.add=t.groupEditable,this.options.groupEditable.remove=t.groupEditable):"object"===(0,h.default)(t.groupEditable)&&l.selectiveExtend(["order","add","remove"],this.options.groupEditable,t.groupEditable));["onDropObjectOnItem","onAdd","onUpdate","onRemove","onMove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup"].forEach(function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this)),this.markDirty()}},n.prototype.markDirty=function(t){this.groupIds=[],t&&t.refreshItems&&l.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},n.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},n.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},n.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||(this.options.rtl?this.body.dom.right.appendChild(this.dom.labelSet):this.body.dom.left.appendChild(this.dom.labelSet))},n.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;et&&o.push(h.id):h.lefte&&o.push(h.id)}return o},n.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;i0){for(var w={},x=0;x<_;x++)l.forEach(b,function(t,e){w[e]=t[x]()});l.forEach(this.groups,function(t,e){if(e!==k){var i=w[e];s=i||s,g+=t.height}}),g=Math.max(g,y)}return g=Math.max(g,y),r.style.height=i(g),this.props.width=r.offsetWidth,this.props.height=g,this.dom.axis.style.top=i("top"==n?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.options.rtl?this.dom.axis.style.right="0":this.dom.axis.style.left="0",this.initialItemSetDrawn=!0,s=this._isResized()||s},n.prototype._firstGroup=function(){var t="top"==this.options.orientation.item?0:this.groupIds.length-1,e=this.groupIds[t];return this.groups[e]||this.groups[x]||null},n.prototype._updateUngrouped=function(){var t,e,i=this.groups[x];if(this.groupsData){if(i){i.hide(),delete this.groups[x];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){i=new m(null,null,this),this.groups[x]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},n.prototype.getLabelSet=function(){return this.dom.labelSet},n.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof u||t instanceof c))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(l.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;l.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}this.body.emitter.emit("_change",{queue:!0})},n.prototype.getItems=function(){return this.itemsData},n.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(l.forEach(this.groupListeners,function(t,e){i.groupsData.off(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof u||t instanceof c))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var o=this.groupsData;this.groupsData instanceof c&&(o=this.groupsData.getDataSet()),o.get().forEach(function(t){t.nestedGroups&&t.nestedGroups.forEach(function(e){var i=o.get(e);i.nestedInGroup=t.id,0==t.showNested&&(i.visible=!1),o.update(i)})});var n=this.id;l.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,n)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("_change",{queue:!0})},n.prototype.getGroups=function(){return this.groupsData},n.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},n.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},n.prototype._getGroupId=function(t){return"background"==this._getType(t)&&void 0==t.group?k:this.groupsData?t.group:x},n.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i,o=e.itemsData.get(t,e.itemOptions),s=e.items[t],r=o?e._getType(o):null,a=n.types[r];if(s&&(a&&s instanceof a?e._updateItem(s,o):(i=s.selected,e._removeItem(s),s=null)),!s&&o){if(!a)throw"rangeoverflow"==r?new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}'):new TypeError('Unknown item type "'+r+'"');s=new a(o,e.conversion,e.options),s.id=t,e._addItem(s),i&&(this.selection.push(t),s.select())}}.bind(this)),this._order(),this.body.emitter.emit("_change",{queue:!0})},n.prototype._onAdd=n.prototype._onUpdate,n.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.body.emitter.emit("_change",{queue:!0}))},n.prototype._order=function(){l.forEach(this.groups,function(t){t.order()})},n.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},n.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==x||t==k)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=(0,r.default)(e.options);l.extend(n,{height:null}),o=new m(t,i,e),e.groups[t]=o;for(var s in e.items)if(e.items.hasOwnProperty(s)){var a=e.items[s];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("_change",{queue:!0})},n.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("_change",{queue:!0})},n.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder});t=this._orderNestedGroups(t);var e=!l.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},n.prototype._orderNestedGroups=function(t){var e=[];return t.forEach(function(t){var i=this.groupsData.get(t);if(i.nestedInGroup||e.push(t),i.nestedGroups){var o=this.groupsData.get({filter:function(e){return e.nestedInGroup==t},order:this.options.groupOrder}),n=o.map(function(t){return t.id});e=e.concat(n)}},this),e},n.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i?i&&i.data&&i.data.showNested&&(t.groupShowing=!0):t.groupShowing=!1,i&&i.add(t)},n.prototype._updateItem=function(t,e){t.setData(e);var i=this._getGroupId(t.data),o=this.groups[i];o?o&&o.data&&o.data.showNested&&(t.groupShowing=!0):t.groupShowing=!1},n.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},n.prototype._constructByEndArray=function(t){for(var e=[],i=0;in)return}}if(i&&i!=this.groupTouchParams.group){var a=e.get(i.groupId),h=e.get(this.groupTouchParams.group.groupId);h&&a&&(this.options.groupOrderSwap(h,a,e),e.update(h),e.update(a));var d=e.getIds({order:this.options.groupOrder});if(!l.equalArray(d,this.groupTouchParams.originalOrder))for(var u=this.groupTouchParams.originalOrder,p=this.groupTouchParams.group.groupId,f=Math.min(u.length,d.length),m=0,v=0,g=0;m=f)break;if(d[m+v]==p)v=1;else if(u[m+g]==p)g=1;else{var y=d.indexOf(u[m+g]),b=e.get(d[m+v]),_=e.get(u[m+g]);this.options.groupOrderSwap(b,_,e),e.update(b),e.update(_);var w=d[m+v];d[m+v]=u[m+g],d[y]=w,m++}}}}},n.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=l.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!l.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,r=Math.min(s.length,n.length),a=0;a=r)break;var h=n.indexOf(s[a]),d=o.get(n[a]),u=o.get(s[a]);e.options.groupOrderSwap(d,u,o),o.update(d),o.update(u);var c=n[a];n[a]=s[a],n[h]=c,a++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},n.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:t})}},n.prototype._onMouseOver=function(t){var e=this.itemFromTarget(t);if(e){if(e!==this.itemFromRelatedTarget(t)){var i=e.getTitle();if(this.options.showTooltips&&i){null==this.popup&&(this.popup=new w(this.body.dom.root,this.options.tooltip.overflowMethod||"flip")),this.popup.setText(i);var o=this.body.dom.centerContainer;this.popup.setPosition(t.clientX-l.getAbsoluteLeft(o)+o.offsetLeft,t.clientY-l.getAbsoluteTop(o)+o.offsetTop),this.popup.show()}else null!=this.popup&&this.popup.hide();this.body.emitter.emit("itemover",{item:e.id,event:t})}}},n.prototype._onMouseOut=function(t){var e=this.itemFromTarget(t);if(e){e!==this.itemFromRelatedTarget(t)&&(null!=this.popup&&this.popup.hide(),this.body.emitter.emit("itemout",{item:e.id,event:t}))}},n.prototype._onMouseMove=function(t){if(this.itemFromTarget(t)&&this.options.showTooltips&&this.options.tooltip.followMouse&&this.popup&&!this.popup.hidden){var e=this.body.dom.centerContainer;this.popup.setPosition(t.clientX-l.getAbsoluteLeft(e)+e.offsetLeft,t.clientY-l.getAbsoluteTop(e)+e.offsetTop),this.popup.show()}},n.prototype._onMouseWheel=function(t){this.touchParams.itemIsDragging&&this._onDragEnd(t)},n.prototype._onUpdateItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this;if(t){var i=e.itemsData.get(t.id);this.options.onUpdate(i,function(t){t&&e.itemsData.getDataSet().update(t)})}}},n.prototype._onDropObjectOnItem=function(t){var e=this.itemFromTarget(t),i=JSON.parse(t.dataTransfer.getData("text"));this.options.onDropObjectOnItem(i,e)},n.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e,i,o=this,n=this.options.snap||null;this.options.rtl?(e=l.getAbsoluteRight(this.dom.frame),i=e-t.center.x):(e=l.getAbsoluteLeft(this.dom.frame),i=t.center.x-e);var s,r,a=this.body.util.toTime(i),h=this.body.util.getScale(),d=this.body.util.getStep();"drop"==t.type?(r=JSON.parse(t.dataTransfer.getData("text")),r.content=r.content?r.content:"new item",r.start=r.start?r.start:n?n(a,h,d):a,r.type=r.type||"box",r[this.itemsData._fieldId]=r.id||l.randomUUID(),"range"!=r.type||r.end||(s=this.body.util.toTime(i+this.props.width/5),r.end=n?n(s,h,d):s)):(r={start:n?n(a,h,d):a,content:"new item"},r[this.itemsData._fieldId]=l.randomUUID(),"range"===this.options.type&&(s=this.body.util.toTime(i+this.props.width/5),r.end=n?n(s,h,d):s));var u=this.groupFromTarget(t);u&&(r.group=u.groupId),r=this._cloneItemData(r),this.options.onAdd(r,function(e){e&&(o.itemsData.getDataSet().add(e),"drop"==t.type&&o.setSelection([e.id]))})}},n.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){ +var i=this.options.multiselect?this.getSelection():[];if((t.srcEvent&&t.srcEvent.shiftKey||!1)&&this.options.multiselect){var o=this.itemsData.get(e.id).group,s=void 0;this.options.multiselectPerGroup&&i.length>0&&(s=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=s&&s!=o||i.push(e.id);var r=n._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||s==o){i=[];for(var a in this.items)if(this.items.hasOwnProperty(a)){var h=this.items[a],d=h.data.start,l=void 0!==h.data.end?h.data.end:d;!(d>=r.min&&l<=r.max)||this.options.multiselectPerGroup&&s!=this.itemsData.get(h.id).group||h instanceof _||i.push(h.id)}}}else{var u=i.indexOf(e.id);-1==u?i.push(e.id):i.splice(u,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:t})}}},n._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},n.prototype.itemFromElement=function(t){for(var e=t;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},n.prototype.itemFromTarget=function(t){return this.itemFromElement(t.target)},n.prototype.itemFromRelatedTarget=function(t){return this.itemFromElement(t.relatedTarget)},n.prototype.groupFromTarget=function(t){var e=t.center?t.center.y:t.clientY,i=this.groupIds;i.length<=0&&this.groupsData&&(i=this.groupsData.getIds({order:this.options.groupOrder}));for(var o=0;oa&&ea)return s}else if(0===o&&es&&(s=r.top+r.height)}while(a)}}o.height=s-o.top+.5*i.item.vertical},e.nostack=function(t,i,o,n){for(var s=0;so[r].index&&e.collisionByTimes(o[n],o[r])){s=o[r];break}null!=s&&(o[n].top=s.top+s.height)}while(s)}for(var a=0;ao[h].index&&(o[r].top+=o[h].height);for(var d=t[r],l=0;le.right&&t.top-i.vertical+.001e.top:t.left-i.horizontal+.001e.left&&t.top-i.vertical+.001e.top},e.collisionByTimes=function(t,e){return t.start<=e.start&&t.end>=e.start&&t.tope.top||e.start<=t.start&&e.end>=t.start&&e.topt.top}},function(t,e,i){function o(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},this.options=i,t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(38);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=this.options.align,i=this.width*t.getMillisecondsPerPixel();return"right"==e?this.data.start.getTime()>t.start&&this.data.start.getTime()-it.start&&this.data.start.getTime()t.start&&this.data.start.getTime()-i/2t.start&&this.data.startt.start},o.prototype._createDomElement=function(){this.dom||(this.dom={},this.dom.box=document.createElement("div"),this.dom.frame=document.createElement("div"),this.dom.frame.className="vis-item-overflow",this.dom.box.appendChild(this.dom.frame),this.dom.content=document.createElement("div"),this.dom.content.className="vis-item-content",this.dom.frame.appendChild(this.dom.content),this.dirty=!0)},o.prototype._appendDomElement=function(){if(!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!this.dom.box.parentNode){var t=this.parent.dom.background;if(!t)throw new Error("Cannot redraw item: parent has no background container element");t.appendChild(this.dom.box)}this.displayed=!0},o.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var t=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");this.dom.box.className=this.baseClassName+t}},o.prototype._getDomComponentsSizes=function(){return this.overflow="hidden"!==window.getComputedStyle(this.dom.content).overflow,{content:{width:this.dom.content.offsetWidth}}},o.prototype._updateDomComponentsSizes=function(t){this.props.content.width=t.content.width,this.height=0,this.dirty=!1},o.prototype._repaintDomAdditionals=function(){},o.prototype.redraw=function(t){var e,i=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){this.dirty&&(e=this._getDomComponentsSizes.bind(this)())}.bind(this),function(){this.dirty&&this._updateDomComponentsSizes.bind(this)(e)}.bind(this),this._repaintDomAdditionals.bind(this)];if(t)return i;var o;return i.forEach(function(t){o=t()}),o},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e,i=this.options.orientation.item;if(void 0!==this.data.subgroup){var o=this.data.subgroup;this.dom.box.style.height=this.parent.subgroups[o].height+"px",this.dom.box.style.top="top"==i?this.parent.top+this.parent.subgroups[o].top+"px":this.parent.top+this.parent.height-this.parent.subgroups[o].top-this.parent.subgroups[o].height+"px",this.dom.box.style.bottom=""}else this.parent instanceof s?(e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.bottom="bottom"==i?"0":"",this.dom.box.style.top="top"==i?"0":""):(e=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=e+"px"},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=function(){function t(e,i){(0,s.default)(this,t),this.container=e,this.overflowMethod=i||"cap",this.x=0,this.y=0,this.padding=5,this.hidden=!1,this.frame=document.createElement("div"),this.frame.className="vis-tooltip",this.container.appendChild(this.frame)}return(0,a.default)(t,[{key:"setPosition",value:function(t,e){this.x=parseInt(t),this.y=parseInt(e)}},{key:"setText",value:function(t){t instanceof Element?(this.frame.innerHTML="",this.frame.appendChild(t)):this.frame.innerHTML=t}},{key:"show",value:function(t){if(void 0===t&&(t=!0),!0===t){var e=this.frame.clientHeight,i=this.frame.clientWidth,o=this.frame.parentNode.clientHeight,n=this.frame.parentNode.clientWidth,s=0,r=0;if("flip"==this.overflowMethod){var a=!1,h=!0;this.y-en-this.padding&&(a=!0),s=a?this.x-i:this.x,r=h?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s0){var r={};for(this._getRelevantData(s,r,o,n),this._applySampling(s,r),e=0;e0)switch(t.options.style){case"line":d.hasOwnProperty(s[e])||(d[s[e]]=m.calcPath(r[s[e]],t)),m.draw(d[s[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||v.draw(r[s[e]],t,this.framework)}}}return a.cleanupElements(this.svgElements),!1},o.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;at[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break}}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,t[a].y=0==o?t[a].orginalY+r.y:t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},o.prototype._getRelevantData=function(t,e,i,o){var n,s,a,h;if(t.length>0)for(s=0;s0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;l0){for(s=0;s0&&(n=this.groups[t[s]],!0===r.stack&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(o):h=h.concat(o):i[t[s]]=n.getYRange(o,t[s]));f.getStackedYRange(a,i,t,"__barStackLeft","left"),f.getStackedYRange(h,i,t,"__barStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=di?i:h,l=l=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),!0===t.master&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var r=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(r=this.props.titleCharHeight);var h=!0===this.options.icons?Math.max(this.options.iconWidth,r)+this.options.labelOffsetX+15:r+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-h&&!0===this.options.visible?(this.width=this.maxLabelSize+h,this.options.width=this.width+"px",a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+h),this.options.width=this.width+"px",a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),e=!1),e},o.prototype.convertValue=function(t){return this.scale.convertValue(t)},o.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},o.prototype._redrawLabel=function(t,e,i,o,n){var s=a.getDOMElement("div",this.DOMelements.labels,this.dom.frame);s.className=o,s.innerHTML=e,"left"===i?(s.style.left="-"+this.options.labelOffsetX+"px",s.style.textAlign="right"):(s.style.right="-"+this.options.labelOffsetX+"px",s.style.textAlign="left"),s.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var r=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]&&arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,this._start=t,this._end=e,this.scale=1,this.minorStepIdx=-1,this.magnitudefactor=1,this.determineScale(),this.zeroAlign=r,this.autoScaleStart=i,this.autoScaleEnd=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>h.magnitudefactor*h.minorSteps[h.minorStepIdx]*.5?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}o.prototype.setCharHeight=function(t){this.majorCharHeight=t},o.prototype.setHeight=function(t){this.containerHeight=t},o.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var e=this.majorCharHeight/this.scale,i=t>0?Math.round(Math.log(t)/Math.LN10):0;this.minorStepIdx=-1,this.magnitudefactor=Math.pow(10,i);var o=0;i<0&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r=e){n=!0,this.minorStepIdx=r;break}}if(!0===n)break}},o.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])==0},o.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},o.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},o.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},o.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},o.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdxo+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&ue.x?1:-1})):this.itemsData=[]},o.prototype.getItems=function(){return this.itemsData},o.prototype.setZeroPosition=function(t){this.zeroPosition=t},o.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];r.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),r.mergeOptions(this.options,t,"interpolation"),r.mergeOptions(this.options,t,"drawPoints"),r.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==(0,s.default)(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},o.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible||t.visible,this.style=t.style,this.setOptions(t.options)},o.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){i={svg:document.createElementNS("http://www.w3.org/2000/svg","svg"),svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":h.drawIcon(this,o,n,t,e,i);break;case"points":case"point":d.drawIcon(this,o,n,t,e,i);break;case"bar":a.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},o.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;ot[o].y?t[o].y:e,i=i0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=t0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupIde[s].screen_y?e[s].screen_y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0){return 1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o,n=e;if(i)for(o=t.length-2;o>0;o--)n+=t[o][0]+","+t[o][1]+" ";else for(o=1;o0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+c*n.screen_x+_*s.screen_x)*f,screen_y:(-b*o.screen_y+c*n.screen_y+_*s.screen_y)*f},h={screen_x:(y*n.screen_x+p*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+p*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i");this.dom.textArea.innerHTML=r,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=(0,s.default)(this.groups);t.sort(function(t,e){return t=0;i--){var a=s[i];a.nodes||(a.nodes=[]),-1===a.nodes.indexOf(n)&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function u(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function c(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(F=I.NULL,L="";" "===z||"\t"===z||"\n"===z||"\r"===z;)s();do{var t=!1;if("#"===z){for(var e=A-1;" "===R.charAt(e)||"\t"===R.charAt(e);)e--;if("\n"===R.charAt(e)||""===R.charAt(e)){for(;""!=z&&"\n"!=z;)s();t=!0}}if("/"===z&&"/"===r()){for(;""!=z&&"\n"!=z;)s();t=!0}if("/"===z&&"*"===r()){for(;""!=z;){if("*"===z&&"/"===r()){s(),s();break}s()}t=!0}for(;" "===z||"\t"===z||"\n"===z||"\r"===z;)s()}while(t);if(""===z)return void(F=I.DELIMITER);var i=z+r();if(N[i])return F=I.DELIMITER,L=i,s(),void s();if(N[z])return F=I.DELIMITER,L=z,void s();if(a(z)||"-"===z){for(L+=z,s();a(z);)L+=z,s();return"false"===L?L=!1:"true"===L?L=!0:isNaN(Number(L))||(L=Number(L)),void(F=I.IDENTIFIER)}if('"'===z){for(s();""!=z&&('"'!=z||'"'===z&&'"'===r());)'"'===z?(L+=z,s()):"\\"===z&&"n"===r()?(L+="\n",s()):L+=z,s();if('"'!=z)throw x('End of string " expected');return s(),void(F=I.IDENTIFIER)}for(F=I.UNKNOWN;""!=z;)L+=z,s();throw new SyntaxError('Syntax error in part "'+k(L,30)+'"')}function f(){var t={};if(n(),p(),"strict"===L&&(t.strict=!0,p()),"graph"!==L&&"digraph"!==L||(t.type=L,p()),F===I.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),m(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==L&&"}"!=L;)v(t),";"===L&&p()}function v(t){var e=g(t);if(e)return void _(t,e);if(!y(t)){if(F!=I.IDENTIFIER)throw x("Identifier expected");var i=L;if(p(),"="===L){if(p(),F!=I.IDENTIFIER)throw x("Identifier expected");t[i]=L,p()}else b(t,i)}}function g(t){var e=null;if("subgraph"===L&&(e={},e.type="subgraph",p(),F===I.IDENTIFIER&&(e.id=L,p())),"{"===L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"===L?(p(),t.node=w(),"node"):"edge"===L?(p(),t.edge=w(),"edge"):"graph"===L?(p(),t.graph=w(),"graph"):null}function b(t,e){var i={id:e},o=w();o&&(i.attr=o),l(t,i),_(t,e)}function _(t,e){for(;"->"===L||"--"===L;){var i,o=L;p();var n=g(t);if(n)i=n;else{if(F!=I.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,l(t,{id:i}),p()}u(t,c(t,e,i,o,w())),e=i}}function w(){for(var t=null,e={dashed:!0,solid:!1,dotted:[1,5]};"["===L;){for(p(),t={};""!==L&&"]"!=L;){if(F!=I.IDENTIFIER)throw x("Attribute name expected");var i=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),F!=I.IDENTIFIER)throw x("Attribute value expected");var o=L;"style"===i&&(o=e[o]),d(t,i,o),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+k(L,30)+'" (char '+A+")")}function k(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},R="",A=0,z="",L="",F=I.NULL,B=/[a-zA-Z_0-9.:#]/;e.parseDOT=o,e.DOTToGraph=C},function(t,e,i){function o(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a2&&void 0!==arguments[2]&&arguments[2];(0,d.default)(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=o}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(this.elementOptions=t,this.initFontOptions(t.font),p.isValidLabel(t.label)?this.labelDirty=!0:t.label="",void 0!==t.font&&null!==t.font)if("string"==typeof t.font)this.baseSize=this.fontOptions.size;else if("object"===(0,a.default)(t.font)){var e=t.font.size;void 0!==e&&(this.baseSize=e)}}},{key:"initFontOptions",value:function(e){var i=this;if(c.forEach(m,function(t){i.fontOptions[t]={}}),t.parseFontString(this.fontOptions,e))return void(this.fontOptions.vadjust=0);c.forEach(e,function(t,e){void 0!==t&&null!==t&&"object"!==(void 0===t?"undefined":(0,a.default)(t))&&(i.fontOptions[e]=t)})}},{key:"constrain",value:function(t){var e={constrainWidth:!1,maxWdt:-1,minWdt:-1,constrainHeight:!1,minHgt:-1,valign:"middle"},i=c.topMost(t,"widthConstraint");if("number"==typeof i)e.maxWdt=Number(i),e.minWdt=Number(i);else if("object"===(void 0===i?"undefined":(0,a.default)(i))){var o=c.topMost(t,["widthConstraint","maximum"]);"number"==typeof o&&(e.maxWdt=Number(o));var n=c.topMost(t,["widthConstraint","minimum"]);"number"==typeof n&&(e.minWdt=Number(n))}var s=c.topMost(t,"heightConstraint");if("number"==typeof s)e.minHgt=Number(s);else if("object"===(void 0===s?"undefined":(0,a.default)(s))){var r=c.topMost(t,["heightConstraint","minimum"]);"number"==typeof r&&(e.minHgt=Number(r));var h=c.topMost(t,["heightConstraint","valign"]);"string"==typeof h&&("top"!==h&&"bottom"!==h||(e.valign=h))}return e}},{key:"update",value:function(t,e){this.setOptions(t,!0),this.propagateFonts(e),c.deepExtend(this.fontOptions,this.constrain(e)),this.fontOptions.chooser=p.choosify("label",e)}},{key:"adjustSizes",value:function(t){var e=t?t.right+t.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);var i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}},{key:"addFontOptionsToPile",value:function(t,e){for(var i=0;i5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0!==this.elementOptions.label){var r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r=this.elementOptions.scaling.label.maxVisible&&(r=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale),this.calculateLabelSize(t,o,n,e,i,s),this._drawBackground(t),this._drawText(t,e,this.size.yLine,s,r))}}},{key:"_drawBackground",value:function(t){if(void 0!==this.fontOptions.background&&"none"!==this.fontOptions.background){t.fillStyle=this.fontOptions.background;var e=this.getSize();t.fillRect(e.left,e.top,e.width,e.height)}}},{key:"_drawText",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"middle",n=arguments[4],r=this._setAlignment(t,e,i,o),a=(0,s.default)(r,2);e=a[0],i=a[1],t.textAlign="left",e-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(i-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(i+=(this.size.height-this.size.labelHeight)/2));for(var h=0;h0&&(t.lineWidth=c.strokeWidth,t.strokeStyle=v,t.lineJoin="round"),t.fillStyle=m,c.strokeWidth>0&&t.strokeText(c.text,e+l,i+c.vadjust),t.fillText(c.text,e+l,i+c.vadjust),l+=c.width}i+=d.height}}}},{key:"_setAlignment",value:function(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&!1===this.pointToSelf){e=0,i=0;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=4):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=4):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t,e,i){var o=t||"#000000",n=i||"#ffffff";if(e<=this.elementOptions.scaling.label.drawThreshold){var s=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));o=c.overrideOpacity(o,s),n=c.overrideOpacity(n,s)}return[o,n]}},{key:"getTextSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:"getSize",value:function(){var t=this.size.left,e=this.size.top-1;if(this.isEdgeLabel){var i=.5*-this.size.width;switch(this.fontOptions.align){case"middle":t=i,e=.5*-this.size.height;break;case"top":t=i,e=-(this.size.height+2);break;case"bottom":t=i,e=2}}return{left:t,top:e,width:this.size.width,height:this.size.height}}},{key:"calculateLabelSize",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this._processLabel(t,e,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4)}},{key:"getFormattingValues",value:function(t,e,i,o){var n=function(t,e,i){return"normal"===e?"mod"===i?"":t[i]:void 0!==t[e][i]?t[e][i]:t[i]},s={color:n(this.fontOptions,o,"color"),size:n(this.fontOptions,o,"size"),face:n(this.fontOptions,o,"face"),mod:n(this.fontOptions,o,"mod"),vadjust:n(this.fontOptions,o,"vadjust"),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};(e||i)&&("normal"===o&&!0===this.fontOptions.chooser&&this.elementOptions.labelHighlightBold?s.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(s,this.elementOptions.id,e,i));var r="";return void 0!==s.mod&&""!==s.mod&&(r+=s.mod+" "),r+=s.size+"px "+s.face,t.font=r.replace(/"/g,""),s.font=t.font,s.height=s.size,s}},{key:"differentState",value:function(t,e){return t!==this.selectedState||e!==this.hoverState}},{key:"_processLabelText",value:function(t,e,i,o){return new f(t,this,e,i).process(o)}},{key:"_processLabel",value:function(t,e,i){if(!1!==this.labelDirty||this.differentState(e,i)){var o=this._processLabelText(t,e,i,this.elementOptions.label);this.fontOptions.minWdt>0&&o.width0&&o.heighto.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=0,d=this.options.selfReferenceSize,l=void 0,u=void 0,c=void 0,p=void 0,f=void 0,m=.5*(s+r);s<=r&&h<10&&(m=.5*(s+r),l=this._pointOnCircle(o,n,d,m),u=Math.atan2(t.y-l.y,t.x-l.x),c=t.distanceToBorder(e,u),p=Math.sqrt(Math.pow(l.x-t.x,2)+Math.pow(l.y-t.y,2)),f=c-p,!(Math.abs(f)<.05));)f>0?a>0?s=m:r=m:a>0?r=m:s=m,h++;return l.t=m,l}},{key:"getLineWidth",value:function(t,e){return!0===t?Math.max(this.selectionWidth,.3/this.body.view.scale):!0===e?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i,o){if(!1!==e.inheritsColor){if("both"===e.inheritsColor&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,r=void 0;return s=this.from.options.color.highlight.border,r=this.to.options.color.highlight.border,!1===this.from.selected&&!1===this.to.selected?(s=l.overrideOpacity(this.from.options.color.border,e.opacity),r=l.overrideOpacity(this.to.options.color.border,e.opacity)):!0===this.from.selected&&!1===this.to.selected?r=this.to.options.color.border:!1===this.from.selected&&!0===this.to.selected&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,r),n}return"to"===e.inheritsColor?l.overrideOpacity(this.to.options.color.border,e.opacity):l.overrideOpacity(this.from.options.color.border,e.opacity)}return l.overrideOpacity(e.color,e.opacity)}},{key:"_circle", +value:function(t,e,i,o,n){this.enableShadow(t,e),t.beginPath(),t.arc(i,o,n,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t,e)}},{key:"getDistanceToEdge",value:function(t,e,i,o,n,r,a,h){var d=0;if(this.from!=this.to)d=this._getDistanceToEdge(t,e,i,o,n,r,a);else{var l=this._getCircleData(void 0),u=(0,s.default)(l,3),c=u[0],p=u[1],f=u[2],m=c-n,v=p-r;d=Math.abs(Math.sqrt(m*m+v*v)-f)}return d}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:d<0&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"getArrowData",value:function(t,e,i,o,n,r){var a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=r.width;if("from"===e?(d=this.from,l=this.to,u=.1,c=r.fromArrowScale,p=r.fromArrowType):"to"===e?(d=this.to,l=this.from,u=-.1,c=r.toArrowScale,p=r.toArrowType):(d=this.to,l=this.from,c=r.middleArrowScale,p=r.middleArrowType),d!=l)if("middle"!==e)if(!0===this.options.smooth.enabled){h=this.findBorderPosition(d,t,{via:i});var m=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);a=Math.atan2(h.y-m.y,h.x-m.x)}else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.5,i);else{var v=this._getCircleData(t),g=(0,s.default)(v,3),y=g[0],b=g[1],_=g[2];"from"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),a=-2*h.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),a=-2*h.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(h=this._pointOnCircle(y,b,_,.175),a=3.9269908169872414)}"middle"===e&&c<0&&(f*=-1);var w=15*c+3*f;return{point:h,core:{x:h.x-.9*w*Math.cos(a),y:h.y-.9*w*Math.sin(a)},angle:a,length:w,type:p}}},{key:"drawArrowHead",value:function(t,e,i,o,n){t.strokeStyle=this.getColor(t,e,i,o),t.fillStyle=t.strokeStyle,t.lineWidth=e.width,u.draw(t,n),this.enableShadow(t,e),t.fill(),this.disableShadow(t,e)}},{key:"enableShadow",value:function(t,e){!0===e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){!0===e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e.default=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(4),a=o(r),h=i(5),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=function(){function t(){(0,u.default)(this,t)}return(0,p.default)(t,null,[{key:"transform",value:function(t,e){t instanceof Array||(t=[t]);for(var i=e.point.x,o=e.point.y,n=e.angle,s=e.length,r=0;r0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;s0&&this._getForceContributions(n.root,t)}}},{key:"_getForceContributions",value:function(t,e){this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?this._getForceContributions(t,e):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&o.shape.radius&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;h0&&(lr&&(r=l),ua&&(a=u))}var c=Math.abs(r-n)-Math.abs(a-s);c>0?(s-=.5*c,a+=.5*c):(n+=.5*c,r-=.5*c);var p=Math.max(1e-5,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var y=0;y0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.centerOfMass,o=t.mass+e.options.mass,n=1/o;i.x=i.x*t.mass+e.x*e.options.mass,i.x*=n,i.y=i.y*t.mass+e.y*e.options.mass,i.y*=n,t.mass=o;var s=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?o.maxY>e.y?"NW":"SW":o.maxY>e.y?"NE":"SE",this._placeInRegion(t,e,n)}},{key:"_placeInRegion",value:function(t,e,i){var o=t.children[i];switch(o.childrenCount){case 0:o.children.data=e,o.childrenCount=1,this._updateBranchMass(o,e);break;case 1:o.children.data.x===e.x&&o.children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(o),this._placeInTree(o,e));break;case 4:this._placeInTree(o,e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e.default=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t=void 0,e=void 0,i=void 0,o=void 0,n=this.body.nodes,s=this.physicsBody.physicsNodeIndices,r=this.physicsBody.forces,a=0;a=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(54),n=i(39),s=i(59),r={};i(26)(r,i(13)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(20),n=i(27),s=i(33);t.exports=i(21)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,h=0;a>h;)o.f(t,i=r[h++],e[i]);return t}},function(t,e,i){var o=i(25),n=i(132),s=i(133);t.exports=function(t){return function(e,i,r){var a,h=o(e),d=n(h.length),l=s(r,d);if(t&&i!=i){for(;d>l;)if((a=h[l++])!=a)return!0}else for(;d>l;l++)if((t||l in h)&&h[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(55),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e,i){var o=i(55),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(18).document;t.exports=o&&o.documentElement},function(t,e,i){var o=i(55),n=i(51);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),h=o(i),d=a.length;return h<0||h>=d?t?"":void 0:(s=a.charCodeAt(h),s<55296||s>56319||h+1===d||(r=a.charCodeAt(h+1))<56320||r>57343?t?a.charAt(h):s:t?a.slice(h,h+2):r-56320+(s-55296<<10)+65536)}}},function(t,e,i){var o=i(27),n=i(137);t.exports=i(7).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(86),n=i(13)("iterator"),s=i(31);t.exports=i(7).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){i(139);var o=i(7).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(17);o(o.S,"Object",{create:i(54)})},function(t,e,i){i(141),t.exports=i(7).Object.keys},function(t,e,i){var o=i(41),n=i(33);i(87)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){t.exports={default:i(143),__esModule:!0}},function(t,e,i){i(60),i(49),t.exports=i(61).f("iterator")},function(t,e,i){t.exports={default:i(145),__esModule:!0}},function(t,e,i){i(146),i(151),i(152),i(153),t.exports=i(7).Symbol},function(t,e,i){var o=i(18),n=i(22),s=i(21),r=i(17),a=i(83),h=i(147).KEY,d=i(28),l=i(57),u=i(59),c=i(40),p=i(13),f=i(61),m=i(62),v=i(148),g=i(149),y=i(27),b=i(25),_=i(53),w=i(39),x=i(54),k=i(150),S=i(89),D=i(20),M=i(33),C=S.f,O=D.f,E=k.f,T=o.Symbol,P=o.JSON,I=P&&P.stringify,N=p("_hidden"),R=p("toPrimitive"),A={}.propertyIsEnumerable,z=l("symbol-registry"),L=l("symbols"),F=l("op-symbols"),B=Object.prototype,j="function"==typeof T,H=o.QObject,W=!H||!H.prototype||!H.prototype.findChild,Y=s&&d(function(){return 7!=x(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=C(B,e);o&&delete B[e],O(t,e,i),o&&t!==B&&O(B,e,o)}:O,G=function(t){var e=L[t]=x(T.prototype);return e._k=t,e},V=j&&"symbol"==typeof T.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof T},U=function(t,e,i){return t===B&&U(F,e,i),y(t),e=_(e,!0),y(i),n(L,e)?(i.enumerable?(n(t,N)&&t[N][e]&&(t[N][e]=!1),i=x(i,{enumerable:w(0,!1)})):(n(t,N)||O(t,N,w(1,{})),t[N][e]=!0),Y(t,e,i)):O(t,e,i)},q=function(t,e){y(t);for(var i,o=v(e=b(e)),n=0,s=o.length;s>n;)U(t,i=o[n++],e[i]);return t},X=function(t,e){return void 0===e?x(t):q(x(t),e)},Z=function(t){var e=A.call(this,t=_(t,!0));return!(this===B&&n(L,t)&&!n(F,t))&&(!(e||!n(this,t)||!n(L,t)||n(this,N)&&this[N][t])||e)},K=function(t,e){if(t=b(t),e=_(e,!0),t!==B||!n(L,e)||n(F,e)){var i=C(t,e);return!i||!n(L,e)||n(t,N)&&t[N][e]||(i.enumerable=!0),i}},J=function(t){for(var e,i=E(b(t)),o=[],s=0;i.length>s;)n(L,e=i[s++])||e==N||e==h||o.push(e);return o},$=function(t){for(var e,i=t===B,o=E(i?F:b(t)),s=[],r=0;o.length>r;)!n(L,e=o[r++])||i&&!n(B,e)||s.push(L[e]);return s};j||(T=function(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var t=c(arguments.length>0?arguments[0]:void 0),e=function(i){this===B&&e.call(F,i),n(this,N)&&n(this[N],t)&&(this[N][t]=!1),Y(this,t,w(1,i))};return s&&W&&Y(B,t,{configurable:!0,set:e}),G(t)},a(T.prototype,"toString",function(){return this._k}),S.f=K,D.f=U,i(88).f=k.f=J,i(42).f=Z,i(63).f=$,s&&!i(52)&&a(B,"propertyIsEnumerable",Z,!0),f.f=function(t){return G(p(t))}),r(r.G+r.W+r.F*!j,{Symbol:T});for(var Q="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),tt=0;Q.length>tt;)p(Q[tt++]);for(var et=M(p.store),it=0;et.length>it;)m(et[it++]);r(r.S+r.F*!j,"Symbol",{for:function(t){return n(z,t+="")?z[t]:z[t]=T(t)},keyFor:function(t){if(!V(t))throw TypeError(t+" is not a symbol!");for(var e in z)if(z[e]===t)return e},useSetter:function(){W=!0},useSimple:function(){W=!1}}),r(r.S+r.F*!j,"Object",{create:X,defineProperty:U,defineProperties:q,getOwnPropertyDescriptor:K,getOwnPropertyNames:J,getOwnPropertySymbols:$}),P&&r(r.S+r.F*(!j||d(function(){var t=T();return"[null]"!=I([t])||"{}"!=I({a:t})||"{}"!=I(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!V(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&g(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!V(e))return e}),o[1]=e,I.apply(P,o)}}}),T.prototype[R]||i(26)(T.prototype,R,T.prototype.valueOf),u(T,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(40)("meta"),n=i(32),s=i(22),r=i(20).f,a=0,h=Object.isExtensible||function(){return!0},d=!i(28)(function(){return h(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[o].i},c=function(t,e){if(!s(t,o)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[o].w},p=function(t){return d&&f.NEED&&h(t)&&!s(t,o)&&l(t),t},f=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:c,onFreeze:p}},function(t,e,i){var o=i(33),n=i(63),s=i(42);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),h=s.f,d=0;a.length>d;)h.call(t,r=a[d++])&&e.push(r);return e}},function(t,e,i){var o=i(50);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(25),n=i(88).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e){},function(t,e,i){i(62)("asyncIterator")},function(t,e,i){i(62)("observable")},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(0,function(){function e(){return Co.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function n(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}function s(t){return void 0===t}function r(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var i,o=[];for(i=0;i0)for(i=0;i0?"future":"past"];return D(i)?i(e):i.replace(/%s/i,e)}function A(t,e){var i=t.toLowerCase();Lo[i]=Lo[i+"s"]=Lo[e]=t}function z(t){return"string"==typeof t?Lo[t]||Lo[t.toLowerCase()]:void 0}function L(t){var e,i,o={};for(i in t)d(t,i)&&(e=z(i))&&(o[e]=t[i]);return o}function F(t,e){Fo[t]=e}function B(t){var e=[];for(var i in t)e.push({unit:i,priority:Fo[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function j(t,e,i){var o=""+Math.abs(t),n=e-o.length;return(t>=0?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function H(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(Wo[t]=n),e&&(Wo[e[0]]=function(){return j(n.apply(this,arguments),e[1],e[2])}),i&&(Wo[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function Y(t){var e,i,o=t.match(Bo);for(e=0,i=o.length;e=0&&jo.test(t);)t=t.replace(jo,i),jo.lastIndex=0,o-=1;return t}function U(t,e,i){an[t]=D(e)?e:function(t,o){return t&&i?i:e}}function q(t,e){return d(an,t)?an[t](e._strict,e._locale):new RegExp(X(t))}function X(t){return Z(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function Z(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function K(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),r(e)&&(o=function(t,i){i[e]=_(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function _t(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function wt(t,e,i){var o=7+e-i;return-(7+_t(t,0,o).getUTCDay()-e)%7+o-1}function xt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=wt(t,o,n),d=1+7*(e-1)+a+h;return d<=0?(s=t-1,r=Q(s)+d):d>Q(t)?(s=t+1,r=d-Q(t)):(s=t,r=d),{year:s,dayOfYear:r}}function kt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+St(n,e,i)):r>St(t.year(),e,i)?(o=r-St(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function St(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(Q(t)-o+n)/7}function Dt(t){return kt(t,this._week.dow,this._week.doy).week}function Mt(){return this._week.dow}function Ct(){return this._week.doy}function Ot(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Et(t){var e=kt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Tt(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function It(t,e){return t?i(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:i(this._weekdays)?this._weekdays:this._weekdays.standalone}function Nt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Rt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function At(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=yn.call(this._weekdaysParse,r),-1!==n?n:null):"ddd"===e?(n=yn.call(this._shortWeekdaysParse,r),-1!==n?n:null):(n=yn.call(this._minWeekdaysParse,r),-1!==n?n:null):"dddd"===e?-1!==(n=yn.call(this._weekdaysParse,r))?n:-1!==(n=yn.call(this._shortWeekdaysParse,r))?n:(n=yn.call(this._minWeekdaysParse,r),-1!==n?n:null):"ddd"===e?-1!==(n=yn.call(this._shortWeekdaysParse,r))?n:-1!==(n=yn.call(this._weekdaysParse,r))?n:(n=yn.call(this._minWeekdaysParse,r),-1!==n?n:null):-1!==(n=yn.call(this._minWeekdaysParse,r))?n:-1!==(n=yn.call(this._weekdaysParse,r))?n:(n=yn.call(this._shortWeekdaysParse,r),-1!==n?n:null)}function zt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return At.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function Lt(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Tt(t,this.localeData()),this.add(t-e,"d")):e}function Ft(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Bt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function jt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=En),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function Ht(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Tn),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Wt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Pn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Yt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],h=[],d=[];for(e=0;e<7;e++)i=u([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),h.push(s),d.push(o),d.push(n),d.push(s);for(r.sort(t),a.sort(t),h.sort(t),d.sort(t),e=0;e<7;e++)a[e]=Z(a[e]),h[e]=Z(h[e]),d[e]=Z(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Gt(){return this.hours()%12||12}function Vt(){return this.hours()||24}function Ut(t,e){H(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Zt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function Jt(t){for(var e,i,o,n,s=0;s0;){if(o=$t(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&w(n,i,!0)>=e-1)break;e--}s++}return null}function $t(e){var i=null;if(!zn[e]&&void 0!==t&&t&&t.exports)try{i=In._abbr;!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Qt(i)}catch(t){}return zn[e]}function Qt(t,e){var i;return t&&(i=s(e)?ie(t):te(t,e))&&(In=i),In._abbr}function te(t,e){if(null!==e){var i=An;if(e.abbr=t,null!=zn[t])S("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=zn[t]._config;else if(null!=e.parentLocale){if(null==zn[e.parentLocale])return Ln[e.parentLocale]||(Ln[e.parentLocale]=[]),Ln[e.parentLocale].push({name:t,config:e}),null;i=zn[e.parentLocale]._config}return zn[t]=new O(C(i,e)),Ln[t]&&Ln[t].forEach(function(t){te(t.name,t.config)}),Qt(t),zn[t]}return delete zn[t],null}function ee(t,e){if(null!=e){var i,o=An;null!=zn[t]&&(o=zn[t]._config),e=C(o,e),i=new O(e),i.parentLocale=zn[t],zn[t]=i,Qt(t)}else null!=zn[t]&&(null!=zn[t].parentLocale?zn[t]=zn[t].parentLocale:null!=zn[t]&&delete zn[t]);return zn[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return In;if(!i(t)){if(e=$t(t))return e;t=[t]}return Jt(t)}function oe(){return Io(zn)}function ne(t){var e,i=t._a;return i&&-2===p(t).overflow&&(e=i[ln]<0||i[ln]>11?ln:i[un]<1||i[un]>ht(i[dn],i[ln])?un:i[cn]<0||i[cn]>24||24===i[cn]&&(0!==i[pn]||0!==i[fn]||0!==i[mn])?cn:i[pn]<0||i[pn]>59?pn:i[fn]<0||i[fn]>59?fn:i[mn]<0||i[mn]>999?mn:-1,p(t)._overflowDayOfYear&&(eun)&&(e=un),p(t)._overflowWeeks&&-1===e&&(e=vn),p(t)._overflowWeekday&&-1===e&&(e=gn),p(t).overflow=e),t}function se(t,e,i){return null!=t?t:null!=e?e:i}function re(t){var i=new Date(e.now());return t._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()]}function ae(t){var e,i,o,n,s=[];if(!t._d){for(o=re(t),t._w&&null==t._a[un]&&null==t._a[ln]&&he(t),null!=t._dayOfYear&&(n=se(t._a[dn],o[dn]),(t._dayOfYear>Q(n)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),i=_t(n,0,t._dayOfYear),t._a[ln]=i.getUTCMonth(),t._a[un]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[cn]&&0===t._a[pn]&&0===t._a[fn]&&0===t._a[mn]&&(t._nextDay=!0,t._a[cn]=0),t._d=(t._useUTC?_t:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[cn]=24),t._w&&void 0!==t._w.d&&t._w.d!==t._d.getDay()&&(p(t).weekdayMismatch=!0)}}function he(t){var e,i,o,n,s,r,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=se(e.GG,t._a[dn],kt(De(),1,4).year),o=se(e.W,1),((n=se(e.E,1))<1||n>7)&&(h=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var d=kt(De(),s,r);i=se(e.gg,t._a[dn],d.year),o=se(e.w,d.week),null!=e.d?((n=e.d)<0||n>6)&&(h=!0):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s}o<1||o>St(i,s,r)?p(t)._overflowWeeks=!0:null!=h?p(t)._overflowWeekday=!0:(a=xt(i,o,n,s,r),t._a[dn]=a.year,t._dayOfYear=a.dayOfYear)}function de(t){var e,i,o,n,s,r,a=t._i,h=Fn.exec(a)||Bn.exec(a);if(h){for(p(t).iso=!0,e=0,i=Hn.length;e0&&p(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Wo[s]?(o?p(t).empty=!1:p(t).unusedTokens.push(s),$(s,o,t)):t._strict&&!o&&p(t).unusedTokens.push(s);p(t).charsLeftOver=h-d,a.length>0&&p(t).unusedInput.push(a),t._a[cn]<=12&&!0===p(t).bigHour&&t._a[cn]>0&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[cn]=ye(t._locale,t._a[cn],t._meridiem),ae(t),ne(t)}function ye(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function be(t){var e,i,o,n,s;if(0===t._f.length)return p(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ue(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),t=xe(t),t._a){var e=t._isUTC?u(t._a):De(t._a);this._isDSTShifted=this.isValid()&&w(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function qe(){return!!this.isValid()&&!this._isUTC}function Xe(){return!!this.isValid()&&this._isUTC}function Ze(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Ke(t,e){var i,o,n,s=t,a=null;return Ne(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:r(t)?(s={},e?s[e]=t:s.milliseconds=t):(a=Jn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:_(a[un])*i,h:_(a[cn])*i,m:_(a[pn])*i,s:_(a[fn])*i,ms:_(Re(1e3*a[mn]))*i}):(a=$n.exec(t))?(i="-"===a[1]?-1:(a[1],1),s={y:Je(a[2],i),M:Je(a[3],i),w:Je(a[4],i),d:Je(a[5],i),h:Je(a[6],i),m:Je(a[7],i),s:Je(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Qe(De(s.from),De(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new Ie(s),Ne(t)&&d(t,"_locale")&&(o._locale=t._locale),o}function Je(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function $e(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qe(t,e){var i;return t.isValid()&&e.isValid()?(e=Le(e,t),t.isBefore(e)?i=$e(t,e):(i=$e(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function ti(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(S(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Ke(i,o),ei(this,n,t),this}}function ei(t,i,o,n){var s=i._milliseconds,r=Re(i._days),a=Re(i._months);t.isValid()&&(n=null==n||n,a&&pt(t,ot(t,"Month")+a*o),r&&nt(t,"Date",ot(t,"Date")+r*o),s&&t._d.setTime(t._d.valueOf()+s*o),n&&e.updateOffset(t,r||a))}function ii(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function oi(t,i){var o=t||De(),n=Le(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(D(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,De(o)))}function ni(){return new g(this)}function si(t,e){var i=y(t)?t:De(t);return!(!this.isValid()||!i.isValid())&&(e=z(s(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()9999?G(t,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):D(Date.prototype.toISOString)?this.toDate().toISOString():G(t,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function mi(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var i="["+t+'("]',o=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=e+'[")]';return this.format(i+o+"-MM-DD[T]HH:mm:ss.SSS"+n)}function vi(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var i=G(this,t);return this.localeData().postformat(i)}function gi(t,e){return this.isValid()&&(y(t)&&t.isValid()||De(t).isValid())?Ke({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function yi(t){return this.from(De(),t)}function bi(t,e){return this.isValid()&&(y(t)&&t.isValid()||De(t).isValid())?Ke({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function _i(t){return this.to(De(),t)}function wi(t){var e;return void 0===t?this._locale._abbr:(e=ie(t),null!=e&&(this._locale=e),this)}function xi(){return this._locale}function ki(t){switch(t=z(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this}function Si(t){return void 0===(t=z(t))||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))}function Di(){return this._d.valueOf()-6e4*(this._offset||0)}function Mi(){return Math.floor(this.valueOf()/1e3)}function Ci(){return new Date(this.valueOf())}function Oi(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function Ei(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function Ti(){return this.isValid()?this.toISOString():null}function Pi(){return f(this)}function Ii(){return l({},p(this))}function Ni(){return p(this).overflow}function Ri(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Ai(t,e){H(0,[t,t.length],0,e)}function zi(t){return ji.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Li(t){return ji.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)}function Fi(){return St(this.year(),1,4)}function Bi(){var t=this.localeData()._week;return St(this.year(),t.dow,t.doy)}function ji(t,e,i,o,n){var s;return null==t?kt(this,o,n).year:(s=St(t,o,n),e>s&&(e=s),Hi.call(this,t,e,i,o,n))}function Hi(t,e,i,o,n){var s=xt(t,e,i,o,n),r=_t(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Wi(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Yi(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function Gi(t,e){e[mn]=_(1e3*("0."+t))}function Vi(){return this._isUTC?"UTC":""}function Ui(){return this._isUTC?"Coordinated Universal Time":""}function qi(t){return De(1e3*t)}function Xi(){return De.apply(null,arguments).parseZone()}function Zi(t){return t}function Ki(t,e,i,o){var n=ie(),s=u().set(o,e);return n[i](s,t)}function Ji(t,e,i){if(r(t)&&(e=t,t=void 0),t=t||"",null!=e)return Ki(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=Ki(t,o,i,"month");return n}function $i(t,e,i,o){"boolean"==typeof t?(r(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,r(e)&&(i=e,e=void 0),e=e||"");var n=ie(),s=t?n._week.dow:0;if(null!=i)return Ki(e,(i+s)%7,o,"day");var a,h=[];for(a=0;a<7;a++)h[a]=Ki(e,(a+s)%7,o,"day");return h}function Qi(t,e){return Ji(t,e,"months")}function to(t,e){return Ji(t,e,"monthsShort")}function eo(t,e,i){return $i(t,e,i,"weekdays")}function io(t,e,i){return $i(t,e,i,"weekdaysShort")}function oo(t,e,i){return $i(t,e,i,"weekdaysMin")}function no(){var t=this._data;return this._milliseconds=ds(this._milliseconds),this._days=ds(this._days),this._months=ds(this._months),t.milliseconds=ds(t.milliseconds),t.seconds=ds(t.seconds),t.minutes=ds(t.minutes),t.hours=ds(t.hours),t.months=ds(t.months),t.years=ds(t.years),this}function so(t,e,i,o){var n=Ke(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function ro(t,e){return so(this,t,e,1)}function ao(t,e){return so(this,t,e,-1)}function ho(t){return t<0?Math.floor(t):Math.ceil(t)}function lo(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*ho(co(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=b(s/1e3),h.seconds=t%60,e=b(t/60),h.minutes=e%60,i=b(e/60),h.hours=i%24,r+=b(i/24),n=b(uo(r)),a+=n, +r-=ho(co(n)),o=b(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function uo(t){return 4800*t/146097}function co(t){return 146097*t/4800}function po(t){if(!this.isValid())return NaN;var e,i,o=this._milliseconds;if("month"===(t=z(t))||"year"===t)return e=this._days+o/864e5,i=this._months+uo(e),"month"===t?i:i/12;switch(e=this._days+Math.round(co(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function fo(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*_(this._months/12):NaN}function mo(t){return function(){return this.as(t)}}function vo(){return Ke(this)}function go(t){return t=z(t),this.isValid()?this[t+"s"]():NaN}function yo(t){return function(){return this.isValid()?this._data[t]:NaN}}function bo(){return b(this.days()/7)}function _o(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function wo(t,e,i){var o=Ke(t).abs(),n=Ds(o.as("s")),s=Ds(o.as("m")),r=Ds(o.as("h")),a=Ds(o.as("d")),h=Ds(o.as("M")),d=Ds(o.as("y")),l=n<=Ms.ss&&["s",n]||n0,l[4]=i,_o.apply(null,l)}function xo(t){return void 0===t?Ds:"function"==typeof t&&(Ds=t,!0)}function ko(t,e){return void 0!==Ms[t]&&(void 0===e?Ms[t]:(Ms[t]=e,"s"===t&&(Ms.ss=e-1),!0))}function So(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),i=wo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Do(t){return(t>0)-(t<0)||+t}function Mo(){if(!this.isValid())return this.localeData().invalidDate();var t,e,i,o=Cs(this._milliseconds)/1e3,n=Cs(this._days),s=Cs(this._months);t=b(o/60),e=b(t/60),o%=60,t%=60,i=b(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o?o.toFixed(3).replace(/\.?0+$/,""):"",c=this.asSeconds();if(!c)return"P0D";var p=c<0?"-":"",f=Do(this._months)!==Do(c)?"-":"",m=Do(this._days)!==Do(c)?"-":"",v=Do(this._milliseconds)!==Do(c)?"-":"";return p+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(h?m+h+"D":"")+(d||l||u?"T":"")+(d?v+d+"H":"")+(l?v+l+"M":"")+(u?v+u+"S":"")}var Co,Oo;Oo=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var yn,bn=it("FullYear",!0);yn=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;ethis?this:t:m()}),Xn=function(){return Date.now?Date.now():+new Date},Zn=["year","quarter","month","week","day","hour","minute","second","millisecond"];Ae("Z",":"),Ae("ZZ",""),U("Z",nn),U("ZZ",nn),K(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=ze(nn,t)});var Kn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Jn=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,$n=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;Ke.fn=Ie.prototype,Ke.invalid=Pe;var Qn=ti(1,"add"),ts=ti(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var es=k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ai("gggg","weekYear"),Ai("ggggg","weekYear"),Ai("GGGG","isoWeekYear"),Ai("GGGGG","isoWeekYear"),A("weekYear","gg"),A("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),U("G",en),U("g",en),U("GG",Xo,Go),U("gg",Xo,Go),U("GGGG",$o,Uo),U("gggg",$o,Uo),U("GGGGG",Qo,qo),U("ggggg",Qo,qo),J(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=_(t)}),J(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),H("Q",0,"Qo","quarter"),A("quarter","Q"),F("quarter",7),U("Q",Yo),K("Q",function(t,e){e[ln]=3*(_(t)-1)}),H("D",["DD",2],"Do","date"),A("date","D"),F("date",9),U("D",Xo),U("DD",Xo,Go),U("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),K(["D","DD"],un),K("Do",function(t,e){e[un]=_(t.match(Xo)[0],10)});var is=it("Date",!0);H("DDD",["DDDD",3],"DDDo","dayOfYear"),A("dayOfYear","DDD"),F("dayOfYear",4),U("DDD",Jo),U("DDDD",Vo),K(["DDD","DDDD"],function(t,e,i){i._dayOfYear=_(t)}),H("m",["mm",2],0,"minute"),A("minute","m"),F("minute",14),U("m",Xo),U("mm",Xo,Go),K(["m","mm"],pn);var os=it("Minutes",!1);H("s",["ss",2],0,"second"),A("second","s"),F("second",15),U("s",Xo),U("ss",Xo,Go),K(["s","ss"],fn);var ns=it("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),A("millisecond","ms"),F("millisecond",16),U("S",Jo,Yo),U("SS",Jo,Go),U("SSS",Jo,Vo);var ss;for(ss="SSSS";ss.length<=9;ss+="S")U(ss,tn);for(ss="S";ss.length<=9;ss+="S")K(ss,Gi);var rs=it("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var as=g.prototype;as.add=Qn,as.calendar=oi,as.clone=ni,as.diff=ui,as.endOf=Si,as.format=vi,as.from=gi,as.fromNow=yi,as.to=bi,as.toNow=_i,as.get=st,as.invalidAt=Ni,as.isAfter=si,as.isBefore=ri,as.isBetween=ai,as.isSame=hi,as.isSameOrAfter=di,as.isSameOrBefore=li,as.isValid=Pi,as.lang=es,as.locale=wi,as.localeData=xi,as.max=qn,as.min=Un,as.parsingFlags=Ii,as.set=rt,as.startOf=ki,as.subtract=ts,as.toArray=Oi,as.toObject=Ei,as.toDate=Ci,as.toISOString=fi,as.inspect=mi,as.toJSON=Ti,as.toString=pi,as.unix=Mi,as.valueOf=Di,as.creationData=Ri,as.year=bn,as.isLeapYear=et,as.weekYear=zi,as.isoWeekYear=Li,as.quarter=as.quarters=Wi,as.month=ft,as.daysInMonth=mt,as.week=as.weeks=Ot,as.isoWeek=as.isoWeeks=Et,as.weeksInYear=Bi,as.isoWeeksInYear=Fi,as.date=is,as.day=as.days=Lt,as.weekday=Ft,as.isoWeekday=Bt,as.dayOfYear=Yi,as.hour=as.hours=Rn,as.minute=as.minutes=os,as.second=as.seconds=ns,as.millisecond=as.milliseconds=rs,as.utcOffset=Be,as.utc=He,as.local=We,as.parseZone=Ye,as.hasAlignedHourOffset=Ge,as.isDST=Ve,as.isLocal=qe,as.isUtcOffset=Xe,as.isUtc=Ze,as.isUTC=Ze,as.zoneAbbr=Vi,as.zoneName=Ui,as.dates=k("dates accessor is deprecated. Use date instead.",is),as.months=k("months accessor is deprecated. Use month instead",ft),as.years=k("years accessor is deprecated. Use year instead",bn),as.zone=k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",je),as.isDSTShifted=k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ue);var hs=O.prototype;hs.calendar=E,hs.longDateFormat=T,hs.invalidDate=P,hs.ordinal=I,hs.preparse=Zi,hs.postformat=Zi,hs.relativeTime=N,hs.pastFuture=R,hs.set=M,hs.months=dt,hs.monthsShort=lt,hs.monthsParse=ct,hs.monthsRegex=gt,hs.monthsShortRegex=vt,hs.week=Dt,hs.firstDayOfYear=Ct,hs.firstDayOfWeek=Mt,hs.weekdays=It,hs.weekdaysMin=Rt,hs.weekdaysShort=Nt,hs.weekdaysParse=zt,hs.weekdaysRegex=jt,hs.weekdaysShortRegex=Ht,hs.weekdaysMinRegex=Wt,hs.isPM=Xt,hs.meridiem=Zt,Qt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===_(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),e.lang=k("moment.lang is deprecated. Use moment.locale instead.",Qt),e.langData=k("moment.langData is deprecated. Use moment.localeData instead.",ie);var ds=Math.abs,ls=mo("ms"),us=mo("s"),cs=mo("m"),ps=mo("h"),fs=mo("d"),ms=mo("w"),vs=mo("M"),gs=mo("y"),ys=yo("milliseconds"),bs=yo("seconds"),_s=yo("minutes"),ws=yo("hours"),xs=yo("days"),ks=yo("months"),Ss=yo("years"),Ds=Math.round,Ms={ss:44,s:45,m:45,h:22,d:26,M:11},Cs=Math.abs,Os=Ie.prototype;return Os.isValid=Te,Os.abs=no,Os.add=ro,Os.subtract=ao,Os.as=po,Os.asMilliseconds=ls,Os.asSeconds=us,Os.asMinutes=cs,Os.asHours=ps,Os.asDays=fs,Os.asWeeks=ms,Os.asMonths=vs,Os.asYears=gs,Os.valueOf=fo,Os._bubble=lo,Os.clone=vo,Os.get=go,Os.milliseconds=ys,Os.seconds=bs,Os.minutes=_s,Os.hours=ws,Os.days=xs,Os.weeks=bo,Os.months=ks,Os.years=Ss,Os.humanize=So,Os.toISOString=Mo,Os.toString=Mo,Os.toJSON=Mo,Os.locale=wi,Os.localeData=xi,Os.toIsoString=k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Mo),Os.lang=es,H("X",0,0,"unix"),H("x",0,0,"valueOf"),U("x",en),U("X",sn),K("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),K("x",function(t,e,i){i._d=new Date(_(t))}),e.version="2.19.1",function(t){Co=t}(De),e.fn=as,e.min=Ce,e.max=Oe,e.now=Xn,e.utc=u,e.unix=qi,e.months=Qi,e.isDate=a,e.locale=Qt,e.invalid=m,e.duration=Ke,e.isMoment=y,e.weekdays=eo,e.parseZone=Xi,e.localeData=ie,e.isDuration=Ne,e.monthsShort=to,e.weekdaysMin=oo,e.defineLocale=te,e.updateLocale=ee,e.locales=oe,e.weekdaysShort=io,e.normalizeUnits=z,e.relativeTimeRounding=xo,e.relativeTimeThreshold=ko,e.calendarFormat=ii,e.prototype=as,e})}).call(e,i(155)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=156},function(t,e,i){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(d<0&&void 0===t.clockseq&&(r=r+1&16383),(d<0||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;p<6;p++)s[n+p]=c[p];return e||o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:void 0!==e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;e<16;e++)0==(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;c<256;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,i(158))},function(t,e){var i;i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(i=window)}t.exports=i},function(t,e,i){e.util=i(2),e.DOMutil=i(14),e.DataSet=i(11),e.DataView=i(12),e.Queue=i(43),e.Graph3d=i(161),e.graph3d={Camera:i(95),Filter:i(96),Point2d:i(91),Point3d:i(34),Slider:i(92),StepNumber:i(93)},e.moment=i(9),e.Hammer=i(10),e.keycharm=i(35)},function(t,e,i){var o=i(7),n=o.JSON||(o.JSON={stringify:JSON.stringify});t.exports=function(t){return n.stringify.apply(n,arguments)}},function(t,e,i){function o(t,e,i){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.dataGroup=new _,this.dataPoints=null,this.create(),f.setDefaults(o.DEFAULTS,this),this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.setOptions(i),this.setData(e)}function n(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(90),a=function(t){return t&&t.__esModule?t:{default:t}}(r),h=i(44),d=i(2),l=i(34),u=i(91),c=i(92),p=i(93),f=i(94),m=i(15).default,v=i(15),g=v.printStyle,y=i(172),b=y.allOptions,_=i(173);o.STYLE=f.STYLE;o.DEFAULTS={width:"400px",height:"400px",filterLabel:"time",legendLabel:"value",xLabel:"x",yLabel:"y",zLabel:"z",xValueLabel:function(t){return t},yValueLabel:function(t){return t},zValueLabel:function(t){return t},showXAxis:!0,showYAxis:!0,showZAxis:!0,showGrid:!0,showPerspective:!0,showShadow:!1,keepAspectRatio:!0,verticalRatio:.5,dotSizeRatio:.02,dotSizeMinFraction:.5,dotSizeMaxFraction:2.5,showAnimationControls:void 0,animationInterval:1e3,animationPreload:!1,animationAutoStart:void 0,axisColor:"#4D4D4D",gridColor:"#D3D3D3",xCenter:"55%",yCenter:"50%",style:o.STYLE.DOT,tooltip:!1,tooltipStyle:{content:{padding:"10px",border:"1px solid #4d4d4d",color:"#1a1a1a",background:"rgba(255,255,255,0.7)",borderRadius:"2px",boxShadow:"5px 5px 10px rgba(128,128,128,0.5)"},line:{height:"40px",width:"0",borderLeft:"1px solid #4d4d4d"},dot:{height:"0",width:"0",border:"5px solid #4d4d4d",borderRadius:"5px"}},dataColor:{fill:"#7DC1FF",stroke:"#3267D2",strokeWidth:1},cameraPosition:{horizontal:1,vertical:.5,distance:1.7},showLegend:void 0,backgroundColor:void 0,xBarWidth:void 0,yBarWidth:void 0,valueMin:void 0,valueMax:void 0,xMin:void 0,xMax:void 0,xStep:void 0,yMin:void 0,yMax:void 0,yStep:void 0,zMin:void 0,zMax:void 0,zStep:void 0},h(o.prototype),o.prototype._setScale=function(){this.scale=new l(1/this.xRange.range(),1/this.yRange.range(),1/this.zRange.range()),this.keepAspectRatio&&(this.scale.x0&&(r[n-1].pointNext=r[n]);return r},o.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,i=function(t){e._onMouseDown(t)},o=function(t){e._onTouchStart(t)},n=function(t){e._onWheel(t)},s=function(t){e._onTooltip(t)},r=function(t){e._onClick(t)};d.addEventListener(this.frame.canvas,"mousedown",i),d.addEventListener(this.frame.canvas,"touchstart",o),d.addEventListener(this.frame.canvas,"mousewheel",n),d.addEventListener(this.frame.canvas,"mousemove",s),d.addEventListener(this.frame.canvas,"click",r),this.containerElement.appendChild(this.frame)},o.prototype._setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},o.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},o.prototype.animationStart=function(){if(this.animationAutoStart&&this.dataGroup.dataFilter){if(!this.frame.filter||!this.frame.filter.slider)throw new Error("No animation available");this.frame.filter.slider.play()}},o.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},o.prototype._resizeCenter=function(){"%"===this.xCenter.charAt(this.xCenter.length-1)?this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth:this.currentXCenter=parseFloat(this.xCenter),"%"===this.yCenter.charAt(this.yCenter.length-1)?this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.currentYCenter=parseFloat(this.yCenter)},o.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},o.prototype._readData=function(t){this.dataPoints=this.dataGroup.initializeData(this,t,this.style),this._initializeRanges(),this._redrawFilter()},o.prototype.setData=function(t){void 0!==t&&null!==t&&(this._readData(t),this.redraw(),this.animationStart())},o.prototype.setOptions=function(t){if(void 0!==t){!0===m.validate(t,b)&&console.log("%cErrors have been found in the supplied options object.",g),this.animationStop(),f.setOptions(t,this),this.setPointDrawingMethod(),this._setSize(this.width,this.height),this.setData(this.dataGroup.getDataTable()),this.animationStart()}},o.prototype.setPointDrawingMethod=function(){var t=void 0;switch(this.style){case o.STYLE.BAR:t=o.prototype._redrawBarGraphPoint;break;case o.STYLE.BARCOLOR:t=o.prototype._redrawBarColorGraphPoint;break;case o.STYLE.BARSIZE:t=o.prototype._redrawBarSizeGraphPoint;break;case o.STYLE.DOT:t=o.prototype._redrawDotGraphPoint;break;case o.STYLE.DOTLINE:t=o.prototype._redrawDotLineGraphPoint;break;case o.STYLE.DOTCOLOR:t=o.prototype._redrawDotColorGraphPoint;break;case o.STYLE.DOTSIZE:t=o.prototype._redrawDotSizeGraphPoint;break;case o.STYLE.SURFACE:t=o.prototype._redrawSurfaceGraphPoint;break;case o.STYLE.GRID:t=o.prototype._redrawGridGraphPoint;break;case o.STYLE.LINE:t=o.prototype._redrawLineGraphPoint;break;default:throw new Error("Can not determine point drawing method for graph style '"+this.style+"'")}this._pointDrawingMethod=t},o.prototype.redraw=function(){if(void 0===this.dataPoints)throw new Error("Graph data not initialized");this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this._redrawDataGraph(),this._redrawInfo(),this._redrawLegend()},o.prototype._getContext=function(){var t=this.frame.canvas,e=t.getContext("2d");return e.lineJoin="round",e.lineCap="round",e},o.prototype._redrawClear=function(){var t=this.frame.canvas;t.getContext("2d").clearRect(0,0,t.width,t.height)},o.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio},o.prototype._getLegendWidth=function(){var t;if(this.style===o.STYLE.DOTSIZE){t=this._dotSize()*this.dotSizeMaxFraction}else t=this.style===o.STYLE.BARSIZE?this.xBarWidth:20;return t},o.prototype._redrawLegend=function(){if(!0===this.showLegend&&this.style!==o.STYLE.LINE&&this.style!==o.STYLE.BARSIZE){var t=this.style===o.STYLE.BARSIZE||this.style===o.STYLE.DOTSIZE,e=this.style===o.STYLE.DOTSIZE||this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.BARCOLOR,i=Math.max(.25*this.frame.clientHeight,100),n=this.margin,s=this._getLegendWidth(),r=this.frame.clientWidth-this.margin,a=r-s,h=n+i,d=this._getContext();if(d.lineWidth=1,d.font="14px arial",!1===t){var l,c=i;for(l=0;l0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)<0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelY=function(t,e,i,o,n){void 0===n&&(n=0);var s=this._convert3Dto2D(e);Math.cos(2*o)<0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)>0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelZ=function(t,e,i,o){void 0===o&&(o=0);var n=this._convert3Dto2D(e);t.textAlign="right",t.textBaseline="middle",t.fillStyle=this.axisColor,t.fillText(i,n.x-o,n.y)},o.prototype._line3d=function(t,e,i,o){var n=this._convert3Dto2D(e),s=this._convert3Dto2D(i);this._line(t,n,s,o)},o.prototype._redrawAxis=function(){var t,e,i,o,n,s,r,a,h,d,c,f=this._getContext();f.font=24/this.camera.getArmLength()+"px arial";var m,v=.025/this.scale.x,g=.025/this.scale.y,y=5/this.camera.getArmLength(),b=this.camera.getArmRotation().horizontal,_=new u(Math.cos(b),Math.sin(b)),w=this.xRange,x=this.yRange,k=this.zRange;for(f.lineWidth=1,o=void 0===this.defaultXStep,i=new p(w.min,w.max,this.xStep,o),i.start(!0);!i.end();){var S=i.getCurrent();if(this.showGrid?(t=new l(S,x.min,k.min),e=new l(S,x.max,k.min),this._line3d(f,t,e,this.gridColor)):this.showXAxis&&(t=new l(S,x.min,k.min),e=new l(S,x.min+v,k.min),this._line3d(f,t,e,this.axisColor),t=new l(S,x.max,k.min),e=new l(S,x.max-v,k.min),this._line3d(f,t,e,this.axisColor)),this.showXAxis){r=_.x>0?x.min:x.max,m=new l(S,r,k.min);var D=" "+this.xValueLabel(S)+" ";this.drawAxisLabelX(f,m,D,b,y)}i.next()}for(f.lineWidth=1,o=void 0===this.defaultYStep,i=new p(x.min,x.max,this.yStep,o),i.start(!0);!i.end();){var M=i.getCurrent();if(this.showGrid?(t=new l(w.min,M,k.min),e=new l(w.max,M,k.min),this._line3d(f,t,e,this.gridColor)):this.showYAxis&&(t=new l(w.min,M,k.min),e=new l(w.min+g,M,k.min),this._line3d(f,t,e,this.axisColor),t=new l(w.max,M,k.min),e=new l(w.max-g,M,k.min),this._line3d(f,t,e,this.axisColor)),this.showYAxis){s=_.y>0?w.min:w.max,m=new l(s,M,k.min);var C=" "+this.yValueLabel(M)+" ";this.drawAxisLabelY(f,m,C,b,y)}i.next()}if(this.showZAxis){for(f.lineWidth=1,o=void 0===this.defaultZStep,i=new p(k.min,k.max,this.zStep,o),i.start(!0),s=_.x>0?w.min:w.max,r=_.y<0?x.min:x.max;!i.end();){var O=i.getCurrent(),E=new l(s,r,O),T=this._convert3Dto2D(E);e=new u(T.x-y,T.y),this._line(f,T,e,this.axisColor);var P=this.zValueLabel(O)+" ";this.drawAxisLabelZ(f,E,P,5),i.next()}f.lineWidth=1,t=new l(s,r,k.min),e=new l(s,r,k.max),this._line3d(f,t,e,this.axisColor)}if(this.showXAxis){var I,N;f.lineWidth=1,I=new l(w.min,x.min,k.min),N=new l(w.max,x.min,k.min),this._line3d(f,I,N,this.axisColor),I=new l(w.min,x.max,k.min),N=new l(w.max,x.max,k.min),this._line3d(f,I,N,this.axisColor)}this.showYAxis&&(f.lineWidth=1,t=new l(w.min,x.min,k.min),e=new l(w.min,x.max,k.min),this._line3d(f,t,e,this.axisColor),t=new l(w.max,x.min,k.min),e=new l(w.max,x.max,k.min),this._line3d(f,t,e,this.axisColor));var R=this.xLabel;R.length>0&&this.showXAxis&&(c=.1/this.scale.y,s=(w.max+3*w.min)/4,r=_.x>0?x.min-c:x.max+c,n=new l(s,r,k.min),this.drawAxisLabelX(f,n,R,b));var A=this.yLabel;A.length>0&&this.showYAxis&&(d=.1/this.scale.x,s=_.y>0?w.min-d:w.max+d,r=(x.max+3*x.min)/4,n=new l(s,r,k.min),this.drawAxisLabelY(f,n,A,b));var z=this.zLabel;z.length>0&&this.showZAxis&&(h=30,s=_.x>0?w.min:w.max,r=_.y<0?x.min:x.max,a=(k.max+3*k.min)/4,n=new l(s,r,a),this.drawAxisLabelZ(f,n,z,h))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-this.eye.z/this.camera.getArmLength()*this.dataColor.strokeWidth:this.dataColor.strokeWidth},o.prototype._redrawBar=function(t,e,i,o,n,s){var r,a=this,h=e.point,d=this.zRange.min,u=[{point:new l(h.x-i,h.y-o,h.z)},{point:new l(h.x+i,h.y-o,h.z)},{point:new l(h.x+i,h.y+o,h.z)},{point:new l(h.x-i,h.y+o,h.z)}],c=[{point:new l(h.x-i,h.y-o,d)},{point:new l(h.x+i,h.y-o,d)},{point:new l(h.x+i,h.y+o,d)},{point:new l(h.x-i,h.y+o,d)}];u.forEach(function(t){t.screen=a._convert3Dto2D(t.point)}),c.forEach(function(t){t.screen=a._convert3Dto2D(t.point)});var p=[{corners:u,center:l.avg(c[0].point,c[2].point)},{corners:[u[0],u[1],c[1],c[0]],center:l.avg(c[1].point,c[0].point)},{corners:[u[1],u[2],c[2],c[1]],center:l.avg(c[2].point,c[1].point)},{corners:[u[2],u[3],c[3],c[2]],center:l.avg(c[3].point,c[2].point)},{corners:[u[3],u[0],c[0],c[3]],center:l.avg(c[0].point,c[3].point)}];e.surfaces=p;for(var f=0;f0}if(a){var p,f=(e.point.z+i.point.z+o.point.z+n.point.z)/4,m=240*(1-(f-this.zRange.min)*this.scale.z/this.verticalRatio);this.showShadow?(p=Math.min(1+u.x/c/2,1),s=this._hsv2rgb(m,1,p),r=s):(p=1,s=this._hsv2rgb(m,1,p),r=this.axisColor)}else s="gray",r=this.axisColor;t.lineWidth=this._getStrokeWidth(e);var v=[e,i,n,o];this._polygon(t,v,s,r)}},o.prototype._drawGridLine=function(t,e,i){if(void 0!==e&&void 0!==i){var o=(e.point.z+i.point.z)/2,n=240*(1-(o-this.zRange.min)*this.scale.z/this.verticalRatio);t.lineWidth=2*this._getStrokeWidth(e),t.strokeStyle=this._hsv2rgb(n,1,1),this._line(t,e.screen,i.screen)}},o.prototype._redrawGridGraphPoint=function(t,e){this._drawGridLine(t,e,e.pointRight),this._drawGridLine(t,e,e.pointTop)},o.prototype._redrawLineGraphPoint=function(t,e){void 0!==e.pointNext&&(t.lineWidth=this._getStrokeWidth(e),t.strokeStyle=this.dataColor.stroke,this._line(t,e.screen,e.pointNext.screen))},o.prototype._redrawDataGraph=function(){var t,e=this._getContext();if(!(void 0===this.dataPoints||this.dataPoints.length<=0))for(this._calcTranslations(this.dataPoints),t=0;t0?1:t<0?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=null,s=null,r=null,a=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var h=n.surfaces;if(h)for(var d=h.length-1;d>=0;d--){var l=h[d],c=l.corners,p=[c[0].screen,c[1].screen,c[2].screen],f=[c[2].screen,c[3].screen,c[0].screen];if(this._insideTriangle(a,p)||this._insideTriangle(a,f))return n}}else for(i=0;i"+this.xLabel+":"+t.point.x+""+this.yLabel+":"+t.point.y+""+this.zLabel+":"+t.point.z+"",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,h=o.offsetWidth,d=o.offsetHeight,l=t.screen.x-n/2;l=Math.min(Math.max(l,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=l+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-h/2+"px",o.style.top=t.screen.y-d/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},o.prototype.setCameraPosition=function(t){f.setCameraPosition(t,this),this.redraw()},o.prototype.setSize=function(t,e){this._setSize(t,e),this.redraw()},t.exports=o},function(t,e,i){i(163),t.exports=i(7).Object.assign},function(t,e,i){var o=i(17);o(o.S+o.F,"Object",{assign:i(164)})},function(t,e,i){var o=i(33),n=i(63),s=i(42),r=i(41),a=i(78),h=Object.assign;t.exports=!h||i(28)(function(){var t={},e={},i=Symbol(),o="abcdefghijklmnopqrst";return t[i]=7,o.split("").forEach(function(t){e[t]=t}),7!=h({},t)[i]||Object.keys(h({},e)).join("")!=o})?function(t,e){for(var i=r(t),h=arguments.length,d=1,l=n.f,u=s.f;h>d;)for(var c,p=a(arguments[d++]),f=l?o(p).concat(l(p)):o(p),m=f.length,v=0;m>v;)u.call(p,c=f[v++])&&(i[c]=p[c]);return i}:h},function(t,e,i){t.exports={default:i(166),__esModule:!0}},function(t,e,i){i(167),t.exports=i(7).Math.sign},function(t,e,i){var o=i(17);o(o.S,"Math",{sign:i(168)})},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,i){t.exports={default:i(170),__esModule:!0}},function(t,e,i){i(171);var o=i(7).Object;t.exports=function(t,e,i){return o.defineProperty(t,e,i)}},function(t,e,i){var o=i(17);o(o.S+o.F*!i(21),"Object",{defineProperty:i(20).f})},function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0});var o="string",n="boolean",s="number",r={fill:{string:o},stroke:{string:o},strokeWidth:{number:s},__type__:{string:o,object:"object",undefined:"undefined"}},a={animationAutoStart:{boolean:n,undefined:"undefined"},animationInterval:{number:s},animationPreload:{boolean:n},axisColor:{string:o},backgroundColor:r,xBarWidth:{number:s,undefined:"undefined"},yBarWidth:{number:s,undefined:"undefined"},cameraPosition:{distance:{number:s},horizontal:{number:s},vertical:{number:s},__type__:{object:"object"}},xCenter:{string:o},yCenter:{string:o},dataColor:r,dotSizeMinFraction:{number:s},dotSizeMaxFraction:{number:s},dotSizeRatio:{number:s},filterLabel:{string:o},gridColor:{string:o},onclick:{function:"function"},keepAspectRatio:{boolean:n},xLabel:{string:o},yLabel:{string:o},zLabel:{string:o},legendLabel:{string:o},xMin:{number:s,undefined:"undefined"},yMin:{number:s,undefined:"undefined"},zMin:{number:s,undefined:"undefined"},xMax:{number:s,undefined:"undefined"},yMax:{number:s,undefined:"undefined"},zMax:{number:s,undefined:"undefined"},showAnimationControls:{boolean:n,undefined:"undefined"},showGrid:{boolean:n},showLegend:{boolean:n,undefined:"undefined"},showPerspective:{boolean:n},showShadow:{boolean:n},showXAxis:{boolean:n},showYAxis:{boolean:n},showZAxis:{boolean:n},xStep:{number:s,undefined:"undefined"},yStep:{number:s,undefined:"undefined"},zStep:{number:s,undefined:"undefined"},style:{number:s,string:["bar","bar-color","bar-size","dot","dot-line","dot-color","dot-size","line","grid","surface"]},tooltip:{boolean:n,function:"function"},tooltipStyle:{content:{color:{string:o},background:{string:o},border:{string:o},borderRadius:{string:o},boxShadow:{string:o},padding:{string:o},__type__:{object:"object"}},line:{borderLeft:{string:o},height:{string:o},width:{string:o},__type__:{object:"object"}},dot:{border:{string:o},borderRadius:{string:o},height:{string:o},width:{string:o},__type__:{object:"object"}},__type__:{object:"object"}},xValueLabel:{function:"function"},yValueLabel:{function:"function"},zValueLabel:{function:"function"},valueMax:{number:s,undefined:"undefined"},valueMin:{number:s,undefined:"undefined"},verticalRatio:{number:s},height:{string:o},width:{string:o},__type__:{object:"object"}};e.allOptions=a},function(t,e,i){function o(){this.dataTable=null}var n=i(11),s=i(12),r=i(174),a=i(96),h=i(94),d=i(34);o.prototype.initializeData=function(t,e,i){if(void 0!==e){Array.isArray(e)&&(e=new n(e));var o;if(!(e instanceof n||e instanceof s))throw new Error("Array, DataSet, or DataView expected");if(o=e.get(),0!=o.length){this.style=i,this.dataSet&&this.dataSet.off("*",this._onChange),this.dataSet=e,this.dataTable=o;var r=this;this._onChange=function(){t.setData(r.dataSet)},this.dataSet.on("*",this._onChange),this.colX="x",this.colY="y",this.colZ="z";var h=t.hasBars(i);if(h&&(void 0!==t.defaultXBarWidth?this.xBarWidth=t.defaultXBarWidth:this.xBarWidth=this.getSmallestDifference(o,this.colX)||1,void 0!==t.defaultYBarWidth?this.yBarWidth=t.defaultYBarWidth:this.yBarWidth=this.getSmallestDifference(o,this.colY)||1),this._initializeRange(o,this.colX,t,h),this._initializeRange(o,this.colY,t,h),this._initializeRange(o,this.colZ,t,!1),o[0].hasOwnProperty("style")){this.colValue="style";var d=this.getColumnRange(o,this.colValue);this._setRangeDefaults(d,t.defaultValueMin,t.defaultValueMax),this.valueRange=d}this.getDataTable()[0].hasOwnProperty("filter")&&void 0===this.dataFilter&&(this.dataFilter=new a(this,"filter",t),this.dataFilter.setOnLoadCallback(function(){t.redraw()}));return this.dataFilter?this.dataFilter._getDataPoints():this._getDataPoints(this.getDataTable())}}},o.prototype._collectRangeSettings=function(t,e){if(-1==["x","y","z"].indexOf(t))throw new Error("Column '"+t+"' invalid");var i=t.toUpperCase();return{barWidth:this[t+"BarWidth"],min:e["default"+i+"Min"],max:e["default"+i+"Max"],step:e["default"+i+"Step"],range_label:t+"Range",step_label:t+"Step"}},o.prototype._initializeRange=function(t,e,i,o){var n=this._collectRangeSettings(e,i),s=this.getColumnRange(t,e);o&&"z"!=e&&s.expand(n.barWidth/2),this._setRangeDefaults(s,n.min,n.max),this[n.range_label]=s,this[n.step_label]=void 0!==n.step?n.step:s.range()/5},o.prototype.getDistinctValues=function(t,e){void 0===e&&(e=this.dataTable);for(var i=[],o=0;os)&&(o=s)}return o},o.prototype.getColumnRange=function(t,e){for(var i=new r,o=0;o0&&(e[i-1].pointNext=e[i]);return e},o.prototype._checkValueField=function(t){if(this.style===h.STYLE.BARCOLOR||this.style===h.STYLE.BARSIZE||this.style===h.STYLE.DOTCOLOR||this.style===h.STYLE.DOTSIZE){if(void 0===this.colValue)throw new Error("Expected data to have field 'style' for graph style '"+this.style+"'");if(void 0===t[0][this.colValue])throw new Error("Expected data to have field '"+this.colValue+"' for graph style '"+this.style+"'")}},t.exports=o},function(t,e,i){function o(){this.min=void 0,this.max=void 0}o.prototype.adjust=function(t){void 0!==t&&((void 0===this.min||this.min>t)&&(this.min=t),(void 0===this.max||this.maxi)throw new Error("Passed expansion value makes range invalid");this.min=e,this.max=i}},o.prototype.range=function(){return this.max-this.min},o.prototype.center=function(){return(this.min+this.max)/2},t.exports=o},function(t,e,i){var o,n,s;!function(i){n=[],o=i,void 0!==(s="function"==typeof o?o.apply(e,n):o)&&(t.exports=s)}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);-1!==e&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(p(t,i),e)}function d(t,e,i){return!!Array.isArray(t)&&(l(t,i[e],i),!0)}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function c(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&ft(o,i)}function p(t,e){return function(){return t.apply(e,arguments)}}function f(t,e){return typeof t==gt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function g(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function S(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=N(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=R(o);e.timeStamp=_t(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=F(a,h),e.distance=L(a,h),P(i,e),e.offsetDirection=z(e.deltaX,e.deltaY);var d=A(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=bt(d.x)>bt(d.y)?d.x:d.y,e.scale=r?j(r.pointers,o):1,e.rotation=r?B(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,I(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==Et&&s.eventType!==Pt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function I(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=It&&(h>Ot||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=A(h,d,l);o=u.x,n=u.y,i=bt(u.x)>bt(u.y)?u.x:u.y,s=z(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function N(t){for(var e=[],i=0;i=bt(e)?t<0?Rt:At:e<0?zt:Lt}function L(t,e,i){i||(i=Ht);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function F(t,e,i){i||(i=Ht);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function B(t,e){return F(e[1],e[0],Wt)+F(t[1],t[0],Wt)}function j(t,e){return L(e[0],e[1],Wt)/L(t[0],t[1],Wt)}function H(){this.evEl=Gt,this.evWin=Vt,this.pressed=!1,C.apply(this,arguments)}function W(){this.evEl=Xt,this.evWin=Zt,C.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=Jt,this.evWin=$t,this.started=!1,C.apply(this,arguments)}function G(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(Pt|It)&&(i=k(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=te,this.targetIds={},C.apply(this,arguments)}function U(t,e){var i=x(t.touches),o=this.targetIds;if(e&(Et|Tt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===Et)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,ee)}}function K(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o=fe&&e(i.options.event+tt(o))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return ot.prototype.attrTest.call(this,t)&&(this.state&ce||!(this.state&ce)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=et(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(st,ot,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ce)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(rt,Q,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[se]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Pt|It)&&!n)this.reset();else if(t.eventType&Et)this.reset(),this._timer=h(function(){this.state=me,this.tryEmit()},e.time,this);else if(t.eventType&Pt)return me;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===me&&(t&&t.eventType&Pt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=_t(),this.manager.emit(this.options.event,this._input)))}}),c(at,ot,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ce)}}),c(ht,ot,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ft|Bt,pointers:1},getTouchAction:function(){return nt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Ft|Bt)?e=t.overallVelocity:i&Ft?e=t.overallVelocityX:i&Bt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&bt(e)>this.options.velocity&&t.eventType&Pt},emit:function(t){var e=et(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(dt,Q,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[re]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distanced+i?s+=h()+u-i+t.itemSet.options.margin.item.vertical:r=!1,s=Math.min(s,o-i),{shouldScroll:r,scrollOffset:s,itemTop:l}}var a=i(9),h=i(2),d=i(11),l=i(12),u=i(64),c=i(65),p=i(45),f=i(67),m=i(46),v=i(99),g=i(15).printStyle,y=i(105).allOptions,b=i(105).configureOptions,_=i(71).default,w=i(15).default;o.prototype=new c,o.prototype._createConfigurator=function(){return new _(this,this.dom.container,b)},o.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},o.prototype.setOptions=function(t){if(!0===w.validate(t,y)&&console.log("%cErrors have been found in the supplied options object.",g),c.prototype.setOptions.call(this,t),"type"in t&&t.type!==this.options.type){this.options.type=t.type;var e=this.itemsData;if(e){var i=this.getSelection();this.setItems(null),this.setItems(e),this.setSelection(i)}}},o.prototype.setItems=function(t){var e;e=t?t instanceof d||t instanceof l?t:new d(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e)},o.prototype.setGroups=function(t){var e;if(t){var i=function(t){return!1!==t.visible};e=t instanceof d||t instanceof l?new l(t,{filter:i}):new d(t.filter(i))}else e=null;this.groupsData=e,this.itemSet.setGroups(e)},o.prototype.setData=function(t){t&&t.groups&&this.setGroups(t.groups),t&&t.items&&this.setItems(t.items)},o.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},o.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},o.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||es)&&(s=i)}),null!==n&&null!==s){var a=this,h=this.itemSet.items[i[0]],d=-1*this._getScrollTop(),l=null,u=function(t,e,i){var o=r(a,h);if(l||(l=o),l.itemTop!=o.itemTop||l.shouldScroll){l.itemTop!=o.itemTop&&o.shouldScroll&&(l=o,d=-1*a._getScrollTop());var n=d,s=l.scrollOffset,u=i?s:n+(s-n)*t;a._setScrollTop(-u),e||a._redraw()}},c=function(){var t=r(a,h);t.shouldScroll&&t.itemTop!=l.itemTop&&(a._setScrollTop(-t.scrollOffset),a._redraw())},p=function(){c(),setTimeout(c,100)},f=(n+s)/2,m=Math.max(this.range.end-this.range.start,1.1*(s-n)),v=!e||void 0===e.animation||e.animation;v||(l={shouldScroll:!1,scrollOffset:-1,itemTop:-1}),this.range.setRange(f-m/2,f+m/2,{animation:v},p,u)}}},o.prototype.fit=function(t,e){var i,o=!t||void 0===t.animation||t.animation,n=this.itemsData&&this.itemsData.getDataSet();1===n.length&&void 0===n.get()[0].end?(i=this.getDataRange(),this.moveTo(i.min.valueOf(),{animation:o},e)):(i=this.getItemRange(),this.range.setRange(i.min,i.max,{animation:o},e))},o.prototype.getItemRange=function(){var t=this.getDataRange(),e=null!==t.min?t.min.valueOf():null,i=null!==t.max?t.max.valueOf():null,o=null,r=null;if(null!=e&&null!=i){var a=i-e;a<=0&&(a=10);var d=a/this.props.center.width,l={},u=0;h.forEach(this.itemSet.items,function(t,e){if(t.groupShowing){l[e]=t.redraw(!0),u=l[e].length}});if(u>0)for(var c=0;ci&&(i=h,r=t)}.bind(this)),o&&r){var p=o.getWidthLeft()+10,f=r.getWidthRight()+10,m=this.props.center.width-p-f;m>0&&(this.options.rtl?(e=n(o)-f*a/m,i=s(r)+p*a/m):(e=n(o)-p*a/m,i=s(r)+f*a/m))}}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},o.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=h.convert(i.start,"Date").valueOf(),n=h.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||oe)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},o.prototype.getEventProperties=function(t){var e,i=t.center?t.center.x:t.clientX,o=t.center?t.center.y:t.clientY;e=this.options.rtl?h.getAbsoluteRight(this.dom.centerContainer)-i:i-h.getAbsoluteLeft(this.dom.centerContainer);var n=o-h.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=m.customTimeFromTarget(t),d=this.itemSet.options.snap||null,l=this.body.util.getScale(),u=this.body.util.getStep(),c=this._toTime(e),p=d?d(c,l,u):c,f=h.getTarget(t),v=null;return null!=s?v="item":null!=a?v="custom-time":h.hasParent(f,this.timeAxis.dom.foreground)?v="axis":this.timeAxis2&&h.hasParent(f,this.timeAxis2.dom.foreground)?v="axis":h.hasParent(f,this.itemSet.dom.labelSet)?v="group-label":h.hasParent(f,this.currentTime.bar)?v="current-time":h.hasParent(f,this.dom.center)&&(v="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:v,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:e,y:n,time:c,snappedTime:p}},o.prototype.toggleRollingMode=function(){this.range.rolling?this.range.stopRolling():(void 0==this.options.rollingMode&&this.setOptions(this.options),this.range.startRolling())},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(19),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(10),u=i(37),c=i(2),p=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,d.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),!0===c.isString(t)){if(!0===c.isValidRGB(t)){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(!0===c.isValidRGBA(t)){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(!0===c.isValidHex(t)){var a=c.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0,s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this;!0===(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&(this.previousColor=c.extend({},this.color)),!0===this.applied&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){!0===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(this.initialColor=c.extend({},t)),this.color=t;var e=c.RGBToHSV(t.r,t.g,t.b),i=2*Math.PI,o=this.r*e.s,n=this.centerCoordinates.x+o*Math.sin(i*e.h),s=this.centerCoordinates.y+o*Math.cos(i*e.h);this.colorPickerSelector.style.left=n-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=s-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=c.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=c.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=c.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d") +;this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(!1===this.generated){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,h=1/this.r,d=void 0;for(s=0;s<360;s++)for(r=0;rr?r:t,e=null==e?r:e0&&l.push(u.screenToValue(n)),!p.hidden&&this.itemsData.length>0&&l.push(p.screenToValue(n)),{event:t,what:d,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:r,value:l}},o.prototype._createConfigurator=function(){return new g(this,this.dom.container,v)},t.exports=o},function(t,e,i){e.util=i(2),e.DOMutil=i(14),e.DataSet=i(11),e.DataView=i(12),e.Queue=i(43),e.Network=i(182),e.network={Images:i(116),dotparser:i(114),gephiParser:i(115),allOptions:i(122)},e.network.convertDot=function(t){return e.network.dotparser.DOTToGraph(t)},e.network.convertGephi=function(t,i){return e.network.gephiParser.parseGephi(t,i)},e.moment=i(9),e.Hammer=i(10),e.keycharm=i(35)},function(t,e,i){function o(t,e,i){var n=this;if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:d,clickToUse:!1},s.extend(this.options,this.defaultOptions),this.body={container:t,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},modules:{},view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new l(function(){return n.body.emitter.emit("_requestRedraw")}),this.groups=new u,this.canvas=new g(this.body),this.selectionHandler=new _(this.body,this.canvas),this.interactionHandler=new b(this.body,this.canvas,this.selectionHandler),this.view=new y(this.body,this.canvas),this.renderer=new v(this.body,this.canvas),this.physics=new f(this.body),this.layoutEngine=new w(this.body),this.clustering=new m(this.body),this.manipulation=new x(this.body,this.canvas,this.selectionHandler),this.nodesHandler=new c(this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new p(this.body,this.images,this.groups),this.body.modules.kamadaKawai=new T(this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(i),this.setData(e)}i(183);var n=i(44),s=i(2),r=i(114),a=i(115),h=i(97),d=i(184),l=i(116).default,u=i(186).default,c=i(187).default,p=i(214).default,f=i(220).default,m=i(227).default,v=i(229).default,g=i(230).default,y=i(231).default,b=i(232).default,_=i(234).default,w=i(235).default,x=i(237).default,k=i(71).default,S=i(15).default,D=i(15),M=D.printStyle,C=i(122),O=C.allOptions,E=C.configureOptions,T=i(238).default;n(o.prototype),o.prototype.setOptions=function(t){var e=this;if(void 0!==t){!0===S.validate(t,O)&&console.log("%cErrors have been found in the supplied options object.",M);var i=["locale","locales","clickToUse"];if(s.selectiveDeepExtend(i,this.options,t),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t,this.options),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),void 0!==t.groups&&this.body.emitter.emit("refreshNodes"),"configure"in t&&(this.configurator||(this.configurator=new k(this,this.body.container,E,this.canvas.pixelRatio)),this.configurator.setOptions(t.configure)),this.configurator&&!0===this.configurator.options.enabled){var o={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};s.deepExtend(o.nodes,this.nodesHandler.options),s.deepExtend(o.edges,this.edgesHandler.options),s.deepExtend(o.layout,this.layoutEngine.options),s.deepExtend(o.interaction,this.selectionHandler.options),s.deepExtend(o.interaction,this.renderer.options),s.deepExtend(o.interaction,this.interactionHandler.options),s.deepExtend(o.manipulation,this.manipulation.options),s.deepExtend(o.physics,this.physics.options),s.deepExtend(o.global,this.canvas.options),s.deepExtend(o.global,this.options),this.configurator.setModuleOptions(o)}void 0!==t.clickToUse?!0===t.clickToUse?void 0===this.activator&&(this.activator=new h(this.canvas.frame),this.activator.on("change",function(){e.body.emitter.emit("activate")})):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},o.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in t)t.hasOwnProperty(i)&&(this.clustering._isClusteredNode(i)||!1!==t[i].options.hidden||this.body.nodeIndices.push(t[i].id));for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],s=t[n.fromId],r=t[n.toId],a=void 0!==s&&void 0!==r,h=!this.clustering._isClusteredEdge(o)&&!1===n.options.hidden&&a&&!1===s.options.hidden&&!1===r.options.hidden;h&&this.body.edgeIndices.push(n.id)}},o.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.edgesHandler._updateState(),t.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){t.clustering._updateState(),t._updateVisibleIndices(),t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit("startSimulation"),t.body.emitter.emit("_requestRedraw")})},o.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){console.log("The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");var e=r.DOTToGraph(t.dot);return void this.setData(e)}if(t&&t.gephi){console.log("The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");var i=a.parseGephi(t.gephi);return void this.setData(i)}this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},o.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(var t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&delete this.body.nodes[t];for(var e in this.body.edges)this.body.edges.hasOwnProperty(e)&&delete this.body.edges[e];s.recursiveDOMDelete(this.body.container)},o.prototype._updateValueRange=function(t){var e,i=void 0,o=void 0,n=0;for(e in t)if(t.hasOwnProperty(e)){var s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,o,n)},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},o.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},o.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},o.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},o.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},o.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},o.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},o.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},o.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},o.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},o.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},o.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},o.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},o.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},o.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},o.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},o.prototype.editNodeMode=function(){return console.log("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},o.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},o.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},o.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},o.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},o.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},o.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},o.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},o.prototype.getConnectedNodes=function(t){return void 0!==this.body.nodes[t]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},o.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},o.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},o.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},o.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},o.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},o.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},o.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},o.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},o.prototype.getNodeAt=function(){var t=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},o.prototype.getEdgeAt=function(){var t=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},o.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},o.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},o.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.redraw()},o.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},o.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},o.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},o.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},o.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},o.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},o.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},o.prototype.getOptionsFromConfigurator=function(){var t={};return this.configurator&&(t=this.configurator.getOptions.apply(this.configurator)),t},t.exports=o},function(t,e,i){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1),this.closePath()},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i),this.closePath()},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath(),i*=1.15,e+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e-(r-s)),this.lineTo(t+n,e+s),this.lineTo(t-n,e+s),this.lineTo(t,e-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath(),i*=1.15,e-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e+(r-s)),this.lineTo(t+n,e-s),this.lineTo(t-n,e-s),this.lineTo(t,e+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath(),i*=.82,e+=.1*i;for(var o=0;o<10;o++){var n=o%2==0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*o*Math.PI/10),e-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(t,e,i){this.beginPath(),this.lineTo(t,e+i),this.lineTo(t+i,e),this.lineTo(t,e-i),this.lineTo(t-i,e),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,o,n){var s=Math.PI/180;i-2*n<0&&(n=i/2),o-2*n<0&&(n=o/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*s,360*s,!1),this.lineTo(t+i,e+o-n),this.arc(t+i-n,e+o-n,n,0,90*s,!1),this.lineTo(t+n,e+o),this.arc(t+n,e+o-n,n,90*s,180*s,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*s,270*s,!1),this.closePath()},CanvasRenderingContext2D.prototype.ellipse_vis=function(t,e,i,o){var n=i/2*.5522848,s=o/2*.5522848,r=t+i,a=e+o,h=t+i/2,d=e+o/2;this.beginPath(),this.moveTo(t,d),this.bezierCurveTo(t,d-s,h-n,e,h,e),this.bezierCurveTo(h+n,e,r,d-s,r,d),this.bezierCurveTo(r,d+s,h+n,a,h,a),this.bezierCurveTo(h-n,a,t,d+s,t,d),this.closePath()},CanvasRenderingContext2D.prototype.database=function(t,e,i,o){var n=i,s=o*(1/3),r=n/2*.5522848,a=s/2*.5522848,h=t+n,d=e+s,l=t+n/2,u=e+s/2,c=e+(o-s/2),p=e+o;this.beginPath(),this.moveTo(h,u),this.bezierCurveTo(h,u+a,l+r,d,l,d),this.bezierCurveTo(l-r,d,t,u+a,t,u),this.bezierCurveTo(t,u-a,l-r,e,l,e),this.bezierCurveTo(l+r,e,h,u-a,h,u),this.lineTo(h,c),this.bezierCurveTo(h,c+a,l+r,p,l,p),this.bezierCurveTo(l-r,p,t,c+a,t,c),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,o,n){this.beginPath(),this.moveTo(t,e);for(var s=n.length,r=i-t,a=o-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,u=!0,c=0,p=n[0];d>=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=r<0?-c:c,t+=c,e+=h*c,!0===u?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u},CanvasRenderingContext2D.prototype.hexagon=function(t,e,i){this.beginPath();var o=2*Math.PI/6;this.moveTo(t+i,e);for(var n=1;n<6;n++)this.lineTo(t+i*Math.cos(o*n),e+i*Math.sin(o*n));this.closePath()})},function(t,e,i){e.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},e.en_EN=e.en,e.en_US=e.en,e.de={edit:"Editieren",del:"Lösche Auswahl",back:"Zurück",addNode:"Knoten hinzufügen",addEdge:"Kante hinzufügen",editNode:"Knoten editieren",editEdge:"Kante editieren",addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",deleteClusterError:"Cluster können nicht gelöscht werden.",editClusterError:"Cluster können nicht editiert werden."},e.de_DE=e.de,e.es={edit:"Editar",del:"Eliminar selección",back:"Átras",addNode:"Añadir nodo",addEdge:"Añadir arista",editNode:"Editar nodo",editEdge:"Editar arista",addDescription:"Haga clic en un lugar vacío para colocar un nuevo nodo.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",createEdgeError:"No se puede conectar una arista a un grupo.",deleteClusterError:"No es posible eliminar grupos.",editClusterError:"No es posible editar grupos."},e.es_ES=e.es,e.it={edit:"Modifica",del:"Cancella la selezione",back:"Indietro",addNode:"Aggiungi un nodo",addEdge:"Aggiungi un vertice",editNode:"Modifica il nodo",editEdge:"Modifica il vertice",addDescription:"Clicca per aggiungere un nuovo nodo",edgeDescription:"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.",editEdgeDescription:"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.",createEdgeError:"Non si possono collegare vertici ad un cluster",deleteClusterError:"I cluster non possono essere cancellati",editClusterError:"I clusters non possono essere modificati."},e.it_IT=e.it,e.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},e.nl_NL=e.nl,e.nl_BE=e.nl,e["pt-br"]={edit:"Editar",del:"Remover selecionado",back:"Voltar",addNode:"Adicionar nó",addEdge:"Adicionar aresta",editNode:"Editar nó",editEdge:"Editar aresta",addDescription:"Clique em um espaço em branco para adicionar um novo nó",edgeDescription:"Clique em um nó e arraste a aresta até outro nó para conectá-los",editEdgeDescription:"Clique nos pontos de controle e os arraste para um nó para conectá-los",createEdgeError:"Não foi possível linkar arestas a um cluster.",deleteClusterError:"Clusters não puderam ser removidos.",editClusterError:"Clusters não puderam ser editados."},e["pt-BR"]=e["pt-br"],e.pt_BR=e["pt-br"],e.pt_br=e["pt-br"],e.ru={edit:"Редактировать",del:"Удалить выбранное",back:"Назад",addNode:"Добавить узел",addEdge:"Добавить ребро",editNode:"Редактировать узел",editEdge:"Редактировать ребро",addDescription:"Кликните в свободное место, чтобы добавить новый узел.",edgeDescription:"Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.",editEdgeDescription:"Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.",createEdgeError:"Невозможно соединить ребра в кластер.",deleteClusterError:"Кластеры не могут быть удалены",editClusterError:"Кластеры недоступны для редактирования."},e.ru_RU=e.ru,e.cn={edit:"编辑",del:"删除选定",back:"返回",addNode:"添加节点",addEdge:"添加连接线",editNode:"编辑节点",editEdge:"编辑连接线",addDescription:"单击空白处放置新节点。",edgeDescription:"单击某个节点并将该连接线拖动到另一个节点以连接它们。",editEdgeDescription:"单击控制节点并将它们拖到节点上连接。",createEdgeError:"无法将连接线连接到群集。",deleteClusterError:"无法删除群集。",editClusterError:"无法编辑群集。"},e.zh_CN=e.cn},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=function(){function t(){(0,s.default)(this,t),this.NUM_ITERATIONS=4,this.image=new Image,this.canvas=document.createElement("canvas")}return(0,a.default)(t,[{key:"init",value:function(){if(!this.initialized()){this.src=this.image.src;var t=this.image.width,e=this.image.height;this.width=t,this.height=e;var i=Math.floor(e/2),o=Math.floor(e/4),n=Math.floor(e/8),s=Math.floor(e/16),r=Math.floor(t/2),a=Math.floor(t/4),h=Math.floor(t/8),d=Math.floor(t/16);this.canvas.width=3*a,this.canvas.height=i,this.coordinates=[[0,0,r,i],[r,0,a,o],[r,o,h,n],[5*h,o,d,s]],this._fillMipMap()}}},{key:"initialized",value:function(){return void 0!==this.coordinates}},{key:"_fillMipMap",value:function(){var t=this.canvas.getContext("2d"),e=this.coordinates[0];t.drawImage(this.image,e[0],e[1],e[2],e[3]);for(var i=1;i2){e*=.5;for(var r=0;e>2&&r=this.NUM_ITERATIONS&&(r=this.NUM_ITERATIONS-1);var a=this.coordinates[r];t.drawImage(this.canvas,a[0],a[1],a[2],a[3],i,o,n,s)}else t.drawImage(this.image,i,o,n,s)}}]),t}();e.default=h},function(t,e,i){ +function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=function(){function t(){(0,s.default)(this,t),this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.defaultGroups=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},h.extend(this.options,this.defaultOptions)}return(0,a.default)(t,[{key:"setOptions",value:function(t){var e=["useDefaultGroups"];if(void 0!==t)for(var i in t)if(t.hasOwnProperty(i)&&-1===e.indexOf(i)){var o=t[i];this.add(i,o)}}},{key:"clear",value:function(){this.groups={},this.groupsArray=[]}},{key:"get",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.groups[t];if(void 0===i&&e)if(!1===this.options.useDefaultGroups&&this.groupsArray.length>0){var o=this.groupIndex%this.groupsArray.length;this.groupIndex++,i={},i.color=this.groups[this.groupsArray[o]],this.groups[t]=i}else{var n=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,i={},i.color=this.defaultGroups[n],this.groups[t]=i}return i}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e.default=d},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(11),l=i(12),u=i(47).default,c=function(){function t(e,i,o,n){var r=this;if((0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=n,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data,e.oldData)},remove:function(t,e){r.remove(e.items)}},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"monospace",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},this.defaultOptions.mass<=0)throw"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative";this.options=h.bridgeObject(this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){h.forEach(t.nodesListeners,function(e,i){t.body.data.nodes&&t.body.data.nodes.off(i,e)}),delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){if(u.parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font)for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i].needsRefresh());if(void 0!==t.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o].needsRefresh();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.data.nodes;if(t instanceof d||t instanceof l)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new d,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new d}if(i&&h.forEach(this.nodesListeners,function(t,e){i.off(e,t)}),this.body.nodes={},this.body.data.nodes){var o=this;h.forEach(this.nodesListeners,function(t,e){o.body.data.nodes.on(e,t)});var n=this.body.data.nodes.getIds();this.add(n,!0)}!1===e&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:u)(t,this.body,this.images,this.groups,this.options,this.defaultOptions)}},{key:"refresh",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];h.forEach(this.body.nodes,function(i,o){var n=t.body.data.nodes.get(o);void 0!==n&&(!0===e&&i.setOptions({x:null,y:null}),i.setOptions({fixed:!1}),i.setOptions(n))})}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(!0===Array.isArray(t)){for(var i=0;i0)for(var r=0;r0)for(var p=0;p0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position/.test(t.substr(i.position,3))?i.mono||i.ital||!//.test(t.substr(i.position,3))?!i.mono&&//.test(t.substr(i.position,6))?(i.emitBlock(),i.mono=!0,i.modStack.unshift("mono"),i.position+=5):!i.mono&&"bold"===i.mod()&&/<\/b>/.test(t.substr(i.position,4))?(i.emitBlock(),i.bold=!1,i.modStack.shift(),i.position+=3):!i.mono&&"ital"===i.mod()&&/<\/i>/.test(t.substr(i.position,4))?(i.emitBlock(),i.ital=!1,i.modStack.shift(),i.position+=3):"mono"===i.mod()&&/<\/code>/.test(t.substr(i.position,7))?(i.emitBlock(),i.mono=!1,i.modStack.shift(),i.position+=6):i.add(o):(i.emitBlock(),i.ital=!0,i.modStack.unshift("ital"),i.position+=2):(i.emitBlock(),i.bold=!0,i.modStack.unshift("bold"),i.position+=2):/&/.test(o)?/</.test(t.substr(i.position,4))?(i.add("<"),i.position+=3):/&/.test(t.substr(i.position,5))?(i.add("&"),i.position+=4):i.add("&"):i.add(o),i.position++}return i.emitBlock(),e}},{key:"splitMarkdownBlocks",value:function(t){var e=[],i={bold:!1,ital:!1,mono:!1,beginable:!0,spacing:!1,position:0,buffer:"",modStack:[]};for(i.mod=function(){return 0===this.modStack.length?"normal":this.modStack[0]},i.modName=function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":i.bold&&i.ital?"boldital":i.bold?"bold":i.ital?"ital":void 0},i.emitBlock=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.positionthis.parent.fontOptions.maxWdt}},{key:"getLongestFit",value:function(t){for(var e="",i=0;i1&&void 0!==arguments[1]?arguments[1]:"normal",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t.replace(/^( +)/g,"$1\r"),t=t.replace(/([^\r][^ ]*)( +)/g,"$1\r$2\r");for(var o=t.split("\r");o.length>0;){var n=this.getLongestFit(o);if(0===n){var s=o[0],r=this.getLongestFitWord(s);this.lines.newLine(s.slice(0,r),e),o[0]=s.slice(r)}else{var a=n;" "===o[n-1]?n--:" "===o[a]&&a++;var h=o.slice(0,n).join("");n==o.length&&i?this.lines.append(h,e):this.lines.newLine(h,e),o=o.slice(a)}}}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(90),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=function(){function t(e){(0,a.default)(this,t),this.measureText=e,this.current=0,this.width=0,this.height=0,this.lines=[]}return(0,d.default)(t,[{key:"_add",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"normal";void 0===this.lines[t]&&(this.lines[t]={width:0,height:0,blocks:[]});var o=e;void 0!==e&&""!==e||(o=" ");var n=this.measureText(o,i),r=(0,s.default)({},n.values);r.text=e,r.width=n.width,r.mod=i,void 0!==e&&""!==e||(r.width=0),this.lines[t].blocks.push(r),this.lines[t].width+=r.width}},{key:"curWidth",value:function(){var t=this.lines[this.current];return void 0===t?0:t.width}},{key:"append",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,t,e)}},{key:"newLine",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,t,e),this.current++}},{key:"determineLineHeights",value:function(){for(var t=0;tt&&(t=o.width),e+=o.height}this.width=t,this.height=e}},{key:"removeEmptyBlocks",value:function(){for(var t=[],e=0;e1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i);this.width=o.width+this.margin.right+this.margin.left,this.height=o.height+this.margin.top+this.margin.bottom,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,s),t.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this._updateBoundingBox(t,e,i,o,n);var s=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(s)}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(m.default);e.default=v},function(t,e,i){i(195),t.exports=i(7).Object.getPrototypeOf},function(t,e,i){var o=i(41),n=i(85);i(87)("getPrototypeOf",function(){return function(t){return n(o(t))}})},function(t,e,i){t.exports={default:i(197),__esModule:!0}},function(t,e,i){i(198),t.exports=i(7).Object.setPrototypeOf},function(t,e,i){var o=i(17);o(o.S,"Object",{setPrototypeOf:i(199).set})},function(t,e,i){var o=i(32),n=i(27),s=function(t,e){if(n(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{o=i(80)(Function.call,i(89).f(Object.prototype,"__proto__").set,2),o(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return s(t,i),e?t.__proto__=i:o(t,i),t}}({},!1):void 0),check:s}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i),n=Math.max(o.width+this.margin.right+this.margin.left,o.height+this.margin.top+this.margin.bottom);this.options.size=n/2,this.width=n,this.height=n,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,s),this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var h=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return h.setImages(n,r),h}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){var o=2*this.options.size;return this.width=o,this.height=o,void(this.radius=.5*this.width)}this.needsRefresh(e,i)&&this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){this.switchImages(o),this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i),n=o.width+this.margin.right+this.margin.left;this.width=n,this.height=n,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,s),t.database(e-this.width/2,i-this.height/2,this.width,this.height),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"diamond",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"circle",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i);this.height=2*o.height,this.width=o.width+o.height,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height,this.initContextForDraw(t,s),t.ellipse_vis(this.left,this.top,this.width,this.height),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){this.needsRefresh(e,i)&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),void 0!==this.options.label){this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+5,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+5)}}},{key:"_icon",value:function(t,e,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+r+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var h=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return h.setImages(n,r),h}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){var o=2*this.options.size;return this.width=o,void(this.height=o)}this.needsRefresh(e,i)&&this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){if(this.switchImages(o),this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,!0===this.options.shapeProperties.useBorderWithImage){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,h=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,h),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),this.performStroke(t,s),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this._updateBoundingBox(t,e),void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)} +}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"square",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"hexagon",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"star",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){this.needsRefresh(e,i)&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangle",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangleDown",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(11),l=i(12),u=i(74).default,c=function(){function t(e,i,o){var n=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(t,e){n.add(e.items)},update:function(t,e){n.update(e.items)},remove:function(t,e){n.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},h.deepExtend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_forceDisableDynamicCurves",function(e){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];"dynamic"===e&&(e="continuous");var o=!1;for(var n in t.body.edges)if(t.body.edges.hasOwnProperty(n)){var s=t.body.edges[n],r=t.body.data.edges._data[n];if(void 0!==r){var a=r.smooth;void 0!==a&&!0===a.enabled&&"dynamic"===a.type&&(void 0===e?s.setOptions({smooth:!1}):s.setOptions({smooth:{type:e}}),o=!0)}}!0===i&&!0===o&&t.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){t.reconnectEdges()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){h.forEach(t.edgesListeners,function(e,i){t.body.data.edges&&t.body.data.edges.off(i,e)}),delete t.body.functions.createEdge,delete t.edgesListeners.add,delete t.edgesListeners.update,delete t.edgesListeners.remove,delete t.edgesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){u.parseOptions(this.options,t,!0,this.defaultOptions,!0);var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font)for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule();void 0===t.hidden&&void 0===t.physics&&!0!==e||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(t instanceof d||t instanceof l)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new d,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new d}if(o&&h.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){h.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),!1===i&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;n1&&void 0!==arguments[1])||arguments[1];if(0!==t.length){var i=this.body.edges;h.forEach(t,function(t){var e=i[t];void 0!==e&&e.remove()}),e&&this.body.emitter.emit("_dataChanged")}}},{key:"refresh",value:function(){var t=this;h.forEach(this.body.edges,function(e,i){var o=t.body.data.edges._data[i];void 0!==o&&e.setOptions(o)})}},{key:"create",value:function(t){return new u(t,this.body,this.options,this.defaultOptions)}},{key:"reconnectEdges",value:function(){var t,e=this.body.nodes,i=this.body.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var o=i[t];o.from=null,o.to=null,o.connect()}}},{key:"getConnectedNodes",value:function(t){var e=[];if(void 0!==this.body.edges[t]){var i=this.body.edges[t];void 0!==i.fromId&&e.push(i.fromId),void 0!==i.toId&&e.push(i.toId)}return e}},{key:"_updateState",value:function(){this._addMissingEdges(),this._removeInvalidEdges()}},{key:"_removeInvalidEdges",value:function(){var t=this,e=[];h.forEach(this.body.edges,function(i,o){var n=t.body.nodes[i.toId],s=t.body.nodes[i.fromId];void 0!==n&&!0===n.isCluster||void 0!==s&&!0===s.isCluster||void 0!==n&&void 0!==s||e.push(o)}),this.remove(e,!1)}},{key:"_addMissingEdges",value:function(){var t=this.body.edges,e=this.body.data.edges,i=[];e.forEach(function(e,o){void 0===t[o]&&i.push(o)}),this.add(i,!0)}}]),t}();e.default=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(30),s=o(n),r=i(3),a=o(r),h=i(0),d=o(h),l=i(1),u=o(l),c=i(4),p=o(c),f=i(5),m=o(f),v=i(216),g=o(v),y=function(t){function e(t,i,o){return(0,d.default)(this,e),(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o))}return(0,m.default)(e,t),(0,u.default)(e,[{key:"_line",value:function(t,e,i){var o=i[0],n=i[1];this._bezierCurve(t,e,o,n)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||!0===this.options.smooth.forceDirection||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),h=(0,s.default)(a,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(t,e,i,o,n,r,d,l)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(e,2),o=i[0],n=i[1],r=t,a=[];return a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3),{x:a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,y:a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y}}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(75),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=t,m=e,v=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,v[0]=Math.pow(1-u,3),v[1]=3*u*Math.pow(1-u,2),v[2]=3*Math.pow(u,2)*(1-u),v[3]=Math.pow(u,3),c=v[0]*t+v[1]*r.x+v[2]*a.x+v[3]*i,p=v[0]*e+v[1]*r.y+v[2]*a.y+v[3]*o,l>0&&(d=this._getDistanceToLine(f,m,c,p,n,s),h=d1&&void 0!==arguments[1]?arguments[1]:this.via,i=t,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),h=a[0],d=a[1],l=a[2],u=2*Math.PI*(1-i);o=h+l*Math.sin(u),n=d+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(75),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e,i){this._bezierCurve(t,e,i)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o){var r=void 0,a=void 0;r=a=n<=s?i*s:i*n,this.from.x>this.to.x&&(r=-r),this.from.y>=this.to.y&&(a=-a),t=this.from.x+r,e=this.from.y+a,"discrete"===o&&(n<=s?t=nthis.to.x&&(_=-_),this.from.y>=this.to.y&&(w=-w),t=this.from.x+_,e=this.from.y+w,n<=s?t=this.from.x<=this.to.x?this.to.xt?this.to.x:t:e=this.from.y>=this.to.y?this.to.y>e?this.to.y:e:this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t;return{x:Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,y:Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(118),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=t.distanceToBorder(e,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(8),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(120).default,u=i(221).default,c=i(222).default,p=i(223).default,f=i(224).default,m=i(121).default,v=i(225).default,g=i(226).default,y=i(2),b=i(119).default,_=function(){function t(e){(0,a.default)(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},y.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,d.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),!0===t.ready&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){!0===t.ready&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(!1===t?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):!0===t?(this.options.enabled=!0,this.physicsEnabled=!0,this.startSimulation()):(this.physicsEnabled=!0,y.selectiveNotDeepExtend(["stabilization"],this.options,t),y.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),!1===this.options.enabled&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new v(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new g(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new u(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new c(this.body,this.physicsBody,t),this.edgesSolver=new f(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new l(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){!0===this.physicsEnabled&&!0===this.options.enabled?!0===this.options.stabilization.enabled?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){!0===this.physicsEnabled&&!0===this.options.enabled?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,!0===t&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,!0===t&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick(),(Date.now()-t<.4*this.simulationInterval||!0===this.runDoubleSpeed)&&!1===this.stabilized&&(this.physicsTick(),this.runDoubleSpeed=!0),!0===this.stabilized&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||!0===this.startedStabilization)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsStep",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve(),this.moveNodes()}},{key:"adjustTimeStep",value:function(){!0===this._evaluateStepQuality()?this.timestep=1.2*this.timestep:this.timestep/1.2.3))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=0,i=0,o=0;oo&&(t=t>0?o:-o),t}},{key:"_performStep",value:function(t){var e=this.body.nodes[t],i=this.physicsBody.forces[t],o=this.physicsBody.velocities[t];return this.previousStates[t]={x:e.x,y:e.y,vx:o.x,vy:o.y},!1===e.options.fixed.x?(o.x=this.calculateComponentVelocity(o.x,i.x,e.options.mass),e.x+=o.x*this.timestep):(i.x=0,o.x=0),!1===e.options.fixed.y?(o.y=this.calculateComponentVelocity(o.y,i.y,e.options.mass),e.y+=o.y*this.timestep):(i.y=0,o.y=0),Math.sqrt(Math.pow(o.x,2)+Math.pow(o.y,2))}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)if(t.hasOwnProperty(e)&&t[e].x&&t[e].y){var i=t[e].options.fixed;this.freezeCache[e]={x:i.x,y:i.y},i.x=!0,i.y=!0}}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;if("number"!=typeof e&&(e=this.options.stabilization.iterations,console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",e)),0===this.physicsBody.physicsNodeIndices.length)return void(this.ready=!0);this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,!0===this.options.stabilization.onlyDynamicEdges&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(function(){return t._stabilizationBatch()},0)}},{key:"_startStabilizing",value:function(){return!0!==this.startedStabilization&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,!0)}},{key:"_stabilizationBatch",value:function(){var t=this,e=function(){return!1===t.stabilized&&t.stabilizationIterations0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(8),s=o(n),r=i(6),a=o(r),h=i(0),d=o(h),l=i(1),u=o(l),c=i(2),p=i(76).default,f=i(228).default,m=i(74).default,v=i(47).default,g=function(){function t(e){var i=this;(0,d.default)(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(t,[{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===(void 0===t?"undefined":(0,a.default)(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o=t&&i.push(n.id)}for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===e.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");e=this._checkOptions(e);var o={},n={};c.forEach(this.body.nodes,function(i,s){var r=p.cloneOptions(i);!0===e.joinCondition(r)&&(o[s]=i,c.forEach(i.edges,function(e){void 0===t.clusteredEdges[e.id]&&(n[e.id]=e)}))}),this._cluster(o,n,e,i)}},{key:"clusterByEdgeCount",value:function(t,e){var i=this,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var n=[],r={},a=void 0,h=void 0,d=void 0,l=0;l0&&(0,s.default)(m).length>0&&!0===b)if(c=function(){for(var t=0;t1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,h=p.cloneOptions(o);n[a]=o;for(var d=0;d-1&&(r[g.id]=g)}this._cluster(n,r,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=(0,s.default)(t),c=[],p=0;p0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],n=[];for(var r in t)t.hasOwnProperty(r)&&void 0!==this.clusteredNodes[r]&&n.push(r);for(var a=0;ao?a.x:o,n=a.yr?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");var o=this.body.nodes[t];if(void 0===o)throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(!0!==o.isCluster||void 0===o.containedNodes||void 0===o.containedEdges)throw new Error("The node:"+t+" is not a valid cluster.");var n=this.findNode(t),s=n.indexOf(t)-1;if(s>=0){var r=n[s];return this.body.nodes[r]._openChildCluster(t),delete this.body.nodes[t],void(!0===i&&this.body.emitter.emit("_dataChanged"))}var a=o.containedNodes,h=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var d={},l={x:o.x,y:o.y};for(var u in a)if(a.hasOwnProperty(u)){var p=this.body.nodes[u];d[u]={x:p.x,y:p.y}}var f=e.releaseFunction(l,d);for(var m in a)if(a.hasOwnProperty(m)){var v=this.body.nodes[m];void 0!==f[m]&&(v.x=void 0===f[m].x?o.x:f[m].x,v.y=void 0===f[m].y?o.y:f[m].y)}}else c.forEach(a,function(t){!1===t.options.fixed.x&&(t.x=o.x),!1===t.options.fixed.y&&(t.y=o.y)});for(var g in a)if(a.hasOwnProperty(g)){var y=this.body.nodes[g];y.vx=o.vx,y.vy=o.vy,y.setOptions({physics:!0}),delete this.clusteredNodes[g]}for(var b=[],_=0;_0&&n<100;){var s=e.pop();if(void 0!==s){var r=this.body.edges[s];if(void 0!==r){n++;var a=r.clusteringEdgeReplacingIds;if(void 0===a)o.push(s);else for(var h=0;ho&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}},{key:"_createClusteredEdge",value:function(t,e,i,o,n){var s=p.cloneOptions(i,"edge");c.deepExtend(s,o),s.from=t,s.to=e,s.id="clusterEdge:"+c.randomUUID(),void 0!==n&&c.deepExtend(s,n);var r=this.body.functions.createEdge(s);return r.clusteringEdgeReplacingIds=[i.id],r.connect(),this.body.edges[r.id]=r,r}},{key:"_clusterEdges",value:function(t,e,i,o){if(e instanceof m){var n=e,s={};s[n.id]=n,e=s}if(t instanceof v){var r=t,a={};a[r.id]=r,t=a}if(void 0===i||null===i)throw new Error("_clusterEdges: parameter clusterNode required");void 0===o&&(o=i.clusterEdgeProperties),this._createClusterEdges(t,e,i,o);for(var h in e)if(e.hasOwnProperty(h)&&void 0!==this.body.edges[h]){var d=this.body.edges[h];this._backupEdgeOptions(d),d.setOptions({physics:!1})}for(var l in t)t.hasOwnProperty(l)&&(this.clusteredNodes[l]={clusterId:i.id,node:this.body.nodes[l]},this.body.nodes[l].setOptions({physics:!1}))}},{key:"_getClusterNodeForNode",value:function(t){if(void 0!==t){var e=this.clusteredNodes[t];if(void 0!==e){var i=e.clusterId;if(void 0!==i)return this.body.nodes[i]}}}},{key:"_filter",value:function(t,e){var i=[];return c.forEach(t,function(t){e(t)&&i.push(t)}),i}},{key:"_updateState",value:function(){var t=this,e=void 0,i=[],o=[],n=function(e){c.forEach(t.body.nodes,function(t){!0===t.isCluster&&e(t)})};for(e in this.clusteredNodes)if(this.clusteredNodes.hasOwnProperty(e)){var r=this.body.nodes[e];void 0===r&&i.push(e)}n(function(t){for(var e=0;e0}e.endPointsValid()&&n||o.push(i)}),n(function(e){c.forEach(o,function(i){delete e.containedEdges[i],c.forEach(e.edges,function(n,s){if(n.id===i)return void(e.edges[s]=null);n.clusteringEdgeReplacingIds=t._filter(n.clusteringEdgeReplacingIds,function(t){return-1===o.indexOf(t)})}),e.edges=t._filter(e.edges,function(t){return null!==t})})}),c.forEach(o,function(e){delete t.clusteredEdges[e]}),c.forEach(o,function(e){delete t.body.edges[e]});var h=(0,s.default)(this.body.edges);c.forEach(h,function(e){var i=t.body.edges[e],o=t._isClusteredNode(i.fromId)||t._isClusteredNode(i.toId);if(o!==t._isClusteredEdge(i.id)){if(!o)throw new Error("remove edge from clustering not implemented!");var n=t._getClusterNodeForNode(i.fromId);void 0!==n&&t._clusterEdges(t.body.nodes[i.fromId],i,n);var s=t._getClusterNodeForNode(i.toId);void 0!==s&&t._clusterEdges(t.body.nodes[i.toId],i,s)}});for(var d=!1,l=!0;l;)!function(){var e=[];n(function(t){var i=(0,s.default)(t.containedNodes).length,o=!0===t.options.allowSingleNodeCluster;(o&&i<1||!o&&i<2)&&e.push(t.id)});for(var i=0;i0,d=d||l}();d&&this._updateState()}},{key:"_isClusteredNode",value:function(t){return void 0!==this.clusteredNodes[t]}},{key:"_isClusteredEdge",value:function(t){return void 0!==this.clusteredEdges[t]}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(2),m=i(47).default,v=function(t){function e(t,i,o,n,r,h){(0,a.default)(this,e);var d=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o,n,r,h));return d.isCluster=!0,d.containedNodes={},d.containedEdges={},d}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_openChildCluster",value:function(t){var e=this,i=this.body.nodes[t];if(void 0===this.containedNodes[t])throw new Error("node with id: "+t+" not in current cluster");if(!i.isCluster)throw new Error("node with id: "+t+" is not a cluster");delete this.containedNodes[t],f.forEach(i.edges,function(t){delete e.containedEdges[t.id]}),f.forEach(i.containedNodes,function(t,i){e.containedNodes[i]=t}),i.containedNodes={},f.forEach(i.containedEdges,function(t,i){e.containedEdges[i]=t}),i.containedEdges={},f.forEach(i.edges,function(t){f.forEach(e.edges,function(i){var o=i.clusteringEdgeReplacingIds.indexOf(t.id);-1!==o&&(f.forEach(t.clusteringEdgeReplacingIds,function(t){i.clusteringEdgeReplacingIds.push(t),e.body.edges[t].edgeReplacedById=i.id}),i.clusteringEdgeReplacingIds.splice(o,1))})}),i.edges=[]}}]),e}(m);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(){var t;void 0!==window&&(t=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),window.requestAnimationFrame=void 0===t?function(t){t()}:t}Object.defineProperty(e,"__esModule",{value:!0});var s=i(0),r=o(s),a=i(1),h=o(a),d=i(2),l=function(){function t(e,i){(0,r.default)(this,t),n(),this.body=e,this.canvas=i,this.redrawRequested=!1,this.renderTimer=void 0,this.requiresTimeout=!0,this.renderingActive=!1,this.renderRequests=0,this.allowRedraw=!0,this.dragging=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideNodesOnDrag:!1},d.extend(this.options,this.defaultOptions),this._determineBrowserMethod(),this.bindEventListeners()}return(0,h.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("dragStart",function(){t.dragging=!0}),this.body.emitter.on("dragEnd",function(){t.dragging=!1}),this.body.emitter.on("_resizeNodes",function(){t._resizeNodes()}),this.body.emitter.on("_redraw",function(){!1===t.renderingActive&&t._redraw()}),this.body.emitter.on("_blockRedraw",function(){t.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",function(){t.allowRedraw=!0,t.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",this._requestRedraw.bind(this)),this.body.emitter.on("_startRendering",function(){t.renderRequests+=1,t.renderingActive=!0,t._startRendering()}),this.body.emitter.on("_stopRendering",function(){t.renderRequests-=1,t.renderingActive=t.renderRequests>0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,!0===t.requiresTimeout?clearTimeout(t.renderTimer):window.cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];d.selectiveDeepExtend(e,this.options,t)}}},{key:"_requestNextFrame",value:function(t,e){if("undefined"!=typeof window){var i=void 0,o=window;return!0===this.requiresTimeout?i=o.setTimeout(t,e):o.requestAnimationFrame&&(i=o.requestAnimationFrame(t)),i}}},{key:"_startRendering",value:function(){!0===this.renderingActive&&void 0===this.renderTimer&&(this.renderTimer=this._requestNextFrame(this._renderStep.bind(this),this.simulationInterval))}},{key:"_renderStep",value:function(){!0===this.renderingActive&&(this.renderTimer=void 0,!0===this.requiresTimeout&&this._startRendering(),this._redraw(),!1===this.requiresTimeout&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;!0!==this.redrawRequested&&!1===this.renderingActive&&!0===this.allowRedraw&&(this.redrawRequested=!0,this._requestNextFrame(function(){t._redraw(!1)},0))}},{key:"_redraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!0===this.allowRedraw){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1,0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.canvas.setTransform();var e=this.canvas.getContext(),i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),!1===t&&(!1===this.dragging||!0===this.dragging&&!1===this.options.hideEdgesOnDrag)&&this._drawEdges(e),(!1===this.dragging||!0===this.dragging&&!1===this.options.hideNodesOnDrag)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),!0===t&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){this.canvas.setTransform();var t=this.canvas.getContext();t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=this.canvas.DOMtoCanvas({x:-20,y:-20}),a=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+20,y:this.canvas.frame.canvas.clientHeight+20}),h={top:r.y,left:r.x,bottom:a.y,right:a.x},d=0;d0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;!0===this.initialized&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(-1!==t.indexOf("%")||-1!==t.indexOf("px"))return t;if(-1===t.indexOf("%"))return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext)this._setPixelRatio(),this.setTransform();else{var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new h(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:h.DIRECTION_ALL}),d.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new h(this.frame),d.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.pixelRatio;if(this._setPixelRatio(),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e)this._getCameraState(s),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0;else{var r=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),a=Math.round(this.frame.canvas.clientHeight*this.pixelRatio) +;this.frame.canvas.width===r&&this.frame.canvas.height===a||this._getCameraState(s),this.frame.canvas.width!==r&&(this.frame.canvas.width=r,i=!0),this.frame.canvas.height!==a&&(this.frame.canvas.height=a,i=!0)}return!0===i&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"getContext",value:function(){return this.frame.canvas.getContext("2d")}},{key:"_determinePixelRatio",value:function(){var t=this.getContext();if(void 0===t)throw new Error("Could not get canvax context");var e=1;return"undefined"!=typeof window&&(e=window.devicePixelRatio||1),e/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)}},{key:"_setPixelRatio",value:function(){this.pixelRatio=this._determinePixelRatio()}},{key:"setTransform",value:function(){var t=this.getContext();if(void 0===t)throw new Error("Could not get canvax context");t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(76).default,l=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return(0,a.default)(t,[{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}},{key:"fit",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{nodes:[]},e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=void 0;if(void 0!==t.nodes&&0!==t.nodes.length||(t.nodes=this.body.nodeIndices),!0===e){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];!0===r.predefinedPosition&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=d.getRange(this.body.nodes,t.nodes);o=12.662/(this.body.nodeIndices.length+7.4147)+.0964822;o*=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600)}else{this.body.emitter.emit("_resizeNodes"),i=d.getRange(this.body.nodes,t.nodes);var a=1.1*Math.abs(i.maxX-i.minX),h=1.1*Math.abs(i.maxY-i.minY),l=this.canvas.frame.canvas.clientWidth/a,u=this.canvas.frame.canvas.clientHeight/h;o=l<=u?l:u}o>1?o=1:0===o&&(o=1);var c=d.findCenter(i),p={position:c,scale:o,animation:t.animation};this.moveTo(p)}},{key:"focus",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){if(void 0===t)return void(t={});void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),!1===t.animation&&(t.animation={duration:0}),!0===t.animation&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),this.animateView(t)}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),!0===t.locked&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=!0===t?1:this.easingTime;var e=h.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(233).default,l=i(104).default,u=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new d(e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},h.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];h.selectiveNotDeepExtend(e,this.options,t),h.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(h.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=h.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-h.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-h.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.selectionHandler.getSelection(),n=!1;n=!0===i?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var s=this.selectionHandler.getSelection(),r=this._determineDifference(o,s),a=this._determineDifference(s,o);r.edges.length>0&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,o),n=!0),r.nodes.length>0&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,o),n=!0),a.nodes.length>0&&(this.selectionHandler._generateClickEvent("selectNode",e,t),n=!0),a.edges.length>0&&(this.selectionHandler._generateClickEvent("selectEdge",e,t),n=!0),!0===n&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineDifference",value:function(t,e){var i=function(t,e){for(var i=[],o=0;o10&&(t=10);var o=void 0;void 0!==this.drag&&!0===this.drag.dragging&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),i0&&(this.popupObj=h[u[u.length-1]],s=!0)}if(void 0===this.popupObj&&!1===s){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],g=0;g0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new l(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&!0===(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e))){var o=this.selectionHandler.getNodeAt(t);i=void 0!==o&&o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));!1===i&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(10),d=i(37),l=i(35),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){o.activated=!0,o.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){o.activated=!1,o.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==o.keycharm&&o.keycharm.destroy()}),this.options={}}return(0,a.default)(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){!0===this.options.navigationButtons?!1===this.iconsCreated&&this.loadNavigationElements():!0===this.iconsCreated&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){var t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}},{key:"_zoomOut",value:function(){var t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),!0===this.options.keyboard.enabled&&(!0===this.options.keyboard.bindToWindow?this.keycharm=l({container:window,preventDefault:!0}):this.keycharm=l({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),!0===this.activated&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(47).default,d=i(74).default,l=i(2),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},l.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){o.updateSelection()})}return(0,a.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){var e=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];l.selectiveDeepExtend(e,this.options,t)}}},{key:"selectOnPoint",value:function(t){var e=!1;if(!0===this.options.selectable){var i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&&(e=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return e}},{key:"selectAdditionalOnPoint",value:function(t){var e=!1;if(!0===this.options.selectable){var i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&&(e=!0,!0===i.isSelected()?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return e}},{key:"_initBaseEvent",value:function(t,e){var i={};return i.pointer={DOM:{x:e.x,y:e.y},canvas:this.canvas.DOMtoCanvas(e)},i.event=t,i}},{key:"_generateClickEvent",value:function(t,e,i,o){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=this._initBaseEvent(e,i);if(!0===n)s.nodes=[],s.edges=[];else{var r=this.getSelection();s.nodes=r.nodes,s.edges=r.edges}void 0!==o&&(s.previousSelection=o),"click"==t&&(s.items=this.getClickedItems(i)),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==t&&(t instanceof h&&!0===e&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0)}},{key:"deselectObject",value:function(t){!0===t.isSelected()&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?!0===e?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(t),o=10,n=null,s=this.body.edges,r=0;r1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},i=void 0,o=void 0 +;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties";if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i1&&void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},{key:"getClickedItems",value:function(t){for(var e=this.canvas.DOMtoCanvas(t),i=[],o=this.body.nodeIndices,n=this.body.nodes,s=o.length-1;s>=0;s--){var r=n[o[s]],a=r.getItemsOnPoint(e);i.push.apply(i,a)}for(var h=this.body.edgeIndices,d=this.body.edges,l=h.length-1;l>=0;l--){var u=d[h[l]],c=u.getItemsOnPoint(e);i.push.apply(i,c)}return i}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(30),s=o(n),r=i(6),a=o(r),h=i(8),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=i(2),m=i(76).default,v=i(236),g=v.HorizontalStrategy,y=v.VerticalStrategy,b=function(){function t(){(0,u.default)(this,t),this.childrenReference={},this.parentReference={},this.trees={},this.distributionOrdering={},this.levels={},this.distributionIndex={},this.isTree=!1,this.treeIndex=-1}return(0,p.default)(t,[{key:"addRelation",value:function(t,e){void 0===this.childrenReference[t]&&(this.childrenReference[t]=[]),this.childrenReference[t].push(e),void 0===this.parentReference[e]&&(this.parentReference[e]=[]),this.parentReference[e].push(t)}},{key:"checkIfTree",value:function(){for(var t in this.parentReference)if(this.parentReference[t].length>1)return void(this.isTree=!1);this.isTree=!0}},{key:"numTrees",value:function(){return this.treeIndex+1}},{key:"setTreeIndex",value:function(t,e){void 0!==e&&void 0===this.trees[t.id]&&(this.trees[t.id]=e,this.treeIndex=Math.max(e,this.treeIndex))}},{key:"ensureLevel",value:function(t){void 0===this.levels[t]&&(this.levels[t]=0)}},{key:"getMaxLevel",value:function(t){var e=this,i={};return function t(o){if(void 0!==i[o])return i[o];var n=e.levels[o];if(e.childrenReference[o]){var s=e.childrenReference[o];if(s.length>0)for(var r=0;r0&&(i.levelSeparation*=-1):i.levelSeparation<0&&(i.levelSeparation*=-1),this.setDirectionStrategy(),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(!0===o)return this.body.emitter.emit("refresh"),f.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(!0===this.options.hierarchical.enabled){var e=this.optionsBackup.physics;void 0===t.physics||!0===t.physics?(t.physics={enabled:void 0===e.enabled||e.enabled,solver:"hierarchicalRepulsion"},e.enabled=void 0===e.enabled||e.enabled,e.solver=e.solver||"barnesHut"):"object"===(0,a.default)(t.physics)?(e.enabled=void 0===t.physics.enabled||t.physics.enabled,e.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):!1!==t.physics&&(e.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});var i=this.direction.curveType();if(void 0===t.edges)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1};else if(void 0===t.edges.smooth)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1;else if("boolean"==typeof t.edges.smooth)this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:i};else{var o=t.edges.smooth;void 0!==o.type&&"dynamic"!==o.type&&(i=o.type),this.optionsBackup.edges={smooth:void 0===o.enabled||o.enabled,type:void 0===o.type?"dynamic":o.type,roundness:void 0===o.roundness?.5:o.roundness,forceDirection:void 0!==o.forceDirection&&o.forceDirection},t.edges.smooth={enabled:void 0===o.enabled||o.enabled,type:i,roundness:void 0===o.roundness?.5:o.roundness,forceDirection:void 0!==o.forceDirection&&o.forceDirection}}this.body.emitter.emit("_forceDisableDynamicCurves",i)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(!0!==this.options.hierarchical.enabled){this.randomSeed=this.initialRandomSeed;for(var e=t.length+50,i=0;i150){for(var s=t.length;t.length>150&&o<=10;){o+=1;var r=t.length;o%3==0?this.body.modules.clustering.clusterBridges(n):this.body.modules.clustering.clusterOutliers(n);if(r==t.length&&o%3!=0)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*s)})}o>10&&console.info("The clustering didn't succeed within the amount of interations allowed, progressing with partial result."),this.body.modules.kamadaKawai.solve(t,this.body.edgeIndices,!0),this._shiftToCenter();for(var a=0;a0){var t=void 0,e=void 0,i=!1,o=!1;this.lastNodeOnLevel={},this.hierarchical=new b;for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0!==t.options.level?(i=!0,this.hierarchical.levels[e]=t.options.level):o=!0);if(!0===o&&!0===i)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");if(!0===o){var n=this.options.hierarchical.sortMethod;"hubsize"===n?this._determineLevelsByHubsize():"directed"===n?this._determineLevelsDirected():"custom"===n&&this._determineLevelsCustomCallback()}for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&this.hierarchical.ensureLevel(s);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var t=this,e=!1,i={},o=function(e,i){var o=t.hierarchical.trees;for(var n in o)o.hasOwnProperty(n)&&o[n]===e&&t.direction.shift(n,i)},n=function(){for(var e=[],i=0;i0)for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,r=1e9,a=-1e9;for(var h in e)if(e.hasOwnProperty(h)){var d=t.body.nodes[h],l=t.hierarchical.levels[d.id],u=t.direction.getPosition(d),c=t._getSpaceAroundNode(d,e),p=(0,s.default)(c,2),f=p[0],m=p[1];o=Math.min(f,o),n=Math.min(m,n),l<=i&&(r=Math.min(u,r),a=Math.max(u,a))}return[r,a,o,n]},h=function(e,i){var o=t.hierarchical.getMaxLevel(e.id),n=t.hierarchical.getMaxLevel(i.id);return Math.min(o,n)},d=function(e,i,o){for(var n=t.hierarchical,s=0;s1)for(var h=0;h2&&void 0!==arguments[2]&&arguments[2],s=t.direction.getPosition(i),d=t.direction.getPosition(o),l=Math.abs(d-s),u=t.options.hierarchical.nodeSpacing;if(l>u){var c={},p={};r(i,c),r(o,p);var f=h(i,o),m=a(c,f),v=a(p,f),g=m[1],y=v[0],b=v[2];if(Math.abs(g-y)>u){var _=g-y+u;_<-b+u&&(_=-b+u),_<0&&(t._shiftBlock(o.id,_),e=!0,!0===n&&t._centerParent(o))}}},u=function(o,n){for(var h=n.id,d=n.edges,l=t.hierarchical.levels[n.id],u=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,c={},p=[],f=0;f0?p=Math.min(c,u-t.options.hierarchical.nodeSpacing):c<0&&(p=-Math.min(-c,l-t.options.hierarchical.nodeSpacing)),0!=p&&(t._shiftBlock(n.id,p),e=!0)}(_),_=b(o,d),function(i){var o=t.direction.getPosition(n),r=t._getSpaceAroundNode(n),a=(0,s.default)(r,2),h=a[0],d=a[1],l=i-o,u=o;l>0?u=Math.min(o+(d-t.options.hierarchical.nodeSpacing),i):l<0&&(u=Math.max(o-(h-t.options.hierarchical.nodeSpacing),i)),u!==o&&(t.direction.setPosition(n,u),e=!0)}(_)};!0===this.options.hierarchical.blockShifting&&(function(i){var o=t.hierarchical.getLevels();o=o.reverse();for(var n=0;n0&&Math.abs(p)0&&(a=this.direction.getPosition(i[n-1])+r),this.direction.setPosition(s,a,e),this._validatePositionAndContinue(s,e,a),o++}}}}},{key:"_placeBranchNodes",value:function(t,e){var i=this.hierarchical.childrenReference[t];if(void 0!==i){for(var o=[],n=0;ne&&void 0===this.positionedNodes[r.id]))return;var h=this.options.hierarchical.nodeSpacing,d=void 0;d=0===s?this.direction.getPosition(this.body.nodes[t]):this.direction.getPosition(o[s-1])+h,this.direction.setPosition(r,d,a),this._validatePositionAndContinue(r,a,d)}var l=this._getCenterPosition(o);this.direction.setPosition(this.body.nodes[t],l,e)}}},{key:"_validatePositionAndContinue",value:function(t,e,i){if(this.hierarchical.isTree){if(void 0!==this.lastNodeOnLevel[e]){var o=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[e]]);if(i-ot.hierarchical.levels[e.id]&&t.hierarchical.addRelation(e.id,i.id)};this._crawlNetwork(e),this.hierarchical.checkIfTree()}},{key:"_crawlNetwork",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=arguments[1],o={},n=function i(n,s){if(void 0===o[n.id]){t.hierarchical.setTreeIndex(n,s),o[n.id]=!0;for(var r=void 0,a=t._getActiveEdges(n),h=0;h2&&void 0!==arguments[2]?arguments[2]:void 0;this.fake_use(t,e,i),this.abstract()}},{key:"getTreeSize",value:function(t){return this.fake_use(t),this.abstract()}},{key:"sort",value:function(t){this.fake_use(t),this.abstract()}},{key:"fix",value:function(t,e){this.fake_use(t,e),this.abstract()}},{key:"shift",value:function(t,e){this.fake_use(t,e),this.abstract()}}]),t}(),m=function(t){function e(t){(0,u.default)(this,e);var i=(0,a.default)(this,(e.__proto__||(0,s.default)(e)).call(this));return i.layout=t,i}return(0,d.default)(e,t),(0,p.default)(e,[{key:"curveType",value:function(){return"horizontal"}},{key:"getPosition",value:function(t){return t.x}},{key:"setPosition",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&&this.layout.hierarchical.addToOrdering(t,i),t.x=e}},{key:"getTreeSize",value:function(t){var e=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,t);return{min:e.min_x,max:e.max_x}}},{key:"sort",value:function(t){t.sort(function(t,e){return void 0===t.x||void 0===e.x?0:t.x-e.x})}},{key:"fix",value:function(t,e){t.y=this.layout.options.hierarchical.levelSeparation*e,t.options.fixed.y=!0}},{key:"shift",value:function(t,e){this.layout.body.nodes[t].x+=e}}]),e}(f),v=function(t){function e(t){(0,u.default)(this,e);var i=(0,a.default)(this,(e.__proto__||(0,s.default)(e)).call(this));return i.layout=t,i}return(0,d.default)(e,t),(0,p.default)(e,[{key:"curveType",value:function(){return"vertical"}},{key:"getPosition",value:function(t){return t.y}},{key:"setPosition",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&&this.layout.hierarchical.addToOrdering(t,i),t.y=e}},{key:"getTreeSize",value:function(t){var e=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,t);return{min:e.min_y,max:e.max_y}}},{key:"sort",value:function(t){t.sort(function(t,e){return void 0===t.y||void 0===e.y?0:t.y-e.y})}},{key:"fix",value:function(t,e){t.x=this.layout.options.hierarchical.levelSeparation*e,t.options.fixed.x=!0}},{key:"shift",value:function(t,e){this.layout.body.nodes[t].y+=e}}]),e}(f);e.HorizontalStrategy=v,e.VerticalStrategy=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(8),s=o(n),r=i(19),a=o(r),h=i(6),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=i(2),m=i(10),v=i(37),g=function(){function t(e,i,o){var n=this;(0,u.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},f.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){n._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return(0,p.default)(t,[{key:"_restore",value:function(){!1!==this.inMode&&(!0===this.options.initiallyActive?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,f.deepExtend(this.options,t)),!0===this.options.initiallyActive&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){!0===this.editMode?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),!0===this.guiEnabled&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),!0===this.guiEnabled&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},!0===this.guiEnabled){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;!1!==this.options.addNode&&(this._createAddNodeButton(o),n=!0),!1!==this.options.addEdge&&(!0===n?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(!0===n?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&!1!==this.options.editEdge&&(!0===n?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&!1!==this.options.deleteNode?(!0===n&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&!1!==this.options.deleteEdge&&(!0===n&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="addNode",!0===this.guiEnabled){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;!0!==this.editMode&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(!0!==e.isCluster){var i=f.deepExtend({},e.options,!1);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="addEdge",!0===this.guiEnabled){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",this._dragStartEdge.bind(this)),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"===(0,d.default)(this.options.editEdge)&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId)){var t=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(t.from,t.to)}if(!0===this.guiEnabled){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId){var i=this.body.edges[this.edgeBeingEditedId],o=this._getNewTargetNode(i.from.x,i.from.y),n=this._getNewTargetNode(i.to.x,i.to.y);this.temporaryIds.nodes.push(o.id),this.temporaryIds.nodes.push(n.id),this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id),this.body.nodes[n.id]=n,this.body.nodeIndices.push(n.id),this._temporaryBindUI("onTouch",this._controlNodeTouch.bind(this)),this._temporaryBindUI("onTap",function(){}),this._temporaryBindUI("onHold",function(){}),this._temporaryBindUI("onDragStart",this._controlNodeDragStart.bind(this)),this._temporaryBindUI("onDrag",this._controlNodeDrag.bind(this)),this._temporaryBindUI("onDragEnd",this._controlNodeDragEnd.bind(this)),this._temporaryBindUI("onMouseMove",function(){}),this._temporaryBindEvent("beforeDrawing",function(t){var e=i.edgeType.findBorderPositions(t);!1===o.selected&&(o.x=e.from.x,o.y=e.from.y),!1===n.selected&&(n.x=e.to.x,n.y=e.to.y)}),this.body.emitter.emit("_redraw")}else this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){!0===this.options.enabled?(this.guiEnabled=!0,this._createWrappers(),!1===this.editMode?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",!0===this.editMode?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",!0===this.editMode?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=f.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+f.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},f.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,!0===this.guiEnabled&&(f.recursiveDOMDelete(this.editModeDiv),f.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){var e;e=this.options.rtl?"vis-button vis-delete-rtl":"vis-button vis-delete";var i=this._createButton("delete",e,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+(0,a.default)((0,s.default)(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(!0===s.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=f.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(!0===i.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+f.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(!0===s.isCluster?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_dragStartEdge",value:function(t){var e=this.lastTouch;this.selectionHandler._generateClickEvent("dragStart",t,e,void 0,!0)}},{key:"_performAddNode",value:function(t){var e=this,i={id:f.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw this.showManipulatorToolbar(),new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges._data[this.edgeBeingEditedId].label},n=this.options.editEdge;if("object"===(void 0===n?"undefined":(0,d.default)(n))&&(n=n.editWithoutDrag),"function"==typeof n){if(2!==n.length)throw new Error("The function for edit does not support two arguments (data, callback)");n(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw"),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(30),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(239),u=o(l),c=function(){function t(e,i,o){(0,a.default)(this,t),this.body=e,this.springLength=i,this.springConstant=o,this.distanceSolver=new u.default}return(0,d.default)(t,[{key:"setOptions",value:function(t){t&&(t.springLength&&(this.springLength=t.springLength),t.springConstant&&(this.springConstant=t.springConstant))}},{key:"solve",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o),this._createE_matrix();for(var n=0,r=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),a=1e9,h=0,d=0,l=0,u=0,c=0;a>.01&&n1&&c<5;){c+=1,this._moveNode(h,d,l);var m=this._getEnergy(h),v=(0,s.default)(m,3);u=v[0],d=v[1],l=v[2]}}}},{key:"_getHighestEnergyNode",value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,o=0,n=e[0],r=0,a=0,h=0;h $(DESTDIR)$(bindir)/netloc_ib_gather_raw.tmp && mv -f $(DESTDIR)$(bindir)/netloc_ib_gather_raw.tmp $(DESTDIR)$(bindir)/netloc_ib_gather_raw + chmod +x $(DESTDIR)$(bindir)/netloc_ib_gather_raw + +AM_CPPFLAGS = \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/include + +bin_PROGRAMS = \ + netloc_ib_extract_dats + +netloc_ib_extract_dats_SOURCES = \ + netloc_ib_extract_dats.c + +netloc_ib_extract_dats_LDADD = \ + $(top_builddir)/netloc/libnetloc.la \ + $(top_builddir)/hwloc/libhwloc.la diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/README b/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/README new file mode 100644 index 0000000000..54f5c21acd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/README @@ -0,0 +1,10 @@ +Normal way to use this: +* get some hwloc outputs from some nodes (at least enough nodes to make all subnets available) + and store them as .xml in a single directory +* run netloc-ib-gather-raw.pl --hwloc-dir --raw-dir + - If you cannot run the entire script as root, add --sudo to run ib* programs as root. + - If some subnets are not accessible from the local node, they will be skipped. + Add --verbose to see where you could run the same command to discover other subnets. + - If one subnet doesn't work for some reason, use --force-subnet instead of --hwloc-dir. +* make sure netloc_ib_reader and friends are in PATH +* run netloc-ib-extract-dats.pl --raw-dir --out-dir diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/netloc_ib_extract_dats.c b/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/netloc_ib_extract_dats.c new file mode 100644 index 0000000000..6f612d8cbd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/netloc_ib_extract_dats.c @@ -0,0 +1,1120 @@ +/* + * Copyright © 2016-2018 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE // for asprintf +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +#include // for dirname + +#include +#include +#include +#include +#include +#include +#include + +int global_link_idx = 0; + +typedef struct { + UT_hash_handle hh; /* makes this structure hashable */ + char dest[20]; /* key */ + float total_gbits; + UT_array *physical_link_idx; + int *partitions; +} edge_t; + +typedef struct { + UT_hash_handle hh; /* makes this structure hashable */ + char physical_id[20]; /* key */ + long logical_id; + int type; + char *description; + edge_t *edges; + int main_partition; + char *hostname; + int *partitions; + UT_array *physical_links; +} node_t; +node_t *nodes = NULL; + +typedef struct { + int int_id; // TODO long long + int ports[2]; + node_t *dest; + char *width; + char *speed; + float gbits; + char *description; + int *partitions; + int other_id; + edge_t *parent_edge; + node_t *parent_node; +} physical_link_t; +UT_icd physical_link_icd = {sizeof(physical_link_t), NULL, NULL, NULL }; + +UT_icd partitions_icd = {sizeof(char *), NULL, NULL, NULL }; +UT_array *partitions = NULL; + +const int NODE_TYPE_HOST = 0; +const int NODE_TYPE_SWITH = 1; +const int NODE_TYPE_UNKNOWN = 2; + +/* Route tables */ +typedef struct { + UT_hash_handle hh; /* makes this structure hashable */ + char physical_id[20]; /* key */ + int port; +} route_dest_t; +typedef struct { + UT_hash_handle hh; /* makes this structure hashable */ + char physical_id[20]; /* key */ + route_dest_t *dest; +} route_source_t; +route_source_t *routes = NULL; + +/* Paths tables */ +typedef struct { + UT_hash_handle hh; /* makes this structure hashable */ + char physical_id[20]; /* key */ + node_t *node; + UT_array *links; +} path_dest_t; +typedef struct { + UT_hash_handle hh; /* makes this structure hashable */ + char physical_id[20]; /* key */ + node_t *node; + path_dest_t *dest; +} path_source_t; +path_source_t *paths = NULL; + +int read_routes(char *subnet, char *path, char *route_filename); +int read_discover(char *subnet, char *discover_path, char *filename); +int write_into_file(char *subnet, char *path, char *hwlocpath); + +static void get_match(char *line, int nmatch, regmatch_t pmatch[], char *matches[]) +{ + for (int i = 0; i < nmatch; i++) { + regmatch_t current_match = pmatch[i]; + size_t len = current_match.rm_eo-current_match.rm_so; + matches[i] = (char *)malloc((len+1)*sizeof(char)); + strncpy(matches[i], line+current_match.rm_so, len); + matches[i][len] = '\0'; + } +} + +/* We suppose the description of nodes is like that: ([^ ]*).* + * while \1 is the hostname + */ +static char *node_find_hostname(node_t *node) +{ + char *name = node->description; + int max_size = strlen(name); + char *hostname = (char *)malloc(max_size*sizeof(char)); + + /* Looking for the name of the hostname */ + int i = 0; + if (name[0] == '\'') + name++; + while (i < max_size && + ((name[i] >= 'a' && name[i] <= 'z') || + (name[i] >= '0' && name[i] <= '9') || + (name[i] == '-'))) { + hostname[i] = name[i]; + i++; + } + hostname[i++] = '\0'; + char *old_hostname = hostname; + hostname = realloc(hostname, i*sizeof(char)); + if (!hostname) { + fprintf(stderr, "Oups: cannot reallocate memory\n"); + hostname = old_hostname; + } + return hostname; +} + +node_t *get_node(node_t **nodes, char *type, char *lid, + char *guid, char *subnet, char *desc) +{ + node_t *node; + char *id; + + asprintf(&id, "%.4s:%.4s:%.4s:%.4s", + guid, guid+4, guid+8, guid+12); + + // TODO check guid format + HASH_FIND_STR(*nodes, id, node); /* id already in the hash? */ + if (!node) { + size_t size = sizeof(*node)+sizeof(char)*(strlen(desc)+1); + node = (node_t *) malloc(size); + sprintf(node->physical_id, "%s", id); + + node->logical_id = atol(lid); + if (!strcmp(type, "CA")) + node->type = NODE_TYPE_HOST; + else if (!strcmp(type, "SW")) + node->type = NODE_TYPE_SWITH; + else + node->type = NODE_TYPE_UNKNOWN; + node->edges = NULL; + node->description = strdup(desc); + node->hostname = node_find_hostname(node); + node->main_partition = -1; + node->partitions = NULL; + + utarray_new(node->physical_links, &physical_link_icd); + + HASH_ADD_STR(*nodes, physical_id, node); /* guid: name of key field */ + } + free(id); + + return node; +} + +static int find_other_physical_link(physical_link_t *link) +{ + node_t *dest = link->dest; + unsigned int dest_port = link->ports[1]; + + physical_link_t *other_link = (physical_link_t *) + utarray_eltptr(dest->physical_links, dest_port-1); + + return other_link->int_id; +} + +static float compute_gbits(char *speed, char *width) +{ + float rate; + float encoding; + float gb_per_x; + int x; + + if (strcmp(speed, "SDR")) { + rate = 2.5; + encoding = 8.0/10; + } else if (strcmp(speed, "DDR")) { + rate = 5; + encoding = 8.0/10; + } else if (strcmp(speed, "QDR")) { + rate = 10; + encoding = 8.0/10; + } else if (strcmp(speed, "FDR")) { + rate = 14.0625; + encoding = 64.0/66; + } else if (strcmp(speed, "FDR10")) { + rate = 10; + encoding = 64.0/66; + } else if (strcmp(speed, "EDR")) { + rate = 25; + encoding = 64.0/66; + } else { + return 1; + } + gb_per_x = rate*encoding; + + regex_t width_re; + regcomp(&width_re, "([[:digit:]]*)x", REG_EXTENDED); + if (!regexec(&width_re, width, (size_t)0, NULL, 0)) { + x = atoi(width); + } else { + x = 0.0; + } + + regfree(&width_re); + + return x*gb_per_x; +} + +int build_paths(void) +{ + node_t *node_src, *node_dest, *node_tmp1, *node_tmp2; + HASH_ITER(hh, nodes, node_src, node_tmp1) { + if (node_src->type != NODE_TYPE_HOST) + continue; + char *id_src = node_src->physical_id; + + path_source_t *path = (path_source_t *) + malloc(sizeof(path_source_t)); + sprintf(path->physical_id, "%s", id_src); + path->node = node_src; + path->dest = NULL; + HASH_ADD_STR(paths, physical_id, path); + + HASH_ITER(hh, nodes, node_dest, node_tmp2) { + if (node_dest->type != NODE_TYPE_HOST) + continue; + + if (node_dest == node_src) { + continue; + } + + UT_array *found_links = NULL; + utarray_new(found_links, &ut_ptr_icd); + int completed = 1; + + char *id_dest = node_dest->physical_id; + + physical_link_t *link = (physical_link_t *) + utarray_eltptr(node_src->physical_links, 0); + utarray_push_back(found_links, &link); + + node_t *node_cur = link->dest; + while (node_cur != node_dest) { + route_source_t *route_source; + route_dest_t *route_dest; + char *id_cur = node_cur->physical_id; + HASH_FIND_STR(routes, id_cur, route_source); + if (!route_source) { + completed = 0; + break; + } + HASH_FIND_STR(route_source->dest, id_dest, route_dest); + if (!route_dest) { + completed = 0; + break; + } + + unsigned int port = route_dest->port; + link = (physical_link_t *) + utarray_eltptr(node_cur->physical_links, port-1); + utarray_push_back(found_links, &link); + node_cur = link->dest; + } + + if (completed) { + path_dest_t *path_dest = (path_dest_t *) + malloc(sizeof(path_dest_t)); + sprintf(path_dest->physical_id, "%s", id_dest); + path_dest->node = node_dest; + path_dest->links = found_links; + HASH_ADD_STR(path->dest, physical_id, path_dest); + } else { + utarray_free(found_links); + } + } + } + return 0; +} + +/* We suppose the hostname of nodes is like that: ([a-z]*).* + * while \1 is the name of the partition + */ +static char *node_find_partition_name(node_t *node) +{ + char *name; + int max_size; + char *partition; + + max_size = strlen(node->hostname); + partition = (char *)malloc((max_size+1)*sizeof(char)); + name = node->hostname; + + /* Looking for the name of the partition */ + int i = 0; + while (i < max_size && (name[i] >= 'a' && name[i] <= 'z')) { + partition[i] = name[i]; + i++; + } + partition[i++] = '\0'; + + char *old_partition = partition; + partition = realloc(partition, i*sizeof(char)); + if (!partition) { + fprintf(stderr, "Oups: cannot reallocate memory\n"); + partition = old_partition; + } + return partition; +} + + +int netloc_topology_find_partitions(void) +{ + int ret = 0; + int num_nodes; + char **partition_names; + node_t **hosts; + + num_nodes = HASH_COUNT(nodes); + partition_names = (char **)malloc(num_nodes*sizeof(char *)); + hosts = (node_t **)malloc(num_nodes*sizeof(node_t *)); + + /* Save all the partition names */ + int n = 0; + node_t *node, *node_tmp; + HASH_ITER(hh, nodes, node, node_tmp) { + if (node->type != NODE_TYPE_HOST) + continue; + partition_names[n] = node_find_partition_name(node); + hosts[n] = node; + n++; + } + + /* Associate the field partition in the nodes to the correct partition + * index + */ + int num_hosts = n; + int num_partitions = 0; + for (int n1 = 0; n1 < num_hosts; n1++) { + if (!partition_names[n1]) + continue; + partition_names[num_partitions] = partition_names[n1]; + hosts[n1]->main_partition = num_partitions; + + for (int n2 = n1+1; n2 < num_hosts; n2++) { + if (!partition_names[n2]) + continue; + + if (!strcmp(partition_names[n1], partition_names[n2])) { + free(partition_names[n2]); + partition_names[n2] = NULL; + hosts[n2]->main_partition = num_partitions; + } + } + num_partitions++; + } + + printf("%d partitions found\n", num_partitions); + utarray_new(partitions, &partitions_icd); + utarray_reserve(partitions, num_partitions); + for (int p = 0; p < num_partitions; p++) { + printf("\t'%s'\n", partition_names[p]); + utarray_push_back(partitions, partition_names+p); + } + free(partition_names); + free(hosts); + + return ret; +} + +int netloc_topology_set_partitions(void) +{ + /* Find the main partition for each node */ + netloc_topology_find_partitions(); + + node_t *node, *node_tmp; + HASH_ITER(hh, nodes, node, node_tmp) { + node->partitions = (int *) + calloc(utarray_len(partitions), sizeof(int)); + if (node->main_partition != -1) + node->partitions[node->main_partition] = 1; + + edge_t *edge, *edge_tmp; + HASH_ITER(hh, node->edges, edge, edge_tmp) { + edge->partitions = (int *) + calloc(utarray_len(partitions), sizeof(int)); + } + } + + /* Set the partitions for the physical links considering if there is in a + * path between two nodes of a partition */ + path_source_t *path_src, *path_src_tmp; + HASH_ITER(hh, paths, path_src, path_src_tmp) { + node_t *node_src = path_src->node; + int partition = node_src->main_partition; + path_dest_t *path_dest, *path_dest_tmp; + HASH_ITER(hh, path_src->dest, path_dest, path_dest_tmp) { + node_t *node_dest = path_dest->node; + if (node_dest->main_partition != partition) + continue; + + for (unsigned int l = 0; l < utarray_len(path_dest->links); l++) { + physical_link_t *link = *(physical_link_t **) + utarray_eltptr(path_dest->links, l); + if (!link->partitions) { + link->partitions = (int *) + calloc(utarray_len(partitions), sizeof(int)); + } + link->partitions[partition] = 1; + link->parent_node->partitions[partition] = 1; + link->parent_edge->partitions[partition] = 1; + } + } + } + return 0; +} + +void help(char *name, FILE *f) +{ + fprintf(f, "Usage: %s " + "[--hwloc-dir ]\n" + "\thwloc-dir can be an absolute path " + "or a relative path from out-dir\n", name); +} + +int main(int argc, char **argv) +{ + DIR *indir, *outdir; + char *prog_name = basename(argv[0]); + char *inpath = NULL, *outpath = NULL, *hwlocpath = NULL; + + if (argc != 2 && argc != 3 && argc != 5) { + goto error_param; + } + argc--; argv++; + + if (!strcmp(*argv, "--help")) { + help(prog_name, stdout); + return 0; + } + + inpath = *argv; + argc--; argv++; + + if (!argc) + goto error_param; + outpath = *argv; + argc--; argv++; + + while (argc > 0) { + if (!strcmp(*argv, "--hwloc-dir")) { + argc--; argv++; + if (!argc) + goto error_param; + hwlocpath = *argv; + } else if (!strcmp(*argv, "--help")) { + help(prog_name, stdout); + return 0; + } else { + goto error_param; + } + argc--; + argv++; + } + + if (!outpath || !inpath) { + goto error_param; + } + + indir = opendir(inpath); + if (!indir) { + fprintf(stderr, "Couldn't open input directory: \"%s\"\n", inpath); + perror("opendir"); + return 2; + } + + outdir = opendir(outpath); + if (!outdir) { + fprintf(stderr, "Couldn't open output directory: \"%s\"\n", outpath); + perror("opendir"); + closedir(outdir); + return 2; + } + + if (hwlocpath) { + char *realpath; + if (hwlocpath[0] != '/') { + asprintf(&realpath, "%s/%s", outpath, hwlocpath); + } else { + realpath = strdup(hwlocpath); + } + + DIR *hwlocdir = opendir(realpath); + if (!hwlocdir) { + fprintf(stderr, "Couldn't open hwloc directory: \"%s\"\n", realpath); + perror("opendir"); + closedir(indir); + closedir(outdir); + free(realpath); + return 2; + } + free(realpath); + closedir(hwlocdir); + } + + regex_t subnet_regexp; + regcomp(&subnet_regexp, "^ib-subnet-([0-9a-fA-F:]{19}).txt$", REG_EXTENDED); + struct dirent *entry; + while ((entry = readdir(indir))) { + nodes = NULL; + int subnet_found; + char *filename = entry->d_name; + + subnet_found = !(regexec(&subnet_regexp, filename, 0, NULL, 0)); + if (subnet_found) { + global_link_idx = 0; + char *discover_filename; + char *route_filename; + char *subnet; + asprintf(&subnet, "%.19s", filename+10); + + discover_filename = filename; + read_discover(subnet, inpath, discover_filename); + + asprintf(&route_filename, "%s/ibroutes-%s", inpath, subnet); + struct stat s; + int err = stat(route_filename, &s); + if (-1 == err) { + if (errno == ENOENT) { + printf("No route directory found for subnet %s\n", subnet); + } else { + perror("stat"); + exit(1); + } + } else { + if (S_ISDIR(s.st_mode)) { + char *route_filename; + asprintf(&route_filename, "ibroutes-%s", subnet); + read_routes(subnet, inpath, route_filename); + free(route_filename); + } else { + printf("No route directory found for subnet %s\n", subnet); + } + } + free(route_filename); + + build_paths(); + netloc_topology_set_partitions(); + + write_into_file(subnet, outpath, hwlocpath); + + /* Free node hash table */ + node_t *node, *node_tmp; + HASH_ITER(hh, nodes, node, node_tmp) { + HASH_DEL(nodes, node); + + /* Free nodes */ + free(node->description); + + /* Edges */ + edge_t *edge, *edge_tmp; + HASH_ITER(hh, node->edges, edge, edge_tmp) { + HASH_DEL(node->edges, edge); + utarray_free(edge->physical_link_idx); + free(edge->partitions); + free(edge); + } + + free(node->hostname); + free(node->partitions); + + /* Physical links */ + for (unsigned int l = 0; l < utarray_len(node->physical_links); l++) { + physical_link_t *link = (physical_link_t *) + utarray_eltptr(node->physical_links, l); + free(link->width); + free(link->speed); + free(link->description); + free(link->partitions); + } + utarray_free(node->physical_links); + + free(node); + } + + /* Free Partitions */ + for (char **ppartition = (char **)utarray_front(partitions); + ppartition != NULL; + ppartition = (char **)utarray_next(partitions, ppartition)) { + free(*ppartition); + } + utarray_free(partitions); + + /* Free Routes */ + route_source_t *route, *route_tmp; + HASH_ITER(hh, routes, route, route_tmp) { + HASH_DEL(routes, route); + + route_dest_t *routed, *routed_tmp; + HASH_ITER(hh, route->dest, routed, routed_tmp) { + HASH_DEL(route->dest, routed); + free(routed); + } + free(route); + } + + /* Free Paths */ + path_source_t *path, *path_tmp; + HASH_ITER(hh, paths, path, path_tmp) { + HASH_DEL(paths, path); + + path_dest_t *pathd, *pathd_tmp; + HASH_ITER(hh, path->dest, pathd, pathd_tmp) { + HASH_DEL(path->dest, pathd); + utarray_free(pathd->links); + free(pathd); + } + free(path); + } + + free(subnet); + } + } + regfree(&subnet_regexp); + closedir(indir); + closedir(outdir); + + return 0; + +error_param: + fprintf(stderr, "Wrong parameters\n"); + help(prog_name, stderr); + return 1; +} + +int read_discover(char *subnet, char *path, char *filename) +{ + char *line = NULL; + size_t size = 0; + char *discover_path; + FILE *discover_file; + + asprintf(&discover_path, "%s/%s", path, filename); + discover_file = fopen(discover_path, "r"); + free(discover_path); + + if (!discover_file) { + perror("fopen"); + exit(-1); + } + + regex_t dr_re; + regcomp(&dr_re, "^DR", REG_EXTENDED); + + regex_t link_re; + regcomp(&link_re, "^" + "(CA|SW)[[:space:]]+" // Source type + "([[:digit:]]+)[[:space:]]+" // Source lid + "([[:digit:]]+)[[:space:]]+" // Source port id + "0x([0-9a-f]{16})[[:space:]]+" // Source guid + "([[:digit:]]+x)[[:space:]]" // Connection width + "([^[:space:]]*)[[:space:]]+" // Connection speed + "-[[:space:]]+" // Dash seperator + "(CA|SW)[[:space:]]+" // Dest type + "([[:digit:]]+)[[:space:]]+" // Dest lid + "([[:digit:]]+)[[:space:]]+" // Dest port id + "0x([0-9a-f]{16})[[:space:]]+" // Dest guid + "\\([[:space:]]*(.*)[[:space:]]*\\)" // Description + , + REG_EXTENDED); + + regex_t nolink_re; + regcomp(&nolink_re, "^" + "(CA|SW)[[:space:]]+" // Source type + "([[:digit:]]+)[[:space:]]+" // Source lid + "([[:digit:]]+)[[:space:]]+" // Source port id + "0x([0-9a-f]{16})[[:space:]]+" // Source guid + , + REG_EXTENDED); + + int read; + errno = 0; /* getline can return -1 even if no error (EOF) */ + while ((read = getline(&line, &size, discover_file)) > 0) { + const int link_nfields = 12; + const int nolink_nfields = 7; + const int max_nfields = 12; + regmatch_t pmatch[max_nfields]; + char *matches[max_nfields]; + char *src_type; + char *src_lid; + char *src_port_id; + char *src_guid; + char *width; + char *speed; + char *dest_type; + char *dest_lid; + char *dest_port_id; + char *dest_guid; + char *link_desc; + char *src_desc = NULL; + char *dest_desc = NULL; + int have_peer; + + if (!regexec(&dr_re, line, (size_t)0, NULL, 0)) { + /* DR line */ + continue; + } + else if (!regexec(&link_re, line, (size_t)link_nfields, pmatch, 0)) { + /* peer associated: port is active */ + have_peer = 1; + get_match(line, link_nfields, pmatch, matches); + src_type = matches[ 1]; + src_lid = matches[ 2]; + src_port_id = matches[ 3]; + src_guid = matches[ 4]; + width = matches[ 5]; + speed = matches[ 6]; + dest_type = matches[ 7]; + dest_lid = matches[ 8]; + dest_port_id = matches[ 9]; + dest_guid = matches[10]; + link_desc = matches[11]; + free(matches[0]); + + /* Analyse description */ + regex_t desc_re; + regcomp(&desc_re, "(.*)" " - " "(.*)", REG_EXTENDED); + if (!regexec(&desc_re, link_desc, (size_t)3, pmatch, 0)) { + get_match(link_desc, 3, pmatch, matches); + src_desc = matches[1]; + dest_desc = matches[2]; + free(matches[0]); + } + else { + src_desc = (char *)calloc(1, sizeof(char)); + dest_desc = (char *)calloc(1, sizeof(char)); + } + regfree(&desc_re); + + } + else if (!regexec(&nolink_re, line, (size_t)nolink_nfields, pmatch, 0)) { + /* no peer associated: port is not active */ + have_peer = 0; + get_match(line, nolink_nfields, pmatch, matches); + src_type = matches[ 1]; + src_lid = matches[ 2]; + src_port_id = matches[ 3]; + src_guid = matches[ 4]; + width = matches[ 5]; + speed = matches[ 6]; + free(matches[0]); + } + else { + printf("Warning: line not recognized: \n\t%s\n", line); + continue; + } + + /* Compute gbits */ + float gbits = compute_gbits(speed, width); + + /* Add the link to the edge list */ + if (have_peer) { + /* Get the source node */ + node_t *src_node = + get_node(&nodes, src_type, src_lid, src_guid, subnet, src_desc); + + node_t *dest_node = + get_node(&nodes, dest_type, dest_lid, dest_guid, subnet, dest_desc); + + edge_t *edge; + HASH_FIND_STR(src_node->edges, dest_node->physical_id, edge); + /* Creation of the edge */ + if (!edge) { + edge = (edge_t *) malloc(sizeof(edge_t)); + strcpy(edge->dest, dest_node->physical_id); + edge->total_gbits = 0; + edge->partitions = NULL; + utarray_new(edge->physical_link_idx, &ut_int_icd); + HASH_ADD_STR(src_node->edges, dest, edge); + } + + /* Creation of the physical link */ + physical_link_t link[1]; + link->int_id = global_link_idx++; + link->ports[0] = atoi(src_port_id); + link->ports[1] = atoi(dest_port_id); + link->width = strdup(width); + link->speed = strdup(speed); + link->dest = dest_node; + link->gbits = gbits; + edge->total_gbits += gbits; + link->description = strdup(link_desc); + link->partitions = NULL; + link->parent_edge = edge; + link->parent_node = src_node; + link->other_id = -1; + + unsigned int port_idx = link->ports[0]-1; + /* NB: there is no function to set a specific index */ + if (port_idx+1 > utarray_len(src_node->physical_links)) { + utarray_insert(src_node->physical_links, link, port_idx); + } else { + physical_link_t *dest_link = (physical_link_t *) + utarray_eltptr(src_node->physical_links, port_idx); + memcpy(dest_link, link, sizeof(physical_link_t)); + } + + utarray_push_back(edge->physical_link_idx, &port_idx); + + free(src_desc); + free(dest_desc); + free(dest_type); + free(dest_lid); + free(dest_port_id); + free(dest_guid); + free(link_desc); + } + + free(src_type); + free(src_lid); + free(src_port_id); + free(src_guid); + free(width); + free(speed); + } + + int failed = 0; + if (read == -1 && errno) { + perror("getline:"); + failed = 1; + } + + free(line); + regfree(&dr_re); + regfree(&link_re); + regfree(&nolink_re); + fclose(discover_file); + + if (failed) + exit(-1); + + + /* Find the link in the other way */ + node_t *node, *node_tmp; + HASH_ITER(hh, nodes, node, node_tmp) { + unsigned int num_links = utarray_len(node->physical_links); + for (unsigned int i = 0; i < num_links; i++) { + physical_link_t *link = (physical_link_t *) + utarray_eltptr(node->physical_links, i); + if (!link->dest) + continue; + link->other_id = find_other_physical_link(link); + } + } + + return 0; +} + +char *partition_list_to_string(int *partition_list) +{ + if (!partition_list) + return strdup(""); + + int first = 1; + int offset = 0; + int num_partitions = utarray_len(partitions); + char tmp[20]; + int max_length = num_partitions*(sprintf(tmp, "%d", num_partitions)+1)+1; + + char *string = (char *)malloc(max_length*sizeof(char)); + string[0] = '\0'; + for (int p = 0; p < num_partitions; p++) { + if (partition_list[p] != 0) { + if (!first) + offset += sprintf(string+offset, ":"); + offset += sprintf(string+offset, "%d", p); + first = 0; + } + } + return string; +} + +int write_into_file(char *subnet, char *path, char *hwlocpath) +{ + char *output_path; + asprintf(&output_path, "%s/IB-%s-nodes.txt", path, subnet); + FILE *output = fopen(output_path, "w"); + + if (!output) { + perror("fopen"); + printf("Wrong output_path: %s\n", output_path); + exit(-1); + } + free(output_path); + + fprintf(output, "%d\n", NETLOCFILE_VERSION); + fprintf(output, "%s\n", subnet); + fprintf(output, "%s\n", hwlocpath? hwlocpath: ""); + + /* Write nodes into file */ + fprintf(output, "%d\n", HASH_COUNT(nodes)); + node_t *node, *node_tmp; + HASH_ITER(hh, nodes, node, node_tmp) { + fprintf(output, "%s,", node->physical_id); + fprintf(output, "%ld,", node->logical_id); + fprintf(output, "%d,", node->type); + char *partition_str = partition_list_to_string(node->partitions); + fprintf(output, "%s,", partition_str); + free(partition_str); + fprintf(output, "%s,", node->description); + fprintf(output, "%s", node->hostname); + fprintf(output, "\n"); + } + + /* Write edges into file */ + HASH_ITER(hh, nodes, node, node_tmp) { + edge_t *edge, *edge_tmp; + fprintf(output, "%s", node->physical_id); + HASH_ITER(hh, node->edges, edge, edge_tmp) { + unsigned int num_links = utarray_len(edge->physical_link_idx); + fprintf(output, ",%s,", edge->dest); + fprintf(output, "%f,", edge->total_gbits); + char *partition_str = partition_list_to_string(edge->partitions); + fprintf(output, "%s,", partition_str); + free(partition_str); + fprintf(output, "%u,", num_links); + for (unsigned int l = 0; l < num_links; l++) { + unsigned int link_idx = *(unsigned int *) + utarray_eltptr(edge->physical_link_idx, l); + physical_link_t *link = (physical_link_t *) + utarray_eltptr(node->physical_links, link_idx); + fprintf(output, "%d,", link->int_id); + fprintf(output, "%d,", link->ports[0]); + fprintf(output, "%d,", link->ports[1]); + fprintf(output, "%s,", link->width); + fprintf(output, "%s,", link->speed); + fprintf(output, "%f,", link->gbits); + fprintf(output, "%s,", link->description); + fprintf(output, "%d,", link->other_id); + char *partition_str = partition_list_to_string(link->partitions); + fprintf(output, "%s", partition_str); + free(partition_str); + fprintf(output, "%s", l == num_links-1 ? "": ","); + } + } + fprintf(output, "\n"); + } + + /* Write partitions into file */ + for (char **ppartition = (char **)utarray_front(partitions); + ppartition != NULL; + ppartition = (char **)utarray_next(partitions, ppartition)) + fprintf(output, "%s%s", *ppartition, + utarray_next(partitions, ppartition)? ",": ""); + fprintf(output, "\n"); + + /* Write paths into file */ + path_source_t *path_src, *path_src_tmp; + HASH_ITER(hh, paths, path_src, path_src_tmp) { + node_t *node_src = path_src->node; + path_dest_t *path_dest, *path_dest_tmp; + HASH_ITER(hh, path_src->dest, path_dest, path_dest_tmp) { + node_t *node_dest = path_dest->node; + fprintf(output, "%s,%s", + node_src->physical_id, node_dest->physical_id); + for (unsigned int l = 0; l < utarray_len(path_dest->links); l++) { + physical_link_t *link = *(physical_link_t **) + utarray_eltptr(path_dest->links, l); + fprintf(output, ",%d", link->int_id); + } + fprintf(output, "\n"); + } + } + + fclose(output); + + return 0; +} + +int read_routes(char *subnet, char *path, char *route_dirname) +{ + char *route_path; + DIR *dir; + + asprintf(&route_path, "%s/%s", path, route_dirname); + dir = opendir(route_path); + + printf("Read subnet: %s\n", subnet); + + if (dir != NULL) { + char *line = NULL; + size_t size = 0; + regex_t route_filename_regexp; + regcomp(&route_filename_regexp, "^ibroute-[0-9a-fA-F:]{19}-([0-9]*).txt$", REG_EXTENDED); + struct dirent *entry; + while ((entry = readdir(dir))) { + char *filename = entry->d_name; + + if (!(regexec(&route_filename_regexp, filename, 0, NULL, 0))) { + char *route_filename; + asprintf(&route_filename, "%s/%s", route_path, filename); + FILE *route_file = fopen(route_filename, "r"); + + if (!route_file) { + perror("fopen"); + exit(-1); + } + + free(route_filename); + + regex_t header_re; + regcomp(&header_re, "^Unicast lids.*" + "guid[[:space:]]+0x([0-9a-f]{16}).*:", REG_EXTENDED); + + regex_t route_re; + regcomp(&route_re, "^" + "0x([0-9a-f]+)[[:space:]]+" // Dest lid + "([[:digit:]]+)[[:space:]]+" // Port id + ":[[:space:]]+[(]" // Separator + "(Channel Adapter|Switch)[[:space:]]+" // Type + "portguid 0x([0-9a-f]{16}):" // Dest guid + , + REG_EXTENDED); + + int read; + + route_source_t *route = NULL; + while ((read = getline(&line, &size, route_file)) > 0) { + regmatch_t pmatch[5]; + char *matches[5]; + int port; + char dest_guid[20]; + + if (!regexec(&header_re, line, (size_t)2, pmatch, 0)) { + char guid[20]; + get_match(line, 2, pmatch, matches); + sprintf(guid, "%.4s:%.4s:%.4s:%.4s", + matches[1], matches[1]+4, matches[1]+8, matches[1]+12); + for (int m = 0; m < 2; m++) { + free(matches[m]); + } + + HASH_FIND_STR(routes, guid, route); + if (!route) { + route = (route_source_t *) malloc(sizeof(route_source_t)); + sprintf(route->physical_id, "%s", guid); + route->dest = NULL; + HASH_ADD_STR(routes, physical_id, route); + } + } + else if (!regexec(&route_re, line, (size_t)5, pmatch, 0)) { + if (!route) { + fprintf(stderr, "Malformed route file %s\n", filename); + exit(-1); + } + route_dest_t *route_dest; + get_match(line, 5, pmatch, matches); + port = atoi(matches[2]); + sprintf(dest_guid, "%.4s:%.4s:%.4s:%.4s", + matches[4], matches[4]+4, matches[4]+8, matches[4]+12); + for (int m = 0; m < 5; m++) { + free(matches[m]); + } + + route_dest = (route_dest_t *) malloc(sizeof(route_dest_t)); + sprintf(route_dest->physical_id, "%s", dest_guid); + route_dest->port = port; + HASH_ADD_STR(route->dest, physical_id, route_dest); + } + } + fclose(route_file); + regfree(&header_re); + regfree(&route_re); + } + } + free(line); + regfree(&route_filename_regexp); + } + + + free(route_path); + closedir(dir); + + return 0; +} + diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/netloc_ib_gather_raw.in b/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/netloc_ib_gather_raw.in new file mode 100644 index 0000000000..e93c6abd87 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/infiniband/netloc_ib_gather_raw.in @@ -0,0 +1,477 @@ +#!/usr/bin/env perl + +# +# Copyright © 2013-2017 Inria. All rights reserved. +# +# See COPYING in top-level directory. +# +# $HEADER$ +# + +use strict; + +use Getopt::Long; + +my $HWLOC_top_builddir = "@HWLOC_top_builddir@"; +my $prefix = "@prefix@"; +my $exec_prefix = "@exec_prefix@"; +my $bindir = "@bindir@"; +# this will be changed into $bindir/... during make install +my $locallstopo = "$HWLOC_top_builddir/utils/lstopo/lstopo-no-graphics"; + +my $hwlocdir = undef; +my $outdir = undef; +my @forcesubnets; +my $needsudo = 0; +my $ibnetdiscover = "/usr/sbin/ibnetdiscover"; +my $ibroute = "/usr/sbin/ibroute"; +my $verbose = 0; +my $force = 0; +my $dryrun = 0; +my $ignoreerrors = 0; +my $help = 0; +my $sleep = 0; + +my $sleepcount = 0; +sub sleep_between_probes { + my $indent = shift; + if ($sleep) { + print $indent."... Sleeping $sleep seconds between probes ...\n" unless $sleepcount; + sleep $sleep if $sleepcount; + $sleepcount++; + } +} + +&Getopt::Long::Configure("bundling"); +my $ok = Getopt::Long::GetOptions( + "hwloc-dir=s" => \$hwlocdir, + "force-subnet=s" => \@forcesubnets, + "sudo" => \$needsudo, + "ibnetdiscover=s" => \$ibnetdiscover, + "ibroute=s" => \$ibroute, + "sleep=i" => \$sleep, + "ignore-errors" => \$ignoreerrors, + "verbose|v" => \$verbose, + "force|f" => \$force, + "dry-run" => \$dryrun, + "help|h" => \$help + ); + +if ($help or !$ok or !defined $ARGV[0]) { + print "$0 [options] \n"; + print " Dumps topology information to /ib-raw/\n"; + print " Subnets are guessed from the /hwloc/ directory where\n"; + print " the hwloc XML exports of some nodes are stored.\n"; + print "Options:\n"; + print " --sudo\n"; + print " Pass sudo to internal ibnetdiscover and ibroute invocations.\n"; + print " Useful when the entire script cannot run as root.\n"; + print " --hwloc-dir \n"; + print " Use instead of /hwloc/ for hwloc XML exports.\n"; + print " --force-subnet [:]: to force the discovery\n"; + print " Do not guess subnets from hwloc XML exports.\n"; + print " Force discovery on local board port \n"; + print " and optionally force the subnet id \n"; + print " instead of reading it from the first GID.\n"; + print " Examples: --force-subnet mlx4_0:1\n"; + print " --force-subnet fe80:0000:0000:0000:mlx4_0:1\n"; + print " --ibnetdiscover /path/to/ibnetdiscover\n"; + print " --ibroute /path/to/ibroute\n"; + print " Specify exact location of programs. Default is /usr/bin/\n"; + print " --sleep \n"; + print " Sleep for seconds between invocations of programs probing the network\n"; + print " --ignore-errors\n"; + print " Ignore errors from ibnetdiscover and ibroute, assume their outputs are ok\n"; + print " --force -f\n"; + print " Always rediscover to overwrite existing files without asking\n"; + print " --verbose -v\n"; + print " Add verbose messages\n"; + print " --dry-run\n"; + print " Do not actually run programs or modify anything\n"; + print " --help -h\n"; + print " Show this help\n"; + exit(1); +} + +my $outdir = $ARGV[0]; + +mkdir $outdir unless $dryrun; +die "$outdir isn't a directory\n" unless -d $outdir; +mkdir "$outdir/ib-raw" unless $dryrun; +die "$outdir/ib-raw isn't a directory\n" unless -d "$outdir/ib-raw"; + +my $sudo = $needsudo ? "sudo" : ""; + +if (`id -u` ne 0 and !$sudo and !$dryrun) { + print "WARNING: Not running as root.\n"; +} + +# subnets that will be discovered locally +my %subnets_todiscover; + +######################################### +# Read forced subnets +if (@forcesubnets) { + print "Enforcing list of subnets to discover:\n"; + foreach my $subnetstring (@forcesubnets) { + if ($subnetstring =~ /^([0-9a-fA-F:]{19}):([0-9a-z_-]+):([0-9]+)$/) { + my $subnet = $1; + my $boardname = $2; + my $portnum = $3; + print " Subnet $subnet from local board $boardname port $portnum.\n"; + $subnets_todiscover{$subnet}->{localboardname} = $boardname; + $subnets_todiscover{$subnet}->{localportnum} = $portnum; + + } elsif ($subnetstring =~ /^([0-9a-z_-]+):([0-9]+)$/) { + my $boardname = $1; + my $portnum = $2; + my $subnet; + print " Unknown subnet from local board $boardname port $portnum.\n"; + my $filename = "/sys/class/infiniband/$boardname/ports/$portnum/gids/0"; + if (open FILE, $filename) { + my $line = ; + if ($line =~ /^([0-9a-fA-F:]{19}):([0-9a-fA-F:]{19})$/) { + $subnet = $1 + } + close FILE; + } + if (defined $subnet) { + print " Found subnet $subnet from first GID.\n"; + $subnets_todiscover{$subnet}->{localboardname} = $boardname; + $subnets_todiscover{$subnet}->{localportnum} = $portnum; + } else { + print " Couldn't read subnet from GID $filename, ignoring.\n"; + } + + } else { + print " Cannot parse --force-subnet $subnetstring, ignoring.\n"; + } + } + print "\n"; + +} else { + ######################################### + # Guess subnets from hwloc + if (!defined $hwlocdir) { + $hwlocdir = "${outdir}/hwloc"; + print "Using $hwlocdir as hwloc lstopo XML directory.\n\n"; + } + + mkdir $hwlocdir unless $dryrun; + die "$hwlocdir isn't a directory\n" unless -d $hwlocdir; + + # at least get the local hwloc XML + my $hostname = `hostname`; + chomp $hostname; + my $lstopooutput = "$hwlocdir/${hostname}.xml"; + if (!-f $lstopooutput) { + print "Exporting local node hwloc XML...\n"; + print " Running lstopo-no-graphics...\n"; + my $cmd = "$locallstopo -f $lstopooutput"; + if ($dryrun) { + print " NOT running $cmd\n" if $verbose; + } else { + my $ret = system "$cmd" ; + if ($ret and !$ignoreerrors) { + print " Failed (exit code $ret).\n"; + } + } + print "\n"; + } + + # $servers{$hostname}->{gids}->{$boardname}->{$portnum}->{$gidnum}->{subnet} and ->{guid} = xxxx:xxxx:xxxx:xxxx + # $servers{$hostname}->{gids}->{$boardname}->{$portnum}->{invalid} = 1 + # $servers{$hostname}->{subnets}->{$subnet} = 1 + my %servers; + + # $subnets{$subnet}->{$hostname} = 1; + my %subnets; + + opendir DIR, $hwlocdir + or die "Failed to open hwloc directory ($!).\n"; + # list subnets by ports + while (my $hwlocfile = readdir DIR) { + my $hostname; + if ($hwlocfile =~ /(.+).xml$/) { + $hostname = $1; + } else { + next; + } + + open FILE, "$hwlocdir/$hwlocfile" or next; + my $boardname = undef; + my $portnum = undef; + while (my $line = ) { + if ($line =~ //) { + $boardname = $1; + } elsif (defined $boardname) { + if ($line =~ /<\/object>/) { + $boardname = undef; + } elsif ($line =~ //) { + $servers{$hostname}->{gids}->{$boardname}->{$1}->{$2}->{subnet} = $3; + $servers{$hostname}->{gids}->{$boardname}->{$1}->{$2}->{guid} = $4; + } elsif ($line =~ //) { + # lid must be between 0x1 and 0xbfff + if ((hex $2) < 1 or (hex $2) > 49151) { + $servers{$hostname}->{gids}->{$boardname}->{$1}->{invalid} = 1; + } + } elsif ($line =~ //) { + # state must be active = 4 + if ($2 != 4) { + $servers{$hostname}->{gids}->{$boardname}->{$1}->{invalid} = 1; + } + } + } + } + close FILE; + } + closedir DIR; + + # remove down/inactive ports/servers/... + foreach my $hostname (keys %servers) { + foreach my $boardname (keys %{$servers{$hostname}->{gids}}) { + foreach my $portnum (keys %{$servers{$hostname}->{gids}->{$boardname}}) { + delete $servers{$hostname}->{gids}->{$boardname}->{$portnum} + if exists $servers{$hostname}->{gids}->{$boardname}->{$portnum}->{invalid}; + } + delete $servers{$hostname}->{gids}->{$boardname} + unless keys %{$servers{$hostname}->{gids}->{$boardname}}; + } + delete $servers{$hostname} + unless keys %{$servers{$hostname}->{gids}}; + } + + # fill list of hostnames per subnets and subnets per hostnames + foreach my $hostname (keys %servers) { + foreach my $boardname (keys %{$servers{$hostname}->{gids}}) { + foreach my $portnum (keys %{$servers{$hostname}->{gids}->{$boardname}}) { + foreach my $gidid (keys %{$servers{$hostname}->{gids}->{$boardname}->{$portnum}}) { + my $subnet = $servers{$hostname}->{gids}->{$boardname}->{$portnum}->{$gidid}->{subnet}; + $servers{$hostname}->{subnets}->{$subnet} = 1; + $subnets{$subnet}->{$hostname} = 1; + } + } + } + } + + my $nrsubnets = scalar (keys %subnets); + print "Found $nrsubnets subnets in hwloc directory:\n"; + # find local subnets + my $localhostname = `hostname`; chomp $localhostname; + { + my $hostname = $localhostname; + foreach my $boardname (keys %{$servers{$hostname}->{gids}}) { + foreach my $portnum (keys %{$servers{$hostname}->{gids}->{$boardname}}) { + foreach my $gidid (keys %{$servers{$hostname}->{gids}->{$boardname}->{$portnum}}) { + my $subnet = $servers{$hostname}->{gids}->{$boardname}->{$portnum}->{$gidid}->{subnet}; + if (!exists $subnets_todiscover{$subnet}) { + print " Subnet $subnet is locally accessible from board $boardname port $portnum.\n"; + $subnets_todiscover{$subnet}->{localboardname} = $boardname; + $subnets_todiscover{$subnet}->{localportnum} = $portnum; + } elsif ($verbose) { + print " Subnet $subnet is also locally accessible from board $boardname port $portnum.\n"; + } + } + } + } + } + # find non-locally accessible subnets + foreach my $subnet (keys %subnets) { + next if exists $subnets{$subnet}->{$localhostname}; + print " Subnet $subnet is NOT locally accessible.\n"; + my @hostnames = (keys %{$subnets{$subnet}}); + if ($verbose) { + print " Subnet $subnet is accessible from nodes:\n"; + foreach my $hostname (@hostnames) { + print " $hostname\n"; + } + } else { + print " Subnet $subnet is accessible from node ".$hostnames[0]; + print " (and ".(@hostnames-1)." others)" if (@hostnames > 1); + print "\n"; + } + } + print "\n"; + + # list nodes that are connected to all subnets, if the local isn't + if (scalar keys %{$servers{$localhostname}->{subnets}} != $nrsubnets) { + my @fullyconnectedhostnames; + foreach my $hostname (keys %servers) { + if (scalar keys %{$servers{$hostname}->{subnets}} == $nrsubnets) { + push @fullyconnectedhostnames, $hostname; + } + } + if (@fullyconnectedhostnames) { + if ($verbose) { + print "All subnets are accessible from nodes:\n"; + foreach my $hostname (@fullyconnectedhostnames) { + print " $hostname\n"; + } + } else { + print "All subnets are accessible from node ".$fullyconnectedhostnames[0]; + print " (and ".(@fullyconnectedhostnames-1)." others)" if (@fullyconnectedhostnames > 1); + print "\n"; + } + } else { + print "No node is connected to all subnets.\n"; + } + print "\n"; + } +} + +########################### +# Discovery routines + +# ibnetdiscover has GUIDs in the form of 0xXXXXXXXXXXXXXXXX, but hwloc +# has GUIDs in the form of XXXX:XXXX:XXXX:XXXX. So just arbitrarily +# choose hwloc's form and convert everything to that format. +sub normalize_guid { + my ($guid) = @_; + + return "" + if ($guid eq ""); + + $guid =~ m/0x(.{4})(.{4})(.{4})(.{4})/; + return "$1:$2:$3:$4"; +} + +sub getroutes { + my $subnet = shift; + my $boardname = shift; + my $portnum = shift; + my $ibnetdiscoveroutput = shift; + my $ibrouteoutdir = shift; + my $lids; + + if (!open(FILE, $ibnetdiscoveroutput)) { + print " Couldn't open $ibnetdiscoveroutput\n"; + return; + } + + while () { + # We only need lines that begin with SW + next + if (! /^SW /); + + # Split out the columns. Yay regexps. One form of line has + # both source and destination information. The other form + # only has source information (because it's not hooked up to + # anything -- usually a switch port that doesn't have anything + # plugged in to it). + chomp; + my $line = $_; + + my ($have_peer, $src_name, $src_type, $src_lid, $src_port_id, + $src_guid, $width, $speed, $dest_type, $dest_lid, $dest_port_id, + $dest_guid, $dest_name); + + # First, assume that the line has both a port and a peer. + if ($line !~ m/^SW\s+(\d+)\s+(\d+)\s+(0x[0-9a-f]{16})\s+(\d+x)\s([^\s]*)\s+-\s+(CA|SW)\s+(\d+)\s+(\d+)\s+(0x[0-9a-f]{16})\s+\(\s+'(.+?)'\s+-\s+'(.+?)'\s\)/) { + # If we get here, there was no peer -- just a port. + $have_peer = 0; + + if ($line !~ m/^SW\s+(\d+)\s+(\d+)\s+(0x[0-9a-f]{16})\s+(\d+x)\s([^\s]*)\s+'(.+?)'/) { + print "Line cannot be parsed:\n$line\n"; + next; + } + $src_lid = $1; # This is a decimal number + $src_port_id = $2; # This is a decimal number + $src_guid = $3; + $width = $4; + $speed = $5; + $src_name = $6; + } else { + $have_peer = 1; + + $src_lid = $1; # This is a decimal number + $src_port_id = $2; # This is a decimal number + $src_guid = $3; + $width = $4; + $speed = $5; + $dest_type = $6; + $dest_lid = $7; # This is a decimal number + $dest_port_id = $8; # This is a decimal number + $dest_guid = $9; + $src_name = $10; + $dest_name = $11; + } + + # Convert GUIDs to the form xxxx:xxxx:xxxx:xxxx + $src_guid = normalize_guid($src_guid); + $dest_guid = normalize_guid($dest_guid) + if ($have_peer); + + # If the source switch LID already exists, then just keep + # going. + next + if (exists($lids->{$src_lid})); + + # Run ibroute on this switch LID + my $ibrouteoutput = "$ibrouteoutdir/ibroute-$subnet-$src_lid.txt"; + print " Running ibroute for switch '$src_name' LID $src_lid...\n"; + my $cmd = "$sudo $ibroute -C $boardname -P $portnum $src_lid"; + if ($dryrun) { + print " NOT running $cmd\n" if $verbose; + } else { + sleep_between_probes (" "); + my $ret = system "$cmd > ${ibrouteoutput}.new" ; + if (!$ret or $ignoreerrors) { + unlink ${ibrouteoutput}; + rename "${ibrouteoutput}.new", "${ibrouteoutput}"; + } else { + unlink "${ibrouteoutput}.new"; + print " Failed (exit code $ret).\n"; + next; + } + } + + $lids->{$src_lid} = 1; + } + + close FILE; +} + +##############################" +# Discover subnets for real + +foreach my $subnet (keys %subnets_todiscover) { + my $boardname = $subnets_todiscover{$subnet}->{localboardname}; + my $portnum = $subnets_todiscover{$subnet}->{localportnum}; + + print "Looking at $subnet (through local board $boardname port $portnum)...\n"; + + my $ibnetdiscoveroutput = "$outdir/ib-raw/ib-subnet-$subnet.txt"; + my $ibrouteoutdir = "$outdir/ib-raw/ibroutes-$subnet"; + + if (-f $ibnetdiscoveroutput and !$force) { + print " $ibnetdiscoveroutput already exists, discover again? (y/n) "; + my $answer = ; + next if $answer !~ /^y/; + } + + print " Running ibnetdiscover...\n"; + my $cmd = "$sudo $ibnetdiscover -s -l -g -H -S -R -p -C $boardname -P $portnum"; + if ($dryrun) { + print " NOT running $cmd\n" if $verbose; + } else { + sleep_between_probes (" "); + print " $cmd\n" if $verbose; + my $ret = system "$cmd > ${ibnetdiscoveroutput}.new" ; + if (!$ret or $ignoreerrors) { + unlink ${ibnetdiscoveroutput}; + rename "${ibnetdiscoveroutput}.new", "${ibnetdiscoveroutput}"; + } else { + unlink "${ibnetdiscoveroutput}.new"; + print " Failed (exit code $ret).\n"; + next; + } + } + + print " Getting routes...\n"; + if (!$dryrun) { + system("rm -rf $ibrouteoutdir"); + mkdir $ibrouteoutdir unless $dryrun; + die "$ibrouteoutdir isn't a directory\n" unless -d $ibrouteoutdir; + } + getroutes $subnet, $boardname, $portnum, $ibnetdiscoveroutput, $ibrouteoutdir; +} diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/mpi/Makefile.am b/3rd-party/hwloc-2.7.1/utils/netloc/mpi/Makefile.am new file mode 100644 index 0000000000..50b49134f8 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/mpi/Makefile.am @@ -0,0 +1,38 @@ +# Copyright © 2016-2018 Inria. All rights reserved. +# +# See COPYING in top-level directory. +# +# $HEADER$ +# + +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/include +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +LDADD = $(top_builddir)/netloc/libnetloc.la \ + $(top_builddir)/hwloc/libhwloc.la + +if BUILD_MPITOOLS +bin_PROGRAMS = \ + netloc_rank_order \ + netloc_mpi_find_hosts + +if BUILD_NETLOCSCOTCH +bin_PROGRAMS += \ + netloc_mpi_rank_file +endif +endif + +netloc_rank_order_SOURCES = netloc_rank_order.c + +netloc_mpi_find_hosts_SOURCES = netloc_mpi_find_hosts.c +netloc_mpi_find_hosts_CPPFLAGS = $(AM_CPPFLAGS) $(MPI_CPPFLAGS) +netloc_mpi_find_hosts_LDADD = $(LDADD) $(MPI_LDADD) + +if BUILD_NETLOCSCOTCH +netloc_mpi_rank_file_SOURCES = netloc_mpi_rank_file.c +netloc_mpi_rank_file_LDADD = $(LDADD) \ + $(top_builddir)/netloc/libnetlocscotch.la \ + -lscotch -lscotcherr -lm -lpthread +endif diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_mpi_find_hosts.c b/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_mpi_find_hosts.c new file mode 100644 index 0000000000..1c1be02795 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_mpi_find_hosts.c @@ -0,0 +1,224 @@ +/* + * Copyright © 2017 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include +#include +#include +#include +#include + +typedef struct { + UT_hash_handle hh; /* Makes this structure hashable */ + char *name; /* Hash key */ + UT_array *slots; + UT_array *ranks; +} node_t; + +int main(int argc, char **argv) +{ + int rank; + int num_ranks; + MPI_Status status; + hwloc_topology_t topology; + hwloc_cpuset_t set; + int pu_rank = -1; + char name[1024]; + int resultlen; + int master; /* To be responsible for a node */ + int one = 1; + int zero = 0; + + MPI_Init(&argc,&argv); + + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &num_ranks); + + if (argc != 2) { + if (rank == 0) + fprintf(stderr, "Usage: %s \n", argv[0]); + MPI_Abort(MPI_COMM_WORLD, 1); + } + + hwloc_topology_init(&topology); + hwloc_topology_load(topology); + set = hwloc_bitmap_alloc(); + hwloc_get_cpubind(topology, set, 0); + pu_rank = hwloc_bitmap_first(set); + + MPI_Get_processor_name(name, &resultlen); + resultlen++; + + if (rank == 0) { + FILE *output; + output = fopen(argv[1], "w"); + if (!output) { + perror("fopen"); + MPI_Abort(MPI_COMM_WORLD, 2); + } + + node_t *nodes = NULL; + node_t *node; + + master = 1; + + /* Rank 0 info */ + /* Find node */ + HASH_FIND_PTR(nodes, &name, node); + /* If node does not exist yet, create it */ + if (!node) { + node = (node_t *)malloc(sizeof(node_t)); + node->name = name; + utarray_new(node->slots, &ut_int_icd); + utarray_new(node->ranks, &ut_int_icd); + HASH_ADD_KEYPTR(hh, nodes, node->name, strlen(node->name), node); + } + /* Add the slot to the list of slots */ + utarray_push_back(node->slots, &pu_rank); + utarray_push_back(node->ranks, &rank); + + /* Info about other ranks */ + for (int p = 1; p < num_ranks; p++) { + /* Receive node name size, and slot index */ + char *nodename; + int buffer[2]; + MPI_Recv (buffer, 2, MPI_INT, p, 0, MPI_COMM_WORLD, &status); + int size = buffer[0]; + int slot = buffer[1]; + + /* Receive node name */ + nodename = (char *)malloc(sizeof(char[size])); + MPI_Recv(nodename, size, MPI_CHAR, p, 0, MPI_COMM_WORLD, &status); + + /* Find node */ + HASH_FIND_STR(nodes, nodename, node); + /* If node does not exist yet, create it */ + if (!node) { + node = (node_t *)malloc(sizeof(node_t)); + node->name = nodename; + utarray_new(node->slots, &ut_int_icd); + utarray_new(node->ranks, &ut_int_icd); + HASH_ADD_KEYPTR(hh, nodes, node->name, strlen(node->name), node); + + /* p will be the master for node */ + MPI_Send(&one, 1, MPI_INT, p, 0, MPI_COMM_WORLD); + + } else { + /* p won't be a master */ + MPI_Send(&zero, 1, MPI_INT, p, 0, MPI_COMM_WORLD); + } + /* Add the slot to the list of slots */ + utarray_push_back(node->slots, &slot); + utarray_push_back(node->ranks, &p); + } + + /* Write the list of nodes and slots by node */ + + /* Number of nodes */ + int num_nodes = HASH_COUNT(nodes); + fprintf(output, "%d", num_nodes); + + /* Names of nodes */ + node_t *node_tmp; + HASH_ITER(hh, nodes, node, node_tmp) { + fprintf(output, " %s", node->name); + } + + /* Number of slots by node */ + HASH_ITER(hh, nodes, node, node_tmp) { + int num_slots = utarray_len(node->slots); + fprintf(output, " %d", num_slots); + } + + /* List of slots */ + HASH_ITER(hh, nodes, node, node_tmp) { + int num_slots = utarray_len(node->slots); + int *slots = (int *)node->slots->d; + int *ranks = (int *)node->ranks->d; + for (int s = 0; s < num_slots; s++) { + fprintf(output, " %d", slots[s]); + fprintf(output, " %d", ranks[s]); + } + } + fclose(output); + } else { + int buffer[2]; + buffer[0] = resultlen; + buffer[1] = pu_rank; + /* Send node name size, and slot index */ + MPI_Send(buffer, 2, MPI_INT, 0, 0, MPI_COMM_WORLD); + /* Send node name */ + MPI_Send(name, resultlen, MPI_CHAR, 0, 0, MPI_COMM_WORLD); + + /* Receive if is a master or not */ + MPI_Recv (&master, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); + } + + /* In charge of writing hwloc file */ + if (master) { + /* Get the Netloc topology to find hwloc path */ + char *topopath = getenv("NETLOC_TOPOFILE"); + if (!topopath) { + fprintf(stderr, "Error: you need to set NETLOC_TOPOFILE in your environment.\n"); + } else { + topopath = strdup(topopath); + netloc_topology_t *netloc_topology = netloc_topology_construct(topopath); + if (netloc_topology == NULL) { + fprintf(stderr, "Error: netloc_topology_construct failed\n"); + free(topopath); + return NETLOC_ERROR; + } + + /* Find hwloc dir path */ + char *hwloc_path; + if (netloc_topology->hwlocpath[0] != '/') { + char *path_tmp = strdup(netloc_topology->topopath); + asprintf(&hwloc_path, "%s/%s", dirname(path_tmp), netloc_topology->hwlocpath); + free(path_tmp); + } else { + hwloc_path = strdup(netloc_topology->hwlocpath); + } + + /* Check if already have an hwloc file */ + /* We try to find a diff file */ + char *hwloc_file; + asprintf(&hwloc_file, "%s/%s.diff.xml", hwloc_path, name); + FILE *fxml; + if ((fxml = fopen(hwloc_file, "r"))) { + fclose(fxml); + free(hwloc_file); + hwloc_file = NULL; + } else { + free(hwloc_file); + /* We try to find a regular file */ + asprintf(&hwloc_file, "%s/%s.xml", hwloc_path, name); + if ((fxml = fopen(hwloc_file, "r"))) { + fclose(fxml); + free(hwloc_file); + hwloc_file = NULL; + } + } + + /* if there is no hwloc file, let's write one */ + if (hwloc_file) { + if (hwloc_topology_export_xml(topology, hwloc_file, 0) == -1) { + fprintf(stderr, "Error: netloc_topology_construct failed\n"); + free(topopath); + return NETLOC_ERROR; + } + free(hwloc_path); + free(hwloc_file); + } + } + } + + MPI_Finalize(); +} diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_mpi_rank_file.c b/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_mpi_rank_file.c new file mode 100644 index 0000000000..6413cc9e43 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_mpi_rank_file.c @@ -0,0 +1,60 @@ +/* + * Copyright © 2016 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ + +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + int ret; + netlocscotch_core_t *cores; + int num_processes; + + char *comm_filename; + char *rank_filename; + + assert(argc == 3); + + comm_filename = argv[1]; + rank_filename = argv[2]; + + ret = netlocscotch_get_mapping_from_comm_file(comm_filename, &num_processes, &cores); + + if (ret != NETLOC_SUCCESS) { + fprintf(stderr, "Error: netlocscotch_get_mapping_from_comm_file failed\n"); + return NETLOC_ERROR; + } + + FILE *rank_file = fopen(rank_filename, "w"); + if (!rank_file) { + perror("fopen"); + ret = NETLOC_ERROR; + + } else { + for (int p = 0; p < num_processes; p++) { + fprintf(rank_file, "rank %d=%s slot=%d\n", + p, cores[p].nodename, cores[p].core); + } + fclose(rank_file); + } + + for (int p = 0; p < num_processes; p++) { + free(cores[p].nodename); + } + free(cores); + + return ret; +} + diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_rank_order.c b/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_rank_order.c new file mode 100644 index 0000000000..70907fe684 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/mpi/netloc_rank_order.c @@ -0,0 +1,61 @@ +/* + * Copyright © 2016 Inria. All rights reserved. + * + * $COPYRIGHT$ + * + * Additional copyrights may follow + * See COPYING in top-level directory. + * + * $HEADER$ + */ + +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include +#include + +#include +#include + +static int compareint(void const *a, void const *b) +{ + const int *int_a = (const int *)a; + const int *int_b = (const int *)b; + return *int_a-*int_b; +} + + +int main(int argc, char **argv) +{ + int ret; + /* First we need to get the topology of the whole machine */ + netloc_arch_t arch; + ret = netloc_arch_build(&arch, 0); + if( NETLOC_SUCCESS != ret ) { + return ret; + } + + /* Set the current nodes and slots in the arch */ + ret = netloc_arch_set_current_resources(&arch); + if( NETLOC_SUCCESS != ret ) { + return ret; + } + int num_nodes = arch.num_current_hosts; + + /* Order the idx_list to have the nodes sorted */ + qsort(arch.current_hosts, num_nodes, sizeof(*arch.current_hosts), compareint); + + /* Show the list */ + for (int n = 0; n < num_nodes; n++) { + netloc_arch_node_t *arch_node = arch.node_slot_by_idx[arch.current_hosts[n]].node; + qsort(arch_node->current_slots, arch_node->num_current_slots, + sizeof(*arch_node->current_slots), compareint); + + for (int s = 0; s < arch_node->num_current_slots; s++) { + int slot_idx = arch_node->current_slots[s]; + int slot = arch_node->slot_os_idx[slot_idx]; + printf("%s %d", arch_node->name, slot); + } + } + + return NETLOC_SUCCESS; +} diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/scotch/Makefile.am b/3rd-party/hwloc-2.7.1/utils/netloc/scotch/Makefile.am new file mode 100644 index 0000000000..6a863adfae --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/scotch/Makefile.am @@ -0,0 +1,24 @@ +# Copyright © 2016-2018 Inria. All rights reserved. +# +# See COPYING in top-level directory. +# +# $HEADER$ +# + +AM_CPPFLAGS = $(HWLOC_CPPFLAGS) \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/include +AM_LDFLAGS = $(HWLOC_LDFLAGS) + +LDADD = $(top_builddir)/netloc/libnetloc.la \ + $(top_builddir)/netloc/libnetlocscotch.la \ + $(top_builddir)/hwloc/libhwloc.la \ + -lscotch -lscotcherr -lm -lpthread + +if BUILD_NETLOCSCOTCH +bin_PROGRAMS = \ + netlocscotch_get_arch +endif + +netlocscotch_get_arch_SOURCES = \ + netlocscotch_get_arch.c diff --git a/3rd-party/hwloc-2.7.1/utils/netloc/scotch/netlocscotch_get_arch.c b/3rd-party/hwloc-2.7.1/utils/netloc/scotch/netlocscotch_get_arch.c new file mode 100644 index 0000000000..4c80a0789b --- /dev/null +++ b/3rd-party/hwloc-2.7.1/utils/netloc/scotch/netlocscotch_get_arch.c @@ -0,0 +1,62 @@ +#include // for scotch +#include +#include +#include +#include + +void help(char *name, FILE *f) +{ + fprintf(f, "Usage: %s [subarchfile]\n" + "\t%s --help\n", name, name); +} + +int main(int argc, char **argv) +{ + int ret; + SCOTCH_Arch arch; + SCOTCH_Arch subarch; + + char *arch_filename = NULL; + char *subarch_filename = NULL; + + if (argc == 1 || argc > 3) { + help(argv[0], stdout); + return 1; + } + + if (argc == 2) { + if (!strcmp(*argv, "--help")) { + help(argv[0], stdout); + return 0; + } else { + arch_filename = argv[1]; + } + } else if (argc == 3) { + arch_filename = argv[1]; + subarch_filename = argv[2]; + } + + ret = netlocscotch_build_global_arch(&arch); + if( NETLOC_SUCCESS != ret ) { + return ret; + } + FILE *arch_file = fopen(arch_filename, "w"); + SCOTCH_archSave(&arch, arch_file); + fclose(arch_file); + + if (subarch_filename) { + ret = netlocscotch_build_current_arch(&arch, &subarch); + if( NETLOC_SUCCESS != ret ) { + return ret; + } + FILE *subarch_file = fopen(subarch_filename, "w"); + SCOTCH_archSave(&subarch, subarch_file); + fclose(subarch_file); + SCOTCH_archExit(&subarch); + } + + SCOTCH_archExit(&arch); + + return 0; +} + diff --git a/autogen.pl b/autogen.pl index 4119195383..988cdb517a 100755 --- a/autogen.pl +++ b/autogen.pl @@ -1632,13 +1632,13 @@ if (list_contains("hwloc", @disabled_3rdparty_packages)) { verbose "--- hwloc disabled\n"; } else { my $hwloc_directory = "hwloc-" . $hwloc_version; - my $hwloc_tarball = $hwloc_directory . ".tar.gz"; - if (! -f "3rd-party/" . $hwloc_tarball) { - my_die("Could not find hwloc tarball\n"); + if (! -f "3rd-party/$hwloc_directory/configure.ac") { + my_die("Could not find hwloc files\n"); } + push(@subdirs, "3rd-party/$hwloc_directory/"); $m4 .= "m4_define([package_hwloc], [1])\n"; - $m4 .= "m4_define([hwloc_tarball], [" . $hwloc_tarball . "])\n"; $m4 .= "m4_define([hwloc_directory], [" . $hwloc_directory . "])\n"; + verbose "--- hwloc enabled (" . $hwloc_version . ")\n"; } diff --git a/config/opal_config_hwloc.m4 b/config/opal_config_hwloc.m4 index 779e3daa58..645fa0c294 100644 --- a/config/opal_config_hwloc.m4 +++ b/config/opal_config_hwloc.m4 @@ -212,7 +212,6 @@ AC_DEFUN([_OPAL_CONFIG_HWLOC_INTERNAL], [ # Note: To update the version of hwloc shipped, update the # constant in autogen.pl. - OPAL_EXPAND_TARBALL([3rd-party/hwloc_tarball], [3rd-party/hwloc_directory], [configure]) OPAL_SUBDIR_ENV_CLEAN([opal_hwloc_configure]) PAC_CONFIG_SUBDIR_ARGS([3rd-party/hwloc_directory], [$extra_configure_args], [[--enable-debug]], [subconfig_happy=1], [subconfig_happy=0]) -- Gitee From 37c567acc40fb098dd7cc0a42ea55a104f64cd9e Mon Sep 17 00:00:00 2001 From: luzhexuan <635426116@qq.com> Date: Tue, 1 Apr 2025 14:24:26 +0800 Subject: [PATCH 2/2] [Huawei] Fix a bug with --map-by numa. --- 3rd-party/hwloc-2.7.1/hwloc/topology-linux.c | 302 +++++++++++-------- 1 file changed, 180 insertions(+), 122 deletions(-) diff --git a/3rd-party/hwloc-2.7.1/hwloc/topology-linux.c b/3rd-party/hwloc-2.7.1/hwloc/topology-linux.c index 2171f635af..bdf8edfa76 100644 --- a/3rd-party/hwloc-2.7.1/hwloc/topology-linux.c +++ b/3rd-party/hwloc-2.7.1/hwloc/topology-linux.c @@ -55,6 +55,7 @@ struct hwloc_linux_backend_data_s { HWLOC_LINUX_ARCH_UNKNOWN } arch; int is_knl; + int is_kunpeng_with_moc; int is_amd_with_CU; int use_numa_distances; int use_numa_distances_for_cpuless; @@ -2727,6 +2728,23 @@ struct knl_hwdata { int mcdram_cache_line_size; }; +static int hwloc_linux_try_handle_kunpeng_moc_hwdata_properties(struct knl_hwdata *hwdata, + unsigned DDR_nbnodes, + unsigned long DDR_numa_size, + unsigned MCDRAM_nbnodes, + unsigned long MCDRAM_numa_size) +{ + hwdata->memory_mode[0] = '\0'; + hwdata->cluster_mode[0] = '\0'; + + strcpy(hwdata->memory_mode, "Cache"); + hwdata->mcdram_cache_size = 4UL*1024; + hwdata->mcdram_cache_associativity = 1; + hwdata->mcdram_cache_inclusiveness = 0; + hwdata->mcdram_cache_line_size = 64; + return 0; +} + struct knl_distances_summary { unsigned nb_values; /* number of different values found in the matrix */ struct knl_distances_value { @@ -3331,7 +3349,7 @@ hwloc_linux_knl_numa_quirk(struct hwloc_topology *topology, { struct knl_hwdata hwdata; struct knl_distances_summary dist; - unsigned i; + unsigned i, j; char * fallback_env = getenv("HWLOC_KNL_HDH_FALLBACK"); int fallback = fallback_env ? atoi(fallback_env) : -1; /* by default, only fallback if needed */ char * mscache_as_l3_env = getenv("HWLOC_KNL_MSCACHE_L3"); @@ -3340,137 +3358,165 @@ hwloc_linux_knl_numa_quirk(struct hwloc_topology *topology, if (*failednodes) goto error; - if (hwloc_linux_knl_parse_numa_distances(nbnodes, distances, &dist) < 0) + if (data->is_kunpeng_with_moc) { + unsigned long MCDRAM_numa_size = 0, DDR_numa_size = 0; + unsigned MCDRAM_nbnodes = 0, DDR_nbnodes = 0; + for(i=0; icpuset)) { + MCDRAM_numa_size += nodes[i]->attr->numanode.local_memory; + MCDRAM_nbnodes++; + } else { + DDR_numa_size += nodes[i]->attr->numanode.local_memory; + DDR_nbnodes++; + } + hwloc_linux_try_handle_kunpeng_moc_hwdata_properties(&hwdata, + DDR_nbnodes, DDR_numa_size, + MCDRAM_nbnodes, MCDRAM_numa_size); + + if (hwdata.cluster_mode[0]) + hwloc_obj_add_info(topology->levels[0][0], "ClusterMode", hwdata.cluster_mode); + if (hwdata.memory_mode[0]) + hwloc_obj_add_info(topology->levels[0][0], "MemoryMode", hwdata.memory_mode); + for (i = 0; i < nbnodes; i++) { + if (!hwloc_bitmap_iszero(nodes[i]->cpuset)) { + hwloc_linux_knl_add_cluster(topology, nodes[i], NULL, &hwdata, mscache_as_l3, 4, failednodes); + } else { + (*failednodes)++; + } + } + } else if (data->is_knl) { + if (hwloc_linux_knl_parse_numa_distances(nbnodes, distances, &dist) < 0) goto error; - hwdata.memory_mode[0] = '\0'; - hwdata.cluster_mode[0] = '\0'; - hwdata.mcdram_cache_size = -1; - hwdata.mcdram_cache_associativity = -1; - hwdata.mcdram_cache_inclusiveness = -1; - hwdata.mcdram_cache_line_size = -1; - if (fallback == 1) - hwloc_debug("KNL dumped hwdata ignored, forcing fallback to heuristics\n"); - else - hwloc_linux_knl_read_hwdata_properties(data, &hwdata); - if (fallback != 0) - hwloc_linux_knl_guess_hwdata_properties(&hwdata, nodes, nbnodes, &dist); - - if (strcmp(hwdata.cluster_mode, "All2All") - && strcmp(hwdata.cluster_mode, "Hemisphere") - && strcmp(hwdata.cluster_mode, "Quadrant") - && strcmp(hwdata.cluster_mode, "SNC2") - && strcmp(hwdata.cluster_mode, "SNC4")) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Failed to find a usable KNL cluster mode (%s)\n", hwdata.cluster_mode); - goto error; - } - if (strcmp(hwdata.memory_mode, "Cache") - && strcmp(hwdata.memory_mode, "Flat") - && strcmp(hwdata.memory_mode, "Hybrid25") - && strcmp(hwdata.memory_mode, "Hybrid50")) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Failed to find a usable KNL memory mode (%s)\n", hwdata.memory_mode); - goto error; - } + hwdata.memory_mode[0] = '\0'; + hwdata.cluster_mode[0] = '\0'; + hwdata.mcdram_cache_size = -1; + hwdata.mcdram_cache_associativity = -1; + hwdata.mcdram_cache_inclusiveness = -1; + hwdata.mcdram_cache_line_size = -1; + if (fallback == 1) + hwloc_debug("KNL dumped hwdata ignored, forcing fallback to heuristics\n"); + else + hwloc_linux_knl_read_hwdata_properties(data, &hwdata); + if (fallback != 0) + hwloc_linux_knl_guess_hwdata_properties(&hwdata, nodes, nbnodes, &dist); + + if (strcmp(hwdata.cluster_mode, "All2All") + && strcmp(hwdata.cluster_mode, "Hemisphere") + && strcmp(hwdata.cluster_mode, "Quadrant") + && strcmp(hwdata.cluster_mode, "SNC2") + && strcmp(hwdata.cluster_mode, "SNC4")) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Failed to find a usable KNL cluster mode (%s)\n", hwdata.cluster_mode); + goto error; + } + if (strcmp(hwdata.memory_mode, "Cache") + && strcmp(hwdata.memory_mode, "Flat") + && strcmp(hwdata.memory_mode, "Hybrid25") + && strcmp(hwdata.memory_mode, "Hybrid50")) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Failed to find a usable KNL memory mode (%s)\n", hwdata.memory_mode); + goto error; + } - if (mscache_as_l3) { - if (!hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L3CACHE)) - hwdata.mcdram_cache_size = 0; - } else { - if (!hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_MEMCACHE)) - hwdata.mcdram_cache_size = 0; - } + if (mscache_as_l3) { + if (!hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_L3CACHE)) + hwdata.mcdram_cache_size = 0; + } else { + if (!hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_MEMCACHE)) + hwdata.mcdram_cache_size = 0; + } - hwloc_obj_add_info(topology->levels[0][0], "ClusterMode", hwdata.cluster_mode); - hwloc_obj_add_info(topology->levels[0][0], "MemoryMode", hwdata.memory_mode); + hwloc_obj_add_info(topology->levels[0][0], "ClusterMode", hwdata.cluster_mode); + hwloc_obj_add_info(topology->levels[0][0], "MemoryMode", hwdata.memory_mode); - if (!strcmp(hwdata.cluster_mode, "All2All") - || !strcmp(hwdata.cluster_mode, "Hemisphere") - || !strcmp(hwdata.cluster_mode, "Quadrant")) { - if (!strcmp(hwdata.memory_mode, "Cache")) { - /* Quadrant-Cache */ - if (nbnodes != 1) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 1 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); - goto error; - } - hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 1, failednodes); + if (!strcmp(hwdata.cluster_mode, "All2All") + || !strcmp(hwdata.cluster_mode, "Hemisphere") + || !strcmp(hwdata.cluster_mode, "Quadrant")) { + if (!strcmp(hwdata.memory_mode, "Cache")) { + /* Quadrant-Cache */ + if (nbnodes != 1) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 1 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 1, failednodes); - } else { - /* Quadrant-Flat/Hybrid */ - if (nbnodes != 2) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); - goto error; + } else { + /* Quadrant-Flat/Hybrid */ + if (nbnodes != 2) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (!strcmp(hwdata.memory_mode, "Flat")) + hwdata.mcdram_cache_size = 0; + hwloc_linux_knl_add_cluster(topology, nodes[0], nodes[1], &hwdata, mscache_as_l3, 1, failednodes); } - if (!strcmp(hwdata.memory_mode, "Flat")) - hwdata.mcdram_cache_size = 0; - hwloc_linux_knl_add_cluster(topology, nodes[0], nodes[1], &hwdata, mscache_as_l3, 1, failednodes); - } - } else if (!strcmp(hwdata.cluster_mode, "SNC2")) { - if (!strcmp(hwdata.memory_mode, "Cache")) { - /* SNC2-Cache */ - if (nbnodes != 2) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); - goto error; - } - hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 2, failednodes); - hwloc_linux_knl_add_cluster(topology, nodes[1], NULL, &hwdata, mscache_as_l3, 2, failednodes); + } else if (!strcmp(hwdata.cluster_mode, "SNC2")) { + if (!strcmp(hwdata.memory_mode, "Cache")) { + /* SNC2-Cache */ + if (nbnodes != 2) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 2, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[1], NULL, &hwdata, mscache_as_l3, 2, failednodes); - } else { - /* SNC2-Flat/Hybrid */ - unsigned ddr[2], mcdram[2]; - if (nbnodes != 4) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); - goto error; - } - if (hwloc_linux_knl_identify_4nodes(distances, &dist, ddr, mcdram) < 0) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "Uhwloc/linux: nexpected distance layout for mode %s-%s\n", hwdata.cluster_mode, hwdata.memory_mode); - goto error; + } else { + /* SNC2-Flat/Hybrid */ + unsigned ddr[2], mcdram[2]; + if (nbnodes != 4) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (hwloc_linux_knl_identify_4nodes(distances, &dist, ddr, mcdram) < 0) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "Uhwloc/linux: nexpected distance layout for mode %s-%s\n", hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (!strcmp(hwdata.memory_mode, "Flat")) + hwdata.mcdram_cache_size = 0; + hwloc_linux_knl_add_cluster(topology, nodes[ddr[0]], nodes[mcdram[0]], &hwdata, mscache_as_l3, 2, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[ddr[1]], nodes[mcdram[1]], &hwdata, mscache_as_l3, 2, failednodes); } - if (!strcmp(hwdata.memory_mode, "Flat")) - hwdata.mcdram_cache_size = 0; - hwloc_linux_knl_add_cluster(topology, nodes[ddr[0]], nodes[mcdram[0]], &hwdata, mscache_as_l3, 2, failednodes); - hwloc_linux_knl_add_cluster(topology, nodes[ddr[1]], nodes[mcdram[1]], &hwdata, mscache_as_l3, 2, failednodes); - } - } else if (!strcmp(hwdata.cluster_mode, "SNC4")) { - if (!strcmp(hwdata.memory_mode, "Cache")) { - /* SNC4-Cache */ - if (nbnodes != 4) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 4 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); - goto error; - } - hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 4, failednodes); - hwloc_linux_knl_add_cluster(topology, nodes[1], NULL, &hwdata, mscache_as_l3, 4, failednodes); - hwloc_linux_knl_add_cluster(topology, nodes[2], NULL, &hwdata, mscache_as_l3, 4, failednodes); - hwloc_linux_knl_add_cluster(topology, nodes[3], NULL, &hwdata, mscache_as_l3, 4, failednodes); + } else if (!strcmp(hwdata.cluster_mode, "SNC4")) { + if (!strcmp(hwdata.memory_mode, "Cache")) { + /* SNC4-Cache */ + if (nbnodes != 4) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 4 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + hwloc_linux_knl_add_cluster(topology, nodes[0], NULL, &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[1], NULL, &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[2], NULL, &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[3], NULL, &hwdata, mscache_as_l3, 4, failednodes); - } else { - /* SNC4-Flat/Hybrid */ - unsigned ddr[4], mcdram[4]; - if (nbnodes != 8) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); - goto error; - } - if (hwloc_linux_knl_identify_8nodes(distances, &dist, ddr, mcdram) < 0) { - if (hwloc_hide_errors() < 2) - fprintf(stderr, "hwloc/linux: Unexpected distance layout for mode %s-%s\n", hwdata.cluster_mode, hwdata.memory_mode); - goto error; + } else { + /* SNC4-Flat/Hybrid */ + unsigned ddr[4], mcdram[4]; + if (nbnodes != 8) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Found %u NUMA nodes instead of 2 in mode %s-%s\n", nbnodes, hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (hwloc_linux_knl_identify_8nodes(distances, &dist, ddr, mcdram) < 0) { + if (hwloc_hide_errors() < 2) + fprintf(stderr, "hwloc/linux: Unexpected distance layout for mode %s-%s\n", hwdata.cluster_mode, hwdata.memory_mode); + goto error; + } + if (!strcmp(hwdata.memory_mode, "Flat")) + hwdata.mcdram_cache_size = 0; + hwloc_linux_knl_add_cluster(topology, nodes[ddr[0]], nodes[mcdram[0]], &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[ddr[1]], nodes[mcdram[1]], &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[ddr[2]], nodes[mcdram[2]], &hwdata, mscache_as_l3, 4, failednodes); + hwloc_linux_knl_add_cluster(topology, nodes[ddr[3]], nodes[mcdram[3]], &hwdata, mscache_as_l3, 4, failednodes); } - if (!strcmp(hwdata.memory_mode, "Flat")) - hwdata.mcdram_cache_size = 0; - hwloc_linux_knl_add_cluster(topology, nodes[ddr[0]], nodes[mcdram[0]], &hwdata, mscache_as_l3, 4, failednodes); - hwloc_linux_knl_add_cluster(topology, nodes[ddr[1]], nodes[mcdram[1]], &hwdata, mscache_as_l3, 4, failednodes); - hwloc_linux_knl_add_cluster(topology, nodes[ddr[2]], nodes[mcdram[2]], &hwdata, mscache_as_l3, 4, failednodes); - hwloc_linux_knl_add_cluster(topology, nodes[ddr[3]], nodes[mcdram[3]], &hwdata, mscache_as_l3, 4, failednodes); } } @@ -4020,7 +4066,7 @@ look_sysfsnode(struct hwloc_topology *topology, free(indexes); - if (data->is_knl) { + if (data->is_knl || data->is_kunpeng_with_moc) { /* apply KNL quirks */ char *env = getenv("HWLOC_KNL_NUMA_QUIRK"); int noquirk = (env && !atoi(env)); @@ -5203,6 +5249,8 @@ hwloc_gather_system_info(struct hwloc_topology *topology, data->arch = HWLOC_LINUX_ARCH_S390; else if (!strcmp(data->utsname.machine, "ia64")) data->arch = HWLOC_LINUX_ARCH_IA64; + else if (!strncmp(data->utsname.machine, "aarch", 5)) + data->arch = HWLOC_LINUX_ARCH_ARM; } } @@ -5462,9 +5510,10 @@ hwloc_linuxfs_look_cpu(struct hwloc_backend *backend, struct hwloc_disc_status * /************************** * detect model for quirks */ - if (data->arch == HWLOC_LINUX_ARCH_X86 && numprocs > 0) { + if (numprocs > 0) { unsigned i; const char *cpuvendor = NULL, *cpufamilynumber = NULL, *cpumodelnumber = NULL; + const char *cpu_implementer, *cpu_part; for(i=0; iis_amd_with_CU = 1; + if (cpu_implementer && !strcmp(cpu_implementer, "0x48") + && cpu_part && !strcmp(cpu_part, "0xd22")) { + data->is_kunpeng_with_moc = 1; + } } /********************** @@ -7024,6 +7081,7 @@ hwloc_linux_component_instantiate(struct hwloc_topology *topology, /* default values */ data->arch = HWLOC_LINUX_ARCH_UNKNOWN; data->is_knl = 0; + data->is_kunpeng_with_moc = 0; data->is_amd_with_CU = 0; data->is_real_fsroot = 1; data->root_path = NULL; -- Gitee

    9. 4%C=g(5gnzbR&9w@Rnv19 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

    10. 2jqRA0bU&co>lA9$(yLd+UV0MaCw1CAq;7AI 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

0nofR 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%0AgYzB6!f0)MMU4S%9o520ZYkr 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 AARpa{i2iZQN{NhI*%kFqe;tuL> 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�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